Impalcato TypeScript Progetto NFT per ERC-721
Blockchain App Builder prende l'input dal tuo 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 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 scaffolded e sui metodi non direttamente correlati a NFT, vedere Progetto Chaincode TypeScript scaffolded.
Modello
Ogni classe di modello tokenizzato 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 del controller principale estende la classe OchainController
. C'è solo un controller principale.
export class DigiCurrCCController extends OchainController{
È possibile creare un numero qualsiasi di classi, funzioni o file, ma solo i metodi definiti nella classe controller principale sono richiamabili. 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 NFT e cicli di vita NFT. È possibile utilizzare questi metodi per inizializzare NFT, gestire ruoli e account e completare altre attività del ciclo di vita NFT senza alcuna codifica aggiuntiva. I metodi del controller devono avere un decoratore @Validator(...params)
da richiamare.
- Gestione del controllo dell'accesso
- Gestione configurazione token
- Gestione account
- Gestione ruoli
- Gestione cronologia transazioni
- Gestione comportamento token
Metodi per la gestione del controllo degli accessi
-
addTokenAdmin
- Questo metodo aggiunge un utente come
Token Admin
del codice concatenato. Questo metodo può essere chiamato solo da unToken Admin
del codice concatenato. -
removeTokenAdmin
- Questo metodo rimuove un utente come
Token Admin
del codice concatenato. Questo metodo può essere chiamato solo da unToken Admin
del codice concatenato. -
isTokenAdmin
- Questo metodo restituisce il valore booleano
true
se il chiamante della funzione èToken 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 chiamato solo dalToken Admin
del codice concatenato.
Metodi per la gestione della configurazione token
-
init
- Questo metodo viene richiamato quando viene creata un'istanza del codice concatenato. Ogni
Token Admin
è identificato dalle informazioniuserId
eorgId
nel parametroadminList
.userId
è il nome utente o l'ID e-mail del proprietario dell'istanza o dell'utente che ha eseguito il login all'istanza.orgId
è l'ID MSP (Membership Service Provider) dell'utente nell'organizzazione di rete corrente. Il parametroadminList
è obbligatorio alla prima distribuzione del codice concatenato. Se si sta aggiornando il codice concatenato, passare un elenco vuoto ([]
). 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 chiamato solo da un
Token Admin
del codice concatenato. Questo metodo utilizza query avanzate SQL DB Berkeley 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 avanzate SQL DB Berkeley 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 dell'account. -
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. Questo è un metodo asincrono. Questo metodo può essere chiamato solo quando si è connessi 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 chiamare questo metodo in base alle esigenze dai metodi personalizzati. Quando si crea un asset o una classe tokenizzata, aggiornare lo switch case con la classe
Token
corrispondente per restituire l'oggetto token corretto. Il comandoochain sync
in Blockchain App Builder crea automaticamente uno switch case quando un asset tokenizzato viene creato nel file di specifica. Questo metodo non ha decoratore del metodo@Validator()
, il che significa che questo metodo non è direttamente richiamabile e può essere chiamato 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 token. Chiunque può chiamare questo metodo.
-
symbol
- Questo metodo restituisce il simbolo della classe 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 chiamato 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 chiamato 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 NFT di cui dispone un utente. Gli utenti devono disporre di account nella rete per completare le operazioni correlate al token. È possibile creare un solo account 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, il nome utente o l'ID e-mail (userId
) del proprietario dell'istanza o dell'utente che ha eseguito il login all'istanza e la stringa costantenft
. Questo metodo può essere chiamato solo dalToken Admin
del codice concatenato. -
balanceOf
- Questo metodo restituisce il numero totale di NFT detenuti da un utente specificato. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato o dal proprietario dell'account. -
getAllAccounts
- Questo metodo restituisce un elenco di tutti i conti. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato. Questo metodo utilizza query avanzate SQL DB Berkeley e può essere richiamato solo quando si è connessi alla rete remota di Oracle Blockchain Platform. -
getAccountByUser
- Questo metodo restituisce i dettagli del conto per un utente specificato. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato o dalAccount 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 del conto per un utente specificato. Questo è un metodo asincrono. Questo metodo può essere chiamato solo dal
Token Admin
del codice concatenato o dal proprietario dell'account.
Metodi per gestione ruoli
-
addRole
- Questo metodo aggiunge un ruolo a un utente specificato. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato. -
removeRole
- Questo metodo rimuove un ruolo da un utente specificato. Questo metodo può essere chiamato 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 chiamato 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 chiamato 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 chiamato solo da un
Token Admin
del codice concatenato o dalAccount Owner
dell'account.
Metodi per gestione cronologia transazioni
-
getAccountTransactionHistory
- Questo metodo restituisce la cronologia delle transazioni del conto per un utente specificato. Questo è un metodo asincrono. Questo metodo può essere chiamato solo dal
Token Admin
del codice concatenato o dal proprietario dell'account. -
getAccountTransactionHistoryWithFilters
- Questo metodo restituisce la cronologia delle transazioni del conto per un utente specificato, filtrata in base a
PageSize
,Bookmark
,startTime
eendTime
. Questo è un metodo asincrono. Questo metodo può essere chiamato solo quando si è connessi alla rete remota di Oracle Blockchain Platform. Questo metodo può essere chiamato solo dalToken Admin
del codice concatenato o dal proprietario dell'account. -
getTransactionById
- Questo metodo restituisce la cronologia delle transazioni per un ID transazione specificato. Questo è un metodo asincrono. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato o dal proprietario dell'account. -
deleteHistoricalTransactions
- Questo metodo elimina le transazioni precedenti a un indicatore orario specificato nel database di stato. Questo è un metodo asincrono. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato.
Metodi per la gestione del comportamento dei token - Comportamento minimo
-
create<Token Name>Token
- Questo metodo crea (mints) un NFT. L'asset e le proprietà associate vengono salvate nel database di stato. Il chiamante di questa transazione deve avere un account token. Il chiamante di questa transazione diventa il proprietario di 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 avere il ruolo minore. Altrimenti, 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 del token 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 - comportamento trasferibile
-
safeTransferFrom
- Questa è una funzione asincrona. Questo metodo trasferisce la proprietà dell'NFT specificato dal chiamante a un altro conto. Questo metodo include le convalide riportate di seguito.
- Il token esiste e non viene masterizzato.
- Il conto mittente e il conto ricevente esistono e non sono lo stesso conto.
- L'account mittente è proprietario del token.
- Il chiamante della funzione è il mittente.
-
transferFrom
- Questa è una funzione asincrona. Questo metodo trasferisce la proprietà dell'NFT specificato 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 convalide riportate di seguito.
- Il token esiste e non viene masterizzato.
- Il conto mittente e il conto ricevente esistono e non sono lo stesso conto.
- L'account mittente è proprietario del token.
Metodi per la gestione del comportamento dei token - comportamento masterizzabile
-
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 non viene specificata alcuna proprietàburner_role_name
nella sezioneroles
del file di specifica, 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 minore (creatore) o il proprietario del token in grado di masterizzare il token. -
burnNFT
- Questo metodo disattiva o masterizza l'NFT specificato dall'account del chiamante e restituisce un oggetto token e la cronologia dei 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 non viene specificata alcuna proprietàburner_role_name
nella sezioneroles
del file di specifica, 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 minore (creatore) o il proprietario del token in grado di masterizzare il token.
Metodi personalizzati
È possibile utilizzare i metodi SDK token per scrivere metodi personalizzati per l'applicazione business.
L'esempio seguente mostra come utilizzare i metodi SDK token nei metodi personalizzati. Quando viene chiamato il metodo sell
, viene pubblicato un token per la vendita a 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 account
- Gestione ruoli
- Gestione cronologia transazioni
- Gestione comportamento token
Metodi per la gestione del controllo degli accessi
Token Admin
o Account Owner
del token. È possibile utilizzare questa funzione per garantire che le operazioni vengano eseguite solo dagli utenti destinatari. Qualsiasi accesso non autorizzato comporta 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';
-
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. -
isUserTokenAdmin
- Questo metodo restituisce il valore booleano
true
se il chiamante della funzione è un valoreToken Admin
. Altrimenti, il metodo restituiscefalse
. Questa è una funzione statica asincrona. -
getAllAdmins
- Questo metodo restituisce un elenco di tutti gli utenti
Token Admin
. -
checkAuthorization
- Utilizzare questo metodo per aggiungere un controllo di accesso a un'operazione. Questa è una funzione asincrona. La maggior parte dei metodi generati automaticamente include il controllo dell'accesso. Alcuni metodi di 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
, a cui si accede tramite l'oggettoCtx
. Il mapping del controllo dell'accesso è descritto nel file../lib/constant.ts
, come mostrato nel testo seguente. È possibile modificare il controllo dell'accesso modificando il file../lib/constant.ts
. Per utilizzare il proprio controllo dell'accesso o disabilitare il controllo dell'accesso, rimuovere il codice di controllo dell'accesso dai metodi del controller generati automaticamente e dai metodi personalizzati.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'], } }
Metodi per la gestione della configurazione 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
.
-
createToken
- Questo metodo crea un token e ne salva le proprietà nel database di stato. Questo metodo può essere chiamato solo dagli utenti con il ruolo minore. Questa è una funzione asincrona.
-
getAllTokens
- Questo metodo restituisce tutti gli asset token salvati nel database di stato. Questo metodo utilizza query avanzate SQL DB Berkeley e può essere richiamato solo quando si è connessi alla rete remota di Oracle Blockchain Platform. Questa è una funzione statica asincrona.
-
getAllTokensByUser
- Questo metodo restituisce tutti i token di proprietà di un ID account specificato. Questa è una funzione statica asincrona.
-
getTokenUri
- Questo metodo restituisce l'URI per un token specificato. Questa è una funzione statica asincrona.
-
history
- Questo metodo restituisce la cronologia per il token specificato. Questa è una funzione statica asincrona.
-
get
- Questo metodo restituisce l'oggetto token specificato se è presente nel database di stato. Questa è una funzione statica asincrona.
-
ownerOf
- Questo metodo restituisce l'ID account del proprietario di un token specificato. Questa è una funzione statica asincrona.
-
symbol
- Questo metodo restituisce il simbolo della classe token.
-
tokenUri
- Questo metodo restituisce l'URI per un token specificato. Questa è una funzione statica asincrona.
-
totalSupply
- Questo metodo restituisce il numero totale di NFT coniati. 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 del token 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 qualsiasi cespite con l'ID specificato viene restituito dal libro contabile, questo metodo inserisce il cespite nel tipo di cespite chiamante. Questa è 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); }
-
isTokenType
- Questo metodo indica se esiste un asset token con l'ID specificato. Questa è una funzione statica asincrona.
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 NFT di cui dispone un utente. Gli utenti devono disporre di account nella rete per completare le operazioni correlate al token. È possibile creare un solo account 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, il nome utente o l'ID e-mail (userId
) del proprietario dell'istanza o dell'utente che ha eseguito il login all'istanza e la stringa costantenft
. Questo metodo può essere chiamato solo dalToken Admin
del codice concatenato. -
balanceOf
- Questo metodo restituisce il numero totale di NFT bloccati dall'utente specificato.
-
getAllAccounts
- Questo metodo restituisce un elenco di tutti i conti. Questo metodo utilizza query avanzate SQL DB Berkeley e può essere richiamato solo quando si è connessi alla rete remota di Oracle Blockchain Platform.
-
getAccountByUser
- Questo metodo restituisce i dettagli utente per un account specificato. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato o dalAccount Owner
dell'account. -
getUserByAccountId
- Questo metodo restituisce i dettagli utente per un account specificato.
-
history
- Questo metodo restituisce un array dei dettagli della cronologia account per un account specificato.
-
getAccountWithStatusByUser
- Questo metodo restituisce i dettagli utente per un account specificato, incluso lo stato dell'account. Questo metodo può essere chiamato solo da un
Token Admin
del codice concatenato o dalAccount Owner
dell'account.
Metodi per gestione ruoli
-
addRoleMember
- Questo metodo aggiunge un ruolo a un utente e a un token specificati. Un ID account è formato dalla 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 da un token specificati. Un ID account è formato dalla 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.
-
isInRole
- Questo metodo restituisce un valore booleano per indicare se un utente e un token hanno un ruolo specificato. Un ID account è formato dalla 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.
Metodi per gestione cronologia 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 del conto per un utente specificato, filtrata in base a
PageSize
,Bookmark
,startTime
eendTime
. Questo metodo può essere chiamato solo quando si è connessi alla rete remota di Oracle Blockchain Platform. -
getTransactionById
- Questo metodo restituisce la cronologia di un asset
Transaction
. -
deleteHistoricalTransactions
- Questo metodo elimina le transazioni che risalgono a una data precedente a quella specificata dal database di stato.
Gestione comportamento token - comportamento di importanza minore
-
getMaxMintQuantity
- Questo metodo restituisce la quantità massima estraibile di un token. Se il funzionamento di
max_mint_quantity
non è configurato nel file di specifica, il valore predefinito è 0 e è possibile coniare 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 comportamento token - comportamento trasferibile
-
safeTransferFrom
- Questa è una funzione asincrona. Questo metodo trasferisce la proprietà dell'NFT specificato dal chiamante a un altro conto. Questo metodo include le convalide riportate di seguito.
- Il token esiste e non viene masterizzato.
- Il conto mittente e il conto ricevente esistono e non sono lo stesso conto.
- L'account mittente è proprietario del token.
- Il chiamante della funzione è il mittente.
-
transferFrom
- Questa è una funzione asincrona. Questo metodo trasferisce la proprietà dell'NFT specificato 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 convalide riportate di seguito.
- Il token esiste e non viene masterizzato.
- Il conto mittente e il conto ricevente esistono e non sono lo stesso conto.
- L'account mittente è proprietario del token.
Gestione comportamento token - comportamento masterizzabile
-
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 non viene specificata alcuna proprietàburner_role_name
nella sezioneroles
del file di specifica, 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 più piccolo (creatore) del token in grado di masterizzare il token. Questa è una funzione asincrona.