我想要实现这样的东西:测试条件,使以太之间的帐户转移。3个账户

我在转换功能上有困难。
发布于 2018-11-23 23:20:59
没有办法写一份合同,从别人的帐户中支出。合同可以接受资金、持有资金、记帐和发送资金。
自动取款机可能是最简单的支架。“客户”可以存取款。这些资金“混合”在自动取款机内,总共有1,000只(手头的资金。address(this).balance)。自动取款机的工作是处理会计问题,这样它就会把所有欠个人的钱都释放出来,但不会超出它应该支付的数额。
pragma solidity 0.4.25;
contract ATM {
mapping(address => uint) public balances; // balances of all users
event LogDeposit(address sender, uint amount);
event LogWithdrawal(address receiver, uint amount);
// send money to the contract
function depositFunds() public payable returns(bool success) { // we accept all funds
require(msg.value > 0); // needs to make sense
balances[msg.sender] += msg.value; // credit the sender account
emit LogDeposit(msg.sender, msg.value); // emit event
return true; // return success
}
// take money from the contract
function withdrawFunds(uint amount) public returns(bool success) {
require(amount > 0); // needs to make sense
require(balances[msg.sender] >= amount); // requester is owed money?
balances[msg.sender] -= amount; // debit requester account
emit LogWithdrawal(msg.sender, amount); // emit event
msg.sender.transfer(amount); // send funds
return true; // return success
}
}如果不清楚,public mapping意味着任何人都可以检查欠任何地址的余额。这意味着Alice和Bob可以检查合同所持有的资金。他们可以使用withdrawFunds()函数来提取资金。
如果您想要一份合同来调解Alice和Bob之间的交易,那么您需要Alice和Bob将资产转移到合同的安全保管中。然后,当触发事件发生时,更新内部会计。出于技术原因,通常最好使用ATM示例中的“取款模式”。Alice和Bob将与合同进行交互,如果他们想将他们从合同中删除,就会请求他们的资金。
希望能帮上忙。
https://ethereum.stackexchange.com/questions/62934
复制相似问题