![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
以太坊
火一样的男子
区块链开发,技术宅男
展开
-
以太坊-虚拟机第5部分——一个新合约被创建后会发生什么
在该系列文章的前部分,我们学了EVM汇编基础,也学了ABI编码是如何允许外部程序与合约进行通信的。在本文中,我们将会学习一个合约是如何从零创建的。本系列的相关文章(按照顺序):EVM汇编代码的介绍(第1部分) 固定长度数据类型的表示方法(第2部分) 动态数据类型的表示方法(第3部分) ABI编码外部方法调用的方式(第4部分)我们目前所见的EVM字节码都是比较清晰明朗的,就是EVM从...转载 2019-04-15 09:56:10 · 519 阅读 · 0 评论 -
以太坊-EVM第4部分——ABI编码外部方法调用的方式
在本系列的上一篇文章中我们看到了Solidity是如何在EVM存储器中表示复杂数据结构的。但是如果无法交互,数据就是没有意义的。智能合约就是数据和外界的中间体。在这篇文章中我们将会看到Solidity和EVM可以让外部程序来调用合约的方法并改变它的状态。“外部程序”不限于DApp/JavaScript。任何可以使用HTTP RPC与以太坊节点通信的程序,都可以通过创建一个交易与部署在区块链...转载 2019-04-15 09:55:33 · 1705 阅读 · 0 评论 -
以太坊-EVM第3部分——动态数据类型的表示方法
Solidity提供了在其他编程语言常见的数据类型。除了简单的值类型比如数字和结构体,还有一些其他数据类型,随着数据的增加可以进行动态扩展的动态类型。动态类型的3大类:映射(Mappings):mapping(bytes32 => uint256), mapping(address => string)等等 数组(Arrays):[]uint256,[]byte等等 字节数组(...转载 2019-04-15 09:54:48 · 445 阅读 · 0 评论 -
以太坊-EVM第2部分——固定长度数据类型的表示方法
在本系列的第一篇文章中,我们已经看到了一个简单的Solidity合约的汇编代码:contract C { uint256 a; function C() { a = 1; }}该合约归结于sstore指令的调用:// a = 1sstore(0x0, 0x1)EVM将0x1数值存储在0x0的位置上 每个存储槽可以存储正好32字节(或...转载 2019-04-15 09:53:25 · 647 阅读 · 0 评论 -
以太坊-EVM汇编代码的介绍(第1部分)
Solidity提供了很多高级语言的抽象概念,但是这些特性让人很难明白在运行程序的时候到底发生了什么。我阅读了Solidity的文档,但依旧存在着几个基本的问题没有弄明白。string, bytes32, byte[], bytes之间的区别是什么?该在什么地方使用哪个类型? 将 string 转换成bytes时会怎么样?可以转换成byte[]吗? 它们的存储成本是多少?EVM是如何...转载 2019-04-15 09:52:24 · 1706 阅读 · 0 评论 -
以太坊交易源码分析思维导图
原创 2019-03-13 10:25:43 · 316 阅读 · 0 评论 -
以太坊虚拟机原理及源代码深入挖掘
一. 概述 EVM为以太坊虚拟机,以太坊底层通过EVM支持智能合约的执行和调用。调用智能合约时根据合约的地址获取合约代码,生成具体的执行环境,然后将代码载入到EVM虚拟机中运行。通常目前开发智能合约的高级语言为Solidity,在利用solidity实现智能合约逻辑后,通过编译器编译成元数据(字节码)最后发布到以太坊上。 二. 架构设计 1. 位宽设计 ...原创 2019-04-19 20:02:14 · 3155 阅读 · 0 评论