ZooBC 维基
ZooBC 基础

ZooBC 是什么

ZooBC 是一条拥有自己的币 ZBC 的公有区块链。任何人都可以开设账户、发送交易,并运行一个检查每个区块的节点。它的共识,即参与证明,没有挖矿:区块由抽签选出的已注册节点轮流产出,而新币归于那些为网络完成数据转发工作的节点。

拥有自己的币的公有链

ZooBC 不是另一个网络上的代币。它有自己的链、自己的节点和自己的原生币 ZBC,交易手续费、节点质押和租金都用 ZBC 支付。任何人都无需许可即可跟踪或检查这条链:每个区块、余额和交易都是公开的,任何节点的 API 都回答任何人的请求(账户与地址)。

ZooBC 有三个各自独立的网络:devnet、testnet 和 mainnet(devnet、testnet 与 mainnet)。每个网络都始于自己的创世区块,其哈希就是链的身份。

区块如何产生

大约每 15 秒产生一个新区块(区块与时间)。区块不是靠解谜题赢得的。节点注册表是链上允许产出区块的节点集合,每个区块之后,都会根据该区块的种子进行一次随机抽签,指定谁可以产出下一个区块(抽签)。每个节点都能重复这次抽签并得到相同的结果,因此来自未被抽中节点的区块会被拒绝。在抽签中,每个活跃席位的机会都相同:硬件、余额和质押都不会改变它。

参与证明还衡量维持网络运转的工作:把区块和交易传递给其他节点。当一个已注册节点从另一个已注册节点收到数据时,它会为此签署一份回执,而节点能出示的回执会改变它的参与分数。分数决定 coinbase 抽奖 的权重,这项抽奖分配每个区块的新币和手续费。安全性依靠 Ed25519 签名和 SHA3-256 哈希,而不是耗费的能源。

每 15 秒产生一个区块;每个区块都从节点注册表中抽签选出一个节点来产出它。没有挖矿。
每 15 秒产生一个区块;每个区块都从节点注册表中抽签选出一个节点来产出它。没有挖矿。

节点是什么

节点就是在一台计算机上运行的 ZooBC 软件。它下载整条链,按照与其他所有节点相同的规则检查每个区块和每笔交易,并保存由此得到的状态:余额、代币、节点注册表等等。它提供公开的 HTTP API(节点 API)以及位于 /wallet 的官方钱包页面(获取钱包并妥善保管)。

节点可以在两个层次上参与:

  • 跟随节点。 任何人都可以运行一个只跟随并检查链的节点。它让其所有者无需信任任何人即可核验一切,但它不产出区块。
  • 出块者。 加入节点注册表的节点可以产出区块。其所有者用一个普通账户注册节点密钥,锁定一笔质押,然后在队列中等待节点被准入(注册节点)。从此,该节点会被抽中出块,向协议为它指派的对等节点转发数据,为收到的内容签署回执,并按其分数分享新币。

钱包不是节点:它是与节点 API 通信的客户端。而且没有任何 ZooBC 节点进行挖矿。

内置于协议的功能

ZooBC 没有用于运行用户代码的虚拟机,没有 EVM,也没有 gas。每项功能都是一种内置交易类型,具有固定的字节布局和固定的规则:发送 ZBC、发行代币、在市场上下单、创建托管、存储文件、将账户关联成组、安排付款等等。从 0.5.8 版本起,协议定义了 73 个交易类型编号(交易、在 ZooBC 上能做什么)。

这是一种有意的取舍。每个节点都事先知道一笔交易可能做的所有事情,并以完全相同的方式应用它,因此一笔交易的效果绝不取决于由谁来处理它,钱包也能在签名之前算出最低手续费。作为代价,新类型的功能要随协议发布版本(发布版本与更新)一起推出,而不是通过部署合约来实现。

功能以交易类型的形式内置于 ZooBC 协议中:发送 ZBC、代币、市场、托管、数据集、文件、应用、账户组、定时转账;从 0.5.8 版本起共 73 种交易类型。没有用于运行用户代码的虚拟机。
功能以交易类型的形式内置于 ZooBC 协议中:发送 ZBC、代币、市场、托管、数据集、文件、应用、账户组、定时转账;从 0.5.8 版本起共 73 种交易类型。没有用于运行用户代码的虚拟机。

任何密钥都无法更改的规则

一条链的规则随其创世和节点软件而来。从 0.5.8 版本起,一条链有 121 条共识规则,全部从高度 0 起生效。没有任何密钥能通过签署一条消息来更改规则、参数或余额:余额只会通过每个节点都验证的交易而改变,而注册表的席位只能在固定的范围内调整少数几项价格(价格投票)。ZooBC Foundation 持有每条链最初的席位并发布命令行工具,但它没有主密钥。

另见