common

package
v2.0.1-beta+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 3, 2019 License: Apache-2.0 Imports: 4 Imported by: 18

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNotFound = errors.New("not found")

Functions

This section is empty.

Types

type DataEntryPrefix

type DataEntryPrefix byte

DataEntryPrefix

const (
	// DATA
	DATA_BLOCK             DataEntryPrefix = 0x00 //Block height => block hash key prefix
	DATA_HEADER                            = 0x01 //Block hash => block hash key prefix
	DATA_TRANSACTION                       = 0x02 //Transction hash = > transaction key prefix
	DATA_STATE_MERKLE_ROOT                 = 0x21 // block height => write set hash + state merkle root

	// Transaction
	ST_BOOKKEEPER DataEntryPrefix = 0x03 //BookKeeper state key prefix
	ST_CONTRACT   DataEntryPrefix = 0x04 //Smart contract state key prefix
	ST_STORAGE    DataEntryPrefix = 0x05 //Smart contract storage key prefix
	ST_VALIDATOR  DataEntryPrefix = 0x07 //no use
	ST_VOTE       DataEntryPrefix = 0x08 //Vote state key prefix

	IX_HEADER_HASH_LIST DataEntryPrefix = 0x09 //Block height => block hash key prefix

	//SYSTEM
	SYS_CURRENT_BLOCK      DataEntryPrefix = 0x10 //Current block key prefix
	SYS_VERSION            DataEntryPrefix = 0x11 //Store version key prefix
	SYS_CURRENT_STATE_ROOT DataEntryPrefix = 0x12 //no use
	SYS_BLOCK_MERKLE_TREE  DataEntryPrefix = 0x13 // Block merkle tree root key prefix
	SYS_STATE_MERKLE_TREE  DataEntryPrefix = 0x20 // state merkle tree root key prefix

	EVENT_NOTIFY DataEntryPrefix = 0x14 //Event notify key prefix
)

type EventStore

type EventStore interface {
	//SaveEventNotifyByTx save event notify gen by smart contract execution
	SaveEventNotifyByTx(txHash common.Uint256, notify *event.ExecuteNotify) error
	//Save transaction hashes which have event notify gen
	SaveEventNotifyByBlock(height uint32, txHashs []common.Uint256) error
	//GetEventNotifyByTx return event notify by transaction hash
	GetEventNotifyByTx(txHash common.Uint256) (*event.ExecuteNotify, error)
	//Commit event notify to store
	CommitTo() error
}

EventStore save event notify

type ItemState

type ItemState byte

State item type

const (
	None    ItemState = iota //no change
	Changed                  //which was be mark delete
	Deleted                  //which wad be mark delete
)

Status of item

type MemoryCacheStore

type MemoryCacheStore interface {
	//Put the key-value pair to store
	Put(prefix byte, key []byte, value states.StateValue, state ItemState)
	//Get the value if key in store
	Get(prefix byte, key []byte) *StateItem
	//Delete the key in store
	Delete(prefix byte, key []byte)
	//Get all updated key-value set
	GetChangeSet() map[string]*StateItem
	// Get all key-value in store
	Find() []*StateItem
}

MemoryCacheStore

type PersistStore

type PersistStore interface {
	Put(key []byte, value []byte) error      //Put the key-value pair to store
	Get(key []byte) ([]byte, error)          //Get the value if key in store
	Has(key []byte) (bool, error)            //Whether the key is exist in store
	Delete(key []byte) error                 //Delete the key in store
	NewBatch()                               //Start commit batch
	BatchPut(key []byte, value []byte)       //Put a key-value pair to batch
	BatchDelete(key []byte)                  //Delete the key in batch
	BatchCommit() error                      //Commit batch to store
	Close() error                            //Close store
	NewIterator(prefix []byte) StoreIterator //Return the iterator of store
}

PersistStore of ledger

type StateItem

type StateItem struct {
	Key   string            //State key
	Value states.StateValue //State value
	State ItemState         //Status
	Trie  bool              //no use
}

State item struct

func (*StateItem) Copy

func (e *StateItem) Copy() *StateItem

type StateStore

type StateStore interface {
	//Add key-value pair to store
	TryAdd(prefix DataEntryPrefix, key []byte, value states.StateValue)
	//Get key from state store, if not exist, add it to store
	TryGetOrAdd(prefix DataEntryPrefix, key []byte, value states.StateValue) error
	//Get key from state store
	TryGet(prefix DataEntryPrefix, key []byte) (*StateItem, error)
	//Delete key in store
	TryDelete(prefix DataEntryPrefix, key []byte)
	//iterator key in store
	Find(prefix DataEntryPrefix, key []byte) ([]*StateItem, error)
}

StateStore save result of smart contract execution, before commit to store

type StoreIterator

type StoreIterator interface {
	Next() bool //Next item. If item available return true, otherwise return false
	//Prev() bool           //previous item. If item available return true, otherwise return false
	First() bool //First item. If item available return true, otherwise return false
	//Last() bool           //Last item. If item available return true, otherwise return false
	//Seek(key []byte) bool //Seek key. If item available return true, otherwise return false
	Key() []byte   //Return the current item key
	Value() []byte //Return the current item value
	Release()      //Close iterator
	Error() error  // Error returns any accumulated error.
}

Store iterator for iterate store

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL