中继
ZooBC 钱包可以显示哪些联系人在线,并在账户之间建立通话。两个浏览器通常无法直接相互连接,因此它们需要在开放的互联网上有一个会合点。中继就是这个会合点。它传送信令,两个钱包借此找到彼此;它告诉钱包通话本身该使用哪些服务器;它还报告谁在线。中继登记在链上,因此钱包无需任何中央目录就能找到它们。
中继做什么
中继以三种方式为钱包服务:
- 信令:两个钱包为建立通话而交换的简短消息,通过
/relay/ws上的 WebSocket 传送。 - 在线状态:此刻哪些账户在线。
- 连接协助:TURN 和 ICE 服务器,让位于家用路由器后面的两个浏览器能够互相连通以进行通话。
每个中继在 /relay/info 描述自己:运营者的收款地址、费率、TURN 服务器和信令路径。经中继传送的数据通过向运营者的地址发送 ZBC 来付费,没有资金的账户会被拒绝。
登录
中继必须知道哪个账户真正在线,否则任何人都可以冒充任何人。因此,钱包用自己的账户密钥签署中继发来的一次性质询来登录。质询不能重复使用,密钥也从不离开钱包。
在链上登记中继
所有者用 RegisterRelay(类型 48)登记中继,其中写明:
- 中继自己的密钥,写作
ZBR_…; - 它所属网关的密钥,该网关必须是同一账户拥有的活跃网关;
- 它的域名和 URL,规则与网关相同:域名只能使用字母、数字、点和连字符,URL 必须以
https://开头。
不锁定任何质押。所有者用 UnregisterRelay(类型 49)撤回该条目,钱包在 GET /api/v1/registry/relays 查找中继。当自己的网关失效时,网页钱包会重新读取链上的网关、中继和归档服务列表。
中继不做什么
- 它们不转发交易。节点自己把交易传给对等节点,并且不为此收费。
- 它们不为跨链桥监视其他链;这由已注册节点旁边的守护者程序完成(跨链桥与封装币)。
- 它们不产出区块;只有已注册节点才出块(运行节点)。
- 它们从不持有用户的密钥。