Код солидности не передает эфир в среде виртуальной машины Javascript - PullRequest
0 голосов
/ 06 апреля 2019

Я пробую свои силы в программе, которая переносит тестовые эфиры из одной учетной записи в другую при помощи ремиксов, используя среду виртуальных машин javascript.Я не могу видеть, как средства переводятся на счет получателя.

Я также поставил диагностический код, который печатает текущий остаток по контракту, но всегда печатает 0.

pragma solidity <=0.5.7;
contract MultiSigWallet{
    address payable private owner;
    address payable private  beneficiary;
    uint private minApprovers ;
    uint private currentApprovals;
    mapping(address => bool) approvedBy;
    mapping(address =>bool) isApprover;
    uint public contractBalance;

    constructor  (address payable _beneficiary, address [] memory  _approvers, int32 _minApprovers) public payable{
        require(_approvers.length > 0 && _minApprovers > 0,"At least one approver is required!");
        require(_approvers.length >= minApprovers,"Number of minimum approvers cannot be more than total approvers count");
        owner   = msg.sender;
        beneficiary = _beneficiary;
        for(uint i = 0;i<_approvers.length;i++){
            isApprover[_approvers[i]]= true;
        }

    }

    function approve () public{
        require(isApprover[msg.sender],"Not an Approver");
        if(!approvedBy[msg.sender]){
         approvedBy[msg.sender] = true;
         currentApprovals++;
        }
        if(currentApprovals== minApprovers){
            beneficiary.send(address(this).balance);
            selfdestruct(owner);
        }
    }

    function getContractBalance () public payable returns( uint){
       contractBalance =  address(this).balance;
    }
    function reject() public {
        require(isApprover[msg.sender],"Not an approver!");
        selfdestruct(owner);
    }


}

, если я предоставляю получателяадрес как a1, список утверждающих как a2, a3, и я вызываю конструктор с a4, помещая 10 эфиров в поле значения, я вижу уменьшение 10 эфиров в балансе a4.

Затем, после утверждения счетов a2, a3, я ожидаю, что баланс a1 увеличится на 10 простых эфиров, а баланс контракта обернется 0.

Однако я не вижу изменений в a1сальдо и сальдо контракта всегда равно 0.

Может кто-нибудь объяснить, что я делаю не так или есть какие-то пробелы в моем понимании?

1 Ответ

0 голосов
/ 06 апреля 2019

Вы, вероятно, хотите сделать что-то вроде minApprovers = _minApprovers в конструкторе.В противном случае minApprovers всегда равно 0, и ваша проверка == всегда будет неудачной, поскольку первый успешный вызов approve будет currentApprovals == 1.

...