前段时间,处理了一个ERC20访问ERC721的合约问题。涉及到两个合约之间的相互调用,猛查了一通资料,找到了一个适合自己的方法,在这里分享给大家。
我这里写一个简单的例子,分享给大家,如果有不明白的地方,
合约1
pragma solidity ^0.6.12;
contract test1 {
uint256 public test = 1;
function settest(uint256 itest) public {
test = itest;
}
function gettest() public veiw returns(uint256) {
return test;
}
}
这是一个简单的合约,如果我在另一个合约中,想访问合约1中的settest和gettest函数,如何做得到呢,下面是合约2
pragma solidity ^0.6.12;
contract test1 {
//首先声明两个要访问的函数
function settest(uint) public returns (uint256) {}
function gettest() public pure returns (uint256) {}
}
contract Existing {
test1 ts1;
1
//定义一下合约1的地址
address internal ad1=合约1的地址;
ts1=test1(ad1);
function getts1() public view returns (uint result) {
return ts1.gettest();
}
function setts1(uint256 value) public {
ts1.settest(value);
}
}
通过这种方式,合约2就能正常的访问合约1的函数了,如果你想访问更多,那么你就在test1中声明更多的公用函数。