Recientemente he estado volviendo a aprender Solidity, consolidando los detalles y escribiendo un “Solid Minimalist Primer” para que lo usen los principiantes (los chicos de programación pueden encontrar otro tutorial), actualizado de 1 a 3 veces por semana.
Todo el código y los tutoriales son de código abierto en GitHub: github.com/AmazingAng/WTFSolidity
Solidity tiene tres formas de enviar ETH a otros contratos, son: transfer(), send() y call(), donde call() es el uso recomendado.
Recibir contratos de ETH
Comencemos implementando un contrato para recibir ETH, ReceiveETH. Hay un registro de eventos en el contrato ReceiveETH que registra la cantidad de ETH recibida y el gas restante. También hay dos funciones, una es receive(), que se activa cuando se recibe el ETH y envía un evento de registro, y la otra es getBalance() para consultar el saldo de ETH del contrato.
Después de implementar el contrato, ejecute la función getBalance() y podrá ver que el saldo de ETH del contrato actual es 0.
Enviar contratos de ETH
Implementaremos tres formas de enviar ETH al contrato ReceiveETH. Primero, implementamos el constructor del pago y receive() en el contrato SendETH que envía el contrato ETH, lo que nos permite transferir dinero al contrato en y después de la implementación.
transferencia
El uso es transferible.
transfer() tiene un límite de gas de 2300, que es suficiente para las transferencias, pero las funciones fallback() o receive() del otro contrato no pueden implementar una lógica demasiado compleja.
transfer() se revierte automáticamente si la transferencia falla.
Para el ejemplo de código, tenga en cuenta el _to en el parámetro Ingrese la dirección del contrato ReceiveETH y el monto es el monto de la transferencia de ETH:
enviar
El uso es enviado (la cantidad de ETH enviada).
El límite de gas de send() es 2300, que es suficiente para las transferencias, pero las funciones fallback() o receive() del otro contrato no pueden implementar una lógica demasiado compleja.
send() no se revertirá si la transferencia falla.
El valor de retorno de send() es bool, lo que significa que la transferencia fue exitosa o fallida, y requiere código adicional para lidiar con ella.
Ejemplo de código:
llamada
El uso es call{value: la cantidad de ETH enviada}(“”).
call() no tiene límite de gas y puede soportar las funciones fallback() o receive() del otro contrato para implementar una lógica compleja.
call() no se revertirá si la transferencia falla.
call() devuelve (bool, data), donde bool representa una transferencia exitosa o fallida, que requiere código adicional para tratar.
Ejemplo de código:
Al ejecutar los tres métodos, puede ver que todos pueden enviar ETH con éxito al contrato ReceiveETH.
Resumen
En esta charla, presentaremos tres métodos de solidez para enviar ETH: transferir, enviar y llamar.
La llamada no tiene límite de gas, es el más flexible y es el método más recomendado, la transferencia tiene un límite de gas de 2300, pero si no se envía, revertirá automáticamente la transacción, que es la segunda mejor opción, y el envío tiene un límite de gas de 2300, y si no se envía, no revertirá automáticamente la transacción y casi nadie la usa.
Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
Solid Minimalist Primer|Lección 20: Envío de transferencias, envíos y llamadas de ETH
Recientemente he estado volviendo a aprender Solidity, consolidando los detalles y escribiendo un “Solid Minimalist Primer” para que lo usen los principiantes (los chicos de programación pueden encontrar otro tutorial), actualizado de 1 a 3 veces por semana.
Todo el código y los tutoriales son de código abierto en GitHub: github.com/AmazingAng/WTFSolidity
Solidity tiene tres formas de enviar ETH a otros contratos, son: transfer(), send() y call(), donde call() es el uso recomendado.
Recibir contratos de ETH
Comencemos implementando un contrato para recibir ETH, ReceiveETH. Hay un registro de eventos en el contrato ReceiveETH que registra la cantidad de ETH recibida y el gas restante. También hay dos funciones, una es receive(), que se activa cuando se recibe el ETH y envía un evento de registro, y la otra es getBalance() para consultar el saldo de ETH del contrato.
Después de implementar el contrato, ejecute la función getBalance() y podrá ver que el saldo de ETH del contrato actual es 0.
Enviar contratos de ETH
Implementaremos tres formas de enviar ETH al contrato ReceiveETH. Primero, implementamos el constructor del pago y receive() en el contrato SendETH que envía el contrato ETH, lo que nos permite transferir dinero al contrato en y después de la implementación.
transferencia
El uso es transferible.
transfer() tiene un límite de gas de 2300, que es suficiente para las transferencias, pero las funciones fallback() o receive() del otro contrato no pueden implementar una lógica demasiado compleja.
transfer() se revierte automáticamente si la transferencia falla.
Para el ejemplo de código, tenga en cuenta el _to en el parámetro Ingrese la dirección del contrato ReceiveETH y el monto es el monto de la transferencia de ETH:
enviar
El uso es enviado (la cantidad de ETH enviada).
El límite de gas de send() es 2300, que es suficiente para las transferencias, pero las funciones fallback() o receive() del otro contrato no pueden implementar una lógica demasiado compleja.
send() no se revertirá si la transferencia falla.
El valor de retorno de send() es bool, lo que significa que la transferencia fue exitosa o fallida, y requiere código adicional para lidiar con ella.
Ejemplo de código:
llamada
El uso es call{value: la cantidad de ETH enviada}(“”).
call() no tiene límite de gas y puede soportar las funciones fallback() o receive() del otro contrato para implementar una lógica compleja.
call() no se revertirá si la transferencia falla.
call() devuelve (bool, data), donde bool representa una transferencia exitosa o fallida, que requiere código adicional para tratar.
Ejemplo de código:
Al ejecutar los tres métodos, puede ver que todos pueden enviar ETH con éxito al contrato ReceiveETH.
Resumen
En esta charla, presentaremos tres métodos de solidez para enviar ETH: transferir, enviar y llamar.
La llamada no tiene límite de gas, es el más flexible y es el método más recomendado, la transferencia tiene un límite de gas de 2300, pero si no se envía, revertirá automáticamente la transacción, que es la segunda mejor opción, y el envío tiene un límite de gas de 2300, y si no se envía, no revertirá automáticamente la transacción y casi nadie la usa.