Projet Go échafaudé pour Token Taxonomy Framework
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 Go Chaincode échafaudé.
Modèle
La fonctionnalité de persistance transparente, ou ORM simplifié, est capturée dans la classe OchainModel
.
package src
type Digicur struct {
AssetType string `json:"AssetType" final:"otoken"`
Token_id string `json:"Token_id" id:"true" mandatory:"true" validate:"regexp=^[A-Za-z0-9][A-Za-z0-9_-]*$,max=16"`
Token_name string `json:"Token_name" final:"digicur"`
Token_desc string `json:"Token_desc" validate:"max=256"`
Token_type string `json:"Token_type" final:"fungible" validate:"regexp=^fungible$"`
Behavior []string `json:"Behavior" final:"[\"divisible\",\"mintable\",\"transferable\",\"burnable\",\"holdable\",\"roles\"]"`
Roles map[string]interface{} `json:"Roles" final:"{\"minter_role_name\":\"minter\",\"burner_role_name\":\"burner\",\"notary_role_name\":\"notary\"}"`
Mintable map[string]interface{} `json:"Mintable" final:"{\"Max_mint_quantity\":20000}"`
Divisible map[string]interface{} `json:"Divisible" final:"{\"Decimal\":1}"`
Token_to_currency_ratio int `json:"Token_to_currency_ratio" validate:"int"`
Currency_representation string `json:"Currency_representation" validate:"string"`
Metadata interface{} `json:"Metadata,omitempty"`
}
Contrôleur
Il n'y a qu'un seul contrôleur principal.
type Controller struct {
Ctx trxcontext.TrxContext
}
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.
Si vous utilisez plusieurs méthodes SDK de jeton dans une méthode personnalisée, n'utilisez pas de méthodes qui affecteront les mêmes paires clé-valeur dans la base de données d'état.
Utilisez plutôt la méthode BulkTransferTokens
pour effectuer un transfert vers plusieurs comptes à partir du compte de l'appelant, comme indiqué dans le fragment de code suivant.
BulkTransferTokens(token_id string, flow: []map[string]interface{})
Remarques :
Si vous utilisez plusieurs méthodes SDK de jeton dans une méthode personnalisée susceptible d'affecter les mêmes paires clé-valeur dans la base de données d'état, activez l'optimisation MVCC pour les codes chaîne de jeton. Pour plus d'informations, reportez-vous à la section MVCC Optimization.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 être publiques pour être invocables. Les noms de méthode publics commencent par un caractère majuscule. Les noms de méthode qui commencent par un caractère minuscule sont privés.
- 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
-
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. -
IsTokenAdmin
- Cette méthode renvoie la valeur booléenne
true
si l'appelant de la fonction estToken Admin
, sinon elle renvoiefalse
. Un élémentToken Admin
ouOrg Admin
peut appeler cette fonction sur tout autre utilisateur du réseau de chaîne de blocs. Les autres utilisateurs ne peuvent appeler cette méthode que sur leur propre compte. -
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 parToken Admin
ouOrg Admin
du code chaîne. -
AddOrgAdmin
- Cette méthode ajoute un utilisateur en tant que
Org Admin
de l'organisation. Cette méthode peut être appelée uniquement parToken Admin
du code chaîne ou parOrg Admin
de l'organisation indiquée. -
RemoveOrgAdmin
- Cette méthode supprime un utilisateur en tant que
Org Admin
d'une organisation. Cette méthode peut être appelée uniquement parToken Admin
du code chaîne ou parOrg Admin
de l'organisation indiquée. -
GetOrgAdmins
- Cette méthode renvoie la liste de tous les utilisateurs qui sont
Org Admin
d'une organisation. Cette méthode peut être appelée uniquement par unToken Admin
du code chaîne ou par n'importe quelOrg Admin
.
Méthodes de gestion de la configuration des jetons
-
Init
- Cette méthode est appelée lorsque le code chaîne est déployé. Chaque élément
Token Admin
est identifié par les informationsuser_id
etorg_id
dans le paramètreadminList
obligatoire.user_id
est le nom utilisateur ou l'ID courriel du propriétaire de l'instance ou de l'utilisateur connecté à l'instance.org_id
est l'ID de fournisseur de services d'adhésion de l'utilisateur dans l'organisation réseau en cours. -
Initialize<Token Name>Token
- Cette méthode crée un jeton et initialise ses propriétés. La ressource et ses propriétés sont 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. -
Update<Token Name>Token
- Cette méthode met à jour les propriétés du jeton. Une fois qu'une ressource de jeton est créée, seules la propriété
token_desc
et les propriétés personnalisées peuvent être mises à jour. Cette méthode ne peut être appelée que par unToken Admin
du code chaîne. -
GetTokenDecimals
- Cette méthode renvoie le nombre de décimales configurées pour un jeton fractionnaire. Si le comportement
divisible
n'a pas été indiqué pour le jeton, la valeur par défaut est 0. Cette méthode ne peut être appelée que parToken Admin
ouOrg Admin
du code chaîne. -
GetTokenById
- Cette méthode renvoie un objet de jeton s'il est présent dans la base de données d'état. Cette méthode ne peut être appelée que par
Token Admin
ouOrg Admin
du code chaîne. -
GetTokenHistory
- Cette méthode renvoie l'historique des jetons pour un ID de jeton spécifié. Tout utilisateur peut appeler cette méthode.
-
GetAllTokens
- Cette méthode renvoie tous les jetons stockés dans la base de données d'état. Cette méthode ne peut être appelée que par
Token Admin
ouOrg Admin
du code chaîne. -
GetTokensByName
- Cette méthode renvoie tous les objets de jeton portant le nom indiqué. Cette méthode ne peut être appelée que par
Token Admin
ouOrg 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.
Méthodes de gestion des comptes
-
CreateAccount
- Cette méthode crée un compte pour un utilisateur et un jeton spécifiés. Un compte doit être créé pour tout utilisateur qui aura des jetons à tout moment. Les comptes assurent le suivi des soldes, des soldes bloqués et de l'historique des transactions. Un ID de compte est un ensemble alphanumérique de caractères, précédé de
oaccount~<token asset name>~
et suivi d'un hachage du nom utilisateur ou de l'ID de courriel (user_id
) du propriétaire de l'instance ou de l'utilisateur qui est connecté à l'instance, de l'ID de fournisseur de services d'adhésion (org_id
) de l'utilisateur dans l'organisation réseau en cours. Cette méthode peut uniquement être appelée parToken Admin
du code chaîne ou parOrg Admin
de l'organisation indiquée. -
AssociateTokenToAccount
- Cette méthode associe un jeton fongible à un compte. Cette méthode peut être appelée uniquement par un
Token Admin
du code chaîne ou par unOrg Admin
de l'organisation concernée. -
GetAccount
- Cette méthode renvoie les détails de compte pour 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, unOrg Admin
de l'organisation indiquée ou leAccountOwner
du compte. -
GetAccountHistory
- Cette méthode renvoie les détails de l'historique de compte pour un utilisateur et un jeton spécifiés. Cette méthode peut uniquement être appelée par
Token Admin
du code chaîne ou parAccountOwner
du compte. -
GetAccountOnHoldBalance
- Cette méthode renvoie le solde en attente actuel pour un compte et un jeton spécifiés. Cette méthode ne peut être appelée que par un
Token Admin
du code chaîne, unOrg Admin
de l'organisation indiquée ou leAccountOwner
du compte. -
GetAllAccounts
- Cette méthode renvoie la liste de tous les comptes. 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. -
GetUserByAccountId
- Cette méthode renvoie les détails utilisateur (
org_id
etuser_id
) pour un compte spécifié. Cette méthode peut être appelée par n'importe quel utilisateur du code chaîne. -
GetAccountBalance
- Cette méthode renvoie le solde actuel pour un compte et un jeton spécifiés. Cette méthode ne peut être appelée que par un
Token Admin
du code chaîne, unOrg Admin
de l'organisation indiquée ou leAccountOwner
du compte. -
GetAllOrgAccounts
- Cette méthode renvoie la liste de tous les comptes de jeton appartenant à une organisation spécifiée. Cette méthode peut être appelée uniquement par
Token Admin
du code chaîne ou parOrg Admin
de l'organisation indiquée.
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 peut être appelée uniquement par un
Token Admin
du code chaîne ou par unOrg Admin
de l'organisation indiquée qui a également le rôle indiqué. -
RemoveRole
- Cette méthode supprime un rôle d'un utilisateur et d'un jeton spécifiés. Cette méthode peut être appelée uniquement par un
Token Admin
du code chaîne ou unOrg Admin
de l'organisation indiquée qui a également le rôle indiqué. -
GetAccountsByRole
- Cette méthode renvoie la liste de tous les ID de compte pour un rôle et un jeton spécifiés. Cette méthode ne peut être appelée que par un
Token Admin
du code chaîne. -
GetAccountsByUser
- Cette méthode renvoie la liste de tous les ID de compte pour un ID d'organisation et un ID d'utilisateur spécifiés. Cette méthode peut être appelée uniquement par un
Token Admin
du code chaîne, unOrg Admin
de l'organisation indiquée ou par leAccount Owner
spécifié dans les paramètres. -
GetUsersByRole
- Cette méthode renvoie la liste de tous les utilisateurs pour un rôle et un jeton spécifiés. Cette méthode peut être appelée uniquement par
Token Admin
du code chaîne ou parAccount Owner
spécifié dans les paramètres. -
IsInRole
- Cette méthode renvoie une valeur booléenne pour indiquer si un utilisateur et un jeton ont un rôle spécifié. Cette méthode peut uniquement être appelée par
Token Admin
du code chaîne, parOrg Admin
de l'organisation indiquée ou parAccountOwner
du compte. -
GetOrgUsersByRole
- Cette méthode renvoie des informations sur tous les utilisateurs qui ont un rôle spécifié dans une organisation donnée. Cette méthode peut être appelée uniquement par
Token Admin
du code chaîne ou parOrg Admin
de l'organisation indiquée. -
GetOrgAccountsByRole
- Cette méthode renvoie des informations sur tous les comptes qui ont un rôle spécifié dans une organisation spécifiée. Cette méthode peut être appelée uniquement par
Token Admin
du code chaîne ou parOrg Admin
de l'organisation indiquée.
Méthodes de gestion de l'historique des transactions
-
GetAccountTransactionHistory
- Cette méthode renvoie un tableau des détails de l'historique des transactions de compte pour un utilisateur et un jeton spécifiés. Cette méthode peut uniquement être appelée par
Token Admin
du code chaîne, parOrg Admin
de l'organisation indiquée ou parAccountOwner
du compte. -
GetAccountTransactionHistoryWithFilters
- Cette méthode renvoie un tableau des détails de l'historique des transactions de compte pour un utilisateur et un jeton spécifiés. Cette méthode peut uniquement être appelée par
Token Admin
du code chaîne, parOrg Admin
de l'organisation indiquée ou parAccountOwner
du compte. Cette méthode ne peut être appelée que si elle est connectée au réseau Oracle Blockchain Platform distant. -
GetSubTransactionsById
- Cette méthode renvoie un tableau des détails de l'historique des sous-transactions pour une transaction spécifiée.
-
GetSubTransactionsByIdWithFilters
- Cette méthode renvoie un tableau des détails de l'historique des sous-transactions pour une transaction spécifiée.
-
GetTransactionById
- Cette méthode renvoie l'historique d'une ressource
Transaction
. -
DeleteHistoricalTransactions
- Cette méthode supprime les anciennes transactions de la base de données d'état.
Méthodes de gestion du comportement des jetons - Comportement Mintable
-
IssueTokens
- Cette méthode extrait des jetons, qui appartiennent ensuite à l'appelant de la méthode. L'appelant doit disposer d'un compte et du rôle d'opérateur. Le nombre de jetons pouvant être extraits est limité par la propriété
max_mint_quantity
du comportementmintable
dans le fichier de spécification. Si la propriétémax_mint_quantity
n'est pas spécifiée, un nombre illimité de jetons peut être extrait. La quantité doit être comprise dans les valeurs décimales indiquées par le paramètredecimal
du comportementdivisible
dans le fichier de spécification. Cette méthode ne peut être appelée que parAccountOwner
du compte avec le rôle minter. -
GetTotalMintedTokens
- Cette méthode renvoie le nombre total de jetons extraits pour un jeton spécifié. Cette méthode ne peut être appelée que par
Token Admin
ouOrg Admin
du code chaîne. -
GetNetTokens
- Cette méthode renvoie le nombre total net de jetons disponibles dans le système pour un jeton spécifié. Le total du jeton net correspond à la quantité de jetons restants après la gravure des jetons. Sous forme d'équation, jetons nets = total des jetons frappés - total des jetons brûlés. Si aucun jeton n'est brûlé, le nombre de jetons réseau est égal au nombre total de jetons frappés. Cette méthode ne peut être appelée que par
Token Admin
ouOrg Admin
du code chaîne.
Méthodes de gestion du comportement des jetons - Comportement transférable
-
TransferTokens
- Cette méthode transfère les jetons de l'appelant vers un compte spécifié. L'appelant de la méthode doit avoir un compte. La quantité doit être comprise dans les valeurs décimales indiquées par le paramètre
decimal
du comportementdivisible
dans le fichier de spécification. Cette méthode ne peut être appelée que parAccountOwner
du compte. -
BulkTransferTokens
- Cette méthode est utilisée pour effectuer un transfert en masse de jetons du compte appelant vers les comptes spécifiés dans l'objet
flow
. Les quantités doivent être comprises dans les valeurs décimales indiquées par le paramètredecimal
du comportementdivisible
dans l'appelant file.The de spécification de cette méthode doit avoir un compte déjà créé. Cette méthode ne peut être appelée que parAccountOwner
du compte.
Méthodes de gestion du comportement des jetons - Comportement pouvant être conservé
-
HoldTokens
- Cette méthode crée un blocage pour le compte du propriétaire des jetons avec le compte
to_account_id
. Un compte de notaire est spécifié, qui est chargé de terminer ou de lever le blocage. Lorsque le blocage est créé, le solde de jetons spécifié par le payeur est bloqué. Un solde bloqué ne peut pas être transféré tant que le blocage n'est pas terminé ou levé. L'appelant de cette méthode doit avoir un compte déjà créé. Cette méthode ne peut être appelée que parAccountOwner
du compte. -
ExecuteHoldTokens
- Cette méthode met un jeton en suspens. Une quantité de jetons précédemment détenus par un propriétaire de jeton est transférée à un récepteur. Si la valeur
quantity
est inférieure à la valeur de blocage réelle, le montant restant est à nouveau disponible pour le propriétaire initial des jetons. Cette méthode ne peut être appelée que par l'IDAccountOwner
avec le rôlenotary
. Le blocage ne peut être effectué que par le notaire. -
ReleaseHoldTokens
- Cette méthode libère un blocage sur les jetons. Le transfert n'est pas terminé et tous les jetons détenus sont à nouveau disponibles pour le propriétaire d'origine. Cette méthode peut être appelée par l'ID
Account Owner
avec le rôlenotary
dans la limite de temps spécifiée ou par le payeur, le bénéficiaire ou le notaire après la limite de temps spécifiée. -
GetOnHoldIds
- Cette méthode renvoie la liste de tous les ID de mise en attente pour un compte spécifié. Cette méthode peut être appelée par
Token Admin
du code chaîne, parOrg Admin
de l'organisation indiquée ou parAccount Owner
du compte. -
GetOnHoldDetailsWithOperationId
- Cette méthode renvoie les détails de transaction bloquée pour un ID d'opération et un jeton spécifiés. Cette méthode peut être appelée par n'importe qui.
-
GetOnHoldBalanceWithOperationId
- Cette méthode renvoie le solde bloqué pour un ID d'opération et un jeton spécifiés. Cette méthode peut être appelée par n'importe qui.
Méthodes de gestion du comportement des jetons - Comportement gravable
-
BurnTokens
- Cette méthode désactive ou brûle les jetons du compte de l'appelant de la transaction. L'appelant de cette méthode doit avoir un compte et le rôle de brûleur. La quantité doit être comprise dans les valeurs décimales indiquées par le paramètre
decimal
du comportementdivisible
dans le fichier de spécification. Cette méthode peut être appelée parAccount Owner
du compte avec le rôle de brûleur.
Méthodes personnalisées
Vous pouvez utiliser les méthodes SDK de jeton pour écrire des méthodes personnalisées pour votre application métier.
Assurez-vous de suivre la valeur renvoyée lorsque vous utilisez les méthodes SDK de jeton. En outre, pour éviter les doubles dépenses, ne combinez pas plusieurs fonctions asynchrones qui fonctionnent sur les mêmes paires clé-valeur dans la base de données d'état. Utilisez plutôt la méthode BulkTransferTokens
pour effectuer plusieurs transferts dans une seule méthode.
L'exemple suivant montre comment utiliser les méthodes SDK de jeton dans les méthodes personnalisées. Lorsque la méthode BuyTicket
est appelée, elle transfère 20 jetons du compte de l'appelant vers le compte du vendeur et renvoie le message de transaction du transfert.
func (t *Controller) BuyTicket(TokenId string, SellerOrgId string, SellerUserId string) (interface{}, error){
token, err := t.Ctx.Token.Get(TokenId)
if err != nil {
return nil, err
}
/**
* The following method t.Ctx.Account.GenerateAccountId(TokenId, SellerOrgId, SellerUserId) generates account id of the seller
*/
sellerAccountId, err := t.Ctx.Account.GenerateAccountId(TokenId, SellerOrgId, SellerUserId)
if err != nil {
return nil, err
}
/**
* The following method t.Ctx.Token.Transfer(sellerAccountId, 20, token) transfers the quantity 20 from caller's
* account & to seller's account.
*/
transaction, err := t.Ctx.Token.Transfer(sellerAccountId, 20, token)
if err != nil {
return nil, err
}
return transaction, nil
}
Méthodes SDK de jeton
- 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
Token Admin
, Org Admin
ou AccountOwner
du jeton. Vous pouvez utiliser cette fonctionnalité pour vous assurer que les opérations sont effectuées uniquement par les utilisateurs prévus. Tout accès non autorisé entraîne une erreur. Pour utiliser la fonction de contrôle d'accès, importez la classe Authorization
à partir du module ../lib/auth
.import { Authorization } from '../lib/auth';
-
AddAdmin
- Cette méthode ajoute un utilisateur en tant que
Token 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. -
GetAllAdmins
- Cette méthode renvoie la liste de tous les utilisateurs qui sont un
Token Admin
du code chaîne de jeton. -
GetAllAdminUsers
- Cette méthode renvoie la liste de tous les utilisateurs qui sont un
Token Admin
du code chaîne de jeton. -
CheckAuthorization
- Utilisez cette méthode pour ajouter un contrôle d'accès à votre code chaîne. La plupart des méthodes de jeton générées automatiquement utilisent le contrôle d'accès. La mise en correspondance entre le récepteur SDK et les méthodes disposant d'un contrôle d'accès est décrite dans le fichier
oChainUtil.go
. 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.var t TokenAccess var r RoleAccess var a AccountAccess var as AccountStatusAccess var h HoldAccess var ad AdminAccess var trx TransactionAccess var tc TokenConversionAccess var auth AuthAccess auth.IsTokenAdmin = []string{"Admin", "MultipleAccountOwner"} trx.DeleteHistoricalTransactions = []string{"Admin"} ad.AddAdmin = []string{"Admin"} ad.RemoveAdmin = []string{"Admin"} ad.GetAllAdmins = []string{"Admin", "OrgAdmin"} ad.AddOrgAdmin = []string{"Admin", "OrgAdminOrgIdCheck"} ad.RemoveOrgAdmin = []string{"Admin", "OrgAdminOrgIdCheck"} ad.GetOrgAdmins = []string{"Admin", "OrgAdmin"} ad.IsTokenAdmin = []string{"Admin", "MultipleAccountOwner", "OrgAdmin"} t.Save = []string{"Admin"} t.GetAllTokens = []string{"Admin", "OrgAdmin"} t.Update = []string{"Admin"} t.GetTokenDecimals = []string{"Admin", "OrgAdmin"} t.GetTokensByName = []string{"Admin", "OrgAdmin"} t.AddRoleMember = []string{"Admin", "OrgAdminRoleCheck"} t.RemoveRoleMember = []string{"Admin", "OrgAdminRoleCheck"} t.IsInRole = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} t.GetTotalMintedTokens = []string{"Admin", "OrgAdmin"} t.GetNetTokens = []string{"Admin", "OrgAdmin"} t.Get = []string{"Admin", "OrgAdmin"} t.GetTokenHistory = []string{"Admin", "OrgAdmin"} a.CreateAccount = []string{"Admin", "OrgAdminOrgIdCheck"} a.AssociateToken = []string{"Admin", "OrgAdminAccountIdCheck"} a.GetAllAccounts = []string{"Admin"} a.GetAllOrgAccounts = []string{"Admin", "OrgAdminOrgIdCheck"} a.GetAccount = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} a.History = []string{"Admin", "AccountOwner"} a.GetAccountTransactionHistory = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} a.GetAccountTransactionHistoryWithFilters = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} a.GetSubTransactionsById = []string{"Admin", "TransactionInvoker"} a.GetSubTransactionsByIdWithFilters = []string{"Admin", "TransactionInvoker"} a.GetAccountBalance = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} a.GetAccountOnHoldBalance = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} a.GetOnHoldIds = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} a.GetAccountsByUser = []string{"Admin", "OrgAdminOrgIdCheck", "MultipleAccountOwner"} as.Get = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} as.ActivateAccount = []string{"Admin", "OrgAdminOrgIdCheck"} as.SuspendAccount = []string{"Admin", "OrgAdminOrgIdCheck"} as.DeleteAccount = []string{"Admin", "OrgAdminOrgIdCheck"} r.GetAccountsByRole = []string{"Admin"} r.GetUsersByRole = []string{"Admin"} r.GetOrgAccountsByRole = []string{"Admin", "OrgAdminOrgIdCheck"} r.GetOrgUsersByRole = []string{"Admin", "OrgAdminOrgIdCheck"} tc.InitializeExchangePoolUser = []string{"Admin"} tc.AddConversionRate = []string{"Admin"} tc.UpdateConversionRate = []string{"Admin"} tc.GetConversionRate = []string{"Admin", "OrgAdmin", "AnyAccountOwner"} tc.GetConversionRateHistory = []string{"Admin", "OrgAdmin", "AnyAccountOwner"} tc.TokenConversion = []string{"Admin", "AnyAccountOwner"} tc.GetExchangePoolUser = []string{"Admin"}
-
IsUserTokenAdmin
- Cette méthode renvoie la valeur booléenne
true
si l'appelant de la fonction estToken Admin
. Sinon, la méthode renvoiefalse
. -
AddOrgAdmin
- Cette méthode ajoute un utilisateur en tant que
Org Admin
de l'organisation. -
RemoveOrgAdmin
- Cette méthode supprime un utilisateur en tant que
Org Admin
d'une organisation. -
GetOrgAdmins
- Cette méthode renvoie la liste de tous les utilisateurs qui sont
Org Admin
d'une organisation.
Méthodes de gestion de la configuration des jetons
-
GetTokenDecimals
- Cette méthode renvoie le nombre de décimales disponibles pour un jeton fractionnaire. Si le comportement
divisible
n'est pas indiqué, la valeur par défaut est 0. -
GetAllTokens
- Cette méthode renvoie toutes les ressources de jeton enregistrées dans la base de données d'état. 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.
-
GetTokensByName
- Cette méthode renvoie toutes les ressources de jeton portant le nom indiqué. 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
- Cette méthode renvoie un objet de jeton s'il est présent 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 de jeton. -
IsTokenType
- Cette méthode vérifie s'il existe une ressource de jeton pour un ID de jeton spécifié.
-
Save
- Cette méthode crée un jeton et enregistre ses propriétés dans la base de données d'état.
-
Update
- Cette méthode met à jour les propriétés du jeton. Une fois qu'une ressource de jeton est créée, vous pouvez uniquement mettre à jour la valeur
token_desc
et ses propriétés personnalisées. -
GetByRange
- Cette méthode appelle la méthode fabric
getStateByRange
en interne. Même si une immobilisation portant le code indiqué est renvoyée du livre, cette méthode convertit l'immobilisation dans le type d'immobilisation appelant. -
History
- Cette méthode renvoie l'historique des jetons pour un ID de jeton spécifié.
Méthodes de gestion des comptes
-
GenerateAccountId
- Cette méthode renvoie un ID de compte, qui est un ensemble alphanumérique de caractères, précédé de
oaccount~<token asset name>~
et suivi d'un hachage du nom utilisateur ou de l'ID de courriel (user_id
) du propriétaire de l'instance ou de l'utilisateur connecté à l'instance, de l'ID de fournisseur de services d'adhésion (org_id
) de l'utilisateur dans l'organisation réseau en cours et de l'ID de jeton unique (token_id
). -
CreateAccount
- Cette méthode crée un compte pour un utilisateur et un jeton spécifiés. Chaque utilisateur qui a des jetons à tout moment doit avoir un compte. Les comptes assurent le suivi du solde d'un utilisateur, du solde bloqué et de l'historique des transactions. Un ID de compte est un ensemble alphanumérique de caractères, précédé de
oaccount~<token asset name>~
et suivi d'un hachage du nom utilisateur ou de l'ID de courriel (user_id
) du propriétaire de l'instance ou de l'utilisateur qui est connecté à l'instance, de l'ID de fournisseur de services d'adhésion (org_id
) de l'utilisateur dans l'organisation réseau en cours. Cette méthode ne peut être appelée que parToken Admin
du code chaîne. -
AssociateToken
- Cette méthode associe un jeton fongible à un compte. Cette méthode ne peut être appelée que par un
Token Admin
du code chaîne. -
GetAccountWithStatus
- Cette méthode renvoie les détails de compte pour un compte spécifié, y compris le statut du compte.
-
GetAccount
- Cette méthode renvoie les détails de compte pour un compte spécifié.
-
GetAccountHistory
- Cette méthode renvoie un tableau des détails d'historique de compte pour un compte spécifié.
-
GetAccountOnHoldBalance
- Cette méthode renvoie le solde de blocage pour un compte spécifié.
-
GetAllAccounts
- Cette méthode renvoie la liste de tous les comptes. 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.
-
GetUserByAccountId
- Cette méthode renvoie les détails de l'utilisateur pour un compte spécifié.
-
GetAccountBalance
- Cette méthode renvoie le solde d'un compte donné.
-
GetAllOrgAccounts
- Cette méthode renvoie la liste de tous les comptes de jeton appartenant à une organisation spécifiée.
Méthodes de gestion des rôles
-
AddRoleMember
- Cette méthode ajoute un rôle à un utilisateur et un jeton spécifiés.
-
RemoveRoleMember
- Cette méthode supprime un rôle d'un utilisateur et d'un jeton spécifiés.
-
GetAccountsByRole
- Cette méthode renvoie la liste de tous les comptes pour un rôle et un jeton spécifiés.
-
GetUsersByRole
- Cette méthode renvoie la liste de tous les utilisateurs pour un rôle et un jeton spécifiés.
-
IsInRole
- Cette méthode indique si un utilisateur et un jeton ont un rôle spécifié.
-
RoleCheck
- Cette méthode vérifie si l'ID de compte fourni est membre d'un rôle.
-
GetOrgUsersByRole
- Cette méthode renvoie des informations sur tous les utilisateurs qui ont un rôle spécifié dans une organisation donnée.
-
GetOrgAccountsByRole
- Cette méthode renvoie des informations sur tous les comptes qui ont un rôle spécifié dans une organisation spécifiée.
Méthodes de gestion de l'historique des transactions
-
GetAccountTransactionHistory
- Cette méthode renvoie un tableau des détails de l'historique des transactions pour un compte spécifié.
-
GetAccountTransactionHistoryWithFilters
- Cette méthode renvoie un tableau des détails de l'historique des transactions pour une transaction spécifiée. Cette méthode ne peut être appelée que si elle est connectée au réseau Oracle Blockchain Platform distant.
-
GetSubTransactionsById
- Cette méthode renvoie un tableau des détails de l'historique des transactions pour une transaction spécifiée.
-
GetSubTransactionsByIdWithFilters
- Cette méthode renvoie un tableau des détails de l'historique des transactions pour une transaction spécifiée.
-
GetTransactionById
- Cette méthode renvoie l'historique d'une ressource
Transaction
. -
DeleteHistoricalTransactions
- Cette méthode supprime les anciennes transactions de la base de données d'état.
Méthodes de gestion du comportement des jetons - Comportement Mintable
-
Mint
- Cette méthode extrait des jetons, qui appartiennent ensuite à l'appelant de la méthode. L'appelant doit disposer d'un compte et du rôle d'opérateur. Le nombre de jetons pouvant être extraits est limité par la propriété
max_mint_quantity
du comportementmintable
dans le fichier de spécification. Si la propriétémax_mint_quantity
n'est pas spécifiée, un nombre illimité de jetons peut être extrait. La quantité doit être comprise dans les valeurs décimales indiquées par le paramètredecimal
du comportementdivisible
dans le fichier de spécification. Cette méthode ne peut être appelée que parAccountOwner
du compte avec le rôle minter. -
GetTotalMintedTokens
- Cette méthode renvoie le nombre total de jetons extraits.
-
GetNetTokens
- Cette méthode renvoie la quantité nette de jetons disponibles dans le système pour un jeton spécifié. Les jetons réseau sont la quantité de jetons restants après que les jetons ont été brûlés. Sous forme d'équation : jetons nets = total des jetons frappés - total des jetons brûlés. Si aucun jeton n'est brûlé, le nombre de jetons réseau est égal au nombre total de jetons frappés.
-
GetMaxMintQuantity
- Cette méthode renvoie la quantité minimale maximale d'un jeton. Si le comportement
max_mint_quantity
n'est pas spécifié, la valeur par défaut est 0, ce qui permet d'extraire un nombre quelconque de jetons.
Méthodes de gestion du comportement des jetons - Comportement transférable
-
Transfer
- Cette méthode transfère les jetons de l'appelant vers un compte spécifié. L'appelant de la méthode doit avoir un compte. La quantité doit être comprise dans les valeurs décimales indiquées par le paramètre
decimal
du comportementdivisible
dans le fichier de spécification. Cette méthode ne peut être appelée que parAccountOwner
du compte. -
BulkTransfer
- Cette méthode est utilisée pour effectuer un transfert en masse de jetons du compte appelant vers les comptes spécifiés dans l'objet
flow
. L'appelant de cette méthode doit avoir un compte déjà créé.
Méthodes de gestion du comportement des jetons - Comportement pouvant être conservé
-
Hold
- Cette méthode crée un blocage pour le compte du propriétaire des jetons avec le compte
to_account_id
. Un compte de notaire est spécifié, qui est chargé de terminer ou de lever le blocage. Lorsque le blocage est créé, le solde de jetons spécifié par le payeur est bloqué. Un solde bloqué ne peut pas être transféré tant que le blocage n'est pas terminé ou levé. L'appelant de cette méthode doit avoir un compte déjà créé. -
ExecuteHold
- Cette méthode effectue un blocage sur les jetons, en transférant la quantité spécifiée de jetons précédemment bloqués au récepteur. Si la valeur
quantity
est inférieure à la valeur de blocage réelle, le montant restant est à nouveau disponible pour le propriétaire initial des jetons. Cette méthode ne peut être appelée que par l'IDAccountOwner
avec le rôlenotary
. -
ReleaseHold
- Cette méthode libère un blocage sur les jetons. Le transfert n'est pas terminé et tous les jetons détenus sont à nouveau disponibles pour le propriétaire d'origine. Cette méthode peut être appelée par l'ID
Account Owner
avec le rôlenotary
dans la limite de temps spécifiée ou par le payeur, le bénéficiaire ou le notaire après la limite de temps spécifiée. -
GetOnHoldIds
- Cette méthode renvoie la liste de tous les ID de conservation pour un utilisateur et un jeton spécifiés.
-
GetOnHoldDetailsWithOperationID
- Cette méthode renvoie les détails de transaction bloquée pour un ID d'opération et un jeton spécifiés.
-
GetOnHoldBalanceWithOperationID
- Cette méthode renvoie le solde de blocage pour un ID d'opération et un jeton spécifiés.
Méthodes de gestion du comportement des jetons - Comportement gravable
-
Burn
- Cette méthode désactive ou brûle les jetons du compte de l'appelant de la transaction. L'appelant de cette méthode doit avoir un compte et le rôle de brûleur. La quantité doit être comprise dans les valeurs décimales indiquées par le paramètre
decimal
du comportementdivisible
dans le fichier de spécification.