RugWard Pay
Сплиттер комиссии Base (0,5%)
Как платежи в ETH и USDC в сети Base делятся on-chain между вами (99,5%) и RugWard (0,5%) прямо в транзакции покупателя и как проверить контракт самостоятельно.
На этой странице
Что это#
В сети Base платежи в ETH и USDC проходят через небольшой неизменяемый контракт — сплиттер RugWard Pay (splitter). В единственной транзакции покупателя он отправляет 99,5% на ваш адрес и 0,5% на кошелёк комиссий RugWard. Деньги идут напрямую от покупателя к вам; контракт никогда не хранит баланс.
| Сеть | Base (chain id 8453) |
| Сплиттер | 0x476EB0fECACA54d1311DB81bD3523cB0Dc66Dfab |
| Кошелёк комиссий | 0xd3651425E1942f6b81dE2602093BbaEac466c666 |
| Комиссия | FEE_BPS = 50 (0,5%), с округлением вниз |
| Хеш исполняемого кода | 0xfbeadea59a5f03449a5e59bf11709160e03040568062bb2f0ba8fa779b8fd64d |
| Активы, проходящие через него | только ETH-8453 и USDC-8453 |
Сплиттер используется только в Base. Во всех остальных сетях (Bitcoin, Monero, Litecoin, Tron, Solana, Ethereum, Arbitrum, BNB Chain, Polygon, Optimism, Avalanche) платежи идут прямо на ваш адрес, без деления on-chain и без комиссии RugWard (акция к запуску). USDT в Base не предлагается.
Зачем сплиттер#
Комиссия взимается прозрачно, on-chain, в момент оплаты, и 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 сопоставляет платёж со счётом.- Нет владельца, админ-функций, паузы, обновления и способа что-либо вывести: пять публичных функций выше — это весь контракт. Платежи на нулевой адрес или на сам сплиттер откатываются (revert).
Что делает страница оплаты#

- Котировка содержит новый случайный
ref, ваш адрес и адрес сплиттера. - Прежде чем что-либо подписывать, браузер покупателя читает код сплиттера из Base и сравнивает его хеш с проверенной сборкой. При несовпадении процесс останавливается.
- ETH: одна транзакция,
payNative(merchant, ref). USDC: кошелёк спросит дважды: одобрить сплиттеру ровно сумму, затемpayToken(USDC, merchant, amount, ref). - RugWard зачисляет платёж, только если событие
Paidпришло от зарегистрированного сплиттера (хеш кода повторно проверяется on-chain, кешируется на 10 минут), содержитrefэтой котировки, ваш адрес и нужный токен, а комиссия ровно равнаfeeOf(amount). Зачисляется сумма, дошедшая до вас. - Через 30 подтверждений блока счёт становится paid.
Важные следствия:
- Простой перевод ETH или USDC на ваш адрес для котировки Base не распознаётся автоматически. Если покупатель сделал так по ошибке, деньги у вас в кошельке; урегулируйте вручную (см. Несопоставленные платежи).
- Счёт считается оплаченным, когда до вас доходит 99,5% суммы котировки (покупатель платит 100%).
- Если ваш адрес получения — кошелёк-смарт-контракт, он должен принимать простые переводы ETH (обычный Safe или smart account принимает).
- Если покупатель одобрил USDC, а затем бросил оплату, на сплиттере остаётся разрешение ровно на эту сумму. Оно безвредно (потратить его может только сам покупатель через
payTokenи только для оплаты продавцу), и покупатель может удалить его в Approvals.
Проверьте сами#
Любой может проверить развёртывание публичными инструментами, например cast из Foundry:
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 (модульными и fuzz). Независимая компания его не проверяла. Его код и поведение достаточно малы, чтобы прочитать их за несколько минут; интерфейс выше полный.
Обновлено: 30 октября 2026 г.