Solidity合约调合约那些事

本文详细介绍了在Solidity中调用智能合约的两种方式:接口直接调用和通用型调用,包括获取函数签名、打包签名和参数、调用合约及处理返回值的步骤。同时强调了在生产环境中处理call返回值的重要性,并提醒注意合约调用的安全问题,如限制调用身份。
摘要由CSDN通过智能技术生成

笔者记录这些问题的原因:solidity更新很快,才几个月没使用,现在使用最新版(0.5.10)使用call调用合约的时候,发现大变样。。。


合约调用合约,大体分为两种:

  • 一、明确接口直接调用。
  • 二、通用型调用。

一、接口直接调用

这种方式调用,是最简单方便的调用方式,缺点就是这能调用固定的接口,不够灵活。

先直接上代码。示例都是调用一个已经部署的合约的deposit方法。

pragma solidity ^0.5.10;

interface ContractInterface {
    function deposit(string calldata _name) external payable returns(bool);
}

contract InterfaceCall {
    function callDeposit(address _contract, string memory _args) 
    	public 
    	returns(bool)
    {
        ContractInterface ci = ContractInterface(_contract);
        bool retValue = ci.deposit(_args);
        return retValue;
    }
}

二、通用型调用

通用型调用一般直接使用call方法调用。这种方式调用,是灵活的调用方式,缺点就是太灵活导致生产环境中出现了很多重大bug,使用此种调

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值