随笔分类 -  区块链

这是区块链相关的内容
摘要:正文: 一. 首先来简单讲讲什么是NAT? 原来这是因为IPV4引起的,我们上网很可能会处在一个NAT设备(无线路由器之类)之后。NAT设备会在IP封包通过设备时修改源/目的IP地址. 对于家用路由器来说, 使用的是网络地址端口转换(NAPT), 它不仅改IP, 还修改TCP和UDP协议的端口号, 阅读全文
posted @ 2019-05-07 11:19 苦逼码农2014 阅读(1790) 评论(1) 推荐(0)
摘要:Eos的Wasm智能合约的局限性 阅读全文
posted @ 2019-01-29 18:03 苦逼码农2014 阅读(847) 评论(0) 推荐(0)
摘要:webassembly背景知识 阅读全文
posted @ 2019-01-29 14:40 苦逼码农2014 阅读(846) 评论(0) 推荐(1)
摘要:以太坊EWASM 阅读全文
posted @ 2019-01-26 17:52 苦逼码农2014 阅读(1199) 评论(0) 推荐(0)
摘要:最近越来越多的项目开始转向VNT使用的WASM,像EOS、Ontology,包括最初引入虚拟机EVM运行智能合约环境的以太坊,最近也开始转向使用WASM。 什么是WASM? WASM ,全称:WebAssembly ,是一种可以使用非 Java 编程语言编写代码并且能在浏览器上运行的技术方案,也是自 阅读全文
posted @ 2019-01-26 14:26 苦逼码农2014 阅读(472) 评论(0) 推荐(0)
摘要:首先,EVM的设计初衷是什么?它为什么被设计成目前我们看的样子呢?根据以太坊官方提供的设计原理说明,EVM的设计目标主要针对以下方面: 如果读者浏览一下这个文档,会发现EVM的设计看上去都非常的合理。那么问题在哪里呢?问题就出在它和目前主流的技术以及设计范例都格格不入。EVM如果作为一个毫无限制的非 阅读全文
posted @ 2018-12-13 14:00 苦逼码农2014 阅读(1544) 评论(0) 推荐(1)
摘要:进入keystore管理以太坊私钥的障碍很大,主要是因为以太坊客户端在直接的命令行或图形界面下隐藏了大部分的密码复杂性。 例如,用geth: 我只需要输入3个单词就能创建一个新账户。然后输入两遍密码,就这么简单!我的以太坊keystore文件就创建了。 你需要把那些非常珍贵的keystore文件备份 阅读全文
posted @ 2018-12-11 17:45 苦逼码农2014 阅读(3931) 评论(0) 推荐(0)
摘要:以太坊上交易最终都会由EVM进行解析存入数据库,今天就来探讨一下,一笔交易是如何别EVM执行的。我们可以把交易分为三种。(注意,和交易相关的模块很多,交易的生命周期存在于整个以太坊中,我们这次只是分析和EVM相关的部分。) 1、以太币转移,两个账户之间只发生了以太币的转移。 2、合约创建,用户创建智 阅读全文
posted @ 2018-12-05 16:22 苦逼码农2014 阅读(793) 评论(0) 推荐(0)
摘要:接着上次的分析,分析一下run方法是如何执行智能合约的。至于以太币的交易,在上一篇中,已经由分析的那两个函数完成了; 合约的运行是从run开始的,go-ethereum/core/vm/evm.go 。可以分为两部分一部分是预编译,另外一部分是解释器。 预编译合约 // run runs the g 阅读全文
posted @ 2018-12-05 16:17 苦逼码农2014 阅读(666) 评论(0) 推荐(0)
摘要:和Bitcoin类似,以太坊的转账流程基本是这样的: 1.发起交易:指定目标地址和交易金额,以及必需的gas/gasLimit 2.交易签名:使用账户私钥对交易进行签名 3.提交交易:验签交易,并将交易提交到交易缓冲池 4.广播交易:通知以太坊虚拟机吧交易信息广播给其他节点 Eth Transact 阅读全文
posted @ 2018-11-30 17:51 苦逼码农2014 阅读(1894) 评论(0) 推荐(2)
摘要:以太坊客户端geth的基本操作命令搭建了私有链环境之后,整理了一下客户端的一些基本的操作命令: 启动命令重复上篇博客步骤,先将区块链客户端启动,命令如下: geth –datadir “%cd%\chain” console 看到启动页面之后,新开启一个终端,并执行一下命令,并把日志输出到文本文件当 阅读全文
posted @ 2018-11-26 10:41 苦逼码农2014 阅读(992) 评论(0) 推荐(0)
摘要:以太坊虚拟机比较操作指令 EVM定义了6条比较操作指令,见下表: 下面是比较操作指令的操作码分布图: LT、GT、SLT、SGT、EQ这5条指令都是从栈顶弹出两个元素,进行比较,然后把结果(1表示true,0表示false)推入栈顶。其中LT和GT把弹出的元素解释为无符号整数进行比较,SLT和SGT 阅读全文
posted @ 2018-11-21 22:18 苦逼码农2014 阅读(690) 评论(0) 推荐(0)
摘要:以太坊虚拟机按位运算指令 EVM定义了8条按位运算指令,见下表: 下面是按位运算指令的操作码分布图: AND、OR、XOR、NOT AND、OR、XOR指令从栈顶弹出两个元素,进行按位运算,然后把结果推入栈顶。以AND指令为例,下面是它的操作示意图: NOT指令将栈元素按位取反,下面是它的操作示意图 阅读全文
posted @ 2018-11-21 22:15 苦逼码农2014 阅读(497) 评论(0) 推荐(0)
摘要:以太坊虚拟机算术运算指令EVM总共定义了11条算术运算指令,见下表: 这些指令从栈顶弹出两到三个元素,进行相应计算,然后把结果推入栈顶。参与计算的元素和结果均被解释为按二的补码编码的整数。如果计算结果(假设为x)溢出(超出2^256),则最终的结果x’取值x % 2^256(%表示取模运算,^表示指 阅读全文
posted @ 2018-11-21 22:10 苦逼码农2014 阅读(748) 评论(0) 推荐(0)
摘要:上一篇文章对EVM和它的指令集进行了简单介绍,本文将介绍POP指令、PUSHx系列指令、DUPx系列指令、SWAPx系列指令。这些指令只对EVM栈进行单纯的操作,它们的操作码分布如下图所示: POP指令POP指令(操作码0x50)从栈顶弹出一个元素。下面是POP指令的操作示意图(白色表示元素即将发生 阅读全文
posted @ 2018-11-21 22:08 苦逼码农2014 阅读(666) 评论(0) 推荐(0)
摘要:近期打算写一些关于以太坊虚拟机(后面简称EVM)的文章,这是其中的第一篇。这一系列文章想站在EVM指令集的角度,带领读者逐步理解EVM工作原理,进而理解以太坊区块链技术细节。由于网上介绍以太坊的文章也比较多,所以这一系列文章将最大程度减少不必要的废话,直接提供文章想要表达的信息。 EVM基本信息编程 阅读全文
posted @ 2018-11-21 22:04 苦逼码农2014 阅读(994) 评论(0) 推荐(0)
摘要:学习文档链接:here 一、虚拟机外 主要功能: 执行前将Transaction类型转化成Message,创建虚拟机(EVM)对象,计算一些Gas消耗,以及执行交易完毕后创建收据(Receipt)对象并返回 1 1.1 入口 和 返回值 文件:/core/state_processor.go Pro 阅读全文
posted @ 2018-11-16 11:03 苦逼码农2014 阅读(1001) 评论(0) 推荐(0)
摘要:在该系列文章的前部分,我们学了EVM汇编基础,也学了ABI编码是如何允许外部程序与合约进行通信的。在本文中,我们将会学习一个合约是如何从零创建的。 本系列的相关文章(按照顺序): EVM汇编代码的介绍(第1部分) 固定长度数据类型的表示方法(第2部分) 动态数据类型的表示方法(第3部分) ABI编码 阅读全文
posted @ 2018-11-15 12:01 苦逼码农2014 阅读(305) 评论(0) 推荐(0)
摘要:在本系列的上一篇文章中我们看到了Solidity是如何在EVM存储器中表示复杂数据结构的。但是如果无法交互,数据就是没有意义的。智能合约就是数据和外界的中间体。 在这篇文章中我们将会看到Solidity和EVM可以让外部程序来调用合约的方法并改变它的状态。 “外部程序”不限于DApp/JavaScr 阅读全文
posted @ 2018-11-01 12:01 苦逼码农2014 阅读(869) 评论(0) 推荐(0)