Ensemble de code de chaîne du cadre de jeton combiné

Le cadre de jeton combiné utilise la norme ERC-1155 étendue prise en charge par Blockchain App Builder.

L'échantillon de NFT Art Collection Marketplace illustre l'utilisation du cadre générique de jetons combiné. L'échantillon comprend un code de chaîne pour représenter un marché pour l'achat et la vente de jetons non fongibles (NFT) associés à des œuvres d'art. Dans cet exemple, le fournisseur de plate-forme NFT intègre des musées qui peuvent créer des NFT pour des œuvres d'art dans le réseau blockchain. Les consommateurs peuvent ensuite acheter des NFT dans les musées en utilisant des pièces Eth ou des pièces ERC-20. Lorsque les consommateurs achètent des NFT, les musées attribuent des jetons de fidélité à leurs comptes de jetons fongibles. Les consommateurs peuvent également revendre des NFT. Le code de chaîne met en oeuvre les méthodes requises pour gérer les cycles de vie des jetons, notamment l'initialisation des jetons, les opérations de compte, les affectations de rôle, la frappe, les transferts et la combustion. Il fournit également des comptes de notaire pour approuver les opérations de frappe, de transfert et de combustion, et soutient la conformité au moyen de limites quotidiennes et de procédures d'audit. L'échantillon NFT Art Collection Marketplace est conçu pour le développement de code de chaîne dans TypeScript.

Le cadre de jeton combiné est téléchargeable à partir de la console Oracle Blockchain Platform et comprend les composants suivants.

  • NFTCollectiblesWithERC1155.zip, un fichier d'archives contenant le code de chaîne packagé pour le déploiement.
  • NFTCollectiblesWithERC1155-TypeScript.yaml, un fichier de spécification que vous pouvez utiliser avec Blockchain App Builder pour balayer le code de chaîne NFTCollectiblesWithERC1155.
  • NFTCollectiblesWithERC1155_postman_collection.json, une collection Postman qui vous permet de tester les API dans le code de chaîne.
  • README.md, un guide étape par étape pour l'utilisation du code de chaîne.

Pour obtenir le cadre de jetons fongibles, dans la console des ressources numériques d'Oracle Blockchain Platform, cliquez sur l'onglet Ressources numériques, puis sélectionnez Cadre de jetons combinés.

Fichier de spécification

Le fichier de spécification utilisé pour générer le code de chaîne du marché des collections d'art inclut l'attribut events. La fonction d'événements de chaîne de blocs prend en charge les rappels d'événement dans les codes de chaîne générés pour permettre les avis en temps réel et déclencher des flux de travail. Pour plus d'informations sur les fichiers de spécification et les paramètres utilisés dans les fichiers de spécification, voir Fichier de spécification d'entrée pour les jetons combinés dans Utilisation d'Oracle Blockchain Platform.

Le code de chaîne du marché des collections d'art est basé sur la norme ERC-1155 étendue, comme indiqué dans le fichier de spécification suivant.
#
# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
#
 
# This specification file is an example how to build any whole combined token application that includes fungible and non-fungible tokens together.
# For a combined token application, art collection marketplace with loyalty token has been used as an example.
# Art collection marketplace is a digital marketplace for buying and selling NFT art that rewards users with fungible loyalty tokens for their participation.
 
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

    - name: Loyalty #Asset name
      type: token #Asset type
      standard: erc1155+   # Token standard
      events: true # Supports event code generation for non-GET methods
 
      anatomy:
          type: fungible # Token type
          unit: fractional  #Token unit
       
      behavior: # Token behaviors
        - divisible:
              decimal: 2
        - mintable:                  
            max_mint_quantity: 100000
        - transferable               
        - burnable
        - roles:
            minter_role_name: minter

      properties:
          - name: Token_Name # Custom attribute to represent the token name.
            type: string
           
          - name: Token_to_Currency_Ratio # Custom attribute to specify the token to currency ratio. This attribute is helpful for exchanging the tokens with fiat currency.
            type: number

customMethods:
    - executeQuery
    - "post(token_id: string, selling_price: number)" # Post the non-fungible token for selling in the marketplace
    - "buyWithEthCoin(from_org_id: string, from_user_id: string, to_org_id: string, to_user_id: string, nft_id: string[], loyalty_id: string[], eth_qty: number[], loyalty_reward_quantity: number[])"  # Buy the non-fungible token after paying the amount using Eth Coin and receive loyalty points in return