Packages
elixium_core
0.2.6
0.6.3
0.6.2
0.6.1
0.6.0
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.19
0.3.18
0.3.17
0.3.16
0.3.15
0.3.14
0.3.13
0.3.12
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.1
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.4
0.1.3
The core package for the Elixium blockchain, containing all the modules needed to run the chain
Current section
Files
Jump to
Current section
Files
lib/store/store.ex
defmodule Elixium.Store do
require Exleveldb
@moduledoc """
Provides convinience methods for interacting with LevelDB
"""
defmacro __using__(_opts) do
quote do
import unquote(__MODULE__)
end
end
def initialize(store) do
# Generate a new leveldb instance if none exists
{:ok, ref} = Exleveldb.open(store)
# Immediately close after ensuring creation, we don't need it constantly open
Exleveldb.close(ref)
end
@doc """
We don't want to have to remember to open and keep a reference to the leveldb instance
each time we interact with the chain. Let's make a wrapper that does this for us
"""
defmacro transact(store, do: block) do
quote bind_quoted: [store: store, block: block] do
{:ok, ref} = Exleveldb.open(store)
result = block.(ref)
Exleveldb.close(ref)
result
end
end
def empty?(store) do
transact store do
&Exleveldb.is_empty?(&1)
end
end
end