Ethereum-Interoperabilität

Sie können Ethereum-basierte Transaktionen in einen Workflow für atomare Transaktionen aufnehmen.

Die zunehmende Nutzung öffentlicher Blockchains und Tokenisierungsfunktionen in öffentlichen und genehmigten Blockchains treibt die Notwendigkeit ihrer Interoperabilität voran. Häufige Szenarien umfassen den Austausch von Vermögenswerten über verschiedene Bücher hinweg, Geschäftstransaktionen auf genehmigten Blockchains, die mit Kryptowährungszahlungen an öffentlichen Ketten verknüpft sind, den Nachweis einer genehmigten Blockchain-Transaktion auf einer öffentlichen Blockchain veröffentlichen usw. Um Interoperabilität für diese und andere Szenarien zu ermöglichen, bietet Oracle Blockchain Platform Interoperabilität mit Ethereum und allen EVM-basierten Netzwerken, die standardmäßige web3-Protokolle unterstützen. Die Interoperabilitätsfunktion arbeitet, 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. Sie können die atomicTransactions-API verwenden, um mehrere Chaincode-Transaktionen für mehrere Oracle Blockchain Platform-Kanäle zu 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 Two-Phase Commit-Protokolls unterteilt werden. Um Ethereum-Transaktionen als Teil eines atomaren Workflows einzuschließen, verwendet Oracle Blockchain Platform eine LRC-(Last Resource Commit-)Optimierung. Nachdem alle Oracle Blockchain Platform-Transaktionen im vorbereiteten Status 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 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 finalityParams-Parametern können Sie steuern, ob die Endgültigkeit geprüft wird und wie lange darauf gewartet werden soll, entweder in Blöcken oder in Sekunden. Wenn Sie in der Regel darauf warten, dass sechs Blöcke im öffentlichen Ethereum-Blockchain-Netzwerk (Mainnet) generiert werden, können Sie 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 atomicTransactions-API unterstützt auch Interaktionen mit Smart Contracts, die in Ethereum-Netzwerken bereitgestellt werden. Mit dieser Funktionalität können Sie nicht fungible Token (NFTs), die in Hyperledger Fabric Chaincode auf Oracle Blockchain Platform geprägt wurden, in ein Ethereum- oder Polygon-Netzwerk ü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 einen NFT von Oracle Blockchain Platform nach Ethereum übertragen haben, kann der NFT auf einem öffentlichen NFT-Marktplatz aufgeführt werden.

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

  1. Brennen Sie NFT auf Oracle Blockchain Platform. Rufen Sie die Methode burnNFT auf, um die NFT aus dem Hyperledger Fabric-Chaincode 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 Blockchain App Builder-Tool. Weitere Informationen zur Methode burnNFT finden Sie im entsprechenden Thema in Blockchain App Builder for Oracle Blockchain Platform:
  2. Minze die NFT auf Ethereum. Rufen Sie einen Smart Contract 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 Solidity 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 Token-Standards 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 sich bei nicht signierten Anforderungen die benutzerdefinierten Eigenschaften im Parameter ParamKeys befinden und die entsprechenden dynamischen Parameter im Parameter params übergeben werden, kann die API für atomare Transaktionen die Parameter aus der Methode burnNFT abrufen und an den Ethereum-Smart Contract senden. Die Methode mintNFT akzeptiert die folgenden Argumente:
    • to - Die Ethereum-Adresse für das Konto, in dem die NFT geprägt wird.
    • id: Die Token-ID der NFT.
    • price – Der Preis des NFT.
    • tokenHistory: Die Geschichte der NFT aus dem Chaincode Oracle Blockchain Platform.

    Der Smart Contract erfordert, dass die Token-ID der NFT eine numerische Zeichenfolge sein muss (eine Zeichenfolge, die in eine Ganzzahl konvertiert werden kann). Beispiel: Eine Token-ID kann 2, aber nicht token2 sein.

    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 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) gefolgt von einer Token-URI verwenden, wie http://api.myproject.example.com/token/<tokenURI>.

    Sie können die Remix IDE verwenden, um eine binäre Schnittstelle (ABI) für Anwendungen für den Smart Contract zu generieren. Die ABI kann dann mit der API atomicTransactions verwendet werden. Wenn Sie eine Methode im Smart Contract ändern, müssen Sie den Vertrag neu kompilieren und die 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 NFTs an ein Ethereum-Netzwerk, finden Sie unter REST-Endpunkte für atomische Transaktionen.