![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
源码分析系列
文章平均质量分 89
底层实现 持久化 数据类型
搬砖魁首
区块链从入门到宁静
展开
-
Token系列 - 加密猫智能合约源码分析
GeneScienceInterface合约这个合约没有源码,从名字看已经很明显,就是猫的基因工程,用于决定新出生猫的基因。这里仅仅定义了一个接口,没有具体实现,后续的调用请看后续代码分析/// @title SEKRETOOOOcontract GeneScienceInterface { /// @dev simply a boolean to indicate this is the contract we expect to be function isGeneScience原创 2021-07-26 10:38:12 · 1921 阅读 · 1 评论 -
联盟链系列 - 适用于联盟链的PoA共识
Clique PoA技术原理Geth的PoA实现1.Ethereum的PoAEthereum存在两个PoA测试网,分别是Kovan(PoA算法,Parity专用,Rust 语言)和Rinkeby(Clique PoA共识算法,Geth专用(版本号>=1.6),Go语言)KovanPoA (Immune to spam attacks)Supported by parity on...原创 2019-02-17 15:35:07 · 3264 阅读 · 0 评论 -
EOS系列 - 超级节点(BP)列表更新流程
eos定时更新BP列表的流程:步骤一: nodeos出块时调合约内的方法:nodeoson_block_act.name = N(onblock);eos_abi.structs.emplace_back( struct_def { "onblock", "", { {"header", "block_header"} } ...原创 2020-03-23 22:43:54 · 1241 阅读 · 1 评论 -
EOS系列 - 源码分析 - P2P网络模块
EOS P2P 网络模块P2P - GossipGossip算法又被称为反熵(Anti-Entropy),熵是物理学上的一个概念,代表杂乱无章,而反熵就是在杂乱无章中寻求一致,这充分说明了Gossip的特点:在一个有界网络中,每个节点都随机地与其他节点通信,经过一番杂乱无章的通信,最终所有节点的状态都会达成一致。每个节点可能知道所有其他节点,也可能仅知道几个邻居节点,只要这些节点可以通过网络连...原创 2020-01-31 12:10:58 · 1586 阅读 · 1 评论 -
EOS系列 - 源码分析 - EOS线程机制
EOS有几个线程nodeso节点的工作线程包括:一个主线程,一个信号处理线程和四个线程池。nodeos(10265 主线程&信号处理线程) : 进行异步io投递 `epoll_wait` | 接收系统信号并处理 ─┬─{nodeos}(10311 controller线程池_1: 异步执行块block_state创建,块中交易验证时的交易解签名计算) ├─{nodeos}...原创 2020-01-13 21:09:40 · 1677 阅读 · 1 评论 -
EOS系列 - 源码分析 - 出块与同步过程
EOS源码解读心得主要知识点1.EOS出块过程生产、同步区块的核心代码逻辑:区块同步的更详细的说明:区块的创造过程检查区块生产者的合法性如果当前主干已经不是最长链,需要切换到最长的分叉链上切换过程如下弹出一定数量的区块,直到碰...原创 2019-08-02 22:39:28 · 1167 阅读 · 0 评论 -
EOS系列 - 源码分析 - 框架剖析(v1.7.2)
eos项目(v1.7.2)主要可以分为以下八个模块:编译模块主程序模块依赖库模块插件模块智能合约模块测试模块Docker工具模块文档说明模块1.编译模块eos项目的整体编译、依赖库下载、代码编译等功能,依托于一个完整的脚本体系,主要包括以下三部分:eos/scriptseos/scripts/eosio_build.sheos/CMakeModules1.1 eo...原创 2019-04-24 17:56:11 · 842 阅读 · 0 评论 -
EOS系列 - 源码分析 - 数据存储
EOS的链式存储结构EOS的区块数据结构如下:fieldexplanationtimestamp时间戳producer生产者confirmed生产者确认数previous链式结构前一个区块的idtransaction_mroot交易默克尔树根action_mroot动作默克尔树根schedule_version生产者版本排序...原创 2019-05-28 20:53:57 · 486 阅读 · 0 评论 -
以太坊系列 - 源码分析 - 共识
以太坊共识的源码分析讲述一个新区块被挖掘出的过程1.挖矿对于一个新区块被挖掘出的过程,代码实现上基本分为两个环节:一是组装出一个新区块,这个区块的数据基本完整,包括成员Header的部分属性,和叔区块组uncles[],以及交易列表txs,并且所有交易已经执行完毕,所有收据(Receipt)也已收集完毕,这部分主要由worker完成;二是填补该区块剩余的成员属性,比如H...原创 2019-05-30 21:50:17 · 1785 阅读 · 0 评论 -
以太坊系列 - 数据存储(1) -- 使用LevelDB持久化存储
LevelDBLevelDB是google开源的KV(key-value,存储的数据都是kv的形式)单机数据库,官方版本是C++,比特币使用的是c++版本:https://github.com/google/leveldb以太坊使用的是go语言版本:https://github.com/syndtr/goleveldbgo安装leveldbgo get github.com/syn...原创 2019-02-24 23:58:47 · 1428 阅读 · 0 评论 -
以太坊系列 - 数据存储(2) -- StateDB机制与MPT树
Ethereum 选用的是LevelDB, 属于非关系型数据库,存储单元是[k,v]键值对有关LevelDB的介绍,请看我的另一篇文章-- Geth持久化(1) 采用的是单机数据库–LevelDBGeth的文件目录chaindata,lightchaindata,nodes目录进入chaindata,区块链最后的本地存储都是以ldb文件(db sst table 持久化文件,新版本...原创 2019-03-02 00:12:56 · 1395 阅读 · 0 评论