上一篇博客中,我们介绍了简单的P2PKH
类型输出。这一篇博客,我们将介绍OP_RETURN
类型的输出。
I. 什么是OP_RETURN类型的交易
OP_RETURN
操作码的引入主要是用来规范向比特币交易中写入额外数据的行为。在OP_RETURN
引入之前,用户采用了各种各样奇葩的方式向交易中写入额外的数据(非转账数据),这导致交易中的内容显得非常混乱。于是,比特币核心开发者们于2013年10月24日正式宣布引入OP_RETURN
操作码,用于在比特币上记录一些额外数据。
一笔交易的output
中既可以有普通的P2PKH
类型的,也可以有OP_RETURN
类型的。本篇博客在举例说明时的交易中就是两种类型的output
都有。 我们仍然首先介绍OP_RETURN
类型的output
的一般格式,然后以一个简单的transaction
为例,理解其中各个字段的含义。
II. OP_RETURN类型output的一般格式
A. transaction的总体描述
如上图所示,蓝色框中的是简单的
P2PKH
类型output
,黄色框中的是OP_RETURN
类型的output
。可以发现两类output
的格式是非常相近的。
B. scriptOPRETURN字段
III. 举例描述
本文以测试网testnet
中的一个交易1037930f242763567b7c163e0db4b8e679934aa6317386a455cb6984c81f022d
来举例。该交易的raw transaction
可以从本地同步的测试网节点中获得,也可以通过查询smartbit区块浏览器获得。信息如下所示:
01000000017df4eee40fef1cf0ac17bb9e723489a078511d8b402b1063d00a5f42dd5fa97b010000006a4730440220779202bedffce6d14c1d3918215b46de57aa3efb873455b0697ab9002a6226d3022039d684012fa8c92d8fe100cb23ec7c07a0129a58b55e82e507c78484b1ef378f0121027137d153419cbfe555b69a17c862978afa56cc2562568cfbae842c47636991a4ffffffff02400d0300000000001976a914e20cf24f62878ad5da120bd1efe6bcd6b1e13ea388ac0000000000000000126a10486f772069732065766572796f6e652100000000
对该信息按照上图中字段进行划分,结果如下所示:
其中data
的内容486f772069732065766572796f6e6521
转换成ASCII
码为“How is everyone!”,可以借助于在线工具rapidtables完成转换。