Zecrey
Search
K

10. Asset Withdrawals

Users are able to withdraw assets from L2 to L1 in Zecrey.

Initialize SDK

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

Withdraw NFT to L1

  • Parameters needed:
Parameter
Parameter usage and meaning
Required vs Optional
accountName
The account name used to initialize the client
seed
The user's L2 seed used to initialize the client
nftId
The corresponding ID of the NFT to be withdrawn
📚SDK REFERENCE
Golang
Javascript
Example
  • Withdraw NFT with NftId = 6
    1. 1.
      Initialize the client
    2. 2.
      Withdraw the NFT
package main
import (
"fmt"
"github.com/Zecrey-Labs/zecrey-marketplace-go-sdk/sdk"
)
func main() {
var nftId int64 = 6
accountName := "Bob"
seed := "17673b9a9fdec6dc90c7cc1eb1c939134dfb659d2f08edbe071e5c45f343d008"
c, err := sdk.NewClient(accountName, seed)
if err != nil { panic(err) }
result, err := c.WithdrawNft(nftId)
if err != nil { panic(err) }
data, _ := json.Marshal(result)
fmt.Println("WithdrawNft:", string(data))
}
Example result
WithdrawNft: {"success":true}
Example
  • Withdraw NFT with NftId = 6
    1. 1.
      Initialize the client
    2. 2.
      Withdraw the NFT
With the private key:
import { Client } from "@zecrey/zecrey-legend-js-sdk";
const account_name = "amber1.zec";
const seed = "ee823a72698fd05c70fbdf36ba2ea467d33cf628c94ef030383efcb39581e43f";
const client = new Client(account_name, seed);
await client.initialize();
const nft_id = 48;
const to_address = "0x09E45d6FcF322c4D93E6aFE7076601FF10BA942E";
const res = await client.withdrawNft(nft_id, to_address);
console.log("success: ", res);
With the wallet:
import { SDK } from "@zecrey/zecrey-legend-js-sdk";
const sdk = new SDK();
await sdk.initial();
const account_name = "Alice.zec"; // sender's account name
const account_index = 14; // sender's account index
const nft_id = 48;
const to_address = "0x09E45d6FcF322c4D93E6aFE7076601FF10BA942E";
const res = await sdk.withdrawNft(account_name, account_index, nft_id, to_address);
console.log("success: ", res);
Example result
success: true

Withdraw FT to L1

  • Query current user asset through GetAccountAssetsInfoByAccountName
  • 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
    nftId
    ID of the NFT to be withdrawn
    tol1Address
    Specify an L1 address to withdraw

📚SDK REFERENCE

Golang
Javascript
Example
  • Withdraw 100000 BNB to L1
    • Initialize client
    • Withdraw 100000 BNB
package main
import (
"fmt"
"github.com/Zecrey-Labs/zecrey-marketplace-go-sdk/sdk"
)
func main() {
seed := "13243b9a9fdec6dc90c7cc1eb1c939134dfb659d2f0asdfas5413213213213213"
accountName := "bob"
tol1Address := "0x< a l1 address you want to withdraw>"
assetAmount := int64(100000)
c, err := sdk.NewClient(accountName, seed)
if err != nil { panic(err) }
result, err := c.Withdraw(tol1Address,sdk.BNBAssetId, assetAmount)
if err != nil { panic(err) }
data, err := json.Marshal(result)
fmt.Println("Withdraw:", string(data))
}
Example result
Withdraw: {"tx_id":"DJIkgT9j2f1uX2xkWR+fJ35Kyg/HDJ4trixtL9CNG/k="}
Example
  • Withdraw 100000 BNB to L1
    • Initialize client
    • Withdraw 0.0001 BNB
import { Client } from "@zecrey/zecrey-legend-js-sdk";
const account_name = "amber1.zec";
const seed = "ee823a72698fd05c70fbdf36ba2ea467d33cf628c94ef030383efcb39581e43f";
const client = new Client(account_name, seed);
await client.initialize();
const asset_id = 0; // BNB
const amount = "100000000000000"; // 0.0001 BNB
const to_address = "0x09E45d6FcF322c4D93E6aFE7076601FF10BA942E";
const res = await client.withdraw(asset_id, amount, to_address);
console.log("tx id: ", res);
Example result
tx id: LNwRbx6JwTDcSTt5tEosiD2wO4RGre8VxAu9nWayiGs=