Gerüstete TypeScript NFT Projekt für ERC-721
Blockchain App Builder übernimmt die Eingabe aus Ihrer NFT-Spezifikationsdatei und generiert ein voll funktionsfähiges gerüstetes Chaincode-Projekt.
Das Projekt generiert automatisch NFT-Lebenszyklusklassen und -funktionen, einschließlich CRUD- und Nicht-CRUD-Methoden sowie ein Tokenisierungs-SDK. Validierung von Argumenten, Marshalling/Unmarshalling und transparente Persistenzfähigkeit werden automatisch unterstützt.
Informationen zum gerüsteten Projekt und zu Methoden, die nicht direkt mit NFTs in Zusammenhang stehen, finden Sie unter Scaffolded TypeScript Chaincode Project.
Modell
Jede tokenisierte Modellklasse erweitert die Klasse OchainModel
. Transparent Persistence Capability (transparente Persistenzfunktion) oder vereinfachtes ORM wird in der Klasse OchainModel
erfasst.
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
Die Hauptcontrollerklasse erweitert die Klasse OchainController
. Es gibt nur einen Hauptcontroller.
export class DigiCurrCCController extends OchainController{
Sie können eine beliebige Anzahl von Klassen, Funktionen oder Dateien erstellen, aber nur die Methoden, die in der Hauptcontrollerklasse definiert sind, können aufgerufen werden. Die anderen Methoden sind versteckt.
Mit den Token-SDK-Methoden können Sie benutzerdefinierte Methoden für Ihre Geschäftsanwendung schreiben.
Automatisch generierte NFT-Methoden
Blockchain App Builder generiert automatisch Methoden zur Unterstützung von NFTs und NFT-Lebenszyklen. Mit diesen Methoden können Sie NFTs initialisieren, Rollen und Konten verwalten und andere NFT-Lebenszyklusaufgaben ohne zusätzliche Codierung ausführen. Controller-Methoden müssen über einen @Validator(...params)
-Dekorator verfügen, damit sie aufgerufen werden können.
- Access Control Management
- Tokenkonfigurationsverwaltung
- Accountverwaltung
- Rollenverwaltung
- Verwaltung der Transaktionshistorie
- Tokenverhaltensverwaltung
Methoden für Access Control Management
-
addTokenAdmin
- Mit dieser Methode wird ein Benutzer als
Token Admin
des Chaincodes hinzugefügt. Diese Methode kann nur von einemToken Admin
des Chaincodes aufgerufen werden. -
removeTokenAdmin
- Mit dieser Methode wird ein Benutzer als
Token Admin
des Chaincodes entfernt. Diese Methode kann nur von einemToken Admin
des Chaincodes aufgerufen werden. -
isTokenAdmin
- Diese Methode gibt den booleschen Wert
true
zurück, wenn der Aufrufer der Funktion einToken Admin
ist. Andernfalls wirdfalse
zurückgegeben. EineToken Admin
kann diese Funktion bei jedem anderen Benutzer im Blockchain-Netzwerk aufrufen. Andere Benutzer können diese Methode nur für ihre eigenen Konten aufrufen. -
getAllTokenAdmins
- Diese Methode gibt eine Liste aller Benutzer zurück, die ein
Token Admin
des Chaincodes sind. Diese Methode kann nur vomToken Admin
des Chaincodes aufgerufen werden.
Methoden für die Verwaltung der Tokenkonfiguration
-
init
- Diese Methode wird aufgerufen, wenn der Chaincode instanziiert wird. Jede
Token Admin
wird durch die InformationenuserId
undorgId
im ParameteradminList
identifiziert.userId
ist der Benutzername oder die E-Mail-ID des Instanzeigentümers oder des Benutzers, der bei der Instanz angemeldet ist.orgId
ist die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Netzwerkorganisation. Der ParameteradminList
ist erforderlich, wenn Sie den Chaincode zum ersten Mal bereitstellen. Wenn Sie ein Upgrade des Chaincodes durchführen, übergeben Sie eine leere Liste ([]
). Alle anderen Informationen im ParameteradminList
werden bei Upgrades ignoriert. -
getAllTokens
- Diese Methode gibt alle Tokenassets zurück, die in der Statusdatenbank gespeichert sind. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. Diese Methode verwendet SQL-Rich-Abfragen von Berkeley DB und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Netzwerk von Oracle Blockchain Platform besteht. -
getAllTokensByUser
- Diese Methode gibt alle Tokenassets zurück, deren Eigentümer ein angegebener Benutzer ist. Diese Methode verwendet SQL-Rich-Abfragen von Berkeley DB und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Netzwerk von Oracle Blockchain Platform besteht. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder vom Accounteigentümer aufgerufen werden. -
getTokenById
- Diese Methode gibt ein Tokenobjekt zurück, wenn das Token in der Statusdatenbank vorhanden ist. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder des Tokeneigentümers aufgerufen werden. -
getTokenHistory
- Diese Methode gibt die Historie für eine angegebene Token-ID zurück. Dies ist eine asynchrone Methode. Diese Methode kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht. Jeder kann diese Methode nennen.
-
getTokenObject
- Dies ist eine Utilitymethode, die eine Instanz des Tokens für eine angegebene Token-ID zurückgibt. Diese Methode wird von vielen automatisch generierten Methoden zum Abrufen von Tokenobjekten verwendet. Sie können diese Methode nach Bedarf über Ihre benutzerdefinierten Methoden aufrufen. Wenn Sie ein tokenisiertes Asset oder eine tokenisierte Klasse erstellen, aktualisieren Sie die Switch-Groß-/Kleinschreibung mit der entsprechenden
Token
-Klasse, um das korrekte Tokenobjekt zurückzugeben. Der Befehlochain sync
in Blockchain App Builder erstellt automatisch einen Wechselfall, wenn ein tokenisiertes Asset in der Spezifikationsdatei erstellt wird. Diese Methode hat keinen@Validator()
-Methodendekorator, was bedeutet, dass diese Methode nicht direkt aufrufbar ist und nur von anderen Methoden aufgerufen werden kann. -
ownerOf
- Diese Methode gibt die Konto-ID des Eigentümers der angegebenen Token-ID zurück. Jeder kann diese Methode nennen.
-
name
- Diese Methode gibt den Namen der Token-Klasse zurück. Jeder kann diese Methode nennen.
-
symbol
- Diese Methode gibt das Symbol der Token-Klasse zurück. Jeder kann diese Methode nennen.
-
tokenURI
- Diese Methode gibt die URI eines angegebenen Tokens zurück. Jeder kann diese Methode nennen.
-
totalSupply
- Diese Methode gibt die Gesamtanzahl der geprägten Token zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. -
totalNetSupply
- Diese Methode gibt die Gesamtanzahl der geprägten Token abzüglich der Anzahl der gebrannten Token zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden.
Methoden für die Accountverwaltung
-
createAccount
- Diese Methode erstellt einen Account für einen angegebenen Benutzer und ein bestimmtes Token. Ein Konto muss für jeden Benutzer erstellt werden, der zu einem beliebigen Zeitpunkt Token hat. Konten verfolgen die Anzahl der NFTs, die ein Benutzer hat. Benutzer müssen über Konten im Netzwerk verfügen, um tokenbezogene Vorgänge abzuschließen. Sie können nur ein NFT-Konto pro Benutzer erstellen.
Eine Account-ID ist ein alphanumerisches Zeichenset mit dem Präfix
oaccount~
, gefolgt von einem SHA-256-Hash der Mitgliedschaftsserviceprovider-ID (orgId
) des Benutzers in der aktuellen Netzwerkorganisation, dem Benutzernamen oder der E-Mail-ID (userId
) des Instanzeigentümers oder des Benutzers, der bei der Instanz angemeldet ist, und der konstanten Zeichenfolgenft
. Diese Methode kann nur vomToken Admin
des Chaincodes aufgerufen werden. -
balanceOf
- Diese Methode gibt die Gesamtanzahl der NFTs zurück, die ein bestimmter Benutzer enthält. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder vom Accounteigentümer aufgerufen werden. -
getAllAccounts
- Diese Methode gibt eine Liste aller Konten zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. Diese Methode verwendet SQL-Rich-Abfragen von Berkeley DB und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Netzwerk von Oracle Blockchain Platform besteht. -
getAccountByUser
- Diese Methode gibt Kontodetails für einen angegebenen Benutzer zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder demAccount Owner
des Accounts aufgerufen werden. -
getUserByAccountId
- Diese Methode gibt die Benutzerdetails eines angegebenen Accounts zurück. Diese Methode kann von jedem Benutzer aufgerufen werden.
-
getAccountHistory
- Diese Methode gibt die Kontohistorie für einen angegebenen Benutzer zurück. Dies ist eine asynchrone Methode. Diese Methode kann nur vom
Token Admin
des Chaincodes oder vom Accounteigentümer aufgerufen werden.
Methoden für die Rollenverwaltung
-
addRole
- Mit dieser Methode wird eine Rolle zu einem angegebenen Benutzer hinzugefügt. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. -
removeRole
- Diese Methode entfernt eine Rolle von einem angegebenen Benutzer. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. -
getAccountsByRole
- Diese Methode gibt eine Liste aller Konto-IDs für eine angegebene Rolle zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. -
getUsersByRole
- Diese Methode gibt eine Liste aller Benutzer für eine angegebene Rolle zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. -
isInRole
- Diese Methode gibt einen booleschen Wert zurück, um anzugeben, ob ein Benutzer über eine angegebene Rolle verfügt. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder demAccount Owner
des Accounts aufgerufen werden.
Methoden für das Transaktionshistorienmanagement
-
getAccountTransactionHistory
- Diese Methode gibt die Kontotransaktionshistorie für einen angegebenen Benutzer zurück. Dies ist eine asynchrone Methode. Diese Methode kann nur vom
Token Admin
des Chaincodes oder vom Accounteigentümer aufgerufen werden. -
getAccountTransactionHistoryWithFilters
- Diese Methode gibt die Kontotransaktionshistorie für einen angegebenen Benutzer zurück, gefiltert nach
PageSize
,Bookmark
,startTime
undendTime
. Dies ist eine asynchrone Methode. Diese Methode kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht. Diese Methode kann nur vomToken Admin
des Chaincodes oder vom Accounteigentümer aufgerufen werden. -
getTransactionById
- Diese Methode gibt die Transaktionshistorie für eine angegebene Transaktions-ID zurück. Dies ist eine asynchrone Methode. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder vom Accounteigentümer aufgerufen werden. -
deleteHistoricalTransactions
- Diese Methode löscht Transaktionen, die älter sind als ein bestimmter Zeitstempel in der Statusdatenbank. Dies ist eine asynchrone Methode. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden.
Methoden für das Tokenverhaltensmanagement - Mintable Behavior
-
create<Token Name>Token
- Diese Methode erstellt (mints) einen NFT. Das Asset und die zugehörigen Eigenschaften werden in der Statusdatenbank gespeichert. Der Aufrufer dieser Transaktion muss ein Token-Konto haben. Der Anrufer dieser Transaktion wird Eigentümer der NFT. Wenn die Tokenspezifikationsdatei den Abschnitt
roles
fürbehaviors
und die Eigenschaftminter_role_name
fürroles
enthält, muss der Aufrufer der Transaktion die Minter-Rolle haben. Ansonsten kann jeder Anrufer NFTs prägen. -
update<Token Name>Token
- Diese Methode aktualisiert Tokeneigenschaften. Diese Methode kann nur von dem Benutzer aufgerufen werden, der Eigentümer oder Ersteller des Tokens ist. Nachdem ein Tokenasset erstellt wurde, kann nur der Tokeneigentümer die benutzerdefinierten Eigenschaften des Tokens aktualisieren. Wenn der Benutzer sowohl Tokeneigentümer als auch Ersteller eines Tokens ist, kann er auch die Eigenschaft
TokenDesc
aktualisieren. Tokenmetadaten können nicht aktualisiert werden. Sie müssen alle Tokeneigenschaften an diese Methode übergeben, auch wenn Sie nur bestimmte Eigenschaften aktualisieren möchten.
Methoden für das Tokenverhaltensmanagement - Übertragbares Verhalten
-
safeTransferFrom
- Dies ist eine asynchrone Funktion. Diese Methode überträgt die Verantwortung für den angegebenen NFT vom Aufrufer auf ein anderes Konto. Diese Methode umfasst die folgenden Validierungen:
- Der Token existiert und wird nicht verbrannt.
- Das Absenderkonto und das Empfängerkonto sind vorhanden und nicht dasselbe Konto.
- Das Absenderkonto ist Eigentümer des Tokens.
- Der Aufrufer der Funktion ist der Absender.
-
transferFrom
- Dies ist eine asynchrone Funktion. Diese Methode überträgt die Verantwortung für den angegebenen NFT von einem Absenderkonto auf ein Empfängerkonto. Es liegt in der Verantwortung des Aufrufers, die richtigen Parameter zu übergeben. Diese Methode kann von jedem Benutzer aufgerufen werden, nicht nur vom Token-Eigentümer. Diese Methode umfasst die folgenden Validierungen:
- Der Token existiert und wird nicht verbrannt.
- Das Absenderkonto und das Empfängerkonto sind vorhanden und nicht dasselbe Konto.
- Das Absenderkonto ist Eigentümer des Tokens.
Methoden für das Tokenverhaltensmanagement - Burnable Behavior
-
burn
- Diese Methode deaktiviert oder brennt den angegebenen NFT aus dem Account des Aufrufers. Der Aufrufer dieser Methode muss über ein Konto verfügen. Ein Token kann nur gebrannt werden, wenn die Tokenspezifikationsdatei das Verhalten
burnable
enthält. Wenn im Abschnittroles
der Spezifikationsdatei keine Eigenschaftburner_role_name
angegeben ist, kann der Eigentümer des Tokens das Token brennen. Wenn im Abschnittroles
eine Eigenschaftburner_role_name
angegeben ist, kann der Benutzer, dem die Brennerrolle zugewiesen wurde, die auch der Minter (Ersteller) oder Eigentümer des Tokens ist, das Token brennen. -
burnNFT
- Diese Methode deaktiviert oder brennt die angegebene NFT aus dem Account des Aufrufers und gibt ein Tokenobjekt und eine Tokenhistorie zurück. Der Aufrufer dieser Methode muss über ein Konto verfügen. Ein Token kann nur gebrannt werden, wenn die Tokenspezifikationsdatei das Verhalten
burnable
enthält. Wenn im Abschnittroles
der Spezifikationsdatei keine Eigenschaftburner_role_name
angegeben ist, kann der Eigentümer des Tokens das Token brennen. Wenn im Abschnittroles
eine Eigenschaftburner_role_name
angegeben ist, kann der Benutzer, dem die Brennerrolle zugewiesen wurde, die auch der Minter (Ersteller) oder Eigentümer des Tokens ist, das Token brennen.
Benutzerdefinierte Methoden
Mit den Token-SDK-Methoden können Sie benutzerdefinierte Methoden für Ihre Geschäftsanwendung schreiben.
Das folgende Beispiel zeigt, wie Sie Token-SDK-Methoden in benutzerdefinierten Methoden verwenden. Wenn die Methode sell
aufgerufen wird, wird ein Token für den Verkauf zu einem angegebenen Preis veröffentlicht.
@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);
}
}
NFT-SDK-Methoden
- Access Control Management
- Tokenkonfigurationsverwaltung
- Accountverwaltung
- Rollenverwaltung
- Verwaltung der Transaktionshistorie
- Tokenverhaltensverwaltung
Methoden für Access Control Management
Token Admin
oder Account Owner
des Tokens aufgerufen werden. Mit dieser Funktion können Sie sicherstellen, dass Vorgänge nur von den beabsichtigten Benutzern ausgeführt werden. Jeder nicht autorisierte Zugriff führt zu einem Fehler. Um die Zugriffskontrollfunktion zu verwenden, importieren Sie die Klasse Authorization
aus dem Modul ../lib/erc721-auth
.import { ERC721Authorization } from '../lib/erc721-auth';
-
checkAuthorization
- Mit dieser Methode können Sie einem Vorgang eine Zugriffskontrollprüfung hinzufügen. Dies ist eine asynchrone Funktion. Die meisten automatisch generierten Methoden umfassen die Zugriffskontrolle. Bestimmte Tokenmethoden können nur von
ERC721Admin
oderAccount Owner
des Tokens oder vonMultipleAccountOwner
für Benutzer mit mehreren Accounts ausgeführt werden. Die MethodecheckAuthorization
ist Teil der KlasseAuthorization
, auf die Sie über das ObjektCtx
zugreifen. Die Zugriffskontrollzuordnung wird in der Datei../lib/constant.ts
beschrieben, wie im folgenden Text dargestellt. Sie können die Zugriffskontrolle ändern, indem Sie die Datei../lib/constant.ts
bearbeiten. Um Ihre eigene Zugriffskontrolle zu verwenden oder die Zugriffskontrolle zu deaktivieren, entfernen Sie den Zugriffskontrollcode aus den automatisch generierten Controllermethoden und benutzerdefinierten Methoden.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
- Diese Methode gibt den booleschen Wert
true
zurück, wenn der Aufrufer der Funktion einToken Admin
ist. Andernfalls gibt die Methodefalse
zurück. Dies ist eine asynchrone statische Funktion. -
addAdmin
- Diese Methode fügt einen Benutzer als
Token Admin
des Token Chaincodes hinzu. -
removeAdmin
- Diese Methode entfernt einen Benutzer als
Token Admin
des Token Chaincodes. -
getAllAdmins
- Diese Methode gibt eine Liste aller
Token Admin
-Benutzer zurück.
Methoden für die Verwaltung der Tokenkonfiguration
Die Methoden zur Verwaltung der Tokenkonfiguration basieren auf dem ERC-721-Standard. Um die Methoden zur Verwaltung der Tokenkonfiguration zu verwenden, importieren Sie die Klasse Token
aus dem Modul ../lib/erc721-token
.
-
totalSupply
- Diese Methode gibt die Gesamtanzahl der geprägten NFTs zurück. Dies ist eine asynchrone Funktion.
-
get
- Diese Methode gibt das angegebene Tokenobjekt zurück, wenn es in der Statusdatenbank vorhanden ist. Dies ist eine asynchrone statische Funktion.
-
isTokenType
- Diese Methode gibt an, ob ein Tokenasset mit der angegebenen ID vorhanden ist. Dies ist eine asynchrone statische Funktion.
-
createToken
- Diese Methode erstellt ein Token und speichert seine Eigenschaften in der Statusdatenbank. Diese Methode kann nur von Benutzern mit der Minter-Rolle aufgerufen werden. Dies ist eine asynchrone Funktion.
-
updateToken
- Diese Methode aktualisiert Tokeneigenschaften. Diese Methode kann nur vom Eigentümer oder Ersteller des Tokens aufgerufen werden. Nachdem ein Tokenasset erstellt wurde, kann nur der Tokeneigentümer die benutzerdefinierten Eigenschaften des Tokens aktualisieren. Wenn der Benutzer sowohl Tokeneigentümer als auch Ersteller eines Tokens ist, kann er auch die Eigenschaft
TokenDesc
aktualisieren. Tokenmetadaten können nicht aktualisiert werden. Sie müssen alle Tokeneigenschaften an diese Methode übergeben, auch wenn Sie nur bestimmte Eigenschaften aktualisieren möchten. Dies ist eine asynchrone Funktion. -
getByRange
- Diese Methode ruft die Stoffmethode
getStateByRange
intern auf. Obwohl ein Vermögensgegenstand mit der angegebenen ID aus dem Buch zurückgegeben wird, überträgt diese Methode den Vermögensgegenstand in den aufrufenden Vermögensgegenstandstyp. Dies ist eine asynchrone statische Funktion.@validator(yup.string(), yup.string()) public async getDigiCurrGetByRange(startId: string, endId: string) { return await this.Ctx.ERC721TOken.getByRange(startId, endId, PaintingNft); }
-
history
- Diese Methode gibt die Historie für das angegebene Token zurück. Dies ist eine asynchrone statische Funktion.
-
getAllTokens
- Diese Methode gibt alle Tokenassets zurück, die in der Statusdatenbank gespeichert sind. Diese Methode verwendet SQL-Rich-Abfragen von Berkeley DB und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Netzwerk von Oracle Blockchain Platform besteht. Dies ist eine asynchrone statische Funktion.
-
getAllTokensByUser
- Diese Methode gibt alle Token zurück, für die eine angegebene Konto-ID verantwortlich ist. Dies ist eine asynchrone statische Funktion.
-
ownerOf
- Diese Methode gibt die Konto-ID des Eigentümers eines angegebenen Tokens zurück. Dies ist eine asynchrone statische Funktion.
-
tokenUri
- Diese Methode gibt die URI für ein angegebenes Token zurück. Dies ist eine asynchrone statische Funktion.
-
getTokenUri
- Diese Methode gibt die URI für ein angegebenes Token zurück. Dies ist eine asynchrone statische Funktion.
-
symbol
- Diese Methode gibt das Symbol der Token-Klasse zurück.
Methoden für die Accountverwaltung
-
generateAccountId
- Diese Methode gibt eine Konto-ID zurück, die gebildet wird, indem die Mitgliedsdienstleister-ID (
orgId
) und der Benutzername oder die E-Mail-ID (userId
) verkettet und dann ein SHA-256-Hash erstellt wird. -
createAccount
- Diese Methode erstellt einen Account für einen angegebenen Benutzer und ein bestimmtes Token. Ein Konto muss für jeden Benutzer erstellt werden, der zu einem beliebigen Zeitpunkt Token hat. Konten verfolgen die Anzahl der NFTs, die ein Benutzer hat. Benutzer müssen über Konten im Netzwerk verfügen, um tokenbezogene Vorgänge abzuschließen. Sie können nur ein NFT-Konto pro Benutzer erstellen.
Eine Account-ID ist ein alphanumerisches Zeichenset mit dem Präfix
oaccount~
, gefolgt von einem SHA-256-Hash der Mitgliedschaftsserviceprovider-ID (orgId
) des Benutzers in der aktuellen Netzwerkorganisation, dem Benutzernamen oder der E-Mail-ID (userId
) des Instanzeigentümers oder des Benutzers, der bei der Instanz angemeldet ist, und der konstanten Zeichenfolgenft
. Diese Methode kann nur vomToken Admin
des Chaincodes aufgerufen werden. -
getAllAccounts
- Diese Methode gibt eine Liste aller Konten zurück. Diese Methode verwendet SQL-Rich-Abfragen von Berkeley DB und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Netzwerk von Oracle Blockchain Platform besteht.
-
history
- Diese Methode gibt ein Array der Kontohistoriendetails für ein angegebenes Konto zurück.
-
getUserByAccountId
- Diese Methode gibt die Benutzerdetails für einen angegebenen Account zurück.
-
getAccountWithStatusByUser
- Diese Methode gibt Benutzerdetails für einen angegebenen Account zurück, einschließlich Accountstatus. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder demAccount Owner
des Accounts aufgerufen werden. -
getAccountByUser
- Diese Methode gibt Benutzerdetails für einen angegebenen Account zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder demAccount Owner
des Accounts aufgerufen werden. -
balanceOf
- Diese Methode gibt die Gesamtanzahl der NFTs zurück, die der angegebene Benutzer speichert.
Methoden für die Rollenverwaltung
-
addRoleMember
- Mit dieser Methode wird eine Rolle zu einem angegebenen Benutzer und Token hinzugefügt. Eine Konto-ID wird durch die Erstellung eines SHA-256-Hashs der Provider-ID des verketteten Mitgliedschaftsservice (
orgId
) und des Benutzernamens oder der E-Mail-ID (userId
) gebildet. Dies ist eine asynchrone Funktion. -
removeRoleMember
- Diese Methode entfernt eine Rolle aus einem angegebenen Benutzer und Token. Eine Konto-ID wird durch die Erstellung eines SHA-256-Hashs der Provider-ID des verketteten Mitgliedschaftsservice (
orgId
) und des Benutzernamens oder der E-Mail-ID (userId
) gebildet. Dies ist eine asynchrone Funktion. -
isInRole
- Diese Methode gibt einen booleschen Wert zurück, um anzugeben, ob ein Benutzer und ein Token über eine angegebene Rolle verfügen. Eine Konto-ID wird durch die Erstellung eines SHA-256-Hashs der Provider-ID des verketteten Mitgliedschaftsservice (
orgId
) und des Benutzernamens oder der E-Mail-ID (userId
) gebildet. Dies ist eine asynchrone Funktion. -
getAccountsByRole
- Diese Methode gibt eine Liste aller Konto-IDs für eine angegebene Rolle zurück.
-
getUsersByRole
- Diese Methode gibt eine Liste aller Benutzer für eine angegebene Rolle zurück.
Methoden für das Transaktionshistorienmanagement
-
getAccountTransactionHistory
- Diese Methode gibt ein Array der Transaktionshistoriendetails für ein angegebenes Konto zurück.
-
getAccountTransactionHistoryWithFilters
- Diese Methode gibt die Kontotransaktionshistorie für einen angegebenen Benutzer zurück, gefiltert nach
PageSize
,Bookmark
,startTime
undendTime
. Diese Methode kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht. -
getTransactionById
- Diese Methode gibt die Historie eines
Transaction
-Assets zurück. -
deleteHistoricalTransactions
- Diese Methode löscht Transaktionen, die älter als ein angegebenes Datum sind, aus der Statusdatenbank.
Tokenverhaltensverwaltung - Münzverhalten
-
getMaxMintQuantity
- Diese Methode gibt die maximale Münzmenge eines Tokens zurück. Wenn das
max_mint_quantity
-Verhalten nicht in der Spezifikationsdatei konfiguriert ist, ist der Standardwert 0, und eine unbegrenzte Anzahl von Token kann geprägt werden. -
getTotalMintedTokens
- Diese Methode gibt die Gesamtanzahl der im System verfügbaren Token für das angegebene Token zurück. Die Netto-Anzahl der verfügbaren Token ist die Gesamtanzahl der geprägten Token abzüglich der Anzahl der gebrannten Token. Dies ist eine asynchrone Funktion.
Tokenverhalten verwalten - Übertragbares Verhalten
-
safeTransferFrom
- Dies ist eine asynchrone Funktion. Diese Methode überträgt die Verantwortung für den angegebenen NFT vom Aufrufer auf ein anderes Konto. Diese Methode umfasst die folgenden Validierungen:
- Der Token existiert und wird nicht verbrannt.
- Das Absenderkonto und das Empfängerkonto sind vorhanden und nicht dasselbe Konto.
- Das Absenderkonto ist Eigentümer des Tokens.
- Der Aufrufer der Funktion ist der Absender.
-
transferFrom
- Dies ist eine asynchrone Funktion. Diese Methode überträgt die Verantwortung für den angegebenen NFT von einem Absenderkonto auf ein Empfängerkonto. Es liegt in der Verantwortung des Aufrufers, die richtigen Parameter zu übergeben. Diese Methode kann von jedem Benutzer aufgerufen werden, nicht nur vom Token-Eigentümer. Diese Methode umfasst die folgenden Validierungen:
- Der Token existiert und wird nicht verbrannt.
- Das Absenderkonto und das Empfängerkonto sind vorhanden und nicht dasselbe Konto.
- Das Absenderkonto ist Eigentümer des Tokens.
Tokenverhaltensverwaltung - Burnable Behavior
-
burn
- Diese Methode deaktiviert oder brennt den angegebenen NFT aus dem Account des Aufrufers. Der Aufrufer dieser Methode muss über ein Konto verfügen. Ein Token kann nur gebrannt werden, wenn die Tokenspezifikationsdatei das Verhalten
burnable
enthält. Wenn im Abschnittroles
der Spezifikationsdatei keine Eigenschaftburner_role_name
angegeben ist, kann der Eigentümer des Tokens das Token brennen. Wenn im Abschnittroles
eine Eigenschaftburner_role_name
angegeben wird, kann der Benutzer, dem die Brennerrolle zugewiesen wurde, die auch der Minter (Ersteller) des Tokens ist, das Token brennen. Dies ist eine asynchrone Funktion.