Gestaffeltes Tokenprojekt TypeScript für ERC-1155
Blockchain App Builder übernimmt die Eingabe aus Ihrer Tokenspezifikationsdatei und generiert ein voll funktionsfähiges gerüstetes Chaincode-Projekt.
Das Projekt generiert automatisch Tokenlebenszyklusklassen und -funktionen, einschließlich CRUD- und Nicht-CRUD-Methoden. 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 Token zusammenhängen, 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. 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 einen fraktionierten nicht fungiblen 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 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 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 Konten verwalten und andere Tokenlebenszyklusaufgaben 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
-
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 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 ([]
). 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 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. Wenn die Minter-Rolle nicht definiert ist, kann jeder Benutzer diese Methode zum Erstellen (Minten) von NFTs verwenden. Der Benutzer, der diese Methode aufruft, wird 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-Rich-Abfragen der Berkeley-DB 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 NFTs mit Bruchteilen 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-Rich-Abfragen der Berkeley-DB 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 die 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 geprägten Token zurück. Fungible 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 geprägten Token abzüglich der Anzahl der gebrannten Token zurück. Fungible 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-Rich-Abfragen der Berkeley-DB 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
- Diese Methode erstellt ein Konto für einen angegebenen Benutzer und zugehörige Tokenkonten für fungible oder nicht fungible Token. Ein Konto muss für jeden Benutzer erstellt werden, der zu einem beliebigen Zeitpunkt 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. Fungible Token-Konto-IDs werden durch einen SHA-256-Hash des Parameters
orgId
, den ParameteruserId
, die durch das Tilde-Symbol (~
) getrennte konstante Zeichenfolgeft
und eine Zählernummer gebildet, die den Index des fungiblen Kontos angibt, das durch das Tilde-Symbol (~
) getrennt erstellt wird.Ein Benutzer kann nur einen nicht fungiblen Tokenaccount haben. Konto-IDs für nicht fungible Token sind eindeutig und werden durch einen SHA-256-Hash des Parameters
orgId
, den ParameteruserId
und die durch das Tilde-Symbol (~
) getrennte konstante Zeichenfolgenft
gebildet. Alle nicht fungiblen Token, für die ein Benutzer verantwortlich ist, ob ganz oder teilweise, sind mit diesem Konto verknüpft.Benutzeraccount-IDs beginnen mit
ouaccount~
. Tokenaccount-IDs beginnen mitoaccount~
. -
createUserAccount
- Diese Methode erstellt einen Account für einen angegebenen Benutzer. Ein Konto muss für jeden Benutzer erstellt werden, der zu einem beliebigen Zeitpunkt Token hat. Das Benutzerkonto verfolgt das NFT-Konto und die fungiblen Token-Konten, die ein Benutzer hat. Benutzer müssen über Konten im Netzwerk verfügen, um tokenbezogene Vorgänge abzuschließen.
Eine Konto-ID ist ein SHA-256-Hash des Parameters
orgId
und des ParametersuserId
. 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. Fungible Token-Konto-IDs werden durch einen SHA-256-Hash des Parameters
orgId
, den ParameteruserId
, die durch das Tilde-Symbol (~
) getrennte konstante Zeichenfolgeft
und eine Zählernummer gebildet, die den Index des fungiblen Kontos angibt, das durch das Tilde-Symbol (~
) getrennt erstellt wird.Ein Benutzer kann nur einen nicht fungiblen Tokenaccount haben. Konto-IDs für nicht fungible Token sind eindeutig und werden durch einen SHA-256-Hash des Parameters
orgId
, den ParameteruserId
und die durch das Tilde-Symbol (~
) getrennte konstante Zeichenfolgenft
gebildet. Alle nicht fungiblen Token, für die ein Benutzer verantwortlich ist, 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 Token-Konto 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 Benutzerkonten 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 Konto-ID zurück. Diese Methode kann von jedem Benutzer aufgerufen werden.
Methoden für die Rollenverwaltung
-
addRole
- Mit dieser Methode wird eine Rolle zu einem angegebenen Benutzer und Token hinzugefügt. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. Fungible Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben. Der angegebene Benutzer muss über ein Tokenkonto verfügen, das mit dem fungiblen Token verknüpft ist, oder über ein nicht fungibles Tokenkonto 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, um anzugeben, ob ein Benutzer über eine angegebene Rolle verfügt. Fungible 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 Tokenkonto verfügen, das mit dem fungiblen Token verknüpft ist, oder über ein nicht fungibles Tokenkonto für NFT-Rollen. Die angegebene Rolle muss in der Spezifikationsdatei für das Token vorhanden sein. -
removeRole
- Diese Methode entfernt eine Rolle aus einem angegebenen Benutzer und Token. Fungible 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 Tokenkonto verfügen, das mit dem fungiblen Token verknüpft ist, oder über ein nicht fungibles Tokenkonto 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. Fungible 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. Fungible 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 eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht. -
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 das Tokenverhaltensmanagement - Mintable Behavior
-
mintBatch
- Diese Methode erstellt (mindert) 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 mintieren. Sie können nicht mehr als die Eigenschaft
max_mint_quantity
des Tokens mintieren, wenn diese Eigenschaft beim Erstellen oder Aktualisieren des Tokens angegeben wurde.Wenn für nicht 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 mintieren. Darüber hinaus muss der Aufrufer auch der Ersteller des Tokens sein. Es gibt keine Obergrenze für die Menge an 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 das Tokenverhaltensmanagement - Übertragbares Verhalten
-
batchTransferFrom
- Diese Methode schließt einen Batchvorgang ab, bei dem Token, die in einer Liste mit Token-IDs angegeben sind, von einem Benutzer an einen anderen Benutzer übertragen werden.
Bei NFTs muss der Absender des NFT das Token besitzen, da die Methode das Eigentum an dem NFT überträgt.
Bei teilweisen NFTs verliert ein Benutzer (einschließlich des Erstellers des Tokens) alle Aktien, die er besitzt, das Eigentum an dem Token. Wenn ein Teil eines Tokens an einen Benutzer übertragen wird, wird dieser Benutzer automatisch zu einem Eigentümer des partiellen NFT.
Diese Methode validiert nicht, ob der Aufrufer der Methode der angegebene Absender ist. Diese Methode kann von jedem Benutzer aufgerufen werden.
-
safeBatchTransferFrom
- Diese Methode schließt einen Batchvorgang ab, bei dem Token, die in einer Liste mit Token-IDs angegeben sind, von einem Benutzer an einen anderen Benutzer übertragen werden.
Bei NFTs muss der Absender des NFT das Token besitzen, da die Methode das Eigentum an dem NFT überträgt.
Bei teilweisen NFTs verliert ein Benutzer (einschließlich des Erstellers des Tokens) alle Aktien, die er besitzt, das Eigentum an dem Token. Wenn ein Teil eines Tokens an einen Benutzer übertragen wird, wird dieser Benutzer automatisch zu einem Eigentümer des partiellen NFT.
Der Aufrufer der Methode muss der angegebene Absender sein. Diese Methode kann von jedem Benutzer aufgerufen werden.
-
balanceOfBatch
- Diese Methode schließt einen Batchvorgang ab, der den Saldo von Tokenkonten abruft. Die Kontodetails werden in drei separaten Listen mit Organisationskennungen, Benutzerkennungen und Tokenkennungen angegeben. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder von Accounteigentümern 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 das Tokenverhaltensmanagement - 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
- Accountverwaltung
- Rollenverwaltung
- Verwaltung der Transaktionshistorie
- Tokenverhaltensverwaltung
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 von
Token Admin
oderAccountOwner
des Tokens oder vonMultipleAccountOwner
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
und ansonstenfalse
ist. Die Methode kann nur von einemToken Admin
des Token Chaincodes aufgerufen werden. -
addAdmin
- Diese Methode fügt einen Benutzer als
Token Admin
des Token Chaincodes hinzu. Die Methode kann nur von einemToken Admin
des Token Chaincodes aufgerufen werden. -
removeAdmin
- Diese Methode entfernt einen Benutzer als
Token Admin
des Token Chaincodes. 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 Verwaltung der Tokenkonfiguration
-
save
- Diese Methode erstellt Token. Jedes definierte Token verfügt über eine eigene Erstellungsmethode. 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 nicht, kann jeder Benutzer diese Methode verwenden, um NFTs zu erstellen (mint). Der Benutzer, der diese Methode aufruft, wird Eigentümer der NFT (ganz oder teilweise).
-
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-Rich-Abfragen der Berkeley-DB 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-Rich-Abfragen der Berkeley-DB 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 die 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 geprägten Token zurück. Fungible Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben.
-
totalNetSupply
- Diese Methode gibt die Gesamtanzahl der geprägten Token abzüglich der Anzahl der gebrannten Token zurück. Fungible 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-Rich-Abfragen der Berkeley-DB 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 von null Dezimalstellen zurückgegeben.
Methoden für die Accountverwaltung
-
createAccount
- Diese Methode erstellt ein Konto für einen angegebenen Benutzer und zugehörige Tokenkonten für fungible oder nicht fungible Token. Ein Konto muss für jeden Benutzer erstellt werden, der zu einem beliebigen Zeitpunkt Token hat. Das Benutzerkonto verfolgt das NFT-Konto und die fungiblen Token-Konten, die ein Benutzer hat. 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. Fungible Token-Konto-IDs werden durch einen SHA-256-Hash des Parameters
orgId
, den ParameteruserId
, die durch das Tilde-Symbol (~
) getrennte konstante Zeichenfolgeft
und eine Zählernummer gebildet, die den Index des fungiblen Kontos angibt, das durch das Tilde-Symbol (~
) getrennt erstellt wird.Ein Benutzer kann nur einen nicht fungiblen Tokenaccount haben. Konto-IDs für nicht fungible Token sind eindeutig und werden durch einen SHA-256-Hash des Parameters
orgId
, den ParameteruserId
und die durch das Tilde-Symbol (~
) getrennte konstante Zeichenfolgenft
gebildet. Alle nicht fungiblen Token, die ein Benutzer besitzt, unabhängig davon, ob sie ganz oder teilweise sind, sind mit diesem einzigen nicht fungiblen Token-Konto verknüpft. -
createUserAccount
- Diese Methode erstellt einen Account für einen angegebenen Benutzer. Ein Konto muss für jeden Benutzer erstellt werden, der zu einem beliebigen Zeitpunkt Token hat. Das Benutzerkonto verfolgt das NFT-Konto und die fungiblen Token-Konten, die ein Benutzer hat. Benutzer müssen über Konten im Netzwerk verfügen, um tokenbezogene Vorgänge abzuschließen.
Eine Konto-ID ist ein SHA-256-Hash des Parameters
orgId
und des ParametersuserId
. 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. Fungible Token-Konto-IDs werden durch einen SHA-256-Hash des Parameters
orgId
, den ParameteruserId
, die durch das Tilde-Symbol (~
) getrennte konstante Zeichenfolgeft
und eine Zählernummer gebildet, die den Index des fungiblen Kontos angibt, das durch das Tilde-Symbol (~
) getrennt erstellt wird.Ein Benutzer kann nur einen nicht fungiblen Tokenaccount haben. Konto-IDs für nicht fungible Token sind eindeutig und werden durch einen SHA-256-Hash des Parameters
orgId
, den ParameteruserId
und die durch das Tilde-Symbol (~
) getrennte konstante Zeichenfolgenft
gebildet. Alle nicht fungiblen Token, die ein Benutzer besitzt, unabhängig davon, ob sie ganz oder teilweise sind, sind mit diesem einzigen 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 Token-Konto 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 Benutzerkonten zurück.
-
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.
-
getUserByAccountId
- Diese Methode gibt die Benutzerdetails einer angegebenen Konto-ID zurück.
Methoden für die Rollenverwaltung
-
AddRoleMember
- Mit dieser Methode wird eine Rolle zu einem angegebenen Benutzer und Token hinzugefügt. Fungible Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben.
-
isInRole
- Diese Methode gibt einen booleschen Wert zurück, um anzugeben, ob ein Benutzer über eine angegebene Rolle verfügt. Fungible Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben.
-
removeRoleMember
- Diese Methode entfernt eine Rolle aus einem angegebenen Benutzer und Token. Fungible 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. Fungible 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. Fungible 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 eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht. -
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 das Tokenverhaltensmanagement - Mintable Behavior
-
mintBatch
- Diese Methode erstellt (mindert) 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 mintieren. Sie können nicht mehr als die Eigenschaft
max_mint_quantity
des Tokens mintieren, wenn diese Eigenschaft beim Erstellen oder Aktualisieren des Tokens angegeben wurde.Wenn für nicht 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 mintieren. Darüber hinaus muss der Aufrufer auch der Ersteller des Tokens sein. Es gibt keine Obergrenze für die Menge an 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 das Tokenverhaltensmanagement - Übertragbares Verhalten
-
batchTransferFrom
- Diese Methode schließt einen Batchvorgang ab, bei dem Token, die in einer Liste mit Token-IDs angegeben sind, von einem Benutzer an einen anderen Benutzer übertragen werden.
Bei NFTs muss der Absender des NFT das Token besitzen, da die Methode das Eigentum an dem NFT überträgt.
Bei teilweisen NFTs verliert ein Benutzer (einschließlich des Erstellers des Tokens) alle Aktien, die er besitzt, das Eigentum an dem Token. Wenn ein Teil eines Tokens an einen Benutzer übertragen wird, wird dieser Benutzer automatisch zu einem Eigentümer des partiellen NFT.
Diese Methode validiert nicht, ob der Aufrufer der Methode der angegebene Absender ist.
-
safeBatchtransferFrom
- Diese Methode schließt einen Batchvorgang ab, bei dem Token, die in einer Liste mit Token-IDs angegeben sind, von einem Benutzer an einen anderen Benutzer übertragen werden.
Bei NFTs muss der Absender des NFT das Token besitzen, da die Methode das Eigentum an dem NFT überträgt.
Bei teilweisen NFTs verliert ein Benutzer (einschließlich des Erstellers des Tokens) alle Aktien, die er besitzt, das Eigentum an dem Token. Wenn ein Teil eines Tokens an einen Benutzer übertragen wird, wird dieser Benutzer automatisch zu einem Eigentümer des partiellen NFT.
Der Aufrufer der Methode muss der angegebene Absender sein.
-
balanceOfBatch
- Diese Methode schließt einen Batchvorgang ab, der den Saldo von Tokenkonten abruft. Die Kontodetails werden in drei separaten Listen mit Organisationskennungen, Benutzerkennungen und Tokenkennungen angegeben. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder von Accounteigentümern 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 fraktioniert) und einem fungiblen Token oder einem fungiblen Token und einem NFT (ganz oder fraktioniert). Diese Methode kann nur vom Kontoinhaber aufgerufen werden.
Methoden für das Tokenverhaltensmanagement - Burnable Behavior