Skip to content
RugWard
☰ Меню

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, и никто не может изменить процент: это константа в неизменяемом коде.

Контракт#

RugWardPaySplitter (public interface)
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).

Что делает страница оплаты#

Оплата в Base
Страница оплаты Base показывает итог, ваши 99,5%, комиссию 0,5% и адрес сплиттера
  1. Котировка содержит новый случайный ref, ваш адрес и адрес сплиттера.
  2. Прежде чем что-либо подписывать, браузер покупателя читает код сплиттера из Base и сравнивает его хеш с проверенной сборкой. При несовпадении процесс останавливается.
  3. ETH: одна транзакция, payNative(merchant, ref). USDC: кошелёк спросит дважды: одобрить сплиттеру ровно сумму, затем payToken(USDC, merchant, amount, ref).
  4. RugWard зачисляет платёж, только если событие Paid пришло от зарегистрированного сплиттера (хеш кода повторно проверяется on-chain, кешируется на 10 минут), содержит ref этой котировки, ваш адрес и нужный токен, а комиссия ровно равна feeOf(amount). Зачисляется сумма, дошедшая до вас.
  5. Через 30 подтверждений блока счёт становится paid.

Важные следствия:

  • Простой перевод ETH или USDC на ваш адрес для котировки Base не распознаётся автоматически. Если покупатель сделал так по ошибке, деньги у вас в кошельке; урегулируйте вручную (см. Несопоставленные платежи).
  • Счёт считается оплаченным, когда до вас доходит 99,5% суммы котировки (покупатель платит 100%).
  • Если ваш адрес получения — кошелёк-смарт-контракт, он должен принимать простые переводы ETH (обычный Safe или smart account принимает).
  • Если покупатель одобрил USDC, а затем бросил оплату, на сплиттере остаётся разрешение ровно на эту сумму. Оно безвредно (потратить его может только сам покупатель через payToken и только для оплаты продавцу), и покупатель может удалить его в Approvals.

Проверьте сами#

Любой может проверить развёртывание публичными инструментами, например cast из Foundry:

Check the contract yourself (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 (модульными и fuzz). Независимая компания его не проверяла. Его код и поведение достаточно малы, чтобы прочитать их за несколько минут; интерфейс выше полный.

Обновлено: 30 октября 2026 г.

Сплиттер комиссии Base (0,5%) · RugWard Документация | RugWard