跳到主要内容
Coinbosa
生态系统 链 & BOSA 开发者 关于 加入生态系统

在 Coinbosa Chain 上构建

这条链兼容 EVM:MetaMask、Hardhat、Foundry、ethers.js 和 viem 无需改造即可连接。本页说明哪些能用,并指出边界在哪里——既包括公共端点的边界,也包括网络本身的边界。

入门

三个字段,网络就能连上。

描述一个 EVM 网络只需要少数几个数值。它们不是意向:它们作用于每一个区块,并且可以在链上重新读到。

字段要填写的值
网络名称Coinbosa Chain
新的 RPC URLhttps://explorer.coinbosa.com/rpc
链 ID26262 — 十六进制为 0x6696
货币符号BOSA
小数位18
区块浏览器 URLhttps://explorer.coinbosa.com

打开手动添加

展开网络选择器,依次选择“添加网络”和“手动添加网络”。Coinbosa Chain 需要手动填写:对于钱包事先并不知道的网络,这是正常的做法。

抄录各字段

钱包会向端点发起查询,如果节点返回的标识与填写的不一致,就拒绝保存。这项检查可以防止某个端点冒充另一个网络。

签名前先核对

余额以 BOSA 显示,最新区块按 Parlia 共识的节奏推进——目标为 5 秒,在连续 500 个区块上实测为 5.018 秒。

18 位小数不是一个可调选项。以太坊虚拟机的基本单位是 wei,这个值在 gas 计算和所有钱包中都是写死的。没有任何字段可以更改它。

连接

用代码添加网络。

应用可以用一次弹窗提示完成网络添加,用户无需手动抄录任何内容。

wallet_addEthereumChain
await window.ethereum.request({
  method: 'wallet_addEthereumChain',
  params: [{
    chainId: '0x6696',
    chainName: 'Coinbosa Chain',
    nativeCurrency: { name: 'Coinbosa', symbol: 'BOSA', decimals: 18 },
    rpcUrls: ['https://explorer.coinbosa.com/rpc'],
    blockExplorerUrls: ['https://explorer.coinbosa.com']
  }]
});

标识以十六进制传递

26262 在这里写作 0x6696,带前缀且不补前导零。这是这一步最常见的错误:以十进制传入的标识会被拒绝,而且往往没有明确的提示。eth_chainId 返回的也是同样的形式。

弹窗提示不是保证

任何网站都可以请求添加一个网络,并自行选择名称和符号。真正标识一条链的,是它的标识、它的区块 0 哈希,以及端点地址。

工具链

配置 Hardhat 与 Foundry。

不需要任何专门的插件:对这些工具来说,Coinbosa Chain 就是一个普通的 EVM 网络。唯一需要留意的是所选的 EVM 版本。

hardhat.config.js
module.exports = {
  solidity: {
    version: '0.8.26',
    settings: { evmVersion: 'shanghai' }
  },
  networks: {
    coinbosa: {
      url: 'https://explorer.coinbosa.com/rpc',
      chainId: 26262,
      accounts: [process.env.CLE_PRIVEE]   // 绝不以明文写入代码仓库
    }
  }
};
foundry.toml
[profile.default]
solc_version = "0.8.26"
evm_version = "shanghai"

[rpc_endpoints]
coinbosa = "https://explorer.coinbosa.com/rpc"

# forge script script/Deploy.s.sol \
#   --rpc-url coinbosa --broadcast

请为 Shanghai 编译,而不是 Cancun。Solidity 默认目标是 Cancun:若没有 evmVersion: 'shanghai'

私钥绝不能放进配置文件。它应从环境变量或加密存储中读取,其文件也应留在代码仓库之外。Coinbosa 团队的任何成员都绝不会向你索要私钥或助记词。

DeFi & DEX

一套原生的 DeFi 与 DEX 套件。

Coinbosa Chain 内置原生 DeFi & DEX 套件:开发者可在其中发布智能合约、创建流动性池,并不受限制地部署 BRC20 代币。

发布智能合约

部署走的是常规 EVM 工具链,也就是上面配置好的那些。一笔已签名的交易就够了:无需申请,也无需事先获得批准。

创建流动性池

流动性池像普通合约一样部署,依托这条链的 BRC20 代币,其接口在下文说明。

不受限制地部署代币

发行 BRC20 代币不需要任何许可。唯一要遵守的约定是接口,以便与讲 ERC-20 的钱包和服务保持兼容。

代币

BRC20 标准。

BRC20——Bosa smart contract 20——是这条链的代币标准。它的接口兼容 ERC-20:任何能读懂 ERC-20 的钱包、跨链桥或服务都无需改造即可使用。

IBRC20.sol — 最小接口
interface IBRC20 {
    function name()        external view returns (string memory);
    function symbol()      external view returns (string memory);
    function decimals()    external view returns (uint8);
    function totalSupply() external view returns (uint256);
    function getOwner()    external view returns (address);

    function balanceOf(address compte) external view returns (uint256);
    function allowance(address proprietaire, address delegue) external view returns (uint256);

    function transfer(address vers, uint256 montant) external returns (bool);
    function approve(address delegue, uint256 montant) external returns (bool);
    function transferFrom(address de, address vers, uint256 montant) external returns (bool);

    event Transfer(address indexed de, address indexed vers, uint256 montant);
    event Approval(address indexed proprietaire, address indexed delegue, uint256 montant);
}

所有权分两步转移

这是与普通 ERC-20 之间唯一值得注意的行为差异。transferOwnership 只是指定一个待确认的接收方,并不交出任何权限;只有当对方从自己的地址调用 acceptOwnership 时,所有权才会转移。

为什么要绕这一道

一步转给一个填错的地址是不可逆的:没有人持有那把密钥,任何仅限所有者调用的函数都再也无法调用,合约将永久失去所有者。第二步正是用来证明接收方确实控制着这个地址。

BRC20 增加了什么

getOwner 以标准化的方式暴露所有者。mint 仅限所有者调用,并可通过 finishMinting 永久关闭;burn 对持币者开放。最后,increaseAllowancedecreaseAllowance 避免了 approve 的竞态问题。

比特币上存在一个同名标准,两者在技术上毫无关系。Ordinals 铭文的 BRC-20 与这里的标准只是同名而已:写成“Coinbosa 的 BRC20”即可消除歧义。

对外开放的接口范围

公共端点接受什么。

公共节点用于读取链上数据和提交已签名的交易。凡是能用来窥探或操控节点的接口都已关闭,昂贵的请求也设有上限:没有上限时,一个两百字节的请求就可能要求扫描整条链。

方法族状态涵盖内容
eth开放区块、余额、存储、gas 估算、日志、发送已签名的交易。
net开放网络身份——钱包添加这条链所需要的信息。
web3关闭公布客户端的确切版本及其 commit 哈希——一份开箱即用的目标清单。
personal, admin关闭节点密钥库、对等节点、服务、文件写入。
debug, txpool, miner关闭内部状态、交易队列、区块产出。
传输HTTPS,仅限 POST——其他方法一律被拒绝。
请求大小设有上限;更重的请求会在处理前被拒绝。
批量调用按每个 HTTP 请求设上限。
日志查询范围每次调用 eth_getLogs 均有上限;长历史需分段读取。
日志过滤器每个检索位置上的地址数与备选主题数均有上限。
浏览器来源仅限 explorer.coinbosa.com;服务器到服务器的调用不受此限。

这个端点是为读取和提交而设的。它不提供 WebSocket 订阅:应用需要轮询节点,而不是订阅。而要重新读取某个较早区块的状态,则需要一个归档节点,任何人都可以从代码仓库自行运行。

验证

底座可在链上重新读取。

下面的数值来自白皮书。它们不要求别人相信我们:两个请求就足以把它们找回来。

共识与出块时间Parlia — 目标:5 秒 | 实测:5.018 秒,共 500 个区块
链 ID26262 — EIP-155 防重放保护
epoch 切换验证者间隔固定——在第 200400600800 个区块处验证
共识系统合约定制编写(Solidity / Go-Ethereum),直接在链上运行
原生代币标准BRC20,兼容 ERC-20 — 自动化测试套件
BOSA 供应量700,000,00018 位小数
区块 0 哈希0x8dcdadc247a98f33728cae944e20ce7c49c74b35cfba31495f85e98979018da6
区块 0 状态根0x93682eb9182a55531d47014b76a285b45d3e720a2951f9ffbdc67f52995f8c03
投入生产2026 年 8 月 7 日
核对链的身份
# doit renvoyer "0x6696" — soit 26262
curl -s -X POST https://explorer.coinbosa.com/rpc \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'

# doit renvoyer l empreinte 0x8dcdadc2... publiee plus haut
curl -s -X POST https://explorer.coinbosa.com/rpc \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,
       "method":"eth_getBlockByNumber","params":["0x0",false]}'

代码是公开的

客户端、合约、genesis 和部署脚本都发布在 Coinbosa 代码仓库。重新编译 genesis 必须精确复现上文公布的区块 0 哈希。

什么标识这条链

名称和符号可以照抄;链 ID 和区块 0 哈希不行。发送交易之前要比对的正是后两者,区块浏览器会明明白白地显示它们。

这个网络由谁发行发行方、围绕这条链构建的生态系统,以及 BOSA 供应量的分配。

打开关于页面