Как перевести средства со смарт-контракта на счет ДРУГОГО чем msg.sender? - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь перевести часть средств, хранящихся в смарт-контракте, на счет, отличный от того, который вызывает функцию (msg.sender).Моя функция примерно такая:

function getFunds(address addr, uint amount) public {
    require (address.this(balance)>= amount);
    addr.transfer(amount);
}

Что я получаю при компиляции в Truffle:

Элемент "передача" не найден или не виден после поиска, зависящего от аргументав адресе.

Как будто он ищет членов в структуре.

Спасибо за любую помощь.

1 Ответ

1 голос
/ 26 сентября 2019

Поскольку адреса Solidity 0.5 должны быть payable, чтобы передать им eth *

function getFunds(address payable addr, uint amount) public {
    require (address.this(balance)>= amount);
    addr.transfer(amount);
}

Для отображения структуры вы можете использовать вот так

contract testContract {

    mapping(uint256 => test) testAddressMapping; 
    struct test {
        address payable testAddress;
    }

    function testFunction() external{
        testAddressMapping[0].testAddress.transfer(100);
    }
}
...