はじめに
ホットリンク社R&D部のサンティです。最近は、Nonagon社と連携して、Web3について色々と調査やPoCを進めています。
今回のテックブログ記事ではINTMAXという意欲的で興味深いイーサリアム レイヤー2プロジェクトのBlock Builderの立ち上げ及び運用について紹介します。前編では、INTMAXの基本について簡単に説明しました。後編では、いよいよBlock Builderの立ち上げ手順について詳細に説明していきます。
Block Builderノードの構築と運用
Block Builderとは
・INTMAXネットワークを支えるバリデーター的な役割を担うノードです
・通常のブロックチェーンのバリデーターとは異なり、INTMAXでは「Block Builder」と呼ばれています
・トランザクションの処理と新ブロックの生成を担当します
必要なもの
・サーバ
・docker
・ETHウォレット
・ETH建ての運用資金(最低0.01ETH以上)
・ScrollネットワークRPC
サーバ
公式ドキュメントの推奨スペックは下記の通りです。
・2 vCPU
・4 GB RAM
・10 GB SSD
筆者はN150搭載のミニPCで運用しています。
ソフトウェアの準備
1. Dockerのインストール
最新のDockerやDocker composeをインストールして下記のようにswarmモードを有効にします。
2. Block Builderのセットアップ:
# Mainnetスクリプトのダウンロード
curl -o builder.sh https://raw.githubusercontent.com/InternetMaximalism/intmax2/refs/heads/main/scripts/block-builder-mainnet.sh
chmod +x builder.sh
# 設定ファイルの生成
./builder.sh setup
# 環境変数の対話的設定
# RPCを聞かれたら、用意したRPCのURLをコピペしましょう。
# ETHウォレットの秘密鍵を聞かれたら、秘密鍵をコピペしてEnterを押します。
#(非表示なので安心)
./builder.sh setup-env
# 環境チェック
# すべてOKを確認しましょう
./builder.sh check
ETHウォレット
Block Builderの運用にはETH資金とETH建てのガス代報酬の受取にはETHウォレットが必要です。使い慣れたウォレットでも構いませんが、一般的に使われるMetamaskの場合は下記の手順でウォレットを作成し、秘密鍵を獲得しましょう。
新しいアカウントを追加する
シークレットリカバリーフレーズで管理されているウォレット内に、新しいアドレス(アカウント)を追加する方法です。
手順
1. MetaMaskの画面右上に表示されているアカウントアイコンをクリックします。
2. 表示されたメニューから「アカウントを作成」を選択します。
3. 任意のアカウント名を入力し、「作成」をクリックすると新しいウォレットアドレスが追加されます。
秘密鍵を確認・エクスポートする
MetaMaskで作成した個別のアカウントの秘密鍵を表示、エクスポートする手順です。秘密鍵の流出はウォレット内の資産の流出に直結するため、取り扱いには最大限の注意を払い、絶対に他人に教えないでください。
手順
1. MetaMaskのウォレット画面を開き、秘密鍵を表示したいアカウントが選択されていることを確認します。
2. ウォレット画面右上の「縦に3つ並んだ点(︙)」のアイコンをクリックし、「アカウント詳細」を選択します。
3. 「秘密鍵のエクスポート」をクリックします。
4. MetaMaskのパスワードを入力して「確認」をクリックすると、秘密鍵が表示されます。
ETH建ての運用資金
上記に作ったETHウォレットに0.015ETH程度にETHを入れておきましょう。そして、下記のScrollレイヤー2ページへ資金を移動します。
https://portal.scroll.io/bridgeのページを開き「Connect Wallet」をクリックします。

MetaMaskを選んで接続します。
INTMAXのBlock Builderを運用するために0.01ETH以上ScrollへBridgeしておく必要があります。

資金移動は約15分ほどかかります。着金は「https://scrollscan.com/address/0x」で始まるETHウォレットのアドレスで確認できます。

ScrollネットワークRPC(5分で完了)
①Infuraにログイン/アカウント作成
1. https://infura.ioにアクセス
2. ログイン、またはアカウントを新規作成
→メール認証だけでOK
②新規プロジェクト(API Key)を作成
1. Dashboard(左メニュー)→“Web3 API”を選択
2. 右上の“Create API Key”をクリック
3. プロジェクト名を入力し、Networkは何でもOK(後でScrollを選ぶだけなので)
4. 作成完了するとAPI Key(Project ID/Project Secret)が発行される
③ScrollをNetworkに追加
Infuraは2024からScrollを公式サポートしており、以下の手順でRPC URLを取得できます。
1. 作成したAPI Key(プロジェクト)を開く
2. “Endpoints”タブを選択
3. Network(チェーン)のプルダウンから“Scroll”を選ぶ
・Scroll Mainnet
4. 選ぶと、以下の形式のRPC URLが表示される:
■Scroll Mainnet RPCのURL
https://scroll-mainnet.infura.io/v3/<YOUR-PROJECT-ID>
※<YOUR-PROJECT-ID>が自分の発行されたInfura API Keyです。
④動作テスト(curl例)
curl https://scroll-mainnet.infura.io/v3/<PROJECT-ID> \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'
返ってくればOKです。
運用
1. Block Builderのセットアップ:
# 全サービスの起動
./builder.sh run
2. 稼働確認:
下記のように表示されれば、正常に稼働しています。初回またはしばらく停止したノードの起動は"ready":trueになるまで15分ほどかかる場合があります。
📄 Registration Information:
{
"registered": true,
"ready": true
}
🎉 Your Block Builder is healthy and all endpoints are accessible!
報酬
1. 報酬関連ソフトウェアの準備
INTMAXコマンドラインのためのRustをインストール
apt update
apt install -y build-essential pkg-config libssl-dev
#Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
#インストールの確認
which rustc
#githubからダウンロード
git clone -b main --single-branch https://github.com/InternetMaximalism/intmax2.git
cd intmax2/cli
#設定
#下記の<PROJECT-ID>を上記の作成したRPCのものを代入してください。
cat <<EOF > .env
ENV=prod
IS_FASTER_MINING=false
INDEXER_BASE_URL=https://api.indexer.intmax.io
STORE_VAULT_SERVER_BASE_URL=https://api.node.intmax.io/store-vault-server
LOCAL_BACKUP_PATH="data/mainnet"
STORE_VAULT_TYPE=remote_with_backup
BALANCE_PROVER_BASE_URL=https://api.private.zkp.intmax.io
USE_PRIVATE_ZKP_SERVER=true
VALIDITY_PROVER_BASE_URL=https://api.node.intmax.io/validity-prover
WITHDRAWAL_SERVER_BASE_URL=https://api.node.intmax.io/withdrawal-server
WALLET_KEY_VAULT_BASE_URL=https://api.keyvault.intmax.io/v1
DEPOSIT_TIMEOUT=180
TX_TIMEOUT=80
BLOCK_BUILDER_QUERY_WAIT_TIME=5
BLOCK_BUILDER_QUERY_INTERVAL=5
BLOCK_BUILDER_QUERY_LIMIT=20
LIQUIDITY_CONTRACT_ADDRESS=0xF65e73aAc9182e353600a916a6c7681F810f79C3
ROLLUP_CONTRACT_ADDRESS=0x1c88459D014e571c332BF9199aD2D35C93219A2e
WITHDRAWAL_CONTRACT_ADDRESS=0x86B06D2604D9A6f9760E8f691F86d5B2a7C9c449
REWARD_CONTRACT_ADDRESS=0xFe9Fca6e5AE58E6F06873D2beFB658424Ae07109
L1_RPC_URL="https://mainnet.infura.io/v3/<PROJECT-ID>"
L2_RPC_URL="https://scroll-mainnet.infura.io/v3/<PROJECT-ID>"
EOF
#初期化
cargo run -r -- key-from-backup-key --backup-key <ETHの秘密鍵>
#下記使うので「Spend Key」をメモ
2. 報酬の確認と回収
1. ETH建て報酬の確認
単位はWeiなので1e-18を掛けるとETH単位になります。
cargo run -r -- balance --private-key <Spend Key>
2. ETH建て報酬の回収
<amount>は上記の報酬残高から必要な手数料(32500000000000wei)とガス代(2500000000000wei)以上を引くようにしましょう。また、ethereum-addressは運用に全然関係ないETH L1のアドレスでも大丈夫です。
cargo run -r -- withdrawal --private-key <spend-key> --to <ethereum-address> --amount <amount> --token-index 0
3. sITXトークン報酬の回収
cargo run -r -- claim-builder-reward --eth-private-key <ETHの秘密鍵>
Block Builder運用の経済性
・コスト:
・ブロック投稿時のScrollネットワークガス代(約0.000016 ETH/ブロック)
・日次のネットワーク登録スマートコントラクト実行(0.00000001〜0.00000126 ETH)
・収益:
・ユーザーフィー:トランザクション手数料(ETH建て)
・sITXトークン:プライバシーマイニングを支えるプロトコル報酬
おわりに
後編では、Block Builderの詳細な立ち上げ手順にご紹介しました。いかがでしたでしょうか?
本記事で、皆様がINTMAXのBlock Builderの運用に興味を持って頂ければ幸いです。
参考
https://github.com/InternetMaximalism/intmax2-docs/blob/main/developers-hub/intmax-block-builder/full-netwrok.md
https://github.com/InternetMaximalism/intmax2-docs/blob/main/developers-hub/intmax-block-builder/receive-rewards.md
筆者について

セーヨー・サンティ
株式会社ホットリンク 開発本部 R&D部
データサイエンティスト。タイ王国出身。キングモンクット工科大学(KMITL)工学部卒業、東京大学大学院工学系研究科電子情報工学専攻博士課程修了。博士(工学)。2007年、ホットリンクに入社し、ソーシャルビッグデータの分析・活用に取り組んでいる。近年はXマーケティング支援技術の研究開発を担当している。