以太坊那点事儿
文章平均质量分 73
聊聊以太坊
0xweb3q
rust、blockchain、smarcontract、evm、move、wasmtime
展开
-
以太坊 私钥保护——keystore
以太坊的每个外部账户私钥 /地址对,都存储在一个钥匙文件里——keystore文件。这个文件是 JSON 格式,但是私钥等隐私重要的信息都是被加密存储的,你可以通过密码去解锁你的私钥用于签署交易。所以歌这个文件就意味着你的私钥,一定要保管好。keystore的文件格式{ 'address': '123456789', 'crypto': ...原创 2019-10-28 14:46:57 · 1894 阅读 · 0 评论 -
以太坊中的事件机制Feed
以太坊的事件框架,存在于目录go-ethereum/event中,它有两种事件框架实现,一种叫TypeMux(go-ethereum/event/event.go),现在已经基本弃用;另外一种叫Feed(go-ethereum/event/feed.go),它是目前主要使用的对象。取代了前面说的event.go内部的TypeMux。 以太坊的事件框架会把所有的订阅者放到一个集合...原创 2019-03-07 17:51:59 · 1080 阅读 · 0 评论 -
消息摘要算法-HMAC算法
一、 什么是HMACHMAC是一种使用单向散列函数来构造消息认证码的方法,其中HMAC中的H就是Hash的意思,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。或者简单点说,HMAC就是信息在hash的时候,按照一定规则在信息里添加了一些关键字,增加了hash破解的难度。HMAC中所使用的单向散列函数并不仅限于一种,任何高强度的单向散列函数都可以被用于HMAC,如果将来设计出的新的单...原创 2019-02-14 13:59:02 · 904 阅读 · 0 评论 -
以太坊 智能合约编译分析
本章主要梳理一下,以太坊智能合约的编译过程以及如何运行的;虽然eWASM可能在未来代替EVM,不过了解一下目前的智能合约编译与EVM相信对于我们来说没有坏处。更新换代肯定是一个过程,不但要知己还要知彼,才能让这个过程平稳的度过。 工具 编译的工具作者接触过得有两个,solc和remix;solc的安装,作者着实费了一番手脚,不过使用起来更加的灵活,可以根据需...原创 2019-01-25 11:09:13 · 704 阅读 · 0 评论 -
以太坊 什么是以太坊
这个以太坊,可以认为是一个数据库状态机,每个块就是一个数据库的快照,即数据库的一个状态,这个状态机的输入呢就是交易;每次块打包的那些交易都都会导致数据库进入一个新的状态。这个状态机有一个特点是,只能一直向,就是形成一条链,不会形成闭环,所以我们叫它区块链。 总结一下,我认为可以把以太坊称之为数据库状态机。 第二部,我们把这个系统进行一下分层,分别看一下...原创 2018-09-23 09:49:19 · 682 阅读 · 0 评论 -
以太坊 EVM虚拟机框架分析
最近比较迷恋solidity和EVM,solidity研究了不少,发现还是需要结合EVM才能理解的比较透彻,最近准备详细研究一些EVM。研究了一下源码,发现EVM貌似会有新的版本,叫EWASM;不过现在貌似还没有应用,据说改动很大;笔者研究的还是EVM。之后会继续根据EWASM的进展。 EVM模块支持合约的执行与调用,调用时根据合约地址获取到代码,生成环境后载入到EVM中运行。通...原创 2018-09-28 12:46:42 · 1816 阅读 · 3 评论 -
以太坊 EVM内交易执行分析(二)
接着上次的分析,分析一下run方法是如何执行智能合约的。至于以太币的交易,在上一篇中,已经由分析的那两个函数完成了; 合约的运行是从run开始的,go-ethereum/core/vm/evm.go。可以分为两部分一部分是预编译,另外一部分是解释器。 预编译合约// run runs the given contract and takes care of ...原创 2018-10-01 22:51:54 · 746 阅读 · 1 评论 -
以太坊 EVM内交易执行分析(一)
以太坊上交易最终都会由EVM进行解析存入数据库,今天就来探讨一下,一笔交易是如何别EVM执行的。我们可以把交易分为三种。(注意,和交易相关的模块很多,交易的生命周期存在于整个以太坊中,我们这次只是分析和EVM相关的部分。) 1、以太币转移,两个账户之间只发生了以太币的转移。 2、合约创建,用户创建智能合约的交易。这类交易的to地址都是空着的。 3、调用...原创 2018-10-01 14:45:46 · 912 阅读 · 0 评论 -
以太坊 p2p网络——kademlia协议(二)
协议消息Kademlia协议包括四种远程RPC操作:PING、STORE、FIND_NODE、FIND_VALUE。1、PING操作,探测一个节点,用以判断其是否仍然在线。2、STORE操作,通知一个节点存储一个<key,value>对,以便以后查询需要。3、FIND_NODE,本操作的接受者返回它所知道的更接近目标ID的K个节点的信息。这些节点的信息可以是从一个单独的...原创 2018-09-13 00:14:46 · 1241 阅读 · 0 评论 -
以太坊 p2p网络——kademlia协议(一)
Kademlia协议(以下简称Kad),是一种分布式哈希表(DHT,Distributed Hash Table)技术,不过和其他DHT实现技术比较,如Chord、CAN、Pastry等,Kad通过独特的以异或算法(XOR)为距离度量基础,建立了一种全新的DHT拓扑结构,相比于其他算法,大大提高了路由查询速度。 在Kademlia网络中,所有信息均以的哈希表条目形式加 以存储,这...原创 2018-09-05 18:23:14 · 2602 阅读 · 0 评论 -
以太坊 parity节点之Transaction Queue解析(txpool)
在pariyt以太坊的客户端中,存在一个缓冲池Transaction Queue,在geth节点上可能叫做txpool。这个缓冲池主要用来存储准备打包的交易。一般分为两类。 pendingTransactions:这类交易术语已经验证通过了,已经广播了,准备打包进区块的; futureTransactions:这类交易是nonce值太高了,这类交易一般不会广播的,他存放...原创 2018-08-27 23:22:08 · 1304 阅读 · 2 评论 -
以太坊钱包之余额该咋整?
自从做了钱包,余额就一直是个不大不小的问题,说问题大吧,那是因为用户看到自己的不对了,立刻爆炸;说其小是因为,其实钱包里余额是水中月亮,月亮还是那个月亮,你的钱还是你的钱,只是偶尔有点水波荡漾,影子有点模糊。 由于eth的性能不像eos这么屌,你刚转账立刻就到账了;eth是需要一段时间的,就是这一段时间造孽啊。为了提供更人性化的服务,要求余额也人性化起来,用户转钱了,余额就要变,玩...原创 2018-08-08 13:30:16 · 2094 阅读 · 1 评论 -
以太坊nonce值问题分析
钱包开发过程中遇到nonce值的问题,目前钱包交易只支持一笔交易确认之后,才会发送第二笔交易,否则发送的时候会提示nonce值太低了。 造成这种现象的原因很简单,直接使用了eth_getTransactionCount接口,对于txpool的处理也不是很完美,几乎就是忽略了,所以发送第二笔交易的时候,导致nonce值和第一笔相同,提示了nonce值太低了。 这里多说一...原创 2018-08-08 11:46:28 · 3106 阅读 · 0 评论 -
以太坊浏览器的Internal Transactions检索功能(1)
做了这么久的以太坊钱包发现,突然觉得最好的模型就是etherscan,如果能做的和etherscan一样,估计就能超越90%的钱包了。所以可以有计划的照着etherscan实现各种功能就好了,最近发现etherscan都支持了erc721,挺有意思的。不过今天的主角是Internal Transactions。 Internal Transactions,我的理解就是你给合约发起...原创 2018-08-09 15:39:13 · 3404 阅读 · 0 评论 -
以太坊中ERC20交易的检测
开发中遇到了token交易的检测问题,之前的做法是依靠交易中的input字段,如果有支持erc20标准的token交易,则input字段必然会有transfer函数的消息;如下图;根据input字段判断之后,在获取交易的Receipt,根据log字段进行进一步解析。后来发现这么搞会有问题,会遗漏erc20的交易。 为什么会有遗漏呢,主要是因为构建交易的时候,to地址是一个合约...原创 2018-07-04 20:21:06 · 15293 阅读 · 2 评论