如何实现自己的区块链? 人人能写区块链?能做到吗?

人人能写区块链吗?

目前比较著名的项目Ethereum,你可以在Ethereum这个平台上实现自己的区块链。 关于Ethereum项目,所有的资料、文档、代码、开发技巧都是开放的,参考网站: https://github.com/ethereum,只要你懂一门编程语言,就可以实践自己的区块链,只要具备C++,go,JavaScript,Python 任何一门语言即可,因为编程语言的原理是相通的。

区块链是什么?

区块链英文名Blockchain,本质是保存持续增长的记录的分布式数据库。最奇妙的是区块链把分布式数据在技术上只保留了InsertQuery两个操作。

如何才能实现这样一个系统呢?那么我们需要回答几个核心问题。

如何保存数据?保存数据的困难有哪些?

数据逐渐增加,如何应对?

如何对之前的数据进行修改?

解决方案 :

如同数据结构的链表+结构体组合,不断的记录新的数据,然后将这些数据连接起来

一个区块如何描述,其实就是LinkedList

ClassDataBlock{    getData();    setData();    getPre();    getNext();}

数据能否被修改呢?因为如果支持修改,可能引发很多的同步问题。那么能否不支持修改呢?实际上,GFS的整体架构就是构建在不可修改的数据结构之上。

于是,我们推论出构建不可修改的串联的数据块。但是我们要注意的是虽然底层数据不能修改,但是上层的数据视图是可以修改的。

如何让很多人都对数据有信心,相信是真实的,不能被篡改呢?每个人都保存一份同样的数据。

如何添加数据呢

我们添加的每一份数据都需要按照同样的方式添加到每个人保存的副本中。

我们能否具有计算能力呢?为什么需要计算能力?

我们从此可以得到一个通用的计算机,也把数据的修改模型更加地简化和通用化。

我们如何定义计算能力呢?

要回答这个问题,我们首先要想的是这个分布式的计算机的各个部分是如何构成的。

谁来构成整个存储空间?每一个具体的地址。每一个地址保存了什么?数据。如何才能对地址计算呢?我们可以把对数据的处理逻辑也放入这个地址。那么一个地址到底需要什么呢?地址信息、财富信息、数据信息、代码。

于是,所谓的状态就是指系统中每一个地址和地址对应的状态的集合。我们通过一个一个的交易来进入新的状态。

接着, 我们可以把状态转移的过程也记录下来,这个就是记录transaction的block。这些block连接在一起,形成blockchain。

如何应对同时写入的混乱

如何防止很多人一起写造成的混乱呢?大家同时解决一个难题,谁先解出来,谁就能够写入。

如何防止有人同时解出来?这个有可能,但是连续多次都是同时有人解出来的概率较低,于是选择链最长的那一个。

具备以上基本概念,让我们在这里通过实际的代码进一步实战,实现一个支持TokenBlockChain。参考:Naivecoin: a tutorial for building a cryptocurrency

官方网站:https://lhartikk.github.io( 具备基本的编程基础)

如何保存数据

区块链的基本概念是:保存持续增长的有序数据的分布式数据库。要实现自己的区块链,需要满足以下功能:

定义数据块

定义数据块之间的关系

添加数据块的功能

节点之间的通讯

节点之间同步数据

对节点的控制能力

专业的系统定制(180)威信(396)交易所钱包解决方案(65076)

你可能感兴趣的:(如何实现自己的区块链? 人人能写区块链?能做到吗?)