我有一个问题想解决一个星期,我认为自己在那里90%。
如果我在私有区块链上部署合同MerchantA
并通过坚固性命令行address
检索合同ABI
和solc --abi MerchantA.sol
并将其存储。
我该在哪里使用全新合同在SendMoneyContract
方法中输入此ABI和地址,该方法将调用部署在地址0xrandom
上的AnimalContract函数之一。
我在网上找到的材料是在同一文件中同时包含两个solidity源代码,但就我而言,我做不到。 MerchantAContract
的原因在每个部署中都是唯一的[添加的每个商人都获得了唯一的合同`。
到目前为止,据我了解,我需要提供MerchantA
合同地址和ABI。 我不知道如何在solidity函数中进行操作。
答案 0 :(得分:2)
您不对ABI做任何事情。
假设您要从MerchantB调用MerchantA上的functionA
函数,所要做的就是从MerchantA中获取接口,一个ERC20令牌接口的示例是:
contract Token {
function totalSupply() constant returns (uint256 supply) {}
function balanceOf(address _owner) constant returns (uint256 balance) {}
function transfer(address _to, uint256 _value) returns (bool success) {}
function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {}
function approve(address _spender, uint256 _value) returns (bool success) {}
function allowance(address _owner, address _spender) constant returns (uint256 remaining) {}
event Transfer(address indexed _from, address indexed _to, uint256 _value);
event Approval(address indexed _owner, address indexed _spender, uint256 _value);
uint public decimals;
string public name;
}
在MerchantB上,无论您要调用functionA的哪个位置,都应放置以下代码:
MerchantA merchantA = MerchantA(0x0000000000000000000000000000000000000000); //Replace 0x000000000000000000000000000000000000000 with the address of MerchantA
merchantA.functionA();
您将需要换出MerchantA的接口,因为您没有使用ERC20令牌以及要调用的功能。