区块链
文章平均质量分 85
刘三羊
老白程序猿,互相交流(本人擅长go语言,所以博客许多代码都会使用go语言实现)
展开
-
用Go语言建立一个简单的区块链part1:基本原型
基本原型引言 区块链是 21 世纪最具革命性的技术之一,它仍然处于不断成长的阶段,而且还有很多潜力尚未显现。 本质上,区块链只是一个分布式数据库而已。 不过,使它独一无二的是,区块链是一个公开的数据库,而不是一个私人数据库,也就是说,每个使用它的人都有一个完整或部分的副本。 只有经过其他“数据库管理员”的同意,才能向数据库中添加新的记录。 此外,也正是由于区块链,才使得加密货币和智能合约成为...翻译 2018-06-04 21:50:57 · 543 阅读 · 0 评论 -
用Go语言建立一个简单的区块链part2:Pow共识
工作量证明在上一节,我们构造了一个非常简单的数据结构 – 区块,它也是整个区块链数据库的核心。目前所完成的区块链原型,已经可以通过链式关系把区块相互关联起来:每个块都与前一个块相关联。但是,当前实现的区块链有一个巨大的缺陷:向链中加入区块太容易,也太廉价了。而区块链和比特币的其中一个核心就是,要想加入新的区块,必须先完成一些非常困难的工作。在本文,我们将会弥补这个缺陷。工作量证明 区...转载 2018-06-04 22:11:34 · 565 阅读 · 0 评论 -
用Go语言建立一个简单的区块链part3:持久化和命令行接口
持久化和命令行接口引言到目前为止,我们已经构建了一个有工作量证明机制的区块链。有了工作量证明,挖矿也就有了着落。虽然目前距离一个有着完整功能的区块链越来越近了,但是它仍然缺少了一些重要的特性。在今天的内容中,我们会将区块链持久化到一个数据库中,然后会提供一个简单的命令行接口,用来完成一些与区块链的交互操作。本质上,区块链是一个分布式数据库,不过,我们暂时先忽略 “分布式” 这个部分...原创 2018-06-05 22:16:57 · 600 阅读 · 0 评论 -
用Go语言建立一个简单的区块链part4(1):交易(1)
交易(1)引言交易(transaction)是比特币的核心所在,而区块链唯一的目的,也正是为了能够安全可靠地存储交易。在区块链中,交易一旦被创建,就没有任何人能够再去修改或是删除它。今天,我们将会开始实现交易。不过,由于交易是很大的话题,我会把它分为两部分来讲:在今天这个部分,我们会实现交易的基本框架。在第二部分,我们会继续讨论它的一些细节。由于比特币采用的是 UTXO 模...原创 2018-06-06 23:27:24 · 699 阅读 · 0 评论 -
用Go语言建立一个简单的区块链part5:地址
地址引言在上一篇文章中,我们已经初步实现了交易。相信你应该了解了交易中的一些天然属性,这些属性没有丝毫“个人”色彩的存在:在比特币中,没有用户账户,不需要也不会在任何地方存储个人数据(比如姓名,护照号码或者 SSN)。但是,我们总要有某种途径识别出你是交易输出的所有者(也就是说,你拥有在这些输出上锁定的币)。这就是比特币地址(address)需要完成的使命。在上一篇中,我们把一...转载 2018-06-07 22:11:49 · 523 阅读 · 0 评论 -
用Go语言建立一个简单的区块链part7:网络
Part 7: 网络目录引言区块链网络节点角色网络简化实现场景版本getblocksinvgetdatablock 和 tx结果 NODE 3000NODE 3001NODE 3000NODE 3001NODE 3002NODE 3001NODE 3002NODE 3001总结引言到目前为止,我们所构建的原型已经具备了区块...转载 2018-06-09 09:10:58 · 2114 阅读 · 0 评论