Skip to content

Releases: ORIGYN-SA/origyn_nft

Origyn NFT v0.1.5

15 Nov 20:39
Compare
Choose a tag to compare

v0.1.5

  • Network and collection owner can now add a data dapp to an NFT.
  • Breaking Change: read permission for nft owner is now nft_owner
  • Shared wallets can now read nft_owner data.
  • Default minimum increase for asks set to 5%.
  • Default end date for ask is one minute after start.
  • Default start date for ask is the current time.
  • Default token is OGY.
  • Min increase by percentage activated. Default is 5%.
  • Notify canisters of new sales using the notify interface. Implement this interface in your canister and submit your principal with the sale and you will be notified of the new sale if created.
public type Subscriber = actor {
    notify_sale_nft_origyn : shared (SubscriberNotification) -> ();
};
  • New #ask sale type with a simpler interface. A sale can now be started with all defaults by providing a much simpler interface:
let start_auction_attempt_owner = await canister.market_transfer_nft_origyn({
    token_id = "1";
    sales_config = {
        escrow_receipt = null;
        broker_id = null;
        pricing = #ask(null);
    };
});
  • pricing annotations can be added by adding an opt vec of a combination of the following:
public type AskFeature = {
      #buy_now: Nat; //set a buy it now price
      #allow_list : [Principal]; //restrict access to an auction
      #notify: [Principal]; //notify canisters using the new notify interface
      #reserve: Nat; //set a reserve price
      #start_date: Int; //set a date in the future for the sale to start. Defaults to now
      #start_price: Nat; //set a start price.  Defaults to 1.
      #min_increase: {  //set a min increase.  Defaults to 5%.
        #percentage: Float;
        #amount: Nat;
      };
      #ending: { //set an end time for the sale. Defaults to 1 minute.
        #date: Int; //a specific date
        #timeout: Nat; //nanoseconds in the future
      };
      #token: TokenSpec; //the token spec for the currency to use for the Sale.  Defaults to OGY
      #dutch: {
        time_unit: { //increment period and multiple
          #hour : Nat;
          #minute : Nat;
          #day : Nat;
        };
        decay_type:{ //amount to decrease the price at each interval
          #flat: Nat;
          #percent: Float;
        };
    };  
      
};

  • Dutch auctions are now available using the new #ask type. You can set a high price and then decay by the minute, day, hour by a flat amount or a percentage. Reserve prices can also be provided.

  • Updated ICRC7 test implementation to latest draft spec. This may change in the future.v0.1.5

  • Network and collection owner can now add a data dapp to an NFT.

  • Breaking Change: read permission for nft owner is now nft_owner

  • Shared wallets can now read nft_owner data.

  • Default minimum increase for asks set to 5%.

  • Default end date for ask is one minute after start.

  • Default start date for ask is the current time.

  • Default token is OGY.

  • Min increase by percentage activated. Default is 5%.

  • Notify canisters of new sales using the notify interface. Implement this interface in your canister and submit your principal with the sale and you will be notified of the new sale if created.

public type Subscriber = actor {
    notify_sale_nft_origyn : shared (SubscriberNotification) -> ();
};
  • New #ask sale type with a simpler interface. A sale can now be started with all defaults by providing a much simpler interface:
let start_auction_attempt_owner = await canister.market_transfer_nft_origyn({
    token_id = "1";
    sales_config = {
        escrow_receipt = null;
        broker_id = null;
        pricing = #ask(null);
    };
});
  • pricing annotations can be added by adding an opt vec of a combination of the following:
public type AskFeature = {
      #buy_now: Nat; //set a buy it now price
      #allow_list : [Principal]; //restrict access to an auction
      #notify: [Principal]; //notify canisters using the new notify interface
      #reserve: Nat; //set a reserve price
      #start_date: Int; //set a date in the future for the sale to start. Defaults to now
      #start_price: Nat; //set a start price.  Defaults to 1.
      #min_increase: {  //set a min increase.  Defaults to 5%.
        #percentage: Float;
        #amount: Nat;
      };
      #ending: { //set an end time for the sale. Defaults to 1 minute.
        #date: Int; //a specific date
        #timeout: Nat; //nanoseconds in the future
      };
      #token: TokenSpec; //the token spec for the currency to use for the Sale.  Defaults to OGY
      #dutch: {
        time_unit: { //increment period and multiple
          #hour : Nat;
          #minute : Nat;
          #day : Nat;
        };
        decay_type:{ //amount to decrease the price at each interval
          #flat: Nat;
          #percent: Float;
        };
    };  
      
};

  • Dutch auctions are now available using the new #ask type. You can set a high price and then decay by the minute, day, hour by a flat amount or a percentage. Reserve prices can also be provided.
  • Updated ICRC7 test implementation to latest draft spec. This may change in the future.

DIP721 Compatibility Improvements

17 Feb 02:57
812d777
Compare
Choose a tag to compare

v0.1.2-3

  • DIP721 - Added v2 functions that seem to be supported by plug
  • EXT and DIP721 - Added endpoint at /collection/translate and /-/{token_id}/translate to retrieve ext and dip721 token id mappings.
  • Collection Info - added created_at, upgrade_at_unique_holder count, and transaction_count

Hot Fix - Add Stoic and Gateway

31 Jan 22:25
Compare
Choose a tag to compare

v0.1.2-2

  • Adds gateway principal to the storage_info_nft_origyn query
  • EXT - Adds compatibility for stoic wallet. query getEXTTokenIdentifier(token_id) to get the identifier necessary to add an NFT to a wallet.

Hotfix - Market

09 Jan 19:02
e4d9128
Compare
Choose a tag to compare

Fixes a bug where two buyers within a few blocks(while token send in flight) could give both set of tokens to the seller. The first to be processed now locks the NFT until the transaction success or fails.

Also adds royalty_originator_override = "com.origyn.originator.override" that allows a minter to override the collection level originator when minting an nft.

v0.1.2

22 Dec 20:55
99b9460
Compare
Choose a tag to compare

v0.1.2

  • Library - make a library mutable with a node "com.origyn.immutable_library" with a value of #Bool(true). (Defaults to false if not present).
  • Library - Delete a library using stage_library_nft_origyn with filedata set to #Bool(false). This will not work for minted immutable libraries.
  • Soulbound - Souldbound now only takes effect after minting for sales.
  • Batch and Secure - added batch and secure methods for history.
  • Services - Updated Service definition in Types.mo
  • Docs - Changed api file to specification.md
  • Collection - collection_nft_origyn will now return the full list of NFTs(minted or not) for collection owners, managers, and the network
  • http routes - /collection now returns the ids of minted items in json
  • http routes - support NatX, IntX, Blob, Floats, Bytes, Option candy types
  • http routes - /ledger_info/{page}/{page_size} now returns the ledger json for the collection level
  • http routes - /-/token_id/ledger_info/{page}/{page_size} now returns the ledger json for the token level
  • Logging - Canister geek integration
  • Debugging - Updated some debug messages to queries.
  • Metadata - Non-immutable NFT level mata data can be updated with stage_nft_origyn by the manager or owner.
  • Backup - Backup mechanism added
  • Backup - Halt canister added.
  • Auction - Auction owners can now end a sale if it has no bids. Useful for setting a long running buy it now sale. Set minimum and buy it now to the same amount.
  • Auction - Proceeds and Royalties should now be distributed to the default account of the principal/owner.
  • Sales - Fixed #active endpoint so that only tokens with active sales are listed.
  • Batch - Async batch operations are now parallelized for faster processing. Note: Order is no longer stable for responses.
  • Offers - Offers are no longer processed for the empty string collection.
  • Royalties - Fixed bug that split broker fees into two payments when there was only one broker fee.
  • Library - now support "/" in library ids to simulate directory structure for http access.
  • Bug Fix - Minting a item that was minted after mint check now returns escrow and fails gracefully.
  • Bug Fix - Fixed bug when deallocating a library and adding it back larger.
  • Sale Distribution - Collection owner can now distribute sales using the #distribute_sale variant for sale_nft_origyn

v0.1.0

22 Dec 20:53
90b5522
Compare
Choose a tag to compare

v0.1.0

  • Storage - Supports Manually Adding Storage Canisters to a Gateway Canister
  • Storage - Gateway Canisters support up to 2GB of Storage
  • Upgrades - Implemented Migration Scheme. See https://github.com/ZhenyaUsenko/motoko-migrations
  • Logging - Basic logging - Details are not saved
  • Marketplace - Peer to Peer market transactions with escrow
  • Marketplace - Make offers on NFTs with escrow, Owner can reject and refund
  • Marketplace - Sub-account-based deposits and escrow transfer.
  • Marketplace - Auctions - Buy It Now
  • Marketplace - Auctions - Reserve Price
  • Marketplace - Auctions - Increase Amount
  • Marketplace - Supports Ledger Style Transactions (ICP, OGY)
  • Marketplace - Deprecated end_sale_nft_origyn - see sale_nft_origyn
  • Marketplace - Deprecated escrow_nft_origyn - see sale_nft_origyn
  • Marketplace - Deprecated withdraw_nft_origyn - see sale_nft_origyn
  • Marketplace - Deprecated bid_nft_origyn - see sale_nft_origyn
  • Marketplace - Manual sale withdraws
  • Marketplace - Auctions for Minted NFTS
  • Marketplace - Royalty distribution
  • Marketplace - broker code for peer-to-peer and auctions.
  • Marketplace - Royalty split for auctions between the listing broker and bid broker
  • Marketplace - Time-locked escrows for pre-sales
  • Data - Read Type Owner lets data and libraries be restricted to NFT Owners
  • Data - App node data API with allow list access
  • Data - Only initial data nodes can be replaced(ie. Data nodes must be added before mint);
  • Identity - Token Mechanism lets a user get an access token to validate their HTTP requests so that we can show them owner-only data(single canister only)
  • Collection - Retrieve token ids
  • Minting - Metadata Upload
  • Minting - Multi-asset handling
  • Minting - Remote Storage Integration
  • Minting - Free transfer
  • DIP721 - TokenIDs are reversibly converted to a large NAT for Compatability
  • DIP721 - Bearer, owner, metadata functionality
  • EXT - TokenIDs are converted to an ext style principal id.
  • EXT - Bearer, owner, metadata functionality
  • Metadata - Report balances for escrow, sales, NFTs, offers
  • Security - Secure queries provided for when consensus is required for query values
  • Logging - Basic logging
  • Media - Streaming callback for large files
  • Media - Video streaming for safari/ios via ICxProxy
  • Media - Handle nft specific media
  • Media - Handle collection media
  • Media - Handle web-based media with a redirect
  • Dapps - Wallet, Marketplace, Library Viewer, Data Viewer, Ledger Viewer

Public Facing Repo

13 Sep 23:16
Compare
Choose a tag to compare
v0.1.0-rc5

Initial Public Commit