当前位置: 首页 > news >正文

Bitcoin的Covenants——合同化管理UTXO的花费方式

1. 引言

最近几个月(2023年4月前后),随着Ordinal、Tarproot、染色币等技术被众多开发者深入挖掘,比特币生态诞生出一系列的协议产品,最出名的就是BRC20,各种搞NFT和同质化代币。

币圈的技术栈,总体分为2种:

  • 1)如何发币:BRCxxx系列都是如何法币。
  • 2)如何使用币:
    • Ordinal是如何使用币(比特币),将UTXO里的每一聪给定义成一个新的东西。
    • 目前最成功的是闪电网路。闪电网络拓展了比特币的使用方法,做到了快速、低成本的支付。

以RSK为代表侧链技术,和以RGB为代表的客户端验证技术,属于是即是发币技术又是使用币技术。

比特币核心开发者最关心的其实是使用币技术栈,对发币技术体系基本上是持负面态度。

上述提到的技术体系里,闪电网络是唯一一个得到了比特币核心开发者的青睐。

在技术实现上,所有的协议和产品变更要么采用软分叉的方式,要不就只能在共识层之上做改变。

而涉及到软分叉的变更,就是比特币核心开发者额外关注的。

最典型的几次是隔离见证(segwit),Taproot、Schnorr签名的软分叉。这些软分叉都是典型的如何使用币的技术改进。

比特币的所有权基本上是由私钥决定的,即只有私钥才能花费UTXO,但这就限定了比特币的应用方式。像以太坊的erc20那样,因为所有权是归合约代码管,代码的可编程性好,应用就可以五花八门。

比特币也有大量的开发是朝着更多的应用场景去设计的,最典型的也是最成熟的是P2SH。P2SH让UTXO的解锁脚本可以设计成是任何信息的哈希,这极大的拓展了比特币的应用方向。

MAST(Merkleized Abstract Syntax Trees)是近一年多比特币生态上研究的很多的一个方向。MAST是将复杂的比特币脚本编码成一个哈希二叉树,这可以实现特定的UTXO在可以设定为部分脚本赎回。比如一个UTXO可以设定成三个赎回脚本,其中任何一个脚本都可以按特定的条件来设计。

Covenants(契约)这个技术栈就是为了推动比特币合同化管理花费野心最大的(目前看到的野心最大)。可以简单地理解为将比特币锁定进一个金库,开金库的方式可以设计成非常复杂。

比特币脚本用于定义花费某个 UTXO 所需满足的条件。当你创建一个比特币地址来接收资金时,该地址实际上是一个比特币脚本(变换后)的哈希,定义了解锁和花费资金的必要条件。

截至发稿时,比特币脚本 能定义比特币交易中的输入(被花费的资金)必需满足的条件。没有一种方法能够限制比特币交易输出(被花费的资金的去向)的任何属性。

比特币契约(Covenants)是一种能够给未来的比特币交易设置条件的机制。

截至发稿时,人们关于比特币契约(Covenants)的讨论已经持续了 9 年半以上!

Covenant类似于合约:

  • 用于限制资产如何被使用:如禁止扩张或改变结构外部颜色

比特币契约是对比特币代码的拟议补充,允许人们保留对不再属于他们的比特币的一些控制权。换句话说,可能会对转移给另一个人的比特币施加限制。

无论是有意还是无意,如果将任何数量的比特币发送到钱包,其所有权就会在那里到期。没有办法收回它,也没有办法对比特币的使用方式或用途施加限制。

由于拟议的比特币契约,可将比特币以代码的形式转移给具有某些明确限制的人。可对比特币的使用施加限制,如要求仅在指定期限后或在发送回你的钱包后才使用它。

此外,可允许或限制特定的钱包。甚至可利用契约作为托管方,在特定数量的 BTC 可供使用之前持有一段时间。

2. 比特币契约的优点

比特币网络一直在应对固有的挑战,特别是“比特币不能三角”,它表明去中心化网络只能在三个方面中的两个方面表现出色:

  • 去中心化
  • 安全性
  • 可扩展性

契约提供了有前途的解决方案来增强安全性和可扩展性。

  • 增强的安全性:契约使用户能够更好地控制资产转移,减少盗窃的漏洞。它们有助于创建安全的vault(保险库),增强最终用户的保护。
  • 预签名交易:比特币契约可以实现预签名交易。这可阻止黑客,因为他们需要钱包的私钥才能完全控制资产。
  • 3)减少双花:契约在防止双花攻击方面发挥着关键作用,有助于网络安全。
  • 4)支持 Bitcoin-NG:契约符合 Bitcoin-NG 的原则,Bitcoin-NG 是一种旨在增强可扩展性的拜占庭容错区块链协议。Bitcoin-NG 的倡导者预计它将作为现有比特币网络之上的一个层进行无缝集成,从而在保持安全性的同时促进可扩展性。

3. 比特币契约的缺点

尽管比特币契约提出了显着的改进,但潜在的陷阱和社区保留仍然存在。以下是主要缺点:

  • 1)社区怀疑论:比特币社区的知名人士,包括 Adam Back、Jimmy Song 和 Andreas Antonopoulos,对 BIP119(契约提案)提出了严重担忧。该提案面临社区内部的阻力。
  • 2)递归契约:一种担忧是递归契约的可能性,其中一笔交易的限制导致后续约束,可能导致无限的契约链,从而导致网络拥塞。
  • 3)审查制度和中心化风险:契约可能会带来审查制度、中心化控制和资产没收风险。它们可能会迫使交易平台专门使用指定的钱包进行交易,这可能会侵犯用户的自由。
  • 4)隐私和可替代性:契约的引入可能会改变比特币的可替代性。目前,所有比特币都是相同的,但契约可能会区分各个比特币单位,从而影响加密货币的核心可替代性原则,并可能影响用户隐私。

虽然比特币契约提供了增强的安全性和实用性,但它们的采用需要仔细考虑并减轻比特币社区内的这些担忧。

4. 比特币契约工作原理

详情见:

  • Bitcoin Covenants Wiki

要了解比特币契约的运作方式,必须了解保护典型比特币交易的机制。

典型的比特币交易依赖于称为“锁定脚本”的保护脚本。该脚本包含处理交易必须满足的先决条件。

这些条件包含各种要素,包括:

  • 要求签名证明相应私钥和时间锁的所有权。
    • 时间锁类似于契约,规定在经过指定数量的区块之前不能使用该coins。

与标准比特币脚本不同,标准比特币脚本需要特定条件来解锁特定功能(如使用私钥签署交易),而契约通过引入额外的先决条件来扩展此过程。

契约引入的一个值得注意的前提条件是限制代币的功能。比特币契约使开发人员能够集成和定义比特币交易的新先决条件,有效增强交易安全性和实用性。

5. 结论

比特币契约尚未成为现实,因为任何比特币改进提案(BIP)都必须通过民主程序来实施。双方都有游说团体热衷于支持像这样有争议的提案。

契约的支持者相信,通过实施更多的安全性,将能够禁止比特币生态系统中的所有欺诈和盗窃行为,并提高比特币的可扩展性。随着其可替代性的丧失,一些人反对它,并认为这将破坏比特币作为未来people’s currency的主要地位。

由于没有实施比特币改进提案(BIP)的时间表,契约无疑将成为未来几个月和几年内更多讨论和辩论的主题,以及发现更多缺点或用例的主题。

参考资料

[1] 比特币核心开发者重视什么方向?——我觉得比特币生态最值得追求的技术栈和应用方向是Covenants
[2] 为什么比特币需要限制条款
[3] Why bitcoin needs covenants
[4] Bitcoin Optech: Convenants
[5] 2023年9月博客 What are Bitcoin Covenants? How Do They Work?
[6] Bitcoin Covenants Wiki
[7] 2024年1月14日视频 Covenant Use Cases & TXHASH with Steven Roose (SLP541)

相关文章:

  • MOJO语言的诞生
  • 【DFS】200.岛屿数量
  • 常用的git diff命令用法汇总和示例
  • 如何绘制出图像的色素分布直方图
  • 【python 的各种模块】(9) 在python使用PIL( 即pillow模块 ) 修改图片
  • Python 语法糖
  • Jmeter的文件参数化:CSV数据文件设置和_CSVRead函数
  • 基于python舆情分析可视化系统+情感分析+爬虫+机器学习(源码)✅
  • JS tostring()和join()方法
  • 将 RxJava 的 Observable 转换为 Reactor 的 Flux流
  • Java基础-Java基础-笔记
  • 黑马程序员 Docker笔记
  • 基于云平台技术的GPS定位的浅谈
  • 【JVM】常用命令
  • 鸿蒙OS4.0兼容性测试
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【附node操作实例】redis简明入门系列—字符串类型
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • CSS居中完全指南——构建CSS居中决策树
  • CSS中外联样式表代表的含义
  • JS题目及答案整理
  • leetcode46 Permutation 排列组合
  • supervisor 永不挂掉的进程 安装以及使用
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 阿里云Kubernetes容器服务上体验Knative
  • 百度小程序遇到的问题
  • 入门到放弃node系列之Hello Word篇
  • 世界上最简单的无等待算法(getAndIncrement)
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 一道面试题引发的“血案”
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • Python 之网络式编程
  • ​ArcGIS Pro 如何批量删除字段
  • #pragma 指令
  • #pragma预处理命令
  • (10)ATF MMU转换表
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (转)【Hibernate总结系列】使用举例
  • (转)Sql Server 保留几位小数的两种做法
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .apk 成为历史!
  • .bashrc在哪里,alias妙用
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • :not(:first-child)和:not(:last-child)的用法
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • [ 第一章] JavaScript 简史