ZooBC 维基
运行节点

运行节点

ZooBC 节点就是在计算机上运行的 ZooBC 软件。它保存一份链的副本,按照与其他所有节点相同的规则检查每个区块和每笔交易,并提供公开的 HTTP API。任何人都可以运行节点,而一个只跟随链的节点已经能让其所有者无需信任任何人就检查一切。出块是另外一步:节点只有在节点注册表中持有席位后才会出块。

节点运行什么

节点是一个进程,以 zoobc-node --start node.conf 启动,使用一个 SQLite 数据库。它监听三个端口:

端口用途
8001点对点网络
8080HTTP API,它同时提供[[web-wallet网页钱包]]
8545[[metamaskMetaMask]] 使用的以太坊式 RPC 适配器,默认只在节点自己的机器上(回环)

节点从不自己构建创世区块。区块 0 必须已经在它的数据库中,而该区块的哈希就是链的身份(见 创世区块)。如果节点发现自己卡在一条无法离开的分支上(“卡住”),它会丢弃自己的链,并从锚定在脊链中的快照重建自身,因为 auto_resync 设置默认开启。发布版本还可以附带一个版本锚点,即一个已知的脊链区块,节点自己的脊链必须与之相符。新版本通过一个在节点旁边运行、由所有者控制的更新程序到达(见 发布版本与更新)。

从开启到出块

  1. 运营者创建两把密钥:一把用于机器的节点密钥,以及一把放在钱包中的所有者密钥(见 节点的密钥)。
  2. 所有者发送一笔注册交易,锁定一笔质押,并附带一份证明,表明两把密钥相互归属(见 注册节点)。
  3. 节点在按质押乘以等待时间排序的公开队列中等待(见 队列)。
  4. 准入计时器按协议设定的缓慢节奏,每次放入一个节点(见 准入节奏)。
  5. 获得准入后,节点会被抽中出块(见 抽签),向指派的对等节点转发区块和交易(见 回执与网络拓扑),并在短暂的成熟期之后分享奖励(见 成熟与收益)。

每条链都从 11 个由 ZooBC Foundation 持有的创世席位开始。其他所有人都通过队列加入,没有人挑选谁能进入。没有任何席位是人工授予的,也没有任何席位能像在工作量证明中那样凭算力赢得。

留在注册表中

席位靠做事来保住。已注册节点无论出于什么原因跳过了被抽中的轮次,都会进入缺席状态,直到它产出下一个自己的区块。缺席期间它什么也赚不到,其参与分数每个分数单位下降 5 分(满分 100 分),在节点数少于 2,880 个的网络上,一个分数单位为 12 小时。它签署的回执和发送的 ping 都不能结束这一状态;只有它自己的下一个区块才能。

连续第四次错过轮次时,节点还会被暂停:它退出出块者抽签,但保留席位。重新上线后,它的软件会发送一个 ping,这是一笔只有被暂停的节点才能发送的免手续费小额交易,它让节点以观察期身份重返抽签。如果分数降到零,节点就会被除名。详情见 错过轮次、暂停与除名;席位终止的所有方式见 退出注册表,所有数值见 mainnet 上的节点参数。

另见

本主题下的文章