如果你没听说过3点区块链集团,说明你还不是连锁人;如果你还没有加入3点区块链集团,说明你不是连锁的大老板;如果你还没有被区块链集团三点刷屏,说明你还不知道什么是“币圈一日,天下一年”。
“三点区块链”无疑成为春节期间大家焦虑的根源,“区块链”注定是2018年持续被讨论和关注的行业热点话题。
3月1日,朱啸虎再次向繁荣的区块链开火。在一张满是区块链应用的朋友圈图片中,朱啸虎质疑:这些应用全部加在一起有多少日活用户?“2000年互联网泡沫的时候至少有眼球。今天的区块链除了炒币还有什么?
在此之前,朱啸虎在朋友圈转发了《来,喝了这碗区块链的毒鸡汤!》讽刺区块链投资热的文章,并声明:“不要把我拖进任何一个3点团,有些网点宁愿错过,有些钱宁愿不赚。晚上照顾好自己。”朱啸虎还表示,称ICO为庞氏骗局是对庞氏骗局的侮辱。
作为一个程序员,如果再不了解这个技术,2018可能就要被淘汰了!下面就让我们和边肖一起从十个幽默段子开始区块链吧!
1.如果你是女的,每次你男朋友跟你说了一句恶心的话,或者答应给你买东西,你都马上录下来,发给你和他所有的女朋友,同学,同事,还有各种群,朋友,让他再也无法否认。这叫做区块链。
2.麻将是中国传统的区块链项目:四名矿工为一组,最先撞对13个数字哈希值的矿工可以正确记账并获得奖励。它不能被篡改。因为说服另外三个人需要太多的计算和体力。
不为自己赚钱的都是愚蠢的失败者。
我认识很多老板。
明白了很多道理。
5.吴三桂怒攻山海关,本质上是为了权力睡在陈圆圆身上;区块链大佬们相互合作的实质是争夺割韭菜的权力。
6.新学期开始,儿子问父亲,“父亲工作这一栏怎么填?它是一个硬币作家吗?”爸爸犹豫了一下,说:“就写多家上市公司的股东吧。」
7.最近数字货币很火,很多假币都涨了几倍或者几十倍。很多金钱投机开始得意忘形,叫嚣着“一币一嫩模式”。一个朋友问我要不要跟着他。我的观点很简单:淘金热是有风险的。所以,就让他们称之为“一币一嫩模式”吧。不要跟风盲目炒币。我们应该赚他们——的钱去做嫩模!做一个温柔的模特!嫩模!
8.昨天遇到一个币友,问他:“最近币市暴跌。睡眠质量怎么样?」
他说:“还不错。像婴儿一样睡觉!」
我说:“我好羡慕。」
他说:“就是睡一个小时,醒了再哭一个小时,再睡一个小时,醒了再哭一个小时。」
9.老同志语重心长地对80后、90后说:“不要玩那些比特币,那些虚拟的东西,做点实事,在北京买房娶媳妇。多好啊!”90后回答“你们都做了一套几千块钱到101000平米的房子。如果不另谋出路,我们就卖给你一串数字,每串10万。我们怎样才能买得起房子?」
10.首先感谢公司给员工发了价值100万的比特币。其次,能拿到95万的奖励,我觉得自己很幸运。然后我觉得应该规划一下86万的使用。毕竟70万不是小数目。打算给父母20万,剩下的36万还没想好怎么用。简而言之,我要感谢公司
说明:你知道区块链在白话里是什么吗?
“区块链只是一种技术”,“比特币”只是区块链技术的一种应用。举个例子,一个人会做饭,但是运用他的厨艺,可以做出“宫保鸡丁”、“鱼香肉丝”等各种菜肴。
那么,什么是“区块链”?在这里,我们借助一个流行的网络段子,用图形的形式展示给大家。
我们可以把“比特币”抽象为“某荣誉的照片”,如上图所示。如果很多网络用户想获得某个荣誉的照片,需要在固定的网站上搜索。
当然,你没有别的地方可去。嗯,这个榴莲网站每天都会给你弹出广告和小窗口。你必须忍受,因为这是你唯一能得到它的地方。
再者,这个网站突然被警察叔叔封了怎么办?还是停电了?断网?管他呢,反正服务器崩溃了,那么悲剧《某荣》粉丝心爱的2100张照片就都失去提供资源的地方了。
这就是网络上流传的新词“中心化”。其缺点是资源集中在一起,抗风险和容错能力弱。资源很容易流失。
那么,如何解决这个问题呢?大家想象一下,是不是每个《某荣》的粉丝都能拥有这2100张照片?比如下面这张图:
在这种情况下,似乎就不用依赖那个“一个石榴”网站了。就算一个粉丝的电脑突然死机,他也可以随便找另一个粉丝来拿这2100张照片,不用担心。
后来一个叫“某本聪”的虚拟人物提供了某荣照片分享文件夹,并附有协议。用户可以从中获取照片,但必须遵守协议。
这样每个粉丝都可以从这个文件夹里拿到张蓉的2100张照片,但是所有拿到的粉丝都要遵循一个协议,这个协议当然是由某个本聪定义的。
“不允许您复制、修改或共享文件中的任何照片。粉丝在共享文件夹的任何行为都会被记录,而且是按照时间来记录的!”
粉丝那么爱某个荣誉,又不需要去某个石榴那里拿,当然也热情地加入了~
突然有一天,调皮的小家伙想打破常规,在2018年1月15日中午12点删除了某张编号为1-100的荣耀照片。
根据协议,这一行为将被记录下来,并向其他粉丝播放。
照片被删了吗?当然没有,因为卢晓手里也有照片。收到广播后,她可以立即恢复共享文件夹中已删除的照片。小不点永远不会试图修改或破坏“共享文件夹”,所有的动作都会被同步记录在其他用户的电脑里。
这就是区块链,分散的数据存储和分散化。所有的动作都被时间戳广播记录下来,不能被修改、破坏或篡改。
除非一百万用户的电脑同时被炸,或者互联网消失,或者世界毁灭.数据会一直存在~ ~
如何增加区块链的保护资源?《某本聪》又来了。他说你可以在文件上加一些光彩照人的照片,但一定要达成某种“共识”吗?什么是“共识”是我们都承认的规则。
这是什么样的共识?啊,小一和马上就明白了某本聪的意思,每年在规定时间内尽快拍下100张张荣的照片,这样就可以添加到“某荣的共享文件夹”里,我们的资源就扩大了。
然而好景不长。本聪找了一大堆照片,打到前100,马上就要达到了,所以拍照没有难度。
而且照片质量还很差,好像谁都可以轻易添加照片资源,以至于某个荣誉的照片质量都无法保证。结果又来了某本聪,增加了拍照共识的难度。
作为忠实粉丝,小一和怎么能放弃呢?他们买了高端相机,做了各种姿势的某荣,花了大量的时间和汗水,完成了高质量的照片。当然,他们工作非常努力。
这样就可以把高质量的照片添加到“阿荣的文件夹”里。
ICO是什么?
肖翔:每一张照片都是无法伪造销毁的,所以是唯一的,有单独的编号。如果每张照片都有价值,难道不是有价值吗?就像现实世界中一幅无法复制的名画!
一个从之前的荣誉照构造了对应的“某个荣誉币”。当然,这种行为类似于通过国库的黄金额度向我国政府发行等值人民币。
估值当然是肖一个人说了算。人是照片的主人。
为了证明某荣币每枚5W,小不点先从2100枚中买了1100枚,剩下的分给吃瓜群众。我们已经买了一个5W的,说明他已经值这个价了。剩下的1000块一起买吧。
这样的话,2100枚全部认购的话,2100枚某荣币可以估值1.05亿元。这个通过发行数字货币来融资的过程就是ICO。
按照这张图的意思,如果小一和是值得信任的机构或者公众人物,还是可以信任的。当然,很多不法分子会恶意发钱套现。
这也是我们国家禁止ICO发行的原因,因为目前还没有一部完善的ICO法规能够保证发行货币的机构的公信力和任性,并对其进行法律监管。所以吃瓜的人要冒险找一个可信的机构。
就这样,2100枚一定荣币全部认购成功,基金成立。这是ICO。当然,吃瓜的人可以继续拍照制造一定的荣誉币,只是有点难度。
现在你知道区块链和ICO是什么了吧~下面教你如何用Python创建区块链。
在Python中从0创建区块链
我们是数字货币兴起的新手,想知道它背后的技术——区块链是如何实现的。本文通过Python构建区块链,可以加深对区块链的理解。
准备工作/即将开始工作
本文要求读者对Python有基本的了解,能够读写基本的Python,对HTTP请求有基本的了解。
我们知道,区块链是由块记录组成的不可变的有序链结构。记录可以是交易、文件或任何你想要的数据。重要的是,它们是通过哈希链接在一起的。
如果你还不太了解哈希,可以查看这篇文章https://learning cryptography.com/hash-functions/what-are-hash-functions。
环境:
环境,并确保已经安装了Python3.6、pip、Flask、requests。
安装方法:
pip Flask==0 . 12 . 2 Requests==2 . 18 . 4同时需要一个HTTP客户端,比如Postman、cURL或者其他客户端。
参考源码(我翻译原码的时候,不能运行。我复印了一份,修改了其中的错误,并添加了翻译。感谢明星)。
开始创建区块链
新建一个文件blockchain.py本文所有代码都写在这个文件里,可以随时参考源代码。
区块链类
首先,创建一个区块链类,在构造函数中创建两个列表,一个用于存储区块链,另一个用于存储交易。
以下是区块链类的框架:
Blockchain类用于管理链。它可以存储事务、添加新块等。让我们进一步改进这些方法。
方块图
每个块包含属性:索引、Unix时间戳、事务列表、工作负载证书(稍后解释)和前一个块的哈希值。
以下是块的结构:
在这里,区块链的概念是清楚的。每个新块都包含前一个块的哈希,这是关键点。它保证了区块链的不变性。
如果攻击者破坏了前面的一个块,所有后续块的散列将变得不正确。不懂就慢慢消化。请参考{ % post _ link whatbc区块链技术原理%}。
加入交易
接下来,我们需要添加一个事务来改进new_transaction方法:
11
将事务记录添加到方法列表中,并返回它将被添加到的块(下一个要挖掘的块)的索引,这在用户提交事务时会很有用。
创建新块
当区块链被实例化时,我们需要构造一个创建块(没有前一个块的第一个块)并给它添加一个工作量证明。每个区块都需要用工作量来证明,俗称挖矿,后面会解释。
为了构造创建块,我们还需要改进new_block()、new_transaction()和hash()方法:
通过上面的代码和注释,我们可以对区块链有一个直观的了解。接下来,我们来看看积木是怎么挖出来的。
了解工作负载证明
新块由工作负载证明算法(PoW)构建。PoW的目标是找到满足特定条件的数字。这个数字很难计算,但很容易核实。这是工作量证明的核心思想。
为了便于理解,举个例子:
假设一个整数x乘以另一个整数y的乘积的哈希值必须以0结尾,即hash(x * y)=ac23dc.0.设变量x=5,求y的值?
用Python实现,如下所示:
结果是:y=21,因为:
哈希(5 * 21)=1253E9373E.5E3600155E860在比特币中,使用了名为Hashcash的工作量证明算法,与上述问题类似。矿工争夺创建区块计算结果的权利。
通常情况下,计算的难度与目标字符串需要满足的特定字符数成正比。矿工计算结果后会获得比特币奖励。当然,在网络上验证这个结果是非常容易的。
实现工作量证书
让我们实现一个类似幂算法。规则是:找一个数p,使与前一个块的证明拼接的字符串的哈希值以4个零开始。
衡量算法复杂度的方法是修改零的个数。用四个零进行演示,你会发现多一个零会大大增加计算结果所需的时间。
现在区块链类基本完成了,我们就用HTTP请求来交互。
区块链作为API接口
我们将使用Python Flask框架,这是一个轻量级的Web应用程序框架。将网络请求映射到Python函数非常方便。现在让区块链在Flask Web上运行。
我们将创建三个接口:
/transactions/new创建一个事务并将其添加到块中。
/mine告诉服务器挖掘新的块。
/chain返回整个区块链
创建节点
我们的“烧瓶服务器”将作为区块链网络中的一个节点。让我们先添加一些框架代码:
简单解释一下上面的代码:
第15行:创建一个节点。
第18行:为节点创建一个随机名称。
第21行:实例区块链类。
第2426行:创建/mine GET接口。
第2830行:创建/transactions/new POST接口,它可以向接口发送事务数据。
第3238行:创建/chain接口并返回整个区块链。
第4041行:服务运行在端口5000上。
发送交易
发送到节点的交易数据结构如下:
以前有过添加事务的方法,所以基于接口添加事务非常简单:
挖矿
采矿是神奇的。很简单。它做以下三件事:
计算工作量证明能力。
通过添加新交易给矿工(他们自己)一枚硬币。
构造一个新的块并将其添加到链中。
注意,事务的接收方是我们自己的服务器节点,我们做的大部分工作只是围绕区块链类方法进行交互。此时,即使我们的区块链已经完成,让我们实际运行它。
运行区块链
可以使用cURL或者Postman与API进行交互。
服务器启动:
让我们通过请求http://localhost:5000/mine来进行挖掘:
通过过帐请求,添加一个新交易:
如果不使用Postman,下面的cURL语句是一样的:
挖了两次矿,有3块。可以通过请求http://localhost:5000/chain获取所有的块信息。
11
一致性(共识)
我们已经有一个基本的区块链,可以接受交易和采矿,但区块链系统应该是分布式的。
既然是分布式的,怎么做才能保证所有节点都有相同的链呢?这就是一致性问题。如果我们希望网络上有多个节点,我们必须实现一致的算法。
注册节点
在实现一致性算法之前,我们需要找到一种方法让一个节点知道它的邻居。
每个节点都需要记录网络中的其他节点,所以我们添加一些新的接口:
/nodes/register接收URL形式的新节点列表。
/nodes/resolve执行一致性算法来解决任何冲突,并确保节点具有正确的链。
我们修改区块链的init函数,提供注册节点方法:
我们使用set来存储节点,这是一种避免重复添加节点的简单方法。
实现一致性算法
如前所述,冲突意味着不同的节点有不同的链。为了解决这个问题,规定最长最有效的链是最终链。换句话说,网络中最长和最有效的链是实际链。
我们使用以下算法在网络中达成共识:
11
第一个方法valid_chain()用于检查是否是有效的链,遍历每个块验证hash和proof。
第二种方法resolve_conflicts()用于解决冲突,遍历所有邻居节点,用前面的方法检查链的有效性。如果发现链条更长,就会更换自己的链条。
让我们添加两条路由,一条用于注册节点,一条用于解决冲突。
您可以在不同的机器上运行节点,或者在一台机器上打开不同的网络端口来模拟多节点网络。
这里,在同一台机器上打开不同的端口演示,在不同的终端上运行以下命令来启动两个节点:
http://本地主机:5000
http://本地主机:5001
然后在节点2上挖两个块,确保是一个较长的链,然后在节点1上访问接口/nodes/resolve。此时,节点1的链将被共识算法替换为节点2的链。
嗯,你可以邀请朋友来测试你的区块链。