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