Projet de jetons TypeScript échafaudés pour ERC-1155
Blockchain App Builder extrait l'entrée de votre fichier de spécification de jeton et génère un projet de code chaîne échafaudé entièrement fonctionnel.
Le projet génère automatiquement des classes et des fonctions de cycle de vie de jeton, y compris les méthodes CRUD et non-CRUD. 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 échafaudé et les méthodes qui ne sont pas directement liées aux jetons, reportez-vous à 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
. 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 présente un jeton non fongible fractionnaire.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;
}
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 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 des jetons, gérer des rôles et des comptes et effectuer d'autres tâches de cycle de vie de jeton 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
-
isTokenAdmin
- Cette méthode renvoie la valeur booléenne
true
si l'appelant de la fonction est unToken Admin
, sinon elle renvoiefalse
. Cette méthode ne peut être appelée que par un élémentToken Admin
du code chaîne. -
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. Vous ne pouvez pas vous enlever vous-même en tant queToken Admin
. -
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 un é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 ([]
). Si vous êtes l'utilisateur qui a initialement déployé le code chaîne, vous pouvez également indiquer de nouveaux administrateurs dans le paramètreadminList
lorsque vous mettez à niveau le code 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 possède sa propre méthode de création. Pour les jetons fongibles, cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne. Pour les jetons non fongibles, si le rôle minter est défini dans le fichier de spécification, tout utilisateur doté du rôle minter peut appeler cette méthode pour créer un NFT. Si le rôle de mineur n'est pas défini, tout utilisateur peut utiliser cette méthode pour créer des NFT (mint). L'utilisateur qui appelle cette méthode devient propriétaire de la NFT. -
update<Token Name>Token
- Cette méthode met à jour les jetons. Chaque jeton défini possède 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 élément
Token Admin
du code 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 renvoie l'historique d'un ID de jeton spécifié. Tout le monde peut appeler cette méthode.
-
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 distant Oracle Blockchain Platform. -
getTokenById
- Cette méthode renvoie 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 renvoyée. 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. -
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 distant Oracle Blockchain Platform. 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. -
ownerOf
- Cette méthode renvoie l'ID de compte, l'ID d'organisation et l'ID utilisateur du propriétaire de l'ID de jeton spécifié. Tout le monde peut appeler cette méthode.
-
URI
- Cette méthode renvoie l'URI d'un 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.
-
totalSupply
- Cette méthode renvoie le nombre total de jetons extraits. Les jetons fongibles sont spécifiés par l'ID de jeton. Les jetons non fongibles sont indiqués par le nom du jeton. 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. Les jetons fongibles sont spécifiés par l'ID de jeton. Les jetons non fongibles sont indiqués par le nom du jeton. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne. -
getTokensByName
- Cette méthode renvoie toutes les ressources de jeton pour un nom de jeton 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 distant Oracle Blockchain Platform. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne. -
getTokenDecimal
- Cette méthode renvoie le nombre de décimales pour un jeton spécifié. 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 un utilisateur spécifié et les comptes de jetons 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 utilisateur suit le compte NFT et les comptes de jetons fongibles qu'un utilisateur détient. Les utilisateurs doivent avoir des comptes sur le réseau pour effectuer des opérations liées aux jetons. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne.Un compte utilisateur a un ID unique, qui est formé par un hachage SHA-256 du paramètre
orgId
et du paramètreuserId
.Un utilisateur peut avoir plusieurs comptes de jetons fongibles avec des ID de compte uniques. Les ID de compte de jetons fongibles sont formés d'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 nombre de compteurs qui signifie l'index du compte fongible créé séparé par le symbole tilde (~
).Un utilisateur ne peut avoir qu'un seul compte de jeton non fongible. Les ID de compte de jetons non fongibles 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 fractionnaires, sont liés à ce compte.Les ID de compte utilisateur commencent par
ouaccount~
. Les ID de compte de jeton commencent paroaccount~
. -
createUserAccount
- Cette méthode crée un compte pour l'utilisateur spécifié. Un compte doit être créé pour tout utilisateur qui aura des jetons à tout moment. Le compte utilisateur suit le compte NFT et les comptes de jetons fongibles dont dispose un utilisateur. Les utilisateurs doivent avoir des comptes sur le réseau pour effectuer des opérations liées aux jetons.
Un ID de compte est un hachage SHA-256 du paramètre
orgId
et du paramètreuserId
. Cette méthode ne peut être appelée que par un élémentToken Admin
du code chaîne. -
createTokenAccount
- Cette méthode crée un compte de jeton fongible ou non fongible à associer à un compte utilisateur.
Un utilisateur peut avoir plusieurs comptes de jetons fongibles avec des ID de compte uniques. Les ID de compte de jetons fongibles sont formés d'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 nombre de compteurs qui signifie l'index du compte fongible créé séparé par le symbole tilde (~
).Un utilisateur ne peut avoir qu'un seul compte de jeton non fongible. Les ID de compte de jetons non fongibles 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 fractionnaires, sont liés à ce compte.Cette méthode ne peut être appelée que par un élément
Token Admin
du code 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 élément
Token Admin
du code chaîne. -
getAccountHistory
- Cette méthode renvoie l'historique d'un compte de jetons 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. -
getAccount
- Cette méthode renvoie les détails du compte de jeton pour 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. -
getAllAccounts
- Cette méthode renvoie les détails de tous les comptes utilisateur. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne. -
getAccountDetailsByUser
- Cette méthode renvoie un récapitulatif 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 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 ID de 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 élément
Token Admin
du code chaîne. Les jetons fongibles sont spécifiés par l'ID de jeton. Les jetons non fongibles sont indiqués par le nom du jeton. L'utilisateur spécifié doit disposer d'un compte de jeton associé au jeton fongible ou d'un compte de jeton non fongible pour les rôles NFT. Le rôle spécifié doit exister dans le fichier de spécification pour le jeton. -
isInRole
- Cette méthode renvoie 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 de jeton. Les jetons non fongibles sont indiqués par le nom du jeton. 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. L'utilisateur spécifié doit disposer d'un compte de jeton associé au jeton fongible ou d'un compte de jeton non fongible pour les rôles NFT. Le rôle spécifié doit exister dans le fichier de spécification pour le 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 de jeton. Les jetons non fongibles sont indiqués par le nom du jeton. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne. L'utilisateur spécifié doit disposer d'un compte de jeton associé au jeton fongible ou d'un compte de jeton non fongible pour les rôles NFT. Le rôle spécifié doit exister dans le fichier de spécification pour le jeton. -
getAccountsByRole
- Cette méthode renvoie la liste de tous les ID de compte pour un rôle et un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID de jeton. Les jetons non fongibles sont indiqués par le nom du jeton. 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 et un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID de jeton. Les jetons non fongibles sont indiqués par le nom du jeton. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne.
Méthodes de gestion de l'historique des transactions
-
getAccountTransactionHistory
- Cette méthode renvoie l'historique des transactions du compte. 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. 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 renvoie les détails de la transaction pour un ID de transaction spécifié. Tout le monde peut appeler cette méthode.
-
deleteHistoricalTransactions
- Cette méthode supprime les transactions antérieures à un horodatage donné de 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.
Méthodes de gestion du comportement des jetons - Comportement Mintable
-
mintBatch
- Cette méthode crée (minte) plusieurs jetons dans une opération de batch. Cette méthode crée uniquement des jetons fongibles ou des jetons non fongibles fractionnaires.
Pour les jetons fongibles, si le rôle minter est défini dans le fichier de spécification, tout utilisateur doté du rôle minter peut appeler cette méthode. Sinon, 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 mineur est défini dans le fichier de spécification, tout utilisateur doté du rôle mineur peut appeler cette méthode. Sinon, 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 non fongibles fractionnaires qui peuvent être extraits.
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 de jeton d'un utilisateur à un autre.
Pour les NFT, étant donné que la méthode transfère la propriété de la NFT, l'expéditeur de la NFT doit posséder le jeton.
Pour les NFT fractionnaires, si un utilisateur (y compris le créateur du jeton) transfère tous les partages qu'il possède, 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 NFT fractionnaire.
Cette méthode ne valide pas le fait 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 de jeton d'un utilisateur à un autre.
Pour les NFT, étant donné que la méthode transfère la propriété de la NFT, l'expéditeur de la NFT doit posséder le jeton.
Pour les NFT fractionnaires, si un utilisateur (y compris le créateur du jeton) transfère tous les partages qu'il possède, 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 NFT fractionnaire.
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 de batch qui obtient le solde des comptes de jetons. Les détails du compte sont indiqués dans trois listes distinctes d'ID d'organisation, d'ID utilisateur et d'ID de jeton. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne ou par des propriétaires de compte. Les propriétaires de compte ne peuvent voir les détails du solde que pour les comptes qu'ils possèdent. -
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 jeton NFT et un jeton fongible ou un jeton fongible et un jeton 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 de gestion du comportement des jetons - Comportement gravable
-
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 renvoie 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 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
-
isUserTokenAdmin
- Cette méthode renvoie la valeur booléenne
true
si l'utilisateur indiqué estToken Admin
, etfalse
dans le cas contraire. La méthode ne peut être appelée que par un élémentToken Admin
du code chaîne de jeton. -
addAdmin
- Cette méthode ajoute un utilisateur en tant que
Token Admin
du code chaîne de jeton. La méthode ne peut être appelée que par un élémentToken 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. La méthode ne peut être appelée que par un élémentToken Admin
du code chaîne de jeton. Vous ne pouvez pas vous enlever vous-même en tant queToken Admin
. -
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. Certaines méthodes de jeton peuvent être exécutées uniquement par l'élément
Token Admin
ouAccountOwner
du jeton ou par l'élémentMultipleAccountOwner
pour les utilisateurs ayant plusieurs comptes. Le mapping de 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 des jetons
-
save
- Cette méthode crée des jetons. Chaque jeton défini possède sa propre méthode de création. Pour les jetons non fongibles, si le rôle mineur est défini dans le fichier de spécification, tout utilisateur doté du rôle mineur peut appeler cette méthode pour créer un NFT. Si ce n'est pas le cas, tout utilisateur peut utiliser cette méthode pour créer des NFT. L'utilisateur qui appelle cette méthode devient 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 renvoie l'historique d'un ID de jeton spécifié.
-
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 distant Oracle Blockchain Platform. -
get (Token)
- 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. -
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 distant Oracle Blockchain Platform.
-
ownerOf
- Cette méthode renvoie l'ID de compte, l'ID d'organisation et l'ID utilisateur du propriétaire de l'ID de jeton spécifié.
-
tokenURI
- Cette méthode renvoie l'URI d'un 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.
-
totalSupply
- Cette méthode renvoie le nombre total de jetons extraits. Les jetons fongibles sont spécifiés par l'ID de jeton. Les jetons non fongibles sont indiqués par le nom du jeton.
-
totalNetSupply
- Cette méthode renvoie le nombre total de jetons extraits moins le nombre de jetons brûlés. Les jetons fongibles sont spécifiés par l'ID de jeton. Les jetons non fongibles sont indiqués par le nom du jeton.
-
getTokensByName
- Cette méthode renvoie toutes les ressources de jeton pour un nom de jeton 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 distant Oracle Blockchain Platform.
-
getDecimals
- Cette méthode renvoie 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 renvoyée.
Méthodes de gestion des comptes
-
createAccount
- Cette méthode crée un compte pour un utilisateur spécifié et les comptes de jetons 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 utilisateur suit le compte NFT et les comptes de jetons fongibles dont dispose un utilisateur. Les utilisateurs doivent avoir des comptes sur le réseau pour effectuer des opérations liées aux jetons. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne.Un compte utilisateur a un ID unique, qui est formé par un hachage SHA-256 du paramètre
orgId
et du paramètreuserId
.Un utilisateur peut avoir plusieurs comptes de jetons fongibles avec des ID de compte uniques. Les ID de compte de jetons fongibles sont formés d'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 nombre de compteurs qui signifie l'index du compte fongible créé séparé par le symbole tilde (~
).Un utilisateur ne peut avoir qu'un seul compte de jeton non fongible. Les ID de compte de jetons non fongibles 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 fractionnaires, sont liés à ce compte de jetons non fongibles unique. -
createUserAccount
- Cette méthode crée un compte pour l'utilisateur spécifié. Un compte doit être créé pour tout utilisateur qui aura des jetons à tout moment. Le compte utilisateur suit le compte NFT et les comptes de jetons fongibles dont dispose un utilisateur. Les utilisateurs doivent avoir des comptes sur le réseau pour effectuer des opérations liées aux jetons.
Un ID de compte est un hachage SHA-256 du paramètre
orgId
et du paramètreuserId
. Cette méthode ne peut être appelée que par un élémentToken Admin
du code chaîne. -
createTokenAccount
- Cette méthode crée un compte de jeton fongible ou non fongible à associer à un compte utilisateur.
Un utilisateur peut avoir plusieurs comptes de jetons fongibles avec des ID de compte uniques. Les ID de compte de jetons fongibles sont formés d'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 nombre de compteurs qui signifie l'index du compte fongible créé séparé par le symbole tilde (~
).Un utilisateur ne peut avoir qu'un seul compte de jeton non fongible. Les ID de compte de jetons non fongibles 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 fractionnaires, sont liés à ce compte de jetons non fongibles unique.Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne. -
associateTokenToToken
- Cette méthode associe le compte de jeton fongible d'un utilisateur à un jeton fongible particulier.
-
getAccountHistory
- Cette méthode renvoie l'historique d'un compte de jetons spécifié.
-
getAccountWithStatus
- Cette méthode renvoie les détails du compte de jeton, y compris le statut du compte, pour 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. -
getAccount
- Cette méthode renvoie les détails du compte de jeton pour 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. -
getAllAccounts
- Cette méthode renvoie les détails de tous les comptes utilisateur.
-
getAccountDetailsByUser
- Cette méthode renvoie un récapitulatif 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 renvoie les détails utilisateur d'un ID de 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 de jeton. Les jetons non fongibles sont indiqués par le nom du jeton.
-
isInRole
- Cette méthode renvoie 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 de jeton. Les jetons non fongibles sont indiqué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 de jeton. Les jetons non fongibles sont indiqués par le nom du jeton.
-
getAccountsByRole
- Cette méthode renvoie la liste de tous les ID de compte pour un rôle et un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID de jeton. Les jetons non fongibles sont indiqués par le nom du jeton.
-
getUsersByRole
- Cette méthode renvoie la 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 de jeton. Les jetons non fongibles sont indiqués par le nom du jeton.
Méthodes de gestion de l'historique des transactions
-
getAccountTransactionHistory
- Cette méthode renvoie l'historique des transactions du compte. 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. 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 renvoie les détails de la transaction pour un ID de transaction spécifié.
-
deleteTransactions
- Cette méthode supprime les transactions antérieures à un horodatage donné de la base de données d'état.
Méthodes de gestion du comportement des jetons - Comportement Mintable
-
mintBatch
- Cette méthode crée (minte) plusieurs jetons dans une opération de batch. Cette méthode crée uniquement des jetons fongibles ou des jetons non fongibles fractionnaires.
Pour les jetons fongibles, si le rôle minter est défini dans le fichier de spécification, tout utilisateur doté du rôle minter peut appeler cette méthode. Sinon, 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 mineur est défini dans le fichier de spécification, tout utilisateur doté du rôle mineur peut appeler cette méthode. Sinon, 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 non fongibles fractionnaires qui peuvent être extraits.
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 de jeton d'un utilisateur à un autre.
Pour les NFT, étant donné que la méthode transfère la propriété de la NFT, l'expéditeur de la NFT doit posséder le jeton.
Pour les NFT fractionnaires, si un utilisateur (y compris le créateur du jeton) transfère tous les partages qu'il possède, 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 NFT fractionnaire.
Cette méthode ne valide pas le fait 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 de jeton d'un utilisateur à un autre.
Pour les NFT, étant donné que la méthode transfère la propriété de la NFT, l'expéditeur de la NFT doit posséder le jeton.
Pour les NFT fractionnaires, si un utilisateur (y compris le créateur du jeton) transfère tous les partages qu'il possède, 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 NFT fractionnaire.
L'appelant de la méthode doit être l'expéditeur spécifié.
-
balanceOfBatch
- Cette méthode termine une opération de batch qui obtient le solde des comptes de jetons. Les détails du compte sont indiqués dans trois listes distinctes d'ID d'organisation, d'ID utilisateur et d'ID de jeton. Cette méthode ne peut être appelée que par un élément
Token Admin
du code chaîne ou par des propriétaires de compte. Les propriétaires de compte ne peuvent voir les détails du solde que pour les comptes qu'ils possèdent. -
exchangeToken
- Cette méthode échange des jetons entre des comptes spécifiés. Ce procédé 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 de gestion du comportement des jetons - Comportement gravable