主页 > imtokenapp专业版下载 > 2. 比特币脚本

2. 比特币脚本

imtokenapp专业版下载 2023-12-09 05:09:38

2021-05-071。 比特币交易

在每笔交易中都会有一个输入值和一个输出值。 输入可以被认为是将被消耗的硬币(在之前的交易中创建的硬币),输出是在本次交易中创建的硬币。 铸造新币时,只会产生新币,不会消耗旧币(就像Scrooge Coins中的铸币一样,只有输出,没有输入)。 每笔交易都有一个唯一的 ID。 每笔交易可能有多个输出,输出的索引从0开始。

如下图,交易1为铸币,无输出,无签名; 第二笔交易的输入是第一笔交易的第0个输出,输出了17个币给Bob,剩下的8个币留给自己。 并签字; MIMO 类似。

比特币的运行机制

地址转换:由于一笔交易输出的币要么在另一笔交易中被全部消耗掉,要么一个都没有被消耗掉,所以不存在只消耗掉一部分的情况。 例如,Alice 在交易 1 中得到了 25 个币,她必须在交易 2 中将这 25 个币全部消耗掉比特币可以被销毁吗,所以她需要将剩余的 8 个币转给自己,而这 8 个币可以转至另一个地址(不同于地址即在交易1)中收到了25个币,前提是这个地址是Alice所有的,也就是地址转换。

有效验证:当一笔新的交易添加到总账时,我们需要验证这25个币之前是否已经花掉了。 我们只需要从 Alice 引用的交易开始检查,直到账本上记录的最新交易,而不是从账本建立之初的交易开始。

资金合并:只需发起一笔交易。 交易中有两个输入和一个输出,输出地址是他自己的地址。

** Co-payment:** 两个人共同发起一笔交易。 交易中有两个输入和一个输出。 这两个输入引用的“最后一笔交易”的输出地址不能相同。 这笔交易需要这两个人签名。

交易语法:

2. 比特币脚本

比特币分叉对比特币的影响_比特币怎么比特币钱包_比特币可以被销毁吗

比特币脚本的有用概述

最常见的比特币交易是使用某人的签名来获得在先前交易中获得的资金。 在这种情况下,我们希望输出包含资金只有在地址 X 的所有者签名后才能使用的信息。我们知道地址实际上是公钥的哈希值,所以只说地址 X 并不告诉我们公钥在哪里,也没有给我们检查签名的方法。 因此,交易输出必须描述为:资金只能通过哈希值为X的公钥和公钥所有者的签名才能获得。 图为最常见的比特币脚本。

比特币的运行机制

同时,交易的输入也包含脚本。 为了确认一笔交易正确获得了上一笔交易输出的资金,我们必须将本笔交易的输入脚本与上一笔交易的输出脚本拼接起来。 在获得资金之前,必须成功执行此串联脚本。 输出脚本指定一个公钥(或公钥哈希的地址),输入脚本指定一个公钥对应的签名。

比特币的运行机制

指令分类:

执行过程:前两条指令为数据指令,分别是输入脚本中的签名和用于验证签名的公钥,直接入栈栈顶。 然后执行复制指令OP_DUP,复制栈顶的公钥,放到栈顶; 下一条指令是OP_HASH160,获取栈顶的数据,计算其hash值,然后将结果入栈Peak。 接下来,将发送者指定的公钥的哈希值压入栈顶。 这时执行EQUALVERIFY命令,检查栈顶的两个值是否相等。 假设它们相等,则意味着收件人使用的是正确的公钥。 该指令从堆栈中删除顶部的两个数据。 至此我们已经验证了接收方使用的公钥确实是交易中指定的公钥,但是我们必须验证签名是否真实。 在这种情况下,使用 OP_CHECKSIG 检查签名。 如果没有遇到错误,此脚本的输出为 TRUE。

比特币的运行机制

补充:一些比特币脚本

比特币可以被销毁吗_比特币分叉对比特币的影响_比特币怎么比特币钱包

比特币的运行机制

破坏证明:

用于燃烧比特币的燃烧脚本证明。

如果交易代码的运行结果是将比特币转移到“销毁证明”脚本中,那么比特币将被销毁。

在实际应用中,主要用于引导客户使用其他数字货币系统。

三、比特币脚本的应用

第三方支付交易

如果爱丽丝用比特币从鲍勃那里买东西,爱丽丝想货到付款,而鲍勃想看到付款发货,一个好的方法是使用第三方支付交易。 第三方支付交易可以通过“MULTISIG”(多重签名)轻松实现。 引入第三方仲裁员,Alice 发起多签交易,并规定三人中有两人签名后才能提取资金。 这笔交易被纳入区块链后,资金由第三方监管。 如果 Bob 不发货或其他原因,Alice 将与第三方仲裁员签约,并将比特币退还给 Alice; 如果 Alice 收到货后不签字确认,第三方仲裁人可以与 Bob 七千协商,完成实际的资金支付。

绿色地址

比特币可以被销毁吗_比特币怎么比特币钱包_比特币分叉对比特币的影响

假设 Alice 想转账给 Bob,但 Bob 不在线(或者 Bob 在线但没有时间),因此他无法通过检查区块链更新来确认转账是否完成。 一般来说,一笔交易需要6次确认,才能确定它确实被加入了区块链。 如果爱丽丝只是在鲍勃的店里买了一个热狗,需要这么长时间才能确认这显然是不能接受的。 因此,比特币采用第三方银行的做法。 Alice把比特币转给银行,银行从绿色地址转给Bob,银行保证不会重复支付,Bob也相信这一点。 所以,当 Bob 看到银行的签名时,他就可以确定他迟早会收到这些比特币。 实际上,这样做存在很大风险,很多提供绿色地址的机构都因失信而倒闭。

高效的微支付

假设 Bob 是 Alice 的移动数据提供商,他按 Alice 每分钟使用的流量计费。 但是分分钟付钱是不现实的。 对此,我们可以把每分钟的费用累加起来,最后一次性付清。 Alice首先发起一个MULTISIG交易,将可能花费的最大金额转入MULTISIG地址。 这笔交易需要 Alice 和 Bob 生效。 之后,爱丽丝每分钟签名一次,支付给鲍勃这一分钟产生的费用,剩下的钱转给自己。 请注意,没有 Bob 的签名,因此交易不会包含在区块链中。 最后,当 Alice 用完服务时,她会告诉 Bob “我完成了,你可以切断我的服务了”,并签署最后一笔交易。 Bob 收到后就切断了服务,同时也对最后一笔交易进行了签名,这笔交易将被写入区块链。 事实上,所有这些交易都是双花,但只要 Bob 只在最后一笔交易上签名,双花就不会发生。 但是还有一个问题。 如果 Bob 没有在最后一笔交易上签名,那么这些比特币将一直存在于第三方托管地址中,Alice 无法取回剩余的比特币。 为此,我们引入了锁定时间(lock_time)。

锁定时间

为了防止Bob不签名,在小额支付协议开始之前,Alice和Bob先签署一笔交易,同意将所有比特币退还给Alice,但是这种“退款”行为是锁定的,直到锁定时间到期。 Alice 发起 MULTISIG 交易将比特币转入托管后,她会在向网络宣布交易之前向 Bob 请求退款交易。这样,如果 Bob 在 t 时间后还没有签署最后一笔交易,她就可以提取所有比特币通过这次交易

智能合约

所谓智能合约(smart contracts),就是区别于普通合约比特币可以被销毁吗,需要受到法律或仲裁机构保护的合约。 智能合约是比特币系统中可以通过技术手段强制执行的合约。 以上应用场景实际上是使用不同智能合约的例子。

4. 比特币区块

区块链非常巧妙地结合了两种基于哈希值的数据结构:第一种数据结构是区块的哈希链,每个区块都有一个区块头,其中包含指向前一个区块的哈希指针。 第二种是默克尔树结构,将区块类中所有交易的哈希值以树状结构排列存储。

比特币可以被销毁吗_比特币分叉对比特币的影响_比特币怎么比特币钱包

比特币的运行机制

区块头还包含了挖矿难题的信息,区块头的哈希函数必须以很多零开头才有效。 此外,区块头还包含一个矿工可以修改的“临时随机数”、一个时间戳和一个点(用来表示找到这个区块的难度)。

每个区块的 Merkle 树都有一个特殊的交易,称为 coinbase 交易:

5. 比特币网络

对于节点的离线,只要一个节点3小时没有声音,就会逐渐被其他节点遗忘。

当您启动一个节点时,首先要向您认识的节点发送一条简单的消息。 这个节点就是你的种子节点,然后你会问你的种子节点还认识别的节点吗? 重复这个过程,最后你可以选择连接到哪些节点。

当节点收到新的交易消息时:

竞争条件:由于网络传输的延迟,如果出现双重支付,每个节点只会收到两笔交易中的第一笔,其结果是很多节点会产生一个问题,即哪笔交易应该被纳入区块链分歧。 这取决于打包下一个区块的矿工,他将决定最终将哪笔交易打包到这个区块中。

零验证交易和手续费替代策略:

比特币可以被销毁吗_比特币怎么比特币钱包_比特币分叉对比特币的影响

零验证交易并不是用来防止双重支付的,但是由于矿工的默认行为是先把收到的交易放入交易池,所以零验证交易很难实现双重支付。

从2013年开始,矿工的默认行为变成了“手续费置换策略”,即当节点遇到冲突交易时,会将交易手续费较高的交易放入自己的交易池中。 但是关于是否真的可以防止双重支出存在很多争论。

最近,比特币采用了“选择加入”费用替代的做法,交易可以将自己标记为有资格进行费用替代。

6. 比特币的限制与优化

比特币的局限性在于:

硬分叉:通过对协议的修改引入新的特性可能会使之前版本的协议失效。 也就是说,运行新版本协议的节点认为有效的块将被运行旧版本协议的节点视为无效。 因此,网络上的所有节点都会根据自己运行的协议版本扩展出两条不同的链。

软分叉:增加新的特性,使现有的验证规则更加严格。 这样旧节点仍然会接受所有块,而新节点会拒绝一些。

分类:

技术要点:

相关文章: