Gerüstetes TypeScript-Projekt für Token Taxonomy Framework
Blockchain App Builder übernimmt die Eingabe aus Ihrer Tokenspezifikationsdatei und generiert ein voll funktionsfähiges Gerüstkettencode-Projekt.
Das Projekt generiert automatisch Tokenlebenszyklusklassen und -funktionen, einschließlich CRUD- und Nicht-CRUD-Methoden. Die Validierung von Argumenten, das Marshalling/Unmarshalling und die transparente Persistenzfunktion werden automatisch unterstützt.
Informationen zum Gerüstprojekt und zu Methoden, die nicht direkt mit Token in Zusammenhang stehen, finden Sie unter Kettencodeprojekt mit Gerüst TypeScript.
Modell
Jede tokenisierte Modellklasse erweitert die Klasse Token
, die wiederum die Klasse OchainModel
erweitert. Die Klasse Token
wird aus ../lib/token
importiert. Transparente Persistenzfähigkeit oder vereinfachtes ORM wird in der Klasse OchainModel
erfasst.
import * as yup from 'yup';
import { Id, Mandatory, Validate, ReadOnly } from '../lib/decorators';
import { Token } from '../lib/token';
@Id('token_id')
export class Digicur extends Token<Digicur> {
public readonly assetType = 'otoken';
@Mandatory()
@Validate(yup.string().required().matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/).max(16))
public token_id: string;
@ReadOnly('digicur')
public token_name: string;
@Validate(yup.string().trim().max(256))
public token_desc: string;
@ReadOnly('fungible')
public token_type: string;
@ReadOnly(["divisible","mintable","transferable","burnable","holdable","roles"])
public behaviors: string[];
@ReadOnly({minter_role_name: "minter", burner_role_name: "burner", notary_role_name: "notary"})
public roles: object;
@ReadOnly({max_mint_quantity: 20000})
public mintable: object;
@ReadOnly({decimal: 1})
public divisible: object;
@Validate(yup.number())
public token_to_currency_ratio: number;
@Validate(yup.string())
public currency_representation: string;
}
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 nicht verwendet werden. Die anderen Methoden sind verborgen.
Mit den Token-SDK-Methoden können Sie benutzerdefinierte Methoden für Ihre Geschäftsanwendung schreiben.
Automatisch generierte Token-Methoden
Blockchain App Builder generiert automatisch Methoden zur Unterstützung von Token und Tokenlebenszyklen. Mit diesen Methoden können Sie Token initialisieren, Rollen und Accounts verwalten und andere Tokenlebenszyklusaufgaben ohne zusätzliche Codierung abschließen. Controller-Methoden müssen einen @Validator(...params)
-Dekorator aufweisen, damit sie aufgerufen werden können.
- Access Control Management
- Tokenkonfigurationsverwaltung
- Kontoverwaltung
- Rollenverwaltung
- Transaktionshistorienverwaltung
- Verwaltung des Tokenverhaltens
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
oderOrg Admin
kann diese Funktion für jeden anderen Benutzer im Blockchain-Netzwerk aufrufen. Andere Benutzer können diese Methode nur auf ihren 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
oder einem beliebigenOrg Admin
des Chaincodes aufgerufen werden. -
addOrgAdmin
- Mit dieser Methode wird ein Benutzer als
Org Admin
der Organisation hinzugefügt. Diese Methode kann nur von einemToken Admin
des Chaincodes oder einemOrg Admin
der angegebenen Organisation aufgerufen werden. -
removeOrgAdmin
- Mit dieser Methode wird ein Benutzer als
Org Admin
der Organisation entfernt. Diese Methode kann nur von einemToken Admin
des Chaincodes oder von einemOrg Admin
der angegebenen Organisation aufgerufen werden. -
getOrgAdmins
- Diese Methode gibt eine Liste aller Benutzer zurück, die eine
Org Admin
einer Organisation sind. Diese Methode kann nur von einemToken Admin
des Chaincodes oder von einemOrg Admin
einer Organisation aufgerufen werden.
Methoden für die Tokenkonfigurationsverwaltung
-
init
- Diese Methode wird aufgerufen, wenn der Chaincode bereitgestellt oder aktualisiert wird. Alle
Token Admin
werden durch die Informationenuser_id
undorg_id
im obligatorischen ParameteradminList
identifiziert.user_id
ist der Benutzername oder die E-Mail-ID des Instanzeigentümers oder des bei der Instanz angemeldeten Benutzers. Dieorg_id
ist die Membership Service Provider-(MSP-)ID des Benutzers in der aktuellen Netzwerkorganisation. -
initialize<Token Name>Token
- Diese Methode erstellt ein Token und initialisiert die Tokeneigenschaften. Das Asset und seine Eigenschaften werden in der Statusdatenbank gespeichert. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. -
update<Token Name>Token
- Diese Methode aktualisiert Tokeneigenschaften. Nachdem ein Tokenasset erstellt wurde, können nur die Eigenschaft
token_desc
und benutzerdefinierte Eigenschaften aktualisiert werden. Diese Methode kann nur von einemToken Admin
des Chaincodes aufgerufen werden. -
getTokenDecimals
- Diese Methode gibt die Anzahl der Dezimalstellen zurück, die für ein Bruchteil-Token konfiguriert wurden. Wenn das Verhalten
divisible
für das Token nicht angegeben wurde, lautet der Standardwert 0. Diese Methode kann nur von einemToken Admin
oderOrg Admin
des Chaincodes aufgerufen werden. -
getTokenById
- Diese Methode gibt ein Tokenobjekt zurück, wenn es in der Statusdatenbank vorhanden ist. Diese Methode kann nur von einem
Token Admin
oder einemOrg Admin
des Chaincodes aufgerufen werden. -
getTokenHistory
- Diese Methode gibt die Tokenhistorie für eine angegebene Token-ID zurück. Jeder Benutzer kann diese Methode aufrufen.
-
getAllTokens
- Diese Methode gibt alle Token zurück, die in der Statusdatenbank gespeichert sind. Diese Methode kann nur von einem
Token Admin
oder einemOrg Admin
des Chaincodes aufgerufen werden. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung mit dem Remote-Netzwerk von Oracle Blockchain Platform hergestellt wird. -
getTokensByName
- Diese Methode gibt alle Tokenobjekte mit einem angegebenen Namen zurück. Diese Methode kann nur von einem
Token Admin
oderOrg Admin
des Chaincodes aufgerufen werden. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung mit dem Remote-Netzwerk von Oracle Blockchain Platform hergestellt wird.
Methoden für die Accountverwaltung
-
createAccount
- Diese Methode erstellt einen Account für einen angegebenen Benutzer und ein Token. Ein Konto muss für jeden Benutzer erstellt werden, der jederzeit Token hat. Konten verfolgen Salden, gesperrte Salden und Transaktionshistorie. Eine Account-ID ist eine alphanumerische Gruppe von Zeichen mit dem Präfix
oaccount~<token asset name>~
und gefolgt von einem Hash des Benutzernamens oder der E-Mail-ID (user_id
) des Instanzeigentümers oder des bei der Instanz angemeldeten Benutzers, der Mitgliedschaftsserviceprovider-ID (org_id
) des Benutzers in der aktuellen Netzwerkorganisation. Diese Methode kann nur von einemToken Admin
des Chaincodes oder von einemOrg Admin
der angegebenen Organisation aufgerufen werden. -
associateTokenToAccount
- Diese Methode verknüpft ein fungibles Token mit einem Konto. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder von einemOrg Admin
der relevanten Organisation aufgerufen werden. -
getAccount
- Diese Methode gibt Kontodetails für einen angegebenen Benutzer und ein bestimmtes Token zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes, einemOrg Admin
der angegebenen Organisation oder demAccountOwner
des Accounts aufgerufen werden. -
getAccountHistory
- Diese Methode gibt Accounthistoriendetails für einen angegebenen Benutzer und ein bestimmtes Token zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder demAccountOwner
des Accounts aufgerufen werden. -
getAccountOnHoldBalance
- Diese Methode gibt den aktuellen gesperrten Saldo für ein angegebenes Konto und Token zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes, einemOrg Admin
der angegebenen Organisation oder demAccountOwner
des Accounts 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-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung mit dem Remote-Netzwerk von Oracle Blockchain Platform hergestellt wird. -
getUserByAccountId
- Diese Methode gibt Benutzerdetails (
org_id
unduser_id
) für einen angegebenen Account zurück. Diese Methode kann von jedem Benutzer des Chaincodes aufgerufen werden. -
getAccountBalance
- Diese Methode gibt den aktuellen Saldo für ein angegebenes Konto und Token zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes, einemOrg Admin
der angegebenen Organisation oder demAccountOwner
des Accounts aufgerufen werden. -
getAllOrgAccounts
- Diese Methode gibt eine Liste aller Token-Accounts zurück, die zu einer angegebenen Organisation gehören. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder von einemOrg Admin
der angegebenen Organisation aufgerufen werden.
Methoden für die Rollenverwaltung
-
addRole
- Diese Methode fügt einem angegebenen Benutzer und Token eine Rolle hinzu. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder von einemOrg Admin
der angegebenen Organisation aufgerufen werden, der auch die angegebene Rolle innehat. -
removeRole
- Diese Methode entfernt eine Rolle von einem angegebenen Benutzer und Token. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder von einemOrg Admin
der angegebenen Organisation aufgerufen werden, der auch die angegebene Rolle innehat. -
getAccountsByRole
- Diese Methode gibt eine Liste aller Konto-IDs für eine angegebene Rolle und ein bestimmtes Token zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. -
getAccountsByUser
- Diese Methode gibt eine Liste aller Konto-IDs für eine angegebene Organisations-ID und Benutzer-ID zurück. Diese Methode kann nur vom
Token Admin
des Chaincodes, vomOrg Admin
der angegebenen Organisation oder von dem in den Parametern angegebenenAccount Owner
aufgerufen werden. -
getUsersByRole
- Diese Methode gibt eine Liste aller Benutzer für eine angegebene Rolle und ein bestimmtes Token zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. -
isInRole
- Diese Methode gibt einen booleschen Wert zurück, der angibt, ob ein Benutzer und ein Token eine angegebene Rolle haben. Diese Methode kann nur von einem
Token Admin
des Chaincodes, demAccountOwner
des Accounts oder einemOrg Admin
der angegebenen Organisation aufgerufen werden. -
getOrgAccountsByRole
- Diese Methode gibt Informationen zu allen Firmen zurück, die eine bestimmte Rolle in einer bestimmten Organisation haben. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder von einemOrg Admin
der angegebenen Organisation aufgerufen werden. -
getOrgUsersByRole
- Diese Methode gibt Informationen zu allen Benutzern zurück, die eine bestimmte Rolle in einer bestimmten Organisation haben. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder von einemOrg Admin
der angegebenen Organisation aufgerufen werden.
Methoden für das Transaktionshistorienmanagement
-
getAccountTransactionHistory
- Diese Methode gibt ein Array von Kontotransaktionshistoriendetails für einen angegebenen Benutzer und ein bestimmtes Token zurück. Diese Methode kann nur vom
Token Admin
des Chaincodes, einemOrg Admin
der angegebenen Organisation oder demAccountOwner
des Accounts aufgerufen werden. -
getAccountTransactionHistoryWithFilters
- Diese Methode gibt ein Array von Kontotransaktionshistoriendetails für einen angegebenen Benutzer und ein bestimmtes Token zurück. Diese Methode kann nur vom
Token Admin
des Chaincodes, einemOrg Admin
der angegebenen Organisation oder demAccountOwner
des Accounts aufgerufen werden. Diese Methode kann nur aufgerufen werden, wenn sie mit dem Remote-Netzwerk von Oracle Blockchain Platform verbunden ist. -
getSubTransactionById
- Diese Methode gibt ein Array von Kontotransaktionshistoriendetails für einen angegebenen Benutzer und ein bestimmtes Token zurück. Diese Methode kann nur vom
Token Admin
des Chaincodes oder demAccountOwner
des Accounts aufgerufen werden. -
getSubTransactionsByIdWithFilters
- Diese Methode gibt ein Array mit Details der Kontenuntertransaktionshistorie für eine angegebene Transaktion zurück.
-
getTransactionById
- Diese Methode gibt die Historie eines
Transaction
-Assets zurück. -
deleteHistoricalTransactions
- Mit dieser Methode werden ältere Transaktionen aus der Statusdatenbank gelöscht.
Methoden für Token Behavior Management - Mintable Behavior
-
issueTokens
- Diese Methode mints Token, die dann dem Aufrufer der Methode gehören. Der Anrufer muss ein Konto und die Minter-Rolle haben. Die Anzahl der Token, die geprägt werden können, wird durch die Eigenschaft
max_mint_quantity
des Verhaltensmintable
in der Spezifikationsdatei begrenzt. Wenn die Eigenschaftmax_mint_quantity
nicht angegeben ist, kann eine unbegrenzte Anzahl von Token geprägt werden. Die Menge muss innerhalb der Dezimalwerte liegen, die durch den Parameterdecimal
des Verhaltensdivisible
in der Spezifikationsdatei angegeben werden. Diese Methode kann nur vomAccountOwner
des Accounts mit der Minter-Rolle aufgerufen werden. -
getTotalMintedTokens
- Diese Methode gibt die Gesamtanzahl der Münztoken für ein angegebenes Token zurück. Diese Methode kann nur von einem
Token Admin
oder einem beliebigenOrg Admin
des Chaincodes aufgerufen werden. -
getNetTokens
- Diese Methode gibt die Gesamtanzahl der im System verfügbaren Token für ein angegebenes Token zurück. Die Nettotokensumme ist die Anzahl der verbleibenden Token, nachdem Token gebrannt wurden. In Gleichungsform: Netto-Token = Gesamt-Mint-Token - Gesamt verbrannte Token. Wenn keine Token gebrannt werden, ist die Anzahl der Net-Token gleich der Gesamtanzahl der gebrannten Token. Diese Methode kann nur von einem
Token Admin
oder einem beliebigenOrg Admin
des Chaincodes aufgerufen werden.
Methoden für die Verwaltung des Tokenverhaltens - Übertragbares Verhalten
-
transferTokens
- Diese Methode überträgt Token vom Anrufer an ein angegebenes Konto. Der Aufrufer der Methode muss ein Konto haben. Die Menge muss innerhalb der Dezimalwerte liegen, die durch den Parameter
decimal
des Verhaltensdivisible
in der Spezifikationsdatei angegeben werden. Diese Methode kann nur vomAccountOwner
des Accounts aufgerufen werden. -
bulkTransferTokens
- Diese Methode wird verwendet, um eine Massenübertragung von Token vom Aufruferkonto auf die Konten durchzuführen, die im Objekt
flow
angegeben sind. Die Mengen müssen innerhalb der Dezimalwerte liegen, die mit dem Parameterdecimal
des Verhaltensdivisible
im Spezifikationsaufrufer file.The dieser Methode angegeben werden, und ein Konto muss bereits erstellt sein. Diese Methode kann nur vomAccountOwner
des Accounts aufgerufen werden.
Methoden für die Verwaltung des Tokenverhaltens - Haltbares Verhalten
-
holdTokens
- Diese Methode erstellt eine Sperre für den Eigentümer der Token mit dem Account
to_account_id
. Es wurde ein Notarkonto angegeben, das für den Abschluss oder die Freigabe der Sperre verantwortlich ist. Wenn die Sperre erstellt wird, wird der angegebene Tokensaldo des Zahlers gesperrt. Ein gesperrter Saldo kann erst übertragen werden, wenn die Sperre abgeschlossen oder freigegeben wurde. Für den Aufrufer dieser Methode muss bereits ein Konto erstellt sein. Diese Methode kann nur vomAccountOwner
des Accounts aufgerufen werden. -
executeHoldTokens
- Mit dieser Methode wird ein Token gesperrt. Eine Menge von Token, die zuvor von einem Token-Eigentümer gehalten wurden, wird an einen Empfänger übertragen. Wenn der Wert
quantity
kleiner als der tatsächliche Sperrwert ist, ist der Restbetrag wieder für den ursprünglichen Eigentümer der Token verfügbar. Diese Methode kann nur von derAccountOwner
-ID mit der Rollenotary
für die angegebene Vorgangs-ID aufgerufen werden. Die Sperre kann nur vom Notar abgeschlossen werden. -
releaseHoldTokens
- Diese Methode gibt eine Sperre von Token frei. Die Übertragung ist nicht abgeschlossen, und alle gehaltenen Token stehen dem ursprünglichen Eigentümer wieder zur Verfügung. Diese Methode kann von der
AccountOwner
-ID mit der Rollenotary
innerhalb des angegebenen Zeitraums oder vom Zahler, Zahlungsempfänger oder Notar nach dem angegebenen Zeitraum aufgerufen werden. -
getOnHoldIds
- Diese Methode gibt eine Liste aller Halte-IDs für ein bestimmtes Konto zurück. Diese Methode kann mit einem
Token Admin
des Chaincodes, einemOrg Admin
der angegebenen Organisation oder demAccountOwner
des Accounts aufgerufen werden. -
getOnHoldDetailsWithOperationId
- Diese Methode gibt die gesperrten Transaktionsdetails für eine angegebene Vorgangs-ID und ein bestimmtes Token zurück. Diese Methode kann von jedem aufgerufen werden.
-
getOnHoldBalanceWithOperationId
- Diese Methode gibt den gesperrten Saldo für eine angegebene Vorgangs-ID und ein bestimmtes Token zurück. Diese Methode kann von jedem aufgerufen werden.
Methoden für die Verwaltung des Tokenverhaltens - Burnable Behavior
-
burnTokens
- Diese Methode deaktiviert oder verbrennt Token aus dem Konto des Transaktionsaufrufers. Der Aufrufer dieser Methode muss über einen Account und die Burner-Rolle verfügen. Die Menge muss innerhalb der Dezimalwerte liegen, die durch den Parameter
decimal
des Verhaltensdivisible
in der Spezifikationsdatei angegeben werden. Diese Methode kann über dieAccountOwner
des Accounts mit der Burner-Rolle aufgerufen werden.
Benutzerdefinierte Methoden
Mit den Token-SDK-Methoden können Sie benutzerdefinierte Methoden für Ihre Geschäftsanwendung schreiben.
Um Doppelausgaben zu vermeiden, kombinieren Sie nicht mehrere asynchrone Funktionen, die mit denselben Schlüssel/Wert-Paaren in der Statusdatenbank arbeiten. Verwenden Sie stattdessen die Methode bulkTransferTokens
, um mehrere Übertragungen in einer Methode vorzunehmen.
Das folgende Beispiel zeigt, wie Token-SDK-Methoden in benutzerdefinierten Methoden verwendet werden. Wenn die Methode buyTicket
aufgerufen wird, überträgt sie 20 Token vom Konto des Anrufers auf das Konto des Verkäufers und gibt die Transaktionsnachricht der Übertragung zurück.
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string())
public async buyTicket(token_id: string, seller_org_id: string, seller_user_id: string) {
const token = await this.getTokenObject(token_id);
/**
* The following method this.Ctx.Account.generateAccountId(token_id, seller_org_id, seller_user_id) generates account id of the seller.
*/
const seller_account_id = await this.Ctx.Account.generateAccountId(token_id, seller_org_id, seller_user_id);
/**
* The following method this.Ctx.Token.transfer(seller_account_id, 20, token) transfers the quantity 20 from caller's
* account & to seller's account.
*/
const transaction = await this.Ctx.Token.transfer(seller_account_id, 20, token);
return transaction;
}
Wenn Sie mehr als eine Token-SDK-Methode in einer benutzerdefinierten Methode verwenden, verwenden Sie keine Methoden, die sich auf dieselben Schlüssel/Wert-Paare in der Statusdatenbank auswirken. Das folgende Beispiel zeigt die falsche Möglichkeit, mehrere Transfers durchzuführen:
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string())
public async sendTokens(token_id: string, user1_org_id: string, user1_user_id: string, user2_org_id: string, user2_user_id: string) {
const token = await this.getTokenObject(token_id);
const user1_account_id = await Account.generateAccountId(token_id, user1_org_id, user1_user_id);
const user2_account_id = await Account.generateAccountId(token_id, user2_org_id, user2_user_id);
await token.transfer(user1_account_id, 20);
await token.transfer(user2_account_id, 30);
}
Verwenden Sie stattdessen die Methode bulkTransferTokens
, um von dem Konto des Anrufers auf mehrere Konten zu übertragen, wie im folgenden Code-Snippet dargestellt.
bulkTransferTokens(token_id: string, flow: object[])
Hinweis:
Wenn Sie mehr als eine Token-SDK-Methode in einer benutzerdefinierten Methode verwenden, die sich auf dieselben Schlüssel/Wert-Paare in der Statusdatenbank auswirken kann, aktivieren Sie die MVCC-Optimierung für Token-Chaincodes. Weitere Informationen finden Sie unter MVCC-Optimierung.Token-SDK-Methoden
- Access Control Management
- Tokenkonfigurationsverwaltung
- Kontoverwaltung
- Rollenverwaltung
- Transaktionshistorienverwaltung
- Verwaltung des Tokenverhaltens
Methoden für Access Control Management
Token Admin
, Org Admin
oder AccountOwner
des Tokens aufgerufen werden. Mit diesem Feature 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/auth
.import { Authorization } from '../lib/auth';
-
addAdmin
- Mit dieser Methode wird ein Benutzer als
Token Admin
des Token Chaincodes hinzugefügt. -
removeAdmin
- Mit dieser Methode wird ein Benutzer als
Token Admin
des Token Chaincodes entfernt. -
getAllAdmins
- Diese Methode gibt eine Liste aller Benutzer zurück, die ein
Token Admin
des Token Chaincodes sind. -
checkAuthorization
- Mit dieser Methode können Sie einem Vorgang eine Zugriffskontrollprüfung hinzufügen. Bestimmte Tokenmethoden können nur von einem
Token Admin
oderAccountOwner
des Tokens oder von demMultipleAccountOwner
für Benutzer mit mehreren Accounts ausgeführt werden. Die Zugriffskontrollzuordnung wird in der Datei../lib/constant.ts
beschrieben. 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", "OrgAdmin"], addTokenAdmin: ["Admin"], removeTokenAdmin: ["Admin"], getAllAdmins: ["Admin", "OrgAdmin"], addOrgAdmin: ["Admin", "OrgAdminForOrgId"], removeOrgAdmin: ["Admin", "OrgAdminForOrgId"], getOrgAdmins: ["Admin", "OrgAdmin"], }, TOKEN: { save: ["Admin"], getAllTokens: ["Admin", "OrgAdmin"], get: ["Admin", "OrgAdmin"], update: ["Admin"], getDecimals: ["Admin", "OrgAdmin"], getTokensByName: ["Admin", "OrgAdmin"], addRoleMember: ["Admin", "OrgAdminRoleCheck"], removeRoleMember: ["Admin", "OrgAdminRoleCheck"], isInRole: ["Admin", "OrgAdminForAccountId", "AccountOwner"], getTotalMintedTokens: ["Admin", "OrgAdmin"], getNetTokens: ["Admin", "OrgAdmin"], getTokenHistory: ["Admin", "OrgAdmin"], }, ROLE: { getAccountsByRole: ["Admin"], getOrgAccountsByRole: ["Admin", "OrgAdminForOrgId"], getUsersByRole: ["Admin"], getOrgUsersByRole: ["Admin", "OrgAdminForOrgId"], }, TRANSACTION: { deleteTransactions: ["Admin"], },ACCOUNT: { createAccount: ["Admin", "OrgAdminForOrgId"], associateToken: ["Admin", "OrgAdminForAccountId"], getAllAccounts: ["Admin"], getAllOrgAccounts: ["Admin", "OrgAdminForOrgId"], getAccountsByUser: ["Admin", "OrgAdminForOrgId", "MultipleAccountOwner"], getAccount: ["Admin", "OrgAdminForAccountId", "AccountOwner"], history: ["Admin", "AccountOwner"], getAccountTransactionHistory: ["Admin", "OrgAdminForAccountId", "AccountOwner"], getAccountTransactionHistoryWithFilters: ["Admin", "OrgAdminForAccountId", "AccountOwner"], getSubTransactionsById: ["Admin", "TransactionInvoker"], getSubTransactionsByIdWithFilters: ["Admin", "TransactionInvoker"], getAccountBalance: ["Admin", "OrgAdminForAccountId", "AccountOwner"], getAccountOnHoldBalance: ["Admin", "OrgAdminForAccountId", "AccountOwner"], getOnHoldIds: ["Admin", "OrgAdminForAccountId", "AccountOwner"], getConversionHistory: ["Admin", "OrgAdminForAccountId", "AccountOwner"], }, ACCOUNT_STATUS: { get: ["Admin", "OrgAdminForAccountId", "AccountOwner"], history: ["Admin", "OrgAdminForAccountId", "AccountOwner"], activateAccount: ["Admin", "OrgAdminForOrgId"], suspendAccount: ["Admin", "OrgAdminForOrgId"], deleteAccount: ["Admin", "OrgAdminForOrgId"], }, TOKEN_CONVERSION: { initializeExchangePoolUser: ["Admin"], addConversionRate: ["Admin"], updateConversionRate: ["Admin"], getConversionRate: ["Admin", "OrgAdmin", "AnyAccountOwner"], getConversionRateHistory: ["Admin", "OrgAdmin", "AnyAccountOwner"], tokenConversion: ["Admin", "AnyAccountOwner"], getExchangePoolUser: ["Admin"], }, }
-
isUserTokenAdmin
- Diese Methode gibt den booleschen Wert
true
zurück, wenn der Aufrufer der Funktion einToken Admin
ist. Andernfalls gibt die Methodefalse
zurück. -
addOrgAdmin
- Mit dieser Methode wird ein Benutzer als
Org Admin
der Organisation hinzugefügt. -
removeOrgAdmin
- Mit dieser Methode wird ein Benutzer als
Org Admin
der Organisation entfernt. -
getOrgAdmins
- Diese Methode gibt eine Liste aller Benutzer zurück, die eine
Org Admin
einer Organisation sind.
Methoden für die Tokenkonfigurationsverwaltung
-
getTokenDecimals
- Diese Methode gibt die Anzahl der Dezimalstellen zurück, die für ein Bruchteil-Token verfügbar sind. Wenn das Verhalten
divisible
nicht angegeben ist, lautet der Standardwert 0. -
getAllTokens
- Diese Methode gibt alle in der Statusdatenbank gespeicherten Tokenassets zurück. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung mit dem Remote-Netzwerk von Oracle Blockchain Platform hergestellt wird.
-
getTokensByName
- Diese Methode gibt alle Tokenassets mit dem angegebenen Namen zurück. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung mit dem Remote-Netzwerk von Oracle Blockchain Platform hergestellt wird.
-
get
- Diese Methode gibt ein Tokenobjekt zurück, wenn es in der Statusdatenbank vorhanden ist.
-
isTokenType
- Diese Methode gibt an, ob ein Tokenasset mit der angegebenen ID vorhanden ist.
-
save
- Diese Methode erstellt ein Token und speichert seine Eigenschaften in der Statusdatenbank.
-
update
- Diese Methode aktualisiert Tokeneigenschaften. Nachdem ein Tokenasset erstellt wurde, aktualisieren Sie nur den Wert
token_desc
und seine benutzerdefinierten Eigenschaften. -
getByRange
- Diese Methode ruft die strukturbasierte
getStateByRange
-Methode intern auf. Obwohl eine Anlage mit der angegebenen ID aus dem Buch zurückgegeben wird, wird die Anlage mit dieser Methode in den aufrufenden Vermögensgegenstandstyp umgewandelt. -
history
- Diese Methode gibt die Historie für das angegebene Token zurück.
Methoden für die Accountverwaltung
-
getCallerAccountId
- Diese Methode gibt die Konto-ID des Anrufers zurück.
-
generateAccountId
- Diese Methode gibt eine Konto-ID zurück, bei der es sich um eine alphanumerische Zeichensatz-ID mit dem Präfix
oaccount~<token asset name>~
handelt, gefolgt von einem Hash des Benutzernamens oder der E-Mail-ID (user_id
) des Instanzeigentümers oder des bei der Instanz angemeldeten Benutzers, der Mitgliedschaftsserviceprovider-ID (org_id
) des Benutzers in der aktuellen Netzwerkorganisation und der eindeutigen Token-ID (token_id
). -
createAccount
- Diese Methode erstellt einen Account für einen angegebenen Benutzer und ein Token. Jeder Benutzer, der zu irgendeinem Zeitpunkt Token hat, muss über ein Konto verfügen. Konten verfolgen den Saldo, den gesperrten Saldo und die Transaktionshistorie eines Benutzers. Eine Account-ID ist eine alphanumerische Gruppe von Zeichen mit dem Präfix
oaccount~<token asset name>~
und gefolgt von einem Hash des Benutzernamens oder der E-Mail-ID (user_id
) des Instanzeigentümers oder des bei der Instanz angemeldeten Benutzers, der Mitgliedschaftsserviceprovider-ID (org_id
) des Benutzers in der aktuellen Netzwerkorganisation. Diese Methode kann nur vomToken Admin
des Chaincodes oder vomOrg Admin
der angegebenen Organisation aufgerufen werden. -
associateTokenToAccount
- Diese Methode verknüpft ein fungibles Token mit einem Konto. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder von einemOrg Admin
der relevanten Organisation aufgerufen werden. -
getAccountWithStatus
- Diese Methode gibt Kontodetails für ein bestimmtes Konto zurück, einschließlich Kontostatus.
-
getAccount
- Diese Methode gibt Kontodetails für ein bestimmtes Konto zurück.
-
history
- Diese Methode gibt ein Array der Accounthistoriendetails für ein angegebenes Konto zurück.
-
getAccountOnHoldBalance
- Diese Methode gibt den gesperrten Saldo für ein bestimmtes Konto zurück.
-
getAllAccounts
- Diese Methode gibt eine Liste aller Konten zurück. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung mit dem Remote-Netzwerk von Oracle Blockchain Platform hergestellt wird.
-
getUserByAccountId
- Diese Methode gibt die Benutzerdetails für einen angegebenen Account zurück.
-
getAccountBalance
- Diese Methode gibt den Kontensaldo für ein bestimmtes Konto zurück.
-
getAllOrgAccounts
- Diese Methode gibt eine Liste aller Token-Accounts zurück, die zu einer angegebenen Organisation gehören.
Methoden für die Rollenverwaltung
-
addRoleMember
- Diese Methode fügt einem angegebenen Benutzer und Token eine Rolle hinzu.
-
removeRoleMember
- Diese Methode entfernt eine Rolle von einem angegebenen Benutzer und Token.
-
getAccountsByRole
- Diese Methode gibt eine Liste aller Konten für eine angegebene Rolle und ein bestimmtes Token zurück.
-
getAccountsByUser
- Diese Methode gibt eine Liste aller Konto-IDs für einen angegebenen Benutzer zurück.
-
getUsersByRole
- Diese Methode gibt eine Liste aller Benutzer für eine angegebene Rolle und ein bestimmtes Token zurück.
-
isInRole
- Diese Methode gibt an, ob ein Benutzer und ein Token eine angegebene Rolle haben.
-
roleCheck
- Diese Methode prüft, ob die angegebene Konto-ID Mitglied einer Rolle ist.
-
getOrgUsersByRole
- Diese Methode gibt Informationen zu allen Benutzern zurück, die eine bestimmte Rolle in einer bestimmten Organisation haben.
-
getOrgAccountsByRole
- Diese Methode gibt Informationen zu allen Firmen zurück, die eine bestimmte Rolle in einer bestimmten Organisation haben.
Methoden für das Transaktionshistorienmanagement
-
getTransactionById
- Diese Methode gibt die Historie eines
Transaction
-Assets zurück. -
deleteHistoricalTransactions
- Diese Methode gibt ein Array der Transaktionshistoriendetails für ein angegebenes Konto zurück.
-
getAccountTransactionHistory
- Diese Methode gibt ein Array der Transaktionshistoriendetails für ein angegebenes Konto zurück.
-
getAccountTransactionHistoryWithFilters
- Diese Methode gibt ein Array der Transaktionshistoriendetails für ein angegebenes Konto zurück. Diese Methode kann nur aufgerufen werden, wenn sie mit dem Remote-Netzwerk von Oracle Blockchain Platform verbunden ist.
-
getSubTransactionHistory
- Diese Methode gibt ein Array der Transaktionshistoriendetails für eine angegebene Transaktion zurück.
-
getSubTransactionHistoryWithFilters
- Diese Methode gibt ein Array der Details der Untertransaktionshistorie für eine angegebene Transaktion zurück.
Verwaltung des Tokenverhaltens
Token
aus dem Modul ../lib/token
.
import { Token } from '../lib/token';
Methoden für Token Behavior Management - Mintable Behavior
-
mint
- Diese Methode mindert eine Menge an Token, die dann dem Aufrufer der Methode gehören. Der Anrufer muss ein Konto und die Minter-Rolle haben. Die Menge muss innerhalb der Dezimalwerte liegen, die durch den Parameter
decimal
des Verhaltensdivisible
in der Spezifikationsdatei angegeben werden. -
getTotalMintedTokens
- Diese Methode gibt die Gesamtanzahl der Token zurück, die geprägt wurden.
-
getNetTokens
- Diese Methode gibt die Nettomenge der im System verfügbaren Token zurück. Die Netto-Token sind die Anzahl der verbleibenden Token, nachdem Token gebrannt wurden. In Gleichungsform: Netto-Token = Gesamt-Mint-Token - Gesamt verbrannte Token. Wenn keine Token gebrannt werden, ist die Anzahl der Net-Token gleich der Gesamtanzahl der gebrannten Token.
-
getMaxMintQuantity
- Diese Methode gibt die maximale Mindestmenge für ein Token zurück. Wenn das Verhalten
max_mint_quantity
nicht angegeben ist, lautet der Standardwert 0, sodass eine beliebige Anzahl von Token geprägt werden kann.
Methoden für die Verwaltung des Tokenverhaltens - Übertragbares Verhalten
-
transfer
- Diese Methode überträgt Token vom Transaktionsaufrufer an das Konto
to_account_id
. Der Aufrufer dieser Methode muss ein Konto haben, und die Menge muss innerhalb der Dezimalwerte liegen, die durch den Parameterdecimal
des Verhaltensdivisible
in der Spezifikationsdatei angegeben werden. -
bulkTransfer
- Diese Methode wird verwendet, um eine Massenübertragung von Token vom Aufruferkonto auf die Konten durchzuführen, die im Objekt
flow
angegeben sind. Für den Aufrufer dieser Methode muss bereits ein Konto erstellt sein.
Methoden für die Verwaltung des Tokenverhaltens - Haltbares Verhalten
-
hold
- Diese Methode erstellt eine Sperre für den Eigentümer der Token mit dem Account
to_account_id
. Es wurde ein Notarkonto angegeben, das für den Abschluss oder die Freigabe der Sperre verantwortlich ist. Wenn die Sperre erstellt wird, wird der angegebene Tokensaldo des Zahlers gesperrt. Ein gesperrter Saldo kann erst übertragen werden, wenn die Sperre abgeschlossen oder freigegeben wurde. Für den Aufrufer dieser Methode muss bereits ein Konto erstellt sein. -
executeHold
- Diese Methode schließt eine Sperre der Token ab und überträgt die angegebene Menge der zuvor gesperrten Token an den Empfänger. Wenn der Wert
quantity
kleiner als der tatsächliche Sperrwert ist, ist der Restbetrag wieder für den ursprünglichen Eigentümer der Token verfügbar. Diese Methode kann nur von derAccountOwner
-ID mit der Rollenotary
für die angegebene Vorgangs-ID aufgerufen werden. Die Sperre kann nur vom Notar abgeschlossen werden. -
releaseHold
- Diese Methode gibt eine Sperre von Token frei. Die Übertragung ist nicht abgeschlossen, und alle gehaltenen Token stehen dem ursprünglichen Eigentümer wieder zur Verfügung. Diese Methode kann von der
AccountOwner
-ID mit der Rollenotary
innerhalb des angegebenen Zeitraums oder vom Zahler, Zahlungsempfänger oder Notar nach dem angegebenen Zeitraum aufgerufen werden. -
getOnHoldIds
- Diese Methode gibt eine Liste aller Halte-IDs für ein bestimmtes Konto zurück.
-
getOnHoldDetailsWithOperationId
- Diese Methode gibt die gesperrten Transaktionsdetails für eine angegebene Vorgangs-ID und ein bestimmtes Token zurück.
-
getOnHoldBalanceWithOperationId
- Diese Methode gibt den gesperrten Saldo für eine angegebene Vorgangs-ID und ein bestimmtes Token zurück. Diese Methode kann von jedem aufgerufen werden.
Methoden für die Verwaltung des Tokenverhaltens - Burnable Behavior
-
burn
- Diese Methode deaktiviert oder verbrennt Token aus dem Konto des Transaktionsaufrufers. Der Aufrufer dieser Methode muss über einen Account und die Burner-Rolle verfügen. Die Menge muss innerhalb der Dezimalwerte liegen, die durch den Parameter
decimal
des Verhaltensdivisible
in der Spezifikationsdatei angegeben werden.