欢迎大家来到IT世界,在知识的湖畔探索吧!
有一种常见的观点,要发展区块链技术,不要炒币。所以我们有必要了解一下区块链的技术有哪些。
欢迎大家来到IT世界,在知识的湖畔探索吧!
上图几乎构成了数据块链(原译为区块链)的技术部分。据传,三点钟群如果谈论技术的话,会被踢出群的,这就暴露了大佬们在技术上的虚弱。
这些技术在数据块链这里都是它的底层技术,是数据块链的组成部分,组件。我们可以用不同的共识机制、不同的加密算法、不同的虚拟机、不同的合约语言、不同的报文摘要来实现不同特性和针对不同应用场景的数据块链。这就像内存管理、进程调度是操作系统的技术,用不同的技术去实现出不同的操作系统,比如计算机常用的Linux、Windows、MacOS,或者是手机常用的安卓和iOS或者华为的鸿蒙。
至于数据块链的应用,其实不是数据块链的技术,仅仅是应用。 就像做个信息管理系统MIS,和搞数据库技术是两回事。做安卓上的APP开发,和做安卓操作系统是两回事。
这些技术重不重要,重要。 但技术的投入,最后是要在应用中体现价值,才有产出,才有人愿意投基础技术。有人用,才有价值,比如华为鸿蒙操作系统的问题,主要是还没有生态,就是还没有什么开发者。单纯地说发展数据块链技术,就像只搞鸿蒙操作系统,但又找不到好的应用场景一样。换句话说,就是先要有下游的应用,上游自然就会兴旺起来。
更好的提法是“既要大力发展数据块链技术,更要加快推进数据块链应用的落地”。
接着,我们来说说数据块链的鼻祖比特币用到的计算机技术:
1.1929年的逆波兰表达式
2.1970年的布隆过滤器bloom filter
3.1989年的默克尔merkle树
4.1999年的椭圆曲线数字签名算法
5.2000年的p2p网络
6.2001年的sha-256
7.2009年的blockchain(首创)
今年接近90岁的逆波兰表达式构成了比特币的加锁和解锁脚本的栈式执行。比特币的加锁和解锁脚本使得比特币可以支持非常灵活和多样的交易形式,保证交易(bond transaction),返还交易(refund transaction),担保交易,多重签名等。
70后的布隆过滤器(bloom filter)来了,Bloom filter可以在一个有很多元素的集合中高效判断元素是否属于该集合,元素属于该集合的不会误判,元素不属于该集合的会有小概率误判。比特币的轻钱包需要用瘦客户端模式实现的钱包,因为不存储完整数据块链,就涉及到如何获取UTXO的问题。比特币就是用布隆过滤器(Bloom filter)在快速检索并返回相关数据的节点
80后的默克尔merkle树可以高效地比对大文件在传输过程中是否有出错或改动,同时还能高效地定位出大文件是哪一个的片段出错了,从而只要重新更新该片段即可。比特币用merkle树来将块中的所有交易作为树的叶节点,来实现块的交易数据的准确高效传输,并把merkle树根作为block header的主要数据。
90后的椭圆曲线数字签名算法正式出场了。所有发行出来的比特币都体现为未花费的交易输出UTXO,也就是目前大约是1640万枚的比特币,是呆在一堆UTXO里。那么这些UTXO理论上是无主的,每个UTXO有一个加密脚本,只要谁有办法解开,谁就可以使用这个UTXO里的比特币。一般地说,大部分的加密用公钥加密,用对应的私钥来解密。由于椭圆曲线计算的非对称性,即求乘积很容易,但求除法很困难,换成加解密的角度来说,就是知道私钥,容易算出公钥,但知道公钥,是算不出来私钥的。这样客观上保证了即使UTXO是公开的,也只有私钥持有者可以使用。
00后的p2p网络重磅登场。其实这个虽然很多人不一定深入了解它的原理,但多数人又都用过。多数人是用过BT或迅雷来下载过文件,它的背后就是p2p的网络。这一技术的发明是为了解决中心化的服务器要不断地扩容才能满足越来越多的用户请求,而且用户越多,系统越慢。p2p由于是peer2peer的,也就是下载的文件来自于全球分散的电脑里,而不是中心化的服务器,这样极大的避免了中心化的服务器的拥堵。而且,用户越多,提供下载的节点也就越多,是一个正向的反馈激励。比特币也是应用p2p网络来进行分布式计算的。每个全节点都要将广播接收来的交易校验、打包成块,并广播出去,将广播接收来的打包好的块检验后记录下来,并在其后进行新的打包成块。p2p网络也是数据块链技术中最为重要的一个篇章。
sha-256等报文摘要哈希(hash)函数是为了对数据进行摘要处理,从而发现原始数据是否有被修改,哪怕是非常细微的修改。同时,hash值又可以用来做key value数据库的key,这样查询就可以非常快。比特币采用工作量证明POW(Proof of Work)作为共识算法,又把随机数加块头的一些数据来计算满足难度的双sha-256结果的计算当作工作量。POW有效地避免了公开的交易账本被修改的风险,因为要想修改,也需要足够的算力去重新计算,因为每个块都需要足够的工作量,也就是时间,所以尝试修改的人是难于在落后其他人的情况下追上其他人的。
最后是非常狭义角度的数据块链。狭义是在于数据块链本来只是一种数据结构,也就是最常规的链表结构,每个节点(block)都有一个指针指向前一个节点(block),由于这里采用的是块头block header的数据生成的hash来作为指针,也就天然的让任何一个块的修改,都需要这个块后面的指针全部重新计算。
我们现在习惯的数据块链技术实际是以上技术集成的总称。可以这样来定义:数据块链(Blockchain)是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案。该技术方案让参与系统中的任意多个节点,把一段时间系统内全部信息交流的数据,通过密码学算法计算和记录到一个数据块(block),并且生成该数据块的指纹用于链接(chain)下个数据块和校验,系统所有参与节点来共同认定记录是否为真。
有了比特币开创的数据块链技术和第一个实际应用,我们就容易理解其它数据块链应用是怎么回事了。首先呢,p2p是必不可少的,是数据块链应用用来实现分布式计算的网络基础,其次要有数字签名,目前肯定是非对称加密,一般而言也会用椭圆曲线,因为这是目前最难被激活成功教程的,再就是要报文摘要hash函数。merkle树及其变种也是主要的利器。
以太坊主要是针对比特币的脚本系统进行扩展,用虚拟机VM去替代栈式计算,用仿javascript的solidity来替代脚本语言作为智能合约的语言,以准图灵完备来代替比特币的非图灵完备。用merkle patricia树来替代merkle树。就被追捧和成为了数据块链2.0. vitalik更是由此封神,并拥有价值300亿美元的eth。
从这些基础的技术展开思考,我们还可以看到采用p2p来搭建系统从技术层面上带来类似用RAID替代高可用硬盘的效果,就是可以用很low的计算机来实现高可用HA(High Availability),从而达到计算成本的降低。推而广之,就是可以不用IaaS层就可以直接开干SaaS,直接构建应用,这样就大大摆脱了对AWS和阿里云的依赖。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/111155.html