Interoperabilidad de Ethereum

Puede incluir transacciones basadas en Ethereum en un flujo de trabajo de transacciones atómicas.

El creciente uso de cadenas de bloques públicas y capacidades de tokenización en 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, transacciones comerciales en cadenas de bloques con permisos que están vinculadas a pagos de criptomonedas en cadenas públicas, la publicación de pruebas de una transacción de cadena de bloques con permisos 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 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 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á de forma atómica 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 última confirmación de recurso (LRC). Después de 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 la transacción Ethereum falla, 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 puede ejecutarse correctamente, pero no alcanza la finalidad hasta que es 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. Por lo general, si espera a que se generen seis bloques en la red pública de blockchain de Ethereum (Mainnet), puede asumir que se logró la finalización de la transacción. En las redes privadas de Ethereum, por lo general no es necesario esperar tanto tiempo para la finalidad.

Transferencia de un NFT a una red Ethereum

La API atomicTransactions también admite interacciones con contratos inteligentes que se implementan en redes Ethereum. Puede utilizar esta funcionalidad para transferir tokens no fungibles (NFT) que se extrajeron en el código de cadena de Hyperledger Fabric en Oracle Blockchain Platform a una red Ethereum o Polygon, invocando dos transacciones de forma atómica. 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 un NFT de Oracle Blockchain Platform a Ethereum, el NFT se puede incluir en un mercado público de NFT.

Para transferir un NFT de Oracle Blockchain Platform a Ethereum, debe utilizar dos pasos básicos en una transacción atómica:

  1. Grabe NFT en Oracle Blockchain Platform. Llame al método burnNFT para grabar (suprimir) el NFT del código de cadena de Hyperledger Fabric en Oracle Blockchain Platform. Oracle Blockchain Platform soporta 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:
  2. 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 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étodo mintNFT, que crea NFT con propiedades personalizadas como el historial de tokens y precios, que se pueden recuperar de la salida del método burnNFT en el paso anterior.
    Para las solicitudes sin firmar, si las propiedades personalizadas están en el parámetro ParamKeys y los parámetros dinámicos correspondientes se transfieren en el parámetro params, la API de transacciones atómicas puede recuperar los parámetros del método burnNFT y enviarlos al contrato inteligente de Ethereum. El método mintNFT toma los siguientes argumentos:
    • to: dirección de Ethereum para la cuenta en la que se acuñará el NFT.
    • id: ID de token de NFT.
    • price - El precio de la NFT.
    • tokenHistory: el historial de NFT del 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 no token2.

    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 usar el IDE Remix para generar una interfaz binaria de aplicación (ABI) para el contrato inteligente. ABI se puede utilizar con la API atomicTransactions. Si cambia algún método en el contrato inteligente, debe volver a compilar el contrato y generar la ABI de nuevo.

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 Ethereum, consulte Puntos finales de REST de transacciones atómicas.