Солидность — Создайте смарт-контракт, который вернет эфир отправителю

#blockchain #ethereum #solidity

Вопрос:

Я пишу свой первый смарт-контракт и хочу знать, верны ли мои мысли.

Просто мне нужно написать контракт, который получит eth и отправит его обратно отправителю. Я хочу создать простой ввод в JS, чтобы предоставить значение для отправки.

Могу ли я сделать это за одну функцию? Или мне нужно получить внешнюю функцию? Как может выглядеть эта функция? Что-то вроде:

 contract Transaction {
    string public name;

    constructor() public {
        name = 'Send Ether App';
    }
    event SendAndGetBack(
        address payable buyer,
        uint256 price
    );

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

    function sendEtherAndGetItBack(address payable addr) public payable {
        require(getBalance() >= msg.value);
        require(addr == msg.sender);
        addr.transfer(msg.value);
        // event with balance subtracts msg.value
        emit SendAndGetBack(addr, msg.value);
}}
 

Есть ли способ выдать событие, когда eth покидает адрес, прежде чем вернуть его?

Комментарии:

1. Что именно вы хотели бы сделать?! Получите ETH и отправьте его по addr адресу?!