当前位置: 首页 > 知识库问答 >
问题:

如何部署多个使用彼此功能的实体智能合约?

汪飞捷
2023-03-14

我有三个智能合约,比如a.sol、b.sol和c.sol……在这三个智能合同中,前两个是独立的智能合约,而c.sol使用a.sol和b.sol的功能,因此c.Sols需要“导入”前两个智能合约。“导入”在本地工作,但如何在testnet上通过remix/truffle部署它们,以便c.sol仍然可以访问a.sol和b.sol的功能?

共有2个答案

秦焱
2023-03-14

如果您的项目是用Truffle创建的,您可以通过以下方式设置< code>c.sol:

import "./a.sol";
import "./b.sol";

contract c is a, b {
   ...
}

如果这是您的代码结构,您将能够使用< code>truffle migrate部署您的Truffle项目(假设您的迁移设置正确)。

洪光霁
2023-03-14

您的合同a和b是否应该是独立的合同,无论合同c如何都将使用?即:用户将数据存储在合约a中,该数据将由合约c使用

如果是这样的话,那么你可以将合同a和b作为合同c的变量,如下所示

a.sol

contract A {
  function doSomething() {
        ...
  }
}

c.sol

contract C {
  A a;

  function setA(address addressOfContractA) {
    a = A(address);
  }

  function makeADoSomething() {
    a.doSomething();
  }
}

信用:https://zupzup.org/smart-contract-interaction/

 类似资料:
  • 部署智能合约及与智能合约交互 如果你想避免使用智能合约的底层实现细节,web3j提供solidity的智能合约的封装包,使你能够通过web3j生成的包装对象直接与智能合约的所有方法进行交互。 另外,如果你希望发送常规交易或希望在与智能合约的交互中有更多的控制权,请参阅web3j教程:java使用web3j开发以太坊智能合约交易,这里讲到了创建智能合约,与智能合约进行交易,查询智能合约的状态等内容。

  • 8.1 RPC 之前的章节中我们看到了怎么写、部署合约以及与合约互动。现在该讲讲与以太坊网络和智能合约沟通的细节了。 一个以太坊节点提供一个 RPC界面。这个界面给 Ðapp访问以太坊区块链的权限和节点提供的功能,比如编译智能合约代码,它用 JSON-RPC 2.0规范(不支持提醒和命名的参数)的子集作为序列化协议,在 HTTP和 IPC (linux/OSX上的 unix域接口,在 Window

  • 构建与部署智能合约 智能合约的构建和部署发生在deploy方法中: YourSmartContract contract = YourSmartContract.deploy( <web3j>, <credentials>, GAS_PRICE, GAS_LIMIT, [<initialValue>,] <param1>, ..., <paramN>

  • 智能会议室目前具备发起视频会议、加入视频会议、无线投屏三个功能,这些功能需要搭配会议室内的iTV进行软硬联动使用。具体使用方法: 发起远程视频会议: 进入具备iTV的会议室->打开【智能会议室】->点击发起视频会议->选择参会成员->点击完成,此时iTV将呼出视频通话。 加入远程视频会议: 进入具备iTV的会议室->打开【智能会议室】->点击加入视频会议->输入会议ID ->点击完成,此时iTV将

  • 问题内容: 我有一个ajax调用,需要返回一个promise。功能如下 在执行下一个动作之前,我必须等待该功能执行。我该如何保证这个功能? 我尝试了以下操作,它给了我一个错误,说: 问题答案: 您有错误,因为它不是Promise。承诺异步功能非常容易(如今,nodejs具有内置的Promise支持):

  • 我通过在ERC20.sol文件中实现OpenZeppelin创建了一个基本的ERC20令牌: 然后执行另一个合同。sol如下: 因为,我已经从地址0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2部署了两个合约,所以它拥有100000000000000000000000000个令牌 但当我从同一地址调用函数时,我得到了以下错误: 交易到简单银行.存款错误:虚拟机错