以太坊 ETH / EVM
Omni-Space
专注Android, Mobile Security and AI
展开
-
以太坊虚拟机EVM的缺陷与不足
首先对作者做个简单的自我介绍,Jordan Earls是Qtum量子链的联合创始人之一,目前担任Qtum量子链全球首席工程师。Qtum目前采用了以太坊虚拟机(Ethereum Virtual Machine, 以下简称EVM)并将其运用于非以太坊的区块链中(当然Qtum项目还包含很多其他工作,因与本文不相关,故不赘述)。因为Qtum中采用了EVM,因此笔者在项目执行过程中对其进行了比较深入的了解和转载 2018-02-03 10:00:54 · 3691 阅读 · 0 评论 -
【译】Diving Into The Ethereum VM Part 3 — The Hidden Costs of Arrays
Solidity提供了其他编程语言中常见的数据结构。 除了诸如数字和结构之类的简单值之外,还有数据类型可以随着更多数据的添加而动态扩展。 这些动态类型的三个主要类别是: 映射: mapping(bytes32 => uint256) , mapping(address => string)等 数组: []uint256 , []byte等。 字节数组。 只有两种: string ...翻译 2018-05-17 06:32:15 · 264 阅读 · 0 评论 -
【译】Diving Into The Ethereum VM Part 4 - How To Decipher A Smart Contract Method Call
在本系列的前几篇文章中,我们已经看到了Solidity如何在EVM存储中表示复杂的数据结构。 但是如果没有办法与数据交互,数据就毫无用处。 智能合约是数据与外部世界的中介。 在本文中,我们将看到Solidity和EVM如何使外部程序能够调用合约的方法并使其状态发生变化。 “外部程序”不限于DApp / JavaScript。 任何可以使用HTTP RPC与以太坊节点进行通信的程序都可以通过创...翻译 2018-05-17 06:35:04 · 306 阅读 · 0 评论 -
【译】Diving Into The Ethereum VM Part 5 — The Smart Contract Creation Process
在本系列的前几篇文章中,我们学习了EVM汇编的基础知识,以及ABI编码如何允许外部世界与合同进行通信。 在这篇文章中,我们将看到合同是如何从无到有的。 本系列的前几篇文章(按顺序)。 EVM汇编代码简介。 如何表示固定长度的数据类型。 如何表示动态数据类型。 ABI如何编码外部方法调用。 我们迄今为止看到的EVM字节码非常简单,只是EVM从上到下执行的指令,没有魔术般的套装。 ...翻译 2018-05-17 06:36:55 · 214 阅读 · 0 评论 -
【译】 Diving Into The Ethereum VM Part 6 - How Solidity Events Are Implemented
在如何解读智能合约方法调用中,我们了解到“方法”是如何构建在简单EVM基元之上的抽象,如“跳转”和“比较”指令。 在本文中,我们将深入探讨Solidity事件 。 在野外,事件日志主要有三种用途: 由于事务不记录方法的返回值,因此ersatz返回值。 作为一种更便宜的替代数据存储,只要合同不需要访问它。 最后,作为DApp客户可以订阅的事件。 事件记录是一种相对复杂的语言功能。 但是就像...翻译 2018-05-17 06:40:46 · 341 阅读 · 0 评论 -
Awesome Ethereum Virtual Machine
A curated list of resources on the Ethereum Virtual Machine (EVM), which is the virtual machine executed on the Ethereum network.Not listed there yet, but in the spirit of Here is how to contribute.Ta...转载 2018-05-19 09:36:56 · 554 阅读 · 0 评论 -
Reversing Ethereum Smart Contracts
This shows you how the Ethereum Virtual Machine works, and how to reverse engineer a smart contract.To disassemble the smart contract, I am using Trail of Bits’ Ethersplay plugin for Binary Ninja. If ...转载 2018-05-06 13:46:48 · 468 阅读 · 0 评论 -
Reversing Ethereum Smart Contracts: Part 2
In my previous tutorial, we began reversing engineering the Greeter.sol contract. Specifically, we looked at Greeter.sol’s dispatcher, the portion of the contract that takes your transaction data and ...转载 2018-05-06 13:46:44 · 307 阅读 · 0 评论 -
什么是图灵完备智能合约
图灵,不用多介绍,是计算机领域的大神级人物,他在科学、特别在数理逻辑和计算机科学方面,取得了举世瞩目的成就,他的一些科学成果,构成了现代计算机技术的基础。因此,很多计算机领域的模型或者理论都是以“图灵”来命名的,最经典的一个概念是“图灵机”:所谓的图灵机就是指一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,...转载 2018-05-08 08:21:46 · 4056 阅读 · 1 评论 -
【译】Thoughts and Goals on Qtum's x86 VM
因此,我们一直对x86虚拟机在Qtum中将允许的内容表现出色,除了更多的编程语言支持。 这基本上是因为设计过程很容易使一个平庸的版本,但很难建立一个优化,高效,易于使用的版本。 所以在这里我不会深入了解设计的细节,但是我想宣布我们想要的目标。 编程语言支持 当然,编程语言支持是构建这个x86虚拟机的重要原因。 我个人想让2018年在鲁斯特写的智能合约年。 Rust非常高效,重量轻,而且最重要...翻译 2018-05-31 08:30:01 · 1097 阅读 · 0 评论 -
【译】Diving Into The Ethereum VM Part 2 — How I Learned To Start Worrying And Count The Storage Cost
在本系列的第一篇文章中,我们窥见了一个简单的Solidity合约的汇编代码: 合同C { uint256 a; 函数C(){ a = 1; } } 该合约归结为sstore指令的调用: // a = 1 sstore(0x0,0x1) EVM将值0x1存储在存储位置0x0 。 每个存储位置可以存储32个字节(或256位)。 如果这看起来不熟悉,我推荐...翻译 2018-05-17 06:29:39 · 253 阅读 · 0 评论 -
[译】Diving Into The Ethereum VM
Solidity提供了许多高级语言抽象,但是这些特性使我很难理解当我的程序运行时发生了什么。 阅读Solidity文档仍然让我对基本的东西感到困惑。 字符串,字节32,字节[],字节之间有什么区别? 什么时候用? 当我将字符串转换为字节时发生了什么? 我可以投到byte []吗? 他们花多少钱? EVM如何存储映射? 为什么我不能删除映射? 我可以有映射的映射吗? (是的,但这...翻译 2018-05-17 06:25:25 · 319 阅读 · 0 评论 -
IELE:区块链的一个新虚拟机
本文由币乎社区(bihu.com)内容支持计划奖励。Runtime Verification (RV)很自豪的发布了他们第一个版本的IELE,区块链的一个新虚拟机。什么是IELE?IELE是 LLVM的一个变种,专门用于在区块链上执行智能合约。它的设计、定义以及实现都是在最高的数学标准下完成的,遵循语义优先的方式,以验证智能合约为主要目标。具体来说,我们使用 K 架构定义了IELE转载 2018-02-06 06:54:02 · 1559 阅读 · 1 评论 -
以太坊源码学习 -- EVM
以太坊源码学习 – EVM学习文档链接:here一、虚拟机外主要功能:执行前将Transaction类型转化成Message,创建虚拟机(EVM)对象,计算一些Gas消耗,以及执行交易完毕后创建收据(Receipt)对象并返回121.1 入口 和 返回值文件:/core/state_processor.go --- Process()for i, tx := range block.Tra...转载 2018-03-19 17:04:01 · 1695 阅读 · 0 评论 -
EVM反编译软件Porosity的使用-mac
首先给出 porosity 的 GitHub 地址: here本文也是根据这个网址进行学习。1. 创建和约可以使用自己写的合约,也可以在etherscan 上面找一些合约, 给出例子如下://vulnerable.sol pragma solidity ^0.4.4;contract SendBalance { mapping ( address => uint ) user...转载 2018-03-19 17:10:01 · 1345 阅读 · 0 评论 -
HISTORY OF ETHEREUM SECURITY VULNERABILITIES, HACKS AND THEIR FIXES
A smart contract is “a computerized transaction protocol that executes the terms of a contract.”. There are obvious advantages of smart contract system: reduction of expenses and legal collisions, tim...转载 2018-03-23 15:01:05 · 1158 阅读 · 0 评论 -
深入了解以太坊虚拟机
本文由币乎社区(bihu.com)内容支持计划赞助。译者说,深入了解以太坊虚拟机是一个系列的文章,一共5篇! 本文是第1篇,主要介绍的是以太坊虚拟机汇编代码基础。后续的4篇译文链接在本文的结尾处。Solidity提供了很多高级语言的抽象概念,但是这些特性让人很难明白在运行程序的时候到底发生了什么。我阅读了Solidity的文档,但依旧存在着几个基本的问题没有弄明白。string, byt...转载 2018-02-06 06:46:23 · 7469 阅读 · 0 评论 -
深入了解以太坊虚拟机第2部分——固定长度数据类型的表示方法
本文由币乎社区(bihu.com)内容支持计划赞助在本系列的第一篇文章中,我们已经看到了一个简单的Solidity合约的汇编代码:contract C { uint256 a; function C() { a = 1; }}该合约归结于sstore指令的调用:// a = 1sstore(0x0, 0x1)EVM将0x1数值存储在0x0的位置上每个存储...转载 2018-03-25 16:13:57 · 690 阅读 · 1 评论 -
深入了解以太坊虚拟机第3部分——动态数据类型的表示方法
本文由币乎社区(bihu.com)内容支持计划赞助。Solidity提供了在其他编程语言常见的数据类型。除了简单的值类型比如数字和结构体,还有一些其他数据类型,随着数据的增加可以进行动态扩展的动态类型。动态类型的3大类:映射(Mappings):mapping(bytes32 => uint256), mapping(address => string)等等数组(Arrays):[]u...转载 2018-03-25 16:15:49 · 820 阅读 · 0 评论 -
深入了解以太坊虚拟机第4部分——ABI编码外部方法调用的方式
本文由币乎社区(bihu.com)内容支持计划赞助。在本系列的上一篇文章中我们看到了Solidity是如何在EVM存储器中表示复杂数据结构的。但是如果无法交互,数据就是没有意义的。智能合约就是数据和外界的中间体。在这篇文章中我们将会看到Solidity和EVM可以让外部程序来调用合约的方法并改变它的状态。“外部程序”不限于DApp/JavaScript。任何可以使用HTTP RPC与以太坊节点通信...转载 2018-03-25 16:17:35 · 2244 阅读 · 1 评论 -
深入了解以太坊虚拟机第5部分——一个新合约被创建后会发生什么
本文由币乎社区(bihu.com)内容支持计划赞助。在该系列文章的前部分,我们学了EVM汇编基础,也学了ABI编码是如何允许外部程序与合约进行通信的。在本文中,我们将会学习一个合约是如何从零创建的。本系列的相关文章(按照顺序):EVM汇编代码的介绍(第1部分)固定长度数据类型的表示方法(第2部分)动态数据类型的表示方法(第3部分)ABI编码外部方法调用的方式(第4部分)我们目前所见的EVM字节码都...转载 2018-03-25 16:19:43 · 424 阅读 · 0 评论 -
【译】The Faults and Shortcomings of the EVM
所以,先介绍一下。 我共同创立了Qtum ,这是一个基本上采用了以太坊虚拟机(EVM)的项目,并把它放到了不是以太坊的区块链(以及其他一些东西)上。 在我这样做的过程中,我被迫反对自己的意愿去学习比我想要了解EVM更多的方法。 我从这些学习中主要拿走什么? 好吧,我不喜欢它。 我个人认为这是一个不切实际的设计,更不切实际的实施。 作为一个免责声明,我打算透彻地看到,我们为Qtum添加了另一个虚拟机...翻译 2018-05-31 08:35:19 · 384 阅读 · 0 评论