Protokol
  • Introduction To Digital Assets
  • Tutorials
    • How To Create Digital Assets
    • How To Trade Digital Assets
  • ARK CORE MODULES
    • NFT
      • Development
      • Complementary Examples
        • Base
        • Exchange
      • API Endpoints
        • Assets
        • Burns
        • Collections
        • Transfers
        • Base Configurations
        • Auctions
        • Bids
        • Trades
        • Exchange Configurations
    • Guardian
      • Development
      • Complementary Examples
      • API Endpoints
        • Configurations
        • Groups
        • Users
    • Nameservice
      • Development
      • Complementary Examples
      • API Endpoints
        • Configurations
        • Nameservice
    • Voting
      • Development
      • Complementary Examples
      • API Endpoints
        • Configurations
        • Create Proposal
        • Cast Vote
        • Statistics
  • Protokol Templates
    • Core Starter Kit
    • Solidity Typescript Hardhat
    • Nestjs
Powered by GitBook
On this page
  • STEP 1. Auction Creation And Cancellation
  • How To Create An Auction
  • How To Cancel An Auction
  • STEP 2. Biding On Auction Items
  • How To Create A Bid
  • How To Cancel A Bid
  • STEP 3. Accepting A Trade
  • How to Accept A Trade

Was this helpful?

  1. Tutorials

How To Trade Digital Assets

Simple Examples Showing How To Trade Digital Assets

PreviousHow To Create Digital AssetsNextNFT

Last updated 4 years ago

Was this helpful?

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

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

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");
examples/nft-auction-cancel.ts at develop · protokol/examplesGitHub
NFTAuctionCancel Runnable Example
examples/nft-accept-trade.ts at develop · protokol/examplesGitHub
NFTAcceptTrade Runnable Example
NFTAuction Runnable Example
examples/nft-auction.ts at develop · protokol/examplesGitHub
examples/nft-bid.ts at develop · protokol/examplesGitHub
NFTBid Runnable Example
Logo
Logo
Logo
Logo
examples/nft-bid-cancel.ts at develop · protokol/examplesGitHub
NFTBidCancel Runnable Example
Logo