阅读 112

BCH升级在即,什么是OP_CHECKDATASIG和Canonical Transaction Ordering(一)

作者:行走的翻译C 如题,小编今天主要解释下BCH11月份升级会新添的两个技术特征:OP_CHECKDATASIG和Canonical Transaction Ordering。今天先讲一下OP_CHECKDATASIG。

OP_CHECKDATASIG是BCH11月份升级拟增加的操作码。我知道大家一听到技术术语就头大,这里我尽量用最简单的语言解释一下。

众所周知,数字签名是比特币至关重要的一个课题。在创建一笔交易时,需要提供一份由你的私钥生成的数字签名。这个签名就是你授权了这笔交易的证明。或者用加密学用语来说,你签名了一则信息(signed a message)。这则信息就是你签名签了什么。

(注:签名相当于现实生活中,我们给一张收据签个字。message指的就是这张收据,你在这张收据上签了字。)

在一笔正常的比特币交易中,你签名的这则信息包括构成交易的输入和输出两部分。或者也可以简单理解成比特币的“发送”和“接收”地址。

创建一笔标准交易的比特币脚本使用的操作码叫做OP_CHECKSIG。其作用就是要确保比特币在花费前签名是正确的,以防止他人窃取你的币(前提是他们无法生成一个有效签名)

操作码OP_CHECKDATASIG的功能也差不多就这么一回事。不同的是信息(message)本身。OP_CHECKDATASIG不是签名交易输入或输出,而是提供一个签名来授权其他你想要包括在交易中的外部数据(技术术语即“入栈”push on the stack)

有一种常见的误解认为使用这个操作码脚本的数据,可以被外部调用。事实上并不可以。被签名的外部数据(信息)必须是使用这个操作码的交易的一部分;也必须包括在使用这个操作码的每一笔交易之中。

这操作码有啥用呢?

假设现在有一个去中心化的竞技博彩应用,有一家公司叫做Fyookball Sports Oracle (FSO)。Alice跟Bob用比特币脚本创建了一个点对点的赌注,由任何一方解锁比特币。两人的赌注如下:

Alice签名 + FSO签名 赌 “费城赢" 或者 Bob签名+ FSO签名 赌 "纽约赢” (费城赢,纽约赢就是通过OP_CHECKDATASIG这个操作码从外部获取的信息)

这就是新增的这个操作码能干的事情。这个操作码可以丰富整个BCH生态,实现预言机相关的特定使用案例。

文章分类
阅读