第十四章. 二层应用

  • berry
  • 发布于 2025-02-09 22:48
  • 阅读 18

综合介绍

让我们现在在我们对比特币主要系统(一层)的理解基础上,将其视为其他应用程序或二层的平台。在本章中,我们将探讨比特币作为应用平台提供的功能。我们将考虑应用程序构建的基本元素,这些元素构成了任何区块链应用程序的构建块。我们将探讨使用这些基本元素的几个重要应用,例如客户端验证、支付通道和路由支付通道(闪电网络)。

构建块(原语)

当比特币系统在长期运行并且正常操作时,它提供了一些保证,这些可以作为构建应用程序的基础。这些保证包括:

  1. 无双重支付

比特币的去中心化共识算法的最基本保证确保在同一有效的区块链中,任何未花费交易输出(UTXO)不会被两次花费。

  1. 不可变性

一旦交易记录在区块链中,并且随后的区块添加了足够的工作量,该交易的数据就变得几乎不可改变。不可变性是由能量支持的,因为重写区块链需要耗费能量来进行工作量证明(PoW)。所需的能量和因此不可变性的程度会随着在包含交易的区块之上进行的工作量的增加而增加。

  1. 中立性

去中心化的比特币网络传播有效的交易,无论这些交易的来源是什么。这意味着任何人都可以创建一个有效的交易,并相信他们可以随时传输该交易并使其包含在区块链中。

  1. 安全时间戳

共识规则拒绝任何时间戳过于未来的区块,并试图防止时间戳过于过去的区块。这确保了区块的时间戳在一定程度上是可信的。区块上的时间戳意味着所有包含交易的输入在未花费之前的参考。

  1. 授权

在去中心化网络中验证的数字签名提供了授权保证。包含对数字签名的要求的脚本在没有脚本中隐含的私钥持有者的授权的情况下无法执行。

  1. 可审计性

所有交易都是公开的,并且可以进行审计。所有交易和区块都可以追溯到创世区块,形成一个完整的链。

  1. 会计

在任何交易(除了coinbase交易)中,输入的价值等于输出的价值加上费用。在交易中不能创建或销毁比特币价值。输出不能超过输入。

  1. 不会过期

有效的交易不会过期。如果它今天有效,只要输入保持未花费且共识规则不变,它将在不久的将来仍然有效。

  1. 完整性

使用SIGHASH_ALL签名的比特币交易的输出或由其他SIGHASH类型签名的交易的部分不能修改,否则将使签名无效,从而使交易本身无效。

  1. 交易原子性

比特币交易是原子性的。它们要么有效和确认(已被挖掘),要么无效。部分交易不能被挖掘,并且没有交易的中间状态。在任何时间点,交易要么已被挖掘,要么未被挖掘。

  1. 不可分割的价值单位

交易输出是离散且不可分割的价值单位。它们可以完全花费或未花费。它们不能被分割或部分花费。

  1. 控制的法定人数

脚本中的多签名约束要求在多签名方案中预先定义的法定人数进行授权。该要求由共识规则执行。

  1. 时锁/老化

任何包含相对或绝对时锁的脚本子句只能在其年龄超过指定时间后执行。

  1. 复制

区块链的去中心化存储确保一旦交易被挖掘,在足够的确认之后,它将在网络中复制,并且变得耐用且对电源损失、数据损失等具有抵抗能力。

  1. 防伪保护

交易只能花费现有的、经过验证的输出。不能创建或伪造价值。

  1. 一致性

在没有矿工分区的情况下,记录在区块链中的区块会根据它们记录的深度以指数递减的可能性进行重组或不一致。一旦深度记录,改变所需的计算和能量使得改变实际上是不可行的。

  1. 记录外部状态

交易可以通过OP_RETURN或支付给合约来提交数据值,表示外部状态机中的状态转换。

  1. 可预测的发行

不到2100万比特币将以可预测的速度发行。

构建块的列表并不完整,每次引入新功能时都会添加更多的构建块。

基于构建块的应用程序

基于比特币提供的构建块,可以用来构建应用程序的信任平台元素。以下是一些现有应用程序及其使用的构建块的示例:

存在证明(数字公证)

不变性 + 时间戳 + 持久性。区块链上的交易可以承诺一个数值,证明某个数据在记录时存在(时间戳)。该承诺无法事后修改(不变性),并且证据将被永久存储(持久性)。

众筹(Lighthouse)

一致性 + 原子性 + 完整性。如果你签署了一个筹款交易的一个输入和输出(完整性),其他人可以为筹款做出贡献,但在达到目标(输出金额)之前无法支出(原子性)(一致性)。

支付通道

控制多重签名 + 时间锁定 + 无双花 + 不过期 + 抗审查 + 授权。一个多重签名的2-of-2(控制多重签名),带有时间锁定的(时间锁定)作为支付通道的“结算”交易可以在任何时间由任一方(授权)持有(不过期)和支出(抗审查)。然后,两个当事人可以创建超过(无双花)较短时间锁定的结算的承诺交易(时间锁定)。

彩色币

我们将讨论的第一个区块链应用是彩色币。

彩色代币是一组类似的技术,利用比特币交易记录除比特币以外的外部资产的创建、所有权和转移。这里所说的“外部资产”是指不直接存储在比特币区块链上的资产,与比特币本身相对,后者是区块链内在的资产。

彩色代币用于跟踪数字资产,以及由第三方持有并通过彩色代币关联的所有权证书进行交易的物理资产。数字资产的彩色代币可以代表无形资产,如股票证书、许可证、虚拟物品(游戏道具),或几乎任何形式的受许可知识产权(商标、版权等)。有形资产的彩色代币可以代表大宗商品(黄金、白银、石油)、土地所有权证书、汽车、船只、飞机等。

这个术语来源于将一个名义上的比特币金额(例如,一个 satoshi)“着色”或标记为代表比特币金额本身以外的东西。类比一下,想象一下在一张 1 美元纸币上盖章,写着“这是 ACME 公司的股票证书”或“这张纸币可以兑换 1 盎司银”并将这张 1 美元纸币作为另一种资产的所有权证书进行交易。彩色代币的第一个实现称为增强填充顺序彩色或 EPOBC,它将外部资产分配给 1 satoshi 输出。这样,它是一个真正的“彩色代币”,因为每个资产都被添加为单个 satoshi 的属性(颜色)。最新的彩色代币实现使用其他机制来附加元数据到交易中,与外部数据存储结合,将元数据关联到特定资产。截至本文写作时,主要使用的三种机制是单次使用密封、支付到合约和客户端验证

一次性密封

"Single-use seals" 源自物理安全领域。某人通过第三方寄送物品时,需要一种方式来检测是否被篡改,因此他们会使用一种特殊的机制来保护包裹,如果包裹被打开,这种机制就会被明显损坏。如果包裹到达时密封完好,发件人和收件人就可以放心包裹在运输过程中未被打开。

在彩硬币的背景下,一次性密封是指一种数据结构,只能与另一种数据结构关联一次。在比特币中,未花费的交易输出(UTXO)满足这种定义。在有效的区块链中,UTXO只能被花费一次,并且花费它们的过程将它们与花费交易中的数据关联起来。

这为现代彩色币的转移提供了部分基础。一个或多个彩色币被接收到一个UTXO中。当该UTXO被花费时,花费交易必须描述彩色币如何被使用。这就引出了“支付给合约”(Pay to Contract,P2C)。

“支付给合约”(Pay to Contract,P2C)

我们之前在第176页的“支付到合约(P2C)”中学习了有关P2C的知识,它成为比特币共识规则的Taproot升级的基础之一。简而言之,P2C允许支出者(Bob)和接收者(Alice)就某些数据达成一致,例如合约,然后调整Alice的公钥,使其承诺该合约。随时,Bob都可以揭示Alice的基础密钥和用于承诺合约的调整,证明她收到了资金。如果Alice花费了资金,这完全证明了她知道该合约,因为她只能通过知道调整(即合约)来花费收到的资金到P2C调整过的密钥。

P2C调整密钥的一个强大特性是,除了Alice和Bob之外的所有人看起来都像是其他公钥,除非他们选择透露用于调整密钥的合约。关于合约的任何信息都不会公开,甚至不会透露合约的存在。

P2C合约可以是任意长且详细的,条款可以用任何语言编写,可以引用参与者想要的任何内容,因为合约不会被全节点验证,只有包含承诺的公钥被发布到区块链。

在有色硬币的背景下,Bob可以通过花费相关的UTXO来打开含有他的有色硬币的一次性密封。在花费该UTXO的交易中,他可以承诺一个合约,指示下一个所有者(或所有者)必须遵守的条款,以便进一步花费硬币。新所有者不一定是Alice,即使Alice是Bob花费的UTXO的接收者,而Alice也已经根据合约条款调整了她的公钥。

因为全节点不会(也不能)验证合约是否正确执行,我们需要弄清楚谁负责验证。这就引出了客户端验证。

客户端验证

Bob拥有与一个UTXO相关联的彩色币。他以一种方式花费了该UTXO,这种方式承诺了一项合约,该合约指示了彩色币的下一个接收者(或接收者们)将如何证明他们对这些硬币的所有权以便进一步花费它们。

实际上,Bob的P2C合约可能简单地承诺了一个或多个唯一的标识符,用于决定何时再次花费这些彩色币的UTXO,作为单次使用密封。例如,Bob的合约可能表明,Alice接收到的UTXO现在控制他一半的彩色币,而他另一半的彩色币现在分配给了与Alice和Bob的交易无关的另一个UTXO。这在阻碍区块链监视方面提供了显著的隐私保护。

当Alice想要将她的彩色币花费给Dan时,她首先需要向Dan证明自己控制着这些彩色币。Alice可以通过向Dan揭示她的P2C基本公钥和Bob选择的P2C合约条款来实现这一点。Alice还向Dan揭示了Bob用作单次使用密封的UTXO以及Bob给她关于彩色币的前任所有者的任何信息。简而言之,Alice向Dan提供了有关每笔彩色币先前转移的完整历史记录,每个步骤都与比特币区块链(但不存储任何特殊数据在链上——只是常规公钥)相关联。这个历史记录很像我们称之为区块链的常规比特币交易的历史记录,但彩色历史对于区块链的其他用户完全不可见。

Dan使用他的软件进行此历史记录的验证,称为客户端验证。值得注意的是,Dan只需要接收和验证与他想要接收的彩色币相关的历史记录部分。他不需要了解其他人的彩色币发生了什么情况——例如,他永远不需要知道Bob的另一半硬币发生了什么,那些Bob没有转给Alice的硬币。这有助于增强彩色币协议的隐私性。

现在我们已经了解了单次使用密封、支付到合约和客户端验证,我们可以看一下截至目前正在使用它们的两个主要协议,即RGB和Taproot资产。

RGB

RGB协议的开发者开创了现代基于比特币的彩色币协议中使用的许多理念。RGB设计的主要要求之一是使协议与链下支付通道兼容(参见第318页的“支付通道和状态通道”),例如闪电网络(LN)中使用的通道。RGB协议的每一层都实现了这一点:

一次性密封 为了创建支付通道,Bob将他的彩色币分配给一个需要他和Alice双方签名才能花费的UTXO。他们对该UTXO的相互控制用作未来转移的一次性密封。

付款合约(P2C) Alice和Bob现在可以签署多个版本的P2C合约。底层支付通道的执行机制确保双方有动机只在链上发布最新版本的合约。

客户端验证 为了确保Alice和Bob都不需要相互信任,他们各自检查了所有彩色币的历史转移,直到其创建,以确保所有合约规则都被正确遵循。

RGB的开发人员已经描述了他们的协议的其他用途,例如创建可以定期更新以防止私钥泄露的身份令牌。

欲了解更多信息,请参阅RGB的文档

Taproot资产

Taproot 资产原名 Taro,是一种受 RGB 强烈影响的彩色币协议。与 RGB 相比,Taproot 资产使用的一种 P2C 合约形式与 Taproot 用于启用 MAST 功能的版本非常相似(请参阅“Merklized Alternative Script Trees (MAST)”第172页)。Taproot 资产相比 RGB 的优势在于,它与广泛使用的 Taproot 协议的相似性使得钱包和其他软件更容易实现。但其缺点是,在实现非资产功能,如身份令牌时,可能没有 RGB 协议灵活。

注意:Taproot 是比特币协议的一部分,而 Taproot 资产却不是,尽管名字相似。RGB 和 Taproot 资产都是建立在比特币协议之上的协议。比特币原生支持的唯一资产是比特币。

与 RGB 相比,Taproot 资产更加注重与 LN 的兼容性。在 LN 上转发非比特币资产的一个挑战是,有两种不同的方式来进行发送,每种方式都有一套不同的权衡:

本地转发

在发送方和接收方之间的每一跳都必须知道特定资产(彩色币类型)并具有足够的余额来支持转发付款。

转换转发

发送方旁边的跳点和接收方旁边的跳点必须知道特定资产并具有足够的余额来支持向前转发付款,但是其他每一跳只需要支持比特币支付的转发。

本地转发在概念上更简单,但基本上需要为每种资产建立一个独立的类似 Lightning 的网络。转换转发允许利用比特币 LN 的规模经济,但可能会受到一个称为自由美式看涨期权的问题的影响,即接收方可能根据最近的汇率变化选择性地接受或拒绝某些支付,以从其旁边的跳点中汲取资金。尽管没有已知的完美解决方案来解决自由美式看涨期权问题,但可能存在限制其危害的实际解决方案。

Taproot 资产和 RGB 理论上都可以支持本地和转换转发。Taproot 资产专门设计用于转换转发,而 RGB 则已经提出了实现两种方式的建议。

有关更多信息,请参阅 Taproot 资产的文档。此外,Taproot 资产的开发者正在研究一些 BIP,这些 BIP 可能在本书印刷后可用。

BRC-20交易指南

概述

Bitcoin Request for Comment 20(BRC-20)是受以太坊 ERC-20 协议启发的代币标准。它由一位名为 Domo 的匿名开发者创建,并通过比特币的 Taproot 升级实现,引入了 Ordinals 概念。BRC-20 代币不像 ERC-20 代币那样使用智能合约,而是允许用户在比特币区块链上存储脚本文件,将代币归属给个别的 satoshis(比特币的最小单位)。BRC-20 代币还可以嵌入 JSON 数据,便于部署、铸造和转移代币。

BRC-20之前

在引入 BRC-20 之前,任何添加到比特币交易中的额外数据通常是使用称为 OP_RETURN 的命令执行的。该命令允许在UTXO中包含最多 80 字节的元数据。其中一个例子是广播 Rick Astley 的《never gonna give you u 》歌词的交易。

然而,BRC-20 使用的 Ordinal 方法与 OP_RETURN 不同,它在交易本身中包含了元数据。2021 年 segwit 更新增加了见证数据存储容量,超出了 1MB 区块限制,而 taproot 脚本路径支出脚本提供了更多的空间来嵌入内容,允许最多 4MB 的数据。

BRC-20的诞生

Ordinals 使用逻辑排序系统称为 ordinal theory 将数据铭刻到个别的 satoshis 上,通过为每个 satoshi 分配一个唯一的编号来实现。这种方法允许在比特币区块链上存储不可变的信息,而无需2层解决方案。带有铭刻的 satoshis 被称为 ordinals。

发送BRC-20交易

发送 BRC-20 交易涉及两个阶段的过程。首先,必须提交一个启用了 Taproot 的输出(表示为“bc1p…”地址),该输出必须承诺包含铭刻内容的脚本。该内容序列化在一个信封中,夹在 OP_FALSE 和 OP_ENDIF 操作码之间。这些操作码表示的头部和尾部用于界定内容。这是必需的,因为每个 satoshi 的存储容量有限,而较大的内容(如图像)需要分割成多个部分,并铭刻在不同的 satoshis 上。

一个示例是创建一个“PEPE IS KING”文本的铭刻:

内容被分割并存储在两个 OP 代码(OP_FALSE 和 OP_ENDIF)之间的头部和尾部之间

假设你有一张想要存储在比特币区块链上的老虎图片。由于每个硬币的存储容量有限,我们需要将老虎切成较小的块,就像拼图一样。我们为每个块分配一个序列号,从 1 开始,一直到 N,其中 N 表示拼图的最后一块。

为了将老虎铭刻到区块链上,我们将每个拼图块连接到不同的比特币硬币上,按照序列号(Ordinal Theory)的顺序。换句话说,我们将第一个拼图块铭刻在一个硬币上,第二个拼图块铭刻在另一个硬币上,依此类推,直到我们将整个老虎铭刻在单独的硬币上。每个比特币硬币,也称为 UTXO(未花费的交易输出),是不可替代的,并代表老虎拼图的特定部分。

为了确保铭刻保持安全,我们发送了一笔特殊的交易来锁定老虎拼图块与特定硬币之间的连接。这笔交易防止了任何篡改或数据丢失。

这创造了不可替代性,并意味着你可以铭刻某些内容到一个 sat(例如 jpeg、文本、URL 等),并通过将特定的 sat 发送到他们的地址来将此内容转移到其他人那里。

然而,Taproot 和 MAST 升级的一个关键部分是,在它被花费之前,这个脚本不会在链上被揭示,因此你需要创建另一个交易来揭示信息。在此揭示交易中,由提交交易创建的输出被花费,从而在链上揭示了铭刻内容。

要发送和接收 BRC-20 代币,需要使用特殊的钱包,如 ordinal 钱包或 unisat 钱包。使用普通钱包将把代币视为常规硬币,可能导致铭刻数据的丢失。satoshi 的顺序至关重要,因为每个 satoshi 代表整体数据的特定部分。如果在交易过程中破坏了顺序,那么数据就无法重构。

假设你的 btc 钱包有多个 btc,共计 1 btc:

A 0.2、B 0.4、C 0.1、D 0.3

保持 ordinal 的准确顺序至关重要。为了说明这一点,让我们以狮子图像为例。想象一下,狮子的头发铭刻在硬币 A 上,而狮子的脸铭刻在硬币 B 上。当你发起交易时,处理该交易的矿工可能会优先处理最大的交易或将输出与你的输入相匹配。不幸的是,这可能导致数据丢失,因为如果硬币的顺序被破坏,你将无法重构出完整的狮子图像。

安全性

在安全方面,ordinal 的序列号和其数据插入到比特币交易的见证签名字段中。这些数据验证了合法的资金所有权,并防止了双重支付。铭刻的成本通常较低,因为网络费用取决于被铭刻的数据量,而不是像迷因币那样高。

看看这个 Bored Ape Yatch Club和它的见证数据

需要注意的是,当前的 BRC-20 标准尚未正式认可。因此,钱包提供商和其他基础设施服务需要就是否支持这一标准达成共识,或者等待潜在的新标准出现。

参考:

https://tara-annison.medium.com/a-comprehensive-explanation-of-ordinals-nfts-on-bitcoin-67b11868e74f

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论