当前位置:首页 > 物联网 > 区块链
[导读] 在接下来的介绍中,区块网将研究比特币网络中使用的简单而强大的编码语言。比特币脚本语言(Bitcoin Script)在设计时只考虑了几个功能;它紧凑,图灵不完整,并且基于堆栈。通过这种方式,语言

在接下来的介绍中,区块网将研究比特币网络中使用的简单而强大的编码语言。比特币脚本语言(Bitcoin Script)在设计时只考虑了几个功能;它紧凑,图灵不完整,并且基于堆栈。通过这种方式,语言有效且安全地服务于某些目的。

尽管它的功能非常小,但与以太坊这样的网络相比,它在过去十年中已经证明了自己的强大,足以支持有价值的交易。

比特币脚本与“可编程货币”

在许多人看来,这种先锋加密货币背后的编程语言就是 Occam ‘s Razor的一个完美例子。

它是基础的,甚至与前加密货币编码语言相比也是如此。更重要的是,中本聪有意设计了这种简单性。一种具有多种功能并允许复杂数据交易的语言还允许更多的攻击向量。批评人士解释说,像Solidity这样的语言,虽然在范围上令人印象深刻,但在安全方面却远远不够。

在这一点上,比特币脚本语言的图灵是不完整的。相比之下,Solidity是图灵完备的,这意味着它可以复制任何图灵机或能够自主遵循特定算法的抽象机。掌握了这一概念,人们就可以开始理解智能合约是如何运作的。

回到最主要的焦点,比特币脚本语言没有提供这个功能,使用比特币区块链更深入地研究智能合约将是后面文章的主题。

比特币的主要用例一直是加密货币和其价值转移。因此,图灵完备语言的附加特性是不必要的。然而,这并不意味着脚本是有限的。

此外,比特币脚本语言的局限性阻止了无限循环被包含在任何单一交易中。这一限制消除了拒绝服务(DoS)攻击网络的可能性。这些约束的范围,例如不仅仅向X和Y发送值的交易,将在后面的部分中讨论。

比特币脚本语言的特点

比特币的编码语言使用“反向抛光”作为一种符号系统,意味着“3 + 4”这样的行会随着复杂性的增加而出现“3 4+”。另一项功能可以追溯到比特币脚本的根源——“类似Forth”。这个特性之所以相关,是因为这两种语言都是“基于堆栈的”。

栈是一种非常常见的数据结构,用Andreas Antonopolous的话说,它允许“栈顶”上的信息“推送”或“弹出”。前者解释了向堆栈中添加信息的过程,而后者描述了从堆栈中删除信息的过程。此外,信息弹出或推送的顺序遵循“后进先出”原则。

像“34+”这样的操作的行为如下:

将“3”按到堆栈上。

将“4”按到堆栈上。

“+”操作符获取这两个参数,将它们都从堆栈中弹出,将它们相加,然后将结果推回到堆栈中。(即。, pop, pop, add, push)

在本例中,结果操作导致堆栈上出现“7”,程序终止。

在比特币脚本语言中,该操作将遵循相同的步骤,但也将在每个变量之前包含前缀“OP”。接下来让我们看看这些新词汇是如何在真实的比特币交易中组合在一起的。

比特币脚本语言正在发挥作用

大多数操作都是签名交易。这包括支付、交换以及大多数涉及公钥和私钥的工作。让我们把发送者和他的同事Eddie Mitchell之间的交流分开来看。在这里,发送者将指定Mitchell(接收者)的公钥,Mitchell将通过指定使用相同公钥的签名来赎回发送的比特币。

接下来,此类交易的前两条指令是用于生成该签名的签名和公钥。该信息被标识为“《sig》”和“《pubKey》”,并被推送到堆栈中。Mitchell决定这些价值观,因为他是接受者。交易的前半部分通常称为“scriptSig”或“解脚本”。在操作的这一部分中,还引用了以前存在的未使用交易输出(UTXO)。

UTXO的加入确保了发送者确实拥有他希望发送给Mitchell的比特币的数量。比特币网络通过挖掘器和比特币全节点完成验证。在《掌握比特币》一书中,作者Andreas Antonopoulos这样解释:

每个输入都包含一个解锁脚本,并引用一个以前存在的UTXO。验证软件将复制解锁脚本,检索输入引用的UTXO,并从该UTXO复制锁定脚本。

交易的第二部分,即“锁定脚本”或“scriptPubkey”,然后由发送者执行。根据上面的图像,下一条指令“OP_DUP”从堆栈中弹出《pubKey》,复制它,然后将它返回给堆栈。

OP_DUP指令

这个顶值,即《pubKey》的副本,然后由“OP_HASH160”指令进行哈希值加密,并成为“《pubKeyHash》”。

pubKeyHash

比特币交易中使用的特定哈希函数称为SHA-256(安全哈希算法),它是更大的函数组SHA-2的一部分,这个函数组是1993年美国国家安全局(National Security Agency)开发的。SHA-2家族的其他成员包括SHA-224、SHA-256、SHA-384和SHA-512,每个数字表示它们生成的消息的位。

这些应用在信息安全领域非常广泛,其中最相关的是比特币和Haschash的工作量证明(Proof-of-Work, PoW)共识机制。SHA-256最显著的特性是它能够防止上面提到的DoS攻击。

回到发送者和他的同事之间的交易,用户仍然需要向堆栈中添加另一段数据。接下来的信息是作者在交易开始时指定的公钥。需要生成签名来赎回所请求的比特币。

此时,堆栈顶部有两个关键的哈希值数据:作者指定的公钥的哈希值和Mitchell使用的公钥的哈希值。从这里开始使用“OP_EQUALVERIFY”指令,确保发送者确实使用了正确的公钥。在早期经历了几次比特币交易失败后,作者再三检查了Mitchell的公钥。 当公钥匹配时,OP_EQUALVERIFY指令将消耗这些数据点。用户现在只剩下一个签名和一个公钥。最后一步是验证该事务的签名是否正确。

签名和公钥堆栈

比特币脚本语言在这里很有优势,因为它不需要从大量的库中提取来确认签名的有效性。所有这些都内置在语言中。

最后的“OP_CHECKSIG”指令,然后将剩余的两项从堆栈中弹出,如果《sig》匹配《pubKey》,则该操作将被呈现为有效。

比较、对比和增加复杂性

虽然以上的介绍很简短,但它应该提供了一个关于如何执行比特币交易的基本概念。在此基础上,开发人员和爱好者可以开始尝试更高级的操作,这将是稍后简要介绍的主题。

在此基础上的后续文章将深入探讨数字签名(ECDSA)、多签名操作、付费到脚本哈希值(P2SH)和TImelocks。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭