adding-builder-codes について
オンチェーンアプリに Base Builder Codes を追加する開発者向けスキルです。フレームワークに応じて、技術スタックの特定から ERC-8021 によるトランザクション帰属の設定・検証まで案内します。
主な機能
- 01Privy、Wagmi、Viem、RPC の構成を判定
- 02ERC-8021 dataSuffix の生成
- 03クライアントまたは個別トランザクションで帰属を適用
- 04EIP-5792 Smart Wallet 呼び出しに対応
- 05帰属の検証手順を案内
活用シーン
- 01既存の Base アプリに Builder Codes を追加
- 02Web3 アプリのトランザクションを帰属
- 03Smart Wallet 呼び出しの帰属を設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ base/ skills --skill adding-builder-codesインストール後、Claude Code で/adding-builder-codesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/privy.mdrpc.mdsmart-wallets.mdviem.mdwagmi.md詳細
Builder Codes の追加
Base Builder Codes をオンチェーンアプリケーションに統合します。Builder Codes は ERC-8021 アトリビューションサフィックスをトランザクションの calldata に追加するため、Base はアプリのアクティビティを特定でき、紹介手数料を獲得できます。スマートコントラクトの変更は不要です。
このスキルを使うタイミング
開発者から次のような依頼があった場合に、このスキルを使います。
- 「アプリケーションに builder codes を追加して」
- 「トランザクションに builder code を追加する方法を教えて」
- 「Base のトランザクションで紹介手数料を獲得したい」
- 「builder codes を統合して」
- Base でトランザクションのアトリビューションを設定する
前提条件
- base.dev > Settings > Builder Codes で取得した Builder Code
- ERC-8021 サフィックスの生成に使う
oxライブラリ:npm install ox
統合ワークフロー
このチェックリストをコピーして、進捗を記録します。
Builder Codes Integration:
- [ ] Step 1: Detect framework (Required First Step)
- [ ] Step 2: Install dependencies
- [ ] Step 3: Generate the dataSuffix constant
- [ ] Step 4: Apply attribution (framework-specific)
- [ ] Step 5: Verify attribution is working
フレームワークの検出(最初に必ず実施)
実装の前に、使用されているフレームワークを特定します。
1. package.json を読み込み、ソースファイルを調べる
# Check for framework dependencies
grep -E "wagmi|@privy-io/react-auth|viem|ethers" package.json
# Check for smart wallet / account abstraction usage
grep -rn "useSendCalls\|sendCalls\|ERC-4337\|useSmartWallets" src/
# Check for EOA transaction patterns
grep -rn "useSendTransaction\|sendTransaction\|writeContract\|useWriteContract" src/
# Check Privy version if present
grep "@privy-io/react-auth" package.json
2. いずれかのフレームワークに分類する
| フレームワーク | 検出シグナル |
|---|---|
privy | package.json またはインポートに @privy-io/react-auth がある |
wagmi | package.json またはインポートに wagmi がある(Privy を使用していない) |
viem | package.json に viem があり、React フレームワークを使用していない |
rpc | ethers、window.ethereum、または Web3 ライブラリが検出されない |
複数検出された場合の優先順位:Privy > Wagmi > Viem > Standard RPC
3. ユーザーに確認する
先に進む前に、検出したフレームワークを確認します。
「[Framework] を使用していることを検出しました。[Framework] の方法で builder codes を実装します。よろしいですか?」
実装を始める前に、ユーザーの確認を待ちます。
実装方法
- Privy(
@privy-io/react-authv3.13.0 以降)→ references/privy.md を参照 - Wagmi(Privy を使用していない場合)→ references/wagmi.md を参照
- Viem のみ(React フレームワークを使用していない場合)→ references/viem.md を参照
- Standard RPC(ethers.js または生の
window.ethereum)→ references/rpc.md を参照
Step 2: 依存関係をインストールする
npm install ox
Wagmi/Viem の方法では viem >= 2.45.0 が必要です。Privy には @privy-io/react-auth >= 3.13.0 が必要です。
Step 3: dataSuffix 定数を生成する
共有定数を作成します(例:src/lib/attribution.ts または src/constants/builderCode.ts)。
import { Attribution } from "ox/erc8021";
export const DATA_SUFFIX = Attribution.toDataSuffix({
codes: ["YOUR-BUILDER-CODE"], // Replace with your code from base.dev
});
Step 4: アトリビューションを適用する
フレームワークごとのガイドに従います。
Privy の実装
references/privy.md を参照してください。プラグインベースで、設定の変更が 1 か所必要です。
Wagmi の実装
references/wagmi.md を参照してください。Wagmi クライアントの設定に dataSuffix を追加します。
Viem の実装
references/viem.md を参照してください。ウォレットクライアントに dataSuffix を追加します。
Standard RPC の実装
references/rpc.md を参照してください。ethers.js または生の window.ethereum のトランザクションデータに DATA_SUFFIX を追加します。
推奨される方法:すべてのトランザクションに自動でアトリビューションが適用されるよう、クライアントレベルで設定します。条件付きのアトリビューションが必要な場合にのみ、トランザクションごとの方法を使います。
Smart Wallets(EIP-5792 sendCalls)の場合:references/smart-wallets.md を参照し、capabilities 経由で渡します。
Step 5: アトリビューションを確認する
- base.dev:Onchain > Total Transactions でアトリビューション数を確認します
- ブロックエクスプローラー:tx hash を検索し、input data を表示して、末尾の 16 バイトが
8021の繰り返しであることを確認します - 検証ツール:builder-code-checker.vercel.app を使います
主な事実
- Builder Codes は Base 上で発行される ERC-721 NFT です
- サフィックスは calldata に追加されます。スマートコントラクトはこれを無視するため、アップグレードは不要です
- ガス代はごくわずかです。ゼロ以外の各バイトにつき 16 ガスです
- base.dev の分析機能は現在、Smart Account(AA)トランザクションに対応しています。EOA への対応は今後予定されています(アトリビューションデータは保持されます)
- Privy の
dataSuffixプラグインは Base だけでなく、すべてのチェーンに追加します。チェーンごとの動作が必要な場合は、Privy にお問い合わせください - Privy の
dataSuffixプラグインは、まだ@privy-io/wagmiアダプターに対応していません
トランザクション呼び出し箇所の特定
既存のプロジェクトに後付けする場合は、次のパターンを検索してください。
# React hooks (Wagmi)
grep -rn "useSendTransaction\|useSendCalls\|useWriteContract\|useContractWrite" src/
# Viem client calls
grep -rn "sendTransaction\|writeContract\|sendRawTransaction" src/
# Privy embedded wallet calls
grep -rn "sendTransaction\|signTransaction" src/
# ethers.js
grep -rn "signer\.sendTransaction\|contract\.connect" src/
# Raw window.ethereum
grep -rn "window\.ethereum\|eth_sendTransaction" src/
クライアントレベルで統合する場合(Wagmi/Viem/Privy)、通常は設定ファイルのみを変更すればよく、個々のトランザクション呼び出し箇所は変更されません。