如何使用多个帐户调用函数?

问题描述

我创建了一个智能合约,该合约应在两个所有者调用后执行一个函数,并且仅当两个所有者都调用函数X时,才执行此函数。这就像一个多签名类型。我的代码在下面,但仍然无法运行。在两个所有者调用后,合同应向钱包帐户发送1个以太币。拜托,任何人都可以帮助我。预先感谢。

 `pragma solidity ^0.4.25;

  contract MyContract {

  address Owner1;
  address Owner2;
  address Wallet;
  mapping(address => bool) signed;
  mapping(address => uint) balances;

  constructor() public payable {
   Owner1 = 0xC20201d915458EF540aDe6068dFe2777E8fa733c;
   Owner2 = 0x54201A09ACff6D2A60DcdF8896AFf308FDDC160C;
   Wallet = 0x30E09Fa68430Def6978ED1a3E8f5ed473A04024c;
   }

   function Sign() public {
   require (msg.sender == Owner1 || msg.sender == Owner2);
   require (signed[msg.sender] == false);
   signed[msg.sender] = true;
    }

   function Reward() public payable returns (string) {
   require (signed[Owner1] == true && signed[Owner2] == true);
   Wallet.transfer(1 ether); 
   signed[Owner1] = false; 
   signed[Oener2] = false; 
   }
     }

`

解决方法

首先,在下面的这段代码中,您需要从帐户中存入一些以太币以进行存入功能。然后您可以调用符号和奖励功能

pragma solidity ^0.4.25;

  contract MyContract {

  address Owner1;
  address Owner2;
  address Wallet;
  mapping(address => bool) signed;
  mapping(address => uint) balances;

  constructor() public payable {
   Owner1 = 0x4B0897b0513fdC7C541B6d9D7E929C4e5364D2dB;
   Owner2 = 0x583031D1113aD414F02576BD6afaBfb302140225;
   Wallet = 0xdD870fA1b7C4700F2BD7f44238821C26f7392148;
   }
   
   function deposit() payable returns(bool success) {
        balances[msg.sender] +=msg.value;
        return true;
    }

   function Sign() public {
   require (msg.sender == Owner1 || msg.sender == Owner2);
   require (signed[msg.sender] == false);
   signed[msg.sender] = true;
    }

   function Reward() public payable returns (string) {
   require (signed[Owner1] == true && signed[Owner2] == true);
   Wallet.transfer(1 ether); 
   signed[Owner1] = false; 
   signed[Owner2] = false; 
   }
     }