2.4 Transaction Pool
交易池包含了广播到整个网络的所有交易(签名的和未签名的),它们都已被本地节点接收和验证
Validity
交易池会检查交易的有效性,注意,交易的有效性不是硬线连接到交易池的,而是在运行时中被定义的。如下是有效性检查的示例:
-检查交易索引(随机数)是否正确
-检查账户是否有足够的金额支付相关费用
-检查签名是否有效
交易池也会定期检查已有交易的有效性。一旦发现交易无效或者过期则会将它从交易池中删除
validate_transaction
被从运行时中调用检查签名和随机数是否有效(或UTXO链的输出)并返回结果。它是单独执行的,因此它不会捕获错误,例如相同的输出被使用了两次
尽管它是有可能的,validate_transaction不会检查对pallet的调用是否会成功,它是一个潜在的Dos vector,因为网络中的交易在validate_transaction中会被通过
validate_transaction函数应该专注于为交易池提供必要信息来对交易进行排序和优先级处理,并且快速拒绝无效或者过期交易。函数可能被频繁的调用,如为相同的交易执行多次。如果它以正确的顺序执行,它将通过execute_block,所以validate_tr