ZooBC ウィキ
トランザクション

アカウントグループ

アカウントグループとは、多数のアドレスから到達できる 1 つのアカウントです。スマートフォンのウォレット、ハードウェアウォレット、Ethereum のブラウザウォレットがすべてメンバーになることができ、そのどれに宛てた支払いも 1 つの共有残高に入ります。メンバーの 1 人であるコントローラーがグループを管理し、他の各メンバーが何を支出できるかを決めます。これにより、人やデバイスごとに支出の上限を持つ、家族や会社のアカウントが可能になります。

1 つのアカウント、多数のアドレス

グループの残高、トークン、その他所有するすべてのものは、グループを設立したトランザクションから導出される、鍵なしのグループアドレスに置かれます。

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

このアドレスの鍵を持つ者はいません。すべてのメンバーのアドレスはここに解決されます。どのメンバー宛ての支払いもグループに入金され、どのメンバーの残高を問い合わせてもグループの残高が返されます。各アドレスは自分のナンスを保持します。

1 つの残高を持つ鍵なしのグループアドレスを、コントローラー、支出できるメンバー、受け取り専用のメンバーが囲んでいます。新しいアドレスが加わるとすべてが移り、古いアドレスは新しい空のアドレスとして離れます
1 つの残高を持つ鍵なしのグループアドレスを、コントローラー、支出できるメンバー、受け取り専用のメンバーが囲んでいます。新しいアドレスが加わるとすべてが移り、古いアドレスは新しい空のアドレスとして離れます

グループはコントローラーを含めて最大 100 のアドレスを持てます。メンバーは署名できるどの鍵タイプでもよく(ZooBC、Bitcoin、Ethereum、Solana など。鍵とアカウントタイプ を参照)、マルチシグネチャ アカウントもメンバーになれます。

参加

新しいアドレスをリンクできるのはコントローラーだけで、LinkAccount によって、そのアドレスの同意がある場合に限ります。同意とは "ZBC-GROUP-LINK" というタグの付いたチェーン束縛ダイジェストに対する署名で、最大 5,760 ブロック(1 日)先まで有効で、1 回だけ使えます。同意は、そのアドレス自身の署名でも、マルチシグネチャアカウントのしきい値分の署名でも、Ethereum の personal_sign でもかまいません。

参加すると、そのアドレスが所有するすべてのものが、最大 1,000 項目までグループに移ります。残高、トークン、発行したトークン、データセット、ファイル、トリガー、スケジュール、オファー、注文、スポンサーシップ、そしてノードとサービスの登録です。

参加できないアドレスには次のものがあります。

  • グループアドレス
  • すでにグループに属しているアドレス(各アドレスは 1 つのグループにしか属せません)
  • 分配ポリシーを持つアドレス
  • アクティブなノード、ゲートウェイ、リレー、アーカイブの鍵
  • リリース権限者

離脱と引き継ぎ

メンバーは UnlinkAccount で離脱し、何も持ち出しません。そのアドレスは新しい空のアカウントとして再出発します。持ち込んだものはすべてグループに残ります。

コントローラーは、管理を引き継ぐ前に離脱することはできません。TransferGroupControl は管理を別のメンバーに渡し、そのメンバーは "ZBC-GROUP-CONTROL" というタグの付いた署名で同意しなければなりません。その後、元のコントローラーは受け取り専用になります。

権限

新しいメンバーは受け取り専用です。グループのために支払いを受け取ることと離脱することはできますが、支出はできません。コントローラーは SetMemberPermissions でそれを変更します。

  • ビット 0:メンバーは ZBC を支出できます。
  • ビット 1:メンバーはグループのトークンを動かせます(ビット 0 も必要です)。
  • 期間あたりの ZBC の上限。期間は 1 から 2,102,400 ブロック(1 年)で、上限 0 は無制限を意味します。

たとえば 5,760 ブロックあたり 5 ZBC の上限は、1 日 5 ZBC の支出枠です。

コントローラーだけが行える操作もあります。LinkAccount、SetMemberPermissions、TransferGroupControl、SetSplitPolicy、SetTransactPolicy です。グループの分配ポリシーは、どのメンバーに送られたお金にも適用されます(分配ポリシーと取引ポリシー を参照)。

すべての権限を持つコントローラーと、リンク、権限の設定、管理の引き継ぎにかかった南京錠のあるグループのプール。メンバーには、受け取り専用、無制限に支出可能、5,760 ブロックあたり 5 ZBC まで支出可能、トークンを動かせる、のタグが付いています
すべての権限を持つコントローラーと、リンク、権限の設定、管理の引き継ぎにかかった南京錠のあるグループのプール。メンバーには、受け取り専用、無制限に支出可能、5,760 ブロックあたり 5 ZBC まで支出可能、トークンを動かせる、のタグが付いています

上限の強制

メンバーの上限はウォレットの設定ではなく、コンセンサスのルールです。

  • 受け入れ時に、ノードはそのトランザクションがグループから取りうる ZBC の最大額(金額、手数料、延命デポジット、エスクローの手数料とレント)を計算し、それがメンバーの時間枠の残りを超える場合は、メンバーの他の保留中のトランザクションも数えたうえで拒否します。
  • 上限のあるメンバーのトランザクションが実行されるときは、セーブポイントの中で実行されます。チェーンはグループの残高が実際に失った額を測り、それが上限を超えていればトランザクションを取り消します。
  • 拒否されるべきメンバーのトランザクションを運ぶブロックは、すべてのノードで無効です。

各メンバーは自分のアドレスで署名するため、1 ブロックにつき 1 アカウント 1 トランザクションのルールのもとで、それぞれ自分の枠を持ちます。

トークンとレント

メンバーが発行したトークンはグループのものとなり、グループのために送金できるメンバーなら誰でも、後でそれをミントできます(トークンのミントとバーン を参照)。

グループは他のアカウントと同様に アカウントレントとプルーニング を支払い、さらにそのレコードのストレージレントを支払います。96 バイトとコントローラーのアドレスに、各メンバーにつき 40 バイトとそのアドレスを加えたものです。メンバーは自分のレントを支払いません。支払えないグループは解散し、残ったダストはロンジェビティプールに入ります(ZBC は決してバーンされない を参照)。

関連項目