当前位置: Home > 比特币 > 比特币交易 > 比特币交易如何独立验证?比特币交易独立验证有什么条件?

比特币交易如何独立验证?比特币交易独立验证有什么条件?

时间:2022-10-14 22:30:53 作者:比特币交易高手 阅读:3229次

由鑫链财经小编分享(xinchaincaijing.com),比特币交易是由矿工验证,或更准确的由在这些机器上运行的代码验证。这个想法是通过让至少x个矿工确认数据有效来保持数据有效。如果没有这种机制,无效数据可能会添加到链中。以下内容是对比特币独立验证的交易的详细介绍。

比特币交易如何独立验证?

一、交易的独立验证

钱包软件通过收集UTXO、提供适当的解锁脚本,然后构造分配给新所有者的新输出来创建交易。然后,产生的交易被发送到比特币网络中的相邻节点,以便它可以在整个比特币网络中传播。但是,在向其邻居转发交易之前,每个接收交易的比特币节点都会首先验证该交易。这确保了只有有效的交易通过网络传播,而无效的交易在遇到它们的第一个节点被丢弃。

二、每个节点核对每笔交易的标准

1、交易的语法和数据结构必须正确。

2、输入或输出列表都不是空的。

3、以字节为单位的交易大小小于MAX_BLOCK_SIZE。

4、每个输出值以及总数必须在允许的值范围内(小于21m硬币,大于0)。

5、所有的输入都没有hash=0,N=–1。

6、nLockTime小于或等于INT_MAX。

7、以字节为单位的交易大小大于或等于100。

8、交易中包含的签名操作数小于签名操作限制。

9、解锁脚本(scriptSig)只能在堆栈上推送数字,锁定脚本(scriptPubkey)必须匹配isStandard形式,但这会拒绝“非标准”交易。

10、池中或主分支的块中必须存在匹配的交易。

11、对于每个输入,如果引用的输出存在于池中的任何其他交易中,则必须拒绝该交易。

12、对于每个输入,在主分支和交易池中查找被引用的输出交易。如果任何输入缺少输出交易,这将是一个孤立交易。如果池中不存在匹配的交易,则添加到孤立交易池中。

13、每个输入如果引用的输出交易是币库输出,需要至少有100个COINBASE_MATURITY确认。

14、对于每个输入,引用的输出必须存在,并且不能已经被花费。

15、使用引用的输出交易获取输入值,检查每个输入值以及总和是否在允许的值范围内(小于2100万个硬币,大于0)。

16、如果输入值之和小于输出值之和,则拒绝。

17、如果交易费用太低,无法进入空区块,则拒绝。

18、每个输入的解锁脚本必须根据相应的输出锁定脚本进行验证。

这些条件可以在比特币参考客户端的AcceptToMemoryPool、CheckTransaction和CheckInputs函数中详细查看。需要注意,条件会随着时间的推移而变化,以应对新类型的拒绝服务攻击,或者有时会放宽规则以包括更多类型的交易。通过在接收到每个交易时以及在传播之前独立验证每个交易,每个节点都会构建一个有效(但未经确认)的交易池,称为交易池、内存池或内存池。

总结

上文内容为大家介绍了比特币的交易独立验证以及验证的标准有哪些条件。总的来说,交易是由矿工验证的,他们通过接收交易的一部分作为奖励来做到这一点,这个数额越高,你的区块得到确认的速度就越快,因为更多的人会想要挖掘它来获得这个奖励,一旦发生,交易就会被验证。


tag: 比特币交易 比特币
免责声明:鑫链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与鑫链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。

上一篇:怎么选择正规的比特币交易平台?比特币交易正规平台盘点

下一篇:关于比特币交易的交易年龄、费用和优先级的介绍