ZooBC 维基
代币与市场

分账策略与交易策略

有两项账户设置决定了哪些东西能到达一个账户。分账策略把收到的每一笔入账(无论是 ZBC 还是任何代币)按固定份额转给最多十个其他地址:可用于版税、合作伙伴之间的收入分成或自动储蓄。交易策略在两个方向上拒绝整类交易,例如,这样就没有人能向该账户发送不想要的代币。每项设置都用一笔交易设定,并一直有效,直到被更改。

分账策略

SetSplitPolicy 交易(类型 54)列出最多 10 个接收方,每个接收方都有一个以基点表示的份额(100 个基点等于 1%):

  • 每个份额至少为 1 个基点,所有份额合计最多为 10,000(100%);
  • 同一接收方不得出现两次,账户也不得指定自己;
  • 每个接收方都必须能够持有资金。

交易体为 00 时清除该策略。

哪些入账会被分账

该策略适用于每一笔入账,包括 ZBC 和代币:付款、托管释放、触发器、流式支付的付款、归属付款、代币转账、交易成交、应用赔付以及奖励。它不适用于账户自有资金的退款(例如退回给发送方的托管款)、拉取模式的定时转账付款,以及跨链桥铸造。

每个份额为 floor(amount × basis points ÷ 10,000),未分配的部分(包括取整的余数)留在该账户中。份额不会层层传递:接收方自己的分账策略不会应用于它通过分账收到的款项,因此资金不会循环流转。交易策略拒收付款的接收方会被跳过,其份额留在该账户中。

100 个单位到达一个账户,其分账器把 30 发给 A、20 发给 B,自己保留 50;A 自己的分账器对这份份额处于关闭状态:不会层层传递
100 个单位到达一个账户,其分账器把 30 发给 A、20 发给 B,自己保留 50;A 自己的分账器对这份份额处于关闭状态:不会层层传递

在账户组中,只有控制者才能设置该策略,组的策略适用于发送给任何成员的资金。设有分账策略的地址不能加入账户组。

交易策略

SetTransactPolicy 交易(类型 50)在账户上存储一个 2 字节的掩码。每一位在两个方向上拒绝一类交易:账户既不发送也不接收这类交易。

位类别
0支付
1应用
2代币
3交易所
4数据存储
5托管与多重签名
6节点基础设施
7桥接(AttestEvent)
8治理

少数类型永远不会被拒绝:Empty、SetTransactPolicy、SetSplitPolicy、存续相关的交易类型以及账户组相关的交易类型。

九个类别开关,其中“代币”被关闭;一笔传入的代币转账停在闸门前,其手续费进入奖励池,代币被退回给发送方
九个类别开关,其中“代币”被关闭;一笔传入的代币转账停在闸门前,其手续费进入奖励池,代币被退回给发送方

拒绝如何生效

策略所禁止的交易一经提交就会被节点拒绝。如果某个区块仍然携带了这样的交易,它会被退回:发送方支付手续费,但没有任何东西转移。只有交易信封中指明的接收方会被检查,而且是在交易执行时检查。链之后代表先前某笔交易所做的付款,例如定时转账付款、触发器释放和流式支付的付款,仍然会到达已选择拒收的接收方。

交易策略不是手续费设置,因为手续费由每笔交易的下限决定;它也不选择出块者,出块者由链抽签产生。关于共享账户成员的支出限额,见 账户组。

另见