以太坊 EVM内交易执行分析(二)】的更多相关文章

接着上次的分析,分析一下run方法是如何执行智能合约的.至于以太币的交易,在上一篇中,已经由分析的那两个函数完成了: 合约的运行是从run开始的,go-ethereum/core/vm/evm.go .可以分为两部分一部分是预编译,另外一部分是解释器. 预编译合约 // run runs the given contract and takes care of running precompiles with a fallback to the byte code interpreter.fun…
以太坊上交易最终都会由EVM进行解析存入数据库,今天就来探讨一下,一笔交易是如何别EVM执行的.我们可以把交易分为三种.(注意,和交易相关的模块很多,交易的生命周期存在于整个以太坊中,我们这次只是分析和EVM相关的部分.) 1.以太币转移,两个账户之间只发生了以太币的转移. 2.合约创建,用户创建智能合约的交易.这类交易的to地址都是空着的. 3.调用合约,用户去调用智能合约中的某个函数,这类交易中data信息包含了需要调用的函数hash值的前4个字节,以及参数.例如基于ERC20的Token转…
作者:林冠宏 / 指尖下的幽灵.转载者,请: 务必标明出处. 掘金:https://juejin.im/user/1785262612681997 博客:http://www.cnblogs.com/linguanh/ GitHub : https://github.com/af913337456/ 出版的书籍: <1.0-区块链DApp开发实战> <2.0-区块链DApp开发:基于公链> 本次是系列文章,这是第二篇.第一篇在: 以太坊 layer2: optimism 源码学习…
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguanh/ GitHub : https://github.com/af913337456/ 腾讯云专栏: https://cloud.tencent.com/developer/user/1148436/activities 目录 前序 数据签名 整体流程 非对称加密 RLP 序列化 数据验证 数据篡改…
以太坊上用户编写的合约是不可控的,要保证这些合约能够正确执行并且不会影响区块链的稳定,虚拟机需要做安全方面的考虑. 1 在程序执行过程中采取的每个计算步骤都必须提前支付费用, 从而防止DoS攻击.先消耗gas再执行,增加了攻击者制造和运行无效合约的成本,使攻击者无法制造大量的无效合约. 2 EVM是一个沙盒程序,它只能执行合约更改自身账户状态,或者调用另一合约,不能做其它操作. 3 程序的执行必须保证一致性和确定性,不能出现不同节点执行相同程序出现不同结果的情况 4 程序执行必须可终止,不能无限…
上一篇讲了 以太坊私链搭建 首先下载Ethereum Wallet 钱包 可以直接百度 下载如果直接打开它会默认连接公链 所以我们要通过命令打开 "F:\Program Files\Ethereum-Wallet\Ethereum Wallet.exe" --rpc "http://127.0.0.1:8544" 8544 是我运行客户端的端口  --rpc 可以在你该开的以太坊客命令户端 看 它是客户端运行的地址  一般是 --rpc "\\\\.\\p…
在上一篇博客中,讲述了基于docker怎么搭建一个go-ethereum节点.作为开发人员,如果只是单纯的拥有一个Full node,还无法满足正常的开发.比如说,进行转账交易,你要考虑是否拥有一定的ETC,是否能够承受高昂的gas?基于这点,今天这篇博客就介绍一下如何搭建一个私有的dev环境. 方法一:利用现有开源 先给大家介绍一个现成的ethereum/client-go:test工具镜像. 下载工具 地址:https://github.com/pragmaticcoders/docker-…
pragma solidity ^0.4.0; contract EMath{ string public _a="lin"; function f() public{ modify(_a); } //function modify(string storage name) private{ function modify(string memory name) private{ //string storage c = name;Type string memory is not i…
死磕以太坊源码分析之txpool 请结合以下代码阅读:https://github.com/blockchainGuide/ 写文章不易,也希望大家多多指出问题,交个朋友,混个圈子哦 交易池概念原理 交易池工作概况: 交易池的数据来源主要来自: 本地提交,也就是第三方应用通过调用本地以太坊节点的RPC服务所提交的交易: 远程同步,是指通过广播同步的形式,将其他以太坊节点的交易数据同步至本地节点; 交易池中交易去向:被Miner模块获取并验证,用于挖矿:挖矿成功后写进区块并被广播 Miner取走交…
什么是账户 以太坊账户与我们所知的账户概念有一定相似之处,却又有很大的区别,更不同于比特币中UTXO. 账户分两类: - 外部拥有账户(EOA),也就是普通账户 - 合约账户 普通账户 所谓的普通账户就是我们存放以太币的账户,可以随意生成,它具有以下特性: - 拥有以太币余额(以太币存放的地方,与比特币的UTXO模式不同)的balance. - 用于确定每笔交易只能被处理一次的计数器(nonce). - 发送交易(以太币转账.发布合约.调用智能合约) - 通过私钥控制 - 没有相关联的代码 合约…