比特币脚本及交易分析-智能合约雏形

当前位置:首页 > 币圈百科 > 比特币脚本及交易分析-智能合约雏形

比特币脚本及交易分析-智能合约雏形

2022-11-26币圈百科867

大家都转了账户。每笔交易如下:张三账户扣200元,李四账户加200元。

在比特币区块链,交易并不那么简单。交易其实是通过脚本来完成的,以承载更多的功能,这也是比特币被称为“可编程货币”的原因。

本文将分析事务是如何可编程的。

未支出交易输出(UTXO)

首先介绍一个概念:未支出交易输出3354 UTXO(未支出交易输出)

实际上,比特币交易都是基于UTXO的,即交易的输入是之前的交易。

挖矿奖励属于一种特殊交易(称为coinbase交易),无需输入即可输入。

UTXO是事务的基本单位,不能拆分。

比特币中没有余额的概念,只有分散在区块链的UTXO

随着金钱从一个地址转移到另一个地址而形成所有权链,就像这样:

比特币脚本

比特币交易是为了提供解锁UTXO的脚本(用私钥匹配锁定脚本)(通常称为解锁脚本:签名脚本

交易的输出指向一个脚本(称为锁定脚本:PubKey脚本其中表达了:谁的签名(签名是常用形式,不一定是签名)能匹配这个输出地址,钱就付给谁。

每个比特币节点都会通过同时执行这个解锁和锁定脚本(不是当前的锁定脚本,而是上次交易的锁定脚本)来验证一个交易。如果脚本的组合结果为真,则为有效交易。

当解锁脚本与锁定脚本的设定条件匹配时,只有组合出有效的脚本,结果才会为真

。比如最常见的一类比特币交易脚本(payed to Public Key Hash:P2PKH(Pay-to-Public-Key-Hash))是这样组合的:

常见交易脚本

比特币脚本语言包含基本算术计算、基本逻辑(如if…then)、错误报告、返回结果和一些加密指令,不支持循环。更多语言细节请参考http://www.8btc.com/bitcoin _脚本

脚本语言通过从左到右处理每一项来执行脚本。

下面两张图说明了以下几种常见类型的比特币交易脚本的验证执行过程:

上图是解锁脚本运行过程(主要是堆叠)

交易分析

蓑衣网小编2022

实际上,比特币的交易被设计成包含多个输入和输出,

事务结构

我们来看看完整的事务结构。

蓑衣网小编2022

交易的锁定时间定义了可以加入区块链的最早交易时间。在大多数事务中,它被设置为0表示立即执行。

如果锁定时间不为0且小于5亿,则视为块高,意味着在此指定块高之前的交易将不计入区块链。

如果锁时间大于5亿,则视为Unix epoch时间戳(自1970年1月1日起的秒数),在此指定时间之前,该事务将不包括在区块链中。

交易的数据结构没有交易费字段。交易费用用所有投入之和与所有产出之差来表示,即:

蓑衣网小编2022交易费用=sum(所有投入)-sum(所有产出)

交易投入结构

现在我们来看一笔交易的投入结构:

我们结合整个交易的结构来看投入结构, 而且看起来是这样的:

事务输出结构

事务的具体输出结构是:

我们结合整个事务的结构来看输出结构,看起来是这样的:

事务哈希计算

那么事务哈希是怎么计算的呢?

事务结构的每个字段都被序列化为字节数组

。字节数组被拼接成支付字符串

。交易散列

是通过两次计算支付字符串获得的。详细内容请参考如何计算交易哈希?以及如何创建Hash?

你现在对要屏蔽的完整交易有更清晰的认识吗?

智能合约原型-应用场景描述

由于交易是通过脚本实现的,脚本语言可以表达无数的条件变体。

目前比特币常用的脚本有两种,一种是常见的P2PKH(支付到公钥哈希),另一种是P2SH(支付到脚本哈希支付脚本哈希)。

在P2SH支付中,锁脚本被加密哈希替代。当交易试图支付UTXO时,为了解锁支付脚本,它必须包含与哈希匹配的脚本。

这里就不展开技术细节了。下面是一些应用场景,让大家有更直观的认识。

多重签名应用

在合伙企业中,只要半数以上股东同意签名,就可以进行支付,可以为公司治理提供管理和控制便利,有效防止被盗、被挪用和丢失。

用于担保和纠纷调解。一个买家想和一个他不认识或不信任的人交易。一般来说,买方不希望任何第三方参与正常交易。那么交易双方都可以发起支付,但是如果交易出现问题,第三人可以根据裁决,使用自己的签名和裁决认可的一方的联名签名对交易进行兑现。

担保合同

担保合同是公共产品建造时的一种筹资方式。公共产品意味着一旦建成,任何人都可以免费享受好处。标准的例子是灯塔。大家都同意应该建一个,但是灯塔对于个人航海家来说太贵了,对于其他航海家来说也会方便。

一个解决办法是向所有人筹集资金。只有筹到的钱超过了需要的建设成本,大家才会真正掏钱。如果筹到的钱不够,就没人要出钱了。

依靠预言

如果老人想让孙子继承,继承时间在他死后或者孙子年满18周岁时(也是有锁定时间的交易)。无论先满足哪一个条件,他的孙子都可以得到遗产。

因为比特币节点可以通过预言判断死亡情况,预言指的是有密钥对的服务器。当用户定义的表达式被证明为真时,可以按要求对交易进行签名。

我相信随着区块链的普及,会对未来的交易模式和业务结构产生巨大的影响。但由于比特币的脚本语言并没有被图灵完成,交易模式仍然有限,以太坊的出现解决了这个问题。以后我们会有很多关于以太坊的文章。

参考资料补充阅读

精通比特币

廖雪峰深入了解比特币交易的剧本

比特币合约

来源

:

比特币脚本及交易分析-智能合约雏形 | 分享给朋友: