当前位置: 首页 > 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…...

基于STM32F407+NBIOT+华为云IOT平台设计的环境检测系统

基于STM32F407NBIOT华为云IOT平台设计的环境检测系统实现的功能&#xff1a; 【1】能够采集本地环境的温度、湿度、烟雾浓度&#xff0c;火光信息&#xff0c;在OLED显示屏上显示。 如果检测到烟雾、温度、火光超过阀值会触发蜂鸣器报警。 【2】能够通过NBIOT将本地设备采集的信…...

工具方法 - 如何表扬小孩子

赞扬小朋友的表现可以通过多种方法来进行&#xff0c;以鼓励他们的积极行为和努力&#xff0c;增强他们的自信心和动力。以下是一些有效的赞扬方法&#xff1a; 1. 具体表扬&#xff1a;指出具体的行为或成就&#xff0c;而不是泛泛地说“你很棒”。例如&#xff0c;“你今天很…...

【扒模块】DySample

逐行注释 import torch import torch.nn as nn import torch.nn.functional as F import warnings# 忽略警告信息&#xff0c;这通常用于开发过程中&#xff0c;避免警告干扰输出结果 warnings.filterwarnings(ignore)# 定义一个函数&#xff0c;用于对神经网络模块的权重进行…...

数学建模之数据分析【四】:变量及其分析

文章目录 一、单变量数据1.1 单变量数据1.2 单变量分析的要点&#xff1a; 二、双变量数据2.1 双变量数据2.2 双变量分析的要点 三、多元数据3.1 多元数据3.2 多元分析的要点 四、单变量&#xff0c;双变量和多变量数据之间的区别 公众号/小红书: 快乐数模 CSDN: 清上尘 本文&a…...

iOS ------ UIKit相关

UIView和CALayer UIView UIView表示屏幕上的一块矩形区域&#xff0c;它是基本上iOS中所有可视化控件的父类。UIView可以管理矩形区域里的内容&#xff0c;处理矩形区域的事件&#xff0c;包括子视图的管理以及动画的实现。 UIKit相关类的继承关系 UIView继承自UIResponde…...

24/8/9算法笔记 随机森林

"极限森林"&#xff08;Extremely Randomized Trees&#xff0c;简称ERT&#xff09;是一种集成学习方法&#xff0c;它属于决策树的变体&#xff0c;通常被归类为随机森林&#xff08;Random Forest&#xff09;的一种。极限森林的核心思想是在构建决策树时引入极端…...

如何在前后端分离项目中,使用Spring Security

使用 WebSecurityConfigurationAdapter 在前后端分离的架构中&#xff0c;通常使用 Token 进行认证和授权是一种常见的做法。Token 可以是 JSON Web Token&#xff08;JWT&#xff09;&#xff0c;用于在客户端和服务器之间传递身份信息和访问控制信息。下面我将详细介绍如何在…...

c#怎么折叠代码快捷

在C#中&#xff0c;‌你可以使用快捷键来折叠或展开代码&#xff0c;‌以便更好地管理和浏览代码。‌以下是一些常用的快捷键&#xff1a;‌ 折叠所有方法&#xff1a;‌使用Ctrl M O。‌折叠或展开当前方法&#xff1a;‌使用Ctrl M M。‌展开所有方法&#xff1a;‌使用…...

数据库篇--八股文学习第十七天| 什么是慢查询?原因是什么?可以怎么优化?;undo log、redo log、binlog 有什么用?

1、什么是慢查询&#xff1f;原因是什么&#xff1f;可以怎么优化&#xff1f; 答&#xff1a; 数据库查询的执行时间超过指定的超时时间时&#xff0c;就被称为慢查询。 原因&#xff1a; 查询语句比较复杂&#xff1a;查询涉及多个表&#xff0c;包含复杂的连接和子查询&…...

插件、cookie存储,json,ajax详解

1.插件 下载地址&#xff1a;http://github.com/carhartl/jquery-cookie/zipball/v1.4.1 使用文档&#xff1a;jquery-cookie(github.com) 2.存储 初学前端用的是localStorage和sessionStorage&#xff0c;后来又引入了cookie进行存储。 localStorage使用如下 sessionStor…...