集成
一条链有多大用处,取决于能接入它的软件。本类别介绍这些软件:人们用来签名的钱包、能控制账户的密钥、开发者赖以构建的工具和 API,以及让浏览器能够触及这条链的公共服务。贯穿其中的是同一个原则:密钥始终留在其所有者手中。每笔交易都在用户自己的设备上构建和签署,每项服务都只传递已签名的字节和公开数据。
签名
- 网页钱包:官方钱包,一个在浏览器中签名的单独 HTML 文件,在设备上保存加密保险库,并能在从不联网的计算机上签名。
- 校验下载的文件:如何通过把 SHA-256 哈希与链上记录的哈希进行比较,检查钱包或节点文件是否为正版。
- 密钥与账户类型:账户可以由原生 ZooBC 密钥控制,也可以由比特币、以太坊、Solana、Polkadot、Cardano、Ripple、Tron 或 Tezos 密钥控制,每种都用其原链的签名方案检查。
- MetaMask 与以太坊式访问:MetaMask 通过内置于每个节点的以太坊式适配器,在 0x 账户之间发送 ZBC。
- 签名消息与加密消息:不通过交易证明对地址的控制权,以及为接收方加密消息。
- 硬件钱包:面向设备厂商的签名规范,一项计划中的设计。
构建
- 节点 API:每个节点都提供的 HTTP API,
/api/v1/下有一百多个路由,向任何网页开放。 - 命令行工具:
zbc-cli以及十种编程语言的库,采用 MIT 许可证,由共享的测试向量保证一致。
公共服务
有三类服务登记在链上注册表中,这样钱包无需任何中央目录就能找到它们:
- 网关:HTTPS 前门,提供钱包、区块浏览器、文件验证页面,以及 testnet 上的水龙头。网关锁定一笔质押,并通过签名的心跳保持在列。
- 区块浏览器与归档节点:已注册节点旁边的归档服务保存可搜索的历史,由区块浏览器展示。
- 中继:会合点,在钱包之间传送通话信令和在线状态。
这些服务都不产出区块,出块只由已注册节点完成(运行节点);它们也都不持有用户的密钥。
跨链桥接的币
ZooBC 上有四种币代表其他链上的币:ZBTC 代表比特币,ZETH 代表以太币,ZUSDC 和 ZUSDT 代表以太坊上的 USDC 和 USDT 代币。节点不监视任何外部链。跨链桥从 0.5.8 版本起就是 ZooBC 的一部分,完整描述见 跨链桥与封装币;各条链以 0.5.8 版本重新启动时,不会启动跨链桥服务。
在节点旁边运行的守护者程序监视保管地址,并以节点密钥签名的见证进行投票;在三分之二的计入席位(即未被暂停的已注册节点)达成一致之前,什么都不会发生。
提款时,持有者用一笔普通的 TransferToken 把封装币发送到跨链桥的保管账户,消息为 ZBW1| 后接目标地址。一旦三分之二的计入席位达成一致,每个节点都会从保管账户中销毁这些单位,而守护者的签名(可通过 API 读取)会在另一条链上释放相应的币。铸造与销毁一比一进行,没有跨链桥手续费。
另见
本主题下的文章
- MetaMask 与以太坊式访问
MetaMask 和其他以太坊工具如何通过内置于每个节点的 JSON-RPC 适配器,在 ZooBC 的 0x 账户之间发送 ZBC,以及 wei 如何换算成原子单位。 - 中继
ZooBC 中继为钱包做什么(通话信令、在线状态、通道游戏的走子),钱包如何登录中继,以及中继如何登记在链上。 - 区块浏览器与归档节点
为什么普通节点无法回答关于过去的每一个问题,已注册节点旁边的归档服务如何保存可搜索的历史,以及区块浏览器如何使用它。 - 命令行工具
ZooBC 公共工具:zbc-cli 以及十种语言的库,通过 HTTP API 构建、签署并提交交易,并由共享的测试向量保证各版本逐字节一致。 - 密钥与账户类型
ZooBC 地址如何编码其账户类型,ZooBC 和其他链的哪些密钥可以控制账户,以及每种签名方案如何验证。 - 校验下载的文件
如何在浏览器中或从终端,通过把 SHA-256 哈希与链上记录的哈希进行比较,检查 ZooBC 钱包或节点文件是否为正版。 - 硬件钱包
ZooBC 为硬件钱包厂商制定的签名规范:设备在签署 ZooBC 交易之前必须解析、显示和计算什么,以及原因。 - 签名消息与加密消息
如何不通过交易证明对 ZooBC 地址的控制权(ZBC-MSG-v2),消息如何为接收方加密,以及节点 API 接受的其他签名。 - 网关
ZooBC 网关为浏览器做什么,它如何分发 API 请求,如何在链上注册并保持在列,以及它提供的 testnet 水龙头。 - 网页钱包
官方 ZooBC 钱包如何工作:一个 HTML 文件,在你的设备上保存加密保险库,在浏览器中签名,持有多种格式的账户,并能离线签名。 - 节点 API
每个 ZooBC 节点都提供的 HTTP API:它涵盖哪些内容,如何读取链并提交交易,它的限制,以及节点提供的其他接口。