与来自另一个以太坊合约的合约交互

Interacting with a Contract from Another Contract Ethereum

我有一个问题想解决一个星期,我想我已经解决了 90%。

如果我在私有区块链上部署合约 MerchantA 并通过 solidity 命令行 solc --abi MerchantA.sol 检索它的合约 addressABI 并存储它。

全新的合约 中,我在哪里输入这个 ABI 和地址 SendMoneyContract 在调用地址 [=15 部署的 AnimalContract 的函数之一的方法中说=].

我在网上找到的 material 是在同一个文件中包含两个 solidity 源代码,但就我而言,我做不到。 MerchantAContract 的原因对于每个部署都是唯一的 [每个添加的商家都会获得一个唯一的合同]。

到目前为止,根据我的理解,我需要包括 MerchantA 合约地址和 ABI。 我不知道如何在 solidity 函数中执行此操作。

您不对 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 上,在任何要调用函数 A 的地方,输入以下代码:

MerchantA merchantA = MerchantA(0x0000000000000000000000000000000000000000); //Replace 0x000000000000000000000000000000000000000 with the address of MerchantA
merchantA.functionA();

您将需要换出 MerchantA 的接口,因为您没有使用 ERC20 代币以及您要调用的函数。