什么是账户 以太坊账户与我们所知的账户概念有一定相似之处,却又有很大的区别,更不同于比特币中UTXO. 账户分两类: - 外部拥有账户(EOA),也就是普通账户 - 合约账户 普通账户 所谓的普通账户就是我们存放以太币的账户,可以随意生成,它具有以下特性: - 拥有以太币余额(以太币存放的地方,与比特币的UTXO模式不同)的balance. - 用于确定每笔交易只能被处理一次的计数器(nonce). - 发送交易(以太币转账.发布合约.调用智能合约) - 通过私钥控制 - 没有相关联的代码 合约…
基于Vue.web3的以太坊项目开发及交易内幕初探 本文通过宏观和微观两个层面窥探以太坊底层执行逻辑. 宏观层面描述创建并运行一个小型带钱包的发币APP的过程,微观层面是顺藤摸瓜从http api深入go-ethereum源码执行过程. 分析思路:自上而下,从APP深入EVM. 从应用入手,如果一头扎进ethereum,收获的可能是纯理论的东西,要想有所理解还得结合以后的实践才能恍然大悟.所以我始终坚持从应用入手.自上而下是一种正确.事半功倍的方法论. 我在讲解以太坊基础概念的那篇专题文章里,用…
https://blog.csdn.net/t46414704152abc/article/details/81191804 写得超好,终于弄懂了什么是叔块,怎么确定哪条链最长,以太坊与比特币出块的差别 为了确定哪个路径才是最有效的以及防止多条链的产生,以太坊使用了一个叫做“GHOST协议(GHOST protocol.)”的数学机制. GHOST = Greedy Heaviest Observed Subtree 在比特币中的出块时间是10分钟,说明难度也大:以太坊中将出块时间提升到了15秒…
本篇博文是自己学习mpt的过程,边学边记录,很多原理性内容非自己原创,好的博文将会以链接形式进行共享. 一.什么是mpt MPT是以太坊中的merkle改进树,基于基数树,即前缀树改进而来,大大提高了查找效率. 二.前缀树 MPT中的P,就是前缀树,也叫trie或字典树.trie每个节点是一个确定长度的数组,每个节点的值指向子节点的指针,最后还有一组标志位,用来标志到此是否是一个完整的字符串,并且有几个这样的字符串. 如下图是一个常见的用来存英文单词的trie:(图转自http://blog.c…
玩过比特币的朋友都知道,比特币是可以通过api(listtransactions)查询指定地址的历史交易的.但在eth中没有提供类似的查询api.今天这篇博客就简单介绍一下如果解决这个问题. 问题 以太坊go-ethereum客户端是没有根据地址查询交易列表的API的.然而,在使用过程中我们往往会用到类似的API.针对是否要在客户端上添加此API,github已经有激励的讨论了.点击一下网址可以了解一下: https://github.com/ethereum/go-ethereum/issue…
背景 以太坊技术搭建的区块链网络,节点间需要保证时间一致,才能正常有序的发送交易和生成区块,使得众多节点共同维护分布式账本(区块数据+状态数据).但是,网络中节点的系统时间不一致回出现什么现象呢,我们通过2个例子来分析一下. 问题现象: 1. 以太坊节点启动时,报出时间未同步的警告日志: WARN [03-20|17:20:54] System clock seems off by -1m7.049442998s, which can prevent network connectivity W…
title: 合约交互时发现访问不了地址的bug date: "2019-09-29 10:17:16" tags: Dapp开发 categories: 技术驿站 在编写合约交互的过程中,需要一个web3实例用来调用合约访问账户等. 我们需要设置一个provider.为了保证不会覆盖一个已有的provider(Mist浏览器或安装了MetaMak的浏览器会提供Provider),需要先检查 web3 实例是否已存在. if (typeof web3 !== 'undefined')…
最近,一位小伙伴向我咨询问题,说他发现了一个诡异的现象.以太坊的区块链中居然有全是0的地址:0x0000000000000000000000000000000000000000 这究竟是怎么回事儿呢? 查看区块链后,发现还是蛮有趣的,且听我慢慢道来. 神秘而富有的地址 用在线的区块链浏览器查看下这个地址,我勒个去,居然有7228个ETH,价值500多w刀呢. 这究竟是何方土豪?这些ETH又从何而来呢? 创世区块 之前的文章<以太坊(Ethereum)创世揭秘>中曾经提到过,ETH最主要的来源并…
以太坊被称为区块链2.0,就是因为以太坊在应用层提供了虚拟机,使得开发者可以基于它自定义逻辑,通常被称为智能合约,合约中的公共接口可以作为区块链中的普通交易执行.本文就智能合约发代币流程作一完整介绍(当然智能合约不局限于发代币).内容如下: Solidity ERC20 合约编写与发布 合约源码上传 其它 Solidity Solidity是用于在以太坊编写智能合约的语言,目前最新版本0.5.11.这里对几个关键概念作一介绍. library library常用于提供可复用方法,可以随合约[作为…
首先,EVM的设计初衷是什么?它为什么被设计成目前我们看的样子呢?根据以太坊官方提供的设计原理说明,EVM的设计目标主要针对以下方面: 简单性(Simplicity) 确定性(Determinism) 节省空间的bytecode 专为区块链设计 更加简单的安全性保证 容易优化 如果读者浏览一下这个文档,会发现EVM的设计看上去都非常的合理.那么问题在哪里呢?问题就出在它和目前主流的技术以及设计范例都格格不入.EVM如果作为一个毫无限制的非现实世界中的设计确实很不错.接下来笔者会围绕EVM各个方面…