Documentation ¶
Index ¶
- Constants
- Variables
- func CheckAlias(alias []byte) error
- type AliasTransactionProcessor
- type AliasTxSelector
- type BlockExecuteContext
- type BlockIndex
- func (bi *BlockIndex) AddNode(node *types.BlockNode)
- func (bi *BlockIndex) ClearNode(node *types.BlockNode)
- func (bi *BlockIndex) FlushToDB(storeBlockNodeFunc func(node *types.BlockNode) error) error
- func (bi *BlockIndex) HaveBlock(hash *crypto.Hash) bool
- func (bi *BlockIndex) LookupNode(hash *crypto.Hash) *types.BlockNode
- func (bi *BlockIndex) NodeStatus(node *types.BlockNode) types.BlockStatus
- func (bi *BlockIndex) SetStatusFlags(node *types.BlockNode, flags types.BlockStatus)
- func (bi *BlockIndex) UnsetStatusFlags(node *types.BlockNode, flags types.BlockStatus)
- type BlockValidators
- type CancelCandidateTransactionProcessor
- type CancelCandidateTxSelector
- type CancelVoteTransactionProcessor
- type CancelVoteTxSelector
- type CandidateTransactionProcessor
- type CandidateTxSelector
- type ChainApi
- func (chain *ChainApi) GetAddressByAlias(alias string) (*crypto.CommonAddress, error)
- func (chain *ChainApi) GetAliasByAddress(addr *crypto.CommonAddress) string
- func (chain *ChainApi) GetBalance(addr crypto.CommonAddress) string
- func (chain *ChainApi) GetBlock(height uint64) (*types.Block, error)
- func (chain *ChainApi) GetBlockGasInfo() string
- func (chain *ChainApi) GetByteCode(addr *crypto.CommonAddress) hexutil.Bytes
- func (chain *ChainApi) GetCancelCreditDetails(addr *crypto.CommonAddress) string
- func (chain *ChainApi) GetCandidateAddrs() string
- func (chain *ChainApi) GetChangeCycle() (int, error)
- func (chain *ChainApi) GetCreditDetails(addr *crypto.CommonAddress) string
- func (chain *ChainApi) GetInterestRate() (string, error)
- func (chain *ChainApi) GetInterset(txHash crypto.Hash) []*types.IntersetDetail
- func (chain *ChainApi) GetLogs(txHash crypto.Hash) []*types.Log
- func (chain *ChainApi) GetMaxHeight() uint64
- func (chain *ChainApi) GetNonce(addr crypto.CommonAddress) uint64
- func (chain *ChainApi) GetReceipt(txHash crypto.Hash) *types.Receipt
- func (chain *ChainApi) GetReputation(addr crypto.CommonAddress) *big.Int
- func (chain *ChainApi) GetTransactionByBlockHeightAndIndex(height uint64, index int) (*types.Transaction, error)
- type ChainBlockValidator
- func (chainBlockValidator *ChainBlockValidator) ExecuteBlock(context *BlockExecuteContext) error
- func (chainBlockValidator *ChainBlockValidator) RouteTransaction(context *BlockExecuteContext, gasPool *GasPool, tx *types.Transaction) (*types.Receipt, uint64, error)
- func (chainBlockValidator *ChainBlockValidator) VerifyBody(block *types.Block) error
- func (chainBlockValidator *ChainBlockValidator) VerifyHeader(header, parent *types.BlockHeader) error
- type ChainConfig
- type ChainService
- func (chainService *ChainService) AcceptBlock(block *types.Block) (inMainChain bool, err error)
- func (chainService *ChainService) AddBlockValidator(validator IBlockValidator)
- func (chainService *ChainService) AddGenesisProcess(validator IGenesisProcess)
- func (chainService *ChainService) AddTransactionValidator(selector ITransactionSelector, validator ITransactionValidator)
- func (chainService *ChainService) Api() []app.API
- func (chainService *ChainService) BestChain() *ChainView
- func (chainService *ChainService) BlockExists(blockHash *crypto.Hash) bool
- func (chainService *ChainService) BlockValidator() BlockValidators
- func (chainService *ChainService) CalcGasLimit(parent *types.BlockHeader, gasFloor, gasCeil uint64) *big.Int
- func (chainService *ChainService) ChainID() types.ChainIdType
- func (chainService *ChainService) CommandFlags() ([]cli.Command, []cli.Flag)
- func (chainService *ChainService) DefaultConfig() *ChainConfig
- func (cs *ChainService) DeriveMerkleRoot(txs []*types.Transaction) []byte
- func (cs *ChainService) DeriveReceiptRoot(receipts []*types.Receipt) crypto.Hash
- func (chainService *ChainService) DetachBlockFeed() *event.Feed
- func (chainService *ChainService) GetBlockByHash(hash *crypto.Hash) (*types.Block, error)
- func (chainService *ChainService) GetBlockByHeight(number uint64) (*types.Block, error)
- func (chainService *ChainService) GetBlockHeaderByHash(hash *crypto.Hash) (*types.BlockHeader, error)
- func (chainService *ChainService) GetBlockHeaderByHeight(number uint64) (*types.BlockHeader, error)
- func (chainService *ChainService) GetConfig() *ChainConfig
- func (chainService *ChainService) GetCurrentHeader() *types.BlockHeader
- func (chainService *ChainService) GetDatabaseService() *database.DatabaseService
- func (chainService *ChainService) GetGenisiBlock(biosAddress crypto.CommonAddress) (*types.Block, error)
- func (chainService *ChainService) GetHeader(hash crypto.Hash, number uint64) *types.BlockHeader
- func (chainService *ChainService) GetHighestBlock() (*types.Block, error)
- func (chainService *ChainService) GetLogsFeed() *event.Feed
- func (b *ChainService) GetOrphanRoot(hash *crypto.Hash) *crypto.Hash
- func (chainService *ChainService) GetRMLogsFeed() *event.Feed
- func (chainService *ChainService) Index() *BlockIndex
- func (chainService *ChainService) Init(executeContext *app.ExecuteContext) error
- func (chainService *ChainService) InitStates() error
- func (b *ChainService) IsKnownOrphan(hash *crypto.Hash) bool
- func (chainService *ChainService) Name() string
- func (chainService *ChainService) NewBlockFeed() *event.Feed
- func (chainService *ChainService) ProcessBlock(block *types.Block) (bool, bool, error)
- func (chainService *ChainService) ProcessGenesisBlock(biosAddr crypto.CommonAddress) (*types.Block, error)
- func (chainService *ChainService) RootChain() types.ChainIdType
- func (chainService *ChainService) Start(executeContext *app.ExecuteContext) error
- func (chainService *ChainService) Stop(executeContext *app.ExecuteContext) error
- func (chainService *ChainService) TransactionValidators() map[ITransactionSelector]ITransactionValidator
- type ChainServiceInterface
- type ChainState
- type ChainStore
- func (chainStore *ChainStore) BlockNodeCount() int64
- func (chainStore *ChainStore) BlockNodeIterator(handle func(*types.BlockHeader, types.BlockStatus) error) error
- func (chainStore *ChainStore) DeleteReceipts(blockHash crypto.Hash) error
- func (chainStore *ChainStore) GetBlock(hash *crypto.Hash) (*types.Block, error)
- func (chainStore *ChainStore) GetBlockHeader(hash *crypto.Hash) (*types.BlockHeader, error)
- func (chainStore *ChainStore) GetBlockNode(hash *crypto.Hash, height uint64) (*types.BlockHeader, types.BlockStatus, error)
- func (chainStore *ChainStore) GetReceipt(txHash crypto.Hash) *types.Receipt
- func (chainStore *ChainStore) GetReceipts(blockHash crypto.Hash) []*types.Receipt
- func (chainStore *ChainStore) HasBlock(hash *crypto.Hash) bool
- func (chainStore *ChainStore) PutBlock(block *types.Block) error
- func (chainStore *ChainStore) PutBlockNode(blockNode *types.BlockNode) error
- func (chainStore *ChainStore) PutReceipt(txHash crypto.Hash, receipt *types.Receipt) error
- func (chainStore *ChainStore) PutReceipts(blockHash crypto.Hash, receipts []*types.Receipt) error
- func (chainStore *ChainStore) RollBack(height uint64, hash *crypto.Hash) (error, int64)
- type ChainView
- func (c *ChainView) Contains(node *types.BlockNode) bool
- func (c *ChainView) Equals(other *ChainView) bool
- func (c *ChainView) FindFork(node *types.BlockNode) *types.BlockNode
- func (c *ChainView) Genesis() *types.BlockNode
- func (c *ChainView) Height() uint64
- func (c *ChainView) Next(node *types.BlockNode) *types.BlockNode
- func (c *ChainView) NodeByHeight(height uint64) *types.BlockNode
- func (c *ChainView) SetTip(node *types.BlockNode)
- func (c *ChainView) Tip() *types.BlockNode
- type ExecuteTransactionContext
- func (context *ExecuteTransactionContext) Data() []byte
- func (context *ExecuteTransactionContext) From() *crypto.CommonAddress
- func (context *ExecuteTransactionContext) GasPrice() *big.Int
- func (context *ExecuteTransactionContext) GasRemained() uint64
- func (context *ExecuteTransactionContext) GasUsed() uint64
- func (context *ExecuteTransactionContext) Gp() *GasPool
- func (context *ExecuteTransactionContext) Header() *types.BlockHeader
- func (context *ExecuteTransactionContext) InitialGas() uint64
- func (context *ExecuteTransactionContext) PreCheck() error
- func (context *ExecuteTransactionContext) RefundCoin() error
- func (context *ExecuteTransactionContext) RefundGas(refundGas uint64)
- func (context *ExecuteTransactionContext) To() crypto.CommonAddress
- func (context *ExecuteTransactionContext) TrieStore() store.StoreInterface
- func (context *ExecuteTransactionContext) Tx() *types.Transaction
- func (context *ExecuteTransactionContext) UseGas(amount uint64) error
- func (context *ExecuteTransactionContext) Value() *big.Int
- type GasPool
- type GenesisContext
- type IBlockValidator
- type IGenesisProcess
- type ITransactionSelector
- type ITransactionValidator
- type Preminer
- type PreminerGenesisProcessor
- type StakeTransactionProcessor
- type StakeTxSelector
- type TransferTransactionProcessor
- type TransferTxSelector
- type TrieQuery
- func (trieQuery *TrieQuery) AliasExist(alias string) bool
- func (trieQuery *TrieQuery) AliasGet(alias string) (*crypto.CommonAddress, error)
- func (trieQuery *TrieQuery) Get(key []byte) ([]byte, error)
- func (trieQuery *TrieQuery) GetBalance(addr *crypto.CommonAddress) *big.Int
- func (trieQuery *TrieQuery) GetByteCode(addr *crypto.CommonAddress) []byte
- func (trieQuery *TrieQuery) GetCancelCreditDetails(addr *crypto.CommonAddress) string
- func (trieQuery *TrieQuery) GetCandidateAddrs() string
- func (trieQuery *TrieQuery) GetCodeHash(addr *crypto.CommonAddress) crypto.Hash
- func (trieQuery *TrieQuery) GetNonce(addr *crypto.CommonAddress) uint64
- func (trieQuery *TrieQuery) GetReputation(addr *crypto.CommonAddress) *big.Int
- func (trieQuery *TrieQuery) GetStorage(addr *crypto.CommonAddress) (types.Storage, error)
- func (trieQuery *TrieQuery) GetStorageAlias(addr *crypto.CommonAddress) string
- func (trieQuery *TrieQuery) GetVoteCreditDetails(addr *crypto.CommonAddress) string
Constants ¶
const (
MODULENAME = "chain"
)
Variables ¶
var ( RootChain types.ChainIdType DefaultChainConfig = &ChainConfig{ RemotePort: 55556, ChainId: RootChain, GenesisAddr: params.HoleAddress, } )
var ( MetaDataPrefix = []byte("metaData_") ChainStatePrefix = []byte("chainState_") BlockPrefix = []byte("block_") BlockNodePrefix = []byte("blockNode_") )
var ( ErrInvalidateTimestamp = errors.New("timestamp equals parent's") ErrInvalidateBlockNumber = errors.New("invalid block number") ErrBlockNotFound = errors.New("block not exist") ErrTxIndexOutOfRange = errors.New("tx index out of range") ErrReachGasLimit = errors.New("gasRemained limit reached") ErrInvalidateBlockMultisig = errors.New("verify multisig error") ErrUnsupportTxType = errors.New("not support transaction type") ErrNegativeAmount = errors.New("negative amount in tx") ErrExceedGasLimit = errors.New("gasRemained limit in tx has exceed block limit") ErrNonceTooHigh = errors.New("nonce too high") ErrNonceTooLow = errors.New("nonce too low") ErrTxPool = errors.New("transaction pool full") ErrInitStateFail = errors.New("initChainState") ErrNotMathcedStateRoot = errors.New("state root not matched") ErrGasUsed = errors.New("gasRemained used not matched") ErrChainId = errors.New("chainId not matched") ErrVersion = errors.New("version not matched") ErrPreHash = errors.New("previous hash not matched") ErrBlockExsist = errors.New("already have block") ErrBalance = errors.New("not enough balance") ErrGas = errors.New("not enough gasRemained") ErrInsufficientBalanceForGas = errors.New("insufficient balance to pay for gasRemained") ErrOrphanBlockExsist = errors.New("already have block (orphan)") ErrGenesisPkNotFound = errors.New("genesisi pubkey not found") ErrBlockProducerNotFound = errors.New("block producer not found") ErrNotSupportRenameAlias = errors.New("not suppport rename alias") ErrTooShortAlias = errors.New("alias too short") ErrTooLongAlias = errors.New("alias too long") ErrUnsupportAliasChar = errors.New("alias only support number and letter") ErrReceiptRoot = errors.New("receipt root not match") ErrNoStorage = errors.New("no account storage found") ErrKeyNotFound = errors.New("key not found") ErrKeyUnSpport = errors.New("unsupport") ErrOutOfGas = errors.New("out of gas") )
Functions ¶
func CheckAlias ¶
Types ¶
type AliasTransactionProcessor ¶
type AliasTransactionProcessor struct { }
func (*AliasTransactionProcessor) ExecuteTransaction ¶
func (aliasTransactionProcessor *AliasTransactionProcessor) ExecuteTransaction(context *ExecuteTransactionContext) *types.ExecuteTransactionResult
5 160000 640 6 80000 320 7 40000 160 8 20000 80 9 10000 40 10 5000 20 11 2500 10
type AliasTxSelector ¶
type AliasTxSelector struct { }
func (*AliasTxSelector) Select ¶
func (liasTxSelector *AliasTxSelector) Select(tx *types.Transaction) bool
type BlockExecuteContext ¶
type BlockExecuteContext struct { TrieStore store.StoreInterface Gp *GasPool DbStore *ChainStore Block *types.Block GasUsed *big.Int GasFee *big.Int Logs []*types.Log Receipts types.Receipts }
func NewBlockExecuteContext ¶
func NewBlockExecuteContext(trieStore store.StoreInterface, gp *GasPool, dbStore *ChainStore, block *types.Block) *BlockExecuteContext
func (*BlockExecuteContext) AddGasFee ¶
func (blockExecuteContext *BlockExecuteContext) AddGasFee(fee *big.Int)
func (*BlockExecuteContext) AddGasUsed ¶
func (blockExecuteContext *BlockExecuteContext) AddGasUsed(gas *big.Int)
type BlockIndex ¶
type BlockIndex struct { sync.RWMutex Index map[crypto.Hash]*types.BlockNode Dirty map[*types.BlockNode]struct{} }
BlockIndex provides facilities for keeping track of an in-memory Index of the block chain. Although the name block chain suggests a single chain of blocks, it is actually a tree-shaped structure where any node can have multiple children. However, there can only be one active branch which does indeed form a chain from the tip all the way back to the genesis block.
func NewBlockIndex ¶
func NewBlockIndex() *BlockIndex
newBlockIndex returns a new empty instance of a block Index. The Index will be dynamically populated as block nodes are loaded from the database and manually added.
func (*BlockIndex) AddNode ¶
func (bi *BlockIndex) AddNode(node *types.BlockNode)
AddNode adds the provided node to the block Index and marks it as Dirty. Duplicate entries are not checked so it is up to caller to avoid adding them.
This function is safe for concurrent access.
func (*BlockIndex) ClearNode ¶
func (bi *BlockIndex) ClearNode(node *types.BlockNode)
func (*BlockIndex) FlushToDB ¶
func (bi *BlockIndex) FlushToDB(storeBlockNodeFunc func(node *types.BlockNode) error) error
FlushToDB writes all dirty block nodes to the database. If all writes succeed, this clears the dirty set.
func (*BlockIndex) HaveBlock ¶
func (bi *BlockIndex) HaveBlock(hash *crypto.Hash) bool
HaveBlock returns whether or not the block Index contains the provided hash.
This function is safe for concurrent access.
func (*BlockIndex) LookupNode ¶
func (bi *BlockIndex) LookupNode(hash *crypto.Hash) *types.BlockNode
LookupNode returns the block node identified by the provided hash. It will return nil if there is no entry for the hash.
This function is safe for concurrent access.
func (*BlockIndex) NodeStatus ¶
func (bi *BlockIndex) NodeStatus(node *types.BlockNode) types.BlockStatus
NodeStatus provides concurrent-safe access to the status field of a node.
This function is safe for concurrent access.
func (*BlockIndex) SetStatusFlags ¶
func (bi *BlockIndex) SetStatusFlags(node *types.BlockNode, flags types.BlockStatus)
SetStatusFlags flips the provided status flags on the block node to on, regardless of whether they were on or off previously. This does not unset any flags currently on.
This function is safe for concurrent access.
func (*BlockIndex) UnsetStatusFlags ¶
func (bi *BlockIndex) UnsetStatusFlags(node *types.BlockNode, flags types.BlockStatus)
UnsetStatusFlags flips the provided status flags on the block node to off, regardless of whether they were on or off previously.
This function is safe for concurrent access.
type BlockValidators ¶
type BlockValidators []IBlockValidator
func (BlockValidators) SelectByType ¶
func (blockValidators BlockValidators) SelectByType(t reflect.Type) IBlockValidator
type CancelCandidateTransactionProcessor ¶
type CancelCandidateTransactionProcessor struct { }
func (*CancelCandidateTransactionProcessor) ExecuteTransaction ¶
func (processor *CancelCandidateTransactionProcessor) ExecuteTransaction(context *ExecuteTransactionContext) *types.ExecuteTransactionResult
type CancelCandidateTxSelector ¶
type CancelCandidateTxSelector struct { }
func (*CancelCandidateTxSelector) Select ¶
func (StakeTxSelector *CancelCandidateTxSelector) Select(tx *types.Transaction) bool
type CancelVoteTransactionProcessor ¶
type CancelVoteTransactionProcessor struct { }
func (*CancelVoteTransactionProcessor) ExecuteTransaction ¶
func (processor *CancelVoteTransactionProcessor) ExecuteTransaction(context *ExecuteTransactionContext) *types.ExecuteTransactionResult
type CancelVoteTxSelector ¶
type CancelVoteTxSelector struct { }
func (*CancelVoteTxSelector) Select ¶
func (CancelStakeTxSelector *CancelVoteTxSelector) Select(tx *types.Transaction) bool
type CandidateTransactionProcessor ¶
type CandidateTransactionProcessor struct { }
func (*CandidateTransactionProcessor) ExecuteTransaction ¶
func (processor *CandidateTransactionProcessor) ExecuteTransaction(context *ExecuteTransactionContext) *types.ExecuteTransactionResult
type CandidateTxSelector ¶
type CandidateTxSelector struct { }
func (*CandidateTxSelector) Select ¶
func (StakeTxSelector *CandidateTxSelector) Select(tx *types.Transaction) bool
type ChainApi ¶
type ChainApi struct {
// contains filtered or unexported fields
}
name: 链接口 usage: 用于获取区块信息 prefix:chain
func NewChainApi ¶
func NewChainApi(store dbinterface.KeyValueStore, chainView *ChainView, dbQuery *ChainStore) *ChainApi
func (*ChainApi) GetAddressByAlias ¶
func (chain *ChainApi) GetAddressByAlias(alias string) (*crypto.CommonAddress, error)
name: getAddressByAlias usage: 根据别名获取别名对应的地址 params: 1. 待查询地别名 return: 别名对应的地址 example: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getAddressByAlias","params":["tom"], "id": 3}' -H "Content-Type:application/json" response: {"jsonrpc":"2.0","id":3,"result":"0x8a8e541ddd1272d53729164c70197221a3c27486"}
func (*ChainApi) GetAliasByAddress ¶
func (chain *ChainApi) GetAliasByAddress(addr *crypto.CommonAddress) string
name: getAliasByAddress usage: 根据地址获取地址对应的别名 params: 1. 待查询地址 return: 地址别名 example: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getAliasByAddress","params":["0x8a8e541ddd1272d53729164c70197221a3c27486"], "id": 3}' -H "Content-Type:application/json" response: {"jsonrpc":"2.0","id":3,"result":"tom"}
func (*ChainApi) GetBalance ¶
func (chain *ChainApi) GetBalance(addr crypto.CommonAddress) string
name: getBalance usage: 查询地址余额 params: 1. 待查询地址 return: 地址中的账号余额 example: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getBalance","params":["0x8a8e541ddd1272d53729164c70197221a3c27486"], "id": 3}' -H "Content-Type:application/json" response: {"jsonrpc":"2.0","id":3,"result":9987999999999984000000}
func (*ChainApi) GetBlock ¶
name: getblock usage: 用于获取区块信息 params: 1. height usage: 当前区块高度 return: 区块明细信息 example: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getBlock","params":[1], "id": 3}' -H "Content-Type:application/json" response:
{ "jsonrpc": "2.0", "id": 3, "result": { "Hash": "0xcfa283a5b591da5a15971bf62fffae87e649bcf749776f4c83ffe50e65920f8e", "ChainId": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "Version": 1, "PreviousHash": "0x1717b4b9f740cebeb2659886122a29c0876ed906dd05370319fee4ecf219b1e9", "GasLimit": 180000000, "GasUsed": 0, "Height": 1, "Timestamp": 1559272779, "StateRoot": "0xd7bd5b3af4f2f1fb3d484743052c2e911f9fb7b04131660912244347508f16a9", "TxRoot": "0x", "LeaderAddress": "0x0374bf9c8ea268b5548686685dda4a74fc95903ca7c440e5b187a718b595c1f374", "MinorAddresses": [ "0x0374bf9c8ea268b5548686685dda4a74fc95903ca7c440e5b187a718b595c1f374", "0x02f11cfd138eaaaba5f8c0a7f1f2791bdabd0b0c404734dceac820aa9b683bfb1a", "0x03949aad279a32536ce20f0957c9c6ba592532ea70e5f174332bed4c94382354e3", "0x0263bc5628fa7033727d14b5d6714ac7d6a5d34bc5db994a896f54499f12db9b0b" ], "Txs": [ ] } }
func (*ChainApi) GetBlockGasInfo ¶
name: getBlockGasInfo usage: 获取gas相关信息 params: 1. 无 return: 系统需要的gas最小值、最大值;和当前块被设置的最大gas值 example: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getBlockGasInfo","params":[], "id": 3}' -H "Content-Type:application/json" response: {"jsonrpc":"2.0","id":3,"result":193005}
func (*ChainApi) GetByteCode ¶
func (chain *ChainApi) GetByteCode(addr *crypto.CommonAddress) hexutil.Bytes
name: getByteCode usage: 根据地址获取bytecode params: 1. 地址 return: bytecode example: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getByteCode","params":["0x8a8e541ddd1272d53729164c70197221a3c27486"], "id": 3}' -H "Content-Type:application/json" response: {"jsonrpc":"2.0","id":3,"result":"0x00"}
func (*ChainApi) GetCancelCreditDetails ¶
func (chain *ChainApi) GetCancelCreditDetails(addr *crypto.CommonAddress) string
name: GetCancelCreditDetails usage: 获取所有退票请求的细节 params: 1. 地址 return: bytecode example: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getCancelCreditDetails","params":["0x8a8e541ddd1272d53729164c70197221a3c27486"], "id": 3}' -H "Content-Type:application/json" response: {"jsonrpc":"2.0","id":3,"result":"{\"0x300fc5a14e578be28c64627c0e7e321771c58cd4\":\"0x3641100\"}"}
func (*ChainApi) GetCandidateAddrs ¶
name: GetCandidateAddrs usage: 获取所有候选节点地址和对应的信任值 params: 1. 地址 return: [] example: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getCandidateAddrs","params":[""], "id": 3}' -H "Content-Type:application/json" response: {"jsonrpc":"2.0","id":3,"result":"{\"0x300fc5a14e578be28c64627c0e7e321771c58cd4\":\"0x3641100\"}"}
func (*ChainApi) GetChangeCycle ¶
name: getChangeCycle usage: 获取出块节点换届周期 params: 无 return: 换届周期 example: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getChangeCycle","params":"", "id": 3}' -H "Content-Type:application/json" response: {"jsonrpc":"2.0","id":3,"result":"{100}"}
func (*ChainApi) GetCreditDetails ¶
func (chain *ChainApi) GetCreditDetails(addr *crypto.CommonAddress) string
name: getVoteCreditDetails usage: 根据地址获取stake 所有细节信息 params: 1. 地址 return: bytecode example: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getCreditDetails","params":["0x8a8e541ddd1272d53729164c70197221a3c27486"], "id": 3}' -H "Content-Type:application/json" response: {"jsonrpc":"2.0","id":3,"result":"[{\"Addr\":\"0xd05d5f324ada3c418e14cd6b497f2f36d60ba607\",\"HeghtValues\":[{\"CreditHeight\":1329,\"CreditValue\":\"0x11135\"}]}]"}
func (*ChainApi) GetInterestRate ¶
name: getInterestRate usage: 获取3个月内、3-6个月、6-12个月、12个月以上的利率 params: 无 return: 年华后三个月利息, 年华后六个月利息, 一年期利息, 一年以上期利息 example: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getInterestRate","params":"", "id": 3}' -H "Content-Type:application/json" response: {"jsonrpc":"2.0","id":3,"result":"{\"ThreeMonthRate\":4,\"SixMonthRate\":12,\"OneYearRate\":25,\"MoreOneYearRate\":51}"}
func (*ChainApi) GetInterset ¶
func (chain *ChainApi) GetInterset(txHash crypto.Hash) []*types.IntersetDetail
name: getInterset usage: 根据txhash获取退质押或者投票利息信息 params: 1. txhash return: {} example: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getInterset","params":["0x7d9dd32ca192e765ff2abd7c5f8931cc3f77f8f47d2d52170c7804c2ca2c5dd9"], "id": 3}' -H "Content-Type:application/json" response: {"jsonrpc":"2.0","id":3,"result":""}
func (*ChainApi) GetLogs ¶
name: getLogs usage: 根据txhash获取交易log信息 params: 1. txhash return: []log example: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getLogs","params":["0x7d9dd32ca192e765ff2abd7c5f8931cc3f77f8f47d2d52170c7804c2ca2c5dd9"], "id": 3}' -H "Content-Type:application/json" response: {"jsonrpc":"2.0","id":3,"result":""}
func (*ChainApi) GetMaxHeight ¶
name: getMaxHeight usage: 用于获取当前最高区块 params: 1. 无 return: 当前最高区块高度数值 example: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getMaxHeight","params":[], "id": 3}' -H "Content-Type:application/json" response: {"jsonrpc":"2.0","id":3,"result":193005}
func (*ChainApi) GetNonce ¶
func (chain *ChainApi) GetNonce(addr crypto.CommonAddress) uint64
name: getNonce usage: 查询地址在链上的nonce params: 1. 待查询地址 return: 链上nonce example: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getNonce","params":["0x8a8e541ddd1272d53729164c70197221a3c27486"], "id": 3}' -H "Content-Type:application/json" response: {"jsonrpc":"2.0","id":3,"result":0}
func (*ChainApi) GetReceipt ¶
name: getReceipt usage: 根据txhash获取receipt信息 params: 1. txhash return: receipt example: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getReceipt","params":["0x7d9dd32ca192e765ff2abd7c5f8931cc3f77f8f47d2d52170c7804c2ca2c5dd9"], "id": 3}' -H "Content-Type:application/json" response: {"jsonrpc":"2.0","id":3,"result":""}
func (*ChainApi) GetReputation ¶
func (chain *ChainApi) GetReputation(addr crypto.CommonAddress) *big.Int
name: getNonce usage: 查询地址的名誉值 params: 1. 待查询地址 return: 地址对应的名誉值 example: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getReputation","params":["0x8a8e541ddd1272d53729164c70197221a3c27486"], "id": 3}' -H "Content-Type:application/json" response: {"jsonrpc":"2.0","id":3,"result":1}
func (*ChainApi) GetTransactionByBlockHeightAndIndex ¶
func (chain *ChainApi) GetTransactionByBlockHeightAndIndex(height uint64, index int) (*types.Transaction, error)
name: getTransactionByBlockHeightAndIndex usage: 获取区块中特定序列的交易 params: 1. 区块高度 2. 交易序列 return: 交易信息 example: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getTransactionByBlockHeightAndIndex","params":[10000,1], "id": 3}' -H "Content-Type:application/json" response: { "jsonrpc": "2.0", "id": 3, "result": { "Hash": "0xfa5c34114ff459b4c97e7cd268c507c0ccfcfc89d3ccdcf71e96402f9899d040", "From": "0x7923a30bbfbcb998a6534d56b313e68c8e0c594a", "Version": 1, "Nonce": 15632, "Type": 0, "To": "0x7923a30bbfbcb998a6534d56b313e68c8e0c594a", "ChainId": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "Amount": "0x111", "GasPrice": "0x110", "GasLimit": "0x30000", "Timestamp": 1559322808, "Data": null, "Sig": "0x20f25b86c4bf73aa4fa0bcb01e2f5731de3a3917c8861d1ce0574a8d8331aedcf001e678000f6afc95d35a53ef623a2055fce687f85c2fd752dc455ab6db802b1f" } }
type ChainBlockValidator ¶
type ChainBlockValidator struct {
// contains filtered or unexported fields
}
func NewChainBlockValidator ¶
func NewChainBlockValidator(chainService *ChainService) *ChainBlockValidator
func (*ChainBlockValidator) ExecuteBlock ¶
func (chainBlockValidator *ChainBlockValidator) ExecuteBlock(context *BlockExecuteContext) error
func (*ChainBlockValidator) RouteTransaction ¶
func (chainBlockValidator *ChainBlockValidator) RouteTransaction(context *BlockExecuteContext, gasPool *GasPool, tx *types.Transaction) (*types.Receipt, uint64, error)
func (*ChainBlockValidator) VerifyBody ¶
func (chainBlockValidator *ChainBlockValidator) VerifyBody(block *types.Block) error
func (*ChainBlockValidator) VerifyHeader ¶
func (chainBlockValidator *ChainBlockValidator) VerifyHeader(header, parent *types.BlockHeader) error
type ChainConfig ¶
type ChainConfig struct { RemotePort int `json:"remoteport"` RootChain types.ChainIdType `json:"rootChain,omitempty"` ChainId types.ChainIdType `json:"chainId,omitempty"` GenesisAddr crypto.CommonAddress `json:"genesisaddr"` }
type ChainService ¶
type ChainService struct { RpcService *rpc2.RpcService `service:"rpc"` DatabaseService *database.DatabaseService `service:"database"` Config *ChainConfig // contains filtered or unexported fields }
xxx
func (*ChainService) AcceptBlock ¶
func (chainService *ChainService) AcceptBlock(block *types.Block) (inMainChain bool, err error)
func (*ChainService) AddBlockValidator ¶
func (chainService *ChainService) AddBlockValidator(validator IBlockValidator)
func (*ChainService) AddGenesisProcess ¶
func (chainService *ChainService) AddGenesisProcess(validator IGenesisProcess)
func (*ChainService) AddTransactionValidator ¶
func (chainService *ChainService) AddTransactionValidator(selector ITransactionSelector, validator ITransactionValidator)
func (*ChainService) Api ¶
func (chainService *ChainService) Api() []app.API
func (*ChainService) BestChain ¶
func (chainService *ChainService) BestChain() *ChainView
func (*ChainService) BlockExists ¶
func (chainService *ChainService) BlockExists(blockHash *crypto.Hash) bool
func (*ChainService) BlockValidator ¶
func (chainService *ChainService) BlockValidator() BlockValidators
func (*ChainService) CalcGasLimit ¶
func (chainService *ChainService) CalcGasLimit(parent *types.BlockHeader, gasFloor, gasCeil uint64) *big.Int
180000000/360
func (*ChainService) ChainID ¶
func (chainService *ChainService) ChainID() types.ChainIdType
func (*ChainService) CommandFlags ¶
func (chainService *ChainService) CommandFlags() ([]cli.Command, []cli.Flag)
func (*ChainService) DefaultConfig ¶
func (chainService *ChainService) DefaultConfig() *ChainConfig
Config
func (*ChainService) DeriveMerkleRoot ¶
func (cs *ChainService) DeriveMerkleRoot(txs []*types.Transaction) []byte
func (*ChainService) DeriveReceiptRoot ¶
func (cs *ChainService) DeriveReceiptRoot(receipts []*types.Receipt) crypto.Hash
func (*ChainService) DetachBlockFeed ¶
func (chainService *ChainService) DetachBlockFeed() *event.Feed
func (*ChainService) GetBlockByHash ¶
func (*ChainService) GetBlockByHeight ¶
func (chainService *ChainService) GetBlockByHeight(number uint64) (*types.Block, error)
func (*ChainService) GetBlockHeaderByHash ¶
func (chainService *ChainService) GetBlockHeaderByHash(hash *crypto.Hash) (*types.BlockHeader, error)
func (*ChainService) GetBlockHeaderByHeight ¶
func (chainService *ChainService) GetBlockHeaderByHeight(number uint64) (*types.BlockHeader, error)
func (*ChainService) GetConfig ¶
func (chainService *ChainService) GetConfig() *ChainConfig
func (*ChainService) GetCurrentHeader ¶
func (chainService *ChainService) GetCurrentHeader() *types.BlockHeader
func (*ChainService) GetDatabaseService ¶
func (chainService *ChainService) GetDatabaseService() *database.DatabaseService
func (*ChainService) GetGenisiBlock ¶
func (chainService *ChainService) GetGenisiBlock(biosAddress crypto.CommonAddress) (*types.Block, error)
func (*ChainService) GetHeader ¶
func (chainService *ChainService) GetHeader(hash crypto.Hash, number uint64) *types.BlockHeader
func (*ChainService) GetHighestBlock ¶
func (chainService *ChainService) GetHighestBlock() (*types.Block, error)
func (*ChainService) GetLogsFeed ¶
func (chainService *ChainService) GetLogsFeed() *event.Feed
func (*ChainService) GetOrphanRoot ¶
func (b *ChainService) GetOrphanRoot(hash *crypto.Hash) *crypto.Hash
GetOrphanRoot returns the head of the chain for the provided hash from the map of orphan blocks.
This function is safe for concurrent access.
func (*ChainService) GetRMLogsFeed ¶
func (chainService *ChainService) GetRMLogsFeed() *event.Feed
func (*ChainService) Index ¶
func (chainService *ChainService) Index() *BlockIndex
func (*ChainService) Init ¶
func (chainService *ChainService) Init(executeContext *app.ExecuteContext) error
func (*ChainService) InitStates ¶
func (chainService *ChainService) InitStates() error
TODO improves the performan
func (*ChainService) IsKnownOrphan ¶
func (b *ChainService) IsKnownOrphan(hash *crypto.Hash) bool
IsKnownOrphan returns whether the passed hash is currently a known orphan. Keep in mind that only a limited number of orphans are held onto for a limited amount of time, so this function must not be used as an absolute way to test if a block is an orphan block. A full block (as opposed to just its hash) must be passed to ProcessBlock for that purpose. However, calling ProcessBlock with an orphan that already exists results in an error, so this function provides a mechanism for a caller to intelligently detect *recent* duplicate orphans and react accordingly.
This function is safe for concurrent access.
func (*ChainService) Name ¶
func (chainService *ChainService) Name() string
func (*ChainService) NewBlockFeed ¶
func (chainService *ChainService) NewBlockFeed() *event.Feed
func (*ChainService) ProcessBlock ¶
func (*ChainService) ProcessGenesisBlock ¶
func (chainService *ChainService) ProcessGenesisBlock(biosAddr crypto.CommonAddress) (*types.Block, error)
func (*ChainService) RootChain ¶
func (chainService *ChainService) RootChain() types.ChainIdType
func (*ChainService) Start ¶
func (chainService *ChainService) Start(executeContext *app.ExecuteContext) error
func (*ChainService) Stop ¶
func (chainService *ChainService) Stop(executeContext *app.ExecuteContext) error
func (*ChainService) TransactionValidators ¶
func (chainService *ChainService) TransactionValidators() map[ITransactionSelector]ITransactionValidator
type ChainServiceInterface ¶
type ChainServiceInterface interface { app.Service ChainID() types.ChainIdType DeriveMerkleRoot(txs []*types.Transaction) []byte DeriveReceiptRoot(receipts []*types.Receipt) crypto.Hash GetBlockByHash(hash *crypto.Hash) (*types.Block, error) GetBlockByHeight(number uint64) (*types.Block, error) //DefaultChainConfig GetBlockHeaderByHash(hash *crypto.Hash) (*types.BlockHeader, error) GetBlockHeaderByHeight(number uint64) (*types.BlockHeader, error) GetHeader(hash crypto.Hash, number uint64) *types.BlockHeader GetCurrentHeader() *types.BlockHeader GetHighestBlock() (*types.Block, error) RootChain() types.ChainIdType BestChain() *ChainView CalcGasLimit(parent *types.BlockHeader, gasFloor, gasCeil uint64) *big.Int ProcessBlock(block *types.Block) (bool, bool, error) NewBlockFeed() *event.Feed GetLogsFeed() *event.Feed GetRMLogsFeed() *event.Feed BlockExists(blockHash *crypto.Hash) bool Index() *BlockIndex BlockValidator() BlockValidators AddBlockValidator(validator IBlockValidator) TransactionValidators() map[ITransactionSelector]ITransactionValidator AddTransactionValidator(selector ITransactionSelector, validator ITransactionValidator) AddGenesisProcess(validator IGenesisProcess) GetConfig() *ChainConfig DetachBlockFeed() *event.Feed }
type ChainState ¶
type ChainStore ¶
type ChainStore struct {
dbinterface.KeyValueStore
}
func (*ChainStore) BlockNodeCount ¶
func (chainStore *ChainStore) BlockNodeCount() int64
func (*ChainStore) BlockNodeIterator ¶
func (chainStore *ChainStore) BlockNodeIterator(handle func(*types.BlockHeader, types.BlockStatus) error) error
func (*ChainStore) DeleteReceipts ¶
func (chainStore *ChainStore) DeleteReceipts(blockHash crypto.Hash) error
func (*ChainStore) GetBlockHeader ¶
func (chainStore *ChainStore) GetBlockHeader(hash *crypto.Hash) (*types.BlockHeader, error)
func (*ChainStore) GetBlockNode ¶
func (chainStore *ChainStore) GetBlockNode(hash *crypto.Hash, height uint64) (*types.BlockHeader, types.BlockStatus, error)
func (*ChainStore) GetReceipt ¶
func (chainStore *ChainStore) GetReceipt(txHash crypto.Hash) *types.Receipt
func (*ChainStore) GetReceipts ¶
func (chainStore *ChainStore) GetReceipts(blockHash crypto.Hash) []*types.Receipt
func (*ChainStore) PutBlockNode ¶
func (chainStore *ChainStore) PutBlockNode(blockNode *types.BlockNode) error
func (*ChainStore) PutReceipt ¶
func (*ChainStore) PutReceipts ¶
type ChainView ¶
type ChainView struct {
// contains filtered or unexported fields
}
chainView provides a flat view of a specific branch of the block chain from its tip back to the genesis block and provides various convenience functions for comparing chains.
For example, assume a block chain with a side chain as depicted below:
genesis -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 \-> 4a -> 5a -> 6a
The chain view for the branch ending in 6a consists of:
genesis -> 1 -> 2 -> 3 -> 4a -> 5a -> 6a
func NewChainView ¶
newChainView returns a new chain view for the given tip block node. Passing nil as the tip will result in a chain view that is not initialized. The tip can be updated at any time via the setTip function.
func (*ChainView) Contains ¶
Contains returns whether or not the chain view contains the passed block node.
This function is safe for concurrent access.
func (*ChainView) Equals ¶
Equals returns whether or not two chain views are the same. Uninitialized views (tip set to nil) are considered equal.
This function is safe for concurrent access.
func (*ChainView) FindFork ¶
FindFork returns the final common block between the provided node and the the chain view. It will return nil if there is no common block.
For example, assume a block chain with a side chain as depicted below:
genesis -> 1 -> 2 -> ... -> 5 -> 6 -> 7 -> 8 \-> 6a -> 7a
Further, assume the view is for the longer chain depicted above. That is to say it consists of:
genesis -> 1 -> 2 -> ... -> 5 -> 6 -> 7 -> 8.
Invoking this function with block node 7a would return block node 5 while invoking it with block node 7 would return itself since it is already part of the branch formed by the view.
This function is safe for concurrent access.
func (*ChainView) Genesis ¶
Genesis returns the genesis block for the chain view.
This function is safe for concurrent access.
func (*ChainView) Height ¶
Height returns the height of the tip of the chain view. It will return -1 if there is no tip (which only happens if the chain view has not been initialized).
This function is safe for concurrent access.
func (*ChainView) Next ¶
Next returns the successor to the provided node for the chain view. It will return nil if there is no successfor or the provided node is not part of the view.
For example, assume a block chain with a side chain as depicted below:
genesis -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 \-> 4a -> 5a -> 6a
Further, assume the view is for the longer chain depicted above. That is to say it consists of:
genesis -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8
Invoking this function with block node 5 would return block node 6 while invoking it with block node 5a would return nil since that node is not part of the view.
This function is safe for concurrent access.
func (*ChainView) NodeByHeight ¶
NodeByHeight returns the block node at the specified height. Nil will be returned if the height does not exist.
This function is safe for concurrent access.
func (*ChainView) SetTip ¶
SetTip sets the chain view to use the provided block node as the current tip and ensures the view is consistent by populating it with the nodes obtained by walking backwards all the way to genesis block as necessary. Further calls will only perform the minimum work needed, so switching between chain tips is efficient.
This function is safe for concurrent access.
type ExecuteTransactionContext ¶
type ExecuteTransactionContext struct {
// contains filtered or unexported fields
}
func NewExecuteTransactionContext ¶
func NewExecuteTransactionContext(blockContext *BlockExecuteContext, chainstore store.StoreInterface, gasPool *GasPool, from *crypto.CommonAddress, tx *types.Transaction) *ExecuteTransactionContext
func (*ExecuteTransactionContext) Data ¶
func (context *ExecuteTransactionContext) Data() []byte
func (*ExecuteTransactionContext) From ¶
func (context *ExecuteTransactionContext) From() *crypto.CommonAddress
func (*ExecuteTransactionContext) GasPrice ¶
func (context *ExecuteTransactionContext) GasPrice() *big.Int
func (*ExecuteTransactionContext) GasRemained ¶
func (context *ExecuteTransactionContext) GasRemained() uint64
func (*ExecuteTransactionContext) GasUsed ¶
func (context *ExecuteTransactionContext) GasUsed() uint64
gasRemained returns the amount of gasRemained used up by the state transition.
func (*ExecuteTransactionContext) Gp ¶
func (context *ExecuteTransactionContext) Gp() *GasPool
func (*ExecuteTransactionContext) Header ¶
func (context *ExecuteTransactionContext) Header() *types.BlockHeader
func (*ExecuteTransactionContext) InitialGas ¶
func (context *ExecuteTransactionContext) InitialGas() uint64
func (*ExecuteTransactionContext) PreCheck ¶
func (context *ExecuteTransactionContext) PreCheck() error
func (*ExecuteTransactionContext) RefundCoin ¶
func (context *ExecuteTransactionContext) RefundCoin() error
func (*ExecuteTransactionContext) RefundGas ¶
func (context *ExecuteTransactionContext) RefundGas(refundGas uint64)
func (*ExecuteTransactionContext) To ¶
func (context *ExecuteTransactionContext) To() crypto.CommonAddress
func (*ExecuteTransactionContext) TrieStore ¶
func (context *ExecuteTransactionContext) TrieStore() store.StoreInterface
func (*ExecuteTransactionContext) Tx ¶
func (context *ExecuteTransactionContext) Tx() *types.Transaction
func (*ExecuteTransactionContext) UseGas ¶
func (context *ExecuteTransactionContext) UseGas(amount uint64) error
func (*ExecuteTransactionContext) Value ¶
func (context *ExecuteTransactionContext) Value() *big.Int
type GasPool ¶
type GasPool uint64
GasPool tracks the amount of gasRemained available during execution of the transactions in a block. The zero value is a pool with zero gasRemained available.
type GenesisContext ¶
type GenesisContext struct {
// contains filtered or unexported fields
}
GenesisContext used to deliver config information through all genesis processor
func NewGenesisContext ¶
func NewGenesisContext(genesisContent *json.RawMessage, store store.StoreInterface) (*GenesisContext, error)
func (GenesisContext) Config ¶
func (g GenesisContext) Config() map[string]json.RawMessage
func (GenesisContext) Store ¶
func (g GenesisContext) Store() store.StoreInterface
type IBlockValidator ¶
type IBlockValidator interface { VerifyHeader(header, parent *types.BlockHeader) error VerifyBody(block *types.Block) error ExecuteBlock(context *BlockExecuteContext) error }
type IGenesisProcess ¶
type IGenesisProcess interface {
Genesis(context *GenesisContext) error
}
Process genesis contract
type ITransactionSelector ¶
type ITransactionSelector interface {
Select(tx *types.Transaction) bool
}
type ITransactionValidator ¶
type ITransactionValidator interface {
ExecuteTransaction(context *ExecuteTransactionContext) *types.ExecuteTransactionResult
}
type PreminerGenesisProcessor ¶
type PreminerGenesisProcessor struct { }
func NewPreminerGenesisProcessor ¶
func NewPreminerGenesisProcessor() *PreminerGenesisProcessor
func (*PreminerGenesisProcessor) Genesis ¶
func (NewPreminerGenesisProcessor *PreminerGenesisProcessor) Genesis(context *GenesisContext) error
type StakeTransactionProcessor ¶
type StakeTransactionProcessor struct { }
func (*StakeTransactionProcessor) ExecuteTransaction ¶
func (processor *StakeTransactionProcessor) ExecuteTransaction(context *ExecuteTransactionContext) *types.ExecuteTransactionResult
type StakeTxSelector ¶
type StakeTxSelector struct { }
func (*StakeTxSelector) Select ¶
func (StakeTxSelector *StakeTxSelector) Select(tx *types.Transaction) bool
type TransferTransactionProcessor ¶
type TransferTransactionProcessor struct { }
func (*TransferTransactionProcessor) ExecuteTransaction ¶
func (transferTransactionProcessor *TransferTransactionProcessor) ExecuteTransaction(context *ExecuteTransactionContext) *types.ExecuteTransactionResult
type TransferTxSelector ¶
type TransferTxSelector struct { }
***************** transfer *******************
func (*TransferTxSelector) Select ¶
func (transferTxSelector *TransferTxSelector) Select(tx *types.Transaction) bool
type TrieQuery ¶
type TrieQuery struct { dbinterface.KeyValueStore // contains filtered or unexported fields }
func NewTrieQuery ¶
func NewTrieQuery(store dbinterface.KeyValueStore, root []byte) (*TrieQuery, error)
func (*TrieQuery) AliasExist ¶
func (*TrieQuery) AliasGet ¶
func (trieQuery *TrieQuery) AliasGet(alias string) (*crypto.CommonAddress, error)
func (*TrieQuery) GetBalance ¶
func (trieQuery *TrieQuery) GetBalance(addr *crypto.CommonAddress) *big.Int
func (*TrieQuery) GetByteCode ¶
func (trieQuery *TrieQuery) GetByteCode(addr *crypto.CommonAddress) []byte
func (*TrieQuery) GetCancelCreditDetails ¶
func (trieQuery *TrieQuery) GetCancelCreditDetails(addr *crypto.CommonAddress) string
func (*TrieQuery) GetCandidateAddrs ¶
func (*TrieQuery) GetCodeHash ¶
func (trieQuery *TrieQuery) GetCodeHash(addr *crypto.CommonAddress) crypto.Hash
func (*TrieQuery) GetNonce ¶
func (trieQuery *TrieQuery) GetNonce(addr *crypto.CommonAddress) uint64
func (*TrieQuery) GetReputation ¶
func (trieQuery *TrieQuery) GetReputation(addr *crypto.CommonAddress) *big.Int
func (*TrieQuery) GetStorage ¶
func (*TrieQuery) GetStorageAlias ¶
func (trieQuery *TrieQuery) GetStorageAlias(addr *crypto.CommonAddress) string
func (*TrieQuery) GetVoteCreditDetails ¶
func (trieQuery *TrieQuery) GetVoteCreditDetails(addr *crypto.CommonAddress) string