首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建合同来管理客户余额?

如何创建合同来管理客户余额?
EN

Ethereum用户
提问于 2018-11-23 21:08:37
回答 1查看 72关注 0票数 1

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

我在转换功能上有困难。

EN

回答 1

Ethereum用户

发布于 2018-11-23 23:20:59

没有办法写一份合同,从别人的帐户中支出。合同可以接受资金、持有资金、记帐和发送资金。

自动取款机可能是最简单的支架。“客户”可以存取款。这些资金“混合”在自动取款机内,总共有1,000只(手头的资金。address(this).balance)。自动取款机的工作是处理会计问题,这样它就会把所有欠个人的钱都释放出来,但不会超出它应该支付的数额。

代码语言:javascript
复制
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将与合同进行交互,如果他们想将他们从合同中删除,就会请求他们的资金。

希望能帮上忙。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/62934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档