智能合約之間的調用
在區塊鏈上,有些功能往往無法通過一個智能合約完成,此時便會用到智能合約之間的調用。本篇文章帶大家通過具體示例來了解一下智能合約之間的調用。
在智能合約的編譯過程中,有兩種情況:調用者和被調用者在一個sol文件中和分別在不同的文件中。
同sol文件的智能合約調用
在下面的智能合約中,Demo1和Demo在同一個文件中,可進行同時編譯,然后逐個發布。
pragma solidity ^0.5.10;
contract Demo1{
uint public data;
function setData(uint _data) public {
data = _data;
}
}
contract Demo2{
function toSetData(Demo1 demo1,uint _data) public {
demo1.setData(_data);
}
}
當發布完成,可通過第Demo2的toSetData方法進行Demo1方法的調用。傳遞的第一個參數為Demo1的智能合約地址,第二個參數為要設置的值。
不同sol文件的智能合約調用
在大多數情況下,兩個智能合約不存在於同一個sol文件中,那么就需要使用另外一種形式來進行調用。還拿調用Demo1方法來舉例,用另外一個sol文件中的Demo3來調用Demo1。
首先需要聲明接口,然后在Demo3中直接調用對應的接口。
pragma solidity ^0.5.10;
contract Demo1{
function setData(uint _data) public;
}
contract Demo3{
function toSetData(Demo1 demo1,uint _data) public {
demo1.setData(_data);
}
}
調用接口是傳遞的參數依舊同第一種情況。
原文鏈接:https://www.choupangxia.com/2019/07/30/solidity-智能合約之間的調用/