Contract: Mint Canonical Token
Lock user's assets into cBridge and mint corresponding token on the destination chain

Implementation

Minting is the process of locking original tokens on the source chain and minting canonical tokens that are pegged 1:1 on the destination chain. Original tokens can be deposited into the OriginalTokenVault contract on the source chain, specifically via the deposit or depositNative functions, which will trigger the minting of canonical tokens from the PeggedTokenBridge contract on the destination chain. For advanced users, the two deposit functions can be called from smart contracts. We are working on a refund process for certain failed deposits.
const transferTx = await transactor(
originalTokenVault!.deposit(
pegConfig.config.org_token.token.address,
value,
pegConfig.config.pegged_chain_id,
address,
nonce,
),
).catch(e => {
/// Handle Error
});

Request Parameters

Name
Type
Description
token
String
Token's address
amount
UInt256
locked token amount
mint_chain_id
UInt64
destination chainId to mint tokens
nonce
UInt64
Current timestamp
mint_account
String
User's wallet address
If the mint_account is a smart contract and the token you are sending is a wrapped native gas token on the destination chain, make sure the contract can receive native gas token by implementing fallback / receive functions.

TransferId Generation

When you submit on-chain deposit transaction, you can also generate a transfer id for future reference. For example, it is used for getTransferStatus. It should be the same as transferId inside on-chain transaction log.
/// Example transaction:
/// https://testnet.bscscan.com/tx/0x5a4a0b50a74c9671f39694a506f1117bdfda2fbd001fe853c0494ca542d7687f#eventlog
const deposit_id = ethers.utils.solidityKeccak256(
[
"address",
"address",
"uint256",
"uint64",
"address",
"uint64",
"uint64"
],
[
"0x51d36e18e3d32d121a3cfe2f3e5771a6fd53274e", /// User's wallet address,
"0x0368ba12d5b0fc5cd2e17199f8074fbac9abb7aa", /// selectedTokenAddress,
"50000000000000000000", /// Mint amount in String
"65", /// Pegged Chain Id
"0x51d36e18e3d32d121a3cfe2f3e5771a6fd53274e", /// User's wallet address,
"....", /// Nonce
"...", /// Original chain id
],
)
For now, the Mint / Burn process does not implement a refund flow.

Response

Since this function is an Ethereum on-chain transaction, the response is the corresponding transaction response.