Предупреждение: использование баланса члена контракта, унаследованного от типа адреса, не рекомендуется. Твердость

Предупреждение: использование элемента контракта "баланс", унаследованного от типа адреса, не рекомендуется. Преобразуйте контракт в тип «адрес» для доступа к члену, например, используйте вместо него «адрес (контракт) .balance».

Я получаю это предупреждение в Solidity с помощью редактора ремиксов.

Это фрагмент кода:

function getSummary() public view returns(
    uint, uint, uint, uint, address
){
    return (
        minimumContribution,
        this.balance, // This is the warning line.
        requests.length,
        approversCount,
        manager
    );
}

Я пробовал следовать тому, что предлагает предупреждение:

function getSummary() public view returns(
    uint, uint, uint, uint, address
){
    return (
        minimumContribution,
        address(contract).balance,
        requests.length,
        approversCount,
        manager
    );
}

Но это не работает.


person Matt    schedule 17.07.2018    source источник


Ответы (2)


balance - это атрибут типа address, а не из контракта. Измените его на address(this).balance.

function getSummary() public view returns(
    uint, uint, uint, uint, address
){
    return (
        minimumContribution,
        address(this).balance,
        requests.length,
        approversCount,
        manager
    );
}
person Adam Kipnis    schedule 17.07.2018
comment
Это то, что я искал. Спасибо. - person Matt; 17.07.2018

В качестве альтернативы вы можете назначить this локальной переменной типа _2 _...

address contractAddress = this;

function getSummary() public view returns(
    uint, uint, uint, uint, address
){
  return (
    minimumContribution,
    contractAddress.balance,
    requests.length,
    approversCount,
    manager
  );
}
person Benni Russell    schedule 18.07.2018