Gerüstete Go NFT Projekt für ERC-721
Blockchain App Builder übernimmt die Eingabe aus Ihrer NFT-Spezifikationsdatei und generiert ein voll funktionsfähiges gerüstetes Chaincode-Projekt.
Das Projekt generiert automatisch NFT-Lebenszyklusklassen 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 NFTs verknüpft sind, finden Sie unter Gerüstetes Go Chaincode-Projekt.
Modell
Transparent Persistence Capability (oder vereinfachtes ORM) wird in der Klasse OchainModel
erfasst.
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"`
Symbol string `json:"Symbol" final:"ART"`
TokenStandard string `json:"TokenStandard" final:"erc721+"`
TokenType string `json:"TokenType" final:"nonfungible" validate:"regexp=^nonfungible$"`
TokenUnit string `json:"TokenUnit" final:"whole" validate:"regexp=^whole$"`
Behavior []string `json:"Behavior" final:"[\"indivisible\",\"singleton\",\"mintable\",\"transferable\",\"burnable\",\"roles\"]"`
Roles map[string]interface{} `json:"Roles" final:"{\"minter_role_name\":\"minter\"}"`
Mintable map[string]interface{} `json:"Mintable" final:"{\"Max_mint_quantity\":20000}"`
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" 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"`
}
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 NFT-Methoden
Blockchain App Builder generiert automatisch Methoden zur Unterstützung von NFTs und NFT-Lebenszyklen. Mit diesen Methoden können Sie NFTs initialisieren, Rollen und Accounts verwalten und andere NFT-Lebenszyklusaufgaben ohne zusätzliche Codierung ausführen.
Blockchain App Builder generiert automatisch Methoden zur Unterstützung von NFTs und NFT-Lebenszyklen. Mit diesen Methoden können Sie NFTs initialisieren, Rollen und Accounts verwalten und andere NFT-Lebenszyklusaufgaben ohne zusätzliche Codierung ausführen. 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
-
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. Mit dieser Methode können Sie sich nicht selbst alsToken Admin
entfernen. -
IsTokenAdmin
- Diese Methode gibt den booleschen Wert
true
zurück, wenn der Aufrufer der Funktion einToken Admin
ist. Andernfalls gibt siefalse
zurück. EineToken Admin
kann diese Funktion bei jedem anderen Benutzer im Blockchain-Netzwerk aufrufen. Andere Benutzer können diese Methode nur für ihre eigenen Accounts aufrufen. -
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 ([]
). Alle anderen Informationen im ParameteradminList
werden bei Upgrades ignoriert. -
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. -
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. -
GetTokenById
- 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. -
GetTokenHistory
- Diese Methode gibt die Historie für eine angegebene Token-ID zurück. Diese Methode kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht. Jeder kann diese Methode aufrufen.
-
getTokenObject
- Dies ist eine Utilitymethode, die eine Instanz des Tokens für eine angegebene Token-ID zurückgibt. Diese Methode wird von vielen der automatisch generierten Methoden zum Abrufen von Tokenobjekten verwendet. Sie können diese Methode nach Bedarf mit Ihren benutzerdefinierten Methoden aufrufen. Wenn Sie ein tokenisiertes Asset oder eine tokenisierte Klasse erstellen, aktualisieren Sie den Switch-Fall mit der entsprechenden
Token
-Klasse, um das richtige Tokenobjekt zurückzugeben. Der Befehlochain sync
in Blockchain App Builder erstellt automatisch einen Switch-Fall, wenn ein tokenisiertes Asset in der Spezifikationsdatei erstellt wird. Da diese Methode privat ist, kann sie nicht direkt aufgerufen werden und kann nur von anderen Methoden aufgerufen werden. -
OwnerOf
- Diese Methode gibt die Account-ID des Eigentümers der angegebenen Token-ID zurück. Jeder kann diese Methode aufrufen.
-
Name
- Diese Methode gibt den Namen der Tokenklasse zurück. Jeder kann diese Methode aufrufen.
-
Symbol
- Diese Methode gibt das Symbol der Tokenklasse zurück. Jeder kann diese Methode aufrufen.
-
TokenURI
- Diese Methode gibt die URI eines angegebenen Tokens zurück. Jeder kann diese Methode aufrufen.
-
TotalSupply
- Diese Methode gibt die Gesamtanzahl der abgebauten Token zurück. 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. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden.
Methoden für die Kontenverwaltung
-
CreateAccount
- Mit dieser Methode wird ein Account für einen angegebenen Benutzer und ein bestimmtes Token erstellt. Ein Konto muss für jeden Benutzer erstellt werden, der zu einem beliebigen Zeitpunkt Token hat. Firmen verfolgen die Anzahl der NFTs, die ein Benutzer hat. Benutzer müssen über Konten im Netzwerk verfügen, um tokenbezogene Vorgänge abzuschließen. Sie können nur ein NFT-Konto pro Benutzer erstellen.
Eine Account-ID ist ein alphanumerisches Zeichensatz mit dem Präfix
oaccount~
, gefolgt von einem SHA-256-Hash der Mitgliedsdienstanbieter-ID (OrgId
) des Benutzers in der aktuellen Netzwerkorganisation, dem Benutzernamen oder der E-Mail-ID (UserId
) des Instanzeigentümers oder des Benutzers, der bei der Instanz angemeldet ist, und der Konstantenzeichenfolgenft
. Diese Methode kann nur von derToken Admin
des Chaincodes aufgerufen werden. -
BalanceOf
- Diese Methode gibt die Gesamtanzahl der NFTs zurück, die ein bestimmter Benutzer hält. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder vom Accounteigentümer aufgerufen werden. -
GetAllAccounts
- Diese Methode gibt eine Liste aller Konten zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht. -
GetAccountByUser
- Diese Methode gibt Accountdetails für einen angegebenen Benutzer zurück. Diese Methode kann nur mit einer
Token Admin
des Chaincodes oder derAccount Owner
des Accounts aufgerufen werden. -
GetUserByAccountId
- Diese Methode gibt die Benutzerdetails eines angegebenen Accounts zurück. Diese Methode kann von jedem Benutzer aufgerufen werden.
-
GetAccountHistory
- Diese Methode gibt die Kontohistorie für einen angegebenen Benutzer zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder vom Accounteigentümer aufgerufen werden.
Methoden für die Rollenverwaltung
-
AddRole
- Diese Methode fügt einem angegebenen Benutzer eine Rolle hinzu. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. -
RemoveRole
- Mit dieser Methode wird eine Rolle aus einem angegebenen Benutzer entfernt. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. -
GetAccountsByRole
- Diese Methode gibt eine Liste aller Konto-IDs für eine angegebene Rolle zurück. 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 zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes aufgerufen werden. -
IsInRole
- Diese Methode gibt einen booleschen Wert zurück, um anzugeben, ob ein Benutzer eine bestimmte Rolle hat. Diese Methode kann nur mit einer
Token Admin
des Chaincodes oder derAccount Owner
des Accounts aufgerufen werden.
Methoden für Transaktionshistorienmanagement
-
GetAccountTransactionHistory
- Diese Methode gibt die Kontotransaktionshistorie für einen angegebenen Benutzer zurück. Diese Methode kann durch die
Token Admin
des Chaincodes oder den Eigentümer des Accounts aufgerufen werden. -
GetAccountTransactionHistoryWithFilters
- Diese Methode gibt die Kontotransaktionshistorie für einen angegebenen Benutzer zurück, gefiltert nach
PageSize
,Bookmark
,StartTime
undEndTime
. Diese Methode kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht. Diese Methode kann nur von einemToken Admin
des Chaincodes oder vom Accounteigentümer aufgerufen werden. -
GetTransactionById
- Diese Methode gibt die Transaktionshistorie für eine angegebene Transaktions-ID zurück. Diese Methode kann nur von einem
Token Admin
des Chaincodes oder vom Accounteigentümer aufgerufen werden. -
DeleteHistoricalTransactions
- Mit dieser Methode werden Transaktionen gelöscht, die älter sind als ein angegebener Zeitstempel in der Statusdatenbank. Diese Methode kann nur von der
Token Admin
des Chaincodes aufgerufen werden.
Methoden für die Verwaltung des Tokenverhaltens - Mintable-Verhalten
-
Create<Token Name>Token
- Mit dieser Methode wird ein NFT erstellt (abgemeldet). Das Asset und die zugehörigen Eigenschaften werden in der Statusdatenbank gespeichert. Der Aufrufer dieser Transaktion muss ein Token-Konto haben. Der Aufrufer dieser Transaktion wird der Eigentümer der NFT. Wenn die Tokenspezifikationsdatei den Abschnitt
roles
fürbehaviors
und die Eigenschaftminter_role_name
fürroles
enthält, muss der Aufrufer der Transaktion die Rolle "Miner" aufweisen. Andernfalls kann jeder Anrufer NFTs prägen. -
Update<Token Name>Token
- Diese Methode aktualisiert Tokeneigenschaften. Diese Methode kann nur vom Benutzer aufgerufen werden, der Eigentümer oder Ersteller des Tokens ist. Nachdem ein Tokenasset erstellt wurde, kann nur der Tokeneigentümer die benutzerdefinierten Tokeneigenschaften aktualisieren. Wenn der Benutzer sowohl Tokeneigentümer als auch Ersteller eines Tokens ist, kann er auch die Eigenschaft
TokenDesc
aktualisieren. Tokenmetadaten können nicht aktualisiert werden. Sie müssen alle Tokeneigenschaften an diese Methode übergeben, auch wenn Sie nur bestimmte Eigenschaften aktualisieren möchten.
Methoden für Token Behavior Management - Übertragbares Verhalten
-
SafeTransferFrom
- Diese Methode überträgt die Verantwortung für die angegebene NFT vom Anrufer auf ein anderes Konto. Diese Methode umfasst die folgenden Validierungen:
- Das Token existiert und wird nicht verbrannt.
- Absenderkonto und Empfängerkonto sind vorhanden und nicht dasselbe Konto.
- Das Absenderkonto ist Eigentümer des Tokens.
- Der Aufrufer der Funktion ist der Absender.
-
TransferFrom
- Bei dieser Methode wird das Eigentum an der angegebenen NFT von einem Absenderkonto auf ein Empfängerkonto übertragen. Es liegt in der Verantwortung des Aufrufers, die richtigen Parameter zu übergeben. Diese Methode kann von jedem Benutzer aufgerufen werden, nicht nur vom Token-Eigentümer. Diese Methode umfasst die folgenden Validierungen:
- Das Token existiert und wird nicht verbrannt.
- Absenderkonto und Empfängerkonto sind vorhanden und nicht dasselbe Konto.
- Das Absenderkonto ist Eigentümer des Tokens.
Methoden für Token Behavior Management - Burnable Behavior
-
Burn
- Mit dieser Methode wird die angegebene NFT aus dem Konto des Aufrufers deaktiviert oder gebrannt. Der Aufrufer dieser Methode muss ein Konto haben. Ein Token kann nur gebrannt werden, wenn die Tokenspezifikationsdatei das Verhalten
burnable
enthält. Wenn im Abschnittroles
der Spezifikationsdatei keine Eigenschaftburner_role_name
angegeben ist, kann der Eigentümer des Tokens das Token brennen. Wenn im Abschnittroles
eine Eigenschaftburner_role_name
angegeben ist, kann der Benutzer die Burner-Rolle, die auch der Minter (Ersteller) des Tokens ist, brennen. -
BurnNFT
- Mit dieser Methode wird die angegebene NFT aus dem Konto des Aufrufers deaktiviert oder gebrannt und ein Tokenobjekt und eine Tokenhistorie zurückgegeben. Der Aufrufer dieser Methode muss ein Konto haben. Ein Token kann nur gebrannt werden, wenn die Tokenspezifikationsdatei das Verhalten
burnable
enthält. Wenn im Abschnittroles
der Spezifikationsdatei keine Eigenschaftburner_role_name
angegeben ist, kann der Eigentümer des Tokens das Token brennen. Wenn eine Eigenschaftburner_role_name
im Abschnittroles
angegeben ist, kann der Benutzer die Burner-Rolle zuweisen, die auch der Minter (Ersteller) oder Eigentümer des Tokens ist, das Token brennen.
Benutzerdefinierte Methoden
Mit den Token-SDK-Methoden können Sie benutzerdefinierte Methoden für Ihre Geschäftsanwendung schreiben.
Im folgenden Beispiel wird gezeigt, wie Sie Token-SDK-Methoden in benutzerdefinierten Methoden verwenden. Wenn die Methode Sell
aufgerufen wird, wird ein Token für einen angegebenen Preis zum Verkauf gebucht.
func (t *Controller) Sell(tokenId string, sellingPrice int) (interface{}, error) {
var tokenAsset ArtCollection
_, err := t.Ctx.ERC721Token.Get(tokenId, &tokenAsset)
if err != nil {
return nil, err
}
/** * price is a custom asset
attribute to set the price of a non-fungible token in the
marketplace */
tokenAsset.Price = sellingPrice
/** * on_sale_flag is a
custom asset attribute that maintains non-fungible token selling status in the
marketplace */
tokenAsset.On_sale_flag = true
_, err = t.Ctx.ERC721Token.UpdateToken(tokenAsset)
if err != nil {
return nil, err
}
msg := fmt.Sprintf("Token ID : %s has been posted for selling in the marketplace", tokenId)
return msg, nil
}
NFT SDK-Methoden
- Access Control Management
- Tokenkonfigurationsverwaltung
- Accountverwaltung
- Rollenverwaltung
- Transaktionshistorienmanagement
- Tokenverhaltensverwaltung
Methoden für die Zugriffskontrollverwaltung
Token Admin
oder Account Owner
des Tokens aufgerufen werden. Mit dieser Funktion können Sie sicherstellen, dass Vorgänge nur von den beabsichtigten Benutzern ausgeführt werden. Unbefugter Zugriff führt zu einem Fehler. Um die Zugriffskontrollfunktion zu verwenden, importieren Sie die Klasse Authorization
aus dem Modul ../lib/auth
.import { ERC721Authorization } from '../lib/erc721-auth';
-
AddAdmin
- Diese Methode fügt einen Benutzer als
Token Admin
des Token-Chaincodes hinzu. -
RemoveAdmin
- Mit dieser Methode wird ein Benutzer als
Token Admin
des Token-Chaincodes entfernt. -
IsUserTokenAdmin
- Diese Methode gibt eine Zuordnung mit dem booleschen Wert
true
zurück, wenn der Aufrufer der Funktion einToken Admin
ist. Andernfalls gibt die Methodefalse
zurück. -
GetAllAdmins
- Diese Methode gibt eine Liste aller
Token Admin
-Benutzer zurück. -
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. Die meisten automatisch generierten Methoden umfassen die Zugriffskontrolle. Bestimmte Tokenmethoden können nur von einem
ERC721Admin
- oderAccount Owner
-Token oder vonMultipleAccountOwner
für Benutzer mit mehreren Accounts ausgeführt werden. Die MethodeCheckAuthorization
ist Teil des Packageserc721Auth
, auf das Sie über die StrukturCtx
(Empfänger) 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. Um Ihre eigene Zugriffskontrolle zu verwenden oder die Zugriffskontrolle zu deaktivieren, entfernen Sie den Zugriffskontrollcode aus den automatisch generierten Controller-Methoden und benutzerdefinierten Methoden.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 auth.IsTokenAdmin = []string{"Admin", "MultipleAccountOwner"} 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"} 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
Methoden für die Verwaltung der Tokenkonfiguration
-
CreateToken
- Diese Methode erstellt ein Token und speichert seine Eigenschaften in der Statusdatenbank. Diese Methode kann nur von Benutzern mit der Minter-Rolle aufgerufen werden.
-
GetAllTokens
- Diese Methode gibt alle Tokenassets zurück, die in der Statusdatenbank gespeichert sind. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
-
GetAllTokensByUser
- Diese Methode gibt alle Token zurück, deren Eigentümer eine angegebene Konto-ID ist. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
-
GetTokenUri
- Diese Methode gibt die Token-URI für ein angegebenes Token zurück.
-
History
- Diese Methode gibt die Historie für das angegebene Token zurück.
-
Get
- Diese Methode gibt das angegebene Tokenobjekt zurück, wenn es in der Statusdatenbank vorhanden ist.
-
OwnerOf
- Diese Methode gibt die Account-ID des Eigentümers eines angegebenen Tokens zurück.
-
Name
- Diese Methode gibt den Namen der Tokenklasse zurück.
-
Symbol
- Diese Methode gibt das Symbol der Tokenklasse zurück.
-
TokenUri
- Diese Methode gibt die Token-URI für ein angegebenes Token zurück.
-
TotalSupply
- Diese Methode gibt die Gesamtanzahl der ausgeprägten NFTs zurück.
-
UpdateToken
- Diese Methode aktualisiert Tokeneigenschaften. Diese Methode kann nur vom Eigentümer oder Ersteller des Tokens aufgerufen werden. Nachdem ein Tokenasset erstellt wurde, kann nur der Tokeneigentümer die benutzerdefinierten Tokeneigenschaften aktualisieren. Wenn der Benutzer sowohl Tokeneigentümer als auch Ersteller eines Tokens ist, kann er auch die Eigenschaft
TokenDesc
aktualisieren. Tokenmetadaten können nicht aktualisiert werden. Sie müssen alle Tokeneigenschaften an diese Methode übergeben, auch wenn Sie nur bestimmte Eigenschaften aktualisieren möchten. -
GetNewCtx
- Diese Methode gibt ein neues
TrxContext
-Objekt zurück. Die Strukturtrxcontext
enthält Referenzen auf alle SDK-Librarys. Greifen Sie auf die SDK-Methoden zu, indem Sie nur dieses Objekt verwenden. Das Objekttrxcontext
behält die gegenseitige Exklusivität von Transaktions-Stubs in SDK-Librarys bei, wenn gleichzeitige Transaktionen ausgeführt werden.
Methoden für die Kontenverwaltung
-
GenerateAccountId
- Diese Methode gibt eine Account-ID zurück, die durch Verketten der Mitgliedsdienstanbieter-ID (
orgId
) und des Benutzernamens oder der E-Mail-ID (userId
) gebildet wird und dann einen SHA-256-Hash erstellt. -
CreateAccount
- 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. Firmen verfolgen die Anzahl der NFTs, die ein Benutzer hat. Benutzer müssen über Konten im Netzwerk verfügen, um tokenbezogene Vorgänge abzuschließen. Sie können nur ein NFT-Konto pro Benutzer erstellen.
Eine Account-ID ist ein alphanumerisches Zeichensatz mit dem Präfix
oaccount~
, gefolgt von einem SHA-256-Hash der Mitgliedsdienstanbieter-ID (org_id
) des Benutzers in der aktuellen Netzwerkorganisation, dem Benutzernamen oder der E-Mail-ID (userId
) des Instanzeigentümers oder des Benutzers, der bei der Instanz angemeldet ist, und der Konstantenzeichenfolgenft
. -
BalanceOf
- Diese Methode gibt die Gesamtanzahl der NFTs zurück, die der angegebene Benutzer hält.
-
GetAllAccounts
- Diese Methode gibt eine Liste aller Konten zurück. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
-
GetAccountByUser
- Diese Methode gibt Accountdetails für einen angegebenen Benutzer zurück. Diese Methode kann nur mit einer
Token Admin
des Chaincodes oder derAccount Owner
des Accounts aufgerufen werden. -
GetUserByAccountId
- Diese Methode gibt die Benutzerdetails für einen angegebenen Account zurück.
-
History
- Diese Methode gibt ein Array der Kontohistoriendetails für ein angegebenes Konto zurück.
-
GetAccountWithStatusByUser
- Diese Methode gibt Accountdetails 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.
Methoden für die Rollenverwaltung
-
AddRoleMember
- Diese Methode fügt einem angegebenen Benutzer eine Rolle hinzu.
-
RemoveRoleMember
- Mit dieser Methode wird eine Rolle aus einem angegebenen Benutzer und Token entfernt. Eine Account-ID wird gebildet, indem ein SHA-256-Hash der verketteten Serviceprovider-ID der Mitgliedschaft (
orgId
) und des Benutzernamens oder der E-Mail-ID (userId
) erstellt wird. -
GetAccountsByRole
- Diese Methode gibt eine Liste aller Konto-IDs für eine angegebene Rolle zurück.
-
GetUsersByRole
- Diese Methode gibt eine Liste aller Benutzer für eine angegebene Rolle zurück.
-
IsInRole
- Diese Methode gibt einen booleschen Wert zurück, um anzugeben, ob ein Benutzer und ein Token eine bestimmte Rolle haben. Eine Account-ID wird gebildet, indem ein SHA-256-Hash der verketteten Serviceprovider-ID der Mitgliedschaft (
orgId
) und des Benutzernamens oder der E-Mail-ID (userId
) erstellt wird.
Methoden für Transaktionshistorienmanagement
-
GetAccountTransactionHistory
- Diese Methode gibt ein Array der Transaktionshistoriendetails für ein angegebenes Konto zurück.
-
GetAccountTransactionHistoryWithFilters
- Diese Methode gibt die Kontotransaktionshistorie für einen angegebenen Benutzer zurück, gefiltert nach
PageSize
,Bookmark
,startTime
undendTime
. Diese Methode kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht. -
GetTransactionById
- Diese Methode gibt die Historie eines
Transaction
-Assets zurück. -
DeleteHistoricalTransactions
- Diese Methode löscht Transaktionen, die älter als ein angegebenes Datum sind, aus der Statusdatenbank.
Tokenverhaltensverwaltung - Mintable-Verhalten
-
GetMaxMintQuantity
- Diese Methode gibt die maximale mintable-Menge eines Tokens zurück. Wenn das Verhalten
max_mint_quantity
nicht in der Spezifikationsdatei konfiguriert ist, ist der Standardwert 0, und eine unbegrenzte Anzahl von Token kann geprägt werden. -
GetTotalMintedTokens
- Diese Methode gibt die Gesamtanzahl der Token zurück, die im System für das angegebene Token verfügbar sind. Die Nettoanzahl der verfügbaren Token ist die Gesamtanzahl der abgebauten Token minus der Anzahl der verbrannten Token.
Tokenverhaltensverwaltung - Übertragbares Verhalten
-
SafeTransferFrom
- Diese Methode überträgt die Verantwortung für die angegebene NFT vom Anrufer auf ein anderes Konto. Diese Methode umfasst die folgenden Validierungen:
- Das Token existiert und wird nicht verbrannt.
- Absenderkonto und Empfängerkonto sind vorhanden und nicht dasselbe Konto.
- Das Absenderkonto ist Eigentümer des Tokens.
- Der Aufrufer der Funktion ist der Absender.
-
TransferFrom
- Bei dieser Methode wird das Eigentum an der angegebenen NFT von einem Absenderkonto auf ein Empfängerkonto übertragen. Es liegt in der Verantwortung des Aufrufers, die richtigen Parameter zu übergeben. Diese Methode kann von jedem Benutzer aufgerufen werden, nicht nur vom Token-Eigentümer. Diese Methode umfasst die folgenden Validierungen:
- Das Token existiert und wird nicht verbrannt.
- Absenderkonto und Empfängerkonto sind vorhanden und nicht dasselbe Konto.
- Das Absenderkonto ist Eigentümer des Tokens.
Tokenverhaltensmanagement - Burnable Behavior
-
Burn
- Mit dieser Methode wird die angegebene NFT aus dem Konto des Aufrufers deaktiviert oder gebrannt. Der Aufrufer dieser Methode muss ein Konto haben. Ein Token kann nur gebrannt werden, wenn die Tokenspezifikationsdatei das Verhalten
burnable
enthält. Wenn im Abschnittroles
der Spezifikationsdatei keine Eigenschaftburner_role_name
angegeben ist, kann der Eigentümer des Tokens das Token brennen. Wenn im Abschnittroles
eine Eigenschaftburner_role_name
angegeben ist, kann der Benutzer die Burner-Rolle, die auch der Minter (Ersteller) des Tokens ist, brennen. Die Methodeburn
ist Teil des PackagesERC721Token
, auf das Sie über den Empfänger der StrukturCtx
zugreifen.