交易池
接口代码定义在这里
以下为核心功能的接口,开发者如有需求,可自行定制属于自己的交易池
func BaseCheck(*SignedTxn) error
func TripodsCheck(stxn *SignedTxn) error
func NecessaryCheck(stxn *SignedTxn) error
BaseCheck()
插入交易数据到交易池的时候,会做一些基础检查,基础检查有: 交易数据是否过大,交易池容量是否已达上限,交易中的签名是否合法,是否有
交易重复。前三者如果检查不通过会返回错误, 交易重复的时候会忽略该条消息但是不会返回错误。
TripodsCheck()
基础检查完毕之后,会进行tripods检查,此为开发者自行定义的交易检查规则。
NecessaryCheck()
表示必要性检查,只检查交易数据是否过大、签名是否合法以及 tripods检查。 在节点收到来自P2P网络的区块之后,同步
区块中的交易数据时做该检查,检查后直接存入txdb
。
func Insert(txn *SignedTxn) error
Insert()
表示插入交易数据到交易池, 该功能内部带有 BaseCheck
和 TripodsCheck
两类检查, 只有通过检查才会被真正插入交易池,否则会返回错误。
func Pack(numLimit uint64) ([]*SignedTxn, error)
func PackFor(numLimit uint64, filter func(*SignedTxn) error) ([]*SignedTxn, error)
Pack(numLimit)
表示从交易池最多打包numLimit
个交易,被打包的交易会被标记, 但是不会立马从交易池中删除。
PackFor(numLimit, filter)
比 Pack
多一个过滤功能,所有被打包的交易必须通过filter
的过滤,如果filter
返回一个错误,则该交易不会被打包。
func GetTxn(hash Hash) (*SignedTxn, error)
func Reset(*Block) error
GetTxn(hash)
根据交易哈希值 获取交易数据。
Reset(*Block)
在交易池中清除给定区块中的交易,因为它们已经被打包。