何为区块链

简介: 区块链最近几年成为了一个很热门的课题,很多人知道区块链源自比特币。何为区块链呢?我们来演义一下:小张在银行里存了笔钱100块,小明在银行里也开了个户。

区块链最近几年成为了一个很热门的课题,很多人知道区块链源自比特币。

何为区块链呢?我们来演义一下:
小张在银行里存了笔钱100块,小明在银行里也开了个户。某天小张转给小明80块,于是小张只有20块,小明有了80块。
为了记录这些数据,银行开了2张表,1张是账户信息表(姓名,余额),另一张是转账表(转账人,收帐人,金额,时间)。原本只用第1张表就够了,因为每个人手头余额就行了,但是发现系统是不可信的,万一转账时,小张-80,但是小明+80时没有执行成功怎么办呢?不就丢了这80块么。于是出现了第二张表,又称对帐表、账本,当账不平时,就可以拿出这个记录来说事来核算 。
问题又来了,一些人说,这银行也不可靠,会不会有人来串改这个账本?公信问题受到挑战。
于是有人在想,这样吧,能不能把这个账本记录在多个地方,多台电脑上。也就是说,你不信我,可以,你自己拿台电脑来,转账时把相关转账信息同时存于多台电脑上,也放你电脑上了份。如果要对账时,先看看所有电脑上的账本是否一致再说。这样可信度就高了。
要设计这样的系统变得复杂多了,首先传统的MIS表已经不再适用,因为除了追加转账记录,还需要核对等各种操作,于是设计成这样:

这里写图片描述

把每一次转账记录当成一个区块,然后通过链条将其串起来,每一个区块除了记录本次交易信息,还记录前一个区块的编号。这样的话,追加很容易,删除比较困难。

这里写图片描述

然后整个架构如上图,每个结点中,保存着同一套账本链。这样也就实现了将对来以银行为中心的系统,变成了分散的小中心。也是所说的去中心化。

每操作一笔交易时,需要通知所有加入到该区块链中的服务器,各服务器把账本链进行调整,所有一致通过后,交易才能完成。

就这么简单么?——事情远没有这么简单。如果就这样设计的系统,首先就是一个低可用么。如果服务器群中,任意一个结点挂了,那么交易失败,这样的稳定性是没有接受的。

于是协商,如果有机器挂了,那么我们就在剩下的机器中完成交易,然后等那台机好了后,再自动从其他机器上把该账本同步过来。

完美了吗?——No,某次交易刚好出现下面的情况:

这里写图片描述

好巧不巧,当小张和小李交易时,出现了上面的情况,结点123突然与结点45不通了。这情况又叫做脑裂。
小张通过123结点,向小李转账100块。可小红连接上结点45向小李转了10块,同时小李本事好黑进了网络,将小张20块转到自己帐上来,并小在各自的小网络中都执行成功了。

好了,突然间,这两个网络又通了。这里这个结果怎么处理?有的交易是正常的,如小红转的,有的是非正常的,比如小李控制的,因为按理小张的余额是不足以支持第二次转账了的。

这里碰到的问题很像拜占庭将军问题,中间信息存在不可靠,如何最终决策。但我们知道这个问题是没有精准解的。只能设计一套在某种情况下合理解决方案。
这里的解决办法是,合并时比较哪边的链长,并把短的一边进行抛弃。那么小李有没有办法真正的黑到这笔费用呢?有办法,在自己小规模的网络里进行N笔交易,并且长度超过主网中的。但这样的话他将花费更多成本,终合来说这种情况在情理上不存在。故认为这样的整体架构是可信的。
以上就是区块链的基本情况。那么比特币又是怎么一回事呢?可以理解为一种特殊的电子货币在区块链上进行交易的特殊应用。
交易可以理解,按之前交易描述并不多,无非一些数字。那电子货币又是什么。我们先看一下实物货币,有几大特性:
第一、实物货币给你我就没有,我给了你,我就没有,但电子的容易复制,怎么办呢?——实际上采用了非对称加密技术,每个人保留私钥,用自己的私钥加密,同时在服务器上进行交换加密处理,阻止了复制操作。

第二、实物货币会有一定的工作量的,比如古代拿贝壳当货币,那也一定会提出这种可以当货币的贝壳得有一定的条件,否则自己到海边随便捡些有就,那就乱了。那电子货币如何也能产生一定工作量,要得到得花功夫呢?——方式就是出道算术题,解出来的东西当成比特币。那什么题目这么神奇?答案是hash。题目就是找到一个字符串,要求它的hash值(64位)满足一定条件,前面12位全是0。
为什么选这题?我们知道hash是一个很神奇,当前有某个字符串已经有11个0了,你想改变这字符串中任意一个字符,将会导致这个hash变得面目全非。也就是说我们不能通过计算、或递推等方式来很轻松的得到这个满足条件的hash值。找这个字符串的过程叫做挖矿。而且总的位数有限,故总比特币数量有限。当你找到一个字符串满足要求后,还得去服务器上比较,有没有别人已经挖到,已经有的就不算,所以挖矿将会越来越难。

目录
相关文章
|
JavaScript 前端开发
vue2.0 + element-ui 多级导航菜单
vue2.0 + element-ui 多级导航菜单
278 0
|
8月前
|
传感器 运维 监控
智慧看护:可穿戴设备在老年护理中的技术探索
智慧看护:可穿戴设备在老年护理中的技术探索
442 13
|
9月前
|
移动开发 安全 虚拟化
VMware ESXi 8.0U3c - 领先的裸机 Hypervisor
VMware ESXi 8.0U3c - 领先的裸机 Hypervisor
203 0
VMware ESXi 8.0U3c - 领先的裸机 Hypervisor
|
人工智能 自然语言处理 算法
创作吧开发者第三期:AI的奇思妙想之旅
从认识AI算法到使用AI工具再进阶为算法性能提升,不知不觉中,AI智能家居与私人助手成为了最熟悉我们生活的小助理。此外,文学、美术及音乐的联动,AI的创意作品也给我们带来更多的想象。 快来用文字为AI记录成长轨迹,用想象探索AI的无限奥秘,让灵感在字里行间流淌,你的每一个想法和记录都会成为AI浩瀚宇宙中的星辰!期待与各位创意满满且热爱创作的你们,共赴一场AI的奇思妙想之旅!
763 25
|
9月前
|
SQL XML Java
八、(了解即可)MyBatis懒加载(或者叫延迟加载)
八、(了解即可)MyBatis懒加载(或者叫延迟加载)
231 1
计算机维修
计算机维修。
434 1
|
小程序 定位技术 API
从新手到行家:支付宝小程序开发的全景攻略
【8月更文挑战第27天】在数字化转型的大潮中,支付宝小程序作为连接商家与消费者的桥梁发挥着重要作用。本文以“美食地图”支付宝小程序为例,从项目概述、开发准备、开发实践、问题解决到最终总结,全面解析支付宝小程序的开发流程。从环境搭建到页面设计,再到业务逻辑实现,最后完成性能优化、测试与发布,详细介绍如何打造一款实用且用户体验优良的小程序。“美食地图”不仅让用户轻松搜索周边美食、查看评价和优惠信息,还能在线预约,极大地提升了便利性和满意度。通过实战案例分享,为开发者提供宝贵的经验参考。
432 0
|
存储 人工智能 固态存储
掌握未来:打造适用于AI人工智能开发的理想电脑配置指南
在当下技术快速发展的时代,人工智能(Artificial Intelligence, AI)已然成为大势所趋。从语音助手到自动驾驶汽车,AI的应用日渐普及。作为计算机科学的一个分支,AI侧重于创造能够执行各种复杂任务的智能机器。为了进行有效的AI研发,一个强大的电脑配置是必不可少的。本文旨在为AI开发者提供一份详尽的电脑配置建议,帮助您在这个时代浪潮中占得先机。
|
数据可视化 数据挖掘 Python
Python对阿里巴巴、谷歌、腾讯等六家公司股票数据进行分析与可视化实战(附源码 超详细)
Python对阿里巴巴、谷歌、腾讯等六家公司股票数据进行分析与可视化实战(附源码 超详细)
504 0
|
数据采集 搜索推荐 安全
什么是小语种SEO?
答案是:Google小语种SEO就是对小众语言进行的谷歌本地化优化。 小语种SEO的定义 理解小语种SEO 小语种SEO指的是针对那些使用人数相对较少,不如英语、汉语、西班牙语等大众化的语言进行搜索引擎优化的过程。 这包括但不限于如波兰语、丹麦语、荷兰语等。 虽然使用这些语言的人数相对较少,但从市场竞争的角度来看,针对这些语言的搜索引擎优化同样具有重要性。
412 0
什么是小语种SEO?