ZooBC 维基
交易

账户组

账户组是一个可以通过多个地址访问的账户。手机钱包、硬件钱包和以太坊浏览器钱包都可以是成员,发往其中任何一个的付款都会进入同一个共享余额。其中一名成员,即控制者,负责管理该组,并决定其他每个成员可以花费多少。这使家庭账户和公司账户成为可能,并可以为每个人或每台设备设置消费额度。

一个账户,多个地址

组的余额、代币以及它拥有的其他一切,都存放在一个无密钥的组地址上,该地址由创建该组的交易派生而来:

group address = 00000000 ‖ SHA3-256( "ZBC-GROUP" ‖ founding transaction hash )

没有人持有它的密钥。每个成员地址都解析到它:付给任何成员的款项都记入该组,查询任何成员的余额都会返回该组的余额。每个地址保留自己的 nonce。

一个持有同一余额的无密钥组地址,周围是一名控制者、一名可以花费的成员和一名只能收款的成员;新地址加入时一切随之转入,旧地址退出时成为一个全新的空地址
一个持有同一余额的无密钥组地址,周围是一名控制者、一名可以花费的成员和一名只能收款的成员;新地址加入时一切随之转入,旧地址退出时成为一个全新的空地址

一个组最多容纳 100 个地址,包括控制者在内。成员可以是任何能够签名的密钥类型(ZooBC、比特币、以太坊、Solana 等;见 密钥与账户类型),多重签名账户也可以成为成员。

加入

只有控制者才能用 LinkAccount 关联新地址,而且必须得到该地址的同意:即对一个带有“ZBC-GROUP-LINK”标签的链绑定摘要的签名,有效期最多为未来 5,760 个区块(一天),且只能使用一次。这一同意可以是该地址自己的签名、多重签名账户达到阈值的签名,或以太坊的 personal_sign。

加入会把该地址拥有的一切转入组中,最多 1,000 项:它的余额、代币、已发行的代币、数据集、文件、触发器、定时计划、报价、订单、赞助,以及节点注册和服务注册。

不能加入的地址包括:

  • 组地址;
  • 已经属于某个组的地址,因为每个地址只能属于一个组;
  • 设有分账策略的地址;
  • 活跃的节点、网关、中继或归档密钥;
  • 发布机构。

退出与移交

成员用 UnlinkAccount 退出,不带走任何东西:该地址作为一个全新的空账户重新开始。它带入的一切都留在组中。

控制者在移交控制权之前不能退出。TransferGroupControl 把控制权交给另一名成员,后者必须用带有“ZBC-GROUP-CONTROL”标签的签名表示同意;原控制者随后变为只能收款。

权限

新成员是只能收款的:它可以代表组收款,也可以退出,但不能花费。控制者用 SetMemberPermissions 来改变这一点:

  • 位 0:成员可以花费 ZBC;
  • 位 1:成员可以转移组的代币(这同时需要位 0);
  • 每个周期的 ZBC 限额,周期从 1 到 2,102,400 个区块(一年);限额为 0 表示不设限额。

例如,每 5,760 个区块 5 ZBC 的限额,就是每天 5 ZBC 的额度。

有些操作只属于控制者:LinkAccount、SetMemberPermissions、TransferGroupControl、SetSplitPolicy 和 SetTransactPolicy。组的分账策略适用于发给任何成员的钱(见 分账策略与交易策略)。

组的资金池:控制者拥有全部权限,关联、设置权限和移交控制权上挂着挂锁,各成员分别标注为只能收款、可无限额花费、每 5,760 个区块可花费 5 ZBC,以及可转移代币
组的资金池:控制者拥有全部权限,关联、设置权限和移交控制权上挂着挂锁,各成员分别标注为只能收款、可无限额花费、每 5,760 个区块可花费 5 ZBC,以及可转移代币

限额如何执行

成员的限额是一条共识规则,而不是钱包设置:

  • 在接纳时,节点会算出这笔交易最多可能从组中取走多少 ZBC(金额、手续费、任何存续押金,以及托管的佣金和租金),如果这超过了该成员窗口中的剩余额度(同时计入该成员其他待处理的交易),就拒绝它;
  • 当受限成员的交易执行时,它在一个保存点内运行:链会测量组的余额实际减少了多少,如果超过限额,该交易就会被撤销;
  • 包含被拒绝的成员交易的区块在每个节点上都无效。

按照每个账户每个区块一笔交易的规则,每个成员各有自己的名额,因为每个成员都用自己的地址签名。

代币与租金

成员发行的代币属于该组,之后任何被允许代表该组发送的成员都可以铸造它(见 铸造与销毁代币)。

组和任何账户一样支付账户租金,此外还要为其记录支付存储租金:96 字节加控制者的地址,再加每个成员的 40 字节及其地址。成员自己不支付租金。无法支付的组会被解散,剩余的零头进入长效池(见 ZBC 从不销毁)。

另见