Gerüstetes Tokenprojekt TypeScript für ERC-1155
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 OchainModel
. Transparente Persistenzfähigkeit oder vereinfachtes ORM wird in der Klasse OchainModel
erfasst. Das folgende Modell zeigt ein ganzes nicht fungibles Token.
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("erc1155+")
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;
@Mandatory()
@Validate(yup.string().required().max(2000))
public tokenUri: string;
@Embedded(ArtCollectionMetadata)
public tokenMetadata: ArtCollectionMetadata;
@Validate(yup.number())
public price: number;
@Validate(yup.boolean())
public on_sale_flag: boolean;
}
@Id("tokenId")
export class Loyalty extends OchainModel<Loyalty> {
public readonly assetType = "otoken";
@Mandatory()
@Validate(
yup
.string()
.required()
.matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/)
.max(16)
)
public tokenId: string;
@ReadOnly("loyalty")
public tokenName: string;
@Validate(yup.string().trim().max(256))
public tokenDesc: string;
@ReadOnly("erc1155+")
public tokenStandard: string;
@ReadOnly("fungible")
public tokenType: string;
@ReadOnly("fractional")
public tokenUnit: string;
@ReadOnly(["divisible","mintable","transferable","burnable","roles"])
public behaviors: string[];
@ReadOnly({ minter_role_name: "minter" })
public roles: object;
@ReadOnly({ max_mint_quantity: 10000 })
public mintable: object;
@ReadOnly({ decimal: 2 })
public divisible: object;
@Validate(yup.string())
public currency_name: string;
@Validate(yup.number())
public token_to_currency_ratio: number;
}
Das folgende Modell zeigt ein fraktioniertes nicht fungibles Token.export class RealEstatePropertyMetadata extends EmbeddedModel<RealEstatePropertyMetadata> {
@Validate(yup.string())
public propertyType: string;
@Validate(yup.string())
public propertyName: string;
@Validate(yup.string())
public propertyAddress: string;
@Validate(yup.string())
public propertyImage: string;
}
@Id("tokenId")
export class RealEstateProperty extends OchainModel<RealEstateProperty> {
public readonly assetType = "otoken";
@Mandatory()
@Validate(
yup
.string()
.required()
.matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/)
.max(16)
)
public tokenId: string;
@ReadOnly("realestateproperty")
public tokenName: string;
@Validate(yup.string().trim().max(256))
public tokenDesc: string;
@ReadOnly("erc1155+")
public tokenStandard: string;
@ReadOnly("nonfungible")
public tokenType: string;
@ReadOnly("fractional")
public tokenUnit: string;
@ReadOnly(["divisible","mintable","transferable","roles"])
public behaviors: string[];
@ReadOnly({ minter_role_name: "minter" })
public roles: object;
@ReadOnly({ max_mint_quantity: 0 })
public mintable: object;
@Validate(yup.number().positive())
public quantity: number;
@Validate(yup.string())
public createdBy: string;
@Validate(yup.string())
public creationDate: string;
@ReadOnly({ decimal: 0 })
public divisible: object;
@Validate(yup.bool())
public isBurned: boolean;
@Mandatory()
@Validate(yup.string().required().max(2000))
public tokenUri: string;
@Embedded(RealEstatePropertyMetadata)
public tokenMetadata: RealEstatePropertyMetadata;
@Validate(yup.number())
public propertySellingPrice: number;
@Validate(yup.number())
public propertyRentingPrice: number;
}
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
-
isTokenAdmin
- Diese Methode gibt den booleschen Wert
true
zurück, wenn der Aufrufer der Funktion einToken Admin
ist. Andernfalls wirdfalse
zurückgegeben. Diese Methode kann nur von einemToken Admin
des Chaincodes aufgerufen werden. -
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. Sie können sich nicht selbst alsToken Admin
entfernen. -
getAllTokenAdmins
- Diese Methode gibt eine Liste aller Benutzer zurück, die ein
Token Admin
des Chaincodes sind. Diese Methode kann nur von einemToken Admin
des Chaincodes aufgerufen werden.
Methoden für die Tokenkonfigurationsverwaltung
-
init
- Diese Methode wird aufgerufen, wenn der Chaincode instanziiert wird. Alle
Token Admin
werden durch die InformationenuserId
undorgId
im ParameteradminList
identifiziert.userId
ist der Benutzername oder die E-Mail-ID des Instanzeigentümers oder des bei der Instanz angemeldeten Benutzers. DieorgId
ist die Membership Service Provider-(MSP-)ID des Benutzers in der aktuellen Netzwerkorganisation. Der ParameteradminList
ist beim ersten Deployment des Chaincodes obligatorisch. Wenn Sie den Chaincode upgraden, übergeben Sie eine leere Liste ([]
). Wenn Sie der Benutzer sind, der den Chaincode ursprünglich bereitgestellt hat, können Sie beim Upgrade des Chaincodes auch neue Admins im ParameteradminList
angeben. Alle anderen Informationen im ParameteradminList
werden bei Upgrades ignoriert. -
create<Token Name>Token
- Diese Methode erstellt Token. Jedes definierte Token verfügt über eine eigene Erstellungsmethode. Bei fungiblen Token kann diese Methode nur von einem
Token Admin
des Chaincodes aufgerufen werden. Wenn bei nicht fungiblen Token die Minter-Rolle in der Spezifikationsdatei definiert ist, kann jeder Benutzer mit der Minter-Rolle diese Methode aufrufen, um eine NFT zu erstellen. Wenn die Minter-Rolle nicht definiert ist, kann jeder Benutzer mit dieser Methode NFTs (mint) erstellen. Der Benutzer, der diese Methode aufruft, wird zum Eigentümer der NFT. -
update<Token Name>Token
- Diese Methode aktualisiert Token. Jedes definierte Token verfügt über eine eigene Aktualisierungsmethode. Sie können keine Tokenmetadaten oder die Token-URI von nicht fungiblen Token aktualisieren. Bei fungiblen Token kann diese Methode nur von einem
Token Admin
des Chaincodes aufgerufen werden. Bei nicht fungiblen Token kann diese Methode nur vom Token-Eigentümer aufgerufen werden. -
getTokenHistory
- Diese Methode gibt die Historie für eine angegebene Token-ID zurück. Jeder kann diese Methode nennen.
-
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-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht. -
getTokenById
- Diese Methode gibt ein Tokenobjekt zurück, wenn das Token in der Statusdatenbank vorhanden ist. Bei partiellen NFTs wird auch die Liste der Eigentümer zurückgegeben. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder des Tokeneigentümers aufgerufen werden. -
getAllTokensByUser
- Diese Methode gibt alle Tokenassets zurück, deren Eigentümer ein angegebener Benutzer ist. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder vom Accounteigentümer aufgerufen werden. -
ownerOf
- Diese Methode gibt die Konto-ID, Organisations-ID und Benutzer-ID des Eigentümers der angegebenen Token-ID zurück. Jeder kann diese Methode nennen.
-
URI
- Diese Methode gibt den URI eines angegebenen Tokens zurück. Jeder kann diese Methode nennen.
-
name
- Diese Methode gibt den Namen der Token-Klasse zurück. Jeder kann diese Methode nennen.
-
totalSupply
- Diese Methode gibt die Gesamtanzahl der Münztoken zurück. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. -
totalNetSupply
- Diese Methode gibt die Gesamtanzahl der Münztoken abzüglich der Anzahl der gebrannten Token zurück. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. -
getTokensByName
- Diese Methode gibt alle Tokenassets für einen angegebenen Tokennamen zurück. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. -
getTokenDecimal
- Diese Methode gibt die Anzahl der Dezimalstellen für ein angegebenes Token zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden.
Methoden für die Accountverwaltung
-
createAccount
- Mit dieser Methode wird ein Konto für einen angegebenen Benutzer erstellt, und das zugehörige Token berücksichtigt fungible oder nicht fungible Token. Ein Konto muss für jeden Benutzer erstellt werden, der jederzeit Token hat. Das Benutzerkonto verfolgt das NFT-Konto und die fungiblen Token-Konten, die ein Benutzer besitzt. Benutzer müssen über Konten im Netzwerk verfügen, um tokenbezogene Vorgänge abzuschließen. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden.Ein Benutzerkonto hat eine eindeutige ID, die durch einen SHA-256-Hash des Parameters
orgId
und des ParametersuserId
gebildet wird.Ein Benutzer kann mehrere fungible Token-Konten mit eindeutigen Konto-IDs haben. Unsichtbare Token-Konto-IDs werden durch einen SHA-256-Hash des Parameters
orgId
, den ParameteruserId
, die durch das Tilde-Symbol (~
) getrennte Konstantenzeichenfolgeft
und eine Zählernummer gebildet, die den Index des fungiblen Kontos angibt, das durch das Tilde-Symbol (~
) getrennt erstellt wird.Ein Benutzer kann nur ein nicht fungibles Token-Konto haben. Konten-IDs für nicht fungible Token sind eindeutig und werden durch einen SHA-256-Hash des Parameters
orgId
, den ParameteruserId
und die Konstantenzeichenfolgenft
gebildet, die durch das Tilde-Symbol (~
) getrennt sind. Alle nicht fungiblen Token, die einem Benutzer gehören, ob ganz oder teilweise, sind mit diesem Konto verknüpft.Benutzeraccount-IDs beginnen mit
ouaccount~
. Tokenaccount-IDs beginnen mitoaccount~
. -
createUserAccount
- Mit dieser Methode wird ein Account für einen angegebenen Benutzer erstellt. Ein Konto muss für jeden Benutzer erstellt werden, der jederzeit Token hat. Das Benutzerkonto verfolgt das NFT-Konto und die fungiblen Token-Konten, über die ein Benutzer verfügt. Benutzer müssen über Konten im Netzwerk verfügen, um tokenbezogene Vorgänge abzuschließen.
Eine Account-ID ist ein SHA-256-Hash mit dem Parameter
orgId
und dem ParameteruserId
. Diese Methode kann nur von einemToken Admin
des Chaincodes aufgerufen werden. -
createTokenAccount
- Diese Methode erstellt ein fungibles oder nicht fungibles Token-Konto, das einem Benutzerkonto zugeordnet werden kann.
Ein Benutzer kann mehrere fungible Token-Konten mit eindeutigen Konto-IDs haben. Unsichtbare Token-Konto-IDs werden durch einen SHA-256-Hash des Parameters
orgId
, den ParameteruserId
, die durch das Tilde-Symbol (~
) getrennte Konstantenzeichenfolgeft
und eine Zählernummer gebildet, die den Index des fungiblen Kontos angibt, das durch das Tilde-Symbol (~
) getrennt erstellt wird.Ein Benutzer kann nur ein nicht fungibles Token-Konto haben. Konten-IDs für nicht fungible Token sind eindeutig und werden durch einen SHA-256-Hash des Parameters
orgId
, den ParameteruserId
und die Konstantenzeichenfolgenft
gebildet, die durch das Tilde-Symbol (~
) getrennt sind. Alle nicht fungiblen Token, die einem Benutzer gehören, ob ganz oder teilweise, sind mit diesem Konto verknüpft.Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. -
associateFungibleTokenAccount
- Diese Methode verknüpft das fungible Token-Konto eines Benutzers mit einem bestimmten fungiblen Token.
Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. -
getAccountHistory
- Diese Methode gibt die Historie für ein angegebenes Tokenkonto zurück. Dies ist eine asynchrone Methode. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder vom Accounteigentümer aufgerufen werden. -
getAccount
- Diese Methode gibt Tokenaccountdetails für einen angegebenen Benutzer zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder demAccount Owner
des Accounts aufgerufen werden. -
getAllAccounts
- Diese Methode gibt Details aller Benutzeraccounts zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. -
getAccountDetailsByUser
- Diese Methode gibt eine Kontenübersicht für einen angegebenen Benutzer und Details zu fungiblen und nicht fungiblen Token zurück, die dem Benutzer zugeordnet sind. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder demAccount Owner
des Accounts aufgerufen werden. -
getUserByAccountId
- Diese Methode gibt die Benutzerdetails einer angegebenen Account-ID zurück. Diese Methode kann von jedem Benutzer 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 aufgerufen werden. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben. Der angegebene Benutzer muss über ein Token-Konto verfügen, das mit dem fungiblen Token verknüpft ist, oder über ein nicht fungibles Token-Konto für NFT-Rollen. Die angegebene Rolle muss in der Spezifikationsdatei für das Token vorhanden sein. -
isInRole
- Diese Methode gibt einen booleschen Wert zurück, der angibt, ob ein Benutzer eine angegebene Rolle hat. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder demAccount Owner
des Accounts aufgerufen werden. Der angegebene Benutzer muss über ein Token-Konto verfügen, das mit dem fungiblen Token verknüpft ist, oder über ein nicht fungibles Token-Konto für NFT-Rollen. Die angegebene Rolle muss in der Spezifikationsdatei für das Token vorhanden sein. -
removeRole
- Diese Methode entfernt eine Rolle von einem angegebenen Benutzer und Token. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. Der angegebene Benutzer muss über ein Token-Konto verfügen, das mit dem fungiblen Token verknüpft ist, oder über ein nicht fungibles Token-Konto für NFT-Rollen. Die angegebene Rolle muss in der Spezifikationsdatei für das Token vorhanden sein. -
getAccountsByRole
- Diese Methode gibt eine Liste aller Konto-IDs für eine angegebene Rolle und ein bestimmtes Token zurück. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben. 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 und ein bestimmtes Token zurück. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden.
Methoden für das Transaktionshistorienmanagement
-
getAccountTransactionHistory
- Diese Methode gibt die Kontotransaktionshistorie zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder vom Accounteigentümer aufgerufen werden. Bei nicht fungiblen Token kann diese Methode nur aufgerufen werden, wenn sie mit dem Remote-Oracle Blockchain Platform-Netzwerk verbunden ist. -
getTransactionById
- Diese Methode gibt die Transaktionsdetails für eine angegebene Transaktions-ID zurück. Jeder kann diese Methode nennen.
-
deleteHistoricalTransactions
- Diese Methode löscht Transaktionen vor einem angegebenen Zeitstempel aus der Statusdatenbank. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden.
Methoden für Token Behavior Management - Mintable Behavior
-
mintBatch
- Diese Methode erstellt (Minuten) mehrere Token in einem Batchvorgang. Diese Methode erstellt nur fungible Token oder fraktionierte nicht fungible Token.
Wenn für fungible Token die Minter-Rolle in der Spezifikationsdatei definiert ist, kann jeder Benutzer mit der Minter-Rolle diese Methode aufrufen. Wenn nicht, kann jeder Benutzer diese Methode verwenden, um Token zu kennzeichnen. Sie können nicht mehr als die Eigenschaft
max_mint_quantity
des Tokens mint, wenn diese Eigenschaft beim Erstellen oder Aktualisieren des Tokens angegeben wurde.Wenn bei nicht fungiblen Token die Minter-Rolle in der Spezifikationsdatei definiert ist, kann jeder Benutzer mit der Minter-Rolle diese Methode aufrufen. Wenn nicht, kann jeder Benutzer diese Methode verwenden, um Token zu kennzeichnen. Darüber hinaus muss der Anrufer auch der Ersteller des Tokens sein. Es gibt keine obere Grenze für die Menge der fraktionierten nicht fungiblen Token, die geprägt werden können.
Sie können diese Methode nicht verwenden, um ein ganzes nicht fungibles Token zu prägen.
Methoden für die Verwaltung des Tokenverhaltens - Übertragbares Verhalten
-
batchTransferFrom
- Mit dieser Methode wird ein Batchvorgang abgeschlossen, bei dem Token, die in einer Liste mit Token-IDs angegeben sind, von einem Benutzer an einen anderen übertragen werden.
Bei NFTs muss der Absender der NFT das Token besitzen, da die Methode das Eigentum an der NFT überträgt.
Bei partiellen NFTs verliert ein Benutzer (einschließlich des Erstellers des Tokens) alle Aktien, die er besitzt, das Eigentum an dem Token. Wenn ein Anteil eines Tokens an einen Benutzer übertragen wird, wird dieser Benutzer automatisch zu einem der Eigentümer der partiellen NFT.
Diese Methode validiert nicht, ob der Aufrufer der Methode der angegebene Absender ist. Diese Methode kann von jedem Benutzer aufgerufen werden.
-
safeBatchTransferFrom
- Mit dieser Methode wird ein Batchvorgang abgeschlossen, bei dem Token, die in einer Liste mit Token-IDs angegeben sind, von einem Benutzer an einen anderen übertragen werden.
Bei NFTs muss der Absender der NFT das Token besitzen, da die Methode das Eigentum an der NFT überträgt.
Bei partiellen NFTs verliert ein Benutzer (einschließlich des Erstellers des Tokens) alle Aktien, die er besitzt, das Eigentum an dem Token. Wenn ein Anteil eines Tokens an einen Benutzer übertragen wird, wird dieser Benutzer automatisch zu einem der Eigentümer der partiellen NFT.
Der Aufrufer der Methode muss der angegebene Absender sein. Diese Methode kann von jedem Benutzer aufgerufen werden.
-
balanceOfBatch
- Mit dieser Methode wird ein Batchvorgang abgeschlossen, der den Saldo von Tokenkonten abruft. Die Kontodetails werden in drei separaten Listen mit Organisations-IDs, Benutzer-IDs und Token-IDs angegeben. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder von Kontoinhabern aufgerufen werden. Kontoinhaber können Saldendetails nur für Konten anzeigen, für die sie verantwortlich sind. -
exchangeToken
- Diese Methode tauscht Token zwischen angegebenen Konten aus. Diese Methode unterstützt nur den Austausch zwischen einem NFT und einem fungiblen Token oder einem fungiblen Token und einem NFT. Die NFT kann ganz oder teilweise sein. Diese Methode kann nur vom Kontoinhaber aufgerufen werden.
Methoden für die Verwaltung des Tokenverhaltens - Burnable Behavior
-
burnBatch
- Diese Methode deaktiviert oder verbrennt die angegebenen fungiblen und nicht fungiblen Token. Jeder Benutzer mit der Brennerrolle kann diese Methode aufrufen.
-
burnNFT
- Diese Methode deaktiviert oder verbrennt das angegebene nicht fungible Token und gibt ein Tokenobjekt und eine Tokenhistorie zurück. Jeder Benutzer mit der Brennerrolle kann diese Methode aufrufen.
SDK-Methoden
- Access Control Management
- Tokenkonfigurationsverwaltung
- Kontoverwaltung
- Rollenverwaltung
- Transaktionshistorienverwaltung
- Verwaltung des Tokenverhaltens
Methoden für Access Control Management
-
checkAuthorization
- Mit dieser Methode können Sie einem Vorgang eine Zugriffskontrollprüfung hinzufügen. Dies ist eine asynchrone Funktion. Bestimmte Tokenmethoden können nur vom Token
Token Admin
oderAccountOwner
oder vom TokenMultipleAccountOwner
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.ADMIN: { isUserTokenAdmin: ["Admin"], 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"], getTokenHistory: ["Admin"], }, ROLE: { getAccountsByRole: ["Admin"], getUsersByRole: ["Admin"], }, TRANSACTION: { deleteTransactions: ["Admin"], }, ACCOUNT: { createAccount: ["Admin"], associateToken: ["Admin"], getAllAccounts: ["Admin"], getAccountsByUser: ["Admin", "MultipleAccountOwner"], getAccount: ["Admin", "AccountOwner"], history: ["Admin", "AccountOwner"], getAccountTransactionHistory: ["Admin", "AccountOwner"], getAccountTransactionHistoryWithFilters: ["Admin", "AccountOwner"], getSubTransactionsById: ["Admin", TRANSACTION_INVOKER], getSubTransactionsByIdWithFilters: ["Admin", TRANSACTION_INVOKER], getAccountBalance: ["Admin", "AccountOwner"], getAccountOnHoldBalance: ["Admin", "AccountOwner"], getOnHoldIds: ["Admin", "AccountOwner"], getConversionHistory: ["Admin", "AccountOwner"], }, ACCOUNT_STATUS: { get: ["Admin", "AccountOwner"], history: ["Admin", "AccountOwner"], activateAccount: ["Admin"], suspendAccount: ["Admin"], deleteAccount: ["Admin"], }, TOKEN_CONVERSION: { initializeExchangePoolUser: ["Admin"], addConversionRate: ["Admin"], updateConversionRate: ["Admin"], getConversionRate: ["Admin", "AnyAccountOwner"], getConversionRateHistory: ["Admin", "AnyAccountOwner"], tokenConversion: ["Admin", "AnyAccountOwner"], getExchangePoolUser: ["Admin"], }, 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"], getAccountByUser: ["Admin", "MultipleAccountOwner"], history: ["Admin", "AccountOwner"], getAccountTransactionHistory: ["Admin", "AccountOwner"], getAccountTransactionHistoryWithFilters: ["Admin", "AccountOwner"], balanceOf: ["Admin", "MultipleAccountOwner"], }, ERC1155ADMIN: { isUserTokenAdmin: ["Admin"], addAdmin: ["Admin"], removeAdmin: ["Admin"], getAllAdmins: ["Admin"], }, ERC1155TOKEN: { getAllTokens: ["Admin"], get: ["Admin", TOKEN_OWNER], getAllTokensByUser: ["Admin", "AccountOwner"], totalSupply: ["Admin"], totalNetSupply: ["Admin"], getTokensByName: ["Admin"], getDecimals: ["Admin"], addRoleMember: ["Admin"], removeRoleMember: ["Admin"], isInRole: ["Admin", "AccountOwner"], save: ["Admin"], update: ["Admin"], }, ERC1155ACCOUNT: { createAccount: ["Admin"], createUserAccount: ["Admin"], createTokenAccount: ["Admin"], associateFungibleTokenToAccount: ["Admin", "AccountOwner"], getAccountsByUser: ["Admin", "AccountOwner"], getAccount: ["Admin", "AccountOwner"], history: ["Admin", "AccountOwner"], getAllAccounts: ["Admin"], balanceOfBatch: ["Admin"], getAccountTransactionHistory: ["Admin", "AccountOwner"], getAccountTransactionHistoryWithFilters: ["Admin", "AccountOwner"], exchangeToken: ["AccountOwner"], getAccountDetailsByUser: ["Admin", "AccountOwner"], }, ERC1155ROLE: { getAccountsByRole: ["Admin"], getUsersByRole: ["Admin"], },
-
isUserTokenAdmin
- Diese Methode gibt den booleschen Wert
true
zurück, wenn der angegebene Benutzer einToken Admin
ist, und andernfallsfalse
. Die Methode kann nur von einemToken Admin
des Token Chaincodes aufgerufen werden. -
addAdmin
- Mit dieser Methode wird ein Benutzer als
Token Admin
des Token Chaincodes hinzugefügt. Die Methode kann nur von einemToken Admin
des Token Chaincodes aufgerufen werden. -
removeAdmin
- Mit dieser Methode wird ein Benutzer als
Token Admin
des Token Chaincodes entfernt. Die Methode kann nur von einemToken Admin
des Token Chaincodes aufgerufen werden. Sie können sich nicht selbst alsToken Admin
entfernen. -
getAllAdmins
- Diese Methode gibt eine Liste aller
Token Admin
-Benutzer zurück.
Methoden für die Tokenkonfigurationsverwaltung
-
save
- Diese Methode erstellt Token. Jedes definierte Token verfügt über eine eigene Erstellungsmethode. Wenn für nicht fungible Token die Minter-Rolle in der Spezifikationsdatei definiert ist, kann jeder Benutzer mit der Minter-Rolle diese Methode aufrufen, um eine NFT zu erstellen. Ist dies nicht der Fall, kann jeder Benutzer mit dieser Methode NFTs erstellen. Der Benutzer, der diese Methode aufruft, wird zum Eigentümer der NFT (ganz oder Bruchteil).
-
update
- Diese Methode aktualisiert Token. Sie können keine Tokenmetadaten oder die Token-URI von nicht fungiblen Token aktualisieren.
-
history (Token)
- Diese Methode gibt die Historie für eine angegebene Token-ID zurück.
-
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-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht. -
get (Token)
- 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. -
getAllTokensByUser
- Diese Methode gibt alle Tokenassets zurück, deren Eigentümer ein angegebener Benutzer ist. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
-
ownerOf
- Diese Methode gibt die Konto-ID, Organisations-ID und Benutzer-ID des Eigentümers der angegebenen Token-ID zurück.
-
tokenURI
- Diese Methode gibt den URI eines angegebenen Tokens zurück. Jeder kann diese Methode nennen.
-
name
- Diese Methode gibt den Namen der Token-Klasse zurück. Jeder kann diese Methode nennen.
-
totalSupply
- Diese Methode gibt die Gesamtanzahl der Münztoken zurück. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben.
-
totalNetSupply
- Diese Methode gibt die Gesamtanzahl der Münztoken abzüglich der Anzahl der gebrannten Token zurück. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben.
-
getTokensByName
- Diese Methode gibt alle Tokenassets für einen angegebenen Tokennamen zurück. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
-
getDecimals
- Diese Methode gibt die Anzahl der Dezimalstellen für ein angegebenes Token zurück. Wenn das teilbare Verhalten für das Token nicht angegeben ist, wird der Standardwert mit null Dezimalstellen zurückgegeben.
Methoden für die Accountverwaltung
-
createAccount
- Mit dieser Methode wird ein Konto für einen angegebenen Benutzer erstellt, und das zugehörige Token berücksichtigt fungible oder nicht fungible Token. Ein Konto muss für jeden Benutzer erstellt werden, der jederzeit Token hat. Das Benutzerkonto verfolgt das NFT-Konto und die fungiblen Token-Konten, über die ein Benutzer verfügt. Benutzer müssen über Konten im Netzwerk verfügen, um tokenbezogene Vorgänge abzuschließen. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden.Ein Benutzerkonto hat eine eindeutige ID, die durch einen SHA-256-Hash des Parameters
orgId
und des ParametersuserId
gebildet wird.Ein Benutzer kann mehrere fungible Token-Konten mit eindeutigen Konto-IDs haben. Unsichtbare Token-Konto-IDs werden durch einen SHA-256-Hash des Parameters
orgId
, den ParameteruserId
, die durch das Tilde-Symbol (~
) getrennte Konstantenzeichenfolgeft
und eine Zählernummer gebildet, die den Index des fungiblen Kontos angibt, das durch das Tilde-Symbol (~
) getrennt erstellt wird.Ein Benutzer kann nur ein nicht fungibles Token-Konto haben. Konten-IDs für nicht fungible Token sind eindeutig und werden durch einen SHA-256-Hash des Parameters
orgId
, den ParameteruserId
und die Konstantenzeichenfolgenft
gebildet, die durch das Tilde-Symbol (~
) getrennt sind. Alle nicht fungiblen Token, die ein Benutzer besitzt, unabhängig davon, ob sie ganz oder teilweise sind, sind mit diesem einzelnen nicht fungiblen Token-Konto verknüpft. -
createUserAccount
- Mit dieser Methode wird ein Account für einen angegebenen Benutzer erstellt. Ein Konto muss für jeden Benutzer erstellt werden, der jederzeit Token hat. Das Benutzerkonto verfolgt das NFT-Konto und die fungiblen Token-Konten, über die ein Benutzer verfügt. Benutzer müssen über Konten im Netzwerk verfügen, um tokenbezogene Vorgänge abzuschließen.
Eine Konto-ID ist ein SHA-256-Hash mit dem Parameter
orgId
und dem ParameteruserId
. Diese Methode kann nur von einemToken Admin
des Chaincodes aufgerufen werden. -
createTokenAccount
- Diese Methode erstellt ein fungibles oder nicht fungibles Token-Konto, das einem Benutzerkonto zugeordnet werden kann.
Ein Benutzer kann mehrere fungible Token-Konten mit eindeutigen Konto-IDs haben. Unsichtbare Token-Konto-IDs werden durch einen SHA-256-Hash des Parameters
orgId
, den ParameteruserId
, die durch das Tilde-Symbol (~
) getrennte Konstantenzeichenfolgeft
und eine Zählernummer gebildet, die den Index des fungiblen Kontos angibt, das durch das Tilde-Symbol (~
) getrennt erstellt wird.Ein Benutzer kann nur ein nicht fungibles Token-Konto haben. Konten-IDs für nicht fungible Token sind eindeutig und werden durch einen SHA-256-Hash des Parameters
orgId
, den ParameteruserId
und die Konstantenzeichenfolgenft
gebildet, die durch das Tilde-Symbol (~
) getrennt sind. Alle nicht fungiblen Token, die ein Benutzer besitzt, unabhängig davon, ob sie ganz oder teilweise sind, sind mit diesem einzelnen nicht fungiblen Token-Konto verknüpft.Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. -
associateTokenToToken
- Diese Methode verknüpft das fungible Token-Konto eines Benutzers mit einem bestimmten fungiblen Token.
-
getAccountHistory
- Diese Methode gibt die Historie für ein angegebenes Tokenkonto zurück.
-
getAccountWithStatus
- Diese Methode gibt Tokenaccountdetails, einschließlich Accountstatus, für einen angegebenen Benutzer zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder demAccount Owner
des Accounts aufgerufen werden. -
getAccount
- Diese Methode gibt Tokenaccountdetails für einen angegebenen Benutzer zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder demAccount Owner
des Accounts aufgerufen werden. -
getAllAccounts
- Diese Methode gibt Details aller Benutzeraccounts zurück.
-
getAccountDetailsByUser
- Diese Methode gibt eine Kontenübersicht für einen angegebenen Benutzer und Details von fungiblen und nicht fungiblen Token zurück, die dem Benutzer zugeordnet sind.
-
getUserByAccountId
- Diese Methode gibt die Benutzerdetails einer angegebenen Account-ID zurück.
Methoden für die Rollenverwaltung
-
AddRoleMember
- Diese Methode fügt einem angegebenen Benutzer und Token eine Rolle hinzu. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben.
-
isInRole
- Diese Methode gibt einen booleschen Wert zurück, der angibt, ob ein Benutzer eine angegebene Rolle hat. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben.
-
removeRoleMember
- Diese Methode entfernt eine Rolle von einem angegebenen Benutzer und Token. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben.
-
getAccountsByRole
- Diese Methode gibt eine Liste aller Konto-IDs für eine angegebene Rolle und ein bestimmtes Token zurück. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben.
-
getUsersByRole
- Diese Methode gibt eine Liste aller Benutzer für eine angegebene Rolle und ein bestimmtes Token zurück. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben.
Methoden für das Transaktionshistorienmanagement
-
getAccountTransactionHistory
- Diese Methode gibt die Kontotransaktionshistorie zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder vom Accounteigentümer aufgerufen werden. Bei nicht fungiblen Token kann diese Methode nur aufgerufen werden, wenn sie mit dem Remote-Oracle Blockchain Platform-Netzwerk verbunden ist. -
getTransactionById
- Diese Methode gibt die Transaktionsdetails für eine angegebene Transaktions-ID zurück.
-
deleteTransactions
- Diese Methode löscht Transaktionen vor einem angegebenen Zeitstempel aus der Statusdatenbank.
Methoden für Token Behavior Management - Mintable Behavior
-
mintBatch
- Diese Methode erstellt (Minuten) mehrere Token in einem Batchvorgang. Diese Methode erstellt nur fungible Token oder fraktionierte nicht fungible Token.
Wenn für fungible Token die Minter-Rolle in der Spezifikationsdatei definiert ist, kann jeder Benutzer mit der Minter-Rolle diese Methode aufrufen. Wenn nicht, kann jeder Benutzer diese Methode verwenden, um Token zu kennzeichnen. Sie können nicht mehr als die Eigenschaft
max_mint_quantity
des Tokens mint, wenn diese Eigenschaft beim Erstellen oder Aktualisieren des Tokens angegeben wurde.Wenn bei nicht fungiblen Token die Minter-Rolle in der Spezifikationsdatei definiert ist, kann jeder Benutzer mit der Minter-Rolle diese Methode aufrufen. Wenn nicht, kann jeder Benutzer diese Methode verwenden, um Token zu kennzeichnen. Darüber hinaus muss der Anrufer auch der Ersteller des Tokens sein. Es gibt keine obere Grenze für die Menge der fraktionierten nicht fungiblen Token, die geprägt werden können.
Sie können diese Methode nicht verwenden, um ein ganzes nicht fungibles Token zu prägen.
Methoden für die Verwaltung des Tokenverhaltens - Übertragbares Verhalten
-
batchTransferFrom
- Mit dieser Methode wird ein Batchvorgang abgeschlossen, bei dem Token, die in einer Liste mit Token-IDs angegeben sind, von einem Benutzer an einen anderen übertragen werden.
Bei NFTs muss der Absender der NFT das Token besitzen, da die Methode das Eigentum an der NFT überträgt.
Bei partiellen NFTs verliert ein Benutzer (einschließlich des Erstellers des Tokens) alle Aktien, die er besitzt, das Eigentum an dem Token. Wenn ein Anteil eines Tokens an einen Benutzer übertragen wird, wird dieser Benutzer automatisch zu einem der Eigentümer der partiellen NFT.
Diese Methode validiert nicht, ob der Aufrufer der Methode der angegebene Absender ist.
-
safeBatchtransferFrom
- Mit dieser Methode wird ein Batchvorgang abgeschlossen, bei dem Token, die in einer Liste mit Token-IDs angegeben sind, von einem Benutzer an einen anderen übertragen werden.
Bei NFTs muss der Absender der NFT das Token besitzen, da die Methode das Eigentum an der NFT überträgt.
Bei partiellen NFTs verliert ein Benutzer (einschließlich des Erstellers des Tokens) alle Aktien, die er besitzt, das Eigentum an dem Token. Wenn ein Anteil eines Tokens an einen Benutzer übertragen wird, wird dieser Benutzer automatisch zu einem der Eigentümer der partiellen NFT.
Der Aufrufer der Methode muss der angegebene Absender sein.
-
balanceOfBatch
- Mit dieser Methode wird ein Batchvorgang abgeschlossen, der den Saldo von Tokenkonten abruft. Die Kontodetails werden in drei separaten Listen mit Organisations-IDs, Benutzer-IDs und Token-IDs angegeben. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder von Kontoinhabern aufgerufen werden. Kontoinhaber können Saldendetails nur für Konten anzeigen, für die sie verantwortlich sind. -
exchangeToken
- Diese Methode tauscht Token zwischen angegebenen Konten aus. Diese Methode unterstützt nur den Austausch zwischen einem NFT (Ganz oder Bruch) und einem fungiblen Token oder einem fungiblen Token und einem NFT (Ganz oder Bruch). Diese Methode kann nur vom Kontoinhaber aufgerufen werden.
Methoden für die Verwaltung des Tokenverhaltens - Burnable Behavior