Ethereum-Interoperabilität
Sie können Ethereum-basierte Transaktionen in einen atomaren Transaktionsworkflow aufnehmen.
Die zunehmende Nutzung öffentlicher Blockchains und Tokenisierungsfunktionen über öffentliche und genehmigte Blockchains hinweg treibt die Notwendigkeit ihrer Interoperabilität voran. Häufige Szenarien umfassen den Asset-Austausch über verschiedene Hauptbücher hinweg, Geschäftstransaktionen auf genehmigten Blockchains, die mit Kryptowährungszahlungen in öffentlichen Ketten verknüpft sind, den Nachweis einer genehmigten Blockchain-Transaktion in einer öffentlichen Blockchain usw. Um die Interoperabilität für diese und andere Szenarios zu ermöglichen, bietet Oracle Blockchain Platform Interoperabilität mit Ethereum und mit allen EVM-basierten Netzwerken, die standardmäßige web3-Protokolle unterstützen. Die Interoperabilitätsfunktion integriert den Geth Ethereum-Client in den REST-Proxy und ermöglicht es ihm, ein optimiertes Zwei-Phasen-Commit-Protokoll zu orchestrieren, das sowohl Oracle Blockchain Platform- als auch Ethereum/EVM-Transaktionen über eine einzelne REST-API namens atomicTransactions
umfasst. Mit der API atomicTransactions
können Sie mehrere Chaincodetransaktionen für mehrere Oracle Blockchain Platform-Kanäle senden und optional eine Ethereum-Transaktion hinzufügen, die atomar mit den Oracle Blockchain Platform-Transaktionen ausgeführt wird.
Im Gegensatz zu Oracle Blockchain Platform-Transaktionen können Ethereum-Transaktionen nicht in die Vorbereitungs- und Commit-Phasen des Two-Phase Commit-Protokolls unterteilt werden. Um Ethereum-Transaktionen als Teil eines atomaren Workflows einzuschließen, verwendet Oracle Blockchain Platform eine LRC-Optimierung (Last Resource Commit). Nachdem alle Oracle Blockchain Platform-Transaktionen vorbereitet sind, wird die Ethereum-Transaktion gestartet. Wenn die Ethereum-Transaktion erfolgreich ist, werden die Oracle Blockchain Platform-Transaktionen festgeschrieben. Wenn die Ethereum-Transaktion fehlschlägt, werden die Oracle Blockchain Platform-Transaktionen zurückgesetzt.
Ethereum-Transaktionen haben ein Konzept der Endgültigkeit. Eine Ethereum-Transaktion kann erfolgreich ausgeführt werden, erreicht jedoch keine Endgültigkeit, bis sie Teil eines Blocks ist, der sich nicht ändern kann. Mit den Parametern finalityParams
können Sie steuern, ob auf Endgültigkeit geprüft werden soll und wie lange darauf gewartet werden soll, entweder in Blöcken oder in Sekunden. Wenn Sie normalerweise auf sechs Blöcke warten, die im öffentlichen Ethereum-Blockchain-Netzwerk (Mainnet) generiert werden, können Sie davon ausgehen, dass die Transaktionsendgültigkeit erreicht wurde. In privaten Ethereum-Netzwerken müssen Sie normalerweise nicht so lange auf die Endgültigkeit warten.
Übertragung einer NFT in ein Ethereum-Netzwerk
Die atomicTransactions
-API unterstützt auch Interaktionen mit Smart Contracts, die in Ethereum-Netzwerken bereitgestellt werden. Mit dieser Funktion können Sie nicht fungible Token (NFTs) übertragen, die im Hyperledger Fabric-Kettencode auf Oracle Blockchain Platform geprägt wurden, indem Sie zwei Transaktionen atomar aufrufen. NFT-Attribute wie Token-ID, Preis und Tokenhistorie können auch atomar von Oracle Blockchain Platform an Ethereum übergeben werden. Nachdem Sie einen NFT von Oracle Blockchain Platform auf Ethereum übertragen haben, kann der NFT auf einem öffentlichen NFT-Marktplatz aufgeführt werden.
Um einen NFT von Oracle Blockchain Platform an Ethereum zu übertragen, verwenden Sie zwei grundlegende Schritte in einer atomaren Transaktion:
- NFT auf Oracle Blockchain Platform brennen. Rufen Sie die Methode
burnNFT
auf, um den NFT-Code aus dem Hyperledger Fabric-Kettencode auf Oracle Blockchain Platform zu brennen (löschen). Oracle Blockchain Platform unterstützt NFTs in erweiterten Versionen von zwei Standards, ERC-721 und ERC-1155, mit dem Tool Blockchain App Builder. Weitere Informationen zur Methode burnNFT finden Sie im relevanten Thema für Ihre Umgebung: - Mint die NFT auf Ethereum. Rufen Sie einen Smart-Vertrag im Ethereum- oder Polygon-Netzwerk auf, um die NFT in diesem Netzwerk mit den von der Methode
burnNFT
zurückgegebenen Parametern zu prägen. Beispielversionen von Smart Contracts, die in der Solidity-Sprache für NFTs geschrieben wurden, sind in der folgenden Archivdatei verfügbar: solidity-smartcontracts-fab253.zip. Die Smart Contracts, eines für jeden der erweiterten Tokenstandards ERC-721 und ERC-1155, enthalten einemintNFT
-Methode, die NFTs mit benutzerdefinierten Eigenschaften wie Preis- und Tokenhistorie erstellt, die aus der Ausgabe derburnNFT
-Methode im vorherigen Schritt abgerufen werden können.Wenn sich bei nicht signierten Anforderungen die benutzerdefinierten Eigenschaften im ParameterParamKeys
befinden und entsprechende dynamische Parameter im Parameterparams
übergeben werden, kann die API für atomare Transaktionen die Parameter aus der MethodeburnNFT
abrufen und an den Ethereum-Smart Contract senden. Die MethodemintNFT
nimmt die folgenden Argumente an:to
- Die Ethereum-Adresse für das Konto, in dem die NFT geprägt wird.id
: Die Token-ID des NFT.price
– Der Preis der NFT.tokenHistory
: Die Geschichte der NFT aus dem Oracle Blockchain Platform-Kettencode.
Der Smart Contract erfordert, dass die Token-ID des NFT eine numerische Zeichenfolge sein muss (eine Zeichenfolge, die in eine Ganzzahl konvertiert werden kann). Beispiel: Eine Token-ID kann
2
, aber nichttoken2
sein.Die Token-URI der NFT im Chaincode, der auf Oracle Blockchain Platform bereitgestellt wird, muss einem bestimmten Format entsprechen, damit sie mit Solidity-Smart Contracts kompatibel ist:- ERC-1155: Eine URI für alle Tokentypen, die auf einer ID-Ersetzung basieren, wie
https://token-cdn-domain/{id}.json
. - ERC-721: Eine URI, bei der alle Token ein Präfix (eine Basis-URI) gemeinsam verwenden, gefolgt von einer Token-URI, wie
http://api.myproject.example.com/token/<tokenURI>
.
Mit der Remix-IDE können Sie eine Anwendungs-Binärschnittstelle (ABI) für den Smart-Vertrag generieren. Der ABI kann dann mit der API
atomicTransactions
verwendet werden. Wenn Sie eine Methode im Smart Contracts ändern, müssen Sie den Vertrag neu kompilieren und den ABI erneut generieren.
Weitere Informationen zu den Parametern, die für Ethereum-Transaktionen in einem atomaren Workflow verwendet werden sollen, einschließlich eines Beispiels für die Übertragung eines NFT an ein Ethereum-Netzwerk, finden Sie unter REST-Endpunkte für atomare Transaktionen.