Interoperabilidad de Ethereum
Puede incluir transacciones basadas en Ethereum en un flujo de trabajo de transacciones atómicas.
El creciente uso de blockchains públicas y capacidades de tokenización tanto en blockchains públicas como autorizadas impulsa la necesidad de su interoperabilidad. Los escenarios comunes incluyen intercambio de activos en diferentes libros mayores, transacciones comerciales en cadenas de bloques autorizadas que están vinculadas a pagos de criptomonedas en cadenas públicas, publicación de pruebas de una transacción de cadena de bloques autorizada en una cadena de bloques pública, etc. Para permitir la interoperabilidad para estos y otros escenarios, Oracle Blockchain Platform proporciona interoperabilidad con Ethereum y con cualquier red basada en EVM que soporte protocolos web3 estándar. La función de interoperabilidad funciona incorporando el cliente Geth Ethereum en el proxy REST y permitiéndole orquestar un protocolo de confirmación en dos fases optimizado que incluye transacciones de Oracle Blockchain Platform y Ethereum/EVM a través de una única API de REST denominada atomicTransactions
. Puede utilizar la API de atomicTransactions
para enviar varias transacciones de código de cadena para varios canales de Oracle Blockchain Platform y, opcionalmente, puede agregar una transacción de Ethereum que se ejecutará atómicamente con las transacciones de Oracle Blockchain Platform.
A diferencia de las transacciones de Oracle Blockchain Platform, las transacciones de Ethereum no se pueden desglosar en las fases de preparación y confirmación del protocolo de confirmación en dos fases. Para incluir transacciones de Ethereum como parte de un flujo de trabajo atómico, Oracle Blockchain Platform utiliza una optimización de última confirmación de recurso (LRC). Una vez que todas las transacciones de Oracle Blockchain Platform están en estado preparado, se inicia la transacción de Ethereum. Si la transacción de Ethereum se realiza correctamente, se confirman las transacciones de Oracle Blockchain Platform. Si falla la transacción de Ethereum, se realiza un rollback de las transacciones de Oracle Blockchain Platform.
Las transacciones de Ethereum tienen un concepto de finalidad. Una transacción de Ethereum se puede ejecutar correctamente, pero no logra la finalidad hasta que forma parte de un bloque que no puede cambiar. Puede utilizar los parámetros finalityParams
para controlar si se debe comprobar la finalidad y cuánto tiempo se debe esperar, ya sea en bloques o en segundos. Normalmente, si espera a que se generen seis bloques en la red pública de cadenas de bloques de Ethereum (Mainnet), puede asumir que se ha logrado la finalización de la transacción. En las redes privadas de Ethereum, normalmente no es necesario esperar tanto tiempo para la finalización.
Transferencia de un NFT a una red Ethereum
La API atomicTransactions
también admite interacciones con contratos inteligentes desplegados en redes de Ethereum. Puede utilizar esta funcionalidad para transferir tokens no fungibles (NFT) acuñados en el código de cadena de Hyperledger Fabric en Oracle Blockchain Platform a una red Ethereum o Polygon, invocando dos transacciones atómicamente. Los atributos de NFT, como el ID de token, el precio y el historial de tokens, también se pueden transferir de Oracle Blockchain Platform a Ethereum atómicamente. Después de transferir un NFT de Oracle Blockchain Platform a Ethereum, el NFT puede aparecer en un mercado público de NFT.
Para transferir una NFT de Oracle Blockchain Platform a Ethereum, debe utilizar dos pasos básicos en una transacción atómica:
- Grabe la NFT en Oracle Blockchain Platform. Llame al método
burnNFT
para grabar (suprimir) la NFT del código de cadenas de Hyperledger Fabric en Oracle Blockchain Platform. Oracle Blockchain Platform admite NFT en versiones mejoradas de dos estándares, ERC-721 y ERC-1155, con la herramienta Blockchain App Builder. Para obtener más información sobre el método burnNFT, consulte el tema relevante para su entorno: - Menta el NFT en Ethereum. Llame a un contrato inteligente en la red Ethereum o Polygon para acuñar el NFT en esa red, utilizando los parámetros devueltos por el método
burnNFT
. Las versiones de ejemplo de contratos inteligentes escritos en el idioma Solidity para NFT están disponibles en el siguiente archivo de almacenamiento: solidity-smartcontracts-fab253.zip. Los contratos inteligentes, uno para cada uno de los estándares de token mejorados ERC-721 y ERC-1155, incluyen un métodomintNFT
, que crea NFT con propiedades personalizadas como el precio y el historial de tokens, que se pueden recuperar de la salida del métodoburnNFT
en el paso anterior.Para solicitudes sin firmar, si las propiedades personalizadas están en el parámetroParamKeys
y se transfieren los parámetros dinámicos correspondientes en el parámetroparams
, la API de transacciones atómicas puede recuperar los parámetros del métodoburnNFT
y enviarlos al contrato inteligente de Ethereum. El métodomintNFT
toma los siguientes argumentos:to
– La dirección de Ethereum para la cuenta donde se acuñará el NFT.id
: ID de token de NFT.price
– El precio de la NFT.tokenHistory
: historia de NFT desde el código de cadenas de Oracle Blockchain Platform.
El contrato inteligente requiere que el ID de token de NFT sea una cadena numérica (una cadena que se puede convertir en un entero). Por ejemplo, un ID de token puede ser
2
pero notoken2
.El URI de token de NFT en el código de cadena desplegado en Oracle Blockchain Platform debe seguir un formato determinado para que sea compatible con los contratos inteligentes de Solidity:- ERC-1155: URI para todos los tipos de token que se basan en la sustitución de ID, como
https://token-cdn-domain/{id}.json
. - ERC-721: URI en el que todos los tokens comparten un prefijo (un URI base) seguido de un URI de token, como
http://api.myproject.example.com/token/<tokenURI>
.
Puede utilizar el IDE de mezcla para generar una interfaz binaria de aplicación (ABI) para el contrato inteligente. A continuación, ABI se puede utilizar con la API
atomicTransactions
. Si cambia algún método del contrato inteligente, debe recompilar el contrato y volver a generar la ABI.
Para obtener más información sobre los parámetros que se utilizarán para las transacciones de Ethereum en un flujo de trabajo atómico, incluido un ejemplo de transferencia de un NFT a una red de Ethereum, consulte Atomic Transactions REST Endpoints.