Gerüstete Go Token Projekt für ERC-1155
Blockchain App Builder übernimmt die Eingabe aus Ihrer Token-Spezifikationsdatei 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 Persistenzfunktion werden automatisch unterstützt.
Informationen zu dem gerüsteten Projekt und den Methoden, die nicht direkt mit Token verknüpft sind, finden Sie unter Gerüstetes Go Chaincode-Projekt.
Modell
Transparent Persistence Capability (oder vereinfachtes ORM) wird in der Klasse OchainModel
erfasst. Das folgende Modell zeigt ein ganzes nicht fungierbares 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"`
}
Verantwortlicher
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 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 Tokenmethoden
Blockchain App Builder generiert automatisch Methoden zur Unterstützung von Token und Token-Lebenszyklen. 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 aufgerufen werden können. Öffentliche Methodennamen beginnen mit einem Großbuchstaben. Methodennamen, die mit einem Kleinbuchstaben beginnen, sind privat.
- Access Control Management
- Tokenkonfigurationsverwaltung
- Accountverwaltung
- Rollenverwaltung
- Transaktionshistorienmanagement
- Tokenverhaltensverwaltung
Methoden für die Zugriffskontrollverwaltung
-
IsTokenAdmin
- Diese Methode gibt den booleschen Wert
true
zurück, wenn der Aufrufer der Funktion einToken Admin
ist. Andernfalls gibt siefalse
zurück. Diese Methode kann nur von derToken Admin
des Chaincodes aufgerufen werden. -
AddTokenAdmin
- Diese Methode fügt einen Benutzer als
Token Admin
des Chaincodes hinzu. 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 derToken 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. DieuserId
ist der Benutzername oder die E-Mail-ID des Instanzeigentümers oder des Benutzers, der bei der Instanz angemeldet ist. DieorgId
ist die MSP-ID (Member Service Provider) des Benutzers in der aktuellen Netzwerkorganisation. Der ParameteradminList
ist erforderlich, wenn Sie den Chaincode das erste Mal bereitstellen. Wenn Sie das Chaincode-Upgrade 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
- Mit dieser Methode werden Token erstellt. Jedes definierte Token verfügt über eine eigene Erstellungsmethode. Für fungible Token kann diese Methode nur von einem
Token Admin
des Chaincodes aufgerufen werden. Wenn für nicht fungible Token die Rolle "Miner" in der Spezifikationsdatei definiert ist, kann jeder Benutzer mit der Rolle "Miner" diese Methode aufrufen, um eine NFT zu erstellen. Wenn die Minter-Rolle nicht definiert ist, kann jeder Benutzer diese Methode verwenden, um NFTs zu erstellen (Mint). Der Benutzer, der diese Methode aufruft, wird der Eigentümer der NFT. -
Update<Token Name>Token
- Diese Methode aktualisiert Token. Jedes definierte Token verfügt über eine eigene Aktualisierungsmethode. Sie können Tokenmetadaten oder die Token-URI von nicht fungierbaren Token nicht aktualisieren. Für fungible Token kann diese Methode nur von einem
Token Admin
des Chaincodes aufgerufen werden. Bei nicht fungierbaren 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 aufrufen.
-
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 fraktionierten NFTs wird auch die Eigentümerliste 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, die Organisations-ID und die Benutzer-ID des Eigentümers der angegebenen Token-ID zurück. Jeder kann diese Methode aufrufen.
-
URI
- Diese Methode gibt die URI eines angegebenen Tokens zurück. Jeder kann diese Methode aufrufen.
-
Name
- Diese Methode gibt den Namen der Tokenklasse zurück. Jeder kann diese Methode aufrufen.
-
TotalSupply
- Diese Methode gibt die Gesamtanzahl der abgebauten 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 abgebrannten Token abzüglich der Anzahl der verbrannten 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-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 Kontenverwaltung
-
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 fungierbaren 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 Benutzeraccount hat eine eindeutige ID, die durch einen SHA-256-Hash des Parameters
orgId
und des ParametersuserId
gebildet wird.Ein Benutzer kann mehrere fungible Tokenaccounts mit eindeutigen Konto-IDs haben. Fungible Token-Account-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 Fungible-Accounts angibt, der durch das Tilde-Symbol (~
) getrennt erstellt wird.Ein Benutzer kann nur ein nicht fungierbares Token-Konto haben. Nicht fungible Tokenaccount-IDs sind eindeutig und werden durch einen SHA-256-Hash des Parameters
orgId
, des ParametersuserId
und der Konstantenzeichenfolgenft
gebildet, die durch das Tilde-Symbol (~
) getrennt sind. Alle nicht fungierbaren Token, die ein Benutzer besitzt, unabhängig davon, ob sie ganz oder teilweise sind, 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 zu einem beliebigen Zeitpunkt Token hat. Das Benutzerkonto verfolgt das NFT-Konto und die fungierbaren Token-Konten, die ein Benutzer hat. Benutzer müssen über Konten im Netzwerk verfügen, um tokenbezogene Vorgänge abzuschließen.
Eine Account-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 Tokenkonto, das einem Benutzerkonto zugeordnet werden soll.
Ein Benutzer kann mehrere fungible Tokenaccounts mit eindeutigen Konto-IDs haben. Fungible Token-Account-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 Fungible-Accounts angibt, der durch das Tilde-Symbol (~
) getrennt erstellt wird.Ein Benutzer kann nur ein nicht fungierbares Token-Konto haben. Nicht fungible Tokenaccount-IDs sind eindeutig und werden durch einen SHA-256-Hash des Parameters
orgId
, des ParametersuserId
und der Konstantenzeichenfolgenft
gebildet, die durch das Tilde-Symbol (~
) getrennt sind. Alle nicht fungierbaren Token, die ein Benutzer besitzt, unabhängig davon, ob sie ganz oder teilweise sind, 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 der
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 der
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 mit einer
Token Admin
des Chaincodes oder derAccount 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 von fungiblen und nicht fungiblen Token zurück, die dem Benutzer zugeordnet sind. Diese Methode kann nur mit einer
Token Admin
des Chaincodes oder derAccount 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
- Diese Methode fügt einem angegebenen Benutzer und Token eine Rolle hinzu. 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 einen Tokenaccount verfügen, der mit dem fungiblen Token verknüpft ist, oder über einen nicht fungierbaren Tokenaccount 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 eine bestimmte Rolle hat. Fungible Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben. Diese Methode kann nur von der
Token Admin
des Chaincodes oder derAccount Owner
des Accounts aufgerufen werden. Der angegebene Benutzer muss über einen Tokenaccount verfügen, der mit dem fungiblen Token verknüpft ist, oder über einen nicht fungierbaren Tokenaccount für NFT-Rollen. Die angegebene Rolle muss in der Spezifikationsdatei für das Token vorhanden sein. -
RemoveRole
- Mit dieser Methode wird eine Rolle aus einem angegebenen Benutzer und Token entfernt. Fungible Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben. Diese Methode kann nur von der
Token Admin
des Chaincodes aufgerufen werden. Der angegebene Benutzer muss über einen Tokenaccount verfügen, der mit dem fungiblen Token verknüpft ist, oder über einen nicht fungierbaren Tokenaccount 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 der
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 der
Token Admin
des Chaincodes aufgerufen werden.
Methoden für 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 aufrufen.
-
DeleteHistoricalTransactions
- Mit dieser Methode werden Transaktionen vor einem angegebenen Zeitstempel aus der Statusdatenbank gelöscht. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden.
Methoden für die Verwaltung des Tokenverhaltens - Mintable-Verhalten
-
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 Rolle "Miner" in der Spezifikationsdatei definiert ist, kann jeder Benutzer mit der Rolle "Miner" diese Methode aufrufen. Wenn nicht, kann jeder Benutzer diese Methode verwenden, um Token zu mintieren. Sie können die Eigenschaft
max_mint_quantity
des Tokens nicht überschreiten, wenn diese Eigenschaft angegeben wurde, als das Token erstellt oder aktualisiert wurde.Wenn für nicht fungible Token die Rolle "Miner" in der Spezifikationsdatei definiert ist, kann jeder Benutzer mit der Rolle "Miner" diese Methode aufrufen. Wenn nicht, kann jeder Benutzer diese Methode verwenden, um Token zu mintieren. Zusätzlich muss der Aufrufer auch der Ersteller des Tokens sein. Es gibt keine Obergrenze für die Anzahl 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 Token Behavior Management - Ü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 der NFT das Token besitzen, da die Methode das Eigentum an der NFT überträgt.
Wenn ein Benutzer (einschließlich des Erstellers des Tokens) bei Bruchteilen von NFTs alle Aktien überträgt, die er besitzt, verliert er das Eigentum an dem Token. Wenn ein Anteil eines Tokens an einen Benutzer übertragen wird, wird dieser Benutzer automatisch einer der Eigentümer des teilweisen 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 der NFT das Token besitzen, da die Methode das Eigentum an der NFT überträgt.
Wenn ein Benutzer (einschließlich des Erstellers des Tokens) bei Bruchteilen von NFTs alle Aktien überträgt, die er besitzt, verliert er das Eigentum an dem Token. Wenn ein Anteil eines Tokens an einen Benutzer übertragen wird, wird dieser Benutzer automatisch einer der Eigentümer des teilweisen 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 Accountdetails 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 Accounteigentümern aufgerufen werden. Kontoinhaber können Saldendetails nur für Konten anzeigen, deren Eigentümer sie 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 Token Behavior Management - Burnable Behavior
-
BurnBatch
- Diese Methode deaktiviert oder verbrennt die angegebenen fungiblen und nicht fungiblen Token. Jeder Benutzer kann diese Methode aufrufen.
-
BurnNFT
- Mit dieser Methode wird das angegebene nicht fungible Token deaktiviert oder gebrannt und ein Tokenobjekt und eine Tokenhistorie zurückgegeben. Jeder Benutzer mit der Brennerrolle kann diese Methode aufrufen.
SDK-Methoden
- Access Control Management
- Tokenkonfigurationsverwaltung
- Accountverwaltung
- Rollenverwaltung
- Transaktionshistorienmanagement
- Tokenverhaltensverwaltung
Methoden für die Zugriffskontrollverwaltung
-
IsUserTokenAdmin
- Diese Methode gibt den booleschen Wert
true
zurück, wenn der angegebene Benutzer einToken Admin
ist, andernfallsfalse
. 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
- 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. -
CheckAuthorization
- Mit dieser Methode können Sie einem Vorgang eine Zugriffskontrollprüfung hinzufügen. Dies ist eine asynchrone Funktion. Die meisten automatisch generierten Methoden umfassen die Zugriffskontrolle. Bestimmte Tokenmethoden können nur von
ERC721Admin
oderAccount Owner
des Tokens oder 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 Zuordnung der Zugriffskontrolle 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
Methoden für die Verwaltung der Tokenkonfiguration
-
Save
- Mit dieser Methode werden Token erstellt. Jedes definierte Token verfügt über eine eigene Erstellungsmethode. Wenn für nicht fungible Token die Rolle "Miner" in der Spezifikationsdatei definiert ist, kann jeder Benutzer mit der Rolle "Miner" diese Methode aufrufen, um eine NFT zu erstellen. Andernfalls kann jeder Benutzer mit dieser Methode NFTs (Minuten) erstellen. Der Benutzer, der diese Methode aufruft, wird der Eigentümer der NFT (ganz oder teilweise).
-
Update
- Diese Methode aktualisiert Token. Sie können Tokenmetadaten oder die Token-URI von nicht fungierbaren Token nicht 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 fraktionierten NFTs wird auch die Eigentümerliste 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, die Organisations-ID und die 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 aufrufen.
-
Name
- Diese Methode gibt den Namen der Tokenklasse zurück. Jeder kann diese Methode aufrufen.
-
TotalSupply
- Diese Methode gibt die Gesamtanzahl der abgebauten 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 abgebrannten Token abzüglich der Anzahl der verbrannten 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-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 von null Dezimalstellen zurückgegeben.
Methoden für die Kontenverwaltung
-
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 fungierbaren 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 Benutzeraccount hat eine eindeutige ID, die durch einen SHA-256-Hash des Parameters
orgId
und des ParametersuserId
gebildet wird.Ein Benutzer kann mehrere fungible Tokenaccounts mit eindeutigen Konto-IDs haben. Fungible Token-Account-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 Fungible-Accounts angibt, der durch das Tilde-Symbol (~
) getrennt erstellt wird.Ein Benutzer kann nur ein nicht fungierbares Token-Konto haben. Nicht fungible Tokenaccount-IDs sind eindeutig und werden durch einen SHA-256-Hash des Parameters
orgId
, des ParametersuserId
und der Konstantenzeichenfolgenft
gebildet, die durch das Tilde-Symbol (~
) getrennt sind. Alle nicht fungierbaren 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
- Mit dieser Methode wird ein Account für einen angegebenen Benutzer erstellt. Ein Konto muss für jeden Benutzer erstellt werden, der zu einem beliebigen Zeitpunkt Token hat. Das Benutzerkonto verfolgt das NFT-Konto und die fungierbaren Token-Konten, die ein Benutzer hat. Benutzer müssen über Konten im Netzwerk verfügen, um tokenbezogene Vorgänge abzuschließen.
Eine Account-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 Tokenkonto, das einem Benutzerkonto zugeordnet werden soll.
Ein Benutzer kann mehrere fungible Tokenaccounts mit eindeutigen Konto-IDs haben. Fungible Token-Account-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 Fungible-Accounts angibt, der durch das Tilde-Symbol (~
) getrennt erstellt wird.Ein Benutzer kann nur ein nicht fungierbares Token-Konto haben. Nicht fungible Tokenaccount-IDs sind eindeutig und werden durch einen SHA-256-Hash des Parameters
orgId
, des ParametersuserId
und der Konstantenzeichenfolgenft
gebildet, die durch das Tilde-Symbol (~
) getrennt sind. Alle nicht fungierbaren 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 Tokenkonto zurück.
-
GetAccountWithStatus
- Diese Methode gibt Tokenaccountdetails für einen angegebenen Benutzer zurück, einschließlich Accountstatus. Diese Methode kann nur mit einer
Token Admin
des Chaincodes oder derAccount Owner
des Accounts aufgerufen werden. -
GetAccount
- Diese Methode gibt Tokenaccountdetails für einen angegebenen Benutzer zurück. Diese Methode kann nur mit einer
Token Admin
des Chaincodes oder derAccount 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 Konto-ID zurück.
Methoden für die Rollenverwaltung
-
AddRoleMember
- Diese Methode fügt einem angegebenen Benutzer und Token eine Rolle hinzu. 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 eine bestimmte Rolle hat. Fungible Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben.
-
RemoveRoleMember
- Mit dieser Methode wird eine Rolle aus einem angegebenen Benutzer und Token entfernt. 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 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.
-
DeleteHistoricalTransactions
- Mit dieser Methode werden Transaktionen vor einem angegebenen Zeitstempel aus der Statusdatenbank gelöscht.
Methoden für die Verwaltung des Tokenverhaltens - Mintable-Verhalten
-
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 Rolle "Miner" in der Spezifikationsdatei definiert ist, kann jeder Benutzer mit der Rolle "Miner" diese Methode aufrufen. Wenn nicht, kann jeder Benutzer diese Methode verwenden, um Token zu mintieren. Sie können die Eigenschaft
max_mint_quantity
des Tokens nicht überschreiten, wenn diese Eigenschaft angegeben wurde, als das Token erstellt oder aktualisiert wurde.Wenn für nicht fungible Token die Rolle "Miner" in der Spezifikationsdatei definiert ist, kann jeder Benutzer mit der Rolle "Miner" diese Methode aufrufen. Wenn nicht, kann jeder Benutzer diese Methode verwenden, um Token zu mintieren. Zusätzlich muss der Aufrufer auch der Ersteller des Tokens sein. Es gibt keine Obergrenze für die Anzahl 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 Token Behavior Management - Ü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 der NFT das Token besitzen, da die Methode das Eigentum an der NFT überträgt.
Wenn ein Benutzer (einschließlich des Erstellers des Tokens) bei Bruchteilen von NFTs alle Aktien überträgt, die er besitzt, verliert er das Eigentum an dem Token. Wenn ein Anteil eines Tokens an einen Benutzer übertragen wird, wird dieser Benutzer automatisch einer der Eigentümer des teilweisen 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 der NFT das Token besitzen, da die Methode das Eigentum an der NFT überträgt.
Wenn ein Benutzer (einschließlich des Erstellers des Tokens) bei Bruchteilen von NFTs alle Aktien überträgt, die er besitzt, verliert er das Eigentum an dem Token. Wenn ein Anteil eines Tokens an einen Benutzer übertragen wird, wird dieser Benutzer automatisch einer der Eigentümer des teilweisen 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 Accountdetails 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 Accounteigentümern aufgerufen werden. Kontoinhaber können Saldendetails nur für Konten anzeigen, deren Eigentümer sie 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 Token Behavior Management - Burnable Behavior