RugWard Pay
Base 手数料スプリッター(0.5%)
Base 上の ETH と USDC の支払いが、購入者自身のトランザクション内でオンチェーンにあなた(99.5%)と RugWard(0.5%)に分割される仕組みと、コントラクトを自分で確認する方法。
スプリッターとは#
Base では、ETH と USDC の支払いは小さく変更不可能なコントラクト、RugWard Pay スプリッター(splitter)を経由します。購入者の 1 回のトランザクションで、99.5% をあなたのアドレスへ、0.5% を RugWard 手数料ウォレットへ送ります。資金は購入者からあなたへ直接移動し、コントラクトが残高を保持することはありません。
| ネットワーク | Base(chain id 8453) |
| スプリッター | 0x476EB0fECACA54d1311DB81bD3523cB0Dc66Dfab |
| 手数料ウォレット | 0xd3651425E1942f6b81dE2602093BbaEac466c666 |
| 手数料 | FEE_BPS = 50(0.5%)、切り捨て |
| ランタイムコードハッシュ | 0xfbeadea59a5f03449a5e59bf11709160e03040568062bb2f0ba8fa779b8fd64d |
| 経由する資産 | ETH-8453 と USDC-8453 のみ |
スプリッターを使うのは Base だけです。 その他すべてのネットワーク(Bitcoin、Monero、Solana、Ethereum、Arbitrum、BNB Chain、Polygon)では、支払いはオンチェーン分割も RugWard 手数料もなしに、あなたのアドレスへ直接送られます(ローンチ特典)。Base では USDT は提供されていません。
なぜスプリッターなのか#
手数料は支払いの瞬間にオンチェーンで透明に差し引かれ、RugWard があなたの資金を預かることは一切ありません。あなたも購入者も BaseScan で両方の送金を確認でき、誰も割合を変更できません。変更不可能なコード内の定数だからです。
コントラクト#
uint256 public constant FEE_BPS = 50; // 0.5 %
address public immutable feeWallet; // 0xd3651425E1942f6b81dE2602093BbaEac466c666
event Paid(bytes32 indexed ref, address indexed merchant, address indexed token,
address payer, uint256 amount, uint256 fee); // token = 0x0 for ETH
function feeOf(uint256 amount) public pure returns (uint256); // amount * 50 / 10000, rounded down
function payNative(address merchant, bytes32 ref) external payable;
function payToken(IERC20 token, address merchant, uint256 amount, bytes32 ref) external;payNative:購入者が ETH を送ると、コントラクトは同じ呼び出しでvalue − feeをあなたに、feeを手数料ウォレットに転送します。payToken:購入者がスプリッターに金額ちょうどの承認を与えた後、transferFromでamount − feeを購入者からあなたへ、feeを手数料ウォレットへ移動します。トークンがコントラクトに留まることはありません。Paidは見積もりのランダムな 32 バイトのrefとともに発行されます。RugWard はこのイベントで支払いと請求書を照合します。- オーナー、管理者関数、一時停止、アップグレード、引き出し手段はいずれも存在しません。上記の 5 つの公開関数がコントラクトのすべてです。ゼロアドレスやスプリッター自身への支払いはリバートされます。
チェックアウトの動作#

- 見積もりには新しいランダムな
ref、あなたのアドレス、スプリッターのアドレスが含まれます。 - 何かに署名する前に、購入者のブラウザが Base からスプリッターのコードを読み取り、そのハッシュをレビュー済みビルドと比較します。一致しなければ停止します。
- ETH: トランザクション 1 回、
payNative(merchant, ref)。USDC: ウォレットが 2 回確認します。スプリッターにちょうどの金額を承認し、その後payToken(USDC, merchant, amount, ref)を実行します。 - RugWard が支払いを計上するのは、
Paidイベントが登録済みスプリッターから発行され(コードハッシュをオンチェーンで再確認、10 分間キャッシュ)、この見積もりのref、あなたのアドレス、正しいトークンを含み、手数料がちょうどfeeOf(amount)に等しい場合だけです。計上される金額はあなたに届いた金額です。 - 30 ブロックの承認後、請求書は paid になります。
重要な影響:
- Base の見積もりに対してあなたのアドレスへ ETH や USDC を直接送金しても、自動では検出されません。購入者が誤ってそうした場合、資金はあなたのウォレットにあります。手動で処理してください(未照合の支払いを参照)。
- 見積もり金額の 99.5% があなたに届いた時点で請求書は支払い済みになります(購入者は 100% を支払います)。
- 受取アドレスがスマートコントラクトウォレットの場合、通常の ETH 送金を受け取れる必要があります(一般的な Safe やスマートアカウントは受け取れます)。
- 購入者が USDC を承認した後に支払いを中断した場合、その金額ちょうどの承認がスプリッターに残ります。これは無害です(購入者本人だけが
payToken経由で、しかも販売者への支払いにのみ使えます)。購入者は Approvals で取り消せます。
自分で確認する#
誰でも公開ツールでデプロイを確認できます。例えば Foundry の cast を使います:
RPC=https://mainnet.base.org
SPLITTER=0x476EB0fECACA54d1311DB81bD3523cB0Dc66Dfab
cast keccak $(cast code $SPLITTER --rpc-url $RPC)
# expected: 0xfbeadea59a5f03449a5e59bf11709160e03040568062bb2f0ba8fa779b8fd64d
cast call $SPLITTER "feeWallet()(address)" --rpc-url $RPC
# 0xd3651425E1942f6b81dE2602093BbaEac466c666
cast call $SPLITTER "FEE_BPS()(uint256)" --rpc-url $RPC
# 50
cast call $SPLITTER "feeOf(uint256)(uint256)" 25000000 --rpc-url $RPC
# 125000 (0.125 USDC of a 25 USDC payment)または BaseScan でアドレスを開き、Paid イベントと内部送金を確認してください。
Sepolia でテストする#
同じコントラクトビルドが Ethereum Sepolia の 0xbcb045fba82ce46ac073ac609cb227d20c450ce5 にデプロイされており、分割比率も同じ 99.5% / 0.5% です。ダッシュボードのテスト請求書は無料のテスト ETH とテスト USDC でこれを使うため、実際のお金を受け取る前に正確な流れを確認できます。
レビューの状況#
スプリッターは RugWard により社内レビュー済みで、当社独自の Foundry テスト(ユニットテストとファズテスト)でカバーされています。独立した企業によるレビューは受けていません。ソースと動作は数分で読めるほど小さく、上記のインターフェースがすべてです。
最終更新: 2026年10月30日