Progetto Go con impalcatura per struttura tassonomia token
Blockchain App Builder prende l'input dal file di specifica del token e genera un progetto di codice concatenato impalcato completamente funzionale.
Il progetto genera automaticamente classi e funzioni del ciclo di vita dei token, inclusi i metodi CRUD e non CRUD. La convalida degli argomenti, il marshalling/unmarshalling e la capacità di persistenza trasparente sono tutti supportati automaticamente.
Per informazioni sul progetto e sui metodi scaffolded non direttamente correlati ai token, vedere Scaffolded Go Chaincode Project.
Modello
La funzionalità di persistenza trasparente o ORM semplificato viene acquisita nella 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"`
}
Controllore
C'è un solo controller principale.
type Controller struct {
Ctx trxcontext.TrxContext
}
È possibile creare un numero qualsiasi di classi, funzioni o file, ma è possibile richiamare solo i metodi definiti all'interno della classe controller principale. Gli altri metodi sono nascosti.
È possibile utilizzare i metodi SDK token per scrivere metodi personalizzati per l'applicazione business.
Se si utilizza più di un metodo SDK token in un metodo personalizzato, non utilizzare metodi che influiranno sulle stesse coppie chiave-valore nel database di stato.
In alternativa, utilizzare il metodo BulkTransferTokens
per eseguire il trasferimento a più account dal conto del chiamante, come mostrato nel seguente frammento di codice.
BulkTransferTokens(token_id string, flow: []map[string]interface{})
Nota
Se si utilizza più di un metodo SDK token in un metodo personalizzato che potrebbe influire sulle stesse coppie chiave-valore nel database di stato, abilitare l'ottimizzazione MVCC per i codici concatenati token. Per ulteriori informazioni, vedere Ottimizzazione MVCC.Metodi token generati automaticamente
Blockchain App Builder genera automaticamente metodi per supportare i token e i cicli di vita dei token. È possibile utilizzare questi metodi per inizializzare i token, gestire ruoli e account e completare altri task del ciclo di vita dei token senza alcuna codifica aggiuntiva. I metodi del controller devono essere pubblici per poter essere richiamati. I nomi dei metodi pubblici iniziano con un carattere maiuscolo. I nomi dei metodi che iniziano con un carattere minuscolo sono privati.
- Gestione del controllo dell'accesso
- Gestione configurazione token
- Gestione degli account
- Gestione ruoli
- Gestione cronologia transazioni
- Gestione del comportamento dei token
Metodi per la gestione del controllo dell'accesso
-
AddTokenAdmin
- Questo metodo aggiunge un utente come
Token Admin
del codice concatenato. Questo metodo può essere richiamato solo da unToken Admin
del codice concatenato. -
RemoveTokenAdmin
- Questo metodo rimuove un utente come
Token Admin
del codice concatenato. Questo metodo può essere richiamato solo da unToken Admin
del codice concatenato. -
IsTokenAdmin
- Questo metodo restituisce il valore booleano
true
se il chiamante della funzione è un valoreToken Admin
, altrimenti restituiscefalse
. UnToken Admin
oOrg Admin
può chiamare questa funzione su qualsiasi altro utente della rete blockchain. Altri utenti possono chiamare questo metodo solo sui propri account. -
GetAllTokenAdmins
- Questo metodo restituisce un elenco di tutti gli utenti che sono un
Token Admin
del codice concatenato. Questo metodo può essere chiamato solo dalToken Admin
oOrg Admin
del codice concatenato. -
AddOrgAdmin
- Questo metodo aggiunge un utente come
Org Admin
dell'organizzazione. Questo metodo può essere chiamato solo da unToken Admin
del codice concatenato o da unOrg Admin
dell'organizzazione specificata. -
RemoveOrgAdmin
- Questo metodo rimuove un utente come
Org Admin
di un'organizzazione. Questo metodo può essere chiamato solo da unToken Admin
del codice concatenato o da unOrg Admin
dell'organizzazione specificata. -
GetOrgAdmins
- Questo metodo restituisce un elenco di tutti gli utenti che sono un
Org Admin
di un'organizzazione. Questo metodo può essere chiamato solo da unToken Admin
del codice concatenato o da qualsiasiOrg Admin
.
Metodi per la gestione della configurazione dei token
-
Init
- Questo metodo viene chiamato quando viene distribuito il codice concatenato. Ogni
Token Admin
è identificato dalle informazioniuser_id
eorg_id
nel parametroadminList
obbligatorio.user_id
è il nome utente o l'ID di posta elettronica del proprietario dell'istanza o dell'utente che ha eseguito il login all'istanza.org_id
è l'ID del provider di servizi di appartenenza (MSP) dell'utente nell'organizzazione di rete corrente. -
Initialize<Token Name>Token
- Questo metodo crea un token e inizializza le proprietà del token. L'asset e le relative proprietà vengono salvati nel database di stato. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato. -
Update<Token Name>Token
- Questo metodo aggiorna le proprietà del token. Dopo aver creato un asset token, è possibile aggiornare solo la proprietà
token_desc
e le proprietà personalizzate. Questo metodo può essere richiamato solo da unToken Admin
del codice concatenato. -
GetTokenDecimals
- Questo metodo restituisce il numero di posizioni decimali configurate per un token frazionario. Se il comportamento
divisible
non è stato specificato per il token, il valore predefinito è 0. Questo metodo può essere chiamato solo da unToken Admin
oOrg Admin
del codice concatenato. -
GetTokenById
- Questo metodo restituisce un oggetto token se è presente nel database di stato. Questo metodo può essere chiamato solo da un
Token Admin
oOrg Admin
del codice concatenato. -
GetTokenHistory
- Questo metodo restituisce la cronologia del token per l'ID token specificato. Qualsiasi utente può chiamare questo metodo.
-
GetAllTokens
- Questo metodo restituisce tutti i token memorizzati nel database di stato. Questo metodo può essere chiamato solo da un
Token Admin
oOrg Admin
del codice concatenato. -
GetTokensByName
- Questo metodo restituisce tutti gli oggetti token con un nome specificato. Questo metodo può essere chiamato solo da un
Token Admin
oOrg Admin
del codice concatenato. Questo metodo utilizza query rich SQL di Berkeley DB e può essere richiamato solo quando si è connessi alla rete remota di Oracle Blockchain Platform.
Metodi per la gestione degli account
-
CreateAccount
- Questo metodo crea un account per un utente e un token specificati. È necessario creare un account per qualsiasi utente che avrà token in qualsiasi momento. I conti tengono traccia dei saldi, dei saldi bloccati e della cronologia delle transazioni. Un ID account è un set alfanumerico di caratteri, preceduto dal prefisso
oaccount~<token asset name>~
e seguito da un hash del nome utente o dell'ID di posta elettronica (user_id
) del proprietario dell'istanza o dell'utente che ha eseguito il login all'istanza, l'ID del provider di servizi di appartenenza (org_id
) dell'utente nell'organizzazione di rete corrente. Questo metodo può essere chiamato solo da unToken Admin
del codice concatenato o da unOrg Admin
dell'organizzazione specificata. -
AssociateTokenToAccount
- Questo metodo associa un token fungibile a un account. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato o da unOrg Admin
dell'organizzazione pertinente. -
GetAccount
- Questo metodo restituisce i dettagli dell'account per un utente e un token specificati. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato, da unOrg Admin
dell'organizzazione specificata o dalAccountOwner
dell'account. -
GetAccountHistory
- Questo metodo restituisce i dettagli della cronologia dell'account per un utente e un token specificati. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato o dall'AccountOwner
dell'account. -
GetAccountOnHoldBalance
- Questo metodo restituisce il saldo in sospeso corrente per un conto e un token specificati. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato, da unOrg Admin
dell'organizzazione specificata o dalAccountOwner
dell'account. -
GetAllAccounts
- Questo metodo restituisce un elenco di tutti i conti. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato. Questo metodo utilizza query rich SQL di Berkeley DB e può essere richiamato solo quando si è connessi alla rete remota di Oracle Blockchain Platform. -
GetUserByAccountId
- Questo metodo restituisce i dettagli utente (
org_id
euser_id
) per un account specificato. Questo metodo può essere chiamato da qualsiasi utente del codice concatenato. -
GetAccountBalance
- Questo metodo restituisce il saldo corrente per un conto e un token specificati. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato, da unOrg Admin
dell'organizzazione specificata o dalAccountOwner
dell'account. -
GetAllOrgAccounts
- Questo metodo restituisce un elenco di tutti i conti token appartenenti a un'organizzazione specificata. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato o da unOrg Admin
dell'organizzazione specificata.
Metodi per la gestione dei ruoli
-
AddRole
- Questo metodo aggiunge un ruolo a un utente e a un token specificati. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato o da unOrg Admin
dell'organizzazione specificata che dispone anche del ruolo specificato. -
RemoveRole
- Questo metodo rimuove un ruolo da un utente e un token specificati. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato o da unOrg Admin
dell'organizzazione specificata che dispone anche del ruolo specificato. -
GetAccountsByRole
- Questo metodo restituisce un elenco di tutti gli ID account per un ruolo e un token specificati. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato. -
GetAccountsByUser
- Questo metodo restituisce un elenco di tutti gli ID account per un ID organizzazione e un ID utente specificati. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato, da unOrg Admin
dell'organizzazione specificata o dalAccount Owner
specificato nei parametri. -
GetUsersByRole
- Questo metodo restituisce una lista di tutti gli utenti per un ruolo e un token specificati. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato o dalAccount Owner
specificato nei parametri. -
IsInRole
- Questo metodo restituisce un valore booleano per indicare se un utente e un token hanno un ruolo specificato. Questo metodo può essere richiamato solo dal
Token Admin
del codice concatenato, da unOrg Admin
dell'organizzazione specificata o dalAccountOwner
del conto. -
GetOrgUsersByRole
- Questo metodo restituisce informazioni su tutti gli utenti che hanno un ruolo specificato in un'organizzazione specificata. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato o da unOrg Admin
dell'organizzazione specificata. -
GetOrgAccountsByRole
- Questo metodo restituisce informazioni su tutti i conti con un ruolo specificato in un'organizzazione specificata. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato o da unOrg Admin
dell'organizzazione specificata.
Metodi per la gestione della cronologia delle transazioni
-
GetAccountTransactionHistory
- Questo metodo restituisce un array di dettagli della cronologia delle transazioni conto per un utente e un token specificati. Questo metodo può essere richiamato solo dal
Token Admin
del codice concatenato, da unOrg Admin
dell'organizzazione specificata o dalAccountOwner
del conto. -
GetAccountTransactionHistoryWithFilters
- Questo metodo restituisce un array di dettagli della cronologia delle transazioni conto per un utente e un token specificati. Questo metodo può essere richiamato solo dal
Token Admin
del codice concatenato, da unOrg Admin
dell'organizzazione specificata o dalAccountOwner
del conto. Questo metodo può essere richiamato solo quando è connesso alla rete remota di Oracle Blockchain Platform. -
GetSubTransactionsById
- Questo metodo restituisce un array di dettagli della cronologia delle transazioni secondarie per una transazione specificata.
-
GetSubTransactionsByIdWithFilters
- Questo metodo restituisce un array di dettagli della cronologia delle transazioni secondarie per una transazione specificata.
-
GetTransactionById
- Questo metodo restituisce la cronologia di un asset
Transaction
. -
DeleteHistoricalTransactions
- Questo metodo elimina le transazioni meno recenti dal database di stato.
Metodi per la gestione del comportamento dei token - Funzionamento minimo
-
IssueTokens
- Questo metodo coniuga i token, che sono quindi di proprietà del chiamante del metodo. Il chiamante deve avere un account e il ruolo di minter. Il numero di token che possono essere coniati è limitato dalla proprietà
max_mint_quantity
del comportamentomintable
nel file di specifica. Se la proprietàmax_mint_quantity
non viene specificata, è possibile creare un numero illimitato di token. La quantità deve essere compresa nei valori decimali specificati dal parametrodecimal
del comportamentodivisible
nel file di specifica. Questo metodo può essere chiamato solo dalAccountOwner
dell'account con il ruolo di minter. -
GetTotalMintedTokens
- Questo metodo restituisce il numero totale di token coniati per un token specificato. Questo metodo può essere chiamato solo da un
Token Admin
oOrg Admin
del codice concatenato. -
GetNetTokens
- Questo metodo restituisce il numero netto totale di token disponibili nel sistema per un token specificato. Il totale del token netto è la quantità di token rimanenti dopo la masterizzazione dei token. In forma di equazione token netti = totale token coniati - totale token bruciati. Se non vengono bruciati token, il numero di token netti è uguale al totale dei token coniati. Questo metodo può essere chiamato solo da un
Token Admin
oOrg Admin
del codice concatenato.
Metodi per la gestione del comportamento dei token - Funzionamento trasferibile
-
TransferTokens
- Questo metodo trasferisce i token dal chiamante a un account specificato. Il chiamante del metodo deve avere un account. La quantità deve essere compresa nei valori decimali specificati dal parametro
decimal
del comportamentodivisible
nel file di specifica. Questo metodo può essere chiamato solo dalAccountOwner
dell'account. -
BulkTransferTokens
- Questo metodo viene utilizzato per eseguire il trasferimento di massa dei token dall'account chiamante agli account specificati nell'oggetto
flow
. Le quantità devono essere comprese nei valori decimali specificati dal parametrodecimal
del comportamentodivisible
nel chiamante della specifica file.The di questo metodo devono avere un account già creato. Questo metodo può essere chiamato solo dalAccountOwner
dell'account.
Metodi per la gestione del comportamento dei token - Funzionamento bloccabile
-
HoldTokens
- Questo metodo crea un blocco per conto del proprietario dei token con l'account
to_account_id
. È specificato un conto notarile, che è responsabile del completamento o del rilascio del blocco. Quando viene creato il blocco, il saldo del token specificato dal responsabile pagamento viene bloccato. Impossibile trasferire un saldo bloccato finché il blocco non viene completato o rilasciato. Il chiamante di questo metodo deve avere un account già creato. Questo metodo può essere chiamato solo dalAccountOwner
dell'account. -
ExecuteHoldTokens
- Questo metodo completa un blocco su un token. Una quantità di token precedentemente detenuta da un proprietario di token viene trasferita a un ricevente. Se il valore
quantity
è inferiore al valore di blocco effettivo, l'importo rimanente sarà nuovamente disponibile per il proprietario originale dei token. Questo metodo può essere richiamato solo dall'IDAccountOwner
con il ruolonotary
. Il blocco può essere completato solo dal notaio. -
ReleaseHoldTokens
- Questo metodo rilascia un blocco sui token. Il trasferimento non è completato e tutti i token detenuti sono nuovamente disponibili per il proprietario originale. Questo metodo può essere richiamato dall'ID
Account Owner
con il ruolonotary
entro il limite di tempo specificato oppure dal responsabile pagamento, dal beneficiario o dal notaio dopo il limite di tempo specificato. -
GetOnHoldIds
- Questo metodo restituisce un elenco di tutti gli ID di blocco per un conto specificato. Questo metodo può essere richiamato dal
Token Admin
del codice concatenato, da unOrg Admin
dell'organizzazione specificata o dalAccount Owner
del conto. -
GetOnHoldDetailsWithOperationId
- Questo metodo restituisce i dettagli della transazione in sospeso per un ID operazione e un token specificati. Questo metodo può essere richiamato da chiunque.
-
GetOnHoldBalanceWithOperationId
- Questo metodo restituisce il saldo bloccato per un ID operazione e un token specificati. Questo metodo può essere richiamato da chiunque.
Metodi per la gestione del comportamento dei token - Funzionamento attivabile
-
BurnTokens
- Questo metodo disattiva o brucia i token dal conto del chiamante della transazione. Il chiamante di questo metodo deve avere un account e il ruolo di masterizzatore. La quantità deve essere compresa nei valori decimali specificati dal parametro
decimal
del comportamentodivisible
nel file di specifica. Questo metodo può essere chiamato dalAccount Owner
dell'account con il ruolo di masterizzatore.
Metodi personalizzati
È possibile utilizzare i metodi SDK token per scrivere metodi personalizzati per l'applicazione business.
Assicurarsi di tenere traccia del valore restituito quando si utilizzano i metodi SDK token. Inoltre, per evitare la doppia spesa, non combinare più funzioni asincrone che operano sulle stesse coppie chiave-valore nel database di stato. In alternativa, utilizzare il metodo BulkTransferTokens
per eseguire più trasferimenti in un unico metodo.
L'esempio riportato di seguito mostra come utilizzare i metodi SDK token nei metodi personalizzati. Quando viene chiamato il metodo BuyTicket
, trasferisce 20 token dal conto del chiamante al conto del venditore e restituisce il messaggio di transazione del trasferimento.
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
}
Metodi SDK token
- Gestione del controllo dell'accesso
- Gestione configurazione token
- Gestione degli account
- Gestione ruoli
- Gestione cronologia transazioni
- Gestione del comportamento dei token
Metodi per la gestione del controllo dell'accesso
Token Admin
, Org Admin
o AccountOwner
del token. È possibile utilizzare questa funzione per garantire che le operazioni vengano eseguite solo dagli utenti previsti. Qualsiasi accesso non autorizzato genera un errore. Per utilizzare la funzione di controllo dell'accesso, importare la classe Authorization
dal modulo ../lib/auth
.import { Authorization } from '../lib/auth';
-
AddAdmin
- Questo metodo aggiunge un utente come
Token Admin
del codice concatenato del token. -
RemoveAdmin
- Questo metodo rimuove un utente come
Token Admin
del codice concatenato del token. -
GetAllAdmins
- Questo metodo restituisce una lista di tutti gli utenti che sono
Token Admin
del codice concatenato del token. -
GetAllAdminUsers
- Questo metodo restituisce una lista di tutti gli utenti che sono
Token Admin
del codice concatenato del token. -
CheckAuthorization
- Utilizzare questo metodo per aggiungere il controllo dell'accesso al codice concatenato. Molti dei metodi token generati automaticamente utilizzano il controllo dell'accesso. Il mapping tra il ricevitore SDK e i metodi che dispongono del controllo dell'accesso viene descritto nel file
oChainUtil.go
. Per utilizzare il proprio controllo dell'accesso o per disabilitare il controllo dell'accesso, rimuovere il codice di controllo dell'accesso dai metodi e dai metodi personalizzati generati automaticamente dal controller.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
- Questo metodo restituisce il valore booleano
true
se il chiamante della funzione è un valoreToken Admin
. In caso contrario il metodo restituiscefalse
. -
AddOrgAdmin
- Questo metodo aggiunge un utente come
Org Admin
dell'organizzazione. -
RemoveOrgAdmin
- Questo metodo rimuove un utente come
Org Admin
di un'organizzazione. -
GetOrgAdmins
- Questo metodo restituisce un elenco di tutti gli utenti che sono un
Org Admin
di un'organizzazione.
Metodi per la gestione della configurazione dei token
-
GetTokenDecimals
- Questo metodo restituisce il numero di posizioni decimali disponibili per un token frazionario. Se il comportamento di
divisible
non viene specificato, il valore predefinito è 0. -
GetAllTokens
- Questo metodo restituisce tutti gli asset token salvati nel database di stato. Questo metodo utilizza query rich SQL di Berkeley DB e può essere richiamato solo quando si è connessi alla rete remota di Oracle Blockchain Platform.
-
GetTokensByName
- Questo metodo restituisce tutti gli asset token con il nome specificato. Questo metodo utilizza query rich SQL di Berkeley DB e può essere richiamato solo quando si è connessi alla rete remota di Oracle Blockchain Platform.
-
Get
- Questo metodo restituisce un oggetto token se è presente nel database di stato. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato del token. -
IsTokenType
- Questo metodo verifica se esiste un asset token per un ID token specificato.
-
Save
- Questo metodo crea un token e ne salva le proprietà nel database di stato.
-
Update
- Questo metodo aggiorna le proprietà del token. Dopo aver creato un asset token, è possibile aggiornare solo il valore
token_desc
e le relative proprietà personalizzate. -
GetByRange
- Questo metodo chiama internamente il metodo fabric
getStateByRange
. Anche se dal libro contabile viene restituito un cespite con l'ID specificato, questo metodo lo inserisce nel tipo di cespite chiamante. -
History
- Questo metodo restituisce la cronologia del token per l'ID token specificato.
Metodi per la gestione degli account
-
GenerateAccountId
- Questo metodo restituisce un ID account, che è un set alfanumerico di caratteri, preceduto da
oaccount~<token asset name>~
e seguito da un hash del nome utente o dell'ID e-mail (user_id
) del proprietario dell'istanza o dell'utente che ha eseguito il login all'istanza, dell'ID provider di servizi di appartenenza (org_id
) dell'utente nell'organizzazione di rete corrente e dell'ID token univoco (token_id
). -
CreateAccount
- Questo metodo crea un account per un utente e un token specificati. Ogni utente che ha token in qualsiasi momento deve avere un account. I conti tengono traccia del saldo, del saldo in sospeso e della cronologia delle transazioni di un utente. Un ID account è un set alfanumerico di caratteri, preceduto dal prefisso
oaccount~<token asset name>~
e seguito da un hash del nome utente o dell'ID di posta elettronica (user_id
) del proprietario dell'istanza o dell'utente che ha eseguito il login all'istanza, l'ID del provider di servizi di appartenenza (org_id
) dell'utente nell'organizzazione di rete corrente. Questo metodo può essere richiamato solo dalToken Admin
del codice concatenato. -
AssociateToken
- Questo metodo associa un token fungibile a un account. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato. -
GetAccountWithStatus
- Questo metodo restituisce i dettagli del conto per un conto specificato, incluso lo stato del conto.
-
GetAccount
- Questo metodo restituisce i dettagli del conto per un conto specificato.
-
GetAccountHistory
- Questo metodo restituisce un array dei dettagli della cronologia dell'account per un account specificato.
-
GetAccountOnHoldBalance
- Questo metodo restituisce il saldo in sospeso per un conto specificato.
-
GetAllAccounts
- Questo metodo restituisce un elenco di tutti i conti. Questo metodo utilizza query rich SQL di Berkeley DB e può essere richiamato solo quando si è connessi alla rete remota di Oracle Blockchain Platform.
-
GetUserByAccountId
- Questo metodo restituisce i dettagli utente per un account specificato.
-
GetAccountBalance
- Questo metodo restituisce il saldo del conto per un conto specificato.
-
GetAllOrgAccounts
- Questo metodo restituisce un elenco di tutti i conti token appartenenti a un'organizzazione specificata.
Metodi per la gestione dei ruoli
-
AddRoleMember
- Questo metodo aggiunge un ruolo a un utente e a un token specificati.
-
RemoveRoleMember
- Questo metodo rimuove un ruolo da un utente e un token specificati.
-
GetAccountsByRole
- Questo metodo restituisce un elenco di tutti gli account per un ruolo e un token specificati.
-
GetUsersByRole
- Questo metodo restituisce una lista di tutti gli utenti per un ruolo e un token specificati.
-
IsInRole
- Questo metodo indica se un utente e un token hanno un ruolo specificato.
-
RoleCheck
- Questo metodo verifica se l'ID account fornito è membro di un ruolo qualsiasi.
-
GetOrgUsersByRole
- Questo metodo restituisce informazioni su tutti gli utenti che hanno un ruolo specificato in un'organizzazione specificata.
-
GetOrgAccountsByRole
- Questo metodo restituisce informazioni su tutti i conti con un ruolo specificato in un'organizzazione specificata.
Metodi per la gestione della cronologia delle transazioni
-
GetAccountTransactionHistory
- Questo metodo restituisce un array dei dettagli della cronologia delle transazioni per un conto specificato.
-
GetAccountTransactionHistoryWithFilters
- Questo metodo restituisce un array dei dettagli della cronologia delle transazioni per una transazione specificata. Questo metodo può essere richiamato solo quando è connesso alla rete remota di Oracle Blockchain Platform.
-
GetSubTransactionsById
- Questo metodo restituisce un array dei dettagli della cronologia delle transazioni per una transazione specificata.
-
GetSubTransactionsByIdWithFilters
- Questo metodo restituisce un array dei dettagli della cronologia delle transazioni per una transazione specificata.
-
GetTransactionById
- Questo metodo restituisce la cronologia di un asset
Transaction
. -
DeleteHistoricalTransactions
- Questo metodo elimina le transazioni meno recenti dal database di stato.
Metodi per la gestione del comportamento dei token - Funzionamento minimo
-
Mint
- Questo metodo coniuga i token, che sono quindi di proprietà del chiamante del metodo. Il chiamante deve avere un account e il ruolo di minter. Il numero di token che possono essere coniati è limitato dalla proprietà
max_mint_quantity
del comportamentomintable
nel file di specifica. Se la proprietàmax_mint_quantity
non viene specificata, è possibile creare un numero illimitato di token. La quantità deve essere compresa nei valori decimali specificati dal parametrodecimal
del comportamentodivisible
nel file di specifica. Questo metodo può essere chiamato solo dalAccountOwner
dell'account con il ruolo di minter. -
GetTotalMintedTokens
- Questo metodo restituisce il numero totale di token coniati.
-
GetNetTokens
- Questo metodo restituisce la quantità netta di token disponibili nel sistema per un token specificato. I token netti sono la quantità di token rimanenti dopo la masterizzazione dei token. In forma di equazione: token netti = token totali coniati - token totali bruciati. Se non vengono bruciati token, il numero di token netti è uguale al totale dei token coniati.
-
GetMaxMintQuantity
- Questo metodo restituisce la quantità minima massima per un token. Se il comportamento
max_mint_quantity
non viene specificato, il valore predefinito è 0, che consente la coniatura di un numero qualsiasi di token.
Metodi per la gestione del comportamento dei token - Funzionamento trasferibile
-
Transfer
- Questo metodo trasferisce i token dal chiamante a un account specificato. Il chiamante del metodo deve avere un account. La quantità deve essere compresa nei valori decimali specificati dal parametro
decimal
del comportamentodivisible
nel file di specifica. Questo metodo può essere chiamato solo dalAccountOwner
dell'account. -
BulkTransfer
- Questo metodo viene utilizzato per eseguire il trasferimento di massa dei token dall'account chiamante agli account specificati nell'oggetto
flow
. Il chiamante di questo metodo deve avere un account già creato.
Metodi per la gestione del comportamento dei token - Funzionamento bloccabile
-
Hold
- Questo metodo crea un blocco per conto del proprietario dei token con l'account
to_account_id
. È specificato un conto notarile, che è responsabile del completamento o del rilascio del blocco. Quando viene creato il blocco, il saldo del token specificato dal responsabile pagamento viene bloccato. Impossibile trasferire un saldo bloccato finché il blocco non viene completato o rilasciato. Il chiamante di questo metodo deve avere un account già creato. -
ExecuteHold
- Questo metodo completa un blocco sui token, trasferendo al ricevente la quantità specificata di token precedentemente bloccati. Se il valore
quantity
è inferiore al valore di blocco effettivo, l'importo rimanente sarà nuovamente disponibile per il proprietario originale dei token. Questo metodo può essere richiamato solo dall'IDAccountOwner
con il ruolonotary
. -
ReleaseHold
- Questo metodo rilascia un blocco sui token. Il trasferimento non è completato e tutti i token detenuti sono nuovamente disponibili per il proprietario originale. Questo metodo può essere richiamato dall'ID
Account Owner
con il ruolonotary
entro il limite di tempo specificato oppure dal responsabile pagamento, dal beneficiario o dal notaio dopo il limite di tempo specificato. -
GetOnHoldIds
- Questo metodo restituisce un elenco di tutti gli ID di blocco per un utente e un token specificati.
-
GetOnHoldDetailsWithOperationID
- Questo metodo restituisce i dettagli della transazione in sospeso per un ID operazione e un token specificati.
-
GetOnHoldBalanceWithOperationID
- Questo metodo restituisce il saldo bloccato per un ID operazione e un token specificati.
Metodi per la gestione del comportamento dei token - Funzionamento attivabile
-
Burn
- Questo metodo disattiva o brucia i token dal conto del chiamante della transazione. Il chiamante di questo metodo deve avere un account e il ruolo di masterizzatore. La quantità deve essere compresa nei valori decimali specificati dal parametro
decimal
del comportamentodivisible
nel file di specifica.