前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BRC-100 协议

BRC-100 协议

作者头像
终有链响
发布2024-08-11 08:45:14
690
发布2024-08-11 08:45:14
举报
文章被收录于专栏:终有链响
BRC-100 协议

BRC-100 是一种基于序数理论的可扩展的去中心化计算协议。 BRC-100 协议会以下面的方式定义。未来所有的 BRC-100 协议栈都应该使用类似的规范来定义。

1. 摘要

BRC-100 协议是一种基于序数理论的可扩展的去中心化计算协议。

2. 抽象

BRC-100 协议本质上描述了一种带有计算能力和状态的代币。基于 BRC-100 协议部署的代币被称为应用。BRC-100 支持嵌套和继承。嵌套指的是为一个应用创建子应用,以实现应用的模块化和扩展父应用的计算能力。同时,BRC-100 协议支持协议扩展。任何协议都可以从 BRC-100 或其扩展协议继承,以扩展父协议。BRC-100 协议包含三个部分:属性、操作和计算操作。操作不允许扩展以确保所有基于 BRC-100 及其扩展协议的代币互相兼容,属性和计算操作可以由扩展协议扩展。

3. 参数

参数在协议中定义,部署应用时不需要设置。

  • extends:继承自哪个协议
  • upgradeFrom:哪些协议可以升级到此协议
  • openAsChild:否,是否可以由任何人作为子应用部署
  • onlyChild:否,是否只能作为子应用部署
  • stoppable:是,是否可以停止
4. 操作

本章定义了 BRC-100 协议的操作和操作符。一个操作可能包含多个操作符来表达略微不同的语义。操作和操作符不允许扩展,这意味着所有 BRC-100 协议的扩展协议都不能添加、删除或更改操作和操作符,以确保所有基于 BRC-100 协议及其扩展协议的代币/应用的兼容性。

4.1 部署

部署 BRC-100 协议时,需要使用 deploy 操作符,并设置应用的属性。BRC-100 的属性如下表所示。

属性

描述

必须?

可升级?

p

协议,不区分大小写

op

操作符,不区分大小写

tick

代币名称:3-100个字母,“:” 表示子应用,不是一个有效的比特币地址,不区分大小写

max

最大供应量,默认无限制

amt

与 max 同义

lim

最大所有者铸造数量,只能由操作符 “mint2” 使用 cop “om” 铸造给所有者,默认为 0

adms

管理员,可以是地址或应用

tbhp

交易黑洞百分比,默认为 0

ttp

交易税百分比,默认为 0

tr

税收接收者

b3t

是否支持 burn3 操作,默认不支持 burn3

ids

是否已启动 DAO,默认为 false

dvl

DAO 投票限制

gtl

治理执行时间锁定,多少小时后3个区块确认,默认为 24小时

ext

扩展协议的扩展属性

4.2 铸造

BRC-100 协议定义了三个铸造操作符:mint/mint2/mint3。协议使用属性 “mma” 来定义可以公开 “mint” 的最大数量,剩余的代币应使用 “mint2” 操作符铸造。属性 “moma” 定义了为代币所有者预留的代币数量,可以由 “mint2” 操作符使用 cop “om” 铸造给所有者,剩余的代币应通过 BRC-100 扩展协议中定义的其他 cop 使用 “mint2” 铸造。如果 “mma” 属性未设置或等于 “max” 属性,则所有代币都可以公开 “mint”,并且没有代币可以由 “mint2” 操作符铸造。“mint3”意味着从应用中铸造余额,不会改变流通供应量。“mint”和“mint2”会增加流通供应量。

4.2.1 mint 操作符

“mint”操作符的意义是公开铸造。任何人都可以进行“mint”,但总数不能超过 “max” 和 “mma” 设置的数量。“mint”不支持计算操作。

示例:

代码语言:javascript
复制
{
  "p": "BRC-100",
  "op": "mint",
  "tick": "BRC100",
  "amt": "1000"
}
4.2.2 mint2/mint3 操作符

mint2/mint3 都是支持计算操作的铸造操作符。用户或应用使用 mint2/mint3 后将获得代币,并且定义在 “from” 属性中的应用的状态将被更新。具体的计算逻辑由 cop(计算操作)属性定义。mint2 和 mint3 的区别在于,除了用于恢复错误燃烧的 “mint2” 代币外,“mint2” 需要 “from” 属性(应用或地址)是代币的管理员,并且会增加流通供应量。而 “mint3” 不需要是管理员,并且不会增加流通供应量。“mint3”会将用户/应用在一个应用中的余额转换为 UTXO,然后用户/应用可以在其他应用中使用该 UTXO。

示例:

  • 使用 “mint2” 操作符为所有者铸造代币。
代码语言:javascript
复制
{
  "p": "BRC-100",
  "op": "mint2",
  "tick": "OWNER_RESERVED",
  "amt": "1000000",
  "cop": "om",
  "from": "OWNER_RESERVED"
}
  • 在去中心化稳定币协议中,用户在抵押他们的抵押品后可以铸造与美元挂钩的稳定币:“stablecoin:DUSD”。
代码语言:javascript
复制
{
  "p": "BRC-108",
  "op": "mint2",
  "tick": "stablecoin:DUSD",
  "amt": "10000",
  "cop": "w2",
  "from": "stablecoin:DUSD"
}
4.3 燃烧

类似于 mint2/mint3,burn2/burn3 是带有计算操作的操作符。用户使用 burn2/burn3 操作符燃烧代币后,用户的代币余额将减少,并且定义在 “to” 属性中的应用的状态将被更新。具体的计算逻辑由计算操作定义。burn2 和 burn3 的区别在于,burn2 需要 “to” 属性(应用或地址)是代币的管理员,并且会减少流通供应量;而 burn3 不需要是管理员,并且不会减少流通供应量。burn3 只是将燃烧的代币转换为应用的状态,并且状态转换可以通过应用的计算来控制。burn2 和 burn3 的代币可以通过相应的 mint2/mint3 操作符按照 BRC-100 扩展协议定义的具体计算逻辑再次铸造。

示例:

  • 使用 burn2 操作符燃烧流动性证书:LP 代币以从 AMM DEX 中移除流动性。
代码语言:javascript
复制
{
  "p": "BRC-102",
  "op": "burn2",
  "tick": "amm_dex:LP_BRC100_BTC",
  "amt": "12",
  "cop": "remove_liquidity",
  "to": "amm_dex:LP_BRC100_BTC"
}
  • 使用 “burn3” 操作符为 BRC-100 和 BTC 代币在 AMM DEX 中增加流动性。
代码语言:javascript
复制
{
  "p": "BRC-100",
  "op": "burn3",
  "tick": "BRC100",
  "amt": "2000",
  "cop": "add_liquidity",
  "to": "amm_dex:LP_BRC100_BTC",
  "ts": [
    {
      "p": "BRC-103",
      "tick": "bridge:BTC",
      "amt": "1"
    }
  ]
}
4.4 转账

转账操作要求用户首先铭刻转账铭文,然后将铭文转移到其他地址。“transfer” 操作符不能用于将代币转移到应用,并且转账不支持计算操作。

示例:

代码语言:javascript
复制
{
  "p": "BRC-100",
  "op": "transfer",
  "tick": "BRC100",
  "amt": "105"
}
5. 计算操作

计算操作符允许应用根据计算逻辑进行状态转换。

5.1 铸造计算操作符:c2/c3

c2/c3 用于在计算逻辑的基础上铸造代币。c2 与 mint2 相关,c3 与 mint3 相关。c2/c3 将更新 rsb2/rsb3 的状态。

5.2 恢复计算操作符:r2/r3

r2/r3 用于恢复因错误地燃烧或使用 burn2/burn3 到应用或用户而丢失的代币,以便通过 mint2/mint3 操作符再次为用户铸造这些代币。“mint2” 和 “r2” 用于恢复错误的 “burn” 和 “burn2”,“mint3” 和 “r3” 用于 “burn3”。常见的错误类型包括:应用不支持的代币/cop、错误的属性/参数、错误的地址等。r2/r3 最终会更新 rsb2/rsb3 状态。

示例:

  • 撤销错误发送到桥接应用的 eth 代币。
代码语言:javascript
复制
{
  "p": "BRC-103",
  "op": "mint3",
  "tick": "bridge:eth",
  "amt": "20",
  "cop": "r3",
  "from": "bc1pdkyv4vp507vrvj4x3h4pmlj2jrz235vmex9cz7flkg8mvra2jmzq50ay7c"
}
5.3 执行治理:egov

当子治理应用可以被执行时,使用 egov 通知应用等待时间锁定:gtl,然后执行子治理应用,以更新应用状态。egov 需要与 burn2 配合使用。燃烧一些代币到子治理应用可以完成 egov。

示例:

代码语言:javascript
复制
{
  "p": "BRC-100",
  "op": "burn2",
  "tick": "amm_dex",
  "amt": "1",
  "cop": "egov",
  "to": "amm_dex:gov1"
}
6. 停止应用

应用和子应用在部署后将开始运行。但在某些特殊情况下,对于可以停止的应用(协议参数 stoppable 为 Yes),如果应用所有者或代币持有人希望停止应用,他可以通过治理协议 BRC-101 创建一个子治理应用来停止应用。停止后,所有 cop 下的 burn2 和 burn3 都不再工作,即应用不能再根据 burn2 和 burn3 的 cop 改变状态。停止的应用可以处理 mint/mint2/mint3 来为用户或应用铸造代币,并且停止的代币仍然可以转账。最后,停止的应用不能重新启动。

  1. 状态 本章将介绍BRC-100协议内部的状态,BRC-100扩展协议可以使用这些状态来描述应用内部的计算逻辑,也可以定义自己的状态。索引器需要将这些状态展示给用户,以保证状态的公开性和一致性。所有状态都应该用Merkle Tree来存储,并将树的根展示给用户。状态是应用根据用户的操作和计算操作计算出来的结果。状态可以是应用的变量,也可以是本应用或地址内其他应用或用户的余额等。状态可以属于应用、子应用和地址。应用状态与应用属性的区别在于,属性的更新需要通过治理来完成,而状态是由公开的算法和规则计算出来的,不需要治理。BRC-100中的余额分为两种:一种是UTXO余额,与BRC-20类似,由地址持有,包括可用余额、可转让余额和“mint3”余额;另一类是状态机模型引入的状态余额,可以由应用程序或地址持有。BRC-100 协议定义了以下 8 种状态来描述地址和应用程序的 UTXO Balance 和状态余额:

sbom,State Balance for Owner Mint,应用程序状态,表示当前应用程序中,operator:“mint2” 和 cop:“om” 可以铸造给 Owner 的 token 数量。

uba,UTXO Balance of Address,地址状态,表示当前地址所持有的所有 token 的余额。每个 token 的余额有三种状态:可用余额、可转让余额、可挖矿余额。可用余额表示用户可以刻记的余额,也就是可以转移和销毁的余额;可转让余额表示用户已经刻记的可以转移和销毁的余额;可挖矿余额表示可以从该地址挖矿的余额,地址或应用程序可以挖矿的数据通过 rsb3 和 sb3 两个状态来存储。

rsb2,地址状态 mint2 的可恢复状态余额,表示用户可以通过 cop: r2 从当前地址恢复的代币余额。“rsb2”表示用户错误“销毁”或“销毁2”的代币。由于应用程序无法通过计算逻辑处理 cop 或处理失败,“销毁”或“销毁2”的代币存储在地址状态中。用户可以使用 op: mint2 和 cop: r2 将其重新铸造到自己的钱包中。

rsb3,地址状态 mint3 的可恢复状态余额,表示用户可以通过 cop: r3 从当前地址恢复的代币余额。“rsb3”表示用户错误“销毁”的代币。由于应用程序无法通过计算逻辑处理 cop 或处理失败,“销毁”的代币存储在地址状态中。用户可以使用 op: mint3 和 cop: r3 将其重新铸造到自己的钱包中。

sba2,mint2,应用状态的应用程序状态余额,用于表示当前应用程序可以“mint2”的代币总量,等于sb2状态下代币数量的总和。

sba3,mint3,应用状态的应用程序状态余额,用于表示当前应用程序可以“mint3”的token总数,sb3状态中的token数量总和不能大于sba3中的值。

sb2,mint2 的状态余额,应用状态,用于表示地址从当前应用程序中可以 mint2 的代币数量。

sb3,mint3 的状态余额,应用状态,用于表示某个地址可以从当前应用程序中 mint3 的代币数量。

以下为翻译的原文链接:https://docs.brc100.org/brc-100-protocol

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • BRC-100 协议
    • 1. 摘要
      • 2. 抽象
        • 3. 参数
          • 4. 操作
            • 4.1 部署
            • 4.2 铸造
            • 4.2.1 mint 操作符
            • 4.2.2 mint2/mint3 操作符
            • 4.3 燃烧
            • 4.4 转账
          • 5. 计算操作
            • 5.1 铸造计算操作符:c2/c3
            • 5.2 恢复计算操作符:r2/r3
            • 5.3 执行治理:egov
          • 6. 停止应用
          相关产品与服务
          对象存储
          对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档