美文网首页
交易的验证

交易的验证

作者: 风生水起_2018 | 来源:发表于2018-05-08 12:21 被阅读0次

在交易传递到临近的节点前,每一个收到交易的比特币节点将会首先验证该交易,这将确保只有有效的交易才会在网络中传播,而无效的交易将会在第一个节点处被废弃。
每一个节点在校验每一笔交易时,都需要对照一个长长的标准列表:

▷交易的语法和数据结构必须正确。
▷输入与输出列表都不能为空。
▷交易的字节大小是小于MAX_BLOCK_SIZE的。
▷每一个输出值,以及总量,必须在规定值的范围内 (小于2,100万个币,大于0)。
▷没有哈希等于0,N等于-1的输入(coinbase交易不应当被中继)。
▷nLockTime是小于或等于INT_MAX的。
▷交易的字节大小是大于或等于100的。
▷交易中的签名数量应小于签名操作数量上限。
▷解锁脚本(scriptSig)只能够将数字压入栈中,并且锁定脚本(scriptPubkey)必须要符合isStandard的格式 (该格式将会拒绝非标准交易)。
▷池中或位于主分支区块中的一个匹配交易必须是存在的。
▷对于每一个输入,如果引用的输出存在于池中任何的交易,该交易将被拒绝。
▷对于每一个输入,在主分支和交易池中寻找引用的输出交易。如果输出交易缺少任何一个输入,该交易将成为一个孤立的交易。如果与其匹配的交易还没有出现在池中,则被加入到孤立交易池中。
▷对于每一个输入,如果引用的输出交易是一个coinbase输出,该输入必须至少获得COINBASE_MATURITY (100)个确认。
▷对于每一个输入,引用的输出是必须存在的,并且没有被花费。
▷使用引用的输出交易获得输入值,并检查每一个输入值和总值是否在规定值的范围内 (小于2100万个币,大于0)。
▷如果输入值的总和小于输出值的总和,交易将被中止。
▷如果交易费用太低以至于无法进入一个空的区块,交易将被拒绝。
▷每一个输入的解锁脚本必须依据相应输出的锁定脚本来验证。

在收到交易后,,每一个节点都会在全网广播前对这些交易进行校验,并以接收时的相应顺序,为有效的新交易建立一个池(交易池)。

相关文章

  • (翻译)fabric1.2.1新特性-可拔插交易背书和验证

    可拔插交易背书和验证 动机 当交易在提交被验证时,peer节点在交易本身的状态改变之前执行各种检查: 验证签名交易...

  • 《精通比特币》(7)

    6.10交易池和孤立交易池 交易在接收,验证之后会放入交易池中等待验证,但不是每笔交易的父交易一定出现在子交易之前...

  • 交易的验证

    在交易传递到临近的节点前,每一个收到交易的比特币节点将会首先验证该交易,这将确保只有有效的交易才会在网络中传播,而...

  • Sawtooth Lake学习笔记(四)

    二、交易和批次 通过创建和应用交易来对状态进行修改。客户创建一个交易并发送给验证组件。验证组件应用该交易,从而状态...

  • PalletOne技术讲堂之比特币与区块链特辑(二)

    比特币与区块链技术进阶 AGENDA 交易脚本 扩容与分叉 交易脚本 比特币的交易验证引擎依赖于两类脚本来验证比特...

  • Mir协议递归证明

    Mir上的交易通过零知识证明验证。这些证明可递归复合,因此验证者通过一个证明验证多个交易,实现区块链的可扩展性。 ...

  • 以太坊源码(02):交易收发机制

    目录 1、交易的主要数据结构 2、交易收发相关协程 3、关键流程描述 3.1交易数据验证流程 3.2交易入...

  • Substrate交易实现流程(2)

    3 提交(submit)/导入(import)交易 交易经过验证是valid以后,它将被提交到交易池里。submi...

  • Sawtooth Lake学习笔记(九)

    四、 交易调度 锯齿湖支持交易的串行和并行调度。启动验证组件进程时,可通过命令行参数或在验证组件的配置文件中作为选...

  • Hyperledger Fabric的基本概念和架构(一)

    1 Hyperleger Fabric的基本概念 1.1 Peer节点 Peer节点提供交易背书、交易验证、提交账...

网友评论

      本文标题:交易的验证

      本文链接:https://www.haomeiwen.com/subject/irkirftx.html