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
Parameter usage and meaning
The account name used to initialize the client
The user's L2 seed used to initialize the client
The corresponding ID of the NFT to be withdrawn
Example
Withdraw NFT with NftId
= 6
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
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
Withdraw FT to L1
Parameters needed:
Parameter usage and meaning
The account name used to initialize the client
The user's L2 seed used to initialize the client
ID of the NFT to be withdrawn
Specify an L1 address to withdraw
Example
Withdraw 100000 BNB to L1
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
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=