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 entièrement fonctionnel.
Le projet génère automatiquement des classes de cycle de vie de jeton et des fonctions, 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 capacité de persistance transparente, ou ORM simplifié, est capturée dans la classe OchainModel
. Le modèle suivant montre un jeton entier non fongible.
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'y a 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 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 des contrôles 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 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 qu'utilisateur
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'utilisateur
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 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 de jeton
-
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 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 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. 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 minter 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 le 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 de 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 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 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 appartenant à un utilisateur spécifié. Cette méthode utilise des requêtes enrichies SQL Berkeley DB et ne peut être appelée qu'en cas de connexion au réseau Oracle Blockchain Platform distant. Cette méthode peut uniquement être appelée 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 spécifié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 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 é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 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 é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 effectue 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 élément
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 à jetons fongibles avec des ID de compte uniques. Les ID de compte de jeton fongible sont formés par un hachage SHA-256 du paramètre
orgId
, le paramètreuserId
, la chaîne de constanteft
séparée par le symbole tilde (~
) et un numéro 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écifique. Un compte doit être créé pour tout utilisateur qui aura des jetons à tout moment. Le compte utilisateur effectue 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 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 à jetons fongibles avec des ID de compte uniques. Les ID de compte de jeton fongible sont formés par un hachage SHA-256 du paramètre
orgId
, le paramètreuserId
, la chaîne de constanteft
séparée par le symbole tilde (~
) et un numéro 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 é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 jeton spécifié. Il s'agit d'une méthode asynchrone. Cette méthode peut uniquement être appelée 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 é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 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 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 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 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 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 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 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 spécifié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 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 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 spécifié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 spécifié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 peut uniquement être appelée 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 qu'en cas de connexion 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 spécifié 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 plusieurs jetons (mints) dans une opération par lots. 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. Si ce n'est pas le cas, n'importe quel utilisateur peut utiliser cette méthode pour obtenir 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 doté du 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 obtenir 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 frappés.
Vous ne pouvez pas utiliser cette méthode pour frapper un jeton entier non fongible.
Méthodes de gestion du comportement des jetons - Comportement transférable
-
batchTransferFrom
- Cette méthode termine une opération batch 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 toutes les actions qu'il possède, il perd la propriété du jeton. Si une partie d'un jeton est transférée à un utilisateur, celui-ci devient automatiquement l'un des propriétaires de la NFT fractionnaire.
Cette méthode ne vérifie pas 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 batch 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 toutes les actions qu'il possède, il perd la propriété du jeton. Si une partie d'un jeton est transférée à un utilisateur, celui-ci 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 jeton. 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 peut uniquement être appelée par un élément
Token Admin
du code chaîne ou par les propriétaires de compte. Les propriétaires 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 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 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 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
-
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 le paramètre
Token Admin
ouAccountOwner
du jeton ou par le paramètreMultipleAccountOwner
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 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"], },
-
isUserTokenAdmin
- Cette méthode renvoie la valeur booléenne
true
si l'utilisateur indiqué estToken Admin
etfalse
dans les autres cas. 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 qu'utilisateur
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 qu'utilisateur
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 de jeton
-
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 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. Dans le cas contraire, n'importe quel utilisateur peut utiliser cette méthode pour créer des NFT (mint). 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 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 élément
Token Admin
du code chaîne. Cette méthode utilise des requêtes enrichies 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 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 appartenant à un utilisateur spécifié. Cette méthode utilise des requêtes enrichies 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 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 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 enrichies 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 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 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 effectue 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 élément
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 à jetons fongibles avec des ID de compte uniques. Les ID de compte de jeton fongible sont formés par un hachage SHA-256 du paramètre
orgId
, le paramètreuserId
, la chaîne de constanteft
séparée par le symbole tilde (~
) et un numéro 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 de jetons non fongibles unique. -
createUserAccount
- Cette méthode crée un compte pour un utilisateur spécifique. Un compte doit être créé pour tout utilisateur qui aura des jetons à tout moment. Le compte utilisateur effectue 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 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 à jetons fongibles avec des ID de compte uniques. Les ID de compte de jeton fongible sont formés par un hachage SHA-256 du paramètre
orgId
, le paramètreuserId
, la chaîne de constanteft
séparée par le symbole tilde (~
) et un numéro 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 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 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 du compte. Cette méthode peut uniquement être appelée 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 qu'en cas de connexion 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 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 plusieurs jetons (mints) dans une opération par lots. 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. Si ce n'est pas le cas, n'importe quel utilisateur peut utiliser cette méthode pour obtenir 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 doté du 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 obtenir 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 frappés.
Vous ne pouvez pas utiliser cette méthode pour frapper un jeton entier non fongible.
Méthodes de gestion du comportement des jetons - Comportement transférable
-
batchTransferFrom
- Cette méthode termine une opération batch 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 toutes les actions qu'il possède, il perd la propriété du jeton. Si une partie d'un jeton est transférée à un utilisateur, celui-ci devient automatiquement l'un des propriétaires de la NFT fractionnaire.
Cette méthode ne vérifie pas que l'appelant de la méthode est l'expéditeur spécifié.
-
safeBatchtransferFrom
- Cette méthode termine une opération batch 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 toutes les actions qu'il possède, il perd la propriété du jeton. Si une partie d'un jeton est transférée à un utilisateur, celui-ci 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 jeton. 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 peut uniquement être appelée par un élément
Token Admin
du code chaîne ou par les propriétaires de compte. Les propriétaires 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 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