Dado que todos los activos digitales se crean a través de transacciones, las firmas juegan un papel vital en cualquier cadena de bloques. En este artículo, le mostraremos cómo firmar transacciones de Ethereum y exploraremos cómo se pueden usar estos números para firmar operaciones que manipulan activos digitales y más.
Transacciones - con transacciones antiguas, con transacciones nuevas
¿Las transacciones de blockchain no son diferentes a las transacciones bancarias? Hoy en día, la mayoría de los bancos facilitan el uso de medios digitales para enviar dinero a alguien, depositar dinero en su cuenta de ahorros e incluso solicitar un préstamo. La era de Internet nos ha permitido realizar la mayoría de estas acciones en línea sin ninguna interacción física.
Aunque son fáciles de usar, estas operaciones están lejos de ser fáciles y baratas para los bancos. Detrás de escena, múltiples terceros están involucrados en la compensación, verificación y validación de sus operaciones bancarias, todo mientras se mantiene el cumplimiento de las regulaciones bancarias.
Las instituciones financieras deben tomar medidas prolongadas para asegurarse de que usted sea realmente una persona autorizada para operar su cuenta. Todos estos niveles incurren en costos significativos, una de las muchas razones por las que las pasarelas de pago como Visa o Mastercard suelen cobrar una tarifa por compra en función del monto de la transacción. Por supuesto, estas operaciones se pueden congelar cuando y donde sea, y también se pueden revertir bajo ciertas circunstancias.
El comportamiento de las transacciones de blockchain sigue un conjunto diferente de reglas
Debido a la naturaleza distribuida y sin permiso de las cadenas de bloques públicas, cualquiera puede firmar transacciones y transmitirlas a la red. Dependiendo de la cadena de bloques, cobrará una tarifa para permitir que las transacciones sean "extraídas" (es decir, recogidas por los mineros e incluidas en la cadena de bloques), pero esa tarifa generalmente se basa en la demanda del usuario en la cadena de bloques, no en el valor. del activo en la transacción. Por ejemplo, enviar $1 de una cuenta de Ethereum a otra costará lo mismo que enviar $1 millón. Los mineros pueden aceptar ambas transacciones por igual y agregarlas a bloques válidos para su transmisión a la cadena de bloques.
Además, las transacciones de blockchain no requieren verificación por parte de ninguna autoridad central. Para que una transacción sea válida, simplemente debe firmarse con una clave privada utilizando el algoritmo de firma digital (DSA) correspondiente a su cadena de bloques. Las cadenas de bloques de Ethereum y Bitcoin utilizan el algoritmo ECDSA, mientras que otros proyectos como Cardano o Polkadot se basan en el algoritmo EdDSA.
Ambos se basan en curvas elípticas, mientras que el último utiliza curvas torcidas de Edwards, una mejora con respecto a las firmas digitales comunes. Aunque se puede usar cualquier clave privada para firmar una transacción, una transacción de transferencia solo se ejecutará correctamente si la cuenta asociada con la clave privada utilizada para firmar la transacción contiene fondos suficientes.
Una vez que se firma una transacción, se transmite a la red y se extrae en un bloque exitoso en la red, no hay forma de restaurar la transacción. A diferencia de la banca, las transacciones de blockchain extraídas con éxito no se pueden revertir ni restaurar al estado de las transacciones anteriores. La naturaleza de la mayoría de las transacciones públicas de la cadena de bloques las hace visibles y, por lo tanto, la cadena de bloques utilizada para estas transacciones es la última fuente de verdad para estos activos.
Estructura de transacción de Ethereum
Ahora que tenemos una buena comprensión de la naturaleza de las transacciones de blockchain, estamos listos para crear nuestra primera transacción basada en Ethereum. Comenzaremos con una transacción de transferencia simple: 0.1 ETH a la dirección.
Las transacciones se pueden describir mediante la notación de objetos de JavaScript (JSON), por lo que al crear la transacción, utilice MyEtherWallet (después de iniciar sesión a través de enviar sin conexión) de la siguiente manera:
Luego aparecen varios valores: nonce, gasLimit, gasPrice, data y chainId. No se trata de lo que negociamos, se trata de cómo se ejecutan nuestras operaciones. Esto se debe a que, al enviar transacciones en Ethereum, debe definir algunos parámetros adicionales para decirles a los mineros cómo procesar su transacción. Dos propiedades en nuestra transacción involucran "gas", que es una medida del trabajo computacional que se debe pagar a los mineros de Ethereum para enviar la transacción a la red de la cadena de bloques.
Uno es gasPrice (expresado en unidades llamadas Gwei, igual a 1/10 es el token Ether nativo de Ethereum), y el otro es gasLimit, que es la cantidad máxima de gas que puede usar en sus transacciones. Estos valores se pueden estimar a partir de los nodos de Ethereum, por lo que los proveedores de monederos suelen completarlos automáticamente.
Además del parámetro de gas, también debe especificar en qué red específica de Ethereum se ejecutará esta transacción. La red Ethereum incluye la red principal (mainnet) con chaidId 1, pero dado que la red de prueba ETH se puede solicitar o financiar a través de un grifo en línea, no hay riesgo de ningún valor económico para otras redes de prueba (redes de prueba) donde se le pueden enviar transacciones. Por lo general, al desarrollar una Dapp, primero la ejecutará en la red local y luego la implementará en la red de prueba como paso final antes de ir a la red principal.
Por último, pero no menos importante, tenemos datos y nonce, que puede adjuntar como parte de la transacción si necesita enviar otros datos. Al interactuar con un contrato inteligente, el campo de datos contendrá sus instrucciones para ese contrato.
Un nonce ("un número usado solo una vez") es un valor utilizado por la red Ethereum para rastrear transacciones, lo que ayuda a evitar el doble gasto y los ataques de repetición en la red. A veces, las transacciones se atascan en la red debido a los bajos precios de la gasolina, por lo que transmite transacciones con precios más altos, pero el mismo nonce efectivamente "reemplaza" las transacciones pendientes en la red después de que los mineros toman el control (una vez que "lento" puede ver "" transacción, porque tiene el mismo nonce que la transacción aprobada, será rechazada).
Firmar una transacción de Ethereum
Tomando nuestro JSON anterior, finalmente podemos pasar al proceso de firma. Como mencionamos, este proceso involucra el algoritmo ECDSA. Para firmar transacciones con ECDSA, usaremos la popular biblioteca ethers.js, que ya incluye las llamadas necesarias al paquete de curvas elípticas para usar la curva secp256k1 con el algoritmo ECDSA.
Puede probar este código en línea en Runkit y compararlo con los resultados de MyEtherWallet (MEW) usando su clave privada.
El resultado representa su transacción firmada, que puede transmitirse a la red Ethereum.
Puede usar MEW directamente o la utilidad en línea Composer de Alchemy, que le permite pasar transacciones firmadas a la red Ethereum usando el método eth_sendRawTransaction de la API RPC para comunicarse con los nodos Ethereum.
Firme ahora, transfiera más tarde
La firma de transacciones realizada como se describe anteriormente se denomina "firma fuera de línea". Dado que nuestra clave privada está bajo nuestro control, podemos usar la cuenta de Ethereum para crear una verificación de firma y luego transmitirla a la red de Ethereum. Muchas billeteras en línea firman y transmiten (por ejemplo, Metamask, Portis). Sin embargo, la firma fuera de línea es particularmente útil para aplicaciones como los canales estatales, que son contratos inteligentes que rastrean los saldos entre dos cuentas y donde los fondos se pueden transferir tan pronto como se envía una transacción firmada.
La firma fuera de la cadena también es una práctica común en los intercambios descentralizados (DEX), donde las órdenes de compra y venta se almacenan fuera de la cadena y solo se liquidan en la cadena si coinciden con una orden que se ajusta a una transacción firmada previamente.
Con Portis, puede firmar transacciones para interactuar con la Red de estaciones de servicio (GSN). Para interactuar con el GSN, Portis se suscribe a un grupo de repetidores que pueden pagar las tarifas de gas de sus transacciones. Estos retransmisores se suscriben a un contrato descentralizado (como este en la red de prueba de Ropsten) y Portis les envía solicitudes para retransmitir su transacción. Todavía necesita firmar transacciones (después de todo, las firmas sin firmar no tienen sentido), pero el widget de Portis hace todo el procesamiento anterior en segundo plano, por lo que los usuarios pueden comenzar a firmar transacciones e interactuar con contratos inteligentes incluso con una billetera nueva. Las tarifas de gas se pueden pagar sin ETH.
Tags:
Los tokens de plataforma de varios intercambios han crecido fuertemente desde finales de 2020. Independientemente de los factores de aumento cíclico provocados por este mercado alcista.
El artículo es una contribución de Biquan Beiming, columnista de Jinse Finance and Economics, y sus comentarios solo representan sus puntos de vista personales.
Tenemos un poco de tiempo hoy, ampliémonos un poco hoy. Con respecto al punto de vista de BTC, la inversión aún debe volver a la investigación histórica.
Dado que todos los activos digitales se crean a través de transacciones, las firmas juegan un papel vital en cualquier cadena de bloques. En este artículo.
¿Qué problemas se pueden resolver implementando DAO en Ethereum?A las 17:00 del 19 de abril, Jinse Finance realizó una nueva edición de "Blockchain · World Chronicle" e invitó al cofundador de Busy, Robert.
¿Qué es una visera? Visor o visor smart pool es una bóveda personal en forma de NFT.
El artículo es una contribución de Biquan Beiming, columnista de Jinse Finance and Economics, y sus comentarios solo representan sus puntos de vista personales.