Java实现区块链 --- 原理篇

什么是区块链?

区块链是由一个个记录着各种信息的小区块链接起来组成的一串链条,和链表类似,是一种数据结构。应用于未来互联化的社会。

区块链特性

去中心化:区块链是分布式存储的,不存在中心点,所有每个节点都可以是中心。在生活中像银行、支付宝就属于中心点。

开放性:区块链中的数据是公开透明的,每个人都可以参与进来。比如未来没有银行帮忙记账,我们的交易会记录在区块链中,里面有我们的交易流水,账户余额等,涉及到个人隐私的部分会加密。在共识的范围内,规则和机制完全透明,避免暗箱操作。

自治性:区块链采用基于协商达成一致的规范和协议(一套公开透明的算法)。比如一个画家想卖掉他的画,委托了一个画商帮他卖,约定卖出一幅画画商分得30%的佣金。这里就可能出现一个问题:(画商出售了10000块的画,给作者画家报价卖了8000,先吃掉2000,再加上8000的30%提成一共4400),但是使用区块链之后就不会出现这种问题,在交易之前会约定好,售价的30%做为佣金,这一条写入区块链之后就无法修改,画家就不担心暗箱操作的问题。

匿名性:区块链上的个人信息都是加密之后的,是一串数字和字母组成的字符串,不会出现信息泄露的问题。

区块链的结构

区块头(Head):记录当前区块的元信息。区块中包含上一个区块的标志位(可以是加密之后的字符串),即它链接在谁后面,本身的标志位,给下一个区块使用。

区块体(Body):实际的数据。每一个区块(大小1M左右),记录了一些信息,按照数据产生的时间顺序,存储在区块中。一个区块存满了,会生成一个新的区块,通过链(哈希指针)找到下一个区块。

Java实现区块链 --- 原理篇_第1张图片

区块链是如何工作

目前我们转账都是中心化的,银行是一个中心化账本,例如 A 账号里有 400 块钱,B 账号里有 100 块钱。当 A 要转 100 块钱给 B 时,A 要通过银行提交转账申请,银行验证通过后,就从 A 账号上扣除 100 块,B 账号增加 100 块。计算后 A 账号扣除 100 后余额为300元,B 账号加上 100 后余额为 200 元。

Java实现区块链 --- 原理篇_第2张图片

区块链上转账的步骤则是:A 要转账给 B 100 块钱,A 就会在网络上把要转账的这个信息告诉大家,大家会去查看 A 的账户上是否有足够的钱去完成这个转账,如果验证通过后,大家就把这个信息都记录到自己的电脑上区块链中,且每个人记入的信息都是同步一致的,这样 A 就顺利将 100 块钱转移到了 B 的账户上。(去掉了银行在交易中发挥的作用)

Java实现区块链 --- 原理篇_第3张图片

你可能感兴趣的:(毕设,区块链)