Chaincode-Paket für nicht-fungible Token Framework

Das Framework für nicht fungible Token verwendet den erweiterten ERC-721-Standard, der von Blockchain App Builder unterstützt wird.

Das Beispiel des NFT Art Collection Marketplace veranschaulicht die Verwendung des generischen Frameworks für nicht fungible Token, das auf dem erweiterten ERC-721-Standard basiert, der von Blockchain App Builder unterstützt wird. Das Beispiel enthält einen Chaincode, der einen Marktplatz für den Kauf und Verkauf von nicht fungiblen Token (NFTs) im Zusammenhang mit Kunstwerken darstellt. In diesem Beispiel können Museen NFTs für Kunstwerke im Blockchain-Netzwerk prägen (erstellen). Verbraucher können dann NFTs aus den Museen kaufen und dann wiederverkaufen. Der Chaincode implementiert die Methoden, die für die Verwaltung des nicht fungiblen Tokenlebenszyklus erforderlich sind, einschließlich Tokeninitialisierung, Kontovorgängen, Rollenzuweisungen, Prägen, Übertragungen und Brennen. Es bietet auch Notarkonten für die Genehmigung von Präge-, Transfer- und Brennvorgängen und unterstützt die Compliance durch tägliche Grenzwerte und Auditingverfahren. Das NFT Art Collection Marketplace-Beispiel wurde für die Chaincode-Entwicklung in TypeScript entwickelt.

Das Chaincode-Paket für nicht fungible Token Frameworks kann von der Oracle Blockchain Platform-Konsole heruntergeladen werden und umfasst die folgenden Komponenten.
  • NFTCollectiblesWithERC721.zip, eine Archivdatei, die den in einem Package integrierten Chaincode für das Deployment enthält.
  • NFTCollectiblesWithERC721-TypeScript.yaml, eine Spezifikationsdatei, die Sie mit Blockchain App Builder verwenden können, um den NFTCollectiblesWithERC721-Kettencode zu erstellen.
  • NFTCollectiblesWithERC721_postman_collection.json, eine Postman-Sammlung, mit der Sie die APIs im Chaincode testen können.
  • README.md, eine schrittweise Anleitung für die Arbeit mit dem Chaincode.

Um das Fungible Token Framework abzurufen, klicken Sie in der Oracle Blockchain Platform Digital Assets-Konsole auf die Registerkarte Digitale Assets, und wählen Sie Nicht-Fungible Token Framework aus.

Weitere Informationen zur Verwendung von Postman-Sammlungen finden Sie in den folgenden Themen.

Spezifikationsdatei

Die Spezifikationsdatei, mit der der Chaincode des Art Collection Marketplace generiert wird, enthält das Attribut events. Die Chaincode-Ereignisfunktion unterstützt Ereignis-Callbacks in generierten Chaincodes, um Echtzeitbenachrichtigungen zu ermöglichen und Workflows auszulösen. Weitere Informationen zu Spezifikationsdateien und den Parametern, die in Spezifikationsdateien verwendet werden, finden Sie unter Eingabespezifikationsdatei für nicht-fungible Token in Oracle Blockchain Platform verwenden.

Der Marktplatz für Kunstsammlungen basiert auf dem erweiterten ERC-721-Standard, wie in der folgenden Spezifikationsdatei dargestellt.
#
# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
#
 
# This specification file is an example how to build any whole non-fungible token application.
# For a whole non-fungible token application, art collection marketplace has been used as an example.
# Art collection marketplace is a digital marketplace that uses NFTs to enable the buying, selling, and showcasing of unique art pieces, providing secure ownership, provenance tracking, and exclusive rights for artists and collectors.
 
assets:
    - name: ArtCollection #Asset name
      type: token #Asset type
      symbol: ART         # Token symbol
      standard: erc721+   # Token standard
      events: true # Supports event code generation for non-GET methods
 
      anatomy:
          type: nonfungible # Token type
          unit: whole  #Token unit
       
      behavior:
        - indivisible
        - singleton                               
        - mintable:                  
            max_mint_quantity: 20000
        - transferable               
        - lockable
        - roles:
            minter_role_name: minter
       
      properties:  # Custom asset attributes for non-fungible token
           
          - name: Price # Custom asset attribute to set the price of a non-fungible token in the marketplace
            type: float
           
          - name: On_Sale_Flag # Custom asset attribute to maintain non-fungible token selling status in the marketplace
            type: boolean
       
      metadata: # To maintain the metadata on-chain, this tag will be used. Users won't be able to update the metadata attribute values after an NFT is minted.
           
          - name: Painting_Name # Custom asset attribute to represent the title given to a piece of artwork.
            type: string
           
          - name: Description # Custom asset attribute to represent a detailed explanation or interpretation of the painting's concept, style, or message.
            type: string
           
          - name: Painter_Name # Custom asset attribute to represent the name of the artist who created the painting.
            type: string
 
customMethods:
    - executeQuery
    - "post(token_id: string, selling_price: number)" # Post the non-fungible token for selling in the marketplace.
    - "buy(from_org_id: string, from_user_id: string, to_org_id: string, to_user_id: string, nonfungible_token_id: string, amount_paid: number)"  # Buy the non-fungible token after paying the amount using any payment gateways.

Unterstützerdetails in Chaincode-Methoden

Die Oracle Blockchain Platform Digital Assets Edition fügt der Anforderungs-Payload für alle Setter-Methoden einen Bestätigungsparameter hinzu. Der Wert des Parameters ist entweder endorsers oder sameOrgEndorser. Wenn der Parameter sameOrgEndorser wahr ist, müssen Transaktionsbestätigungen aus derselben Organisation wie der Anforderer stammen. Der Parameter endorsers gibt eine Liste der Peers an, die die Transaktion bestätigen müssen. Weitere Informationen finden Sie unter Unterstützung von Empfehlungen in Postman-Sammlungen. Die folgende Tabelle zeigt den Endorser-Typ für jede Methode.

Methode Typ des Unterstützers
activateAccount endorsers
addTokenAdmin sameOrgEndorser
addRole endorsers
addTokenSysRole endorsers
balanceOf endorsers
buy endorsers
createAccount endorsers
createArtCollectionToken sameOrgEndorser
deleteAccount endorsers
getAccountByUser endorsers
getAccountHistory endorsers
getAccountsByRole endorsers
getAccountsByTokenSysRole endorsers
getAccountStatus endorsers
getAccountStatusHistory endorsers
getAccountTransactionHistory endorsers
getAccountTransactionHistoryWithFilters endorsers
getAllAccounts endorsers
getAllLockedNFTs endorsers
getAllTokenAdmins endorsers
getAllTokens endorsers
getAllTokensByUser endorsers
getLockedNFTsByOrg endorsers
getTokenById endorsers
getTokenHistory endorsers
getTransactionById endorsers
getUserByAccountId endorsers
getUsersByRole endorsers
getUsersByTokenSysRole endorsers
init endorsers
isInRole endorsers
isInTokenSysRole endorsers
isNFTLocked endorsers
isTokenAdmin endorsers
lockNFT sameOrgEndorser
name endorsers
ownerOf endorsers
post endorsers
removeRole endorsers
removeTokenAdmin sameOrgEndorser
removeTokenSysRole endorsers
safeTransferFrom endorsers
suspendAccount endorsers
symbol endorsers
tokenURI endorsers
totalNetSupply endorsers
totalSupply endorsers
transferFrom endorsers
transferTokenSysRole endorsers
updateArtCollectionToken sameOrgEndorser