笔者记录这些问题的原因:solidity更新很快,才几个月没使用,现在使用最新版(0.5.10)使用call
调用合约的时候,发现大变样。。。
合约调用合约,大体分为两种:
- 一、明确接口直接调用。
- 二、通用型调用。
一、接口直接调用
这种方式调用,是最简单方便的调用方式,缺点就是这能调用固定的接口,不够灵活。
先直接上代码。示例都是调用一个已经部署的合约的deposit
方法。
pragma solidity ^0.5.10;
interface ContractInterface {
function deposit(string calldata _name) external payable returns(bool);
}
contract InterfaceCall {
function callDeposit(address _contract, string memory _args)
public
returns(bool)
{
ContractInterface ci = ContractInterface(_contract);
bool retValue = ci.deposit(_args);
return retValue;
}
}
二、通用型调用
通用型调用一般直接使用call
方法调用。这种方式调用,是灵活的调用方式,缺点就是太灵活导致生产环境中出现了很多重大bug,使用此种调