6. Creating Orders

  • 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 Zecrey NFT Marketplace. They will be recorded on Zecrey NFT Marketplace to be viewed and available to all participants for trading.

Zecreymarket SDK

Initialize SDK

Create a listing

  • Parameters needed:

📚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
    }
}

Make an offer

  • Parameters needed:

📚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
    }
}

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
    }
}

Last updated