Latino Forex Forum

Hilo: Transacciones en Ethereum

+ Responder tema
Resultados 1 al 1 de 1
  1. #1 Colapso post
    socrates980 está desconectado
    Senior Member
    Fecha de ingreso
    Aug 2020
    Gracias
    0
    Agradecido 55 Veces en 50 Publicaciónes
    SuscríbaseSuscríbase
    suscrito:  0

    Transacciones en Ethereum

    Objetivo
    La transacción es la forma en que el mundo externo interactúa con la red Ethereum. La transacción se utiliza cuando deseamos modificar o actualizar el estado almacenado en la red Ethereum. En este artículo, primero proporcionaremos algunos conceptos básicos sobre Ethereum. Esto sienta las bases necesarias para las próximas partes. Luego examinamos la estructura de una transacción genérica de Ethereum. Y después de eso, estamos listos para explorar los tres tipos de transacciones, cada una para diferentes propósitos, utilizando la transacción Ethereum. Algunos conceptos básicos sobre cuentas y contratos Ethereum es una implementación de blockchain basada en cuentas. Hay dos tipos de cuenta: cuenta de propiedad externa y cuenta de contrato. Los presentaremos de forma lógica. Cuenta de propiedad externa (EOA) Primero, podemos considerar a EOA como un usuario individual en el mundo externo. Un usuario en la red Ethereum está representado por una dirección de 20 bytes (160 bits).
    La representación se realiza mediante la retención de una clave privada que finalmente deriva la dirección de 20 bytes. Dentro de una red Ethereum circula una moneda nativa: el éter. Además de una moneda nativa, el ether se usa principalmente como tarifa de transacción o cargo por servicio (llamado gas en Ethereum) cuando la red Ethereum está procesando la transacción. Cada EOA tiene una cantidad de éter como estado. Cuando un EOA inicia una transacción, se especifica el gas y luego se gasta en la red Ethereum. Seguiremos viendo elementos de gas cuando profundicemos en la parte de la transacción. Contrato Antes de entrar en la cuenta del contrato, primero echemos un vistazo al contrato. El contrato es la capacidad de "contrato inteligente" en la red Ethereum, donde se implementa la lógica empresarial. El contrato comienza como un lenguaje de codificación comprensible para los humanos (Solidity es el más común en Ethereum). Este código se compila en un código comprensible por máquina, llamado bytecode, que se implementará en una red Ethereum. Dentro del código de contrato hay funciones. Estas funciones definen la lógica empresarial real y se llamarán y ejecutarán una vez "invocadas" después de que se implemente el contrato. Vamos a utilizar un contrato de muestra llamado SimpleStorage en este artículo como demostración.
    Cuenta de contrato El código de bytes mencionado anteriormente aún no es accesible hasta que se implementa en una red Ethereum. El despliegue de un código de bytes de contrato se realiza mediante una transacción (lo examinaremos más adelante). Se crea una cuenta de contrato correspondiente a un contrato implementado. La cuenta de contrato se identifica mediante una dirección de contrato, de nuevo una dirección de 20 bytes. Esta es la dirección cuando interactuamos con esta cuenta implementada. Como cualquier EOA, la cuenta de contrato también puede mantener ethers cuando sea apropiado para la lógica empresarial. Elementos omitidos Como este artículo trata principalmente sobre transacciones, omitimos algunos conceptos importantes sobre el propio Ethereum, como la comunicación y la minería de igual a igual. Suponemos que la transacción se propaga correctamente en la red Ethereum, se extrae con éxito y luego se incluye en un nuevo bloque. Herramientas a utilizar Aquí hay algunas herramientas que utilizo aquí para demostrar las transacciones de Ethereum.
    • Cualquier compilador funciona bien. Aquí uso REMIX, una herramienta IDE en línea para contratos Ethereum. Solo saco el código de bytes de un contrato de muestra.
    • También se utiliza un simulador de Ethereum. Esto acelera el proceso de configuración de una red privada y las transacciones se extraen casi de inmediato. Aquí estoy usando Ganache-CLI.
    • Para interactuar con la red Ethereum, utilizo el cliente Go Ethereum (geth) para acceder al simulador Ethereum. Transacción Ethereum Si bien las transacciones se utilizan para diferentes propósitos, la estructura de la transacción es la misma. Primero exploraremos lo que hay dentro. Estructura de la transacción

    De: el remitente de la transacción. Es una dirección de 20 bytes que representa la cuenta que inicia esta transacción. Para: el destinatario de esta transacción. También es una dirección de 20 bytes. Depende del uso, puede ser otro EOA, una cuenta de contrato o simplemente dejarse vacío. Valor: La cantidad de fondo en wei (1 éter = 10¹⁸ weis) que se transferirá de "Desde" a "Hasta". Si "Para" es un EOA, es simplemente una transferencia de fondos. Si "Para" es una dirección de contrato, es la cantidad de fondos transferidos al contrato implementado. El contrato está codificado de modo que pueda aceptar fondos. Datos / Entrada: este campo de datos es principalmente para actividades relacionadas con el contrato. Para un nuevo despliegue de contrato, es el código de bytes y los argumentos codificados. Para la ejecución de la función del contrato, contiene la firma de la función y los argumentos codificados. Se deja vacío en la transferencia de fondos. Precio del gas y límite del gas: Ambos están relacionados con el costo de procesamiento de esta transacción. Cada paso de procesamiento de una transacción realizada por el minero tiene una unidad de gas predefinida (por ejemplo, "sload" que obtiene datos del almacenamiento permanente le cuesta 20 unidades de gas).
    El precio del gas es la cantidad (en wei) por unidad de gas. Este es el precio unitario de la transacción que el remitente está dispuesto a pagar. El límite de gas es la cantidad máxima de unidades de gas gastadas para esta transacción. La unidad de gas máxima gastada por su transacción no excederá el Límite de Gas, como protección en caso de cualquier discrepancia en el procesamiento de la transacción. Firma de una transacción Como usamos geth, este cliente de Ethereum manejará el proceso de firma en su nombre. "Firmar" un objeto de transacción es el proceso de generar una firma en él utilizando la clave privada del remitente de la transacción. Luego, geth maneja la transacción firmada para todos los pasos siguientes hasta que la transacción firmada se incluye en un bloque recién extraído. Envío de transacciones usando Geth Hay dos formas de enviar transacciones a través de RPC: eth enviar Transacción y eth enviar Raw Transacción correspondientes al comando que podemos usar en Geth: eth enviar transacción () y eth enviar RawTransaction (). Eth enviar Transacción (): esto es para enviar un objeto de transacción. Geth ayudará a firmar la transacción (asumiendo que geth tiene control sobre la clave privada) y realizará toda la serialización antes de enviarla a la red Ethereum. eth enviar Raw Transaction (): Esto es para enviar una transacción firmada serializada, que se compone de acuerdo con la estructura requerida. Esto generalmente se usa cuando la clave privada no se maneja localmente en geth y la firma se realiza fuera del cliente Geth. En aras de la simplicidad, estamos usando eth enviar Transacción () para todo este artículo. Tres tipos de transacciones La transacción genérica mencionada anteriormente se utiliza para los tres propósitos diferentes.
    • Transferencia de fondos entre EOA
    • Implementar un contrato en la red Ethereum
    • Ejecutar una función en un contrato implementado Transferencia de fondos entre EOA Esta transacción se utiliza cuando una EOA está transfiriendo fondos a otra EOA.

    Nombre:  Capturar 1.PNG
Visitas: 132
Tamaño: 192.3 KB

    La transacción se ve así.

    Nombre:  Capturar  2.PNG
Visitas: 133
Tamaño: 25.9 KB

    En esta demostración, estamos transfiriendo 10 ethers de las cuentas [0] a las cuentas [1].

    Nombre:  Capturar 3.PNG
Visitas: 130
Tamaño: 64.9 KB

    Nota:
    • Aquí estamos usando web3.fromWei y web3.toWei para convertir entre ether y wei por motivos de demostración. Tenga en cuenta que el valor de la transacción siempre está en wei. • Se gasta algo de gas al enviar esta transacción desde las cuentas [0]. El saldo de cuentas [0] es un poco menos de 90 ethers. La diferencia es el gas gastado para manejar esta transacción. Implementar un contrato en la red Ethereum En esta parte, implementaremos un contrato compilado (es decir, el código de bytes) en una red Ethereum. En Ethereum, el despliegue del contrato se realiza mediante una transacción.

    Nombre:  Capturar 4.PNG
Visitas: 130
Tamaño: 179.3 KB


    La transacción se ve así.

    Nombre:  Capturar 5.PNG
Visitas: 55
Tamaño: 31.0 KB

    Como de costumbre, vemos que se devuelve un hash de transacción. Con este hash de transacción podemos examinar el detalle de la transacción usando eth. getTransaction () y eth.getTransactionReceipt (). Aquí vemos
    • En la transacción, a se deja vacío (se muestra "0x0").
    • En la entrada, solo colocamos el bytecode. Es porque nuestro contrato SimpleStorage no tiene un constructor que requiera argumentos. Si se necesitan argumentos en el constructor, se codifican según el tipo y se añaden después del código de bytes. Veremos cómo se hace la codificación cuando llamemos a la función set () en la siguiente parte.
    • La dirección del contrato se encuentra en Recibo de transacción. Lo usaremos en la siguiente parte.
    • El límite de gas predeterminado (gas) es 90.000 gas. Si no especifica el gas, se encontrará "sin gas", ya que se necesitan más de 90.000 gas para procesar esta transacción. Por lo tanto, especificamos 200.000 gas para esta transacción.
    • Resulta que el procesamiento de la transacción solo requiere 112.213 gas. El resto se devuelve al remitente de la transacción. Ejecutar una función en un contrato implementado Después de implementar un contrato, un EOA puede ejecutar las funciones definidas en este contrato. Nuevamente, se implementa enviando una transacción Ethereum. Gráfico Antes de realizar sendTransaction () para ejecutar una función definida en el contrato, revisemos el mecanismo de cómo identificar la función. En el código de Solidez anterior, se definen dos funciones: get () y set (uint). Cuando se compila el código del contrato, estas funciones se procesan a través de una función hash (keccak256, implementada como sha3 en la biblioteca web3) y los primeros cuatro bytes se toman como selectores de funciones. Así es como extraemos la selección de funciones de estas dos funciones.

    Resumen En este artículo hemos examinado los tres tipos de interacción más común con la red Ethereum: enviar ethers entre cuentas, implementar un contrato y ejecutar funciones de contrato. Todos ellos se pueden hacer mediante el envío de transacciones a la red Ethereum, con la construcción adecuada de los parámetros de transacción en el interior. Esta no es la única forma de manejar la implementación de contratos y la ejecución de funciones, ya que también podemos usar eth.contract () y Application Binary Interface (abi) haciendo un trabajo similar. Sin embargo, usar eth.sendTransaction () nos ayuda a comprender el mecanismo detrás.

    Aunque operar en los mercados financieros implica un alto riesgo, también puede generar ingresos adicionales, siempre y cuando aplique el enfoque correcto. Al elegir un bróker confiable como InstaForex, obtiene acceso a los mercados financieros internacionales y abre su camino hacia la independencia financiera. Puede registrarse aquí.


+ Responder tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes