Skip to content

5-1. 実践前の準備と安全な進め方

This content is not available in your language yet.

Level 5では、読むだけでなく、ローカルの xrpld に実際の変更を入れて挙動が変わることを確認します。題材は SetRegularKey です。実装、ヘッダ、テストが小さくまとまっていて、初心者が最初に触る題材として向いています。

このLevelは、初めて xrpld の実装を安全に触るための実践章です。終えるころには、次の流れを一通り経験できていれば十分です。

  • 既存トランザクションの定義、実装、テストを対応づけて読む
  • 小さな変更でテスト結果が変わることを確認する
  • 学習用の挙動変更と、PR候補になるテスト追加を切り分ける
  • 変更前後の差分を自分で説明できる

このLevelでは、XRPLF/rippled リポジトリルートからの相対パスでソースを参照します(Level 2 の ディレクトリ構造 と同じ表記です)。

include/xrpl/tx/transactors/account/SetRegularKey.h
src/libxrpl/tx/transactors/account/SetRegularKey.cpp
src/test/app/SetRegularKey_test.cpp
include/xrpl/protocol/detail/transactions.macro

SetRegularKey は、アカウントに Regular Key を設定したり削除したりするトランザクションです。transactions.macro では、次のように sfRegularKey を任意フィールドとして持つトランザクションとして定義されています。

TRANSACTION(ttREGULAR_KEY_SET, 5, SetRegularKey,
Delegation::NotDelegable,
uint256{},
NoPriv,
({
{sfRegularKey, SoeOptional},
}))

sfRegularKey がある場合は設定、ない場合は削除です。この「フィールドがあるかどうかで挙動が変わる」点が、最初の実験にちょうどよい大きさです。

このLevelでは、次の順番で進めます。

  1. SetRegularKey の定義、実装、テストを対応づけて読む
  2. 既存テストを1つ実行し、現在の挙動を確認する
  3. 学習用の小さな挙動変更を入れる
  4. テストが失敗することを確認する
  5. テストまたは実装を調整し、すべてのテストが通る状態に戻す
  6. 実験変更とPR候補になる変更を切り分ける

実験は必ず専用ブランチで行います。xrpld-test 側で作業する想定です。

Terminal window
cd xrpld-test
git switch -c dojo/level5-set-regular-key

作業前に差分がないことを確認します。

Terminal window
git status

すでに差分がある場合は、その差分が自分の作業か確認してから進めてください。学習用の変更と既存の変更が混ざると、あとで戻すべき範囲がわかりにくくなります。

ビルド済みであれば、SetRegularKey のテストだけを実行できます。

Terminal window
cd xrpld-test/.build
./xrpld --unittest SetRegularKey

環境によっては、絞り込みオプションを使ってもかまいません。

Terminal window
./xrpld --unittest --unittest-match "SetRegularKey"

準備ができたら、SetRegularKeyを読んで変える に進みます。次のページでは、実際の preflight()doApply() を読み、ローカルで挙動を変えてみます。