比特币代码分析7 交易校验

每一个收到交易,比特币节点都验证该交易,有效的交易将被传递到各个附近节点,这将确保只有有效的交易才会在网络中传播, 而无效的交易将会在第一个节点处就被废弃。
校验选项列表:
每一个节点在校验每一笔交易时,都需要对照一个长长的标准列表
1、交易语法与数据是否正确
2、输入与输出列表都不能空(>=1)
3、交易大小 < max_block_base_size(1M)
4、0 < 输出值与总量 < 2100万
5、输出点中hash!=0,N!=-1(哈希值不能为零、序列号N不能为-1)
6、nlocktime<int_max
7、交易字节>=100字节
8、解锁脚本(scriptSig)只能够将数字压入栈中,并且锁定脚本(scriptPubkey)必须要符合isStandard的格式 (该格式将会拒绝非标准交易)
9、池中或位于主分支区块中的一个匹配交易必须是存在的
10、对于每一个输入,如果引用的输出存在于池中任何的交易,该交易将被拒绝
11、验证孤立交易
12、coinbase交易需经过100个确认
13、输出必须存在,且未被花费
14、0< 输入值与总量 < 2100万
15、如果输入值的总和小于输出值的总和,交易将被中止
16、交易费用太低,则交易被拒绝
17、每一个输入的解锁脚本必须依据相应输出的锁定脚本来验证

猜你喜欢

转载自blog.51cto.com/13878196/2327595
今日推荐