Contrato inteligente que puede transferir ETH a otra billetera ETH (propietario del contrato inteligente)

De hecho, mi socio creó un contrato inteligente que puede crear un nuevo contrato inteligente y enviar los ingresos. Soy bastante nuevo en Solidity y no puedo encontrar una manera de modificar el contrato inteligente para aceptar ETH del remitente, almacenarlo o enviarlo directamente al propietario del contrato inteligente. Aquí está el código, la ayuda será apreciada!

    pragma solidity ^0.4.0;

    contract EtherTransferTo {
    function () public payable {
    }

    function getBalance() public returns (uint) {
    return address(this).balance;
    }
}

    contract EtherTransferFrom {

    EtherTransferTo private _instance;

    function EtherTransferFrom() public {
    // _instance = EtherTransferTo(address(this));
    _instance = new EtherTransferTo();
   }

    function getBalance() public returns (uint) {
    return address(this).balance;
    }

    function getBalanceOfInstance() public returns (uint) {
    //return address(_instance).balance;
    return _instance.getBalance();
    }

    function () public payable {
    //msg.sender.send(msg.value);
    address(_instance).send(msg.value);
    }
}

Respuestas (1)

Si desea realizar un contrato que simplemente reenvía cualquier ETH al propietario del contrato, deberá:

  • Definir un propietario del contrato en la creación del contrato
  • Crear una función pagadera en el contrato
  • Hacer que esa función de pago reenvíe los fondos a ese propietario

Aquí hay una muestra realmente simple para comenzar (no probada y no lista para la producción):

pragma solidity 0.4.24;

contract EthForward {
    address _owner;

    constructor() public {
        _owner = msg.sender;
    }

    function() public payable {
        _owner.transfer(msg.value);
    }
}

Este contrato aprovecha dos conceptos clave:

  1. La función constructora
  2. La función de reserva

Debería dedicar tiempo a aprender más sobre solidez a través de documentación oficial y tutoriales como Cryptozombies.

He probado el código y funciona bien. Gracias por la sugerencia. ¿Puede un contrato inteligente aceptar ETH y enviar la misma cantidad de tokens que el ETH enviado más enviar el ETH al propietario?
Claro, eso solo requiere que use una interfaz de token (probablemente erc-20) y que escriba una función para agregar tokens a un usuario cuando realiza un pago. De nuevo, te recomiendo que empieces de una manera más teórica, y aprendas la solidez como lenguaje, y luego tomes tus conocimientos y los apliques a un problema específico que quieras resolver.