Zecrey
Search
K

8. Asset Deposits

  • Users are able to deposit assets from L1 to L2 in Zecrey.

Initialize SDK

  • You will need to initialize the SDK in order to use it.

Deposit NFT to L2

  • Parameters needed:
    Parameter
    Parameter usage and meaning
    Requirement
    accountName
    The account name used to initialize the client
    seed
    The user's L2 seed used to initialize the client
    privateKey
    Since this transaction involves L1, the private key of user's L1 account is needed to sign the transaction
    nftL1Address
    The corresponding L1 address of the NFT
    nftIndex
    The unique ID of NFT in L1

📚SDK REFERENCE

Golang
Javascript
Example
  • Deposit the NFT with nftIndex = 511
    • Initialize client
    • Deposit the NFT with nftIndex = 511
package main
import (
"fmt"
"github.com/Zecrey-Labs/zecrey-marketplace-go-sdk/sdk"
)
func main() {
var nftIndex int64 = 511
accountName := "Bob"
seed := "17673b9a9fdec6dc90c7cc1eb1c939134dfb659d2f08edbe071e5c45f343d008"
privateKey := "0xe94a8b4ddd33b2865asadfasda0c3e3276007ece8f114a47a4e9581ec3567"
nftL1Address := common.HexToAddress("0x805e286D05388911s41a0E3c7b9713415607c72")
c, err := NewClient(accountName, seed)
if err != nil {
t.Fatal(err)
}
depositNftTransaction, err := c.DepositNft(accountName, privateKey, nftL1Address, nftIndex)
if err != nil {
t.Fatal(err)
}
fmt.Println("tx hash: ",depositNftTransaction.Hash())
}
Example Result
tx hash: 0x832b75753c073b29a11431386f2faa744ced1c95603e8ea30e4aa5fd7ca3d14dgolang
Example
Advance approval for NFT is require
import { SDK } from "@zecrey/zecrey-legend-js-sdk";
const sdk = new SDK();
await sdk.initial();
const privateKey = "1bcb0ae8c17945acfaf9ea546c0b754a599fddf27425bac7e532590324137a7d"; // the private key of the L1 which is sending the transaction
const account = "Bob"; // the receiving L2 account in NFT deposit
const asset_contract = "0xD0b6eee86DFAE935E837EcC187A63D3882eDA022"; // the l1 contract address of NFT
const token_id = 4; // the ID of NFT in L1 contract
const res = await sdk.depositNft(privateKey, account, asset_contract, token_id);
console.log("tx hash: ", res);
Example Result
tx hash: 0x832b75753c073b29a11431386f2faa744ced1c95603e8ea30e4aa5fd7ca3d14d

Deposit FT to L2

  • Parameters needed:
    Parameter
    Parameter usage and meaning
    Requirement
    accountName
    The account name used to initialize the client
    seed
    The user's L2 seed used to initialize the client
    privateKey
    Since this transaction involves L1, the private key of user's L1 account is needed to sign the transaction
    AssetId
    Token ID
  • Token information
    Token
    Token ID
    Parameter
    BNB
    0
    sdk.BNBAssetId
    LEG
    1
    sdk.LEGAssetId
    REY
    2
    sdk.REYAssetId

📚SDK REFERENCE

Golang
Javascript
Example
  • Deposit 10000 BNB to L2
    • Initialize client
    • Deposit
      1. 1.
        For BEP20 token, you need to import the token address
package main
import (
"fmt"
"github.com/Zecrey-Labs/zecrey-marketplace-go-sdk/sdk"
)
func main() {
var nftId int64 = 6
accountName := "Bob"
seed := "17673b9a9fdec6dc90c7cc1eb1c939134dfb659d2f08edbe071e5c45f343d008"
privateKey := "0xe94a8b4ddd33b2865asadfasda0c3e3276007ece8f114a47a4e9581ec3567"
var assetAmount int64 = 10000
var tokenAddress = common.HexToAddress("")
c, err := NewClient(accountName, seed)
if err != nil { panic(err) }
depositBnbTransaction, err := c.Deposit(accountName, privateKey, sdk.BNBAssetId, assetAmount, tokenAddress)
if err != nil { panic(err) }
fmt.Println("tx hash:",depositBnbTransaction.Hash())
}
Example result
tx hash: 0x0f20b7cf4f6526b7d67efba10c9e14b0c093eb9c50c7ebd8190413bc0b4c6dd6
Example
  1. 1.
    Deposit BEP20 assets like REY and LEG (advance approval required for assets)
import { SDK } from "@zecrey/zecrey-legend-js-sdk";
const sdk = new SDK();
await sdk.initial();
const privateKey = "1bcb0ae8c17945acfaf9ea546c0b754a599fddf27425bac7e532590324137a7d"; // the private key of the L1 which is sending the transaction
const account = "Bob"; // the L2 account that LEG is deposited to
const amount = "100000000000000"; // 0.0001 LEG
const asset_contract = "0x364Ed72f329f1BD56AE84b941D1c6E4E260cE152"; // the contract address of LEG
const res = await sdk.deposit(privateKey, account, amount, asset_contract);
console.log("tx hash: ", res);
  1. 2.
    Deposit BNB
import { SDK } from "@zecrey/zecrey-legend-js-sdk";
const sdk = new SDK();
await sdk.initial();
const privateKey = "1bcb0ae8c17945acfaf9ea546c0b754a599fddf27425bac7e532590324137a7d"; // the private key of the L1 which is sending the transaction
const account = "Bob"; // the L2 account that LEG is deposited to
const amount = "100000000000000"; // 0.0001 BNB
const res = await sdk.deposit(privateKey, account, amount);
console.log("tx hash: ", res);
Example Result
tx hash: 0xca0f43ae1e7d3ff868170fee2d0a1254772294aca43f2cf221aa602bd3cd5db3