Optimization Level: 800,000
Ethereum:
BNB Smart Chain:
Polygon (POS):
Avalanche:
Fantom:
Gnosis:
Optimism:
Arbitrum:
Base:
Ethereum:
BNB Smart Chain:
Polygon (POS):
Avalanche:
Fantom:
Gnosis:
Optimism:
Arbitrum:
Base:
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.
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.
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
yarn install
yarn test
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
-
yarn flatten
-
Deploy flatten contract