Échafaudage TypeScript Projet NFT pour ERC-721
Blockchain App Builder utilise l'entrée de votre fichier de spécification NFT et génère un projet de code chaîne à échafaudage entièrement fonctionnel.
Le projet génère automatiquement des classes et des fonctions de cycle de vie NFT, y compris des méthodes CRUD et non-CRUD, ainsi qu'un SDK de tokenisation. La validation des arguments, la sérialisation/désérialisation et la capacité de persistance transparente sont toutes prises en charge automatiquement.
Pour plus d'informations sur le projet et les méthodes échafaudés qui ne sont pas directement liés aux NFT, reportez-vous au projet de code chaîne TypeScript échafaudé.
Modèle
Chaque classe de modèle avec jeton étend la classe OchainModel
. La fonctionnalité de persistance transparente, ou ORM simplifié, est capturée dans la classe OchainModel
.
import * as yup from 'yup';
import { Id, Mandatory, Validate, Default, Embedded, Derived, ReadOnly } from '../../lib/decorators';
import { OchainModel } from '../../lib/ochain-model';
import { STRATEGY } from '../../lib/utils';
import { EmbeddedModel } from '../../lib/ochain-embedded-model';
export class ArtCollectionMetadata extends EmbeddedModel<ArtCollectionMetadata> {
@Validate(yup.string())
public painting_name: string;
@Validate(yup.string())
public description: string;
@Validate(yup.string())
public image: string;
@Validate(yup.string())
public painter_name: string;
}
@Id('tokenId')
export class ArtCollection extends OchainModel<ArtCollection> {
public readonly assetType = 'otoken';
@Mandatory()
@Validate(yup.string().required().matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/).max(16))
public tokenId: string;
@ReadOnly('artcollection')
public tokenName: string;
@Validate(yup.string().trim().max(256))
public tokenDesc: string;
@ReadOnly('ART')
public symbol: string;
@ReadOnly('erc721+')
public tokenStandard: string;
@ReadOnly('nonfungible')
public tokenType: string;
@ReadOnly('whole')
public tokenUnit: string;
@ReadOnly(["indivisible","singleton","mintable","transferable","burnable","roles"])
public behaviors: string[];
@ReadOnly({minter_role_name: "minter"})
public roles: object;
@ReadOnly({max_mint_quantity: 20000})
public mintable: object;
@Validate(yup.string())
public owner: string;
@Validate(yup.string())
public createdBy: string;
@Validate(yup.string())
public transferredBy: string;
@Validate(yup.string())
public creationDate: string;
@Validate(yup.string())
public transferredDate: string;
@Validate(yup.bool())
public isBurned: boolean;
@Validate(yup.string())
public burnedBy: string;
@Validate(yup.string())
public burnedDate: string;
@Validate(yup.string().max(2000))
public tokenUri: string;
@Embedded(ArtCollectionMetadata)
public metadata: ArtCollectionMetadata;
@Validate(yup.number())
public price: number;
@Validate(yup.boolean())
public on_sale_flag: boolean;
}
Contrôleur
La classe de contrôleur principale étend la classe OchainController
. Il n'existe qu'un seul contrôleur principal.
export class DigiCurrCCController extends OchainController{
Vous pouvez créer autant de classes, de fonctions ou de fichiers que vous le souhaitez, mais seules les méthodes définies dans la classe de contrôleur principale peuvent être appelées. Les autres méthodes sont masquées.
Vous pouvez utiliser les méthodes SDK de jeton pour écrire des méthodes personnalisées pour votre application métier.
Méthodes NFT générées automatiquement
Blockchain App Builder génère automatiquement des méthodes pour prendre en charge les NFT et les cycles de vie NFT. Vous pouvez utiliser ces méthodes pour initialiser les NFT, gérer les rôles et les comptes et effectuer d'autres tâches du cycle de vie des NFT sans codage supplémentaire. Les méthodes de contrôleur doivent avoir un décorateur @Validator(...params)
pour pouvoir être appelées.
- Gestion des contrôles d'accès
- Gestion de la configuration des jetons
- Gestion de comptes
- Gestion des rôles
- Gestion de l'historique des transactions
- Gestion du comportement des jetons
Méthodes de gestion du contrôle d'accès
-
addTokenAdmin
- Cette méthode ajoute un utilisateur en tant que
Token Admin
du code chaîne. Cette méthode ne peut être appelée que par un élémentToken Admin
du code chaîne. -
removeTokenAdmin
- Cette méthode enlève un utilisateur en tant qu'élément
Token Admin
du code chaîne. Cette méthode ne peut être appelée que par un élémentToken Admin
du code chaîne. -
isTokenAdmin
- Cette méthode renvoie la valeur booléenne
true
si l'appelant de la fonction est unToken Admin
, sinon elle renvoiefalse
. Un élémentToken Admin
peut appeler cette fonction sur n'importe quel autre utilisateur du réseau blockchain. Les autres utilisateurs ne peuvent appeler cette méthode que sur leur propre compte. -
getAllTokenAdmins
- Cette méthode renvoie la liste de tous les utilisateurs qui sont un
Token Admin
du code chaîne. Cette méthode ne peut être appelée que par l'élémentToken Admin
du code chaîne.
Méthodes de gestion de la configuration des jetons
-
init
- Cette méthode est appelée lorsque le code chaîne est instancié. Chaque élément
Token Admin
est identifié par les informationsuserId
etorgId
dans le paramètreadminList
.userId
est le nom utilisateur ou l'ID courriel du propriétaire de l'instance ou de l'utilisateur qui est connecté à l'instance.orgId
est l'ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation réseau actuelle. Le paramètreadminList
est obligatoire la première fois que vous déployez le code chaîne. Si vous mettez à niveau le code chaîne, transmettez une liste vide ([]
). Toutes les autres informations du paramètreadminList
sont ignorées lors des mises à niveau. -
getAllTokens
- Cette méthode renvoie toutes les ressources de jeton enregistrées dans la base de données d'état. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne. Cette méthode utilise des requêtes enrichies Berkeley DB SQL et ne peut être appelée qu'en cas de connexion au réseau Oracle Blockchain Platform distant. -
getAllTokensByUser
- Cette méthode renvoie toutes les ressources de jeton détenues par un utilisateur spécifié. Cette méthode utilise des requêtes enrichies Berkeley DB SQL et ne peut être appelée qu'en cas de connexion au réseau Oracle Blockchain Platform distant. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne ou par le propriétaire du compte. -
getTokenById
- Cette méthode renvoie un objet de jeton si le jeton est présent dans la base de données d'état. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne ou du propriétaire du jeton. -
getTokenHistory
- Cette méthode renvoie l'historique d'un ID de jeton spécifié. Cette méthode est asynchrone. Cette méthode ne peut être appelée que lorsqu'elle est connectée au réseau Oracle Blockchain Platform distant. Tout le monde peut appeler cette méthode.
-
getTokenObject
- Il s'agit d'une méthode utilitaire qui renvoie une instance du jeton pour un ID de jeton spécifié. Cette méthode est utilisée par de nombreuses méthodes générées automatiquement pour extraire des objets de jeton. Vous pouvez appeler cette méthode selon vos besoins à partir de vos méthodes personnalisées. Lorsque vous créez une classe ou une ressource segmentée en jetons, mettez à jour le cas de commutateur avec la classe
Token
correspondante pour renvoyer l'objet de jeton correct. La commandeochain sync
dans Blockchain App Builder crée automatiquement un cas de commutateur lorsqu'une ressource segmentée est créée dans le fichier de spécification. Cette méthode n'a pas de décorateur de méthode@Validator()
, ce qui signifie que cette méthode n'est pas directement appelable et ne peut être appelée qu'à partir d'autres méthodes. -
ownerOf
- Cette méthode renvoie l'ID de compte du propriétaire de l'ID de jeton spécifié. Tout le monde peut appeler cette méthode.
-
name
- Cette méthode renvoie le nom de la classe de jeton. Tout le monde peut appeler cette méthode.
-
symbol
- Cette méthode renvoie le symbole de la classe de jeton. Tout le monde peut appeler cette méthode.
-
tokenURI
- Cette méthode renvoie l'URI d'un jeton spécifié. Tout le monde peut appeler cette méthode.
-
totalSupply
- Cette méthode renvoie le nombre total de jetons extraits. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne. -
totalNetSupply
- Cette méthode renvoie le nombre total de jetons extraits moins le nombre de jetons brûlés. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne.
Méthodes de gestion des comptes
-
createAccount
- Cette méthode crée un compte pour l'utilisateur et le jeton spécifiés. Un compte doit être créé pour tout utilisateur qui aura des jetons à tout moment. Les comptes assurent le suivi du nombre de TEF dont dispose un utilisateur. Les utilisateurs doivent avoir des comptes sur le réseau pour effectuer des opérations liées aux jetons. Vous ne pouvez créer qu'un seul compte NFT par utilisateur.
Un ID de compte est un ensemble alphanumérique de caractères, précédé de
oaccount~
et suivi d'un hachage SHA-256 de l'ID de fournisseur de service d'adhésion (orgId
) de l'utilisateur dans l'organisation réseau actuelle, du nom d'utilisateur ou de l'ID de courriel (userId
) du propriétaire de l'instance ou de l'utilisateur connecté à l'instance, et de la chaîne constantenft
. Cette méthode ne peut être appelée que par l'élémentToken Admin
du code chaîne. -
balanceOf
- Cette méthode renvoie le nombre total de TFN qu'un utilisateur spécifié détient. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne ou par le propriétaire du compte. -
getAllAccounts
- Cette méthode renvoie la liste de tous les comptes. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne. Cette méthode utilise des requêtes enrichies Berkeley DB SQL et ne peut être appelée qu'en cas de connexion au réseau Oracle Blockchain Platform distant. -
getAccountByUser
- Cette méthode renvoie les détails du compte d'un utilisateur spécifié. Cette méthode ne peut être appelée que par une chaîne (
Token Admin
) du code chaîne ou par la chaîne (Account Owner
) du compte. -
getUserByAccountId
- Cette méthode renvoie les détails utilisateur d'un compte spécifié. Cette méthode peut être appelée par n'importe quel utilisateur.
-
getAccountHistory
- Cette méthode renvoie l'historique des comptes d'un utilisateur spécifié. Cette méthode est asynchrone. Cette méthode ne peut être appelée que par l'élément
Token Admin
du code chaîne ou par le propriétaire du compte.
Méthodes de gestion des rôles
-
addRole
- Cette méthode ajoute un rôle à un utilisateur spécifié. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne. -
removeRole
- Cette méthode supprime un rôle d'un utilisateur spécifié. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne. -
getAccountsByRole
- Cette méthode renvoie la liste de tous les ID de compte pour un rôle donné. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne. -
getUsersByRole
- Cette méthode renvoie la liste de tous les utilisateurs pour un rôle donné. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne. -
isInRole
- Cette méthode renvoie une valeur booléenne pour indiquer si un utilisateur a un rôle spécifié. Cette méthode ne peut être appelée que par une chaîne (
Token Admin
) du code chaîne ou par la chaîne (Account Owner
) du compte.
Méthodes de gestion de l'historique des transactions
-
getAccountTransactionHistory
- Cette méthode renvoie l'historique des transactions de compte pour un utilisateur spécifié. Cette méthode est asynchrone. Cette méthode ne peut être appelée que par l'élément
Token Admin
du code chaîne ou par le propriétaire du compte. -
getAccountTransactionHistoryWithFilters
- Cette méthode renvoie l'historique des transactions de compte pour un utilisateur spécifié, filtré par
PageSize
,Bookmark
,startTime
etendTime
. Cette méthode est asynchrone. Cette méthode ne peut être appelée que lorsqu'elle est connectée au réseau Oracle Blockchain Platform distant. Cette méthode ne peut être appelée que par l'élémentToken Admin
du code chaîne ou par le propriétaire du compte. -
getTransactionById
- Cette méthode renvoie l'historique des transactions pour un ID de transaction spécifié. Cette méthode est asynchrone. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne ou par le propriétaire du compte. -
deleteHistoricalTransactions
- Cette méthode supprime les transactions antérieures à un horodatage spécifié dans la base de données d'état. Cette méthode est asynchrone. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne.
Méthodes de gestion du comportement des jetons - Comportement Mintable
-
create<Token Name>Token
- Cette méthode crée (minte) une NFT. La ressource et les propriétés associées sont enregistrées dans la base de données d'état. L'appelant de cette transaction doit avoir un compte de jeton. L'appelant de cette transaction devient le propriétaire du NFT. Si le fichier de spécification de jeton inclut la section
roles
pourbehaviors
et la propriétéminter_role_name
pourroles
, l'appelant de la transaction doit avoir le rôle minter. Sinon, n'importe quel appelant peut frapper des NFT. -
update<Token Name>Token
- Cette méthode met à jour les propriétés de jeton. Cette méthode ne peut être appelée que par l'utilisateur qui est le propriétaire ou le créateur du jeton. Une fois la ressource de jeton créée, seul le propriétaire du jeton peut mettre à jour les propriétés personnalisées du jeton. Si l'utilisateur est à la fois propriétaire et créateur d'un jeton, il peut également mettre à jour la propriété
TokenDesc
. Les métadonnées de jeton ne peuvent pas être mises à jour. Vous devez transmettre toutes les propriétés de jeton à cette méthode, même si vous souhaitez mettre à jour uniquement certaines propriétés.
Méthodes de gestion du comportement des jetons - Comportement transférable
-
safeTransferFrom
- Cette fonction est asynchrone. Cette méthode transfère la propriété de la TFN spécifiée de l'appelant vers un autre compte. Cette méthode inclut les validations suivantes :
- Le jeton existe et n'est pas gravé.
- Le compte émetteur et le compte bénéficiaire existent et ne sont pas le même compte.
- Le compte de l'expéditeur détient le jeton.
- L'appelant de la fonction est l'expéditeur.
-
transferFrom
- Cette fonction est asynchrone. Cette méthode transfère la propriété du NFT spécifié d'un compte expéditeur vers un compte destinataire. Il incombe à l'appelant de transmettre les paramètres corrects. Cette méthode peut être appelée par n'importe quel utilisateur, pas seulement le propriétaire du jeton. Cette méthode inclut les validations suivantes :
- Le jeton existe et n'est pas gravé.
- Le compte émetteur et le compte bénéficiaire existent et ne sont pas le même compte.
- Le compte de l'expéditeur détient le jeton.
Méthodes de gestion du comportement des jetons - Comportement gravable
-
burn
- Cette méthode désactive ou brûle le NFT spécifié du compte de l'appelant. L'appelant de cette méthode doit avoir un compte. Un jeton ne peut être gravé que si le fichier de spécification du jeton inclut le comportement
burnable
. Si aucune propriétéburner_role_name
n'est indiquée dans la sectionroles
du fichier de spécification, le propriétaire du jeton peut graver le jeton. Si une propriétéburner_role_name
est spécifiée dans la sectionroles
, l'utilisateur auquel le rôle de brûleur est affecté, qui est également le créateur ou le propriétaire du jeton, peut graver le jeton. -
burnNFT
- Cette méthode désactive, ou brûle, la NFT spécifiée du compte de l'appelant, et renvoie un objet de jeton et un historique de jeton. L'appelant de cette méthode doit avoir un compte. Un jeton ne peut être gravé que si le fichier de spécification du jeton inclut le comportement
burnable
. Si aucune propriétéburner_role_name
n'est indiquée dans la sectionroles
du fichier de spécification, le propriétaire du jeton peut graver le jeton. Si une propriétéburner_role_name
est spécifiée dans la sectionroles
, l'utilisateur auquel le rôle de brûleur est affecté, qui est également le créateur ou le propriétaire du jeton, peut graver le jeton.
Méthodes personnalisées
Vous pouvez utiliser les méthodes SDK de jeton pour écrire des méthodes personnalisées pour votre application métier.
L'exemple suivant montre comment utiliser des méthodes SDK de jeton dans des méthodes personnalisées. Lorsque la méthode sell
est appelée, elle envoie un jeton à la vente pour un prix spécifié.
@Validator(yup.string(), yup.number())
public async sell(token_id: string, selling_price: number) {
try {
const token = await this.Ctx.ERC721Token.get(token_id);
const t = new ArtCollection(token)
/** * price is a custom asset
attribute to set the price of a non-fungible token in the
marketplace */
t.price = selling_price;
/** * on_sale_flag is a
custom asset attribute that maintains non-fungible token selling status in the
marketplace */
t.on_sale_flag = true;
await this.Ctx.ERC721Token.updateToken(t);
let msg = `Token ID : '${token_id}' has been posted for selling in the marketplace'`;
return {msg}
} catch(error) {
throw new Error(error.message);
}
}
Méthodes SDK NFT
- Gestion des contrôles d'accès
- Gestion de la configuration des jetons
- Gestion de comptes
- Gestion des rôles
- Gestion de l'historique des transactions
- Gestion du comportement des jetons
Méthodes de gestion du contrôle d'accès
Token Admin
ou Account Owner
du jeton. Vous pouvez utiliser cette fonctionnalité pour vous assurer que les opérations sont effectuées uniquement par les utilisateurs prévus. Tout accès non autorisé entraîne une erreur. Pour utiliser la fonction de contrôle d'accès, importez la classe Authorization
à partir du module ../lib/erc721-auth
.import { ERC721Authorization } from '../lib/erc721-auth';
-
addAdmin
- Cette méthode ajoute un utilisateur en tant que
Token Admin
du code chaîne de jeton. -
removeAdmin
- Cette méthode enlève un utilisateur en tant qu'utilisateur
Token Admin
du code chaîne de jeton. -
isUserTokenAdmin
- Cette méthode renvoie la valeur booléenne
true
si l'appelant de la fonction est unToken Admin
. Sinon, la méthode renvoiefalse
. Fonction statique asynchrone. -
getAllAdmins
- Cette méthode renvoie la liste de tous les utilisateurs
Token Admin
. -
checkAuthorization
- Utilisez cette méthode pour ajouter une vérification de contrôle d'accès à une opération. Cette fonction est asynchrone. La plupart des méthodes générées automatiquement incluent le contrôle d'accès. Certaines méthodes de jeton peuvent être exécutées uniquement par l'élément
ERC721Admin
ouAccount Owner
du jeton ou par l'élémentMultipleAccountOwner
pour les utilisateurs ayant plusieurs comptes. La méthodecheckAuthorization
fait partie de la classeAuthorization
, à laquelle vous accédez via l'objetCtx
. Le mapping de contrôle d'accès est décrit dans le fichier../lib/constant.ts
, comme indiqué dans le texte suivant. Vous pouvez modifier le contrôle d'accès en modifiant le fichier../lib/constant.ts
. Pour utiliser votre propre contrôle d'accès ou pour désactiver le contrôle d'accès, supprimez le code de contrôle d'accès des méthodes de contrôleur et des méthodes personnalisées générées automatiquement.export const TOKENACCESS = { ADMIN: { isUserTokenAdmin: ['Admin', 'MultipleAccountOwner'], addAdmin: ['Admin'], removeAdmin: ['Admin'], getAllAdmins: ['Admin'], }, TOKEN: { save: ['Admin'], getAllTokens: ['Admin'], get: ['Admin'], update: ['Admin'], getDecimals: ['Admin'], getTokensByName: ['Admin'], addRoleMember: ['Admin'], removeRoleMember: ['Admin'], isInRole: ['Admin', 'AccountOwner'], getTotalMintedTokens: ['Admin'], getNetTokens: ['Admin'], }, ROLE: { getAccountsByRole: ['Admin'], getUsersByRole: ['Admin'], }, TRANSACTION: { deleteTransactions: ['Admin'], }, ACCOUNT: { createAccount: ['Admin'], getAllAccounts: ['Admin'], getAccountsByUser: ['Admin', 'MultipleAccountOwner'], getAccount: ['Admin', 'AccountOwner'], history: ['Admin', 'AccountOwner'], getAccountTransactionHistory: ['Admin', 'AccountOwner'], getAccountBalance: ['Admin', 'AccountOwner'], getAccountOnHoldBalance: ['Admin', 'AccountOwner'], getOnHoldIds: ['Admin', 'AccountOwner'], }, ERC721ADMIN: { isUserTokenAdmin: ['Admin'], addAdmin: ['Admin'], removeAdmin: ['Admin'], getAllAdmins: ['Admin'], }, ERC721TOKEN: { getAllTokens: ['Admin'], getAllTokensByUser: ['Admin', 'AccountOwner'], get: ['Admin', TOKEN_OWNER], getTokensByName: ['Admin'], addRoleMember: ['Admin'], removeRoleMember: ['Admin'], isInRole: ['Admin', 'AccountOwner'], totalSupply: ['Admin'], totalNetSupply: ['Admin'], history: ['Admin'], }, ERC721ROLE: { getAccountsByRole: ['Admin'], getUsersByRole: ['Admin'], }, ERC721TRANSACTION: { deleteTransactions: ['Admin'], }, ERC721ACCOUNT: { createAccount: ['Admin'], getAllAccounts: ['Admin'], getAccountsByUser: ['Admin', 'MultipleAccountOwner'], history: ['Admin', 'AccountOwner'], getAccountTransactionHistory: ['Admin', 'AccountOwner'], getAccountTransactionHistoryWithFilters: ['Admin', 'AccountOwner'], balanceOf: ['Admin', 'MultipleAccountOwner'], } }
Méthodes de gestion de la configuration des jetons
Les méthodes de gestion de la configuration des jetons sont basées sur la norme ERC-721. Pour utiliser les méthodes de gestion de la configuration de jeton, importez la classe Token
à partir du module ../lib/erc721-token
.
-
createToken
- Cette méthode crée un jeton et enregistre ses propriétés dans la base de données d'état. Cette méthode ne peut être appelée que par les utilisateurs dotés du rôle minter. Cette fonction est asynchrone.
-
getAllTokens
- Cette méthode renvoie toutes les ressources de jeton enregistrées dans la base de données d'état. Cette méthode utilise des requêtes enrichies Berkeley DB SQL et ne peut être appelée qu'en cas de connexion au réseau Oracle Blockchain Platform distant. Fonction statique asynchrone.
-
getAllTokensByUser
- Cette méthode renvoie tous les jetons appartenant à un ID de compte spécifié. Fonction statique asynchrone.
-
getTokenUri
- Cette méthode renvoie l'URI d'un jeton spécifié. Fonction statique asynchrone.
-
history
- Cette méthode renvoie l'historique du jeton spécifié. Fonction statique asynchrone.
-
get
- Cette méthode renvoie l'objet de jeton indiqué s'il est présent dans la base de données d'état. Fonction statique asynchrone.
-
ownerOf
- Cette méthode renvoie l'ID de compte du propriétaire d'un jeton spécifié. Fonction statique asynchrone.
-
symbol
- Cette méthode renvoie le symbole de la classe de jeton.
-
tokenUri
- Cette méthode renvoie l'URI d'un jeton spécifié. Fonction statique asynchrone.
-
totalSupply
- Cette méthode renvoie le nombre total de TFN extraites. Cette fonction est asynchrone.
-
updateToken
- Cette méthode met à jour les propriétés de jeton. Cette méthode ne peut être appelée que par le propriétaire ou le créateur du jeton. Une fois la ressource de jeton créée, seul le propriétaire du jeton peut mettre à jour les propriétés personnalisées du jeton. Si l'utilisateur est à la fois propriétaire et créateur d'un jeton, il peut également mettre à jour la propriété
TokenDesc
. Les métadonnées de jeton ne peuvent pas être mises à jour. Vous devez transmettre toutes les propriétés de jeton à cette méthode, même si vous souhaitez mettre à jour uniquement certaines propriétés. Cette fonction est asynchrone. -
getByRange
- Cette méthode appelle la méthode fabric
getStateByRange
en interne. Même si une immobilisation avec le code indiqué est renvoyée à partir du livre, cette méthode convertit l'immobilisation dans le type d'immobilisation de l'appelant. Fonction statique asynchrone.@validator(yup.string(), yup.string()) public async getDigiCurrGetByRange(startId: string, endId: string) { return await this.Ctx.ERC721TOken.getByRange(startId, endId, PaintingNft); }
-
isTokenType
- Cette méthode indique si une ressource de jeton existe avec l'ID spécifié. Fonction statique asynchrone.
Méthodes de gestion des comptes
-
generateAccountId
- Cette méthode renvoie un ID de compte, qui est formé par la concaténation de l'ID de fournisseur de services d'adhésion (
orgId
) et du nom d'utilisateur ou de l'ID de courriel (userId
), puis la création d'un hachage SHA-256. -
createAccount
- Cette méthode crée un compte pour l'utilisateur et le jeton spécifiés. Un compte doit être créé pour tout utilisateur qui aura des jetons à tout moment. Les comptes assurent le suivi du nombre de TEF dont dispose un utilisateur. Les utilisateurs doivent avoir des comptes sur le réseau pour effectuer des opérations liées aux jetons. Vous ne pouvez créer qu'un seul compte NFT par utilisateur.
Un ID de compte est un ensemble alphanumérique de caractères, précédé de
oaccount~
et suivi d'un hachage SHA-256 de l'ID de fournisseur de service d'adhésion (orgId
) de l'utilisateur dans l'organisation réseau actuelle, du nom d'utilisateur ou de l'ID de courriel (userId
) du propriétaire de l'instance ou de l'utilisateur connecté à l'instance, et de la chaîne constantenft
. Cette méthode ne peut être appelée que par l'élémentToken Admin
du code chaîne. -
balanceOf
- Cette méthode renvoie le nombre total de TFN que l'utilisateur spécifié détient.
-
getAllAccounts
- Cette méthode renvoie la liste de tous les comptes. Cette méthode utilise des requêtes enrichies Berkeley DB SQL et ne peut être appelée qu'en cas de connexion au réseau Oracle Blockchain Platform distant.
-
getAccountByUser
- Cette méthode renvoie les détails de l'utilisateur pour un compte spécifié. Cette méthode ne peut être appelée que par une chaîne (
Token Admin
) du code chaîne ou par la chaîne (Account Owner
) du compte. -
getUserByAccountId
- Cette méthode renvoie les détails de l'utilisateur pour un compte spécifié.
-
history
- Cette méthode renvoie un tableau des détails de l'historique du compte pour un compte spécifié.
-
getAccountWithStatusByUser
- Cette méthode renvoie les détails de l'utilisateur pour un compte spécifié, y compris le statut du compte. Cette méthode ne peut être appelée que par une chaîne (
Token Admin
) du code chaîne ou par la chaîne (Account Owner
) du compte.
Méthodes de gestion des rôles
-
addRoleMember
- Cette méthode ajoute un rôle à un utilisateur et un jeton spécifiés. Un ID de compte est créé en créant un hachage SHA-256 de l'ID de fournisseur de services d'adhésion concaténé (
orgId
) et du nom d'utilisateur ou de l'ID de courriel (userId
). Cette fonction est asynchrone. -
removeRoleMember
- Cette méthode supprime un rôle d'un utilisateur et d'un jeton spécifiés. Un ID de compte est créé en créant un hachage SHA-256 de l'ID de fournisseur de services d'adhésion concaténé (
orgId
) et du nom d'utilisateur ou de l'ID de courriel (userId
). Cette fonction est asynchrone. -
getAccountsByRole
- Cette méthode renvoie la liste de tous les ID de compte pour un rôle donné.
-
getUsersByRole
- Cette méthode renvoie la liste de tous les utilisateurs pour un rôle donné.
-
isInRole
- Cette méthode renvoie une valeur booléenne pour indiquer si un utilisateur et un jeton ont un rôle spécifié. Un ID de compte est créé en créant un hachage SHA-256 de l'ID de fournisseur de services d'adhésion concaténé (
orgId
) et du nom d'utilisateur ou de l'ID de courriel (userId
). Cette fonction est asynchrone.
Méthodes de gestion de l'historique des transactions
-
getAccountTransactionHistory
- Cette méthode renvoie un tableau des détails de l'historique des transactions pour un compte spécifié.
-
getAccountTransactionHistoryWithFilters
- Cette méthode renvoie l'historique des transactions de compte pour un utilisateur spécifié, filtré par
PageSize
,Bookmark
,startTime
etendTime
. Cette méthode ne peut être appelée que lorsqu'elle est connectée au réseau Oracle Blockchain Platform distant. -
getTransactionById
- Cette méthode renvoie l'historique d'une ressource
Transaction
. -
deleteHistoricalTransactions
- Cette méthode supprime les transactions antérieures à une date spécifiée de la base de données d'état.
Gestion du comportement des jetons - Comportement mentable
-
getMaxMintQuantity
- Cette méthode renvoie la quantité minimale maximale d'un jeton. Si le comportement
max_mint_quantity
n'est pas configuré dans le fichier de spécification, la valeur par défaut est 0 et un nombre infini de jetons peuvent être extraits. -
getTotalMintedTokens
- Cette méthode renvoie le nombre total de jetons extraits disponibles dans le système pour le jeton spécifié. Le nombre net de jetons disponibles est le nombre total de jetons extraits moins le nombre de jetons brûlés. Cette fonction est asynchrone.
Gestion du comportement des jetons - Comportement transférable
-
safeTransferFrom
- Cette fonction est asynchrone. Cette méthode transfère la propriété de la TFN spécifiée de l'appelant vers un autre compte. Cette méthode inclut les validations suivantes :
- Le jeton existe et n'est pas gravé.
- Le compte émetteur et le compte bénéficiaire existent et ne sont pas le même compte.
- Le compte de l'expéditeur détient le jeton.
- L'appelant de la fonction est l'expéditeur.
-
transferFrom
- Cette fonction est asynchrone. Cette méthode transfère la propriété du NFT spécifié d'un compte expéditeur vers un compte destinataire. Il incombe à l'appelant de transmettre les paramètres corrects. Cette méthode peut être appelée par n'importe quel utilisateur, pas seulement le propriétaire du jeton. Cette méthode inclut les validations suivantes :
- Le jeton existe et n'est pas gravé.
- Le compte émetteur et le compte bénéficiaire existent et ne sont pas le même compte.
- Le compte de l'expéditeur détient le jeton.
Gestion du comportement des jetons - Comportement gravable
-
burn
- Cette méthode désactive ou brûle le NFT spécifié du compte de l'appelant. L'appelant de cette méthode doit avoir un compte. Un jeton ne peut être gravé que si le fichier de spécification du jeton inclut le comportement
burnable
. Si aucune propriétéburner_role_name
n'est indiquée dans la sectionroles
du fichier de spécification, le propriétaire du jeton peut graver le jeton. Si une propriétéburner_role_name
est spécifiée dans la sectionroles
, l'utilisateur auquel le rôle de brûleur est affecté, qui est également le créateur (minter) du jeton, peut graver le jeton. Cette fonction est asynchrone.