5-1. 実践前の準備と安全な進め方
This content is not available in your language yet.
Level 5では、読むだけでなく、ローカルの xrpld に実際の変更を入れて挙動が変わることを確認します。題材は SetRegularKey です。実装、ヘッダ、テストが小さくまとまっていて、初心者が最初に触る題材として向いています。
Level 5のゴール
Section titled “Level 5のゴール”このLevelは、初めて xrpld の実装を安全に触るための実践章です。終えるころには、次の流れを一通り経験できていれば十分です。
- 既存トランザクションの定義、実装、テストを対応づけて読む
- 小さな変更でテスト結果が変わることを確認する
- 学習用の挙動変更と、PR候補になるテスト追加を切り分ける
- 変更前後の差分を自分で説明できる
使う実ファイル
Section titled “使う実ファイル”このLevelでは、XRPLF/rippled リポジトリルートからの相対パスでソースを参照します(Level 2 の ディレクトリ構造 と同じ表記です)。
include/xrpl/tx/transactors/account/SetRegularKey.hsrc/libxrpl/tx/transactors/account/SetRegularKey.cppsrc/test/app/SetRegularKey_test.cppinclude/xrpl/protocol/detail/transactions.macroSetRegularKey は、アカウントに Regular Key を設定したり削除したりするトランザクションです。transactions.macro では、次のように sfRegularKey を任意フィールドとして持つトランザクションとして定義されています。
TRANSACTION(ttREGULAR_KEY_SET, 5, SetRegularKey, Delegation::NotDelegable, uint256{}, NoPriv, ({ {sfRegularKey, SoeOptional},}))sfRegularKey がある場合は設定、ない場合は削除です。この「フィールドがあるかどうかで挙動が変わる」点が、最初の実験にちょうどよい大きさです。
Level 5で体験すること
Section titled “Level 5で体験すること”このLevelでは、次の順番で進めます。
SetRegularKeyの定義、実装、テストを対応づけて読む- 既存テストを1つ実行し、現在の挙動を確認する
- 学習用の小さな挙動変更を入れる
- テストが失敗することを確認する
- テストまたは実装を調整し、すべてのテストが通る状態に戻す
- 実験変更とPR候補になる変更を切り分ける
作業ブランチを作る
Section titled “作業ブランチを作る”実験は必ず専用ブランチで行います。xrpld-test 側で作業する想定です。
cd xrpld-testgit switch -c dojo/level5-set-regular-key作業前に差分がないことを確認します。
git statusすでに差分がある場合は、その差分が自分の作業か確認してから進めてください。学習用の変更と既存の変更が混ざると、あとで戻すべき範囲がわかりにくくなります。
テストだけを素早く回す
Section titled “テストだけを素早く回す”ビルド済みであれば、SetRegularKey のテストだけを実行できます。
cd xrpld-test/.build./xrpld --unittest SetRegularKey環境によっては、絞り込みオプションを使ってもかまいません。
./xrpld --unittest --unittest-match "SetRegularKey"次のステップ
Section titled “次のステップ”準備ができたら、SetRegularKeyを読んで変える に進みます。次のページでは、実際の preflight() と doApply() を読み、ローカルで挙動を変えてみます。