风险提示:理性看待区块链,提高风险意识!

比特币的脚本是做什么的?

2个回答

天豹,债权置3星评价

2020-11-03 15:03:21

比特币的脚本是做什么的?

其实我们可以这样看待比特币的交易:『交易的发起者悬赏若干比特币,在网络上贴出了一到数学题,谁解出了这道数学题,悬赏就归谁了』。 顺着这个思路,Alice对Bob的转账可以理解为『Alice把一道只有Bob才能解开的数学题发到网络上,Bob解出题并拿走了悬赏』。那么,每个交易数据中都会出现的『脚本』就是题和解,『脚本语言』就是用来描述题和解的工具。

『输入脚本』和『输出脚本』

在这里我们先讨论单输入单输出的比特币交易,因为这样描述起来更方便且不影响对『脚本』的理解。

这是一个单输入单输出交易,看下我们要关注的数据:

前导输入的Hash:

输入脚本 scriptSig:

转账值:

0.05010000 btc

输出脚本 scriptPubKey:

假设Alice是转账发送者,Bob是接受者。那么『输入交易』表明了Alice要动用的比特币的来源,『输出交易』表明了Alice要转账的数额和转账对象——Bob。那么,你可能要问,数据中的『输入脚本』和『输出脚本』是不是就是题和解?对了一半!

听风,闻雨,6星评价

0000-00-00 00:00:00

比特币脚本是一个功能比较少的编程语言,满足比特币系统的正常运行需求,同时最大化保证了安全性。

比特币脚本是图令不完备的。所谓图灵不完备意思就是缺少当代语言所必须的一些功能,例如循环。但是,功能的有限也最大化的减小了系统的受攻击面积,例如,可以防止有人利用无线循环来给系统安一个炸弹。

比特币脚本是一种基于栈的语言。可以把栈想象成堆叠到一起的几本书,push 操作相当于添加一本书,pop 操作相当于抽出一本书。每次执行的都是最顶部的操作,每个操作都对应一个操作码,简称 opcode 。

总之,比特币脚本是一个图灵不完备的基于栈的语言。