比特币的 UTXO 模型
- 原文链接:https://mirror.xyz/0xaFaBa30769374EA0F971300dE79c62Bf94B464d5/Yetu-6pZkbQCOpsBxswn_7dGUZDxoBU8NrOQIZScwpg
- 译者:AI翻译官,校对:翻译小组
- 本文永久链接:learnblockchain.cn/article…
我们关注数据在比特币数据库中的存储方式以及更新此数据库的交易结构。
图1 展示了一个比特币交易。它可以有一个或多个输入,以及一个或多个输出:
UTXO模型代表未花费交易输出,数据库只是未花费交易输出的列表。
图2展示了比特币数据库的列和行:
在本文撰写时(2022年 3 月),大约有 ~7900万行数据库记录,每行都与一组币相关联。
图3展示了一个比特币交易如何处理以检查其有效性并更新数据库的示例。关键点:
比特币交易可以被视为一个脚本环境。没有有状态的账户系统或共享状态。交易只是消耗脚本并生成新脚本。用户可能有多个他们控制的脚本,脚本与数据库中的币相关联。
UTXO模型有一些特点:
图4: “支付到公钥哈希”(P2PKH)交易的执行记录。
比特币脚本是一种类似Forth的脚本语言。随着脚本的进展,构建并执行一个小的内存栈。栈上的最终项应为true,以使最终执行被认为是有效的。
图4提供了“支付到公钥哈希”脚本的示例。它要求公钥的所有者提供数字签名以领取他们的币。完整的脚本有两个部分:
输入脚本在未花费交易输出中存储的脚本之前运行。在示例脚本中,输入用签名和公钥填充栈。输出脚本检查栈中的公钥是否与所有者的公钥匹配。如果匹配,它将验证所有者的签名。
这引发了一些我们留作作业的问题:
希望你喜欢对UTXO模型的基本介绍。我们不会在课程中尝试实现比特币脚本,因为没有真正好的工具来实现它。
有一个有趣的笑话是开发者在比特币脚本中只有基本工具:
没有循环,脚本语言非常受限。社区的理念是将计算移到链下。但即使有这些基本工具,你仍然可以实现像闪电网络这样的东西。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
作者暂未设置收款二维码