首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从智能合同转移到另一个智能合同中

从智能合同转移到另一个智能合同中
EN

Ethereum用户
提问于 2020-02-06 11:13:15
回答 2查看 211关注 0票数 0

我是新手,所以我的问题可能很简单。我有两个合同"BankA“和"customer”。每当我在BankA开发环境中部署pay()并调用D0时,就会出现以下错误:

代码语言:javascript
复制
Error: Returned error: VM Exception while processing transaction: revert    at PromiEvent (C:\Users\lenovo\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\contract\lib\promievent.js:9:1)

解决办法是什么。谢谢。

BankA:

代码语言:javascript
复制
pragma solidity ^0.5.12;

import "./customer.sol";
contract BankA{
  function pay() public returns(uint256){
    customer client=new customer();
    address(client).transfer(1000);
    return address(client).balance;
  }
  function() external payable{}

}

顾客:

代码语言:javascript
复制
pragma solidity^0.5.12;
contract customer{
  function() external payable{}
  }
}
EN

回答 2

Ethereum用户

回答已采纳

发布于 2020-02-06 15:51:31

看起来,只要BankA有足够的资金,它就应该发挥作用。

请记住这一点:

代码语言:javascript
复制
address(client).transfer(1000);

如果没有足够的资金将1000发送给客户,则无法工作。

因此,要么用{value: 1000}调用(或更多),要么使用后遗症将一些资金转入BankA。否则,它将因资金不足而失败。

希望能帮上忙。

附注:考虑address(client).transfer(msg.value);转发收到的任何信息。

票数 1
EN

Ethereum用户

发布于 2021-05-05 08:39:26

当我们看到,两个合同都有回退功能。因此,他们可以在平台上接收和发送一些以太。正如@回答的那样,错误来自BankA的余额值。BankA绝不能发送乙醚超过它的平衡。为了使您的代码在这个问题上变得更聪明,我建议下面的代码可以告诉您BankA的平衡:

代码语言:javascript
复制
pragma solidity ^0.5.12;

import "./customer.sol";
contract BankA{
  function pay() public returns(uint256){
    require(address(this).balance>1000, "Balance Not Enough");
    customer client=new customer();
    address(client).transfer(1000);
    return address(client).balance;
  }
  function() external payable{}
}
票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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