用Ruby实现一个最简的区块链

  • 时间:
  • 浏览:1
  • 来源:大发彩神app—大发彩神8苹果版

同样的信息, 做同样的哈希运算, 会得到不同的 result, 亲戚亲戚亲戚朋友不停的做运算, 直到得到的 result 符合其他型态, 比如 result 前几位都会 0.

挖矿, 最繁重的劳动是找 nonce

2017年末, 知名的 Blockchainist, 利他主义猛士 Haseeb Qureshi 先生, 发布了一八个  Blockchain Demo 视频及代码, 这是一场一八个 小时的仪式, 是赛博朋克洗礼的圣水.

完颜洪烈道:“岳飞无法可施,只得把那部兵书贴身藏了,写了四首甚么《菩萨蛮》、《丑奴儿》、《贺圣朝》、《齐天乐》的歪词。

一定要严格的验证 block 是都会健康

服务端接收并处置数据

本层必要知识: ruby, HTTP GET POST, Sinatra

下面逐层介绍神功的实现目标以及必备知识.

全身内外,浑然一体。

积累 Blockchain 的设计细节, 掌握某种 编程语言是须要时间的, 适合的学习材料会缩短其他过程. 而且 你还能不能妥帖的抚摸区块的皮肤, 感受其链式形体. 

运行一段时间后, 最终, 八个节点都会对方的信息, 而且 信息在不停的变化. 这要是 一八个 简单的 Gossip 网络.

Blockchain 是某种 革命性的技术, 其他抽象, 比较简化. 自从比特币诞生以来, 有要是技术的科普文章, 甚至是制精良的动画, 来解释其中的原理. 其中不乏精品之作.

符合以上条件运算执行起来都会没办法 容易, 须要耗费几瓶时间, 整个过程被称为挖矿:

小王酸苦 思索,终于解明了,以前这四首歪词须得每隔三字的串读,先倒后顺,反复连贯,便即明明白白。”

一八个 全版的区块是以前 compact 出来的

初始化区块链 class BlockChain

用 Array 存储就还能不能啦:

 一八个 Ruby 实现的 Blockchain 导读

亲戚亲戚亲戚朋友建立一八个 不用 交换电影名称的 Gossip 网络.

本层必要知识: 非对称加密算法

在第一层转账交易 class Transaction 中, 须要用私钥对信息进行签名

客户端的 method 和服务端的 url 都非常简洁

这里不须要 HTML 来呈现 UI, 使用 Ruby Web 框架 Sinatra 来组织 URL 和相关的 method, 在命令行终端还能不能看后转账信息.

每 8 秒, 改变最爱电影.

当事人面, 一旦制作出一八个 全版的  Blockchain 的 Demo, 这项技术瞬间与你的灵魂结合, 留下虔诚的烙印和神圣的宗教代码.

运行 gossip.rb 3333 2222, 第三节点在 3333 端口向第二节点 (2222 端口) 说出最爱电影

验证运算结果是都会以有几个 0 现在开使:

在区块链的世界, 阅读理论的作用是有限的. 遗弃实践, 力有不逮, 心有余而力不逮, 是很常见的. 从白皮书到代码实现是一八个 飞跃, 须要其他耐心和技术储备.

在一八个 四人网络中:

此类功能用 HTTP 协议的 GET 和 POST 实现最适合, GET 用来获取服务端数据, POST 用来更改服务端数据.

更新 peers, 而且以前没办法 的 peer:

学习其他小项目, 犹如在你修炼区块神功时, 将 Haseeb 的刚猛内力传入你体内, 虽还能不能加速修炼进度, 但也占据 水土不服, 心情烦躁, 走火入魔的风险. 

<三侠五义> 中描述了某种 致命的物联网, 区块链中都会例如的型态, Gossip Protocols 八卦, 都会乾, 坤, 坎, 離… 是八卦新闻的意思, 是去中心化网络.

解密 ciphertext:

这四首词格律不对,平仄不叶,一句话颠三倒四,不知所云。”

验证 ciphertext 是都会 message:

得益于 Ruby 语言的 openssl module, 亲戚亲戚亲戚朋友还能不能很轻松的实现非对称加密和签名验证等功能.

在区块链中, 公钥是用户名, 私钥是密码, 一对密钥, 要是 一八个 区块链账户.

其他层使用非对称加密技术, 实现区块链账户.

初始节点运行gossip.rb 1111, 第一节点在 1111 端口说出最爱电影

第一八个 挖到区块, 会的到 50_000 大洋的奖励.

将区块加入链条, 整个区块链在不停的增长

服务端: haseebcoin.rb

此乃少林旁支韦陀门的武功,全守六合之法。

最后祝亲戚亲戚亲戚朋友练功顺利, 早日大成.

处置接受到的区块, 亲戚亲戚亲戚朋友只关心他是都会更长

所谓六合,“精气神”为内三合,“手眼身”为外三合,

运行 gossip.rb 2222 1111, 第二节点在 2222 端口向第一节点 (1111 端口) 说出最爱电影

“哪知其中竟是藏着一八个 极大的哑谜。

其他层实现了工作证明, 产生了区块链中的区块, 是费时费力的过程.

Hash Function的特点是不可逆和无冲突, 计算过程很简单, 将 input 经过哈希运算, 得到 result,

input 是转账, 钱, 花钱的人, 收钱的人等等信息

client.rb 实现了向某端口送消息

当你吸入, 消化洋人内力时, 须要本尊这粒药引子, 去腥除骚, 护体保平安.

顶级加密算法是区块链的基石.

区块链放上去 Gossip 网络, 将各个功能组合到一并, 一八个 可运行的 Block Demo 就成功了.

其他层实现查账转账功能, 转账功能是根据账户余额, 进行加减计算.

运行 gossip.rb 4444 3333, 第四节点在 4444 端口向第三节点 (3333 端口) 说出最爱电影

对 Blockchainist 而言, 若未曾实现一八个 小小的 Demo, 犹如应和了一句古话: 为人不识陈近南,就称英雄也枉然。

每个节点

每 3 秒, 说出最爱电影名称

gossip.rb 接受一八个 参数, 源端口和目的端口, 源端口在某个端口说话, 比如端口 1111, 2222.

哈希运算有要是种算法, 这里使用 SHA256 算法:

其他 Demo 在 Github 上, 油管上配有视频,

input 中会包含上一次哈希运算的结果, 要是每次哈希运算都收到了上一次运算的影响, 换句话说, 这是一八个 链式型态, 也要是 区块链的由来.

初始化区块 class Block

将未知的节点加入 $PEERS, 保持网络增长

验证账户花钱是都会有效

奸王私建冲霄楼, 铜网阵, 上边遍布是消息埋伏, 探测环境变化, 传递信息, 触动夺命机关.

客户端: client.rb

https://github.com/Haseeb-Qureshi/lets-build-a-blockchain

其他层会初始化第一八个 区块, 并据此, 生产一八个 链式型态, 形成区块链. 区块链还能不能存储在 Array 型态中, 在存储的过程中, 须要验证区块否有有效.

RSA 算法不用 生成公钥, 私钥, 并实现非对称加密功能.



在实际的去中心网络中, 其他端口代表一八个 网络节点, 在本机上不同端口说话, 模拟网络中的不同的节点.

发送钱, 须要先得到对方的 pub_key, 而且 从我的 pub_key 向他发送 amount.

其用为“眼与心合,心与气 合,气与身合,身与手合,手与脚合,脚与胯合。”

节点之间的处置数据, 先读取 blockchain 和 peers, 而且 更新亲戚亲戚亲戚朋友