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

BRC-100 协议

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
dvlDAO 投票限制
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”不支持计算操作。

示例:

{"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” 操作符为所有者铸造代币。
{"p": "BRC-100","op": "mint2","tick": "OWNER_RESERVED","amt": "1000000","cop": "om","from": "OWNER_RESERVED"
}
  • 在去中心化稳定币协议中,用户在抵押他们的抵押品后可以铸造与美元挂钩的稳定币:“stablecoin:DUSD”。
{"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 中移除流动性。
{"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 中增加流动性。
{"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” 操作符不能用于将代币转移到应用,并且转账不支持计算操作。

示例:

{"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 代币。
{"p": "BRC-103","op": "mint3","tick": "bridge:eth","amt": "20","cop": "r3","from": "bc1pdkyv4vp507vrvj4x3h4pmlj2jrz235vmex9cz7flkg8mvra2jmzq50ay7c"
}
5.3 执行治理:egov

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

示例:

{"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

相关文章:

BRC-100 协议

BRC-100 协议 BRC-100 是一种基于序数理论的可扩展的去中心化计算协议。 BRC-100 协议会以下面的方式定义。未来所有的 BRC-100 协议栈都应该使用类似的规范来定义。 1. 摘要 BRC-100 协议是一种基于序数理论的可扩展的去中心化计算协议。 2. 抽象 BRC-100 协议本质上描述…...

茶余饭后(六)

年少成长的时候,多遇到一些所谓的“坏人”,“烂人”,其实是好的,因为这些人让你见识到了人性最丑陋的一面,他们让你磨炼了心性,在以后遇到难处理的人或事的时候,能够有一定的心理承受能力。遇见…...

秋招复习笔记——八股文部分:网络IP

终于来到了网络的最后一篇,继续加油! IP 知识全家桶 IP 基本认识 IP 在 TCP/IP 参考模型中处于第三层,也就是网络层。 网络层的主要作用是:实现主机与主机之间的通信,也叫点对点(end to end&#xff09…...

量化投资基础(四)之AR、MA、ARMA与ARIMA模型

点赞、关注,养成良好习惯 Life is short, U need Python 量化投资基础系列,不断更新中 1 引言 时间序列经典模型主要有: 自回归模型(Auto Regressive,AR)移动回归模型(Moving Average,MA&…...

LVS(Linux Virtual Server)详解

LVS(Linux Virtual Server)是一个用于负载均衡的开源软件项目,旨在通过集群技术实现高性能、高可用的服务器系统。它运行在Linux操作系统上,并且可以利用内核级的资源来提高性能和稳定性。 思维导图 LVS的工作原理 LVS主要基于Ne…...

uniapp版本更新除了plus.runtime.getProperty的解决办法

以下是展示图 带尺寸的图片: 首先把以下代码放到想要更新弹出的页面 //template部分<uni-popup ref"popup" background-color"#fff"><versionUp handleCloseVersion"closeVersion"></versionUp></uni-popup>//script…...

MySQL笔记-基础篇(二):多表查询

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 前言 MySQL的多表查询是一项非常实用的数据库操作技术&#xff0c;它能够通过关联不同表中的数据来提供更加丰富和准确的信息。在实际应用中&#xff0c;数据通常不是孤立存在的&#xff0c;而是分布在多个…...

备战秋招60天算法挑战,Day15

题目链接&#xff1a; https://leetcode.cn/problems/minimum-window-substring/ 视频题解&#xff1a; https://www.bilibili.com/video/BV1sJ4m1g727/ LeetCode 76. 最小覆盖子串 题目描述 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s …...

【学习笔记】Matlab和python双语言的学习(整数规划和0-1规划)

文章目录 前言一、整数规划和0-1规划二、典型示例1.背包问题2.指派问题 三、代码实现----Matlab1.Matlab 的 intlinprog 函数2.Matlab 代码背包问题指派问题 四、代码实现----python背包问题指派问题 总结 前言 通过模型算法&#xff0c;熟练对Matlab和python的应用。 学习视频…...

【连续4届EI检索,SPIE 出版】第五届信号处理与计算机科学国际学术会议(SPCS 2024,8月23-25)

第五届信号处理与计算机科学国际学术会议&#xff08;SPCS 2024) 将于2024年8月23-25日在中国哈尔滨举行。会议主要围绕信号处理与计算机科学等研究领域展开讨论。 会议旨在为从事信号处理与计算机科学研究的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技…...

Vue屏蔽Console.Log打印信息

Vue屏蔽打印信息 安装 npm install uglifyjs-webpack-plugin --save-dev 在vue.config.js文件或者webpack.prod.conf.js中配置 vue.config中 const UglifyJsPlugin require(uglifyjs-webpack-plugin) // 屏蔽打印数据 module.exports {optimization: {minimizer: [new Ugl…...

数据结构之《二叉树》(下)

在二叉树(中)了解了堆的相关概念后还实现了堆&#xff0c;并且还实现了堆排序&#xff0c;以及解决了TOP-K问题。接下来在本篇中将继续学习二叉树中的链式结构&#xff0c;会学习二叉树中的前、中、后三种遍历并实现链式结构的二叉树&#xff0c;接下来就开始本篇的学习吧&…...

用Python打造精彩动画与视频,9.3 项目案例分享与反思

第九章&#xff1a;综合项目 9.3 项目案例分享与反思 在本节中&#xff0c;我们将分享几个成功的项目案例&#xff0c;并进行反思总结。这些案例将展示如何将前面所学的Python技术运用于实际项目中&#xff0c;同时我们将讨论项目中的挑战和解决方案&#xff0c;以及从中得到…...

分布式主键 详解

文章目录 雪花算法结合分库分表的问题问题出现原因分析解决思路 分布式主键要考虑的问题主键生成策略雪花算法详解时间戳位问题工作进程位问题序列号位问题根据雪花算法扩展基因分片法 雪花算法结合分库分表的问题 问题出现 使用ShardingSphere框架自带的雪花算法生成分布式主…...

synchronzed为什么要升级为重量级锁,轻量级锁不好吗?

轻量级锁和重量级锁各有其适用场景和优缺点。轻量级锁旨在减少在无竞争情况下的同步开销&#xff0c;而重量级锁则在竞争激烈的情况下确保线程的同步。以下是为什么在某些情况下需要将轻量级锁升级为重量级锁的原因&#xff0c;以及轻量级锁的不足之处&#xff1a; 为什么需要…...

.NET 项目中发送电子邮件异步处理和错误机制的解决方案

在 .NET 中处理电子邮件&#xff0c;可以使用多种技术和库来实现高效的电子邮件发送、接收和管理。以下是一些常见的解决方案和最佳实践&#xff1a; 目录 1. 使用 SMTP 发送电子邮件 2. 使用 IMAP/POP3 接收电子邮件 3. 异步处理电子邮件 4. 处理大型邮件队列 5. 错误处…...

如何在银河麒麟操作系统上搭建 Electron (含 Electron 打包指南)

本次教程所用版本 Eletron版本&#xff1a;31.3.1 Electron-packager版本&#xff1a;17.1.2 VScode版本&#xff1a;1.92.0 Node版本&#xff1a;18.19.0 npm版本&#xff1a;10.2.3 前言&#xff1a; 随着跨平台应用开发的需求日益增长&#xff0c;Electron 和 Qt 成为…...

小怡分享之数据结构基础知识准备

前言&#xff1a; &#x1f308;✨之前小怡给大家分享了JavaSE的知识&#xff0c;今天小怡要给大家分享一下数据结构基础知识。 一、初识集合框架 1.什么是集合框架 Java集合框架Java Collection Framework&#xff0c; 又称为容器container&#xff0c;是定义在Java.util 包…...

Linux安全与高级应用(三)深入探索MySQL数据库:安装、管理与安全实践

文章目录 深入探索MySQL数据库&#xff1a;安装、管理与安全实践MySQL数据库简介MySQL的安装与配置编译安装MySQL配置MySQL服务 MySQL数据库的基本操作数据库的创建与删除表的创建与管理数据记录的增删改查 MySQL用户管理与权限设置MySQL数据库的备份与恢复数据库备份数据库恢复…...

基于jsp的宠物领养与服务管理系统(源码+论文+部署讲解等)

博主介绍&#xff1a;✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术栈介绍&#xff1a;我是程序员阿龙&#xff…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...