随笔分类 - 源码分析
摘要:
Netty是目前最高效便捷的NIO框架。Netty可提供更加高可用、更好健壮性的稳定大规模连接的IO通道。任何一款区块链早期的技术产品,都是从联盟链开始演进,因为联盟链降低了很多原教旨的难度。回到BFT-SMaRt,它的网络连接分为节点之间的连接,节点与客户端之间的连接。节点之间的连接,我们在[BFT-SMaRt:用Java做节点间的可靠信道](https://www.cnblogs.com/Evsward/p/bft-serverConn.html)一文中详细分析了在共识逻辑之前节点之间能够做到的连接准备。那么,本文将继续探索在BFT-SMaRt项目中,节点与客户端之间的连接是如何实现的。
阅读全文

摘要:
信道的可靠是BFT的前提。(参见两军问题)
本文通过跟踪BFT-SMaRt通信层源码,研究节点间可靠信道的实现原理。本文涉及区块链方面的内容较少,重点研究使用Java语言建立可靠网络通道的技术,请选择性阅读。
通信层系统,是分布式网络中获得可靠且认证的点对点通道的保证。BFT-SMaRt的安全通信是基于SSL/TLS标准。
节点之间建立互为信任的Socket IO连接,实现点对点的消息处理。
节点与客户端之间建立健壮性、可用性更高的Netty NIO连接,实现大规模的消息处理。
本文主要介绍第一种情况:在BFT-SMaRt中,作为服务端的节点之间的连接构建方法。
阅读全文

摘要:最近在处理智能合约的事务上链问题,发现其中仍旧有知识盲点。原有的认识是一个事务请求会从客户端设备打包签名,然后通过RPC传到非出块节点,广播给超级节点,校验打包到可逆区块,共识确认最后变为不可逆区块。在执行事务完毕以后给客户端一个“executed”的状态响应。基于这个认识,本文将通过最新EOS代码
阅读全文
摘要:关键字:REX,资源交易,资源租赁,系统费用,bancor,成熟期,EOS,eosio.system,voting EOSIO 智能合约在v1.6.0版本增加了一个system合约使用的例子,可提供EOS资源交易。以供社区评估、调整和构建。REX只是智能合约层面提供的功能,而并没有相应的用户界面,部
阅读全文
摘要:系统合约在链启动阶段就会被部署,是因为系统合约赋予了EOS链资源、命名拍卖、基础数据准备、生产者信息、投票等能力。本篇文章将会从源码角度详细研究system合约。 关键字:EOS,eosio.system,智能合约,name类型,native.hpp,newaccount,bidname,core
阅读全文
摘要:producer_plugin是控制区块生产的关键插件。 关键字:producer_plugin,同步区块的处理,pending区块,生产区块,最后不可逆区块,生产循环,生产安排,水印轮次,计时器,确认数 producer_plugin生命周期 EOS的所有plugin都有共同的基类,因此每个plu
阅读全文
摘要:区块链的应用是基于http服务,这种能力在EOS中是依靠http_plugin插件赋予的。 关键字:通讯模式,add_api,http server,https server,unix server,io_service,socket,connection 通讯模式 EOS中,一个插件的使用要先获取
阅读全文
摘要:EOS提供了大量的rpc接口,其中功能性最强,使用最频繁的一部分接口是EOS的行为核心,由chain_api_plugin提供,具体实现是在chain_plugin。 关键字:EOS,区块链,chain_plugin,chain_api_plugin,rpc,FC_REFLECT,反射,method
阅读全文
摘要:Controller是EOS区块链的核心控制器,其功能丰富、责任重大。 关键字:EOS,区块链,controller,chainbase,db,namespace,using,信号槽,fork\_database,snapshot 命名空间namespace 命名空间namespace定义了一个范围
阅读全文
摘要:"上文" 书说到区块链的存储方式,并结合了EOSIO进行分析,其中也提到了使用CLion调试EOS的方法。本文将继续深入细致地展开对加载了mongo_db_plugin的nodeos的调试过程以及心得。 关键字:源码分析,Debug EOS,nodeos,mongo_db_plugin,CLion,
阅读全文
摘要:谈到区块链的存储,我们很容易联想到它的链式存储结构,然而区块链从比特币发展到今日当红的EOS,技术形态已经演化了10年之久。目前的EOS的存储除了确认结构的链式存储以外,在状态存储方面有了很大的进步,尤其是引入了MongoDB plugin以后,可以将功能有限的状态库搭上大数据的班车。本文将全面介绍
阅读全文
摘要:本文主要研究EOS的tps表现,会从插件、cleos、EOSBenchTool以及eosjs四种方式进行分析研究。 关键字:eos, tps, cleos, txn\_test\_gen\_plugin, EOSBenchTool, qt, eosjs, C++源码分析 身心准备 tps: Tran
阅读全文
摘要:本文内容本属于《 "【精解】EOS TPS 多维实测" 》的内容,但由于在编写时篇幅过长,所以我决定将这一部分单独成文撰写,以便于理解。 关键字:eos, txn\_test\_gen\_plugin, signed\_transaction, ordered\_action\_result, C+
阅读全文
摘要:区块链公链都是基于p2p网络,本篇文章将建立一个多节点不同职责参与的EOS的测试网络,根据路上发现的可做文章的技术点大做文章。 关键字:EOS组网,全节点,交易确认,boot sequence,stake,帕累托分配模型,竞选出块节点,EOS出块奖励,代理投票,resign 构建源节点 源节点就是第
阅读全文
摘要:智能合约操作链数据库是很常见的应用场景。EOS提供了专门的工具来做这件事(相当于Ethereum的leveldb),专业术语叫做持久化API,本文将完整严密地介绍这个工具以及对它的使用测试。 关键字:EOS,智能合约,链数据库,eosio::multi_index,constructor,empla
阅读全文
摘要:EOS智能合约中包含一个exchange合约,它支持用户创建一笔交易,是任何两个基本货币类型之间的交易。这个合约的作用是跨不同币种(都是EOS上的标准货币类型)的,通过各自与EOS主链价值进行锚定,然后再相互发起交易兑换。要搞清楚的是,这与区块链“传统的”交易所并不一样,那个主要是集中在交易撮合上面
阅读全文
摘要:EOS,智能合约,abi,wasm,cleos,eosiocpp,开发调试,钱包,账户,签名权限 热身 本文旨在针对EOS智能合约进行一个完整的实操演练,过程中深入熟悉掌握整个EOS智能合约的流程,过程中出现的问题也会及时研究并入我们自己的知识体系。本文会主要跟随EOS官方Wiki的智能合约部分进行
阅读全文
摘要:上文我们总结了以太坊最主要的共识算法:ethash算法,本文将重点分析以太坊的另一个共识算法:clique。 关键字:clique,共识算法,puppeth,以太坊地址原理,区块校验,认证结点,POA,选举投票,snapshot,Comma ok断言 clique 以太坊的官方共识算法是ethash
阅读全文
摘要:本文具体分析以太坊的共识算法之一:实现了POW的以太坊共识引擎ethash。 关键字:ethash,共识算法,pow,Dagger Hashimoto,ASIC,struct{},nonce,FNV hash,位运算,epoch Ethash 前面我们分析了以太坊挖矿的源码,挖了一个共识引擎的坑,研
阅读全文
摘要:狗年吉祥,开工利是,我们继续研究以太坊源码。从本篇文章开始,我们会深入到以太坊核心源码中去,进而分析与研究以太坊的核心技术。 关键字:拜占庭,挖矿,矿工,分叉,源码分析,uncle叔块,agent,worker,事件监听 本文基于go ethereum 1.7.3 stable源码版本。源码范围主要
阅读全文