Packages
forge_sdk
0.26.6
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.7
1.0.6
1.0.4
1.0.4-p1
1.0.4-p0
1.0.3
1.0.2
1.0.2-p1
1.0.1
1.0.1-p1
1.0.0
0.40.6
0.40.5
0.40.4
0.40.3
0.40.2
0.40.1
0.40.0
0.39.1
0.39.0
0.38.6
0.38.5
0.38.4
0.38.3
0.38.2
0.38.1
0.38.0
0.37.5
0.37.4
0.37.3
0.37.2
0.37.1
0.37.0
0.34.0
0.33.2
0.33.1
0.33.0
0.32.2
0.32.1
0.32.0
0.31.1
0.31.0
0.30.0
0.29.1
0.29.0
0.28.3
0.28.2
0.28.1
0.28.0
0.27.4
0.27.3
0.27.2
0.27.1
0.27.0
0.26.6
0.26.5
0.26.4
0.26.3
0.26.1
0.26.0
Elixir / Erlang version of the SDK for Forge framework.
Current section
Files
Jump to
Current section
Files
lib/forge_sdk/protocol/statedb.ex
defprotocol ForgeSdk.StateDb do
@moduledoc """
StateDb protocol for interact with kv store
"""
alias ForgeSdk.StateDb
@type t :: StateDb.t()
@doc """
Open a database for write/read
"""
@spec open(t()) :: {:ok, map()} | {:error, term()}
def open(handler)
@doc """
Close the database
"""
@spec close(t()) :: :ok
def close(handler)
@doc """
Retrieve the state from an address
"""
@spec get(t(), binary()) :: map() | nil
def get(handler, address)
@doc """
Retrieve the state from an address by given height
"""
@spec get(t(), binary(), non_neg_integer()) :: map() | nil
def get(handler, address, height)
@doc """
Retrieve the raw state (not final) from an address, used internally for migration. No cache is needed.
"""
@spec get_raw(t(), binary()) :: map() | binary() | nil
def get_raw(handler, address)
@doc """
Put the state into to address in the db. This will lead to a change of root_hash.
"""
@spec put(t(), binary(), map()) :: {:ok, t()} | {:error, term()}
def put(handler, address, data)
@doc """
When a block is committed, record the last block and the app hash for that block. Then return the app hash.
"""
@spec commit_block(t(), non_neg_integer()) :: binary()
def commit_block(handler, height)
@doc """
Retrieve the last block height and the app_hash of the states db for a given height
"""
@spec get_info(t(), non_neg_integer()) :: map()
def get_info(handler, height \\ 0)
@doc """
Travel to different block height. The returned db handler could be used to retrieve old state from the db.
"""
@spec travel(t(), non_neg_integer() | nil) :: t()
def travel(handler, height)
end