以太坊里合约A调用合约B里的函数

    在以太坊中,常常涉及到合约之间的相互调用,可以使用call(bytes4(keccak256(“被调用的函数原型”)来实现。
    下面介绍,合约EthTwo通过call()方式,来调用合约EthOne里的setNum()方法。

1、编写合约EthOne

    //EthOne.sol

pragma solidity ^0.4.18;
contract EthOne {
    uint public num = 1;
    function setNum(uint val) public returns(uint) {
        num = val;
        return num;
    }
}

2、编写合约EthTwo

    //EthTwo.sol

pragma solidity ^0.4.18;
contract EthTwo {
    address ads;
    constructor(address addr) public {
        ads = addr;
    }

    function setNum(uint val) public returns(uint) {
        require(ads.call(bytes4(keccak256("setNum(uint256)")),val));
        return val;
    }
}

3、部署合约

3.1 先部署合约EthOne

    在Remix里先部署合约EthOne,得到Ethone的合约地址为:
0x98cacA17dc7eede98691d30703497cf0224F3A2c

3.2 部署合约EthTwo

    拷贝Ethone的合约地址,复制到EthTwo的Deploy按钮旁边的输入框里,如图(1)所示:

图(1) 在合约EthTwo构造时,填入EthOne的合约地址,来初始化合约变量ads

    点击[Deploy],得到EthTwo的合约地址为:0x691Ab2691293A60B3A3609b13fFab728743B2fC1

4、EthTwo调用EthOne

    首先,在Remix部署页面的ETHONE栏目里,点击[num]得到num的初始值为num = 1,
    然后,在ETHTWO栏目里,设置num值,比如,setNum(4) --> 点击[transact], 如图(2)所示:

图(2) 设置num=4

    最后,回到ETHONE栏目里,点击[num]发现num=4,即ETHTwo通过EthOne成功,也就是call()方法可以实现合约之间的调用。如图(3)所示:

图(3) 读取num的值

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以太坊智能合约是基于以太坊区块链技术的智能合约,可以实现自动化的合同执行和全球范围内的去中心化应用程序开发。在以太坊上编写智能合约需要使用Solidity语言。 以下是以太坊智能合约编程的菜鸟教程: 1. 安装Solidity编译器 Solidity是以太坊上最常用的智能合约编程语言,需要安装Solidity编译器才能编写和部署Solidity智能合约。可以从官方网站或GitHub上下载Solidity编译器。 2. 编写智能合约 使用Solidity编写智能合约需要掌握Solidity语言的语法和关键字。可以在Remix集成开发环境中编写Solidity智能合约,也可以在本地使用Solidity编译器进行编写。 以下是一个简单的Solidity智能合约示例: ``` pragma solidity ^0.8.0; contract MyContract { uint256 public myNumber; function setNumber(uint256 _number) public { myNumber = _number; } } ``` 这个智能合约定义了一个名为MyContract的合约,包含一个名为myNumber的公共变量和一个名为setNumber的公共函数。setNumber函数将传入的参数设置为myNumber的值。 3. 编译和部署智能合约 编写完智能合约后,需要使用Solidity编译器将其编译成字节码。可以使用Remix集成开发环境或本地Solidity编译器进行编译。 部署智能合约需要连接以太坊网络,并使用以太坊钱包或其他工具进行部署。部署智能合约时需要支付以太币作为燃料费。 4. 调用智能合约方法 部署智能合约后,可以使用以太坊钱包或其他工具调用智能合约中的方法使用Solidity编写的智能合约方法可以通过Web3.js或其他以太坊API进行调用。 以上是以太坊智能合约编程的基本流程,希望能对初学者有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值