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
Example
Withdraw NFT with
NftId= 6Initialize the client
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= 6Initialize the client
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: trueWithdraw 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
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=Last updated
Was this helpful?