Origyn_NFT v0.1.5 Release Candidate

We have merged version 0.1.2 into the origyn_nft repo. This is the version that is running on the Suzanne Walking NFT sale on Yumi.

Release Highlights:

Host a Website in your NFT: You can now host an entire website inside of the NFT given that we’ve implemented directory-based naming for library ids. Tools to make this a breeze are pending. Follow GitHub - ORIGYN-SA/csm: JavaScript library for configuring, staging and minting Origyn NFTs from a local directory.

Ledger Endpoints : ie https://prptl.io/-/com.yumi.suzanne-walking/-/sw-1/ledger_info
Here are the release notes:

Collection Endpoints for Token IDs: ie https://prptl.io/-/com.yumi.suzanne-walking-launch/collection

Canister Geek: You need to use our forks if you want to deploy your own UI as we add Candy to log format: GitHub - ORIGYN-SA/canistergeek-ui: Canister geek fork for managing canisters.

Automatic Distribution: We now try to distribute sale revenue and royalties when a sale ends.


  • 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

Feel free to reach out if you have any questions or are interested in integrating with your project.

Special thanks to the amazing Origyn Team that pulled this together before the end of the year.


We merged a hotfix into main today:

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 succeeds 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.

1 Like

Mintjs is now on NPM! @origyn-sa/mintjs - npm


Version 0.1.2-2 has been Released:


  • 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.

Your NFTs will now show up in stoic!

Can you also buy, transfer, and sell said NFT?

Yes. You can list them on the built-in marketplace or make offers to owners of current NFTs.

1 Like

Hotfix 0.1.2-3 is out.

We now have endpoints that will translate origyn_nft tokenIDs to other platforms. This allows you to add origyn_nfts to both stoic and to plug.

Token IDs for the whole collection:

Token IDs for a single nft

The EXT ID can be used to add to stoic.
For Plug you just need to add the canister ID of the NFT.

We’ll get these ids added to the vault ASAP.

These endpoints complement the already existing queries available to convert tokenIDs to ext and dip721 compatible items.

It isn’t too late to jump in on the Origyn Hackathon. Let me know if you’re interested.


  • 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

We’ve moved the v0.1.3 branch to main. The main addition here is highly refactored and readable code as well as upgrades to a couple of the storage mechanisms.

We’ve pushed a v0.1.5 branch with a number of new features:


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

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

  • 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. The 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.


  • KYC - Collection level KYC available through the top level collection attribute com.origyn.kyc_canister=#Principal(canister that implements icrc17_kyc)
  • KYC - Bids and Buy Nows should auto refund failed kyc.
  • Refactor - Buffer.toArrays refactored to new syntax
  • ICRC1 - ICRC1 is now used internally for transfers on the #Ledger Type
  • Bug Fix - mutable items would overwrite collection data when using #UpdateMetadata on collection
  • Bug Fix - can no longer start a buy it now auction with a 0 minimum price.
  • Logging - Errors are now reported to canister geek
  • Network Royalties are now sent to network accounts on a per token basis for better tracking.
  • Upgrade to CandyLibrary 0.2.0
  • Upgrade to Mops Package Manager
  • Added JSDoc style documentation
  • Removed params for deployment to make it easier to launch a canister. Be sure to set the network, set storage, and update your owner after deployment.

Version 0.1.5 of the ORIGYN NFT has been released.

This includes a simplified interface for starting sales on the marketplace, dutch auctions, icrc7(draft) endpoints, and sale notifications to help streamline listings.