Ethereum-Interoperabilität

Sie können Ethereum-basierte Transaktionen in einen atomaren Transaktionsworkflow aufnehmen.

Die zunehmende Verwendung öffentlicher Blockchains und Tokenisierungsfunktionen sowohl in öffentlichen als auch in autorisierten Blockchains macht ihre Interoperabilität erforderlich. Häufige Szenarien umfassen den Austausch von Vermögenswerten über verschiedene Bücher hinweg, Geschäftstransaktionen auf genehmigten Blockchains, die mit Kryptowährungszahlungen auf öffentlichen Ketten verknüpft sind, die Veröffentlichung eines Nachweises einer genehmigten Blockchain-Transaktion auf 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 Standardprotokolle web3 unterstützen. Die Interoperabilitätsfunktion funktioniert, indem der Geth Ethereum-Client in den REST-Proxy integriert wird und es ihm ermöglicht, ein optimiertes Zwei-Phasen-Commit-Protokoll zu orchestrieren, das sowohl Oracle Blockchain Platform- als auch Ethereum-/EVM-Transaktionen über eine einzige REST-API namens atomicTransactions umfasst. Mit der atomicTransactions-API können Sie mehrere Chaincodetransaktionen für mehrere Oracle Blockchain Platform-Kanäle senden. Optional können Sie 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 zweiphasigen Commit-Protokolls unterteilt werden. Um Ethereum-Transaktionen als Teil eines atomaren Workflows einzuschließen, verwendet Oracle Blockchain Platform eine Last Resource Commit-(LRC-)Optimierung. Nachdem sich alle Oracle Blockchain Platform-Transaktionen im vorbereiteten Status befinden, wird die Ethereum-Transaktion gestartet. Wenn die Ethereum-Transaktion erfolgreich ist, werden die Oracle Blockchain Platform-Transaktionen festgeschrieben. Wenn die Ethereum-Transaktion nicht erfolgreich verläuft, werden die Oracle Blockchain Platform-Transaktionen zurückgesetzt.

Ethereum-Transaktionen haben das Konzept der Endgültigkeit. Eine Ethereum-Transaktion kann erfolgreich ausgeführt werden, erreicht jedoch erst dann die Endgültigkeit, wenn sie Teil eines Blocks ist, der sich nicht ändern kann. Mit den Parametern finalityParams können Sie steuern, ob die Endgültigkeit geprüft werden soll und wie lange darauf gewartet werden soll, entweder in Blöcken oder in Sekunden. Wenn Sie auf die Generierung von sechs Blöcken im öffentlichen Ethereum-Blockchain-Netzwerk (Mainnet) warten, können Sie in der Regel davon ausgehen, dass die Transaktionsfinalität 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 API atomicTransactions unterstützt auch Interaktionen mit Smart Contracts, die in Ethereum-Netzwerken bereitgestellt werden. Mit dieser Funktion können Sie nicht fungible Token (NFTs), die in Hyperledger Fabric Chaincode in Oracle Blockchain Platform geprägt wurden, in ein Ethereum- oder Polygonnetzwerk übertragen, 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 eine NFT von Oracle Blockchain Platform auf Ethereum übertragen haben, kann die NFT auf einem öffentlichen NFT-Marktplatz gelistet werden.

Um eine NFT von Oracle Blockchain Platform in Ethereum zu übertragen, verwenden Sie zwei grundlegende Schritte in einer atomaren Transaktion:

  1. Brennen Sie die NFT auf Oracle Blockchain Platform. Rufen Sie die Methode burnNFT auf, um die NFT aus dem Hyperledger Fabric-Kettencode auf Oracle Blockchain Platform zu brennen (löschen). Oracle Blockchain Platform unterstützt NFTs in erweiterten Versionen der beiden Standards ERC-721 und ERC-1155 mit dem Blockchain App Builder-Tool. Weitere Informationen zur Methode burnNFT finden Sie im entsprechenden Thema für Ihre Umgebung:
  2. Mint die NFT auf Ethereum. Rufen Sie einen Smart Contract im Ethereum- oder Polygon-Netzwerk auf, um die NFT in diesem Netzwerk zu prägen. Verwenden Sie dazu die von der Methode burnNFT zurückgegebenen Parameter. 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, einer für jeden der erweiterten Tokenstandards ERC-721 und ERC-1155, enthalten eine mintNFT-Methode, die NFTs mit benutzerdefinierten Eigenschaften wie Preis- und Tokenhistorie erstellt, die aus der Ausgabe der burnNFT-Methode im vorherigen Schritt abgerufen werden können.
    Wenn bei nicht signierten Anforderungen die benutzerdefinierten Eigenschaften im Parameter ParamKeys enthalten sind und entsprechende dynamische Parameter im Parameter params übergeben werden, kann die atomare Transaktions-API die Parameter aus der Methode burnNFT abrufen und an den Ethereum-Smart Contract senden. Die mintNFT-Methode nimmt die folgenden Argumente an:
    • to - Die Ethereum-Adresse für das Konto, in dem die NFT geprägt wird.
    • id: Die Token-ID der NFT.
    • price - Der Preis der NFT.
    • tokenHistory: Die Historie der NFT aus dem Oracle Blockchain Platform-Kettencode.

    Für den Smart Contract muss die Token-ID der NFT eine numerische Zeichenfolge sein (eine Zeichenfolge, die in eine Ganzzahl konvertiert werden kann). Beispiel: Eine Token-ID kann 2, aber nicht token2 lauten.

    Die Token-URI der NFT im Chaincode, der auf Oracle Blockchain Platform bereitgestellt wird, muss ein bestimmtes Format aufweisen, damit sie mit Solidity-Smart Contracts kompatibel ist:
    • ERC-1155: Eine URI für alle Tokentypen, die auf der ID-Ersetzung basieren, wie https://token-cdn-domain/{ID}.json.
    • ERC-721: Eine URI, bei der alle Token ein Präfix (eine Basis-URI) gefolgt von einer Token-URI, wie http://api.myproject.example.com/token/<tokenURI>, gemeinsam verwenden.

    Sie können die Remix-IDE verwenden, um eine Anwendungsbinärschnittstelle (ABI) für den Smart Contract zu generieren. Der ABI kann dann mit der atomicTransactions-API verwendet werden. Wenn Sie eine Methode im Smart Contract ä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 einer NFT in ein Ethereum-Netzwerk, finden Sie unter REST-Endpunkte für atomische Transaktionen.