How To Trade Digital Assets

Simple Examples Showing How To Trade Digital Assets

Protokol NFT set comes with full trading capabilities built-in and tracked on the digital ledger. In the following section we are going to explain the basic trading process supported with code examples.

STEP 1. Auction Creation And Cancellation

We can open a new auction by using the NFTAuction Transaction Type. Auction can set the following fields:

  • startAmount - minimal starting amount

  • expiration - set in block height (when we stop accepting bid for our items)

  • nftIds - list of owned items we want to auction

Only an auction owner can cancel an auction.

How To Create An Auction

NFTAuction Runnable Example

Initialization

import { Builders } from "@protokol/nft-exchange-crypto";

NFTAuction - Builder

new Builders.NFTAuctionBuilder()
        .NFTAuctionAsset({
            startAmount: Utils.BigNumber.make("1000"),
            expiration: {
                blockHeight: 1000000,
            },
            nftIds: ["77c0cc9bbb26c69c95e7bd12ca7e2590ea70417eaf8f593905fd30b440ec8458"],
        })
        .nonce("1")
        .sign("SENDER_PASSPHRASE");

How To Cancel An Auction

NFTAuctionCancel Runnable Example

To cancel an auction we need to specify auctionId and be owners of the specific auction.

NFTAuctionCancel - Builder

new Builders.NFTAuctionCancelBuilder()
        .NFTAuctionCancelAsset({
            auctionId: "58dc9625ff7190dc3ff2dbf541a2bb2c8a85366f2cbe95d21ec9b8970f41d086",
        })
        .nonce("1")
        .sign("SENDER_PASSPHRASE");

STEP 2. Biding On Auction Items

We can create a bid for NFT items being available for sale via NFTAuctions (Step 1). To bid on a specific auction we need to define the following fields:

  • bidAmount (our bidAmount) - needs to be higher that auction start Amount

  • auctionId - id of auction we are bidding for.

When a bid is issued, the users balance is locked for the duration of this bid. The user can always check their locked balance on the wallet endpoint via exchange endpoints.

How To Create A Bid

NFTBid - Builder

new Builders.NFTBidBuilder()
        .NFTBidAsset({
            bidAmount: Utils.BigNumber.make("1100"),
            auctionId: "717ce9f6dff858c4972b067a1fce8ea72fb1c4ac60c4a75cc8e9993dbbe7541a",
        })
        .nonce("1")
        .sign("SENDER_PASSPHRASE");

How To Cancel A Bid

To cancel a bid we need to specify a bidId and be owners of the specific bid.

NFTBidCancel - Builder

new Builders.NFTBidCancelBuilder()
        .NFTBidCancelAsset({
            bidId: "c67beef6edc35f81334e8bf825dbc735e8d579f8297509d74980756b9b9ff8fe",
        })
        .nonce("1")
        .sign("SENDER_PASSPHRASE");

STEP 3. Accepting A Trade

We can accept a trade by specifying the sub-transactions related to closing a specific trade. These transactions are:

  • auctionId - id of a NFTAuction Transaction (Step 1)

  • bidId - id of a NFTBid Transaction (Step 2)

Both IDs correspond with the seller request and bidder offerings. The seller is responsible for which bid he is willing to accept.

When a trade is accepted all other bids are canceled, and locked balances are returned to the bidders.

How to Accept A Trade

NFTAcceptTrade - Builder

new Builders.NftAcceptTradeBuilder()
        .NFTAcceptTradeAsset({
            auctionId: "d8177d5c2a3eee46aea48fa5a8ce7c58c43c71909ac6cf9568e11065dc1f544a",
            bidId: "032383b3f5c541c117c3409fdb1545e7b34deb0f6922ef7a42c40867d24402d8",
        })
        .nonce("1")
        .sign("SENDER_PASSPHRASE");

Last updated