/zkEVMBridge

ERC20 Token Transfer using zkEVM Bridge from L1 to L2 and L2 to L1

Primary LanguageSolidityMIT LicenseMIT

zkEVMBridge

ERC20 Token Transfer using zkEVM Bridge from L1 to L2 and L2 to L1

English:

Step 1: Deploy the ERC20 contract and run the "mint" function. (example: 10000000000000000000000 wei = 1,000,000 tokens)
Constructor parameters;
_name: ERC20 token name (example = CarbonToken)
_symbol: ERC20 token symbol (example = CARBON)

Step 2: The CarbonWrapper contract is deployed.
Constructor parameters;
_token: ERC20 contract address (deployed in step 1)
_l1Bridge: Goerli L1 Bridge Address (0xE87d317eB8dcc9afE24d9f63D6C760e52Bc18A40)

The above operations should be done on the Goerli testnet

Step 3: The WrappedCarbon contract is deployed on the zkEVM testnet
Constructor parameters;
_l2Bridge : ZkEVM L2 Bridge Address (0xA59477f7742Ba7d51bb1E487a8540aB339d6801d)
_name : ERC20 Token name (example = wCarbonToken)
_symbol: ERC20 Token symbol (example = wCARBON)
setCarbonWrapper function is executed and carbonWrapper (step 2 contract address) contract address is defined.

Step 4: The contract address of the WrappedCarbon (in step 3) is defined by running the setL2TokenPair function in the CarbonWrapper contract. (on Goerli testnet)

Step 5: Approve is given from the ERC20 token contract to the CarbonWrapper contract. (example: 10000000000000000000000 wei = 10,000 tokens)

Step 6: To transfer tokens from Goerli to zkEVM, run the sendToL2 function in the CarbonWrapper contract.
@param1 recipient: Recipient wallet address on L2 (same wallet address)
@param2 _fee: Fee required for the bridge (0.01 ETH - min _fee value = 10000000000000000 wei)
@param3 _deadline: Final processing time (min _deadline value = block.timestamp + 7 days)
@param4 amount: Number of Tokens to be sent that have been previously Approve

Transaction example list on testnet:Test :
Goerli = https://goerli.etherscan.io/tx/0xbec7af98b38368743b70aff64a903ec3ee32719958fc75caed1cf2b26be60827
zkEVM = https://explorer.goerli.zkevm.consensys.net/tx/0xf2de33a1b4dc6f94c03fd6cbf66b53d1f2cea9b4ca1e76429f0a1c33b985ad8e

Türkçe:

Adım 1: ERC20 sözleşmesini Deploy edin. Sonrasında "mint" fonksiyonunu çalıştırın. (örnek: 10000000000000000000000 wei = 1,000,000 token)
Constructor parametreleri;
_name: ERC20 token adı (örnek = CarbonToken)
_symbol: ERC20 token sembol (örnek = CARBON)

Adım 2: CarbonWrapper sözleşmesini deploy edin.
Constructor parametreleri;
_token: ERC20 sözleşme adresi (adım 1'de deploy ettiğimiz sözleşme)
_l1Bridge: Goerli L1 Bridge adresi (0xE87d317eB8dcc9afE24d9f63D6C760e52Bc18A40)

Adım 1 ve Adım 2 'deki işlemler Goerli testnet üzerinde yapılacaktır.

Adım 3: WrappedCarbon sözleşmesini zkEVM testnet üzerinde deploy edin.
Constructor parametreleri;
_l2Bridge : ZkEVM L2 Bridge adresi (0xA59477f7742Ba7d51bb1E487a8540aB339d6801d)
_name : ERC20 Token adı (örnek = wCarbonToken)
_symbol: ERC20 Token symbol (örnek = wCARBON)
WrappedCarbon sözleşmesinde "setCarbonWrapper" fonksiyonuna carbonWrapper (Adım 2 sözleşme adresi) sözleşme adresini tanımlayın.

Adım 4: CarbonWrapper sözleşmesinde setL2TokenPair fonksiyonuna WrappedCarbon (Adım 3) sözleşme adresini tanımlayın. (Goerli üzerinde)

Adım 5: ERC20 token sözleşmesi CarbonWrapper sözleşme adresi için "Approve" verin (örnek: 10000000000000000000000 wei = 10,000 token)

Adım 6: Goerli 'den zkEVM 'e transfer gerçekleştirmek için CarbonWrapper sözleşmesinde sendToL2 fonksiyonunu çalıştırın.
@parametre1 recipient: L2 üzerindeki alıcı adresi (kullandığınız wallet adresi olabilir)
@parametre2 _fee: Köprü için Fee değeri (0.01 ETH - minimum _fee değeri = 10000000000000000 wei)
@parametre3 _deadline: Son işlem süresi (minimum _deadline değeri = block.timestamp + 7 days)
@parametre4 amount: Daha önce Approve verdiğiniz token miktarı