美文网首页
【Bitcoin】OP_RETURN 脚本命令

【Bitcoin】OP_RETURN 脚本命令

作者: 周宇盛 | 来源:发表于2019-05-16 13:48 被阅读0次

    存数据到 Bitcoin

    由于 Bitcoin 的极高不可篡改性,有些人将其用于存储数据。
    比如要证明文件的存在,可以生成它的 hash,然后将这个 hash 用于创建 Bitcoin P2PKH 交易输出,也就是替代下面的<pubKeyHash>。

    scriptPubKey: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
    scriptSig: <sig> <pubKey>
    

    这样,这个 hash 会永久存储于 Bitcoin 的链上。

    UTXO 集合的膨胀

    但是这会带来一些问题,因为没人可以根据这个 hash 推断出对应的私钥,所以没人可以消费这个 UTXO,所以它会永远的保留在 UTXO 集合中,用的人多了,会加速 UTXO 集合的膨胀。

    Bitcoin Core 除了保存区块链的数据,还另外将 UTXO 集合存储在 ~/.bitcoin/chainstate/ 目录[1]。Bitcoin Core 运行时,会将 UTXO 集合载入内存,以加速交易的验证[2]。UTXO 集合太大,会加重内存的负担。(也可以用-dbcache参数设置内存占用的上限[3])

    UTXO 集合的体积 https://statoshi.info/dashboard/db/unspent-transaction-output-set

    OP_RETURN

    为了妥协,Bitcoin 加入了 OP_RETURN 脚本命令,它后面可以紧跟 80 bytes 的数据,专门用于存储和交易逻辑无关的数据。[4]这个交易输出会被当做假的 UTXO,不会加入 UTXO 集合,从而避免上述的问题。

    scriptPubKey: OP_RETURN <data>
    

    这个命令现在被广泛使用,比如用于发币的 Omnilayer 非常依赖这个命令。USDT 早期使用 Omnilayer 发币,后来改用 Ethereum ERC20。

    每个月 OP_RETURN 命令被使用的次数:

    https://opreturn.org/op-return-per-month/
    1. https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_2):_Data_Storage

    2. https://learnmeabitcoin.com/glossary/utxo

    3. https://bitcoin.stackexchange.com/questions/60608/how-much-memoryram-is-used-by-the-mem-pool-and-utxo-pool

    4. Mastering Bitcoin

    相关文章

      网友评论

          本文标题:【Bitcoin】OP_RETURN 脚本命令

          本文链接:https://www.haomeiwen.com/subject/aofiaqtx.html