区块链
chunqi zhi
幸福或许就是命中注定要发生的事......
展开
-
lotus - 深入理解时空证明的 golang 实现部分(PoSt)
lotus - 深入理解时空证明的 golang 实现部分(PoSt)参考文章:https://www.chainnews.com/articles/836343087401.htmlotus 的时空证明(PoSt)在两个地方会被调用该算法:Winning PoSt 和 Window PoSt。Winning PoSt 是矿工在出块时对已经提交的扇区进行证明,证明扇区保存的数据依然存在。Window PoSt 是矿工在对应的周期内对已经提交的扇区进行证明,证明扇区保存的数据依然存在。// Bala原创 2020-06-13 20:37:04 · 4269 阅读 · 0 评论 -
区块链中的共识算法
区块链中的一个核心概念是去中心化,在区块链中没有和传统数据库系统一样的中心数据库,每个节点都是对等的,这样就需要一套算法和机制来保证所有对等节点之间可以有效协作。这套算法和方式称为共识机制。共识机制的存在可以有效保证各个节点之间按照既定的原则共同维护账本。共识机制本质上是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。共识算法在区块链技术出现之前就已经存在,最早出现在分布式...原创 2019-11-22 16:26:51 · 1382 阅读 · 6 评论 -
POW-工作量证明机制
工作量证明(Proof Of Work,POW),简单理解就是一份证明,用来确认你做过一定量的工作。检测工作的整个过程通常是极为低效的,而通过对工作的结果进行认证来证明完成了相应的工作量,则是一种非常高效的方式。比如现实生活中的毕业证、驾驶证等,也是通过检验结果的方式(通过相关的考试)所取得的证明。工作量证明系统主要特征是客户端需要做一定难度的工作得出一个结果,验证...原创 2019-11-22 16:25:06 · 800 阅读 · 0 评论 -
POS-股权证明机制
股权证明机制的基本概念是产生区块的难度应该与你在网络里所占的股权(所有权占比)成比例。简单来说POS就是一个根据你持有货币的量和时间给你发利息的一个制度。在POS模式下有一个名词叫币龄,每个币每天产生1币龄。比如你持有100个币,总共持有了30天,那么此时你的币龄就是3000。这个时候如果你发现了一个POS区块,你的币龄就会被清空为0。你没被清空365币龄,你将会从区块中获得0.05...原创 2019-11-22 16:18:52 · 334 阅读 · 0 评论 -
PBFT-拜占庭共识算法
PBFT算法是根据拜占庭问题演变而来的拜占庭共识算法。在拜占庭问题被提出后一直有各种共识算法来解决拜占庭问题,但是无论从执行流程的复杂度还是算法效率来说,PBFT是目前公认效率最好的算法。该算法是Miguel Castro(卡斯特罗)和Barbara Liskov(利斯科夫)在1999年提出来的。PBFT算法有效地解决了原始拜占庭容错算法效率不高的问题,该算法复杂度由指数级降低到多项...原创 2019-11-21 17:42:12 · 535 阅读 · 0 评论 -
以太坊源码情景分析之区块(block)数据同步之主动同步
主动同步 同步入口 主动同步有好几个主要场景geth刚启动 新peer加入 定时sync 后面两个场景入口都在ProtocolManager.syncerfunc (pm *ProtocolManager) syncer() { // Start and ensure cleanup of sync mechanisms pm.fetche...转载 2018-08-28 15:34:24 · 1352 阅读 · 0 评论 -
以太坊源码情景分析之区块(block)数据之被动同步
区块数据同步分为被动同步和主动同步被动同步是指本地节点收到其他节点的一些消息,然后请求区块信息。比如NewBlockHashesMsg主动同步是指节点主动向其他节点请求区块数据,比如geth刚启动时的syning,以及运行时定时和相邻节点同步被动同步 被动同步由fetcher完成,被动模式又分为两种收到完整的block广播消息(NewBlockMsg) 收到blockh...转载 2018-08-17 11:37:02 · 905 阅读 · 0 评论 -
以太坊源码分析(31)eth-downloader-peer源码分析
peer模块包含了downloader使用的peer节点,封装了吞吐量,是否空闲,并记录了之前失败的信息。 ## peer // peerConnection represents an active peer from which hashes and blocks are retrieved. type peerConnection struct {...转载 2018-08-19 11:05:15 · 232 阅读 · 0 评论 -
以太坊源码分析(22)core-genesis创世区块源码分析
genesis 是创世区块的意思. 一个区块链就是从同一个创世区块开始,通过规则形成的.不同的网络有不同的创世区块, 主网络和测试网路的创世区块是不同的. 这个模块根据传入的genesis的初始值和database,来设置genesis的状态,如果不存在创世区块,那么在database里面创建它。 数据结构 // Genesis specifies the h...转载 2018-08-19 10:32:58 · 400 阅读 · 0 评论 -
以太坊源码分析(14)P2P分析
#概述Kademlia(简称Kad)是一种分布式哈希表技术,用于建立p2p网络拓扑结构。 基本原理就是以两个节点ID的异或值作为两节点间的距离d,每个节点都将其他节点的信息存储到称之为K桶的表结构中,该表结构按照d的为1的最高bit位分层(可理解为桶索引),每层中存储最多K个节点信息。如下:| I | 距离范围 | 邻居 ||:---:|:---------:|:-------...转载 2018-08-18 20:48:45 · 251 阅读 · 0 评论 -
以太坊源码分析(10)CMD深入分析
### cmd包分析#### cmd下面总共有13个子包,除了util包之外,每个子包都有一个主函数,每个主函数的init方法中都定义了该主函数支持的命令,如 ##### geth包下面的: ```func init() { // Initialize the CLI app and start Geth app.Action = geth a...转载 2018-08-18 20:27:26 · 595 阅读 · 0 评论 -
以太坊源码分析(8)区块分析
## 区块存储区块的存储是由leveldb完成的,leveldb的数据是以键值对存储的。在这里保存区块信息时,key一般是与hash相关的,value所保存的数据结构是经过RLP编码的。在代码中,core/database_util.go中封装了区块存储和读取相关的代码。在存储区块信息时,会将区块头和区块体分开进行存储。因此在区块的结构体中,能够看到Header和Body两个结构体。...转载 2018-08-18 17:55:35 · 366 阅读 · 0 评论 -
以太坊源码分析(7)Ethereum 资源分享
# Awesome Ethereum [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) > collection of be...转载 2018-08-18 17:35:34 · 1051 阅读 · 0 评论 -
以太坊源码分析(1)go-ethereum的设计思路及模块组织形式
go-ethereum的设计思路及模块组织形式=================================== 以太坊的目标是基于区块链技术打造一个运行智能合约的去中心化平台。 ## 一. 区块链技术区块链属于一种去中心化的数字记账技术,区块链数据由彼此互不信任的节点共同维护,每个节点复制一份完整的记录。 ## 二. 以太坊核心概念* EVM: 以太坊虚拟...转载 2018-08-18 17:15:23 · 346 阅读 · 0 评论