トークンの設計思想
hazBaseでは、お金だけでは捉えにくい支援・利用・実績・参加も、権利や記録として扱います。何に価値を見いだし、誰と共有し、どのように使い続けるか。その考え方を、トークンの種類と運用ルールへ落とし込むためのガイドです。
価値と参加の関係から考える
トークンは、それだけで新たな価値や収益を生むものではありません。保有すると何ができるか、誰がその約束を支えるか、利用や活動の結果をどう確かめるかを具体的にすることで、継続的な支援や参加につながります。hazBaseでは、次の四つを設計の出発点としています。
実装の前に整理する四つのこと
業務側で決める条件と、システムで実行するルールをそろえます。最初は一つの権利・一つの処理を対象にすると、必要な機能を選びやすくなります。
何を1単位として表すか
対象の資産や活動と、保有者が持つ権利を分けて定義します。同じ設備でも、設備の識別票、利用権、契約上の持分では必要な構成が異なります。
例:設備そのものではなく、契約で定めた権利を1,000単位に分けて表す。
誰が受け取り、誰へ移せるか
本人にひも付く資格と、他者に移せる権利を区別します。移転を認める場合も、相手の参加条件や承認が必要かを整理します。
例:契約が成立した取引先を承認対象とし、許可済みの宛先間で移転できる構成を選ぶ。
数量と終了条件をどう扱うか
発行上限、小数桁、追加発行の条件を決めます。利用による消費、期限切れ、償還、誤発行の訂正は、それぞれ別の処理として整理します。
例:回数券は利用時に1回分を消費する。契約の終了時は、残高と業務上の精算結果を照合する。
誰が発行・変更・停止を行うか
発行担当、設定の管理者、業務上の承認者を対応づけます。停止が必要な操作と、停止中も継続する業務を分けておくと、障害時の判断が明確になります。
例:追加発行は業務承認後に実行し、停止・再開の判断者と履歴を残す。
現実の権利と、チェーンの記録を結ぶ
RWAでは、対象の資産・契約と、チェーン上の保有や移転を対応づけます。トークンの移転をどの権利の変更として扱うかは、業務上の取り決めと照合して確認します。
約束と根拠を管理する
資産台帳・契約原本・本人確認・承認・点検や稼働の記録。必要な人が参照できる権限で管理します。
定めたルールで記録する
発行数・保有者・残高・移転・利用による消費など。必要な操作と参照範囲に合わせて構成します。
資産ID・契約ID ↔ chainId・コントラクトアドレス・必要に応じたtokenId。操作ID ↔ 取引ハッシュ・イベント。
透明性は、すべての情報を公開することではありません。何を誰が検証できるかを決め、個人情報や契約原本はアクセス制御した保管先に置きます。記録が正しく送信されたことと、現実の資産や実績が正しいことを分け、確認者と証拠も残します。
表したいものからトークンを選ぶ
一つずつ識別するものと、同じ単位を数量で扱うものでは、適したコントラクトが異なります。次は構成を選ぶための目安です。名前から仕様ページへ進むと、主要な操作とSDK・ソースコードを確認できます。
| 表したいもの | 構成の候補 | 選ぶときの確認点 |
|---|---|---|
| 同じ権利を数量・口数で扱う | FlexibleToken | 発行上限、小数桁、追加発行、移転の条件。設備に関する権利やポイントなど。 |
| 条件・発行単位の異なる債権 | BondToken | 条件をclass、発行単位をnonceで区別。利払い・償還はDebtManagerと組み合わせて設計。 |
| 一つずつ識別する資産・資格 | PrivilegeNFT | tokenIdごとの保有者と情報。設備の識別票や個別の会員資格など。 |
| 種類ごとに複数ある利用券・特典 | PrivilegeEdition | 種類ごとの数量と利用時の消費。回数券やランク別の特典など。 |
| 評価指標・資格情報 | MultiTrustCredential | 更新できる主体と証明の条件。評価の根拠は業務記録と対応づける。 |
例えば、設備の識別票と、その設備に関する契約上の権利は別々に表せます。必要な役割を分けて組み合わせることで、利用券・評価・投票などを同じトークンに詰め込まずに設計できます。
保有・承認・実行の権限を分ける
トークンを持つ人、業務を承認する人、コントラクトを操作できる人は、必ずしも同じではありません。画面上の承認とチェーン上の権限を対応づけると、担当者が変わっても運用を引き継げます。
参加と移転
本人確認や審査の結果を、参加許可の更新へつなげます。Whitelistを使う場合は、参照するトークン側の設定と、許可の追加・解除が既存の保有や移転へ与える影響を確認します。
Whitelist停止と再開
停止対象と権限を事前に設定します。停止要求後も各コントラクトの状態を確認し、業務台帳との照合を終えてから再開を判断します。停止は過去の取引を取り消す操作ではありません。
EmergencyPauseManager具体例:設備の権利を1,000単位で表す
配送ロボットROBOT-A-001に関する契約上の権利をFlexibleTokenで表し、取引先へ最初の10単位を割り当てる設計例です。以下は設計項目の整理で、APIの入力形式ではありません。
- 対象と権利
- ROBOT-A-001/契約AGR-2027-001。1単位が表す権利と、その権利を履行する主体を契約で定める。
- 数量
- 上限1,000単位、小数桁0。初回は10単位を新規発行し、発行済み総数と相手の残高はいずれも10になる。
- 受取先と承認
- 契約成立を確認した宛先を対象とする。資産・契約・数量・宛先の承認後、発行権限を持つアカウントが実行する。
- 完了と記録
- 確定した発行結果と台帳の10単位を照合し、操作IDから契約・承認・取引ハッシュを追跡できる状態にする。
設計を実装につなげる
ここまでで整理した権利、数量、参加条件、権限、記録をもとに、必要な機能を組み合わせます。各実装パターンには、データモデル・処理手順・SDKのコード例を掲載しています。