🪙 ERC20 TokensSDK Guides Deposit ERC20 Deposit ERC20 from Ethereum L1 to Loopring L2
This action will require a gas fee for interacting with Ethereum Layer1, please be sure the account used has enough ETH to perform the action.
Be aware there is a slight difference in processes to deposit ETH versus ERC20 tokens .
All Deposit Methods: Users should have enough ETH
to pay for the Ethereum Gas fee (Loopring does not charge a fee for Deposit).
Provider will give the Gas Price & Limit. SDK will also have a method to get the gasPrice: const gasPrice = (await LoopringAPI.exchangeAPI.getGasPrice() ).gasPrice;
Depositing ETH
Step 1: Get nonce
Copy const nonce = await sdk .getNonce (web3 , LOOPRING_EXPORTED_ACCOUNT .address);
console .log (
`deposit: ${ TOKEN_INFO . tokenMap . ETH .symbol } - ${ LOOPRING_EXPORTED_ACCOUNT .tradeETHValue } , gasPrice: ${ LOOPRING_EXPORTED_ACCOUNT .gasPrice } , `
);
Step 2: Deposit
Copy const response = await sdk .deposit (
web3 ,
LOOPRING_EXPORTED_ACCOUNT .address ,
LOOPRING_EXPORTED_ACCOUNT .exchangeAddress ,
TOKEN_INFO . tokenMap . ETH ,
LOOPRING_EXPORTED_ACCOUNT .tradeETHValue ,
0 ,
LOOPRING_EXPORTED_ACCOUNT .gasPrice ,
LOOPRING_EXPORTED_ACCOUNT .gasLimit ,
sdk . ChainId . GOERLI ,
nonce ,
true
);
console .log ( `nonce: ${ nonce } deposit_ETH: ` , response);
Depositing ERC20 Tokens
Step 1: Get allowances
Copy const { tokenAllowances } = await LoopringAPI . exchangeAPI .getAllowances ({
owner : LOOPRING_EXPORTED_ACCOUNT .address ,
token : [ TOKEN_INFO . tokenMap . LRC .address] ,
});
if (
tokenAllowances .has ( TOKEN_INFO . tokenMap . LRC .address) &&
Number ( tokenAllowances .get ( TOKEN_INFO . tokenMap . LRC .address)) <
LOOPRING_EXPORTED_ACCOUNT .tradeLRCValue
) {
const nonce = await web3 . eth .getTransactionCount (
LOOPRING_EXPORTED_ACCOUNT .address
);
await sdk .approveMax (
web3 ,
LOOPRING_EXPORTED_ACCOUNT .address ,
TOKEN_INFO . tokenMap . LRC .address , // LRC address {tokenIdMap} = getTokens(); tokenIdMap['LRC']
LOOPRING_EXPORTED_ACCOUNT .depositAddress , //{exchangeInfo} = getExchangeInfo() exchangeInfo.depositAddress
LOOPRING_EXPORTED_ACCOUNT .gasPrice ,
LOOPRING_EXPORTED_ACCOUNT .gasLimit ,
sdk . ChainId . GOERLI ,
nonce ,
true
);
}
Step 2: Get nonce
Copy tyconst nonce = await sdk .getNonce (web3 , LOOPRING_EXPORTED_ACCOUNT .address);
console .log (
`deposit: ${ TOKEN_INFO . tokenMap . LRC .symbol } - ${ LOOPRING_EXPORTED_ACCOUNT .tradeLRCValue } , gasPrice: ${ LOOPRING_EXPORTED_ACCOUNT .gasPrice } , `
);
Step 3: Deposit
Copy const response = await sdk .deposit (
web3 ,
LOOPRING_EXPORTED_ACCOUNT .address ,
LOOPRING_EXPORTED_ACCOUNT .exchangeAddress ,
TOKEN_INFO . tokenMap . LRC ,
sdk
.toBig ( LOOPRING_EXPORTED_ACCOUNT .tradeLRCValue)
.div ( "1e" + TOKEN_INFO . tokenMap . LRC .decimals)
.toNumber () ,
0 ,
LOOPRING_EXPORTED_ACCOUNT .gasPrice ,
LOOPRING_EXPORTED_ACCOUNT .gasLimit ,
sdk . ChainId . GOERLI ,
nonce ,
true
);
console .log ( `nonce: ${ nonce } deposit_LRC: ` , response);