磨链(mochain)-3.8分享
磨链相关信息
磨链 (mochain): 区块链技术非盈利组织
“磨链”---取磨炼之意,旨在普及区块链技术,磨炼技术,更好投身区块链行业。有兴趣一块琢磨联系笔者微信(jackyjin09)
关于mochain社区文化:
注册域名: mochain.info,mochain.group,mochain.tech
Github 组织:https://github.com/mochain
Gitter 房间:https://gitter.im/mochain
知识星球:https://t.zsxq.com/M3BMVZN
相关分享及扩展
分享一:https://mp.weixin.qq.com/s/FvTg87vfXgMW3P2jJGXuxg
区块链改变36个行业
分享二:https://mp.weixin.qq.com/s/Op1Q_sH4mXRrvVtlcVH8NQ
区块链行业报告
分享三:https://mp.weixin.qq.com/s/z39hBMif1bQJeb4Ar_zRAw
这一夜黑客耍了很多人
分享四:https://mp.weixin.qq.com/cgi-bin/user_tag?action=get_all_data&lang=zh_CN&token=704209413
以太坊开发入门
分享五:https://mp.weixin.qq.com/s/Gru2eMWLncqNbCbgdiBAGA
比特币源码分析-boost::signal
磨链计划相关:
J同学对分布式系统笔记:
区块链之分布式系统
简单点来说,区块链就是哈希链+签名,对于不同的应用设计出不同的奖惩机制,
有着相应的协议,算法等一起组建起来的,由全球节点共同进行维护,形成一个巨大的分
布式的架构系统。分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工
作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计
算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据.
一致性问题
一致性是分布式系统希望实现的最终目标。
定义一致性(consistency)是指对于分布式系统中的多个节点,在约定的协议下
给出一系列操作,使得这些节点对处理结果达成某种程度的认同。理想情况下,各个节点
遵守相同的处理协议,构成相同的处理状态机,则可以保障在处理过程中的每个环节的结
果都是相同的,但是更要注意的是一致性并不代表结果正确与否,而是整个系统对外呈现
出的状态是否一致。
问题1.节点间的网络通信不可靠,包括消息延时,内容出错,乱序,丢包,吞吐
率等;
2.节点间的处理时间无法保证,节点性能不同,结果可能会出错,甚至宕机;
3.同步调用会降低分布式系统的可扩展性,有可能使其退化为单点系统。
要求1.可终止性(termination):一致性结果在有限时间内能够完成;
2.约同性(agreement):不同节点最终完成决策的结果相同;
3.合法性(validity):决策的结果必须是节点执行操作的结果。
其中强一致性是在理想情况下提出的,主要分为顺序一致性和线性一致性两类,但
是强一致性的分布式系统是很难实现的,并且实际需求在很多时候并没有那么严格,可以
适当放松对一致性的要求,在一定约束下实现系统的最终一致性,这一类在某些方面弱化
的一致性都统称为弱一致性。
共识算法
严格点讲,一致性与共识并不完全一样。
一致性往往指分布式系统中多个副本对外呈现出的数据的状态,比如顺序一致性,
线性一致性,是描述多个节点对数据状态的维护能力;共识则是描述分布式系统中多个节
点之间彼此对某个状态达成一致结果的过程,所以,一致性描述的是结果状态,共识则是
一种手段。
保障系统满足不同程度的一致性就需要共识算法来达成,共识算法是解决对某个提
案大家达成一致意见的过程,这一过程中,系统中多个节点最关键的是对多个事件的顺序
进行共识,也就是排序。但是实际中各个节点会出现各种各样的问题故障,一般地,把出
现故障但不会伪造信息的情况称为“非拜占庭错误”,伪造信息恶意响应的情况称为“拜
占庭错误”,对应的节点成为拜占庭节点。
FLP 不可能原理
FLP impossibility 是一个定理,它证明了在分布式情景下,无论任何算法,即使
是只有一个进程挂掉,对于其他非失败进程,都存在着无法达成一致的可能。FLP是Fischer,
Lynch,Patterson三位作者名字组合的简写,表明这定理是由它们三位发明的。
CAP 原理
CAP 理论是说对于分布式数据存储,最多只能同时满足一致性(C,Consistency)、
可用性(A,Availability)、分区容错性(P,PartitionTolerance)中的两者。
一致性,是指对于每一次读操作,要么都能够读到最新写入的数据,要么错误。
可用性,是指对于每一次请求,都能够得到一个及时的、非错的响应,但是不保证请
求的结果是基于最新写入的数据。
分区容错性,是指由于节点之间的网络问题,即使一些消息对包或者延迟,整个系统
能继续提供服务(提供一致性或者可用性)。
一致性、可用性都是使用非常宽泛的术语,在不同的语义环境下具体所指是不一样的,
比如在cap-twelve-years-later-how-the-rules-have-changed一文中Brewer就指出“CAP
中的一致性与ACID中的一致性并不是同一个问题”,因此后文中除非特别说明,所提到的
一致性、可用性都是指在CAP理论中的定义。只有明确了大家都是在同样的上下文环境,
讨论才有意义。
对于分布式系统,网络分区(networkpartition)这种情况是难以避免的,节点间
的数据复制一定存在延迟,如果需要保证一致性(对所有读请求都能够读到最新写入的数
据),那么势必在一定时间内是不可用的(不能读取),即牺牲了可用性,反之亦然。
ACID 原则
ACID 原则是数据库事务正常执行的四个,分别指原子性、一致性、独立性及持久性.
事务的原子性(Atomicity):是指一个事务要么全部执行,要么不执行.也就是说一个
事务不可能只执行了一半就停止了.比如你从取款机取钱,这个事务可以分成两个步骤:1
划卡,2出钱.不可能划了卡,而钱却没出来.这两步必须同时完成.要么就不完成.
事务的一致性(Consistency):是指事务的运行并不改变数据库中数据的一致性.例
如,完整性约束了a+b=10,一个事务改变了a,那么b 也应该随之改变.
独立性(Isolation):事务的独立性也有称作隔离性,是指两个以上的事务不会出现
交错执行的状态.因为这样可能会导致数据不一致.
持久性(Durability):事务的持久性是指事务执行成功以后,该事务对数据库所作
的更改便是持久的保存在数据库之中,不会无缘无故的回滚._
组织有兴趣琢磨的人。(有兴趣的对号入座)。有愿意带大家折腾的联系我下。
计划具体内容
1.白皮书、黄皮书解读以太坊、超级账本等相关白皮书黄皮书解读,分享自己理解,整理讨论输出。
2.以太坊源码解读深入以太坊运行原理、对相关模块定位到源码解读。
3.以太坊项目实践包括环境搭建,开发环境搭建,及相关实践开发
4.以太坊课程设计,相关以太坊内容整理以太坊课程、包括智能合约基础、编写、开发,考虑整理以太坊具体内容编辑成书籍。
5.bitcoinBitcoin相关内容。具体待细化
6.超级账本超级账本相关内容。具体待细化
7.IPFS相关内容IPFS filecoin相关内容
8.DAGDAG,字节雪球相关内容
9.区块链基础知识包括密码学、算法、共识机制、P2P网络等相关内容
10.区块链相关政策解读与商业应用跟踪区块链相关政策解读与商业应用跟踪内容,包括最新新闻信息分析分享
11.挖矿相关挖矿原理、挖矿相关内容
12.EOS相关EOS相关内容
13.区块链技术文档翻译区块链技术文档翻译,以太坊,solidity,truffle,超级账本等相关文档
关于mochain 社区文化,已完成如下准备:
注册域名: mochain.info,mochain.group,mochain.tech
注册Github 组织: https://github.com/mochain
注册Gitter 房间:https://gitter.im/mochain