主页 > imtoken冷钱包官方下载 > 学习概念之外的比特币脚本

学习概念之外的比特币脚本

imtoken冷钱包官方下载 2023-10-19 05:10:22

“力场lichang.io”是No.1公链挖矿社区!

比特币脚本模式_比特币分叉影响比特币总量_siteshilian.com 比特币模式

作为一名程序员,经常遇到的问题之一就是已经上线的系统总会出现各种莫名其妙的问题。 有些问题是可以提前避免的比特币脚本模式,但是避免不了的意外总是那么少,所以定期维护和更新自己写的程序是很有必要的。 这个频率一般都比较高,所以对于一个系统来说,它的运维成本总是比开发成本高几倍。 你可能会说,那是因为你的技术水平不够好。 大家可以看到,中本聪在2008年开发的比特币,一直运行到现在一直很流畅。 已经10年了。 他们是如何做到的呢? ? 当然,不可否认的是,这是所有程序员发自内心敬佩的地方比特币脚本模式,都认为中本聪是神级人物。 那么接下来,我会告诉大家这个比特币脚本是如何能够安全运行10多年的。

比特币分叉影响比特币总量_siteshilian.com 比特币模式_比特币脚本模式

脚本是什么样的

可能有很多小伙伴不明白什么是脚本。 比特币脚本实际上是比特币的控制语言。 最常见的比特币交易是使用某人的签名来获得他在之前交易中收到的资金。 在这种情况下,交易的输出包含消息:“通过地址 X 所有者的签名,可以获得资金。” 我们知道地址实际上是一个公钥的哈希值,所以仅仅说地址 X 并没有告诉我们公钥在哪里,也没有给我们提供检查签名的方法。 因此,交易输出必须描述为:“有了哈希值为X的公钥,以及这个公钥的所有者的签名,就可以获得资金。” 这实际上是最常见的比特币脚本。

例如:

siteshilian.com 比特币模式_比特币分叉影响比特币总量_比特币脚本模式

OP_DUPOP_HASH16069e02e18...OP_EQUALVERIFYOP_CHECKSIG

谁执行脚本

那么谁来执行这个脚本呢? 这一系列指令是如何完成的呢? 事实上,交易的输入包括脚本(而不是签名)。 为了确认一笔交易正确获得了上一笔交易输出的资金,我们将本笔交易的输入脚本与上一笔交易的输出脚本拼接起来。 在获得资金之前,必须成功执行此串联脚本。 这两个脚本,一个是输出脚本(scriptPubKey),一个是输入脚本(scriptSig)。 输出脚本只是指定一个公钥(或公钥哈希值的地址),输入脚本指定一个公钥对应的签名。

比特币分叉影响比特币总量_比特币脚本模式_siteshilian.com 比特币模式

例如:

------------------OP_DUPOP_HASH160

OP_EQUALVERIFYOP_CHECKSIG

siteshilian.com 比特币模式_比特币分叉影响比特币总量_比特币脚本模式

为了确认当前交易是否正确获取了上一笔交易输出的资金,我们将两个脚本链接起来,将上一笔交易的输出脚本(虚线下方)添加到当前交易的输入脚本(虚线上方)虚线),形成一个新的脚本。请注意

有个“?” inside,用作标识,确认是否与当前交易提供的公钥哈希值一致。

比特币语言简介

比特币分叉影响比特币总量_siteshilian.com 比特币模式_比特币脚本模式

这种脚本语言是专门为比特币开发的,是一种简单的堆栈式编程语言。 比特币的脚本语言设计原则简洁明了,内生支持加密操作。 例如,脚本中有目的的指令用于计算哈希值和验证签名。 因为这种脚本语言是堆栈式的,意味着每条指令只执行一次,而且是线性的,不能循环执行。 所以指令的数量给了我们执行时间和内存使用的上限。 这种语言不是图灵完备的,这意味着强大的功能不能随意运行。 但这是有意设计的,因为矿工需要执行网络上任何一个交易提交者提交的脚本,设计者不希望他们提交的脚本可能会无限循环,这样会增加很多意想不到的工作量。

执行比特币脚本只能产生两种结果:要么执行成功,交易有效,要么脚本执行错误,整个交易无效,拒绝记录在区块链中。 脚本语言非常简单。 只有 256 条指令,每条指令只使用一个字节。 256条指令中,15条目前不可用,75条保留未具体定义(以后可能用于扩展),其余可用。

很多在其他语言中通用的基本命令都包含在这里。 例如基本算术、逻辑语句(如If、then)、抛出错误、过早返回等。此外,还有密码学指令,如哈希函数语句、签名验证语句等。

外人觉得,正是因为比特币脚本的简单性,语言越简单,错误率就会越低,降到最低。 或许这就是比特币能够安全运行10年的最根本原因。