Projet de jeton TypeScript échafaudé pour ERC-1155
Blockchain App Builder prend 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 des méthodes CRUD et non-CRUD. La validation des arguments, la sérialisation/désérialisation et la fonctionnalité 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 montre 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'y a qu'un seul contrôleur principal.
export class DigiCurrCCController extends OchainController{
Vous pouvez créer n'importe quel nombre de classes, de fonctions ou de fichiers, mais seules les méthodes définies dans la classe de contrôleur principale sont invocables. 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 des jetons sans codage supplémentaire. Les méthodes de contrôleur doivent avoir un décorateur @Validator(...params)
pour être invocables.
- Gestion des contrôles d'accès
- Gestion de configuration de jeton
- Gestion de comptes
- Gestion des rôles
- Gestion de l'historique des transactions
- Gestion du comportement de jeton
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 estToken Admin
, sinon elle renvoiefalse
. Cette méthode ne peut être appelée que par unToken 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 unToken Admin
du code chaîne. -
removeTokenAdmin
- Cette méthode supprime un utilisateur en tant que
Token Admin
du code chaîne. Cette méthode ne peut être appelée que par unToken Admin
du code chaîne. Vous ne pouvez pas vous enlever 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 unToken Admin
du code chaîne.
Méthodes de gestion de la configuration des jetons
-
init
- Cette méthode est appelée lors de l'instanciation du code chaîne. Chaque
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 connecté à l'instance.orgId
est l'ID de fournisseur de services d'adhésion de l'utilisateur dans l'organisation réseau en cours. Le paramètreadminList
est obligatoire lors du premier déploiement du 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
lors de la mise à niveau du code chaîne. Toute autre information du paramètreadminList
est ignorée 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
Token Admin
du code chaîne. Pour les jetons non fongibles, si le rôle de minter est défini dans le fichier de spécification, tout utilisateur doté du rôle de minter peut appeler cette méthode pour créer un NFT. Si le rôle minter n'est pas défini, tout utilisateur peut utiliser cette méthode pour créer 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 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 de jetons non fongibles. Pour les jetons fongibles, cette méthode ne peut être appelée que par un
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é. N'importe qui 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
Token Admin
du code chaîne. Cette méthode utilise des requêtes Berkeley DB SQL riches et ne peut être appelée que lorsqu'elle est connectée au réseau Oracle Blockchain Platform distant. -
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 peut uniquement être appelée par
Token Admin
du code chaîne ou par le propriétaire du jeton. -
getAllTokensByUser
- Cette méthode renvoie toutes les ressources de jeton appartenant à un utilisateur spécifié. Cette méthode utilise des requêtes Berkeley DB SQL riches et ne peut être appelée que lorsqu'elle est connectée au réseau Oracle Blockchain Platform distant. Cette méthode peut être appelée uniquement 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é. N'importe qui peut appeler cette méthode.
-
URI
- Cette méthode renvoie l'URI d'un jeton spécifié. N'importe qui peut appeler cette méthode.
-
name
- Cette méthode renvoie le nom de la classe de jeton. N'importe qui peut appeler cette méthode.
-
totalSupply
- Cette méthode renvoie le nombre total de jetons frappés. Les jetons fongibles sont spécifiés par l'ID de 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 chaîne. -
totalNetSupply
- Cette méthode renvoie 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 de 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 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 Berkeley DB SQL riches et 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 un
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
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 assure le suivi du compte NFT et des comptes de jetons fongibles qu'un utilisateur détient. Les utilisateurs doivent disposer de comptes sur le réseau pour effectuer les opérations liées aux jetons. Cette méthode ne peut être appelée que par un
Token Admin
du code chaîne.Un compte utilisateur possède 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 fongibles avec des ID de compte uniques. Les ID de compte de jeton fongibles sont formés par un hachage SHA-256 du paramètre
orgId
, le paramètreuserId
, la chaîne constanteft
séparée par le symbole tilde (~
) et un nombre de compteur 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 jeton 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 un utilisateur spécifié. Un compte doit être créé pour tout utilisateur qui aura des jetons à tout moment. Le compte utilisateur assure le suivi du compte NFT et des comptes de jetons fongibles dont dispose un utilisateur. Les utilisateurs doivent disposer de comptes sur le réseau pour effectuer les 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 unToken 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 jeton fongibles avec des ID de compte uniques. Les ID de compte de jeton fongibles sont formés par un hachage SHA-256 du paramètre
orgId
, le paramètreuserId
, la chaîne constanteft
séparée par le symbole tilde (~
) et un nombre de compteur 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 jeton 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
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
Token Admin
du code chaîne. -
getAccountHistory
- Cette méthode renvoie l'historique d'un compte de jeton spécifié. Il s'agit d'une méthode asynchrone. Cette méthode peut être appelée uniquement 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 peut uniquement être appelée par
Token Admin
du code chaîne ou parAccount 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
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 peut uniquement être appelée par
Token Admin
du code chaîne ou parAccount 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 tous les utilisateurs.
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 chaîne. Les jetons fongibles sont spécifiés par l'ID de jeton. Les jetons non fongibles sont spécifié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 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 spécifiés par le nom du jeton. Cette méthode peut uniquement être appelée par
Token Admin
du code chaîne ou parAccount 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 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 de 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 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 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 spécifiés par le nom du jeton. Cette méthode ne peut être appelée que par un
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 spécifiés par le nom du jeton. Cette méthode ne peut être appelée que par un
Token Admin
du code chaîne.
Méthodes de gestion de l'historique des transactions
-
getAccountTransactionHistory
- Cette méthode renvoie l'historique des transactions de compte. Cette méthode peut être appelée uniquement 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 transaction pour un ID de transaction spécifié. N'importe qui peut appeler cette méthode.
-
deleteHistoricalTransactions
- Cette méthode supprime les transactions antérieures à 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 chaîne.
Méthodes de gestion du comportement des jetons - Comportement Mintable
-
mintBatch
- Cette méthode crée (affecte) 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 disposant du rôle minter peut appeler cette méthode. Sinon, n'importe quel utilisateur peut utiliser cette méthode pour frapper 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 disposant du rôle minter peut appeler cette méthode. Sinon, n'importe quel utilisateur peut utiliser cette méthode pour frapper 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 frapper 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, comme la méthode transfère la propriété du NFT, l'expéditeur du 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 une partie d'un jeton est transférée à un utilisateur, cet utilisateur devient automatiquement l'un des propriétaires du NFT fractionnaire.
Cette méthode ne vérifie pas que l'appelant de la méthode est l'expéditeur indiqué. Cette méthode peut être appelée par tous les utilisateurs.
-
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, comme la méthode transfère la propriété du NFT, l'expéditeur du 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 une partie d'un jeton est transférée à un utilisateur, cet utilisateur devient automatiquement l'un des propriétaires du NFT fractionnaire.
L'appelant de la méthode doit être l'expéditeur spécifié. Cette méthode peut être appelée par tous les utilisateurs.
-
balanceOfBatch
- Cette méthode termine une opération de batch qui obtient le solde des comptes de jeton. Les détails du compte sont indiqués dans trois listes distinctes d'ID d'organisation, d'ID d'utilisateur et d'ID de jeton. Cette méthode ne peut être appelée que par un
Token Admin
du code chaîne ou par les propriétaires de compte. Les titulaires de compte ne peuvent voir les détails du solde que pour les comptes dont ils sont propriétaires. -
exchangeToken
- Cette méthode échange des jetons entre des comptes spécifiés. Cette méthode prend uniquement en charge 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 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 configuration de jeton
- Gestion de comptes
- Gestion des rôles
- Gestion de l'historique des transactions
- Gestion du comportement de jeton
Méthodes de gestion du contrôle d'accès
-
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 peuvent être exécutées uniquement par
Token Admin
ouAccountOwner
du jeton ou parMultipleAccountOwner
pour les utilisateurs ayant plusieurs comptes. Le mappage 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 et méthodes personnalisées de contrôleur 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"], },
-
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 unToken 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 unToken Admin
du code chaîne de jeton. -
removeAdmin
- Cette méthode enlève un utilisateur en tant que
Token Admin
du code chaîne de jeton. La méthode ne peut être appelée que par unToken Admin
du code chaîne de jeton. Vous ne pouvez pas vous enlever en tant queToken Admin
. -
getAllAdmins
- Cette méthode renvoie la liste de tous les utilisateurs
Token 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 de minter est défini dans le fichier de spécification, tout utilisateur doté du rôle de minter peut appeler cette méthode pour créer un NFT. Sinon, n'importe quel utilisateur peut utiliser cette méthode pour créer (mentalement) 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 de 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
Token Admin
du code chaîne. Cette méthode utilise des requêtes Berkeley DB SQL riches et ne peut être appelée que lorsqu'elle est connectée au réseau Oracle Blockchain Platform distant. -
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 peut uniquement être appelée par
Token Admin
du code chaîne ou par le propriétaire du jeton. -
getAllTokensByUser
- Cette méthode renvoie toutes les ressources de jeton appartenant à un utilisateur spécifié. Cette méthode utilise des requêtes Berkeley DB SQL riches et ne peut être appelée que lorsqu'elle est connectée au réseau Oracle Blockchain Platform distant.
-
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é. N'importe qui peut appeler cette méthode.
-
name
- Cette méthode renvoie le nom de la classe de jeton. N'importe qui peut appeler cette méthode.
-
totalSupply
- Cette méthode renvoie le nombre total de jetons frappés. Les jetons fongibles sont spécifiés par l'ID de jeton. Les jetons non fongibles sont spécifiés par le nom du jeton.
-
totalNetSupply
- Cette méthode renvoie 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 de jeton. Les jetons non fongibles sont spécifié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 Berkeley DB SQL riches et ne peut être appelée que lorsqu'elle est connectée au réseau Oracle Blockchain Platform distant.
-
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 assure le suivi du compte NFT et des comptes de jetons fongibles dont dispose un utilisateur. Les utilisateurs doivent disposer de comptes sur le réseau pour effectuer les opérations liées aux jetons. Cette méthode ne peut être appelée que par un
Token Admin
du code chaîne.Un compte utilisateur possède 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 fongibles avec des ID de compte uniques. Les ID de compte de jeton fongibles sont formés par un hachage SHA-256 du paramètre
orgId
, le paramètreuserId
, la chaîne constanteft
séparée par le symbole tilde (~
) et un nombre de compteur 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 jeton 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 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 utilisateur assure le suivi du compte NFT et des comptes de jetons fongibles dont dispose un utilisateur. Les utilisateurs doivent disposer de comptes sur le réseau pour effectuer les 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 unToken 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 jeton fongibles avec des ID de compte uniques. Les ID de compte de jeton fongibles sont formés par un hachage SHA-256 du paramètre
orgId
, le paramètreuserId
, la chaîne constanteft
séparée par le symbole tilde (~
) et un nombre de compteur 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 jeton 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 unique non fongible.Cette méthode ne peut être appelée que par un
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 jeton 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 peut uniquement être appelée par
Token Admin
du code chaîne ou parAccount Owner
du compte. -
getAccount
- Cette méthode renvoie les détails du compte de jeton pour un utilisateur spécifié. Cette méthode peut uniquement être appelée par
Token Admin
du code chaîne ou parAccount 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 spécifié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 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 de jeton. Les jetons non fongibles sont spécifié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 spécifié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 spécifiés par le nom du jeton.
Méthodes de gestion de l'historique des transactions
-
getAccountTransactionHistory
- Cette méthode renvoie l'historique des transactions de compte. Cette méthode peut être appelée uniquement 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 transaction pour un ID de transaction spécifié.
-
deleteTransactions
- Cette méthode supprime les transactions antérieures à un horodatage spécifié de la base de données d'état.
Méthodes de gestion du comportement des jetons - Comportement Mintable
-
mintBatch
- Cette méthode crée (affecte) 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 disposant du rôle minter peut appeler cette méthode. Sinon, n'importe quel utilisateur peut utiliser cette méthode pour frapper 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 disposant du rôle minter peut appeler cette méthode. Sinon, n'importe quel utilisateur peut utiliser cette méthode pour frapper 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 frapper 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, comme la méthode transfère la propriété du NFT, l'expéditeur du 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 une partie d'un jeton est transférée à un utilisateur, cet utilisateur devient automatiquement l'un des propriétaires du NFT fractionnaire.
Cette méthode ne vérifie pas que l'appelant de la méthode est l'expéditeur indiqué.
-
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, comme la méthode transfère la propriété du NFT, l'expéditeur du 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 une partie d'un jeton est transférée à un utilisateur, cet utilisateur devient automatiquement l'un des propriétaires du 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 jeton. Les détails du compte sont indiqués dans trois listes distinctes d'ID d'organisation, d'ID d'utilisateur et d'ID de jeton. Cette méthode ne peut être appelée que par un
Token Admin
du code chaîne ou par les propriétaires de compte. Les titulaires de compte ne peuvent voir les détails du solde que pour les comptes dont ils sont propriétaires. -
exchangeToken
- Cette méthode échange des jetons entre des comptes spécifiés. Cette méthode prend uniquement en charge 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