トークンの発行
どのアカウントも、1 つの IssueToken トランザクションで ZooBC 上に独自のトークンを作ることができます。書くべきコントラクトも、許可を求める相手もありません。トランザクションが有効かどうかはチェーンの固定されたルールが決め、ブロックがそれを取り込めばトークンが誕生し、発行者がその全供給量を保有します。その後トークンの単位は TransferToken で動き、エスクロー、ストリーム、スケジュール、スワップオファーに入れることができ、小数桁数が 8 ならマーケットへの注文にも入れられます。
IssueToken トランザクション
IssueToken(タイプ 10)は次のものを示します。
| フィールド | ルール |
|---|---|
| 小数桁数 | 0 から 8(小数桁数とステップ を参照) |
| フラグ | 償還可能と、ミントのモード(後述) |
| 総供給量 | 0 より大きく、トークンのステップの倍数 |
| ZBC の裏付け | 0 以上 |
| シンボル | 2 から 10 文字(後述) |
| 名前 | 1 から 64 バイト(後述) |
| 延命の支払い | 任意(トークン維持費(存続) を参照) |
フラグはビットです。ビット 0 はトークンを償還可能にします。ビット 1 と 2 はミントのモードを設定し、0 は固定供給量、1 はミント可能なトークンです。値 2 と 3 は拒否されます。ビット 3 の「裏付けなし」は保存され報告されますが、それを読むルールはありません。2 つのスイッチで何ができるかは トークンのミントとバーン で説明しています。
アカウントグループのメンバーが発行したトークンは、グループのものになります。
裏付け
裏付けとは、発行者がトークンに入れる本物の ZBC です。それは発行者の残高から出ていき、誰のアカウントでもなく、トークン自身が保持します。ノードは、発行者が保有していない裏付けを拒否します。ZBC が外に出てくるのは、次の 3 つの方法だけです。
- 償還可能なトークンの単位をバーンした保有者へ
- 手数料がトークンで支払われるときに放出される ZBC として(後述)
- トークンが失効したときに保有者へ(トークン維持費(存続) を参照)
トークン ID
ユーザートークンの ID は、その IssueToken トランザクションのハッシュの最初の 8 バイトを、リトルエンディアンの符号付き 64 ビット整数として読んだものです(その数が 0 なら 1)。したがって、それは発行トランザクション自身の ID です(トランザクションへの署名 を参照)。ID はトランザクションが署名された時点で分かり、ノードがカウンターについて合意する必要はまったくありません。API は ID を符号付きの 10 進文字列で表示するため、ID が負になることもあります。
シンボルは一意ではありません。有効な 2 つのトークンが同じシンボルを持つこともあり、予約もブロックもされていないシンボルは誰でもコピーできます。ウォレットやアプリは、シンボルだけでなく ID を表示して確認すべきです(チェーンデータは信頼できない入力 を参照)。
シンボルと名前のルール
シンボルは 2 から 10 文字で、各文字は A から Z の大文字か 0 から 9 の数字です。これにより、小文字や他のアルファベットのよく似た文字は排除されます。さらに 2 つのルールがよく知られた名前を守ります。
- 予約:Z で始まるか Z で終わる 4 文字または 5 文字のシンボル(ZBTC や BTCZ など)は、ブリッジの名前空間に属します。ZABCDE のような 6 文字のシンボルは許されます。
- ブロック:誰も成りすますことのできない、よく知られた 78 のティッカーの組み込みリストです。17 の通貨(USD、EUR、CNY、JPY など)、18 のステーブルコイン(USDT、USDC、DAI など)、43 の主要なコイン(BTC、ETH、BNB、SOL、XRP、ADA、DOGE など)です。
名前は、有効な UTF-8 の 1 から 64 バイトです。文字 <、>、"、' とバッククォートを含んではならず、制御文字、ゼロ幅文字、方向を変える文字、通常のスペース以外の空白を含んではならず、スペースで始まったり終わったりしてもなりません。
単位を動かす:TransferToken
TransferToken(タイプ 11)は、トークン ID、ステップの倍数である金額、受取人、手数料をトークンで支払うための任意のフラグ、そして任意の延命の支払いを運びます。トークン ID 0 は拒否されます。ZBC はトークンではなく、SendZBC で動くからです。送信者が保有するより多くの単位を送る転送は有料の空操作です。手数料を支払い、何も動かしません。
トークンの転送は、エスクローにすることも(エスクロー を参照。その場合、手数料は ZBC で支払われます)、ストリームにすることも(リキッドペイメント(ストリーム) を参照)、スケジュールにすることも(スケジュール送金 を参照)できます。バージョン 0.5.8 以降、1 つのトランザクションで、どのトークンのものでも最大 32 件のトークンの転送をバッチとして運ぶことができます。バッチは全部実行されるかまったく実行されないかのどちらかで、費用は単独の転送の手数料の合計を ZBC で支払い、メッセージの料金は 1 回だけ課されます(1 ブロックにつき 1 アカウント 1 トランザクション、そしてバッチ を参照)。
手数料をトークンで支払う
ZBC の裏付けを持つトークンは、自身の転送の費用を支払うことができます(フラグのバイトが 1)。トークンは下限をまかなうために裏付けから ZBC を放出し、それに見合う単位を手放します。
units given up = ceil( released ZBC × supply ÷ backing ), rounded up to the step
供給量と裏付けの両方が減ります。申告した手数料が下限を上回る場合、超過分はトークンに残ります。