Я пробую свои силы в программе, которая переносит тестовые эфиры из одной учетной записи в другую при помощи ремиксов, используя среду виртуальных машин 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.
Может кто-нибудь объяснить, что я делаю не так или есть какие-то пробелы в моем понимании?