[学习笔记] OP_RETURN

https://aaron67.cc/2018/12/31/bitcoin-transaction-null-data/

比特币交易的全球总帐本,是公开的,匿名的,不可篡改的。

账本记录了每笔交易的具体内容,以及他们被写入账本的确定的时间点(时间戳)。

如果能将现实世界的数据埋进交易,一同写到账本里,事情就变得有些微妙了,比特币系统的潜在应用将不只局限于支付,多了很多“可玩性”。

一些背景

可以把一份文件的电子指纹(哈希)放到账本中,配合时间戳,建立某个确定时间点后的文件存在性证明,以此声明版权。

to record a digital fingerprint of a file in such a way that anyone could establish proof-of-existence of that file on a specific date by reference to that transaction.

也可以直接把文件内容放到帐本中,比如合同和遗嘱。账本数据不可篡改,以此证明文件内容未经改动,是当时意愿的表达。

Coinbase 交易不需要输入,可以在腾出空间的解锁脚本中放入自定义的数据。

中本聪(Satoshi Nakamoto)在创世区块中留言,表达对现实金融系统的不满。

Imgur

有的人在帐本里放上了爱情宣言

Imgur

早些时候的人们脑洞大开,还尝试了各种其他粗暴的方法。P2PKH 的锁定脚本里有 20 字节的公钥哈希值,有的人甚至直接将数据放到这 20 字节里。这些“伪支付”产生的 UTXO,因为不存在一个真实的私钥与“伪公钥哈希”对应,所以它们永远无法被消费,会一直存在于 UTXO 集中,导致 UTXO 数据库的大小不断“膨胀”。

这篇文章详细记录了各种“伪支付”的脑洞,老刘 Edward 出品,良心之作,墙裂推荐你读一读。

利用比特币账本存储支付无关的数据,一直都充满争议。一方面这种使用模型充满前景,扩展了比特币系统的应用领域,但又因为没有一个统一的合适的方式,也带来了一些不好的影响。

从 Bitcoin Core 0.9.0 版本开始,通过OP_RETURN操作码最终实现了妥协。

OP_RETURN

如果某个交易输出,其锁定脚本以OP_RETURN操作码开头:

OP_RETURN [数据]

我们称这是一个数据记录输出(Data Recording Output),这笔交易也被称为 OP_RETURN 交易,或 Null Data 交易。

对“[数据]”部分的长度限制,“不同版本的比特币”也不尽相同。目前,Bitcoin(BTC)是 80 字节,而 Bitcoin Cash(BCH)是 220 字节。

Bitcoin SV(BSV)一般也限制到 220 字节,但根据 Shadders 的文章 The unfuckening of OP_RETURN,这个限制可以由矿池随意改动。

The current limit on OP_RETURN data is actually a soft limit that miners are free to change. It defaults to 223 bytes but miners can raise it.

_unwriter这笔交易的 OP_RETURN 里,带上了爱丽丝梦游仙境的内容。

OP_RETURN 输出随交易一同被写到账本中,但不会被当成 UTXO ,不会带来 UTXO 集的膨胀,所以其金额通常为 0。

任何非零金额的 OP_RETURN 输出,都不可消费,所以 OP_RETURN 还可以用来销毁(燃烧)比特币。

需要注意的是,一笔标准交易,规定最多只能有一个 OP_RETURN 输出。

Imgur

交易335724b8b1a399589dfc470e474a415dc04e20d7c72e03903a2edb889ee47fde(我隐藏了输入和第一个输出)为
Imgur
你可以用这个工具,看看十六进制的 UTF-8 编码e4bda0e5a5bdefbc8ce4b896e7958ce38082是什么。 😋

注意

Bitcoin SV 的创世纪升级恢复了OP_RETURN操作码的原始功能,更多内容请阅读 Genesis Upgrade Specification

The functionality of the OP_RETURN operation is being restored. OP_RETURN will cause termination of the script and the validity of the script is determined by the value of the top item on the stack.

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值