使用Web3调用以太智能合约的朋友可能都知道,从Web3的接口调用以太的智能合约有两种方式:eth_call和eth_sendTransaction。

eth_call不消耗gas,而eth_sendTransaction需要消耗gas。

本文从以太源代码详细解释两种调用方式的实现:

1)智能合约的接口

以以太坊的ERC20接口为例,接口有一个描述字:constant。

带constant的函数,web3会自动使用eth_call远程调用。

不带constant的函数,web3使用eth_sendTransaction远程调用。

比如查询地址余额的函数balanceOf带有constant描述字,web3会使用eth_call远程调用。

2)eth_sendTransaction调用过程

eth_sendTransaction调用发起一笔交易,并等待打包。

3)eth_call调用过程

eth_call调用只是在本地调用evm虚拟机执行获取状态,并没有打包操作。

总结:eth_call调用只是本地查询调用,不会发送交易,记录在链。eth_sendTransaction调用会发起交易请求,交易会打包记录在链。Web3会根据智能合约中函数有无constant描述字自动区分两种调用。

https://mp.weixin.qq.com/s/4ntwZlajGA-Z4j6LzB_LHA

以太坊源代码 - eth_call以及eth_sendTransaction区别相关推荐

  1. [以太坊源代码分析] V. 从钱包到客户端

    以太坊作为一种数字货币以太币的运行系统,显然它也会有类似于钱包的客户端程序,用来提供管理账户余额等功能.我们知道,存放(或者绑定,挂靠)以太币的账户,在代码中以Address类型变量存在,所以能够管理 ...

  2. [以太坊源代码分析] IV. 椭圆曲线密码学和以太坊中的椭圆曲线数字签名算法应用

    数字签名算法在Ethereum中的应用不少,目前已知至少有两处:一是在生成每个交易(Transaction, tx)对象时,对整个tx对象进行数字签名:二是在共识算法的Clique算法实现中,在针对新 ...

  3. [以太坊源代码分析] I.区块和交易,合约和虚拟机

    最近在看以太坊(Ethereum)的源代码, 初初看出点眉目. 区块链是近年热点之一,面向大众读者介绍概念的文章无数,有兴趣的朋友可自行搜索.我会从源代码实现入手,较系统的介绍一下以太坊的系统设计和协 ...

  4. [以太坊源代码分析] VI. 基于p2p的底层通信(上篇)

    以太坊作为一个去中心化的系统,其底层个体相互间的通信显然非常重要,所有数据的同步,各个个体状态的更新,都依赖于整个网络中每个个体相互间的通信机制.以太坊的网络通信基于peer-to-peer(p2p) ...

  5. [以太坊源代码分析]III. 挖矿和共识算法的奥秘

    本系列的前两篇分别介绍了以太坊的基本概念,基本环节-交易,区块.区块链的存储方式等,这篇打算介绍一下"挖矿"得到新区块的整个过程,以及不同共识算法的实现细节. 1.待挖掘区块需要组 ...

  6. [以太坊源代码分析] II. 数据的呈现和组织,缓存和更新

    在Ethereum的世界里,数据的最终存储形式是[k,v]键值对,目前使用的[k,v]型底层数据库是LevelDB:所有与交易,操作相关的数据,其呈现的集合形式是Block(Header):如果以Bl ...

  7. 以太坊区块链_以太坊区块链搭建与使用(一)-私有链

    步骤 一.下载go语言,并配置环境变量 //以太坊源代码依赖的编译与运行环境 二.通过git clone以太坊源码(go-ethereum),并编译 一.go安装 step1:下载 官方(一般打不开) ...

  8. 为什么以太坊不仅仅是一个加密货币

    为什么以太坊不仅仅是一个加密货币 尽管比特币(Bitcoin)和以太坊(Ethereum)是经常被一起提及的两个词,但实际上,比特币与以太坊有着很大的区别.它们唯一的共同点是,以太坊也是一个在区块链之 ...

  9. 以太坊智能合约安全入门了解一下(上)

    作者:RickGray 作者博客:http://rickgray.me/2018/05/17/ethereum-smart-contracts-vulnerabilites-review/ (注:本文 ...

  10. 区块链2.0——以太坊

    如果把比特币说成是一本全球账本,以太坊就可以被看作一台全球计算机:一个任何人都可以上传和执行应用程序,并且程序的有效执行能得到保证的地方,这种保证依赖的正是以太坊系统去中心化的,由全球成千上万的计算机 ...

最新文章

  1. xpath定位中starts-with、contains和text()的用法
  2. [分治FFT]「CTSC2018」青蕈领主
  3. [spring boot]自定义log配置文件名
  4. npm run mock | npm run dev只能启动一个
  5. jeecgboot 弹出modal刷新主窗体_保利天汇|自然的温度,刷新园林美学天际/辽宁房产特刊...
  6. 调试JavaScript代码
  7. 船舶定位实时查询系统_港口人员精准定位系统,实时安全管控与智能预警
  8. Python爬取王者荣耀皮肤
  9. python中return self用法详解
  10. 中国统计年鉴2021(各省份经济指标,人口规模,工农业数据,主要社会经济指标)
  11. 算法产品化---人脸识别采集终端的摄像头品质要求
  12. 手机号码校验(手机号---座机号)
  13. xp系统蓝屏代码7b_电脑开机蓝屏错误代码0x0000007B的详细解决过程
  14. 计算机之父图灵获英女王赦免
  15. 密码学-02完美保密
  16. icloud备份微信聊天记录怎么恢复
  17. 新闻推荐数据集MIND介绍
  18. 李开复给中国大学生的第三封信---成功、自信、快乐
  19. DDN收购Intel Lustre系统业务,详解Lustre系统架构、配置和调优
  20. pta天梯赛 非常弹得球

热门文章

  1. Tomcat and solr 环境配置
  2. Uploading SSH public key ... failed!
  3. 利用MVC思想和php语言写网站的心得
  4. 沃达丰V1210刷机教程
  5. CCNA11月20日战报
  6. MVC中的action验证登录(ActionFilterAttribute)
  7. 【转】如何分析解决Android ANR
  8. [小工具] 文本形式转储二进制
  9. Windows Phone 的主题
  10. 欧几里德算法(求最大公约数和最小公倍数)