Progetto NFT a ponte TypeScript per ERC-721
Blockchain App Builder prende l'input dal file di specifica NFT e genera un progetto di codice concatenato impalcato completamente funzionale.
Il progetto genera automaticamente classi e funzioni del ciclo di vita NFT, inclusi i metodi CRUD e non CRUD, nonché un SDK di tokenizzazione. 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 agli NFT, vedere Progetto Chaincode TypeScript in grassetto.
Modello
Ogni classe di modello tokenizzata estende la classe OchainModel
. La funzionalità di persistenza trasparente o ORM semplificato viene acquisita nella classe OchainModel
.
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('ART')
public symbol: string;
@ReadOnly('erc721+')
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;
@Validate(yup.string().max(2000))
public tokenUri: string;
@Embedded(ArtCollectionMetadata)
public metadata: ArtCollectionMetadata;
@Validate(yup.number())
public price: number;
@Validate(yup.boolean())
public on_sale_flag: boolean;
}
Controller
La classe controller principale estende la classe OchainController
. C'è un solo controller principale.
export class DigiCurrCCController extends OchainController{
È 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.
Metodi NFT generati automaticamente
Blockchain App Builder genera automaticamente metodi per supportare i cicli di vita NFT e NFT. È possibile utilizzare questi metodi per inizializzare NFT, gestire ruoli e account e completare altri task del ciclo di vita NFT senza alcuna codifica aggiuntiva. I metodi controller devono disporre di un decorator @Validator(...params)
per poter essere richiamati.
- 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
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 richiamato solo dalToken Admin
del codice concatenato.
Metodi per la gestione della configurazione dei token
-
init
- Questo metodo viene chiamato quando viene creata un'istanza del codice concatenato. Ogni
Token Admin
viene identificato dalle informazioniuserId
eorgId
nel parametroadminList
.userId
è il nome utente o l'ID di posta elettronica del proprietario dell'istanza o dell'utente che ha eseguito il login all'istanza.orgId
è l'ID del provider di servizi di appartenenza (MSP) dell'utente nell'organizzazione di rete corrente. Il parametroadminList
è obbligatorio la prima volta che si distribuisce il codice concatenato. Se si sta aggiornando il codice concatenato, passare una lista vuota ([]
). Qualsiasi altra informazione nel parametroadminList
viene ignorata durante gli aggiornamenti. -
getAllTokens
- Questo metodo restituisce tutti gli asset token salvati nel database di stato. 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. -
getAllTokensByUser
- Questo metodo restituisce tutti gli asset token di proprietà di un utente 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. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato o dal proprietario del conto. -
getTokenById
- Questo metodo restituisce un oggetto token se il token è presente nel database di stato. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato o dal proprietario del token. -
getTokenHistory
- Questo metodo restituisce la cronologia per un ID token specificato. Si tratta di un metodo asincrono. Questo metodo può essere richiamato solo quando è connesso alla rete remota di Oracle Blockchain Platform. Chiunque può chiamare questo metodo.
-
getTokenObject
- Questo è un metodo di utility che restituisce un'istanza del token per un ID token specificato. Questo metodo viene utilizzato da molti dei metodi generati automaticamente per recuperare gli oggetti token. È possibile richiamare questo metodo in base alle esigenze dai metodi personalizzati. Quando si crea un asset o una classe tokenizzata, aggiornare il caso di scambio con la classe
Token
corrispondente per restituire l'oggetto token corretto. Il comandoochain sync
in Blockchain App Builder crea automaticamente un caso di scambio quando un asset tokenizzato viene creato nel file di specifica. Questo metodo non dispone di alcun decorator del metodo@Validator()
, il che significa che questo metodo non è direttamente richiamabile e può essere richiamato solo da altri metodi. -
ownerOf
- Questo metodo restituisce l'ID account del proprietario dell'ID token specificato. Chiunque può chiamare questo metodo.
-
name
- Questo metodo restituisce il nome della classe di token. Chiunque può chiamare questo metodo.
-
symbol
- Questo metodo restituisce il simbolo della classe di token. Chiunque può chiamare questo metodo.
-
tokenURI
- Questo metodo restituisce l'URI di un token specificato. Chiunque può chiamare questo metodo.
-
totalSupply
- Questo metodo restituisce il numero totale di token coniati. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato. -
totalNetSupply
- Questo metodo restituisce il numero totale di token coniati meno il numero di token bruciati. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato.
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. Gli account tengono traccia del numero di operazioni NFT di cui dispone un utente. Per completare le operazioni relative ai token, gli utenti devono disporre di account nella rete. È possibile creare un solo conto NFT per utente.
Un ID account è un set alfanumerico di caratteri, preceduto da
oaccount~
e seguito da un hash SHA-256 dell'ID provider di servizi di appartenenza (orgId
) dell'utente nell'organizzazione di rete corrente, dal nome utente o dall'ID di posta elettronica (userId
) del proprietario dell'istanza o dell'utente che ha eseguito il login all'istanza e dalla stringa costantenft
. Questo metodo può essere richiamato solo dalToken Admin
del codice concatenato. -
balanceOf
- Questo metodo restituisce il numero totale di operazioni NFT detenute da un utente specificato. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato o dal proprietario del conto. -
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. -
getAccountByUser
- Questo metodo restituisce i dettagli dell'account per un utente specificato. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato o dall'Account Owner
dell'account. -
getUserByAccountId
- Questo metodo restituisce i dettagli utente di un account specificato. Questo metodo può essere chiamato da qualsiasi utente.
-
getAccountHistory
- Questo metodo restituisce la cronologia dell'account per un utente specificato. Si tratta di un metodo asincrono. Questo metodo può essere chiamato solo dal
Token Admin
del codice concatenato o dal proprietario del conto.
Metodi per la gestione dei ruoli
-
addRole
- Questo metodo aggiunge un ruolo a un utente specificato. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato. -
removeRole
- Questo metodo rimuove un ruolo da un utente specificato. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato. -
getAccountsByRole
- Questo metodo restituisce un elenco di tutti gli ID account per un ruolo specificato. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato. -
getUsersByRole
- Questo metodo restituisce un elenco di tutti gli utenti per un ruolo specificato. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato. -
isInRole
- Questo metodo restituisce un valore booleano per indicare se un utente dispone di un ruolo specificato. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato o dall'Account Owner
dell'account.
Metodi per la gestione della cronologia delle transazioni
-
getAccountTransactionHistory
- Questo metodo restituisce la cronologia delle transazioni conto per un utente specificato. Si tratta di un metodo asincrono. Questo metodo può essere chiamato solo dal
Token Admin
del codice concatenato o dal proprietario del conto. -
getAccountTransactionHistoryWithFilters
- Questo metodo restituisce la cronologia delle transazioni conto per un utente specificato, filtrata in base a
PageSize
,Bookmark
,startTime
eendTime
. Si tratta di un metodo asincrono. Questo metodo può essere richiamato solo quando è connesso alla rete remota di Oracle Blockchain Platform. Questo metodo può essere chiamato solo dalToken Admin
del codice concatenato o dal proprietario del conto. -
getTransactionById
- Questo metodo restituisce la cronologia delle transazioni per un ID transazione specificato. Si tratta di un metodo asincrono. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato o dal proprietario del conto. -
deleteHistoricalTransactions
- Questo metodo elimina le transazioni più vecchie di un indicatore orario specificato nel database di stato. Si tratta di un metodo asincrono. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato.
Metodi per la gestione del comportamento dei token - Funzionamento minimo
-
create<Token Name>Token
- Questo metodo crea (mint) un NFT. L'asset e le proprietà associate vengono salvati nel database di stato. Il chiamante di questa transazione deve disporre di un account token. Il chiamante di questa transazione diventa il proprietario dell'NFT. Se il file di specifica del token include la sezione
roles
perbehaviors
e la proprietàminter_role_name
perroles
, il chiamante della transazione deve disporre del ruolo secondario. In caso contrario, qualsiasi chiamante può coniare NFT. -
update<Token Name>Token
- Questo metodo aggiorna le proprietà del token. Questo metodo può essere chiamato solo dall'utente che è il proprietario o il creatore del token. Dopo la creazione di un asset token, solo il proprietario del token può aggiornare le proprietà personalizzate del token. Se l'utente è sia proprietario che creatore di un token, può anche aggiornare la proprietà
TokenDesc
. Impossibile aggiornare i metadati del token. È necessario passare tutte le proprietà del token a questo metodo, anche se si desidera aggiornare solo determinate proprietà.
Metodi per la gestione del comportamento dei token - Funzionamento trasferibile
-
safeTransferFrom
- Questa è una funzione asincrona. Questo metodo trasferisce la proprietà dell'NFT specificato dal chiamante a un altro conto. Questo metodo include le seguenti convalide:
- Il token esiste e non viene masterizzato.
- L'account mittente e l'account ricevente esistono e non sono lo stesso account.
- L'account mittente è proprietario del token.
- Il chiamante della funzione è il mittente.
-
transferFrom
- Questa è una funzione asincrona. Questo metodo trasferisce la proprietà dell'operazione NFT specificata da un conto mittente a un conto ricevente. È responsabilità del chiamante passare i parametri corretti. Questo metodo può essere richiamato da qualsiasi utente, non solo dal proprietario del token. Questo metodo include le seguenti convalide:
- Il token esiste e non viene masterizzato.
- L'account mittente e l'account ricevente esistono e non sono lo stesso account.
- L'account mittente è proprietario del token.
Metodi per la gestione del comportamento dei token - Funzionamento attivabile
-
burn
- Questo metodo disattiva o brucia l'NFT specificato dall'account del chiamante. Il chiamante di questo metodo deve avere un account. Impossibile masterizzare un token a meno che il file di specifica del token non includa il comportamento
burnable
. Se nella sezioneroles
del file di specifica non viene specificata alcuna proprietàburner_role_name
, il proprietario del token può masterizzare il token. Se nella sezioneroles
è specificata una proprietàburner_role_name
, l'utente ha assegnato il ruolo di masterizzatore che è anche il creatore o il proprietario del token può masterizzare il token. -
burnNFT
- Questo metodo disattiva o masterizza l'NFT specificato dall'account del chiamante e restituisce un oggetto token e una cronologia token. Il chiamante di questo metodo deve avere un account. Impossibile masterizzare un token a meno che il file di specifica del token non includa il comportamento
burnable
. Se nella sezioneroles
del file di specifica non viene specificata alcuna proprietàburner_role_name
, il proprietario del token può masterizzare il token. Se nella sezioneroles
è specificata una proprietàburner_role_name
, l'utente ha assegnato il ruolo di masterizzatore che è anche il creatore o il proprietario del token può masterizzare il token.
Metodi personalizzati
È possibile utilizzare i metodi SDK token per scrivere metodi personalizzati per l'applicazione business.
L'esempio riportato di seguito mostra come utilizzare i metodi SDK token nei metodi personalizzati. Quando viene chiamato il metodo sell
, pubblica un token in vendita per un prezzo specificato.
@Validator(yup.string(), yup.number())
public async sell(token_id: string, selling_price: number) {
try {
const token = await this.Ctx.ERC721Token.get(token_id);
const t = new ArtCollection(token)
/** * price is a custom asset
attribute to set the price of a non-fungible token in the
marketplace */
t.price = selling_price;
/** * on_sale_flag is a
custom asset attribute that maintains non-fungible token selling status in the
marketplace */
t.on_sale_flag = true;
await this.Ctx.ERC721Token.updateToken(t);
let msg = `Token ID : '${token_id}' has been posted for selling in the marketplace'`;
return {msg}
} catch(error) {
throw new Error(error.message);
}
}
Metodi SDK NFT
- 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
o Account Owner
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/erc721-auth
.import { ERC721Authorization } from '../lib/erc721-auth';
-
checkAuthorization
- Utilizzare questo metodo per aggiungere un controllo dell'accesso a un'operazione. Questa è una funzione asincrona. La maggior parte dei metodi generati automaticamente includono il controllo dell'accesso. Alcuni metodi token possono essere eseguiti solo da
ERC721Admin
oAccount Owner
del token o daMultipleAccountOwner
per gli utenti con più account. Il metodocheckAuthorization
fa parte della classeAuthorization
, alla quale si accede tramite l'oggettoCtx
. Il mapping del controllo dell'accesso è descritto nel file../lib/constant.ts
, come illustrato nel testo seguente. È possibile modificare il controllo dell'accesso modificando il file../lib/constant.ts
. 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.export const TOKENACCESS = { ADMIN: { isUserTokenAdmin: ['Admin', 'MultipleAccountOwner'], 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'], }, ROLE: { getAccountsByRole: ['Admin'], getUsersByRole: ['Admin'], }, TRANSACTION: { deleteTransactions: ['Admin'], }, ACCOUNT: { createAccount: ['Admin'], getAllAccounts: ['Admin'], getAccountsByUser: ['Admin', 'MultipleAccountOwner'], getAccount: ['Admin', 'AccountOwner'], history: ['Admin', 'AccountOwner'], getAccountTransactionHistory: ['Admin', 'AccountOwner'], getAccountBalance: ['Admin', 'AccountOwner'], getAccountOnHoldBalance: ['Admin', 'AccountOwner'], getOnHoldIds: ['Admin', 'AccountOwner'], }, 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'], getAccountsByUser: ['Admin', 'MultipleAccountOwner'], history: ['Admin', 'AccountOwner'], getAccountTransactionHistory: ['Admin', 'AccountOwner'], getAccountTransactionHistoryWithFilters: ['Admin', 'AccountOwner'], balanceOf: ['Admin', 'MultipleAccountOwner'], } }
-
isUserTokenAdmin
- Questo metodo restituisce il valore booleano
true
se il chiamante della funzione è un valoreToken Admin
. In caso contrario il metodo restituiscefalse
. Si tratta di una funzione statica asincrona. -
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 un elenco di tutti gli utenti
Token Admin
.
Metodi per la gestione della configurazione dei token
I metodi di gestione della configurazione dei token si basano sullo standard ERC-721. Per utilizzare i metodi di gestione della configurazione dei token, importare la classe Token
dal modulo ../lib/erc721-token
.
-
totalSupply
- Questo metodo restituisce il numero totale di operazioni NFT coniate. Questa è una funzione asincrona.
-
get
- Questo metodo restituisce l'oggetto token specificato se è presente nel database di stato. Si tratta di una funzione statica asincrona.
-
isTokenType
- Questo metodo indica se esiste un asset token con l'ID specificato. Si tratta di una funzione statica asincrona.
-
createToken
- Questo metodo crea un token e ne salva le proprietà nel database di stato. Questo metodo può essere richiamato solo dagli utenti con il ruolo di minter. Questa è una funzione asincrona.
-
updateToken
- Questo metodo aggiorna le proprietà del token. Questo metodo può essere chiamato solo dal proprietario o dal creatore del token. Dopo la creazione di un asset token, solo il proprietario del token può aggiornare le proprietà personalizzate del token. Se l'utente è sia proprietario che creatore di un token, può anche aggiornare la proprietà
TokenDesc
. Impossibile aggiornare i metadati del token. È necessario passare tutte le proprietà del token a questo metodo, anche se si desidera aggiornare solo determinate proprietà. Questa è una funzione asincrona. -
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. Si tratta di una funzione statica asincrona.@validator(yup.string(), yup.string()) public async getDigiCurrGetByRange(startId: string, endId: string) { return await this.Ctx.ERC721TOken.getByRange(startId, endId, PaintingNft); }
-
history
- Questo metodo restituisce la cronologia per il token specificato. Si tratta di una funzione statica asincrona.
-
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. Si tratta di una funzione statica asincrona.
-
getAllTokensByUser
- Questo metodo restituisce tutti i token di proprietà di un ID account specificato. Si tratta di una funzione statica asincrona.
-
ownerOf
- Questo metodo restituisce l'ID account del proprietario di un token specificato. Si tratta di una funzione statica asincrona.
-
tokenUri
- Questo metodo restituisce l'URI per un token specificato. Si tratta di una funzione statica asincrona.
-
getTokenUri
- Questo metodo restituisce l'URI per un token specificato. Si tratta di una funzione statica asincrona.
-
symbol
- Questo metodo restituisce il simbolo della classe di token.
Metodi per la gestione degli account
-
generateAccountId
- Questo metodo restituisce un ID account, formato dalla concatenazione dell'ID provider di servizi di appartenenza (
orgId
) e del nome utente o dell'ID e-mail (userId
), quindi dalla creazione di un hash SHA-256. -
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. Gli account tengono traccia del numero di operazioni NFT di cui dispone un utente. Per completare le operazioni relative ai token, gli utenti devono disporre di account nella rete. È possibile creare un solo conto NFT per utente.
Un ID account è un set alfanumerico di caratteri, preceduto da
oaccount~
e seguito da un hash SHA-256 dell'ID provider di servizi di appartenenza (orgId
) dell'utente nell'organizzazione di rete corrente, dal nome utente o dall'ID di posta elettronica (userId
) del proprietario dell'istanza o dell'utente che ha eseguito il login all'istanza e dalla stringa costantenft
. Questo metodo può essere richiamato solo dalToken Admin
del codice concatenato. -
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.
-
history
- Questo metodo restituisce un array dei dettagli della cronologia dell'account per un account specificato.
-
getUserByAccountId
- Questo metodo restituisce i dettagli utente per un account specificato.
-
getAccountWithStatusByUser
- Questo metodo restituisce i dettagli utente per un account specificato, incluso lo stato dell'account. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato o dall'Account Owner
dell'account. -
getAccountByUser
- Questo metodo restituisce i dettagli utente per un account specificato. Questo metodo può essere richiamato solo da un
Token Admin
del codice concatenato o dall'Account Owner
dell'account. -
balanceOf
- Questo metodo restituisce il numero totale di operazioni NFT bloccate dall'utente specificato.
Metodi per la gestione dei ruoli
-
addRoleMember
- Questo metodo aggiunge un ruolo a un utente e a un token specificati. Un ID account viene formato mediante la creazione di un hash SHA-256 dell'ID provider di servizi di appartenenza concatenato (
orgId
) e del nome utente o dell'ID e-mail (userId
). Questa è una funzione asincrona. -
removeRoleMember
- Questo metodo rimuove un ruolo da un utente e un token specificati. Un ID account viene formato mediante la creazione di un hash SHA-256 dell'ID provider di servizi di appartenenza concatenato (
orgId
) e del nome utente o dell'ID e-mail (userId
). Questa è una funzione asincrona. -
isInRole
- Questo metodo restituisce un valore booleano per indicare se un utente e un token hanno un ruolo specificato. Un ID account viene formato mediante la creazione di un hash SHA-256 dell'ID provider di servizi di appartenenza concatenato (
orgId
) e del nome utente o dell'ID e-mail (userId
). Questa è una funzione asincrona. -
getAccountsByRole
- Questo metodo restituisce un elenco di tutti gli ID account per un ruolo specificato.
-
getUsersByRole
- Questo metodo restituisce un elenco di tutti gli utenti per un ruolo specificato.
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 la cronologia delle transazioni conto per un utente specificato, filtrata in base a
PageSize
,Bookmark
,startTime
eendTime
. Questo metodo può essere richiamato solo quando è connesso alla rete remota di Oracle Blockchain Platform. -
getTransactionById
- Questo metodo restituisce la cronologia di un asset
Transaction
. -
deleteHistoricalTransactions
- Questo metodo elimina dal database di stato le transazioni che risalgono a una data precedente a quella specificata.
Gestione del comportamento dei token - Comportamento minimo
-
getMaxMintQuantity
- Questo metodo restituisce la quantità minima massima di un token. Se il funzionamento di
max_mint_quantity
non è configurato nel file di specifica, il valore predefinito è 0 e è possibile creare un numero infinito di token. -
getTotalMintedTokens
- Questo metodo restituisce il numero totale di token coniati disponibili nel sistema per il token specificato. Il numero netto di token disponibili è il numero totale di token coniati meno il numero di token bruciati. Questa è una funzione asincrona.
Gestione del comportamento dei token - Funzionamento trasferibile
-
safeTransferFrom
- Questa è una funzione asincrona. Questo metodo trasferisce la proprietà dell'NFT specificato dal chiamante a un altro conto. Questo metodo include le seguenti convalide:
- Il token esiste e non viene masterizzato.
- L'account mittente e l'account ricevente esistono e non sono lo stesso account.
- L'account mittente è proprietario del token.
- Il chiamante della funzione è il mittente.
-
transferFrom
- Questa è una funzione asincrona. Questo metodo trasferisce la proprietà dell'operazione NFT specificata da un conto mittente a un conto ricevente. È responsabilità del chiamante passare i parametri corretti. Questo metodo può essere richiamato da qualsiasi utente, non solo dal proprietario del token. Questo metodo include le seguenti convalide:
- Il token esiste e non viene masterizzato.
- L'account mittente e l'account ricevente esistono e non sono lo stesso account.
- L'account mittente è proprietario del token.
Gestione del comportamento dei token - Comportamento utilizzabile
-
burn
- Questo metodo disattiva o brucia l'NFT specificato dall'account del chiamante. Il chiamante di questo metodo deve avere un account. Impossibile masterizzare un token a meno che il file di specifica del token non includa il comportamento
burnable
. Se nella sezioneroles
del file di specifica non viene specificata alcuna proprietàburner_role_name
, il proprietario del token può masterizzare il token. Se nella sezioneroles
è specificata una proprietàburner_role_name
, l'utente ha assegnato il ruolo di masterizzatore che è anche il creatore (minter) del token può masterizzare il token. Questa è una funzione asincrona.