前言
合约调用合约,乍一听很高大上。
其实在使用过程中,很多地方会使用到。
主要是 solidity
里面的一些语法。
1. 声明跨合约的接口
例子:
如,A合约中有一个方法,名为 register
。我们想在 B 合约中调用。我们首先在B合约中声明接口。
接口定义了入参,和返回值等信息
1 | interface InterfaceA { |
2. 实例化合约
这个写法也是走了很多的弯路才找到。
下面是在B合约文件中写的内容
1 | address AddressA = 0xdddb8906d2e5c9e38b2e6e03150f9fec4102f6ec; // 合约A的合约地址 |
补充说明:
合约地址A,可以放在构造函数里面。在构造函数中触发。合约部署好即实例化。这样在下面所有函数中都可以调用。
函数把合约地址当参数传入进来,有两种方式
1
2
3
4
5function A(address add) public returns (bool) {
InterfaceA Aconstructor = InterfaceA(add);
Aconstructor.register(msg.sender, 888);
return true;
}1
2
3
4function A(InterfaceA add) public returns (bool) {
add.register(msg.sender, 888);
return true;
}这里比较推荐第一种,传入地址进来。在内部进行实例化。
- 因为入参规范
- 因为传入地址进来还可以做其他操作
结语
合约调用合约还是很常用了,用的好的话拓展性和上限都很高。
其实理解起来了并不困难,大家可以有空多了解了解