Documentation ¶
Overview ¶
Package types contains data types related to Fractal.
Index ¶
- Constants
- Variables
- func BloomLookup(bin Bloom, topic bytesBacked) bool
- func DeriveReceiptsMerkleRoot(receipts []*Receipt) common.Hash
- func DeriveTxsMerkleRoot(txs []*Transaction) common.Hash
- func LogsBloom(logs []*Log) *big.Int
- func Number(b1, b2 *Block) bool
- func Recover(signer Signer, a *Action, tx *Transaction) (common.PubKey, error)
- func SignAction(a *Action, tx *Transaction, s Signer, prv *ecdsa.PrivateKey) error
- type Action
- func (a *Action) AssetID() uint64
- func (a *Action) ChainID() *big.Int
- func (a *Action) Data() []byte
- func (a *Action) DecodeRLP(s *rlp.Stream) error
- func (a *Action) EncodeRLP(w io.Writer) error
- func (a *Action) Gas() uint64
- func (a *Action) Hash() common.Hash
- func (a *Action) NewRPCAction(index uint64) *RPCAction
- func (a *Action) Nonce() uint64
- func (a *Action) RawSignatureValues() (*big.Int, *big.Int, *big.Int)
- func (a *Action) Recipient() common.Name
- func (a *Action) Sender() common.Name
- func (a *Action) Type() ActionType
- func (a *Action) Value() *big.Int
- func (a *Action) WithSignature(signer Signer, sig []byte) error
- type ActionResult
- type ActionType
- type Block
- func (b *Block) Body() *Body
- func (b *Block) Coinbase() common.Name
- func (b *Block) CurForkID() uint64
- func (b *Block) DecodeRLP(input []byte) error
- func (b *Block) Difficulty() *big.Int
- func (b *Block) EncodeRLP() ([]byte, error)
- func (b *Block) Extra() []byte
- func (b *Block) GasLimit() uint64
- func (b *Block) GasUsed() uint64
- func (b *Block) Hash() common.Hash
- func (b *Block) Header() *Header
- func (b *Block) NextForkID() uint64
- func (b *Block) Number() *big.Int
- func (b *Block) NumberU64() uint64
- func (b *Block) ParentHash() common.Hash
- func (b *Block) ReceiptHash() common.Hash
- func (b *Block) Root() common.Hash
- func (b *Block) Size() common.StorageSize
- func (b *Block) Time() *big.Int
- func (b *Block) Transactions() []*Transaction
- func (b *Block) TxHash() common.Hash
- func (b *Block) WithBody(transactions []*Transaction) *Block
- func (b *Block) WithSeal(header *Header) *Block
- type BlockBy
- type Blocks
- type Bloom
- func (b *Bloom) Add(d *big.Int)
- func (b Bloom) Big() *big.Int
- func (b Bloom) Bytes() []byte
- func (b Bloom) MarshalText() ([]byte, error)
- func (b *Bloom) SetBytes(d []byte)
- func (b Bloom) Test(test *big.Int) bool
- func (b Bloom) TestBytes(test []byte) bool
- func (b *Bloom) UnmarshalText(input []byte) error
- type Body
- type ForkID
- type Header
- type KvNode
- type Log
- type OptInfo
- type RPCAction
- type RPCActionResult
- type RPCLog
- type RPCReceipt
- type RPCTransaction
- type Receipt
- type Signer
- type SnapshotMsg
- type StateOut
- type Transaction
- func (tx *Transaction) Cost() *big.Int
- func (tx *Transaction) DecodeRLP(s *rlp.Stream) error
- func (tx *Transaction) EncodeRLP(w io.Writer) error
- func (tx *Transaction) GasAssetID() uint64
- func (tx *Transaction) GasPrice() *big.Int
- func (tx *Transaction) GetActions() []*Action
- func (tx *Transaction) Hash() common.Hash
- func (tx *Transaction) NewRPCTransaction(blockHash common.Hash, blockNumber uint64, index uint64) *RPCTransaction
- func (tx *Transaction) Size() common.StorageSize
- type TransactionsByPriceAndNonce
- type TxByNonce
- type TxByPrice
Constants ¶
const ( // BloomByteLength represents the number of bytes used in a header log bloom. BloomByteLength = 256 // BloomBitLength represents the number of bits used in a header log bloom. BloomBitLength = 8 * BloomByteLength )
const ( // ReceiptStatusFailed is the status code of a action if execution failed. ReceiptStatusFailed = uint64(0) // ReceiptStatusSuccessful is the status code of a action if execution succeeded. ReceiptStatusSuccessful = uint64(1) )
Variables ¶
var ( //ErrInvalidchainID invalid chain id for signer ErrInvalidchainID = errors.New("invalid chain id for signer") //ErrSigUnprotected signature is considered unprotected ErrSigUnprotected = errors.New("signature is considered unprotected") )
var Bloom9 = bloom9
Bloom9 export func
var ErrInvalidSig = errors.New("invalid action v, r, s values")
ErrInvalidSig invalid signature.
Functions ¶
func DeriveReceiptsMerkleRoot ¶
DeriveReceiptsMerkleRoot returns receiptes merkle tree root hash.
func DeriveTxsMerkleRoot ¶
func DeriveTxsMerkleRoot(txs []*Transaction) common.Hash
DeriveTxsMerkleRoot returns txs merkle tree root hash.
func Recover ¶
Recover returns the pubkey derived from the signature (V, R, S) using secp256k1 elliptic curve and an error if it failed deriving or upon an incorrect signature.
func SignAction ¶
func SignAction(a *Action, tx *Transaction, s Signer, prv *ecdsa.PrivateKey) error
SignAction signs the action using the given signer and private key
Types ¶
type Action ¶
type Action struct {
// contains filtered or unexported fields
}
Action represents an entire action in the transaction.
func NewAction ¶
func NewAction(actionType ActionType, from, to common.Name, nonce, assetID, gasLimit uint64, amount *big.Int, payload []byte) *Action
NewAction initialize transaction's action.
func (*Action) NewRPCAction ¶
NewRPCAction returns a action that will serialize to the RPC.
func (*Action) RawSignatureValues ¶
RawSignatureValues return raw signature values.
type ActionResult ¶
ActionResult represents the results the transaction action.
func (*ActionResult) NewRPCActionResult ¶
func (a *ActionResult) NewRPCActionResult(aType ActionType) *RPCActionResult
NewRPCActionResult returns a ActionResult that will serialize to the RPC.
type ActionType ¶
type ActionType uint64
ActionType type of Action.
const ( // Transfer represents the ordinary and contract transfer action. Transfer ActionType = iota // CreateContract repesents the create contract action. CreateContract )
const ( // CreateAccount repesents the create account. CreateAccount ActionType = 0x100 + iota // UpdateAccount repesents the update account action. UpdateAccount // DeleteAccount repesents the delete account action. DeleteAccount )
const ( // IncreaseAsset Asset operation IncreaseAsset ActionType = 0x200 + iota // IssueAsset repesents Issue asset action. IssueAsset //destory asset DestoryAsset // SetAssetOwner repesents set asset new owner action. SetAssetOwner //set asset founder SetAssetFounder )
const ( // RegProducer repesents register producer action. RegProducer ActionType = 0x300 + iota // UpdateProducer repesents update producer action. UpdateProducer // UnregProducer repesents unregister producer action. UnregProducer // RemoveVoter repesents producer remove voter action. RemoveVoter // VoteProducer repesents voter vote producer action. VoteProducer // ChangeProducer repesents voter change producer action. ChangeProducer // UnvoteProducer repesents voter cancel vote some producer action. UnvoteProducer )
type Block ¶
type Block struct { Head *Header Txs []*Transaction // contains filtered or unexported fields }
Block represents an entire block in the blockchain.
func NewBlock ¶
func NewBlock(header *Header, txs []*Transaction, receipts []*Receipt) *Block
NewBlock creates a new block. The input data is copied, changes to header and to the field values will not affect the block.
func NewBlockWithHeader ¶
NewBlockWithHeader creates a block with the given header data. The header data is copied, changes to header and to the field values will not affect the block.
func (*Block) Difficulty ¶
Difficulty returns the block's Difficulty.
func (*Block) Hash ¶
Hash returns the keccak256 hash of b's header. The hash is computed on the first call and cached thereafter.
func (*Block) NextForkID ¶
NextForkID returns the block's current fork ID.
func (*Block) ParentHash ¶
ParentHash returns the block's ParentHash.
func (*Block) ReceiptHash ¶
ReceiptHash returns the block's ReceiptHash.
func (*Block) Size ¶
func (b *Block) Size() common.StorageSize
Size returns the true RLP encoded storage size of the block, either by encoding and returning it, or returning a previsouly cached value.
func (*Block) Transactions ¶
func (b *Block) Transactions() []*Transaction
Transactions returns the block's txs.
func (*Block) WithBody ¶
func (b *Block) WithBody(transactions []*Transaction) *Block
WithBody returns a new block with the given transaction .
type Bloom ¶
type Bloom [BloomByteLength]byte
Bloom represents a 2048 bit bloom filter.
func BytesToBloom ¶
BytesToBloom converts a byte slice to a bloom filter. It panics if b is not of suitable size.
func CreateBloom ¶
CreateBloom create bloom by receiptes.
func (Bloom) MarshalText ¶
MarshalText encodes b as a hex string with 0x prefix.
func (*Bloom) SetBytes ¶
SetBytes sets the content of b to the given bytes. It panics if d is not of suitable size.
func (*Bloom) UnmarshalText ¶
UnmarshalText b as a hex string with 0x prefix.
type Body ¶
type Body struct {
Transactions []*Transaction
}
Body represents an entire body of the block transactions.
type Header ¶
type Header struct { ParentHash common.Hash `json:"parentHash"` Coinbase common.Name `json:"miner"` Root common.Hash `json:"stateRoot"` TxsRoot common.Hash `json:"transactionsRoot"` ReceiptsRoot common.Hash `json:"receiptsRoot"` Bloom Bloom `json:"logsBloom"` Difficulty *big.Int `json:"difficulty"` Number *big.Int `json:"number"` GasLimit uint64 `json:"gasLimit"` GasUsed uint64 `json:"gasUsed"` Time *big.Int `json:"timestamp"` Extra []byte `json:"extraData"` // additional fields (for forward compatibility). AdditionalFields []rlp.RawValue `rlp:"tail"` // contains filtered or unexported fields }
Header represents a block header in the blockchain.
func CopyHeader ¶
CopyHeader creates a deep copy of a block header to prevent side effects from modifying a header variable.
func (*Header) Hash ¶
Hash returns the block hash of the header, which is simply the keccak256 hash of its RLP encoding.
func (*Header) NextForkID ¶
NextForkID returns the header's next fork ID.
type Log ¶
type Log struct { Name common.Name // address of the contract that generated the event Topics []common.Hash // list of topics provided by the contract. Data []byte // supplied by the contract, usually ABI-encoded BlockNumber uint64 // block in which the transaction was included BlockHash common.Hash // hash of the block in which the transaction was included TxHash common.Hash // hash of the transaction Index uint // index of the log in the receipt ActionIndex uint // index of the input and output in the transaction TxIndex uint // index of the transaction in the block }
Log represents a contract log event. These events are generated by the LOG opcode and stored/indexed by the node.
type OptInfo ¶
type OptInfo struct { Key string Value []byte Opt uint // record modification status : add/delete/update }
OptInfo status option info.
type RPCAction ¶
type RPCAction struct { Type uint64 `json:"type"` Nonce uint64 `json:"nonce"` From common.Name `json:"from"` To common.Name `json:"to"` AssetID uint64 `json:"assetID"` GasLimit uint64 `json:"gas"` Amount *big.Int `json:"value"` Payload hexutil.Bytes `json:"payload"` V *hexutil.Big `json:"v"` R *hexutil.Big `json:"r"` S *hexutil.Big `json:"s"` Hash common.Hash `json:"actionHash"` ActionIdex uint64 `json:"actionIndex"` }
RPCAction represents a action that will serialize to the RPC representation of a action.
type RPCActionResult ¶
type RPCActionResult struct { ActionType uint64 `json:"actionType"` Status uint64 `json:"status"` Index uint64 `json:"index"` GasUsed uint64 `json:"gasUsed"` Error string `json:"error"` }
RPCActionResult that will serialize to the RPC representation of a ActionResult.
type RPCLog ¶
type RPCLog struct { Name common.Name `json:"name"` Topics []common.Hash `json:"topics"` Data hexutil.Bytes `json:"data" validate:"nonzero"` BlockNumber uint64 `json:"blockNumber"` BlockHash common.Hash `json:"blockHash"` TxHash common.Hash `json:"transactionHash"` Index uint `json:"logIndex"` ActionIndex uint `json:"actionIndex"` TxIndex uint `json:"transactionIndex"` }
RPCLog that will serialize to the RPC representation of a log.
type RPCReceipt ¶
type RPCReceipt struct { BlockHash common.Hash `json:"blockHash"` BlockNumber uint64 `json:"blockNumber"` Hash common.Hash `json:"txHash"` TransactionIndex uint64 `json:"transactionIndex"` PostState hexutil.Bytes `json:"postState"` ActionResults []*RPCActionResult `json:"actionResults"` CumulativeGasUsed uint64 `json:"cumulativeGasUsed"` TotalGasUsed uint64 `json:"totalGasUsed"` Bloom Bloom `json:"logsBloom"` Logs []*RPCLog `json:"logs"` }
RPCReceipt that will serialize to the RPC representation of a Receipt.
type RPCTransaction ¶
type RPCTransaction struct { BlockHash common.Hash `json:"blockHash"` BlockNumber uint64 `json:"blockNumber"` Hash common.Hash `json:"txHash"` TransactionIndex uint64 `json:"transactionIndex"` RPCActions []*RPCAction `json:"actions"` GasAssetID uint64 `json:"gasAssetID"` GasPrice *big.Int `json:"gasPrice"` GasCost *big.Int `json:"gasCost"` }
RPCTransaction that will serialize to the RPC representation of a transaction.
type Receipt ¶
type Receipt struct { PostState []byte ActionResults []*ActionResult CumulativeGasUsed uint64 Bloom Bloom Logs []*Log TxHash common.Hash TotalGasUsed uint64 }
Receipt represents the results of a transaction.
func NewReceipt ¶
NewReceipt creates a barebone transaction receipt, copying the init fields.
func (*Receipt) ConsensusReceipt ¶
ConsensusReceipt returns consensus encoding of a receipt.
func (*Receipt) NewRPCReceipt ¶
func (r *Receipt) NewRPCReceipt(blockHash common.Hash, blockNumber uint64, index uint64, tx *Transaction) *RPCReceipt
NewRPCReceipt returns a Receipt that will serialize to the RPC.
func (*Receipt) Size ¶
func (r *Receipt) Size() common.StorageSize
Size returns the approximate memory used by all internal contents
type Signer ¶
type Signer struct {
// contains filtered or unexported fields
}
Signer implements Signer .
func MakeSigner ¶
MakeSigner returns a Signer based on the given chainID .
func (Signer) Hash ¶
func (s Signer) Hash(tx *Transaction) common.Hash
Hash returns the hash to be signed by the sender.
type SnapshotMsg ¶
CurSnapshotMsg
type StateOut ¶
type StateOut struct { ReadSet []*KvNode // replay Reverts []*OptInfo // rollback previous block Changes []*OptInfo // forward next block ParentHash common.Hash // block parent hash Number uint64 // block num Hash common.Hash // current block hash }
StateOut represents a block exec status data.
type Transaction ¶
type Transaction struct {
// contains filtered or unexported fields
}
Transaction represents an entire transaction in the block.
func NewTransaction ¶
func NewTransaction(assetID uint64, price *big.Int, actions ...*Action) *Transaction
NewTransaction initialize a transaction.
func TxDifference ¶
func TxDifference(a, b []*Transaction) []*Transaction
TxDifference returns a new set which is the difference between a and b.
func (*Transaction) Cost ¶
func (tx *Transaction) Cost() *big.Int
Cost returns all actions gasprice * gaslimit.
func (*Transaction) DecodeRLP ¶
func (tx *Transaction) DecodeRLP(s *rlp.Stream) error
DecodeRLP implements rlp.Decoder
func (*Transaction) EncodeRLP ¶
func (tx *Transaction) EncodeRLP(w io.Writer) error
EncodeRLP implements rlp.Encoder
func (*Transaction) GasAssetID ¶
func (tx *Transaction) GasAssetID() uint64
GasAssetID returns transaction gas asset id.
func (*Transaction) GasPrice ¶
func (tx *Transaction) GasPrice() *big.Int
GasPrice returns transaction gas price.
func (*Transaction) GetActions ¶
func (tx *Transaction) GetActions() []*Action
GetActions return transaction actons.
func (*Transaction) Hash ¶
func (tx *Transaction) Hash() common.Hash
Hash hashes the RLP encoding of tx.
func (*Transaction) NewRPCTransaction ¶
func (tx *Transaction) NewRPCTransaction(blockHash common.Hash, blockNumber uint64, index uint64) *RPCTransaction
NewRPCTransaction returns a transaction that will serialize to the RPC.
func (*Transaction) Size ¶
func (tx *Transaction) Size() common.StorageSize
Size returns the true RLP encoded storage size of the transaction,
type TransactionsByPriceAndNonce ¶
type TransactionsByPriceAndNonce struct {
// contains filtered or unexported fields
}
TransactionsByPriceAndNonce represents a set of transactions that can return transactions in a profit-maximizing sorted order, while supporting removing entire batches of transactions for non-executable accounts.
func NewTransactionsByPriceAndNonce ¶
func NewTransactionsByPriceAndNonce(txs map[common.Name][]*Transaction) *TransactionsByPriceAndNonce
NewTransactionsByPriceAndNonce creates a transaction set that can retrieve price sorted transactions in a nonce-honouring way.
Note, the input map is reowned so the caller should not interact any more with if after providing it to the constructor.
func (*TransactionsByPriceAndNonce) Peek ¶
func (t *TransactionsByPriceAndNonce) Peek() *Transaction
Peek returns the next transaction by price.
func (*TransactionsByPriceAndNonce) Pop ¶
func (t *TransactionsByPriceAndNonce) Pop()
Pop removes the best transaction, *not* replacing it with the next one from the same account. This should be used when a transaction cannot be executed and hence all subsequent ones should be discarded from the same account.
func (*TransactionsByPriceAndNonce) Shift ¶
func (t *TransactionsByPriceAndNonce) Shift()
Shift replaces the current best head with the next one from the same account.
type TxByPrice ¶
type TxByPrice []*Transaction
TxByPrice implements both the sort and the heap interface,