Gerüstete Go Token Projekt 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 Scaffolded Go Chaincode Project.
Modell
Transparente Persistenzfähigkeit oder vereinfachtes ORM wird in der Klasse OchainModel
erfasst. Das folgende Modell zeigt ein ganzes nicht fungibles Token.
package model
type ArtCollection struct {
AssetType string `json:"AssetType" final:"otoken"`
TokenId string `json:"TokenId" id:"true" mandatory:"true" validate:"regexp=^[A-Za-z0-9][A-Za-z0-9_-]*$,max=16"`
TokenName string `json:"TokenName" final:"artcollection"`
TokenDesc string `json:"TokenDesc" validate:"max=256"`
TokenStandard string `json:"TokenStandard" final:"erc1155+"`
TokenType string `json:"TokenType" final:"nonfungible" validate:"regexp=^nonfungible$"`
TokenUnit string `json:"TokenUnit" final:"whole" validate:"regexp=^whole$"`
Mintable map[string]interface{} `json:"Mintable" final:"{\"Max_mint_quantity\":20000}"`
Behaviors []string `json:"Behaviors" final:"[\"indivisible\",\"singleton\",\"mintable\",\"transferable\",\"burnable\",\"roles\"]"`
Roles map[string]interface{} `json:"Roles" final:"{\"minter_role_name\":\"minter\"}"`
Owner string `json:"Owner,omitempty" validate:"string"`
CreatedBy string `json:"CreatedBy,omitempty" validate:"string"`
TransferredBy string `json:"TransferredBy,omitempty" validate:"string"`
CreationDate string `json:"CreationDate,omitempty" validate:"string"`
TransferredDate string `json:"TransferredDate,omitempty" validate:"string"`
IsBurned bool `json:"IsBurned" validate:"bool"`
BurnedBy string `json:"BurnedBy,omitempty" validate:"string"`
BurnedDate string `json:"BurnedDate,omitempty" validate:"string"`
TokenUri string `json:"TokenUri" mandatory:"true" validate:"string,max=2000"`
TokenMetadata ArtCollectionMetadata `json:"TokenMetadata"`
Price int `json:"Price" validate:"int"`
On_sale_flag bool `json:"On_sale_flag" validate:"bool"`
}
type ArtCollectionMetadata struct {
Painting_name string `json:"Painting_name" validate:"string"`
Description string `json:"Description" validate:"string"`
Image string `json:"Image" validate:"string"`
Painter_name string `json:"Painter_name" validate:"string"`
}
type Loyalty struct {
AssetType string `json:"AssetType" final:"otoken"`
TokenId string `json:"TokenId" id:"true" mandatory:"true" validate:"regexp=^[A-Za-z0-9][A-Za-z0-9_-]*$,max=16"`
TokenName string `json:"TokenName" final:"loyalty"`
TokenDesc string `json:"TokenDesc" validate:"max=256"`
TokenStandard string `json:"TokenStandard" final:"erc1155+"`
TokenType string `json:"TokenType" final:"fungible" validate:"regexp=^fungible$"`
TokenUnit string `json:"TokenUnit" final:"fractional" validate:"regexp=^fractional$"`
Mintable map[string]interface{} `json:"Mintable" final:"{\"Max_mint_quantity\":10000}"`
Divisible map[string]interface{} `json:"Divisible" final:"{\"Decimal\":2}"`
Behaviors []string `json:"Behaviors" final:"[\"divisible\",\"mintable\",\"transferable\",\"burnable\",\"roles\"]"`
Roles map[string]interface{} `json:"Roles" final:"{\"minter_role_name\":\"minter\"}"`
Currency_name string `json:"Currency_name" validate:"string"`
Token_to_currency_ratio int `json:"Token_to_currency_ratio" validate:"int"`
Metadata interface{} `json:"Metadata,omitempty"`
}
Das folgende Modell zeigt ein fraktioniertes nicht fungibles Token.type RealEstateProperty struct {
AssetType string `json:"AssetType" final:"otoken"`
TokenId string `json:"TokenId" id:"true" mandatory:"true" validate:"regexp=^[A-Za-z0-9][A-Za-z0-9_-]*$,max=16"`
TokenName string `json:"TokenName" final:"realestateproperty"`
TokenDesc string `json:"TokenDesc" validate:"max=256"`
TokenStandard string `json:"TokenStandard" final:"erc1155+"`
TokenType string `json:"TokenType" final:"nonfungible" validate:"regexp=^nonfungible$"`
TokenUnit string `json:"TokenUnit" final:"fractional" validate:"regexp=^fractional$"`
Mintable map[string]interface{} `json:"Mintable" final:"{\"Max_mint_quantity\":0}"`
Behaviors []string `json:"Behaviors" final:"[\"divisible\",\"mintable\",\"transferable\",\"roles\"]"`
Divisible map[string]interface{} `json:"Divisible" final:"{\"Decimal\":0}"`
Roles map[string]interface{} `json:"Roles" final:"{\"minter_role_name\":\"minter\"}"`
CreatedBy string `json:"CreatedBy,omitempty" validate:"string"`
CreationDate string `json:"CreationDate,omitempty" validate:"string"`
IsBurned bool `json:"IsBurned" validate:"bool"`
TokenUri string `json:"TokenUri" mandatory:"true" validate:"string,max=2000"`
Quantity float64 `json:"Quantity,omitempty"`
TokenMetadata RealEstatePropertyMetadata `json:"TokenMetadata"`
PropertySellingPrice int `json:"PropertySellingPrice" validate:"int"`
PropertyRentingPrice int `json:"PropertyRentingPrice" validate:"int"`
}
type RealEstatePropertyMetadata struct {
PropertyType string `json:"PropertyType" validate:"string"`
PropertyName string `json:"PropertyName" validate:"string"`
PropertyAddress string `json:"PropertyAddress" validate:"string"`
PropertyImage string `json:"PropertyImage" validate:"string"`
}
Controller
Es gibt nur einen Hauptcontroller.
type Controller struct {
Ctx trxcontext.TrxContext
}
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 öffentlich sein, damit sie nicht verwendet werden können. Öffentliche Methodennamen beginnen mit einem Großbuchstaben. Methodennamen, die mit einem Kleinbuchstaben beginnen, sind privat.
- 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 vomToken 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 vomToken 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, ü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 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 vom
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 vom
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 vom
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 vom
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 vom
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 vom
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. 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 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. Die meisten automatisch generierten Methoden umfassen die Zugriffskontrolle. Bestimmte Tokenmethoden können nur vom
ERC721Admin
oderAccount Owner
des Tokens oder von einemMultipleAccountOwner
für Benutzer mit mehreren Accounts ausgeführt werden. Die MethodeCheckAuthorization
ist Teil der Klasseerc721Auth
, auf die Sie über das ObjektCtx
zugreifen. Die Zugriffskontrollzuordnung wird in der DateioChainUtil.go
beschrieben, wie im folgenden Text dargestellt. Sie können die Zugriffskontrolle ändern, indem Sie die DateioChainUtil.go
bearbeiten.var t TokenAccess var r RoleAccess var a AccountAccess var as AccountStatusAccess var h HoldAccess var ad AdminAccess var trx TransactionAccess var tc TokenConversionAccess var auth AuthAccess var erc721ad ERC721AdminAccess var erc721t ERC721TokenAccess var erc721r ERC721RoleAccess var erc721a ERC721AccountAccess var erc721as ERC721AccountStatusAccess var erc721trx ERC721TransactionAccess var erc1155ad ERC1155AdminAccess var erc1155t ERC1155TokenAccess var erc1155a ERC1155AccountAccess var erc1155as ERC1155AccountStatusAccess var erc1155trx ERC1155TransactionAccess var erc1155role ERC1155RoleAccess trx.DeleteHistoricalTransactions = []string{"Admin"} ad.AddAdmin = []string{"Admin"} ad.RemoveAdmin = []string{"Admin"} ad.GetAllAdmins = []string{"Admin", "OrgAdmin"} ad.AddOrgAdmin = []string{"Admin", "OrgAdminOrgIdCheck"} ad.RemoveOrgAdmin = []string{"Admin", "OrgAdminOrgIdCheck"} ad.GetOrgAdmins = []string{"Admin", "OrgAdmin"} ad.IsTokenAdmin = []string{"Admin", "MultipleAccountOwner", "OrgAdmin"} t.Save = []string{"Admin"} t.GetAllTokens = []string{"Admin", "OrgAdmin"} t.Update = []string{"Admin"} t.GetTokenDecimals = []string{"Admin", "OrgAdmin"} t.GetTokensByName = []string{"Admin", "OrgAdmin"} t.AddRoleMember = []string{"Admin", "OrgAdminRoleCheck"} t.RemoveRoleMember = []string{"Admin", "OrgAdminRoleCheck"} t.IsInRole = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} t.GetTotalMintedTokens = []string{"Admin", "OrgAdmin"} t.GetNetTokens = []string{"Admin", "OrgAdmin"} t.Get = []string{"Admin", "OrgAdmin"} t.GetTokenHistory = []string{"Admin", "OrgAdmin"} a.CreateAccount = []string{"Admin", "OrgAdminOrgIdCheck"} a.AssociateToken = []string{"Admin", "OrgAdminAccountIdCheck"} a.GetAllAccounts = []string{"Admin"} a.GetAllOrgAccounts = []string{"Admin", "OrgAdminOrgIdCheck"} a.GetAccount = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} a.History = []string{"Admin", "AccountOwner"} a.GetAccountTransactionHistory = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} a.GetAccountTransactionHistoryWithFilters = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} a.GetSubTransactionsById = []string{"Admin", "TransactionInvoker"} a.GetSubTransactionsByIdWithFilters = []string{"Admin", "TransactionInvoker"} a.GetAccountBalance = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} a.GetAccountOnHoldBalance = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} a.GetOnHoldIds = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} a.GetAccountsByUser = []string{"Admin", "OrgAdminOrgIdCheck", "MultipleAccountOwner"} as.Get = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"} as.ActivateAccount = []string{"Admin", "OrgAdminOrgIdCheck"} as.SuspendAccount = []string{"Admin", "OrgAdminOrgIdCheck"} as.DeleteAccount = []string{"Admin", "OrgAdminOrgIdCheck"} r.GetAccountsByRole = []string{"Admin"} r.GetUsersByRole = []string{"Admin"} r.GetOrgAccountsByRole = []string{"Admin", "OrgAdminOrgIdCheck"} r.GetOrgUsersByRole = []string{"Admin", "OrgAdminOrgIdCheck"} tc.InitializeExchangePoolUser = []string{"Admin"} tc.AddConversionRate = []string{"Admin"} tc.UpdateConversionRate = []string{"Admin"} tc.GetConversionRate = []string{"Admin", "OrgAdmin", "AnyAccountOwner"} tc.GetConversionRateHistory = []string{"Admin", "OrgAdmin", "AnyAccountOwner"} tc.TokenConversion = []string{"Admin", "AnyAccountOwner"} tc.GetExchangePoolUser = []string{"Admin"} erc721ad.AddAdmin = []string{"Admin"} erc721ad.GetAllAdmins = []string{"Admin"} erc721ad.IsTokenAdmin = []string{"Admin"} erc721ad.RemoveAdmin = []string{"Admin"} erc721trx.DeleteHistoricalTransactions = []string{"Admin"} erc721t.Save = []string{"Admin"} erc721t.GetAllTokens = []string{"Admin"} erc721t.Update = []string{"Admin"} erc721t.GetTokensByName = []string{"Admin"} erc721t.AddRoleMember = []string{"Admin"} erc721t.RemoveRoleMember = []string{"Admin"} erc721t.IsInRole = []string{"Admin", "AccountOwner"} erc721t.Get = []string{"Admin", "TokenOwner"} erc721t.GetAllTokensByUser = []string{"Admin", "AccountOwner"} erc721t.TotalSupply = []string{"Admin"} erc721t.TotalNetSupply = []string{"Admin"} erc721t.History = []string{"Admin"} erc721a.CreateAccount = []string{"Admin"} erc721a.CreateUserAccount = []string{"Admin"} erc721a.CreateTokenAccount = []string{"Admin"} erc721a.AssociateFungibleTokenToAccount = []string{"Admin", "AccountOwner"} erc721a.GetAllAccounts = []string{"Admin"} erc721a.History = []string{"Admin", "AccountOwner"} erc721a.GetAccountTransactionHistory = []string{"Admin", "AccountOwner"} erc721a.GetAccountTransactionHistoryWithFilters = []string{"Admin", "AccountOwner"} erc721a.GetAccountByUser = []string{"Admin", "MultipleAccountOwner"} erc721a.BalanceOf = []string{"Admin", "MultipleAccountOwner"} erc721as.Get = []string{"Admin", "AccountOwner"} erc721as.ActivateAccount = []string{"Admin"} erc721as.SuspendAccount = []string{"Admin"} erc721as.DeleteAccount = []string{"Admin"} erc721r.GetAccountsByRole = []string{"Admin"} erc721r.GetUsersByRole = []string{"Admin"} erc1155ad.AddAdmin = []string{"Admin"} erc1155ad.GetAllAdmins = []string{"Admin"} erc1155ad.IsUserTokenAdmin = []string{"Admin"} erc1155ad.RemoveAdmin = []string{"Admin"} erc1155t.AddRoleMember = []string{"Admin"} erc1155t.IsInRole = []string{"Admin"} erc1155t.GetAllTokens = []string{"Admin"} erc1155t.GetAllTokensByUser = []string{"Admin", "AccountOwner"} erc1155t.Get = []string{"Admin", "TokenOwner"} erc1155t.RemoveRoleMember = []string{"Admin"} erc1155t.TotalNetSupply = []string{"Admin"} erc1155t.TotalSupply = []string{"Admin"} erc1155t.GetTokenDecimal = []string{"Admin"} erc1155t.GetTokensByName = []string{"Admin"} erc1155t.GetTotalMintedTokens = []string{"Admin"} erc1155t.GetNetTokens = []string{"Admin"} erc1155t.Save = []string{"Admin"} erc1155t.Update = []string{"Admin"} erc1155trx.DeleteHistoricalTransactions = []string{"Admin"} erc1155role.GetAccountsByRole = []string{"Admin"} erc1155role.GetUsersByRole = []string{"Admin"} erc1155a.AssociateFungibleTokenToAccount = []string{"Admin", "AccountOwner"} erc1155a.BalanceOfBatch = []string{"Admin"} erc1155a.CreateAccount = []string{"Admin"} erc1155a.CreateTokenAccount = []string{"Admin"} erc1155a.CreateUserAccount = []string{"Admin"} erc1155a.GetAccountTransactionHistory = []string{"Admin", "AccountOwner"} erc1155a.GetAccountTransactionHistoryWithFilters = []string{"Admin", "AccountOwner"} erc1155a.GetAccountsByUser = []string{"Admin", "AccountOwner"} erc1155a.GetAccount = []string{"Admin", "AccountOwner"} erc1155a.History = []string{"Admin", "AccountOwner"} erc1155a.GetAllAccounts = []string{"Admin"} erc1155a.ExchangeToken = []string{"AccountOwner"} erc1155a.GetAccountDetailsByUser = []string{"Admin", "AccountOwner"} erc1155as.Get = []string{"Admin", "AccountOwner"} erc1155as.ActivateAccount = []string{"Admin"} erc1155as.SuspendAccount = []string{"Admin"} erc1155as.DeleteAccount = []string{"Admin"} var accessMap TokenAccessControl accessMap.Token = t accessMap.Account = a accessMap.AccountStatus = as accessMap.Hold = h accessMap.Role = r accessMap.Admin = ad accessMap.Auth = auth accessMap.TokenConversion = tc accessMap.ERC721ADMIN = erc721ad accessMap.ERC721TOKEN = erc721t accessMap.ERC721ACCOUNT = erc721a accessMap.ERC721AccountStatus = erc721as accessMap.ERC721ROLE = erc721r accessMap.ERC721TRANSACTION = erc721trx accessMap.ERC1155Account = erc1155a accessMap.ERC1155AccountStatus = erc1155as accessMap.ERC1155Admin = erc1155ad accessMap.ERC1155Token = erc1155t accessMap.ERC1155Transaction = erc1155trx accessMap.ERC1155Role = erc1155role
-
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. -
GetAllAdminUsers
- 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. Bei partiellen NFTs wird auch die Liste der Eigentümer zurückgegeben. -
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 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 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 für einen angegebenen Benutzer zurück, einschließlich Accountstatus. 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 zu 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.
-
DeleteHistoricalTransactions
- 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