Skip to content

DePayFi/depay-evm-router

Repository files navigation

DePay's EVM Web3 Payment Router.

Deployments

Optimization Level: 800,000

DePayRouterV2

Ethereum:

BNB Smart Chain:

Polygon (POS):

Avalanche:

Fantom:

Gnosis:

Optimism:

Arbitrum:

Base:

DePayForwarderV2

Ethereum:

BNB Smart Chain:

Polygon (POS):

Avalanche:

Fantom:

Gnosis:

Optimism:

Arbitrum:

Base:

Summary

This smart contract enables decentralized payments with auto-conversion and payment-fee extraction.

The main purpose of this smart contract evolves around the pay function.

This smart contract allows for NATIVE to NATIVE, NATIVE to TOKEN, TOKEN to NATIVE, WRAPPED to NATIVE, NATIVE to WRAPPED and TOKEN_A to TOKEN_B payments.

Transfer polyfil

The DePayRouterV2 emits a InternalTransfer event for payments where the receiver token is the native token of the respective chain (e.g. Ether on Ethereum).

This allows to validate native token transfers without checking for internal transfers, but instead rely on InternalTransfer events, similiar to Token Transfer events.

Standard tokens (e.g. ERC20 etc.) already do emit Transfer events as part of their standard.

Development

Create an .env file with the following content:

NODE_ENV=development

MNEMONIC="shine romance erase resource daring bean talk right cupboard visa renew galaxy"
#(0) 0xdde3dc4308A7856D49D1d7303bB630Bccb45Caf9
#(1) 0x26Fe22F655303151C2ef3b2D097F842ab27Ef940
#(2) 0x877a79C20028F9ef81e956B43B917703cC22A07A
#(3) 0x3a36b51c5125A9c064f4Cd2F492989618CF7660E

ARBITRUM_NOVA_RPC_URL=https://arbitrum-nova.blastapi.io/<APIKEY>
ARBITRUM_ONE_RPC_URL=https://arbitrum-one.blastapi.io/<APIKEY>
AVALANCHE_RPC_URL=https://ava-mainnet.blastapi.io/<APIKEY>/ext/bc/C/rpc
BSC_RPC_URL=https://bsc-mainnet.blastapi.io/<APIKEY>
ETHEREUM_RPC_URL=https://eth-mainnet.blastapi.io/<APIKEY>
FANTOM_RPC_URL=https://fantom-mainnet.blastapi.io/<APIKEY>
GNOSIS_RPC_URL=https://gnosis-mainnet.blastapi.io/<APIKEY>
OPTIMISM_RPC_URL=https://optimism.blockpi.network/v1/rpc/public
POLYGON_RPC_URL=https://polygon-mainnet.blastapi.io/<APIKEY>
POLYGON_ZKEVM_RPC_URL=https://polygon-zkevm-mainnet.blastapi.io/<APIKEY>
ZKSYNC_ERA_RPC_URL=https://mainnet.era.zksync.io

Quick Start

yarn install
yarn test

Testing

Test on a specific chain:

yarn test:<chain>

e.g. ethereum, bsc etc.

Test on all blockchains:

yarn test

Test single files:

npx hardhat test test/bsc/pay_with_exchange_conversion.spec.ts --config hardhat.config.bsc.ts

Deploy

  1. yarn flatten

  2. Deploy flatten contract