Projet de jeton TypeScript échafaudé pour ERC-1155
Blockchain App Builder prend l'entrée du fichier de spécification de jeton et génère un projet de code de chaîne entièrement fonctionnel.
Le projet génère automatiquement des classes et des fonctions de cycle de vie de jeton, y compris des méthodes CRUD et non CRUD. La validation des arguments, la conversion/déconversion des paramètres et la capacité de persistance transparente sont toutes prises en charge automatiquement.
Pour plus d'informations sur le projet échafaudé et sur les méthodes qui ne sont pas directement liées aux jetons, voir Projet de code de chaîne TypeScript échafaudé.
Modèle
Chaque classe de modèle segmentée en unités étend la classe OchainModel
. Transparent Persistence Capability, ou ORM simplifié, est capturé dans la classe OchainModel
. Le modèle suivant montre un jeton non fongible entier.
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("erc1155+")
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;
@Mandatory()
@Validate(yup.string().required().max(2000))
public tokenUri: string;
@Embedded(ArtCollectionMetadata)
public tokenMetadata: ArtCollectionMetadata;
@Validate(yup.number())
public price: number;
@Validate(yup.boolean())
public on_sale_flag: boolean;
}
@Id("tokenId")
export class Loyalty extends OchainModel<Loyalty> {
public readonly assetType = "otoken";
@Mandatory()
@Validate(
yup
.string()
.required()
.matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/)
.max(16)
)
public tokenId: string;
@ReadOnly("loyalty")
public tokenName: string;
@Validate(yup.string().trim().max(256))
public tokenDesc: string;
@ReadOnly("erc1155+")
public tokenStandard: string;
@ReadOnly("fungible")
public tokenType: string;
@ReadOnly("fractional")
public tokenUnit: string;
@ReadOnly(["divisible","mintable","transferable","burnable","roles"])
public behaviors: string[];
@ReadOnly({ minter_role_name: "minter" })
public roles: object;
@ReadOnly({ max_mint_quantity: 10000 })
public mintable: object;
@ReadOnly({ decimal: 2 })
public divisible: object;
@Validate(yup.string())
public currency_name: string;
@Validate(yup.number())
public token_to_currency_ratio: number;
}
Le modèle suivant montre un jeton fractionnaire non fongible.export class RealEstatePropertyMetadata extends EmbeddedModel<RealEstatePropertyMetadata> {
@Validate(yup.string())
public propertyType: string;
@Validate(yup.string())
public propertyName: string;
@Validate(yup.string())
public propertyAddress: string;
@Validate(yup.string())
public propertyImage: string;
}
@Id("tokenId")
export class RealEstateProperty extends OchainModel<RealEstateProperty> {
public readonly assetType = "otoken";
@Mandatory()
@Validate(
yup
.string()
.required()
.matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/)
.max(16)
)
public tokenId: string;
@ReadOnly("realestateproperty")
public tokenName: string;
@Validate(yup.string().trim().max(256))
public tokenDesc: string;
@ReadOnly("erc1155+")
public tokenStandard: string;
@ReadOnly("nonfungible")
public tokenType: string;
@ReadOnly("fractional")
public tokenUnit: string;
@ReadOnly(["divisible","mintable","transferable","roles"])
public behaviors: string[];
@ReadOnly({ minter_role_name: "minter" })
public roles: object;
@ReadOnly({ max_mint_quantity: 0 })
public mintable: object;
@Validate(yup.number().positive())
public quantity: number;
@Validate(yup.string())
public createdBy: string;
@Validate(yup.string())
public creationDate: string;
@ReadOnly({ decimal: 0 })
public divisible: object;
@Validate(yup.bool())
public isBurned: boolean;
@Mandatory()
@Validate(yup.string().required().max(2000))
public tokenUri: string;
@Embedded(RealEstatePropertyMetadata)
public tokenMetadata: RealEstatePropertyMetadata;
@Validate(yup.number())
public propertySellingPrice: number;
@Validate(yup.number())
public propertyRentingPrice: number;
}
Controller
La classe du contrôleur principal étend la classe OchainController
. Il n'y a qu'un seul contrôleur principal.
export class DigiCurrCCController extends OchainController{
Vous pouvez créer un nombre illimité de classes, de fonctions ou de fichiers, 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 de la trousse SDK de jeton pour écrire des méthodes personnalisées pour votre application d'affaires.
Méthodes de jeton générées automatiquement
Blockchain App Builder génère automatiquement des méthodes pour prendre en charge les jetons et les cycles de vie des jetons. Vous pouvez utiliser ces méthodes pour initialiser les jetons, gérer les rôles et les comptes et effectuer d'autres tâches de cycle de vie des jetons sans codage supplémentaire. Les méthodes de contrôleur doivent avoir un décorateur @Validator(...params)
pour pouvoir être appelées.
- Gestion du contrôle d'accès
- Gestion de la configuration des jetons
- Gestion des 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
-
isTokenAdmin
- Cette méthode retourne la valeur booléenne
true
si l'appelant de la fonction estToken Admin
, sinon elle retournefalse
. Cette méthode ne peut être appelée que par unToken Admin
du code de chaîne. -
addTokenAdmin
- Cette méthode ajoute un utilisateur en tant qu'
Token Admin
du code de chaîne. Cette méthode ne peut être appelée que par unToken Admin
du code de chaîne. -
removeTokenAdmin
- Cette méthode supprime un utilisateur en tant qu'
Token Admin
du code de chaîne. Cette méthode ne peut être appelée que par unToken Admin
du code de chaîne. Vous ne pouvez pas vous supprimer en tant queToken Admin
. -
getAllTokenAdmins
- Cette méthode retourne la liste de tous les utilisateurs qui sont des
Token Admin
du code de chaîne. Cette méthode ne peut être appelée que par unToken Admin
du code de chaîne.
Méthodes de gestion de la configuration de jeton
-
init
- Cette méthode est appelée lorsque le code de chaîne est instancié. Chaque
Token Admin
est identifié par les informationsuserId
etorgId
dans le paramètreadminList
.userId
est le nom d'utilisateur ou l'ID courriel du responsable de l'instance ou de l'utilisateur connecté à l'instance.orgId
est l'ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation de réseau courante. Le paramètreadminList
est obligatoire lors du premier déploiement du code de chaîne. Si vous mettez à niveau le code de chaîne, transmettez une liste vide ([]
). Si vous êtes l'utilisateur qui a initialement déployé le code de chaîne, vous pouvez également spécifier de nouveaux administrateurs dans le paramètreadminList
lors de la mise à niveau du code de chaîne. Toutes les autres informations du paramètreadminList
sont ignorées lors des mises à niveau. -
create<Token Name>Token
- Cette méthode crée des jetons. Chaque jeton défini a sa propre méthode de création. Pour les jetons fongibles, cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne. Pour les jetons non fongibles, si le rôle d'outil de frappe est défini dans le fichier de spécification, tout utilisateur ayant le rôle d'outil de frappe peut appeler cette méthode pour créer un NFT. Si ce rôle n'est pas défini, n'importe quel utilisateur peut utiliser cette méthode pour créer (mint) des NFT. L'utilisateur qui appelle cette méthode devient le propriétaire du NFT. -
update<Token Name>Token
- Cette méthode met à jour les jetons. Chaque jeton défini a sa propre méthode de mise à jour. Vous ne pouvez pas mettre à jour les métadonnées de jeton ou l'URI de jeton des jetons non fongibles. Pour les jetons fongibles, cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne. Pour les jetons non fongibles, cette méthode ne peut être appelée que par le propriétaire du jeton. -
getTokenHistory
- Cette méthode retourne l'historique pour un ID jeton spécifié. Tout le monde peut appeler cette méthode.
-
getAllTokens
- Cette méthode retourne 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
Token Admin
du code de chaîne. Cette méthode utilise des interrogations riches en SQL Berkeley DB et ne peut être appelée qu'en cas de connexion au réseau Oracle Blockchain Platform distant. -
getTokenById
- Cette méthode retourne un objet de jeton si le jeton est présent dans la base de données d'état. Pour les NFT fractionnaires, la liste des propriétaires est également retournée. Cette méthode ne peut être appelée que par
Token Admin
du code de chaîne ou du responsable du jeton. -
getAllTokensByUser
- Cette méthode retourne toutes les ressources de jeton détenues par un utilisateur spécifié. Cette méthode utilise des interrogations riches en SQL Berkeley DB 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
Token Admin
du code de chaîne ou par le responsable du compte. -
ownerOf
- Cette méthode retourne l'ID compte, l'ID organisation et l'ID utilisateur du responsable de l'ID jeton spécifié. Tout le monde peut appeler cette méthode.
-
URI
- Cette méthode retourne l'URI d'un jeton spécifié. Tout le monde peut appeler cette méthode.
-
name
- Cette méthode retourne le nom de la classe de jeton. Tout le monde peut appeler cette méthode.
-
totalSupply
- Cette méthode retourne le nombre total de jetons frappés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne. -
totalNetSupply
- Cette méthode retourne le nombre total de jetons frappés moins le nombre de jetons brûlés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne. -
getTokensByName
- Cette méthode retourne toutes les ressources de jeton pour un nom de jeton spécifié. Cette méthode utilise des interrogations riches en SQL Berkeley DB 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
Token Admin
du code de chaîne. -
getTokenDecimal
- Cette méthode retourne le nombre de décimales pour un jeton spécifié. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne.
Méthodes de gestion des comptes
-
createAccount
- Cette méthode crée un compte pour un utilisateur spécifié et les comptes de jeton associés pour les jetons fongibles ou non fongibles. Un compte doit être créé pour tout utilisateur qui aura des jetons à tout moment. Le compte d'utilisateur suit le compte NFT et les comptes de jeton fongible qu'un utilisateur détient. Les utilisateurs doivent avoir des comptes dans le réseau pour effectuer des opérations liées au jeton. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne.Un compte d'utilisateur a un ID unique, formé par un hachage SHA-256 du paramètre
orgId
et du paramètreuserId
.Un utilisateur peut avoir plusieurs comptes de jeton fongible avec des ID compte uniques. Les ID compte de jeton fongible sont formés par un hachage SHA-256 du paramètre
orgId
, du paramètreuserId
, de la chaîne constanteft
séparée par le symbole tilde (~
) et d'un numéro de compteur qui indique l'index du compte fongible en cours de création séparé par le symbole tilde (~
).Un utilisateur ne peut avoir qu'un seul compte de jeton non fongible. Les ID compte de jeton non fongible sont uniques et sont formés par un hachage SHA-256 du paramètre
orgId
, du paramètreuserId
et de la chaîne constantenft
, séparés par le symbole tilde (~
). Tous les jetons non fongibles qu'un utilisateur possède, qu'ils soient entiers ou fractionnés, sont liés à ce compte.Les ID comptes d'utilisateur commencent par
ouaccount~
. Les ID compte de jeton commencent paroaccount~
. -
createUserAccount
- Cette méthode crée un compte pour un utilisateur spécifié. Un compte doit être créé pour tout utilisateur qui aura des jetons à tout moment. Le compte d'utilisateur suit le compte NFT et les comptes de jeton fongible qu'un utilisateur possède. Les utilisateurs doivent avoir des comptes dans le réseau pour effectuer des opérations liées au jeton.
Un ID compte est un hachage SHA-256 du paramètre
orgId
et du paramètreuserId
. Cette méthode ne peut être appelée que par unToken Admin
du code de chaîne. -
createTokenAccount
- Cette méthode crée un compte de jeton fongible ou non à associer à un compte d'utilisateur.
Un utilisateur peut avoir plusieurs comptes de jeton fongible avec des ID compte uniques. Les ID compte de jeton fongible sont formés par un hachage SHA-256 du paramètre
orgId
, du paramètreuserId
, de la chaîne constanteft
séparée par le symbole tilde (~
) et d'un numéro de compteur qui indique l'index du compte fongible en cours de création séparé par le symbole tilde (~
).Un utilisateur ne peut avoir qu'un seul compte de jeton non fongible. Les ID compte de jeton non fongible sont uniques et sont formés par un hachage SHA-256 du paramètre
orgId
, du paramètreuserId
et de la chaîne constantenft
, séparés par le symbole tilde (~
). Tous les jetons non fongibles qu'un utilisateur possède, qu'ils soient entiers ou fractionnés, sont liés à ce compte.Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne. -
associateFungibleTokenAccount
- Cette méthode associe le compte de jeton fongible d'un utilisateur à un jeton fongible particulier.
Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne. -
getAccountHistory
- Cette méthode retourne l'historique pour un compte de jeton spécifié. Il s'agit d'une méthode asynchrone. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne ou par le responsable du compte. -
getAccount
- Cette méthode retourne les détails du compte de jeton pour un utilisateur spécifié. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne ou leAccount Owner
du compte. -
getAllAccounts
- Cette méthode retourne les détails de tous les comptes d'utilisateur. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne. -
getAccountDetailsByUser
- Cette méthode retourne un sommaire de compte pour un utilisateur spécifié et les détails des jetons fongibles et non fongibles associés à l'utilisateur. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne ou leAccount Owner
du compte. -
getUserByAccountId
- Cette méthode retourne les détails de l'utilisateur pour un ID compte spécifié. Cette méthode peut être appelée par n'importe quel utilisateur.
Méthodes de gestion des rôles
-
addRole
- Cette méthode ajoute un rôle à un utilisateur et à un jeton spécifiés. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton. L'utilisateur spécifié doit avoir un compte de jeton associé au jeton fongible ou un compte de jeton non fongible pour les rôles NFT. Le rôle spécifié doit exister dans le fichier de spécification du jeton. -
isInRole
- Cette méthode retourne une valeur booléenne pour indiquer si un utilisateur a un rôle spécifié. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne ou leAccount Owner
du compte. L'utilisateur spécifié doit avoir un compte de jeton associé au jeton fongible ou un compte de jeton non fongible pour les rôles NFT. Le rôle spécifié doit exister dans le fichier de spécification du jeton. -
removeRole
- Cette méthode supprime un rôle d'un utilisateur et d'un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne. L'utilisateur spécifié doit avoir un compte de jeton associé au jeton fongible ou un compte de jeton non fongible pour les rôles NFT. Le rôle spécifié doit exister dans le fichier de spécification du jeton. -
getAccountsByRole
- Cette méthode retourne une liste de tous les ID compte pour un rôle et un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne. -
getUsersByRole
- Cette méthode retourne une liste de tous les utilisateurs pour un rôle et un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne.
Méthodes de gestion de l'historique des transactions
-
getAccountTransactionHistory
- Cette méthode retourne l'historique des transactions de compte. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne ou par le responsable du compte. Pour les jetons non fongibles, 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 retourne les détails de transaction pour un ID transaction spécifié. Tout le monde peut appeler cette méthode.
-
deleteHistoricalTransactions
- Cette méthode supprime les transactions avant un horodatage spécifié de la base de données d'état. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne.
Méthodes de gestion du comportement des jetons - Comportement mentable
-
mintBatch
- Cette méthode crée (exploite) plusieurs jetons dans une opération par lots. Cette méthode crée uniquement des jetons fongibles ou des jetons fractionnaires non fongibles.
Pour les jetons fongibles, si le rôle minter est défini dans le fichier de spécification, tout utilisateur ayant le rôle minter peut appeler cette méthode. Si ce n'est pas le cas, n'importe quel utilisateur peut utiliser cette méthode pour extraire des jetons. Vous ne pouvez pas dépasser la propriété
max_mint_quantity
du jeton si cette propriété a été spécifiée lors de la création ou de la mise à jour du jeton.Pour les jetons non fongibles, si le rôle minter est défini dans le fichier de spécification, tout utilisateur ayant le rôle minter peut appeler cette méthode. Si ce n'est pas le cas, n'importe quel utilisateur peut utiliser cette méthode pour extraire des jetons. En outre, l'appelant doit également être le créateur du jeton. Il n'y a pas de limite supérieure à la quantité de jetons fractionnaires non fongibles qui peuvent être frappés.
Vous ne pouvez pas utiliser cette méthode pour extraire un jeton non fongible entier.
Méthodes de gestion du comportement des jetons - Comportement transférable
-
batchTransferFrom
- Cette méthode termine une opération par lots qui transfère les jetons spécifiés dans une liste d'ID jetons d'un utilisateur à un autre utilisateur.
Pour les NFT, comme la méthode transfère la propriété de la NFT, l'expéditeur de la NFT doit être propriétaire du jeton.
Pour les TNL fractionnaires, si un utilisateur (y compris le créateur du jeton) transfère toutes les actions qu'il possède, alors il perd la propriété du jeton. Si un partage d'un jeton est transféré à un utilisateur, cet utilisateur devient automatiquement l'un des propriétaires de la fraction NFT.
Cette méthode ne permet pas de valider que l'appelant de la méthode est l'expéditeur spécifié. Cette méthode peut être appelée par n'importe quel utilisateur.
-
safeBatchTransferFrom
- Cette méthode termine une opération par lots qui transfère les jetons spécifiés dans une liste d'ID jetons d'un utilisateur à un autre utilisateur.
Pour les NFT, comme la méthode transfère la propriété de la NFT, l'expéditeur de la NFT doit être propriétaire du jeton.
Pour les TNL fractionnaires, si un utilisateur (y compris le créateur du jeton) transfère toutes les actions qu'il possède, alors il perd la propriété du jeton. Si un partage d'un jeton est transféré à un utilisateur, cet utilisateur devient automatiquement l'un des propriétaires de la fraction NFT.
L'appelant de la méthode doit être l'expéditeur spécifié. Cette méthode peut être appelée par n'importe quel utilisateur.
-
balanceOfBatch
- Cette méthode termine une opération par lots qui obtient le solde des comptes de jeton. Les détails du compte sont indiqués dans trois listes distinctes d'ID organisation, d'ID utilisateur et d'ID jeton. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne ou par des responsables de compte. Les responsables de comptes ne peuvent voir les détails de solde que pour les comptes dont ils sont responsables. -
exchangeToken
- Cette méthode échange des jetons entre des comptes spécifiés. Cette méthode ne prend en charge que l'échange entre un NFT et un jeton fongible ou un jeton fongible et un NFT. Le NFT peut être entier ou fractionnaire. Cette méthode ne peut être appelée que par le propriétaire du compte.
Méthodes pour Token Behavior Management - Burnable Behavior
-
burnBatch
- Cette méthode désactive ou brûle les jetons fongibles et non fongibles spécifiés. Tout utilisateur doté du rôle de brûleur peut appeler cette méthode.
-
burnNFT
- Cette méthode désactive ou brûle le jeton non fongible spécifié et retourne un objet de jeton et un historique de jeton. Tout utilisateur doté du rôle de brûleur peut appeler cette méthode.
Méthodes SDK
- Gestion du contrôle d'accès
- Gestion de la configuration des jetons
- Gestion des 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
-
isUserTokenAdmin
- Cette méthode retourne la valeur booléenne
true
si l'utilisateur spécifié estToken Admin
etfalse
sinon. La méthode ne peut être appelée que parToken Admin
du code de chaîne de jeton. -
addAdmin
- Cette méthode ajoute un utilisateur en tant qu'
Token Admin
du code de chaîne de jeton. La méthode ne peut être appelée que parToken Admin
du code de chaîne de jeton. -
removeAdmin
- Cette méthode supprime un utilisateur en tant qu'
Token Admin
du code de chaîne de jeton. La méthode ne peut être appelée que parToken Admin
du code de chaîne de jeton. Vous ne pouvez pas vous supprimer en tant queToken Admin
. -
getAllAdmins
- Cette méthode retourne une 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. Il s'agit d'une fonction asynchrone. Certaines méthodes de jeton ne peuvent être exécutées que par
Token Admin
ouAccountOwner
du jeton ou parMultipleAccountOwner
pour les utilisateurs ayant plusieurs comptes. Le mappage du contrôle d'accès est décrit dans le fichier../lib/constant.ts
. 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.ADMIN: { isUserTokenAdmin: ["Admin"], 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"], getTokenHistory: ["Admin"], }, ROLE: { getAccountsByRole: ["Admin"], getUsersByRole: ["Admin"], }, TRANSACTION: { deleteTransactions: ["Admin"], }, ACCOUNT: { createAccount: ["Admin"], associateToken: ["Admin"], getAllAccounts: ["Admin"], getAccountsByUser: ["Admin", "MultipleAccountOwner"], getAccount: ["Admin", "AccountOwner"], history: ["Admin", "AccountOwner"], getAccountTransactionHistory: ["Admin", "AccountOwner"], getAccountTransactionHistoryWithFilters: ["Admin", "AccountOwner"], getSubTransactionsById: ["Admin", TRANSACTION_INVOKER], getSubTransactionsByIdWithFilters: ["Admin", TRANSACTION_INVOKER], getAccountBalance: ["Admin", "AccountOwner"], getAccountOnHoldBalance: ["Admin", "AccountOwner"], getOnHoldIds: ["Admin", "AccountOwner"], getConversionHistory: ["Admin", "AccountOwner"], }, ACCOUNT_STATUS: { get: ["Admin", "AccountOwner"], history: ["Admin", "AccountOwner"], activateAccount: ["Admin"], suspendAccount: ["Admin"], deleteAccount: ["Admin"], }, TOKEN_CONVERSION: { initializeExchangePoolUser: ["Admin"], addConversionRate: ["Admin"], updateConversionRate: ["Admin"], getConversionRate: ["Admin", "AnyAccountOwner"], getConversionRateHistory: ["Admin", "AnyAccountOwner"], tokenConversion: ["Admin", "AnyAccountOwner"], getExchangePoolUser: ["Admin"], }, 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"], getAccountByUser: ["Admin", "MultipleAccountOwner"], history: ["Admin", "AccountOwner"], getAccountTransactionHistory: ["Admin", "AccountOwner"], getAccountTransactionHistoryWithFilters: ["Admin", "AccountOwner"], balanceOf: ["Admin", "MultipleAccountOwner"], }, ERC1155ADMIN: { isUserTokenAdmin: ["Admin"], addAdmin: ["Admin"], removeAdmin: ["Admin"], getAllAdmins: ["Admin"], }, ERC1155TOKEN: { getAllTokens: ["Admin"], get: ["Admin", TOKEN_OWNER], getAllTokensByUser: ["Admin", "AccountOwner"], totalSupply: ["Admin"], totalNetSupply: ["Admin"], getTokensByName: ["Admin"], getDecimals: ["Admin"], addRoleMember: ["Admin"], removeRoleMember: ["Admin"], isInRole: ["Admin", "AccountOwner"], save: ["Admin"], update: ["Admin"], }, ERC1155ACCOUNT: { createAccount: ["Admin"], createUserAccount: ["Admin"], createTokenAccount: ["Admin"], associateFungibleTokenToAccount: ["Admin", "AccountOwner"], getAccountsByUser: ["Admin", "AccountOwner"], getAccount: ["Admin", "AccountOwner"], history: ["Admin", "AccountOwner"], getAllAccounts: ["Admin"], balanceOfBatch: ["Admin"], getAccountTransactionHistory: ["Admin", "AccountOwner"], getAccountTransactionHistoryWithFilters: ["Admin", "AccountOwner"], exchangeToken: ["AccountOwner"], getAccountDetailsByUser: ["Admin", "AccountOwner"], }, ERC1155ROLE: { getAccountsByRole: ["Admin"], getUsersByRole: ["Admin"], },
Méthodes de gestion de la configuration de jeton
-
save
- Cette méthode crée des jetons. Chaque jeton défini a sa propre méthode de création. Pour les jetons non fongibles, si le rôle d'outil de frappe est défini dans le fichier de spécification, tout utilisateur ayant le rôle d'outil de frappe peut appeler cette méthode pour créer un NFT. Sinon, n'importe quel utilisateur peut utiliser cette méthode pour créer (mint) des NFT. L'utilisateur qui appelle cette méthode devient le propriétaire du NFT (entier ou fractionnaire).
-
update
- Cette méthode met à jour les jetons. Vous ne pouvez pas mettre à jour les métadonnées de jeton ou l'URI de jeton des jetons non fongibles.
-
history (Token)
- Cette méthode retourne l'historique pour un ID jeton spécifié.
-
getAllTokens
- Cette méthode retourne 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
Token Admin
du code de chaîne. Cette méthode utilise des interrogations riches en SQL Berkeley DB et ne peut être appelée qu'en cas de connexion au réseau Oracle Blockchain Platform distant. -
get (Token)
- Cette méthode retourne 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
Token Admin
du code de chaîne ou du responsable du jeton. -
getAllTokensByUser
- Cette méthode retourne toutes les ressources de jeton détenues par un utilisateur spécifié. Cette méthode utilise des interrogations riches en SQL Berkeley DB et ne peut être appelée qu'en cas de connexion au réseau Oracle Blockchain Platform distant.
-
ownerOf
- Cette méthode retourne l'ID compte, l'ID organisation et l'ID utilisateur du responsable de l'ID jeton spécifié.
-
tokenURI
- Cette méthode retourne l'URI d'un jeton spécifié. Tout le monde peut appeler cette méthode.
-
name
- Cette méthode retourne le nom de la classe de jeton. Tout le monde peut appeler cette méthode.
-
totalSupply
- Cette méthode retourne le nombre total de jetons frappés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton.
-
totalNetSupply
- Cette méthode retourne le nombre total de jetons frappés moins le nombre de jetons brûlés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton.
-
getTokensByName
- Cette méthode retourne toutes les ressources de jeton pour un nom de jeton spécifié. Cette méthode utilise des interrogations riches en SQL Berkeley DB et ne peut être appelée qu'en cas de connexion au réseau Oracle Blockchain Platform distant.
-
getDecimals
- Cette méthode retourne le nombre de décimales pour un jeton spécifié. Si le comportement divisible n'est pas spécifié pour le jeton, la valeur par défaut de zéro décimale est retournée.
Méthodes de gestion des comptes
-
createAccount
- Cette méthode crée un compte pour un utilisateur spécifié et les comptes de jeton associés pour les jetons fongibles ou non fongibles. Un compte doit être créé pour tout utilisateur qui aura des jetons à tout moment. Le compte d'utilisateur suit le compte NFT et les comptes de jeton fongible qu'un utilisateur possède. Les utilisateurs doivent avoir des comptes dans le réseau pour effectuer des opérations liées au jeton. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne.Un compte d'utilisateur a un ID unique, formé par un hachage SHA-256 du paramètre
orgId
et du paramètreuserId
.Un utilisateur peut avoir plusieurs comptes de jeton fongible avec des ID compte uniques. Les ID compte de jeton fongible sont formés par un hachage SHA-256 du paramètre
orgId
, du paramètreuserId
, de la chaîne constanteft
séparée par le symbole tilde (~
) et d'un numéro de compteur qui indique l'index du compte fongible en cours de création séparé par le symbole tilde (~
).Un utilisateur ne peut avoir qu'un seul compte de jeton non fongible. Les ID compte de jeton non fongible sont uniques et sont formés par un hachage SHA-256 du paramètre
orgId
, du paramètreuserId
et de la chaîne constantenft
, séparés par le symbole tilde (~
). Tous les jetons non fongibles qu'un utilisateur possède, qu'ils soient entiers ou fractionnés, sont liés à ce compte jeton unique non fongible. -
createUserAccount
- Cette méthode crée un compte pour un utilisateur spécifié. Un compte doit être créé pour tout utilisateur qui aura des jetons à tout moment. Le compte d'utilisateur suit le compte NFT et les comptes de jeton fongible qu'un utilisateur possède. Les utilisateurs doivent avoir des comptes dans le réseau pour effectuer des opérations liées au jeton.
Un ID compte est un hachage SHA-256 du paramètre
orgId
et du paramètreuserId
. Cette méthode ne peut être appelée que par unToken Admin
du code de chaîne. -
createTokenAccount
- Cette méthode crée un compte de jeton fongible ou non à associer à un compte d'utilisateur.
Un utilisateur peut avoir plusieurs comptes de jeton fongible avec des ID compte uniques. Les ID compte de jeton fongible sont formés par un hachage SHA-256 du paramètre
orgId
, du paramètreuserId
, de la chaîne constanteft
séparée par le symbole tilde (~
) et d'un numéro de compteur qui indique l'index du compte fongible en cours de création séparé par le symbole tilde (~
).Un utilisateur ne peut avoir qu'un seul compte de jeton non fongible. Les ID compte de jeton non fongible sont uniques et sont formés par un hachage SHA-256 du paramètre
orgId
, du paramètreuserId
et de la chaîne constantenft
, séparés par le symbole tilde (~
). Tous les jetons non fongibles qu'un utilisateur possède, qu'ils soient entiers ou fractionnés, sont liés à ce compte jeton unique non fongible.Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne. -
associateTokenToToken
- Cette méthode associe le compte de jeton fongible d'un utilisateur à un jeton fongible particulier.
-
getAccountHistory
- Cette méthode retourne l'historique pour un compte de jeton spécifié.
-
getAccountWithStatus
- Cette méthode retourne les détails du compte de jeton, notamment le statut du compte, pour un utilisateur spécifié. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne ou leAccount Owner
du compte. -
getAccount
- Cette méthode retourne les détails du compte de jeton pour un utilisateur spécifié. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne ou leAccount Owner
du compte. -
getAllAccounts
- Cette méthode retourne les détails de tous les comptes d'utilisateur.
-
getAccountDetailsByUser
- Cette méthode retourne un sommaire de compte pour un utilisateur spécifié et les détails des jetons fongibles et non fongibles associés à l'utilisateur.
-
getUserByAccountId
- Cette méthode retourne les détails de l'utilisateur pour un ID compte spécifié.
Méthodes de gestion des rôles
-
AddRoleMember
- Cette méthode ajoute un rôle à un utilisateur et à un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton.
-
isInRole
- Cette méthode retourne une valeur booléenne pour indiquer si un utilisateur a un rôle spécifié. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton.
-
removeRoleMember
- Cette méthode supprime un rôle d'un utilisateur et d'un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton.
-
getAccountsByRole
- Cette méthode retourne une liste de tous les ID compte pour un rôle et un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton.
-
getUsersByRole
- Cette méthode retourne une liste de tous les utilisateurs pour un rôle et un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton.
Méthodes de gestion de l'historique des transactions
-
getAccountTransactionHistory
- Cette méthode retourne l'historique des transactions de compte. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne ou par le responsable du compte. Pour les jetons non fongibles, 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 retourne les détails de transaction pour un ID transaction spécifié.
-
deleteTransactions
- Cette méthode supprime les transactions avant un horodatage spécifié de la base de données d'état.
Méthodes de gestion du comportement des jetons - Comportement mentable
-
mintBatch
- Cette méthode crée (exploite) plusieurs jetons dans une opération par lots. Cette méthode crée uniquement des jetons fongibles ou des jetons fractionnaires non fongibles.
Pour les jetons fongibles, si le rôle minter est défini dans le fichier de spécification, tout utilisateur ayant le rôle minter peut appeler cette méthode. Si ce n'est pas le cas, n'importe quel utilisateur peut utiliser cette méthode pour extraire des jetons. Vous ne pouvez pas dépasser la propriété
max_mint_quantity
du jeton si cette propriété a été spécifiée lors de la création ou de la mise à jour du jeton.Pour les jetons non fongibles, si le rôle minter est défini dans le fichier de spécification, tout utilisateur ayant le rôle minter peut appeler cette méthode. Si ce n'est pas le cas, n'importe quel utilisateur peut utiliser cette méthode pour extraire des jetons. En outre, l'appelant doit également être le créateur du jeton. Il n'y a pas de limite supérieure à la quantité de jetons fractionnaires non fongibles qui peuvent être frappés.
Vous ne pouvez pas utiliser cette méthode pour extraire un jeton non fongible entier.
Méthodes de gestion du comportement des jetons - Comportement transférable
-
batchTransferFrom
- Cette méthode termine une opération par lots qui transfère les jetons spécifiés dans une liste d'ID jetons d'un utilisateur à un autre utilisateur.
Pour les NFT, comme la méthode transfère la propriété de la NFT, l'expéditeur de la NFT doit être propriétaire du jeton.
Pour les TNL fractionnaires, si un utilisateur (y compris le créateur du jeton) transfère toutes les actions qu'il possède, alors il perd la propriété du jeton. Si un partage d'un jeton est transféré à un utilisateur, cet utilisateur devient automatiquement l'un des propriétaires de la fraction NFT.
Cette méthode ne permet pas de valider que l'appelant de la méthode est l'expéditeur spécifié.
-
safeBatchtransferFrom
- Cette méthode termine une opération par lots qui transfère les jetons spécifiés dans une liste d'ID jetons d'un utilisateur à un autre utilisateur.
Pour les NFT, comme la méthode transfère la propriété de la NFT, l'expéditeur de la NFT doit être propriétaire du jeton.
Pour les TNL fractionnaires, si un utilisateur (y compris le créateur du jeton) transfère toutes les actions qu'il possède, alors il perd la propriété du jeton. Si un partage d'un jeton est transféré à un utilisateur, cet utilisateur devient automatiquement l'un des propriétaires de la fraction NFT.
L'appelant de la méthode doit être l'expéditeur spécifié.
-
balanceOfBatch
- Cette méthode termine une opération par lots qui obtient le solde des comptes de jeton. Les détails du compte sont indiqués dans trois listes distinctes d'ID organisation, d'ID utilisateur et d'ID jeton. Cette méthode ne peut être appelée que par un
Token Admin
du code de chaîne ou par des responsables de compte. Les responsables de comptes ne peuvent voir les détails de solde que pour les comptes dont ils sont responsables. -
exchangeToken
- Cette méthode échange des jetons entre des comptes spécifiés. Cette méthode ne prend en charge que l'échange entre un NFT (entier ou fractionnaire) et un jeton fongible ou un jeton fongible et un NFT (entier ou fractionnaire). Cette méthode ne peut être appelée que par le propriétaire du compte.
Méthodes pour Token Behavior Management - Burnable Behavior