Zecrey
  • Introduction
  • Zecrey Onepager
  • Announcements
    • Zecrey Public Testnet Announcement
    • Zecrey Testnet Beta Internal Test Announcement
    • Zecrey Ambassador Program Annoucement
  • Go & JS SDK Basic Guides
    • 1. Install and Initialize
    • 2. Get Data
    • 3. SDK Signature
    • 4. Register Users
    • 5. Mint Assets
    • 6. Creating Orders
    • 7. Match Orders
    • 8. Asset Deposits
    • 9. Asset Transfers
    • 10. Asset Withdrawals
    • 11. Full Exit
    • 12. Demo of SDK Calling
  • Education
    • Zecrey Video Guide
    • Concepts Explained
      • Crypto Knowledge
        • Layer 1 (L1)
        • Layer 2 (L2)
        • ZK-Rollup
        • Gas Fee
        • NFT
      • Zecrey Basics
        • Multi-chain asset management
        • Zecrey L1 wallet
        • Zecrey Legend L2 wallet
        • Zecrey Zero L2 wallet
        • Deposit
        • Withdraw
        • Zecrey DEX
      • The State of Transactions
    • Get Started
      • How to import an account?
      • How to create a new account?
      • How to receive and send assets with QR code?
      • How to export the private key?
      • How to export the recovery phrase?
      • How to use Zecrey NFT Marketplace?
      • How to adjust the gas fee?
      • How to check my transaction record?
      • How to manage my contacts?
      • How to set the language?
      • How to give feedback?
    • FAQs
  • Product Handbook
    • Zecrey Products Introduction
    • Set up your Zecrey Wallet
      • Download and Install Zecrey
      • Create a New Wallet
      • Import an Existing Wallet with Mnemonic
      • Claim Test Tokens for Testnet
      • Testing Requirements
      • Rewards for Phase II Testnet
    • Zecrey L1 Wallet
      • Multi-chain Assets Management
      • L1 Transfer
      • Deposit
      • L1 NFT Management
        • View NFT Assets
        • L1 NFT Transfer
        • NFT Deposit
    • Zecrey Legend L2
      • L2 Account Registration
      • L2 Transfer
      • Withdraw
    • Zecrey NFT Marketplace
      • Explore NFT Marketplace
      • Connect Zecrey Extension to NFT Marketplace
      • Create NFT Collection
      • Mint NFT
      • Buy NFT
      • Sell NFT
      • Transfer NFT
      • Withdraw NFT
      • View NFT Assets
      • Manage NFT Transactions
Powered by GitBook
On this page
  • Where are the orders?
  • Zecreymarket SDK
  • Initialize SDK
  • Create a listing
  • Make an offer
  • Cancel an order

Was this helpful?

  1. Go & JS SDK Basic Guides

6. Creating Orders

Previous5. Mint AssetsNext7. Match Orders

Last updated 2 years ago

Was this helpful?

  • Orders are requests to exchange a certain amount of one asset for a different amount of another asset. This typically refers to a listing or an offer in the world of NFTs.

Where are the orders?

Once an order is created, it will be added to the . They will be recorded on Zecrey NFT Marketplace to be viewed and available to all participants for trading.

Zecreymarket SDK

Initialize SDK

  • You need to in order to use it.

Create a listing

  • Parameters needed:

    Parameter

    Parameter usage and meaning

    Required or not

    accountName

    The account name used to initialize the client

    ✅

    seed

    The user's L2 seed used to initialize the client

    ✅

    assetType

    Specify the asset type used to purchase the NFT

    ✅

    AssetAmount

    The asset amount needed to purchase the NFT

    ✅

    nftId

    Id of the NFT to be sold

    ✅

📚SDK REFERENCE

Example

  • Create an order to list the NFT with NftId = 14

    1. Initialize the client

    2. Create a listing

package main

import (
   "fmt"
   "github.com/Zecrey-Labs/zecrey-marketplace-go-sdk/sdk"
)


func main() {
    accountName := "Alice"//Zecrey NFT Marketplace SDK will automatically add the suffix ".zec" to the name
    seed := "0x6a1a320d14790f2d9aa9a37769f4833d583a3f7f974fd452a3990aeb0e7a6052" //l2seed
    assetType = 0    //the asset type to purchase the NFT
    AssetAmount = big.NewInt(1000000) //the asset amount needed to purchase the NFT
    nftId = 14
    c, err := sdk.NewClient(accountName, seed) 	 
    if err != nil { panic(err) }
    
    result, err := c.CreateSellOffer(nftId, assetType, AssetAmount)
    if err != nil { panic(err) }
    data, _ := json.Marshal(result)
    fmt.Println("CreateSellOffer:", string(data))
}

Example result

CreateSellOffer: 
{
    "offer":{
        "id":21,
        "account_name":"Alice",
        "direction":"1",
        "asset_id":11,
        "payment_asset_id":0,
        "payment_asset_amount":"0.000001000000000000",//This corresponds to the relative value of 10^18 of the AssetAmount(1000000)
        "status":"1",
        "signature":"{\"Type\":1,\"OfferId\":1,\"AccountIndex\":4,\"NftIndex\":14,\"AssetId\":0,\"AssetAmount\":1000000000000,\"ListedAt\":1667963243006,\"ExpiredAt\":1668136043006,\"TreasuryRate\":200,\"Sig\":\"lzpBuJsvntEjcF1e4Y6euAaVCB4LzFWAd2axjKGp3xEAKQB3QcvcgOxgSS54wgVGG1EQNMe1e/Gzg+4Ecxwi+g==\"}",
        "expired_at":1668136043006,
        "created_at":1667963243
    }
}

Example

  • Create an order to list the NFT with NftId = 14

    1. Initialize the client

    2. Create a listing

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_index = 14;
const asset_id = 0; // BNB
const asset_amount = "1000000000000000000"; // 1 BNB

const res = await client.createSellOffer(nft_index, asset_id, asset_amount);

console.log(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_index = 14;
const asset_id = 0; // BNB
const asset_amount = "1000000000000000000"; // 1 BNB

const res = await sdk.createSellOffer(account_name, account_index, nft_index, asset_id, asset_amount);

console.log(res);

Example result

{
    id: 24643,
    signature: "{"Type":1,"OfferId":245,"AccountIndex":4,"NftIndex":7,"AssetId":0,"AssetAmount":1000000000000000000,"ListedAt":1675310419174,"ExpiredAt":1675742417512,"TreasuryRate":200,"Sig":"7obDPs4K25hWF+vY+tXL1I4Y1gmXUcayX34aeQKTJ5AFlQOaug/szcsk3QIweBtGV1oIaM5k+vHoUQUhDjRMQA=="}",
}

Make an offer

  • 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

✅

assetType

Specify the asset type used to purchase the NFT

✅

AssetAmount

The asset amount needed to purchase the NFT

✅

nftId

The Id of the NFT to be purchased

✅

📚SDK REFERENCE

Example

  • Make an offer to the NFT with NftId = 14

    1. Initiate the client

    2. Create an offer

package main

import (
   "fmt"
   "github.com/Zecrey-Labs/zecrey-marketplace-go-sdk/sdk"
)


func main() {
    accountName := "Bob"//Zecrey NFT Marketplace SDK will automatically add the suffix ".zec" to the name
    seed := "17673b9a9fdec6dc90c7cc1eb1c939134dfb659d2f08edbe071e5c45f343d008" //l2seed
    c, err := sdk.NewClient(accountName, seed) 	 
    if err != nil { panic(err) }
    
    assetType = 0    //specify the asset type to purchase the NFT
    AssetAmount = big.NewInt(1000000) //the asset amount needed to purchase the NFT with 1 as the smallest unit of the token type
    nftId = 14
    result, err := c.CreateBuyOffer(nftId, assetType, AssetAmount)
    if err != nil { panic(err) }
    data, _ := json.Marshal(result)
    fmt.Println("CreateBuyOffer:", string(data))
}

Example result

CreateBuyOffer:
{
    "offer":{
        "id":22,
        "account_name":"Bob",
        "direction":"0",
        "asset_id":14,
        "payment_asset_id":0,
        "payment_asset_amount":"0.000001000000000000",//This corresponds to the relative value of 10^18 of the AssetAmount(1000000)
        "status":"1",
        "signature":"{\"Type\":0,\"OfferId\":2,\"AccountIndex\":2,\"NftIndex\":14,\"AssetId\":0,\"AssetAmount\":1000000000000,\"ListedAt\":1667963545528,\"ExpiredAt\":1668136345528,\"TreasuryRate\":200,\"Sig\":\"XEpxPmmVXYJ2A+YBom4B7pe4Tm+rgvAqkH5MQHO1NaIFby8sgnTlpGpabAx9U7RytUqQc57hOrsFyCzEx4kCbQ==\"}",
        "expired_at":1668136345528,
        "created_at":1667963545
    }
}

Example

  • Make an offer to the NFT with NftId = 14

    1. Initiate the client

    2. Create an offer

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_index = 14;
const asset_id = 0; // BNB
const asset_amount = "1000000000000000000"; // 1 BNB

const res = await client.createSellOffer(nft_index, asset_id, asset_amount);

console.log(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_index = 14;
const asset_id = 0; // BNB
const asset_amount = "1000000000000000000"; // 1 BNB

const res = await sdk.createSellOffer(account_name, account_index, nft_index, asset_id, asset_amount);

console.log(res);

Example result

{
    id: 24643,
    signature: "{"Type":0,"OfferId":245,"AccountIndex":4,"NftIndex":7,"AssetId":0,"AssetAmount":1000000000000000000,"ListedAt":1675310419174,"ExpiredAt":1675742417512,"TreasuryRate":200,"Sig":"7obDPs4K25hWF+vY+tXL1I4Y1gmXUcayX34aeQKTJ5AFlQOaug/szcsk3QIweBtGV1oIaM5k+vHoUQUhDjRMQA=="}",
}

Cancel an order

  • To cancel a previous offer/listing order, you can use the cancelOffer request.

📚SDK REFERENCE

Example

  • Cancel offer/order with offerId = 22

    1. Initialize the client

    2. Cancel the offer/order

package main

import (
   "fmt"
   "github.com/Zecrey-Labs/zecrey-marketplace-go-sdk/sdk"
)

func main() {
    accountName := "Alice"//Zecrey NFT Marketplace SDK will automatically add the suffix ".zec" to the name
    seed := "0x6a1a320d14790f2d9aa9a37769f4833d583a3f7f974fd452a3990aeb0e7a6052" //l2seed
    OfferId := 22    //View offers/orders through "Get NFT list of offers"
    c, err := sdk.NewClient(accountName, seed) 	 
    if err != nil { panic(err) }
    
    result, err := c.CancelOffer(AssetId, assetType, AssetAmount)
    if err != nil { panic(err) }
    
    data, _ := json.Marshal(result)
    fmt.Println(string(data))
}

Example result

{
    "offer":{
        "id":22,
        "account_name":"Alice",
        "direction":"0",
        "asset_id":9,
        "payment_asset_id":0,
        "payment_asset_amount":"0.000001000000000000",
        "status":"4",//cancelled
        "signature":"{\"Type\":0,\"OfferId\":2,\"AccountIndex\":2,\"NftIndex\":4,\"AssetId\":0,\"AssetAmount\":1000000000000,\"ListedAt\":1667963545528,\"ExpiredAt\":1668136345528,\"TreasuryRate\":200,\"Sig\":\"XEpxPmmVXYJ2A+YBom4B7pe4Tm+rgvAqkH5MQHO1NaIFby8sgnTlpGpabAx9U7RytUqQc57hOrsFyCzEx4kCbQ==\"}",
        "expired_at":1668136345528,
        "created_at":1667963545
    }
}

Example

  • Cancel offer/order with offerId = 22

    1. Initialize the client

    2. Cancel the offer/order

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 offer_id = 24504;
const res = await client.cancelOffer(offer_id);

console.log("offer id: ", 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 offer_id = 24504;
const res = await sdk.cancelOffer(account_name, account_index, offer_id);

console.log("offer id: ", res)

Example result

offer id: 24504

Zecrey NFT Marketplace
initialize the SDK
CreateSellOffer
CreateBuyOffer
CancelOffer