6-1. 本格実装の入口
This content is not available in your language yet.
Level 5では、SetRegularKey を題材にローカルで xrpld を変え、テストで挙動の変化を確認しました。Level 6では、その先に進みます。新しいトランザクションタイプ、アメンドメント、Invariant Checkのように、XRPLのルールそのものに関わる変更をどう設計するかを学びます。
Level 5とLevel 6の違い
Section titled “Level 5とLevel 6の違い”| Level | 目的 | 変更の性質 |
|---|---|---|
| Level 5 | ローカルで変化を体感する | 学習用の小さな変更、既存挙動のテスト追加 |
| Level 6 | 本格的な変更を設計する | 新機能、アメンドメント、Invariant、レビュー前提の設計 |
Level 6で扱う内容は、すぐに初心者がPRとして出すことを勧めるものではありません。まずは既存コードを正確に読み、「どのファイルを触る必要があるか」「なぜアメンドメントが必要か」「どの不変条件を守るべきか」を説明できるようになることが目標です。
本格実装で考えること
Section titled “本格実装で考えること”新機能を入れるときは、最低でも次の問いに答える必要があります。
- その変更は既存のトランザクション結果を変えるか
- アメンドメントで有効化を制御する必要があるか
- 新しいフィールドやLedgerエントリが必要か
- 失敗時の
TERはどれが適切か - Invariant Checkで守るべき条件はあるか
- アメンドメント有効時と無効時の両方をテストしているか
Level 6で読む実ファイル
Section titled “Level 6で読む実ファイル”このLevelでも、xrpld リポジトリルートからの相対パスを前提にします。
include/xrpl/protocol/detail/transactions.macroinclude/xrpl/protocol/detail/features.macroinclude/xrpl/tx/invariants/InvariantCheck.hsrc/libxrpl/tx/Transactor.cppsrc/libxrpl/tx/invariants/InvariantCheck.cppsrc/test/app/Level 6は、次の順番で進みます。
- 新しいトランザクションタイプを追加するときに触るファイルを把握する
- その変更をアメンドメントで守る理由を理解する
- Invariant Checkで最後に守るべき条件を考える
- 設計判断を含むPRとして説明する練習をする
次のステップ
Section titled “次のステップ”まずは 新しいトランザクションタイプを追加する流れ に進み、transactions.macro からTransactor実装までの全体像を確認します。