[区块链]使用Python创建你的区块链 1 - Blockchain
数字货币的崛起在这些年无比惊艳,区块链这个本来陌生的概念这两年,尤其是今年以来甚至都要盖过了人工智能.但对于不懂密码学,不懂共识协议,也不怎么敢炒币的同学来说,怎么样了解这一新兴的概念以让自己不被时代淘汰,怎么样让心里那一小小的对风口的渴望成为现实,也就是,**怎么样了解区块链的本质,以将这种技术落地转换成真正的商业模式?**相信,这是很多同学都想要知道的问题.
而想要深刻的理解区块链到底是个东西,办法很简单,知行合一,做一个出来.
阅读本文,需要读者对Python有基本的理解,能读写基本的Python,并且需要了解HTTP网络协议.
如果您对区块链还不是太了解,可阅读 什么是区块链.
区块链在数据结构上是由区块的记录构成的不可变,有序的链结构,记录可以是交易,文件或任何你想要的数据,它们之间通过**哈希值(hashes)**进行链接.
pip install Flask==0.12.2 requests==2.18.4
同时还需要一个HTTP客户端,比如Postman,cURL或其它客户端.
通过以上区块链的结构,相信大家对区块链的原理有了进一步的了解:每个区块都有上一区块的Hash值,从而形成了一条链;如果上一个区块变了,那么后面的区块都将不正确了,保证了区块链的安全;交易保存在区块内.
每笔交易记录了转账发起人地址,转账接收人地址和每笔数额;然后将该笔交易所处区块的索引返回.因为这笔交易将记录在下一个产生的区块里,所以是上一个的区块索引+1.
实例化Blockchain后,下面我们开始构造创世块(没有前区块的第一个区块),并且给它加上一个工作量证明.每个区块都将需要经过工作量证明,即挖矿(每个区块都是被"挖"出来的).
工作量证明(Proof Of Work,简称PoW),简单理解就是一份证明,用来确认你做过一定量的工作.监测工作的整个过程通常是极为低效的,而通过对工作的结果进行认证来证明完成了相应的工作量,则是一种非常高效的方式.
比如毕业证书.我们找工作时,如何证明自己接受过高等教育,是大学毕业呢?很简单,通过毕业证书.工作量证明亦是如此.
区块链是由区块构成的,交易存储在区块中,然后每个区块是通过"挖矿"产生的."挖矿"是什么样的一个过程呢?就是全网所有的"人"都做同一个工作,谁做得最快,那么这个区块就是谁"挖"出的,然后这个"人"就获得系统的奖励 -  - 一个比特币.
好了,问题就来了,怎么证明这个"人"的工作做得最好呢?怎么样让全网所有"人"达成**"共识"**都说这个人做得最快呢?
同时,这种让全网所有人达成共识,一致认定这个"人"做得最快的协议就叫做"共识协议".共识协议不止Pow这一种,相信大家已经所有耳闻.
上面我们说到了,工作量证明的目的是让全网所有人达成共识,有一个"人"工作做得最快,然后这个"人"产生一个区块并获得一个比特币,那么这里就又出现了几个问题了:
PoW共识协议要求全网所有"人"做的工作是:找出一个符合特定条件的数字.
好了,所有的矿工只要跑上面的代码,不断的循环计算就好了,直到符合条件的y出来为止.
好,下面就我们也来设计一个 PoW 算法,首先是定义一下"工作"的规则:
为了避免太浪费时间,我们的规则是比较简单的.
好了,到此为止,我们的Blockchain基本就完成了.希望坚持看到了这里的同学,能再坚持坚持~,接下来的东西对于不懂网络(HTPP),不懂后台开发的同学会稍有些吃力了.尽量让大家测试,实践的时候能方便些.
比特币  -  -  点对点电子现金系统 摘要:纯粹的点对点电子现金需要能让人们在网络上直接进行支付,而无需经过任务金融机构.数字签名提供了一部分的解决办法,但是主要问题是我们仍然需要可信任的第三方机构来防止双花问题.在这篇文章中,我们提出了一个点对点网络的解决方案来应对双花问题.该网络会将时间戳和交易进行哈希计算,并将其放入一条不断增长的,基于工作量证明的链中,除非重新进行工作量计算,否则所有的记录都不能被修改.最长的那条链不止作为所有事件的见证者,同时证明其拥有最大的CPU算力.只要网络中占大多数的CPU算力不合作对网络进行攻击,它们就会生成最长的那条链并且超过攻击者.网络自身会保持结构最小化.消息通过广播传递,但不保证一定传达,只会在N次内尽可能尝试.节点可以随时进入与退出网络,并会接受在它们不在的那段时间里产生的最长链. 1. 介绍 因特网上的商业模式几乎都需要一个金融机构扮演可信赖的第三方机构来处理电子支付.尽管这个系统运行良好,能处理绝大多数交易,但其内在仍然是软弱的信任模式.完全不可逆的交易不可能真正存在,因为金融机构不可能避免调解争端.这种调解产生的成本提高了交易的成本,
(一九三七年八月) 事物的矛盾法则,即对立统一的法则,是唯物辩证法的最根本的法则.列宁说:"就本来的意义讲,辩证法是研究对象的本质自身中的矛盾."〔1〕列宁常称这个法则为辩证法的本质,又称之为辩证法的核心〔2〕.因此,我们在研究这个法则时,不得不涉及广泛的方面,不得不涉及许多的哲学问题.如果我们将这些问题都弄清楚了,我们就在根本上懂得了唯物辩证法.这些问题是:两种宇宙观;矛盾的普遍性;矛盾的特殊性;主要的矛盾和主要的矛盾方面;矛盾诸方面的同一性和斗争性;对抗在矛盾中的地位. 苏联哲学界在最近数年中批判了德波林学派〔3〕的唯心论,这件事引起了我们的极大的兴趣.德波林的唯心论在中国共产党内发生了极坏的影响,我们党内的教条主义思想不能说和这个学派的作风没有关系.因此,我们现在的哲学研究工作,应当以扫除教条主义思想为主要的目标.