Interopérabilité Ethereum
Vous pouvez inclure des transactions basées sur Ethereum dans un workflow de transaction atomique.
L'utilisation croissante des chaînes de blocs publiques et des fonctionnalités de tokenisation dans les chaînes de blocs publiques et autorisées entraîne le besoin de leur interopérabilité. Les scénarios courants incluent l'échange d'actifs entre différents livres, les transactions commerciales sur des blockchains autorisées liées aux paiements de crypto-monnaie sur des chaînes publiques, la publication de la preuve d'une transaction de blockchain autorisée sur une blockchain publique, etc. Pour permettre l'interopérabilité pour ces scénarios et d'autres, Oracle Blockchain Platform fournit l'interopérabilité avec Ethereum et avec tous les réseaux basés sur EVM qui prennent en charge les protocoles web3 standard. La fonction d'interopérabilité fonctionne en intégrant le client Geth Ethereum dans le proxy REST et en lui permettant d'orchestrer un protocole de validation optimisé en deux phases qui inclut à la fois les transactions Oracle Blockchain Platform et Ethereum/EVM via une API REST unique appelée atomicTransactions. Vous pouvez utiliser l'API atomicTransactions pour envoyer plusieurs transactions de code chaîne pour plusieurs canaux Oracle Blockchain Platform, et éventuellement ajouter une transaction Ethereum qui s'exécutera de manière atomique avec les transactions Oracle Blockchain Platform.
Contrairement aux transactions Oracle Blockchain Platform, les transactions Ethereum ne peuvent pas être décomposées en phases de préparation et de validation du protocole de validation en deux phases. Pour inclure les transactions Ethereum dans un workflow atomique, Oracle Blockchain Platform utilise une dernière optimisation de validation de ressource (LRC). Une fois que toutes les transactions Oracle Blockchain Platform sont à l'état préparé, la transaction Ethereum est lancée. Si la transaction Ethereum réussit, les transactions Oracle Blockchain Platform sont validées. Si la transaction Ethereum échoue, les transactions Oracle Blockchain Platform sont annulées.
Les transactions Ethereum ont un concept de finalité. Une transaction Ethereum peut s'exécuter avec succès, mais elle n'atteint pas la finalité tant qu'elle ne fait pas partie d'un bloc qui ne peut pas changer. Vous pouvez utiliser les paramètres finalityParams pour déterminer si la finalité doit être vérifiée et combien de temps attendre, en blocs ou en secondes. En règle générale, si vous attendez que six blocs soient générés sur le réseau de blockchain Ethereum public (Mainnet), vous pouvez supposer que la finalité des transactions a été atteinte. Dans les réseaux Ethereum privés, vous n'avez généralement pas besoin d'attendre aussi longtemps que la finalité.
Transfert d'une NFT vers un réseau Ethereum
L'API atomicTransactions prend également en charge les interactions avec les contrats intelligents qui sont déployés sur les réseaux Ethereum. Vous pouvez utiliser cette fonctionnalité pour transférer des jetons non fongibles (NFT) qui ont été extraits dans le code chaîne Hyperledger Fabric sur Oracle Blockchain Platform vers un réseau Ethereum ou Polygon, en appelant deux transactions de manière atomique. Les attributs NFT tels que l'ID de jeton, le prix et l'historique des jetons peuvent également être transmis de Oracle Blockchain Platform à Ethereum de manière atomique. Une fois que vous avez transféré une NFT d'Oracle Blockchain Platform vers Ethereum, la NFT peut être répertoriée sur une place de marché NFT publique.
Pour transférer une NFT d'Oracle Blockchain Platform vers Ethereum, vous devez suivre deux étapes de base dans une transaction atomique :
- Explorez la NFT sur Oracle Blockchain Platform. Appelez la méthode
burnNFTpour graver (supprimer) le NFT du code chaîne Hyperledger Fabric sur Oracle Blockchain Platform. Oracle Blockchain Platform prend en charge les NFT dans les versions améliorées de deux normes, ERC-721 et ERC-1155, avec l'outil Blockchain App Builder. Pour plus d'informations sur la méthode burnNFT, reportez-vous à la rubrique appropriée dans Blockchain App Builder pour Oracle Blockchain Platform : - Mentez le NFT sur Ethereum. Appelez un contrat intelligent sur le réseau Ethereum ou Polygon pour effectuer la transaction NFT sur ce réseau, en utilisant les paramètres renvoyés par la méthode
burnNFT. Des exemples de versions de contrats intelligents écrits dans le langage Solidity pour les NFT sont disponibles dans le fichier d'archive suivant : solidity-smartcontracts-fab253.zip. Les contrats intelligents, un pour chacune des normes de jeton améliorées ERC-721 et ERC-1155, comprennent une méthodemintNFT, qui crée des NFT avec des propriétés personnalisées telles que le prix et l'historique des jetons, qui peuvent être extraites de la sortie de la méthodeburnNFTà l'étape précédente.Pour les demandes non signées, si les propriétés personnalisées figurent dans le paramètreParamKeyset que les paramètres dynamiques correspondants sont transmis dans le paramètreparams, l'API de transactions atomiques peut extraire les paramètres de la méthodeburnNFTet les envoyer au contrat intelligent Ethereum. La méthodemintNFTaccepte les arguments suivants :to– L'adresse Ethereum pour le compte où le NFT sera extrait.id: ID de jeton de la NFT.price– Le prix de la NFT.tokenHistory: historique de la NFT à partir du code chaîne Oracle Blockchain Platform.
Le contrat intelligent exige que l'ID de jeton du NFT soit une chaîne numérique (chaîne pouvant être convertie en entier). Par exemple, un ID de jeton peut être
2, mais pastoken2.L'URI de jeton du NFT dans le code chaîne déployé sur Oracle Blockchain Platform doit respecter un certain format pour le rendre compatible avec les contrats intelligents Solidity :- ERC-1155 : URI pour tous les types de jeton reposant sur la substitution d'ID, tels que
https://token-cdn-domain/{id}.json. - ERC-721 : URI où tous les jetons partagent un préfixe (un URI de base) suivi d'un URI de jeton, tel que
http://api.myproject.example.com/token/<tokenURI>.
Vous pouvez utiliser l'IDE Remix pour générer une interface binaire d'application (ABI) pour le contrat intelligent. ABI peut ensuite être utilisé avec l'API
atomicTransactions. Si vous modifiez une méthode dans le contrat intelligent, vous devez recompiler le contrat et générer à nouveau l'ABI.
Pour plus d'informations sur les paramètres à utiliser pour les transactions Ethereum dans un workflow atomique, notamment un exemple de transfert d'une NFT vers un réseau Ethereum, reportez-vous à Adresses REST de transactions atomiques.