NOTE:实用的原生比特币智能合约协议

币安下载

Binance币安交易所

全球最大加密货币交易所,注册100%可领取100USDT奖励!通过本站注册不仅可以享受手续费折扣同时有机会获得币安周边

点击注册 更多线路

更多交易所入口

一站式注册各大交易所、点击进入加密世界、永不失联,币安Binance/欧易OKX/GATE.IO芝麻开门/Bitget/抹茶MEXC/火币Huobi

点击进入 永不失联

NOTE 协议标志着比特币历史上的一项重大进展。

NOTE 协议是基于比特币 UTXO 模型的数字资产发行协议,区别于最近出现的其他协议,它真正构建在比特币的 UTXO 模型之上。

NOTE 协议采用与 TypeScript 兼容的智能合约语言,其约编译结果为比特币原生操作码,图灵完备,可包括 Oracle 和零知识证明在内的强大功能集合。

一、基本概括

与 Ordinals 和 Atomicals 等协议不同,NOTE 虽然也通过索引器来统计用户资产,但其全部基于密码学,由比特币矿工确保资产所有权,避免了因索引器标记而发生的误操作问题。此外,NOTE 的交易成本极低,无需像 Ordinals 和 Atomicals 那样发送两笔交易。更为重要的是,NOTE 协议支持智能合约,比如实现 Bitwork 挖矿和随时间递减的挖矿量。它使用的是实际的 Token 数值,而非基于 Satoshi 编号的素数协议也非依赖 UTXO 余额的染色币方案。

相较于许多“链间桥接协议”,NOTE 发行的是比特币原生资产,不涉及使用 BTC 作为抵押在其他链上发行和交易资产的操作。

NOTE 协议支持跨链,它可以将比特币上的原生资产发送给其他 UTXO 链,以及接收来自其他 UTXO 链的资产。这一切都基于密码学和比特币区块链共识。

NOTE 协议,完全来自比特币开发社区开发者的开发。

二、技术解读

UTXO 模型的优势正在重新回到大众视野。比特币作为数字货币的定海神针,需要可用而且好用的技术方案,NOTE 协议应运而生。

比特币 UTXO 模型相比较 EVM 模型有巨大的效率和并发优势。但在 UTXO 模型的比特币上发行原生资产,涉及到多个难以解决的问题,主要课题是资产如何标识。另外就是紧密的交易结构中资产如何保存。

一个 UTXO 形式的交易如下图

NOTE 协议采取了一种创新的方法来处理比特币交易和资产的管理,这种方法与其他协议方案有显著的不同。在传统的比特币交易中,交易的输入部分解锁了之前交易的输出(即旧的 UTXO),并生成新的交易输出(即新的 UTXO)。在其他协议方案中,资产被绑定在新生成的 UTXO 上,导致用户的资产分散在不同的 UTXO 中。这种方式需要索引器和钱包维护一个详尽的 UTXO 列表来确保资产绑定关系的准确性,同时必须非常谨慎地管理带有资产标记的 UTXO,以避免误花费,并且必须一次性花费整个 UTXO。

相比之下,NOTE 协议采用了一种将交易输出视为用户账号的方法,其中用户的账号由其交易输出脚本哈希表示,如同示例中的 TX 1 交易输出所示。这种账号是完全隐私的,其绑定的资产类型和数量源自于 TX 1 的解锁输入。当在 TX 2 中花费这些资产时,经过比特币矿工的确认解锁后,会生成新的交易输出。在这个过程中,NOTE 协议的索引器仅需记录在解锁时公开的交易细节,并且能够在区块确认后提供默克尔证明来验证交易的有效性。

这种设计不仅简化了资产的追踪和管理,减少了用户资产分割的问题,还增加了交易的隐私性。通过将交易输出用作账号,并依赖于比特币网络的矿工验证和区块链共识机制,NOTE 协议为数字资产的管理提供了一种更加安全、高效和隐私保护的方法。

一个典型的 Taproot P 2 TR 格式的交易如下所示

NOTE 协议采用的技术策略与 Ordinals 和 Atomicals 协议有显著的不同之处。Ordinals 和 Atomicals 利用 P 2 TR(Taproot)的赎回脚本,通过添加 OP_FALSE OP_IF 操作码构造了一个不可访问的数据区域,以此来嵌入额外数据。而 NOTE 协议则允许通过操作码直接操作解锁数据,提高了数据的可用性。在 NOTE 协议中,示例脚本能够直接从堆栈中弹出数据,更复杂的脚本则能实现如 hashlock 等链上的检查功能。

此外,NOTE 协议不限于使用 P 2 TR,它还可以通过 P 2 SH(Pay to Script Hash)、P 2 WSH(Pay to Witness Script Hash)和非标准脚本来实现,这增加了协议的灵活性和跨链资产交易的能力。NOTE 协议使用 msgpack 数据编码而不是 json 编码,这种方式更为紧凑,有助于减少每笔交易的数据量,从而降低用户的交易成本。

在 NOTE 协议中,由特定的赎回脚本构建的地址充当用户账户。这些账户地址在被正确解锁时才能被矿工确认。解锁脚本中包含的资产交易数据在解锁时被索引器识别,并进行链下智能合约处理。只有在链下合约验证通过的资产交易才会被索引器记录,这一机制有效防止了比特币钱包误花费 NOTE 的 UTXO,并且使得 UTXO 中的微量比特币(例如 546 Satoshi)可以被回收。

NOTE 协议的设计考虑了比特币网络自 2017 年以来关于隐私和交易空间优化的多次升级。与此同时,它也借鉴了 BSV(Bitcoin SV)所代表的大区块策略,深入挖掘比特币脚本的潜能。NOTE 协议的智能合约解决方案是基于 sCrypt 团队开发的比特币智能合约语言,该语言支持链下合约验证。由于比特币脚本语言是图灵完备的且可以确保在给定的脚本长度内执行完成,因此索引器不会因智能合约设计不当而陷入死循环,保证了系统的稳定性和效率。

演示用的 N 20 资产发行智能合约项目已经被发布在 GitHub 上。

https://github.com/NoteProtocol/scryptdemo

它演示了 NOTE 协议下的 Pow 合约通过模拟比特币挖矿的减半机制和 Atomicals 的 Bitwork 难度挖矿,展示了在比特币网络上实现复杂逻辑的能力。通过生成 1 KB 大小的比特币脚本,该合约允许索引器调用并校验交易是否符合协议规定,这一过程体现了智能合约在比特币网络中应用的可行性和灵活性。

更复杂的基于 Rabin 签名算法的 Oracle 和基于零知识证明的复杂合约则提供了高级别的应用场景。这些技术在智能合约的实现中,特别是在需要验证特定条件或执行特定逻辑时,发挥着至关重要的作用。

通过利用这些智能合约,比特币上的资产发行可以被用于实现真实世界的应用场景,例如 AI 解决问题的悬赏金场景。在这类场景中,只要有人能提交一个可验证的计算结果,就能获得奖赏。这不仅显示了比特币智能合约的实用性,还展示了它们如何促进复杂应用的实现,这些应用超越了传统的金融交易和资产管理。

N 20 Token 资产发行功能是 NOTE 协议中众多功能中的一部分。NOTE 协议还包括 DID(去中心化身份)以及加密数据和所有权标识,并且随着 N 721 NFT 和 Alias(比特币别名系统)的制定和验证进程,NOTE 协议的能力和应用范围预计将进一步扩展。

为了让用户能够体验 N 20 Token 的铸造(mint)和转移(transfer),一个命令行钱包已经发布在 GitHub 上,而开源的索引器也计划将被发布。

NOTE 协议背后的开源代码贡献者们强调,所有内容仅用于技术探讨,任何资产的发行和炒作都与代码贡献者无关。NOTE 仅仅是一个开源的技术项目。

随着 NOTE 协议的进一步开发和完善,可以预见将有更多基于此协议的真实应用诞生,这些应用将利用 NOTE 协议的独特功能和优势,在比特币以及更广泛的区块链领域创造新的价值和可能性。开源社区的持续贡献和协作精神是推动这一进程不可或缺的力量。

三、总结

NOTE 协议代表了比特币网络向智能合约功能扩展的一个重要进展。通过在比特币这个最为原始和广泛使用的加密货币平台上引入智能合约,NOTE 协议不仅增强了比特币的功能性,还为开发者和用户提供了前所未有的创新可能性。以下是 NOTE 协议的几个关键特点:

1. 智能合约支持:NOTE 协议通过智能合约扩展了比特币的应用范围,允许在比特币网络上创建和执行更复杂的逻辑和交易类型。这包括但不限于资产发行、去中心化金融(DeFi)应用、以及其他需要条件执行的场景。

2. 基于 UTXO 的模型:与基于账户的智能合约平台不同,NOTE 协议建立在比特币的 UTXO 模型之上,借力了比特币的安全性和高效率。

3. 跨链功能:NOTE 协议支持跨链交易,使数字资产能够在不同的 UTXO 链之间移动,进一步提高了其灵活性和应用范围。

4. 真实世界的应用:NOTE 协议支持先进的密码学技术,如零知识证明和 Rabin 签名算法,可以应用在更复杂的真实世界应用场景中。

5. 低成本和高效率:通过优化数据存储和使用 msgpack 编码,NOTE 协议旨在减少交易成本和提高网络效率。

6. 开源和社区驱动:NOTE 协议强调开源精神和社区的贡献,促进了技术的透明性和可信赖性,同时也鼓励了更广泛的开发和应用创新。

随着 NOTE 协议的发展和应用的深入,我们可以期待在比特币生态中出现更多创新的应用和服务,这些都将在保持比特币核心价值观的同时,为用户提供更丰富的功能和更好的体验。

NOTE 协议

网站: https://noteprotocol.org

X: https://twitter.com/NoteProtocol

GitHub: https://github.com/NoteProtocol