第两百二十一章 区块链
叶新晨现在可不知道雷布斯在头疼什么,他只知道现在自己的宝贝女儿欢欢和宝贝儿子关关玩的就很快乐。
那可不快乐吗?
因为叶欢欢和叶关关此刻在游乐园里面玩耍着呢。
曹庆阳:晨儿,问你个事情哈,现在区域链创业靠不靠谱啊?
叶新晨:你问这个做啥啊?你好好的当你的部长不好吗?问这些干什么?
叶新晨坐在凳子上,就收到了来自曹庆阳给他发的消息。
看着这个消息,叶新晨也是笑了笑,没有想到曹庆阳也会问这个问题,因为区域链对于叶新晨来说现在并不陌生。
他身边也有一些朋友在玩区块链,所以区块链在他看来全是杀猪盘。
不过一般情况下,曹庆阳也不会问的,所以叶新晨也是继续的发了一句。
叶新晨:怎么了?
曹庆阳:是我一个发小问我的,金融圈的,他今天我也不知道为什么会来找上我,就是说想问问的,毕竟我现在混这么厉害了,问我他放心,所以他才过来问我区域链能不能创业,不过……他自己说区块链应该可以赚大钱。
叶新晨也是笑了笑,这是什么鬼哦,区块链能够赚大钱?
怕不是在想屁吃哦。
叶新晨真的觉得这些人啊,想钱是想疯了吗?
不过,毕竟是曹庆阳的发小,那叶新晨还是回复:区块链靠不靠谱我不知道,但我知道他们肯定对区块链有着严重的误解。
因为区块链是对以往中心式记账体系的颠覆,也就是实现了去中心化。
这个概念最早在比特币之父中本聪在2008年发表的论文Bitcoin:APeer-to-PeerElectronicCashSystem(比特币:一种对等网络电子现金系统)里提出的。
所以想了解区块链,还得必须了解比特币。
而什么是区块链呢,这个的确是挺不好说的,但是可以简单的说,就是比如大家有一个公共账本。
假如你现在在上大学,你们寝室是标准的四人寝,除了你之外还有小王,小黄和小白三个室友。
平时你们内部的活动很多,于是经常会有人垫付饭钱,车费,还有水电费。
但是你们大家发现,如果每次消费后,都要一一计算交结非常麻烦,于是你们决定采用记账的方案。
于是乎,你们买了一个公共的账本,本次产生消费后,就由付钱的人在账本上记清楚,谁应付给自己相应的金额。
如此一来,只要每月月末统一结算即可,大大节省了时间精力。
但是时间一长,你们发现在纸上记账还是麻烦。于是你们决定升级这个账本,改成在电脑种建立一个excel表格,但问题是,如果你们寝室里有个人不厚道,偷偷修改账本怎么办呢?
例如小王把自己要付钱记在了小白头上。如果这个问题不能得以解决,那这个账本的信用就将会大大折扣。
所以,这个区块链采用的解决方案就是,给四个人每人都配备一个账本。需要记录时,就由对应的操作人高喊交易内容,广播给寝室里的所有人。
例如,小王高喊,“小王需要支付给小白三十元。”
然后寝室里其他人听到了,就在各自的小本本上记下——小王需要支付给小白三十元。
如此一来,就算小王故意使坏,把自己要付的钱记在别人身上,那也只能是篡改自己的账本。
这样到月底时,小王的账本和其余三个人对应不上,便能知道小王的账本有问题。
但这个系统仍然存在一个问题,那就是如果小王恶作剧,不负责任的乱喊“小白需要支付给小王一百元”。如此一来,很可能会有不明真相的舍友记录下来。
因此,分布式的账本还由一个急需解决的问题,如何确认收到的一笔交易记录是否有效?
所以这个问题在纸质帐本里很好解决,那就是在每一条记录后,由需付款的一方加上自己的手写签名,以示自己认可这笔记录。
这个思路换到计算机中就是数字签名,所以我们要求每一笔记录后面,都要由需付款的一方加上自己的数字签名。
数字签名在这里就不具体解释了,大家只需要知道,帐本系统里的任何人都可以验证数字签名是否正确可信。
但是上面这个账本还存在一些问题,使得只适合小范围使用,如果扩大到更大的范围,比如整个学校使用,这个时候交易量和用户数剧增,记录就会变得非常麻烦。
所以这个时候就有了比特币,啥意思呢,就是比特币正式为了解决这个问题而对前面介绍的账本系统的改进。
一个改进就是我们之前用的账本里面的交易单位是人民币,但在比特币系统中,我们的交易单位变为比特币。
另一个改进就是之前的账本我们约好是月底结账,而现在我们把交易单位改成了虚拟的比特币,交易也由月底统一交割改为事实交割。
而比特币就像是账本上的数字,随时都可以视大家的意见进行套现,即在现实中交割。
如此一来,我们就需要确保每个人的账户里有足够的比特币进行交易。也就是确定任何一笔交易的前提就是付款方的比特币账户中有足够的比特币用于支付。
传统银行系统中,银行会记录储户的账余额,判断储户是否能够进行转载。
这个很好理解,我在网银里操错向某账户转账一个亿,但我账户里显然没有这么多钱,因此银行系统会认定交易失败。
但比特币系统并没有一个“银行式”的权威中心,所以不能像银行这种操作方式。
比特币的解决方案是,每笔交易不以余额为基础,而是以以前的交易为基础。
比如,“小王支付给小黄50BTC”的前提是自己曾经收到过多余50BTC。因此小王的交易记录需要包含自己之前的交易信息,举个例子:
小白支付给小王40BTC
你支付给小王20BTC
小王支付给小黄50BTC
我们忽略比特币的源头,及它是如何产生的事,先继续往下看。
这个时候小王需要广播的交易信息就是:
谷/span之前交易小白支付给小王60BTC,你支付给小王60BTC。
当前交易小白支付给小黄20BTC,你支付给小黄10BTC,你支付给小黄10BTC。
这里说一句,“你支付给小王20BTC”中的20BTC是一个整体,无法分割,因此无法只从中拿出10BTC交易。
还有最后一个改进就是不留证明,改留比特币账号。就是用户A并不用留下自己的名字,而是用一个字符串来代表自己进行交易,同理,用户B和C也是如此,只留下了一个字符串。
所以你们室友在帐本里都不写名字,而是写下跟各自对应的字符串,即比特币账户。
虽然对于你们四个人的寝室这纯属脱裤子放屁,但如果对于规模更大的系统,比如前文提到的整个学校而言,这种操作可以极大提升隐私性。
我们只能知道每个账户,而无法知道谁拥有这个账户,这就保证了隐私性。
而区块链呢,就是从这一节开始进入正题。
前面我们提到了这个账本是分布式存储的,每个人都有一个自己独立管理的账本。
当这个账本系统变得很大时,一致性问题就必须要考虑。
比如,如果你有室友在交易记录发布时不在寝室,那么他就错了这次消息,使得这次消息不会出现在他的帐本里。
换回比特币系统,也就是部分电脑可能处于关机或者未联网状态,会错过部分交易。
此外,还可能会有黑客入侵部分电脑,篡改交易记录。
此外,还有一个更严重的问题就是,实际网络拓扑非常复杂,链路质量的随机性很大。
因此,如果用户A(假设账户里有10BTC)连续广播两条相互矛盾的消息,比如:
交易信息1:用户A支付10BTC给B。
交易信息2:用户A支付10BTC给C。
有的读者应该会觉得,那我们就采信先收到的交易信息1,忽略与之矛盾的脚印信息2不就行了。
但问题是,因为网络链路的复杂性,所以很可能存在部分用户先收到交易信息1,又有部分用户先收到交易信息2。如果依靠先后顺序辨别有效性,那么就会存在不同用户记录的交易信息不一致。
所以为了解决这个问题,中本聪才提出了区块链的概念。
每个用户如果愿意,都可以整理自己从网络中接收到的交易信息,然后检查其是否合理,也就是每笔交易是否由足够余,然后数字签名是否正确后,再将交易记录打包成一个区块。
因此每个交易记录都是以区块的形式存储,然后再广播到系统中的其他用户中。
而区块之间相互连接,形成一条由系统内全体用户共同维护的区块链。
因此其他用户收到广播的区块时,就会把这个区块加到自己维护的账本,也就是区块链的尾部。
但如果只是这样,并没有解决任何问题。互联网节点遍布全球,广播过程也需要时间,因此肯定会存在不同节点收到不同区块存储的问题。
所以如此一来这个网络就乱套了。
而为了降低传播时间的影响,一个简单粗暴的方式就是从系统设计中就限制区块生成的速度。
所以比特币系统的核心思想采就是用算力限制区块的生成速度。
比特币系统要求,每个用户在发布新区块前,必须先完成一个任务。
这个任务就是根据前一区块的一些信息加上新区快的一些信息,生成一个字符串S,选择一个字符串B,与S合并成“BC”,且要求“BC”的哈希映射满足某个条件,比如映射结果的前72位为0。
所以上面的第二步,除了一个个试以外是没有捷径的,而且结果是否满足要求可以快速试出。
举个例子就相当于给你一个银行卡,让你挨个试密码。
那你没有任何办法,只能000000到999999挨个试验,最后虽然能试出来,但也会花费大量时间。
而且你把试出来的结果告诉别人后,别人可以很快验证你的结果是否正确。
但是时间恰好是我们宇宙中最稀缺的资源。
因此可以调节这个难度,比如使得系统中所有平均每二十分钟才会有一台设备完成要求的任务,猜出符合要求的字符串B。
如此一来,撞车的概率就会大大降低。补充一句,这个难度是不断调节的,以适应硬件算力的提升。
虽然概率大大降低,但仍然无法排除存在撞车的概率。因此,区块链验证中最核心的思想就是——相信最长的区块链。
也就是在原有的到区块链N的情况后,短时间内出现了两个不同的区块,这个时候,我们需要做的只有一件事情,那就是等待。
因为同时产生区块的小概率事件,总不可能连续发生。
所以如果有人想对区块链造假,那么他就需要一直抢先生成假的新区块,并广播出去。
这就要求造假者生产新区块的速度,要快于系统中的其他所有用户的生成能力之和。
换句话说,造假者需要用户有和其他用户算力之和匹敌的算力。
假设这个造假者拥有系统总算力的百分之八十,而剩下用户拥有百分之二十……
所以……这个假设显然不可能。如此一来,在造假者广播了一个假的区块后,就有百分之八十的概率先于其他用户生成新区块,然后连在自己之前生成的假区块后,此时造假才有可能成功。
但实际是,每个用户用的算力相比系统总算力都是微不足道的。
这就使得造假变得不可能,也使得造假的成本变得无法接受。
系统为了鼓励大家生成新的区块,于是在开始时就定下规则:每当一个新区块加入主链,这个区块的发行者就会被赠与50个BTC;然后每二十一万个区块后,奖励额度缩水一半;这也就解释了,为什么比特币上限不算多了。
因为这个机制牢牢限制死了比特币的总量,使得比特币不可能超发,滥发。
请收藏本站:https://www.bokan9.cc。博看小说网手机版:https://m.bokan9.cc
那可不快乐吗?
因为叶欢欢和叶关关此刻在游乐园里面玩耍着呢。
曹庆阳:晨儿,问你个事情哈,现在区域链创业靠不靠谱啊?
叶新晨:你问这个做啥啊?你好好的当你的部长不好吗?问这些干什么?
叶新晨坐在凳子上,就收到了来自曹庆阳给他发的消息。
看着这个消息,叶新晨也是笑了笑,没有想到曹庆阳也会问这个问题,因为区域链对于叶新晨来说现在并不陌生。
他身边也有一些朋友在玩区块链,所以区块链在他看来全是杀猪盘。
不过一般情况下,曹庆阳也不会问的,所以叶新晨也是继续的发了一句。
叶新晨:怎么了?
曹庆阳:是我一个发小问我的,金融圈的,他今天我也不知道为什么会来找上我,就是说想问问的,毕竟我现在混这么厉害了,问我他放心,所以他才过来问我区域链能不能创业,不过……他自己说区块链应该可以赚大钱。
叶新晨也是笑了笑,这是什么鬼哦,区块链能够赚大钱?
怕不是在想屁吃哦。
叶新晨真的觉得这些人啊,想钱是想疯了吗?
不过,毕竟是曹庆阳的发小,那叶新晨还是回复:区块链靠不靠谱我不知道,但我知道他们肯定对区块链有着严重的误解。
因为区块链是对以往中心式记账体系的颠覆,也就是实现了去中心化。
这个概念最早在比特币之父中本聪在2008年发表的论文Bitcoin:APeer-to-PeerElectronicCashSystem(比特币:一种对等网络电子现金系统)里提出的。
所以想了解区块链,还得必须了解比特币。
而什么是区块链呢,这个的确是挺不好说的,但是可以简单的说,就是比如大家有一个公共账本。
假如你现在在上大学,你们寝室是标准的四人寝,除了你之外还有小王,小黄和小白三个室友。
平时你们内部的活动很多,于是经常会有人垫付饭钱,车费,还有水电费。
但是你们大家发现,如果每次消费后,都要一一计算交结非常麻烦,于是你们决定采用记账的方案。
于是乎,你们买了一个公共的账本,本次产生消费后,就由付钱的人在账本上记清楚,谁应付给自己相应的金额。
如此一来,只要每月月末统一结算即可,大大节省了时间精力。
但是时间一长,你们发现在纸上记账还是麻烦。于是你们决定升级这个账本,改成在电脑种建立一个excel表格,但问题是,如果你们寝室里有个人不厚道,偷偷修改账本怎么办呢?
例如小王把自己要付钱记在了小白头上。如果这个问题不能得以解决,那这个账本的信用就将会大大折扣。
所以,这个区块链采用的解决方案就是,给四个人每人都配备一个账本。需要记录时,就由对应的操作人高喊交易内容,广播给寝室里的所有人。
例如,小王高喊,“小王需要支付给小白三十元。”
然后寝室里其他人听到了,就在各自的小本本上记下——小王需要支付给小白三十元。
如此一来,就算小王故意使坏,把自己要付的钱记在别人身上,那也只能是篡改自己的账本。
这样到月底时,小王的账本和其余三个人对应不上,便能知道小王的账本有问题。
但这个系统仍然存在一个问题,那就是如果小王恶作剧,不负责任的乱喊“小白需要支付给小王一百元”。如此一来,很可能会有不明真相的舍友记录下来。
因此,分布式的账本还由一个急需解决的问题,如何确认收到的一笔交易记录是否有效?
所以这个问题在纸质帐本里很好解决,那就是在每一条记录后,由需付款的一方加上自己的手写签名,以示自己认可这笔记录。
这个思路换到计算机中就是数字签名,所以我们要求每一笔记录后面,都要由需付款的一方加上自己的数字签名。
数字签名在这里就不具体解释了,大家只需要知道,帐本系统里的任何人都可以验证数字签名是否正确可信。
但是上面这个账本还存在一些问题,使得只适合小范围使用,如果扩大到更大的范围,比如整个学校使用,这个时候交易量和用户数剧增,记录就会变得非常麻烦。
所以这个时候就有了比特币,啥意思呢,就是比特币正式为了解决这个问题而对前面介绍的账本系统的改进。
一个改进就是我们之前用的账本里面的交易单位是人民币,但在比特币系统中,我们的交易单位变为比特币。
另一个改进就是之前的账本我们约好是月底结账,而现在我们把交易单位改成了虚拟的比特币,交易也由月底统一交割改为事实交割。
而比特币就像是账本上的数字,随时都可以视大家的意见进行套现,即在现实中交割。
如此一来,我们就需要确保每个人的账户里有足够的比特币进行交易。也就是确定任何一笔交易的前提就是付款方的比特币账户中有足够的比特币用于支付。
传统银行系统中,银行会记录储户的账余额,判断储户是否能够进行转载。
这个很好理解,我在网银里操错向某账户转账一个亿,但我账户里显然没有这么多钱,因此银行系统会认定交易失败。
但比特币系统并没有一个“银行式”的权威中心,所以不能像银行这种操作方式。
比特币的解决方案是,每笔交易不以余额为基础,而是以以前的交易为基础。
比如,“小王支付给小黄50BTC”的前提是自己曾经收到过多余50BTC。因此小王的交易记录需要包含自己之前的交易信息,举个例子:
小白支付给小王40BTC
你支付给小王20BTC
小王支付给小黄50BTC
我们忽略比特币的源头,及它是如何产生的事,先继续往下看。
这个时候小王需要广播的交易信息就是:
谷/span之前交易小白支付给小王60BTC,你支付给小王60BTC。
当前交易小白支付给小黄20BTC,你支付给小黄10BTC,你支付给小黄10BTC。
这里说一句,“你支付给小王20BTC”中的20BTC是一个整体,无法分割,因此无法只从中拿出10BTC交易。
还有最后一个改进就是不留证明,改留比特币账号。就是用户A并不用留下自己的名字,而是用一个字符串来代表自己进行交易,同理,用户B和C也是如此,只留下了一个字符串。
所以你们室友在帐本里都不写名字,而是写下跟各自对应的字符串,即比特币账户。
虽然对于你们四个人的寝室这纯属脱裤子放屁,但如果对于规模更大的系统,比如前文提到的整个学校而言,这种操作可以极大提升隐私性。
我们只能知道每个账户,而无法知道谁拥有这个账户,这就保证了隐私性。
而区块链呢,就是从这一节开始进入正题。
前面我们提到了这个账本是分布式存储的,每个人都有一个自己独立管理的账本。
当这个账本系统变得很大时,一致性问题就必须要考虑。
比如,如果你有室友在交易记录发布时不在寝室,那么他就错了这次消息,使得这次消息不会出现在他的帐本里。
换回比特币系统,也就是部分电脑可能处于关机或者未联网状态,会错过部分交易。
此外,还可能会有黑客入侵部分电脑,篡改交易记录。
此外,还有一个更严重的问题就是,实际网络拓扑非常复杂,链路质量的随机性很大。
因此,如果用户A(假设账户里有10BTC)连续广播两条相互矛盾的消息,比如:
交易信息1:用户A支付10BTC给B。
交易信息2:用户A支付10BTC给C。
有的读者应该会觉得,那我们就采信先收到的交易信息1,忽略与之矛盾的脚印信息2不就行了。
但问题是,因为网络链路的复杂性,所以很可能存在部分用户先收到交易信息1,又有部分用户先收到交易信息2。如果依靠先后顺序辨别有效性,那么就会存在不同用户记录的交易信息不一致。
所以为了解决这个问题,中本聪才提出了区块链的概念。
每个用户如果愿意,都可以整理自己从网络中接收到的交易信息,然后检查其是否合理,也就是每笔交易是否由足够余,然后数字签名是否正确后,再将交易记录打包成一个区块。
因此每个交易记录都是以区块的形式存储,然后再广播到系统中的其他用户中。
而区块之间相互连接,形成一条由系统内全体用户共同维护的区块链。
因此其他用户收到广播的区块时,就会把这个区块加到自己维护的账本,也就是区块链的尾部。
但如果只是这样,并没有解决任何问题。互联网节点遍布全球,广播过程也需要时间,因此肯定会存在不同节点收到不同区块存储的问题。
所以如此一来这个网络就乱套了。
而为了降低传播时间的影响,一个简单粗暴的方式就是从系统设计中就限制区块生成的速度。
所以比特币系统的核心思想采就是用算力限制区块的生成速度。
比特币系统要求,每个用户在发布新区块前,必须先完成一个任务。
这个任务就是根据前一区块的一些信息加上新区快的一些信息,生成一个字符串S,选择一个字符串B,与S合并成“BC”,且要求“BC”的哈希映射满足某个条件,比如映射结果的前72位为0。
所以上面的第二步,除了一个个试以外是没有捷径的,而且结果是否满足要求可以快速试出。
举个例子就相当于给你一个银行卡,让你挨个试密码。
那你没有任何办法,只能000000到999999挨个试验,最后虽然能试出来,但也会花费大量时间。
而且你把试出来的结果告诉别人后,别人可以很快验证你的结果是否正确。
但是时间恰好是我们宇宙中最稀缺的资源。
因此可以调节这个难度,比如使得系统中所有平均每二十分钟才会有一台设备完成要求的任务,猜出符合要求的字符串B。
如此一来,撞车的概率就会大大降低。补充一句,这个难度是不断调节的,以适应硬件算力的提升。
虽然概率大大降低,但仍然无法排除存在撞车的概率。因此,区块链验证中最核心的思想就是——相信最长的区块链。
也就是在原有的到区块链N的情况后,短时间内出现了两个不同的区块,这个时候,我们需要做的只有一件事情,那就是等待。
因为同时产生区块的小概率事件,总不可能连续发生。
所以如果有人想对区块链造假,那么他就需要一直抢先生成假的新区块,并广播出去。
这就要求造假者生产新区块的速度,要快于系统中的其他所有用户的生成能力之和。
换句话说,造假者需要用户有和其他用户算力之和匹敌的算力。
假设这个造假者拥有系统总算力的百分之八十,而剩下用户拥有百分之二十……
所以……这个假设显然不可能。如此一来,在造假者广播了一个假的区块后,就有百分之八十的概率先于其他用户生成新区块,然后连在自己之前生成的假区块后,此时造假才有可能成功。
但实际是,每个用户用的算力相比系统总算力都是微不足道的。
这就使得造假变得不可能,也使得造假的成本变得无法接受。
系统为了鼓励大家生成新的区块,于是在开始时就定下规则:每当一个新区块加入主链,这个区块的发行者就会被赠与50个BTC;然后每二十一万个区块后,奖励额度缩水一半;这也就解释了,为什么比特币上限不算多了。
因为这个机制牢牢限制死了比特币的总量,使得比特币不可能超发,滥发。
请收藏本站:https://www.bokan9.cc。博看小说网手机版:https://m.bokan9.cc