Zeroway
  • Introduction
    • 👀Overview
    • 👽About Us
    • 📚FAQ
  • Products
    • 1️⃣hNFT
      • Mint & Bridge
      • Contracts List
    • 2️⃣hFT
      • Mint & Bridge
      • Contracts List
    • 3️⃣Gas Refuel
      • ETH Bridge
      • Contracts List
    • 4️⃣Royalty
    • 5️⃣Refuel SaaS
  • 🤖Contract Interaction
    • hNFT ABI
    • hFT ABI
    • Gas refuel ABI
  • Links
    • 🌐Website
    • 🐦X (Twitter)
    • 💬Discord
    • 🔹Telegram
    • 📧Support
Powered by GitBook
On this page
  • Integration flow
  • Main system components
  • 2. User Flow
  • 3. Integrational methods
  • 4. Example
  • 5. Contract list
  • 5. Becoming a Zeroway partner
  1. Products

Refuel SaaS

PreviousRoyaltyNexthNFT ABI

Last updated 7 months ago

Integration flow

Main system components

  • User Wallet on chain A and Chain B

  • ZeroWayGasRefuelV1 smart contract

  • Saas partner wallet

  • Zeroway wallet

  • Hyperlane infrastructure contracts

ZeroWayGasRefuelV1 is a smart contract designed for interchain ETH transfers between different Ethereum L2 chains. Smart contract also supports SaaS (Solution as a Service) option allowing Zeroway to add partners who can integrate our contracts into their ecosystem and receive a share from all user transfers initiated from their own frontend directly into the specified wallet. in simple words, contract alows users to transfer ETH between chains and partners - to gain income without a need to support any bridge solutions.

Coponents described above are presented here:

2. User Flow

1-2. A user requests information aboult refuel volume limitations using refuelSettings(...) method

3-5. A user requests fee parameters for the indicated refuel using calculateRefuelFee(...) method ( or calculateRefuelFeeBatch(...) method)

6-7. User initiate transactional partnerRefuel(...) method (ortransactional partnerRefuelBatch(...)method), indicating the parther adress from the whitelist.

8-9. The paid fee will be distributed between user and parther according to the whileist settings

10-12. The crosschain intaraction is being processed

13-17. User receives his payment in the recepint chain If any problem arises, user can withdraw his finds using withdrawDebt(...) method when the ETH balance of the contract will be enough. Gas refuel contract tracs and stores all the transfers even with zero balance in it.

3. Integrational methods

refuelSettings

A method used to receive actual refuel settings

function refuelSettings() external view returns (RefuelSettings memory)

Returns RefuelSettingsstructure from which minRefuelAmount and maxRefuelAmount can be tacken

RefuelSettings structure :

struct RefuelSettings {
    uint256 minRefuelAmount;
    uint256 maxRefuelAmount;
    ... // The rest parameters are not nessessory for the pertner refuel
}

calculateRefuelFee

A method used for fee calculation

function calculateRefuelFee(
    address target_,
    uint256 amount_,
    uint32 destinationDomain_
) external view returns (uint256)

calculateRefuelFeeBatch

A method used for fee calculation for refuel batch

function calculateRefuelFeeBatch(
    address[] memory targets_,
    uint256[] memory amounts_,
    uint32[] memory destinationDomains_
) external view returns (uint256)

partnerRefuel

A method used for ETH transfer with indicated partner

function partnerRefuel(
    address target_,
    uint256 amount_,
    uint32 destinationDomain_,
    address partner_
) external payable returns (uint256, bytes32)
  • target_: user address where ETH are transferred

  • amount_: refuel amount

  • destinationDomain_: target chain ID

  • partner_: partner address where fee share is transferred

Returns the whole fee size and Hyperlane message ID.

partnerRefuelBatch

A method used for batch ETH transfer with indicated partner

function partnerRefuelBatch(
    address[] memory targets_,
    uint256[] memory amounts_,
    uint32[] memory destinationDomains_,
    address partner_
) external payable returns (uint256, bytes32[] memory)
  • targets_: user adresses array

  • amounts_: refuel amounts array

  • destinationDomains_: target chain IDs array

  • partner_: partner address

Returns the whole fee size and Hyperlane message ID.

userBalance

A method used to check user balance in the contract.

function userBalance(address user) external view returns (uint256)
  • user: user address

Returns user balance in the contract.

This method is needed to check if a user has any unwithdrawn funds from the contract which he can withdraw. The balance accures if the transfer was not successful because of any reasons.

withdrawDebt

A method used to withdraw user balance from the contract.

function withdrawDebt(address to_) external nonReentrant whenNotPaused
  • to_: an address where ETH will be withdrawn

This method is used to withdraw user balance. It's nessessory in cases when the revious transcation has failed because of any reasons and funds remain in contract.

4. Example

5. Contract list

The list of cotracts and identifiers in supported chains

Сеть
ChainId (Destination domain)
Контракт
Адрес контракта

Optimism

10

ZeroWayGasRefuelV1

Arbitrum

42161

ZeroWayGasRefuelV1

Base

8453

ZeroWayGasRefuelV1

Scroll

534352

ZeroWayGasRefuelV1

Manta

169

ZeroWayGasRefuelV1

Linea

59144

ZeroWayGasRefuelV1

Mode

34443

ZeroWayGasRefuelV1

Blast

81457

ZeroWayGasRefuelV1

Taiko

167000

ZeroWayGasRefuelV1

Redstone

690

ZeroWayGasRefuelV1

Ancient8

888888888

ZeroWayGasRefuelV1

Zora

7777777

ZeroWayGasRefuelV1

5. Becoming a Zeroway partner

The connection of partners is carried out by the owner of the contract through the following methods:

  1. addSAASPartner: adding new partner

  2. updateSAASPartner: updating partner senntings

  3. removeSAASPartner: deliting partner

Partner parameters are stored in thesaasPartnerSettingmapping where address is used as a key and setting stracture is used as a value

struct SAASPartnerSettings {
    address wallet;
    uint256 partnerFeeShare;    // decimals = 5
    uint256 ownerFeeShare;      // decimals = 5
}

Partner initializing

Partner refuel transaction initializing in Base

Parner refuel transaction exexution in recepint chain

Transaction in Hyperlane explorer

5️⃣
https://basescan.org/tx/0x18b2d084853f879d1faf5223a9e7eb810b6a42b464ab5d36839a687651ed7c5e
https://basescan.org/tx/0x1ac6ea47eae9e4e7c3be0402f298027c9907925ac71904b661300af993ef462e
https://arbiscan.io/tx/0xa98a5e611462af6f5752c555e437aa05d0b322cb99c3d8fd229ebbbb28e4016f
https://explorer.hyperlane.xyz/message/0xf74dd3d9a44c3ffd66c38c9777b025469be1141d179960a3b5b95f5148169359
0x73F9228039b5c2CE4DCfFA32A8712A48283EDE9b
0x73F9228039b5c2CE4DCfFA32A8712A48283EDE9b
0x73F9228039b5c2CE4DCfFA32A8712A48283EDE9b
0x73F9228039b5c2CE4DCfFA32A8712A48283EDE9b
0x73F9228039b5c2CE4DCfFA32A8712A48283EDE9b
0x73F9228039b5c2CE4DCfFA32A8712A48283EDE9b
0x73F9228039b5c2CE4DCfFA32A8712A48283EDE9b
0x73F9228039b5c2CE4DCfFA32A8712A48283EDE9b
0x73F9228039b5c2CE4DCfFA32A8712A48283EDE9b
0x73F9228039b5c2CE4DCfFA32A8712A48283EDE9b
0x73F9228039b5c2CE4DCfFA32A8712A48283EDE9b
0x73F9228039b5c2CE4DCfFA32A8712A48283EDE9b