Protokol
Search…
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

examples/nft-auction.ts at develop · protokol/examples
GitHub
NFTAuction Runnable Example

Initialization

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

NFTAuction - Builder

1
new Builders.NFTAuctionBuilder()
2
.NFTAuctionAsset({
3
startAmount: Utils.BigNumber.make("1000"),
4
expiration: {
5
blockHeight: 1000000,
6
},
7
nftIds: ["77c0cc9bbb26c69c95e7bd12ca7e2590ea70417eaf8f593905fd30b440ec8458"],
8
})
9
.nonce("1")
10
.sign("SENDER_PASSPHRASE");
Copied!

How To Cancel An Auction

examples/nft-auction-cancel.ts at develop · protokol/examples
GitHub
NFTAuctionCancel Runnable Example
To cancel an auction we need to specify auctionId and be owners of the specific auction.

NFTAuctionCancel - Builder

1
new Builders.NFTAuctionCancelBuilder()
2
.NFTAuctionCancelAsset({
3
auctionId: "58dc9625ff7190dc3ff2dbf541a2bb2c8a85366f2cbe95d21ec9b8970f41d086",
4
})
5
.nonce("1")
6
.sign("SENDER_PASSPHRASE");
7
Copied!

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

examples/nft-bid.ts at develop · protokol/examples
GitHub
NFTBid Runnable Example

NFTBid - Builder

1
new Builders.NFTBidBuilder()
2
.NFTBidAsset({
3
bidAmount: Utils.BigNumber.make("1100"),
4
auctionId: "717ce9f6dff858c4972b067a1fce8ea72fb1c4ac60c4a75cc8e9993dbbe7541a",
5
})
6
.nonce("1")
7
.sign("SENDER_PASSPHRASE");
Copied!

How To Cancel A Bid

examples/nft-bid-cancel.ts at develop · protokol/examples
GitHub
NFTBidCancel Runnable Example
To cancel a bid we need to specify a bidId and be owners of the specific bid.

NFTBidCancel - Builder

1
new Builders.NFTBidCancelBuilder()
2
.NFTBidCancelAsset({
3
bidId: "c67beef6edc35f81334e8bf825dbc735e8d579f8297509d74980756b9b9ff8fe",
4
})
5
.nonce("1")
6
.sign("SENDER_PASSPHRASE");
Copied!

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

examples/nft-accept-trade.ts at develop · protokol/examples
GitHub
NFTAcceptTrade Runnable Example

NFTAcceptTrade - Builder

1
new Builders.NftAcceptTradeBuilder()
2
.NFTAcceptTradeAsset({
3
auctionId: "d8177d5c2a3eee46aea48fa5a8ce7c58c43c71909ac6cf9568e11065dc1f544a",
4
bidId: "032383b3f5c541c117c3409fdb1545e7b34deb0f6922ef7a42c40867d24402d8",
5
})
6
.nonce("1")
7
.sign("SENDER_PASSPHRASE");
Copied!