Interoperabilidad de Ethereum
Puede incluir transacciones basadas en Ethereum en un flujo de trabajo de transacciones atómicas.
El creciente uso de las cadenas de bloques públicas y las capacidades de tokenización en las cadenas de bloques públicas y autorizadas impulsa la necesidad de su interoperabilidad. Los escenarios comunes incluyen el intercambio de activos en diferentes libros mayores, las transacciones comerciales en cadenas de bloques autorizadas que están vinculadas a los pagos de criptomonedas en cadenas públicas, la 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 admita protocolos web3 estándar. La función de interoperabilidad funciona mediante la incorporación del cliente Geth Ethereum en el proxy REST y le permite 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 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 las transacciones de Ethereum como parte de un flujo de trabajo atómico, Oracle Blockchain Platform utiliza una optimización de la última confirmación de recursos (LRC). Después de que todas las transacciones de Oracle Blockchain Platform se encuentren en estado preparado, se inicia la transacción de Ethereum. Si la transacción de Ethereum tiene éxito, 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 finalización. 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 blockchain de Ethereum (Mainnet), puede asumir que se ha logrado la finalidad de la transacción. En las redes privadas de Ethereum, por lo general no es necesario esperar tanto tiempo para la finalidad.
Transferencia de una NFT a una red Ethereum
La API atomicTransactions también admite interacciones con contratos inteligentes que se despliegan en redes 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 de 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 de forma atómica. Después de transferir una NFT de Oracle Blockchain Platform a Ethereum, la NFT puede aparecer en un mercado público de NFT.
Para transferir una NFT de Oracle Blockchain Platform a Ethereum, utilice dos pasos básicos en una transacción atómica:
- Utilice la NFT en Oracle Blockchain Platform. Llame al método
burnNFTpara grabar (suprimir) la NFT desde el código de cadena 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 en Blockchain App Builder for Oracle Blockchain Platform: - Menta la 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 los contratos inteligentes escritos en el lenguaje 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étodoburnNFTen el paso anterior.Para las solicitudes sin firmar, si las propiedades personalizadas están en el parámetroParamKeysy los parámetros dinámicos correspondientes se transfieren en el parámetroparams, la API de transacciones atómicas puede recuperar los parámetros del métodoburnNFTy enviarlos al contrato inteligente de Ethereum. El métodomintNFTtoma los siguientes argumentos:to– La dirección de Ethereum para la cuenta donde se acuñará la NFT.id: ID de token de NFT.price– El precio de la NFT.tokenHistory: el historial de NFT del código de cadena de Oracle Blockchain Platform.
El contrato inteligente requiere que el ID de token de NFT debe ser una cadena numérica (una cadena que se puede convertir en un entero). Por ejemplo, un ID de token puede ser
2pero 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 basa en la sustitución de ID, como
https://token-cdn-domain/{id}.json. - ERC-721: URI donde 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 Remix para generar una interfaz binaria de aplicación (ABI) para el contrato inteligente. A continuación, se puede utilizar ABI con la API
atomicTransactions. Si cambia algún método en el contrato inteligente, debe recompilar el contrato y volver a generar la autofactura.
Para obtener más información sobre los parámetros que se deben utilizar para las transacciones de Ethereum en un flujo de trabajo atómico, incluido un ejemplo de transferencia de una NFT a una red de Ethereum, consulte Puntos finales REST de transacciones atómicas.