本文同步在个人博客shymean.com上,欢迎关注

区块链和数字钱银现已出来不少年头了,故意一向没有去了解相关的概念和原理。

最近在看一本小说,里边有个设定说到:数字钱银实际上更适合作为人工智能之间的买卖体系。

跟着2023年AIGC的迸发,这个设定形似有点意思,因而我决定来了解一下区块链和数字钱银相关的概念。

数字钱银

区块链区块链最初是为了支撑加密钱银(比特币)而规划的,因而要了解区块链技能,需求先了解数字钱银。

在最前期的人类社会中,贸易是以物易物的方法进行的,比方两斤果子换一只鸡。

跟着物质和贸易发展,以物换物就比较麻烦了。比方现在A有两斤果子,B有一只鸡,C有一只鸭。A想要换鸡,可是B不想要果子,而是想要鸭子,C想要果子而不想要鸡,为了解决这个死循环,需求经过一种”中介“来替代产品进行交互,这便是”钱银“的由来。

钱银也经过了许多次的发展,从远古的贝壳到金属钱银,再到纸币。不管钱银是由哪种媒介来代表,都需求确保我们对钱银价值的认可,也便是钱银能够换到实在的产品。

实体钱银存在丢掉、假钞、找零等问题,如今电子支付十分流行,我们也很少在运用纸币,但电子钱银本质上还是纸币,是由中央银行发行的,其价值也由中央银行这种有威望的信任组织来确保。

比方现在A向B转账100元,假如只是口头上说了一下,B显然是不能拿到这个”口头“上的100元去商铺买到东西的。要到达这个转账的意图,需求从A账户上削减100元,B账号上添加100元,这个买卖需求经过银行体系,依靠专业人员。这个时分,B去商铺买东西,商铺从B的账户上再划走相应的金额,也需求走银行体系。

在这个过程中,A、B和商铺,都需求相信银行,不会篡改账户。

有没有一种在只需求买卖两边就能够完结的、没有假钞、一起能够被运用该钱银的其他人认可的买卖体系呢?

数字钱银便是这样的一个概念,旨在创立契合上述条件的买卖体系。

点对点买卖

没有中介的买卖,能够成为买卖两边的点对点买卖。关于点对点这个名词,更常见的是出现在点对点网络中。

点对点网络(peer-to-peer, 简称P2P),又称对等式网络,是无中心服务器、依靠用户群(peers)交换信息的互联网体系,它的效果在于,减低以往网路传输中的节点,以下降材料丢掉的风险。

点对点网络的一个重要的目标便是让一切的客户端都能提供资源,包括带宽,存储空间和核算才干。网络中的每个参加者(节点)在网络中对等,即具有相同的位置和功用,跟传统的客户端-服务端模型有很大差异。

那么,点对点买卖又是怎么进行的呢?

在数字钱银的买卖中,买卖的账户能够看做是一个特别的银行卡,公钥就相当于银行卡号,而私钥相当于银行卡暗码,这个银行卡的特别之处在于一个暗码对应一个卡号,因而不能修正暗码,也便是不能忘记或者讲将钥露出给别人。

回顾一下非对称加密,公钥和私钥都能够用来加密和互相解密,其中,

  • 私钥的加密被称为签名,签名能够被公钥解密用于验证
  • 公钥的加密被成为加密,加密后的数据能够被私钥解密,取得原始内容

在数字钱银买卖时,

  • 首先,由买卖发起方宣布一个转账声明,这个声明的内容运用买卖方自己的私钥进行了签名。
  • 然后将买卖内容、签名和买卖方的公钥、以及一些买卖手续费,经过播送发送到P2P网络的节点中,这样网络中的一切节点都能够用公钥和买卖内容查看签名、验证账户余额等
  • 基于某些机制,这笔买卖验证经过之后,会被同步到一切节点,买卖生效,买卖方和接收方的余额也会被整个网络供认。

因为私钥只要买卖方自己知道,

  • 经过私钥签名,能够防止买卖声明被其他人进行更改;
  • 而只需签名验证经过,就能够以为转账完结,买卖发起方也无法狡赖了

假如私钥忘记了,相当于账号就丢掉了,里边的数字钱银就再也找不回来了。

不行篡改的区块

区块(Block)是保存买卖记载的根本数据结构单元,包含某些时刻段内的买卖信息,以及一些其他的元数据。

怎么确保现已供认的买卖记载不会被任何一个节点篡改呢?这就需求用到链表。

能够把每个区块想象成某个单链表中的一个节点,每个区块包含了

  • 必定时刻内的买卖信息,
  • 前一个区块的哈希值。
  • 依据上两个内容生成自己的哈希值

回顾一下哈希算法,这是一种将恣意长度的输入数据转换成固定长度哈希值(散列值)的算法,不同的输入数据应该生成不同的哈希值(即使是很微小的改动),一起从哈希值无法复原原始数据。

因而,假如该区块内容进行了修正,它的内容哈希值就会修正,这会影响后续的一切区块。

比方 A->B->C->D这个链路中,修正了B的内容,则B后边一切的区块(包括C、D)的哈希值都会被修正。

假如要假造某个区块,就需求将后续一切的区块都进行假造,这需求耗费许多的算力。

区块链十分强调区中心化,算力涣散在单个节点上,假造区块的成本十分高,因而这是很长难到达的,也就打到了买卖信息”不行篡改“的意图。

创立新区块

上面说到,P2P网络中的一切买卖信息,都保存在区块上面。那么,区块是由谁发生的呢?

P2P网络的节点都能够参加创立新区块,因为每创立一个新的区块,

  • 会得到一笔数字钱银的奖赏
  • 区块内保存的买卖记载由在创立区块的时分由节点挑选,为了确保买卖打包进区块,这些买卖往往会提供一些手续费

借助这个激励机制,有许多的节点会参加进入这个过程,这类节点被称为”矿工“,他们在不停地进行核算,测验生成新的区块。

具体来说,

  • 矿工节点在收到播送过来的买卖信息后,会放在自己的买卖池里边,

  • 每个区块能够保存的买卖内容是有上限的,因而矿公共从买卖池中挑选一些尚未被供认的买卖记载,(通常会挑选买卖手续费较高的那些买卖

  • 然后为这些买卖结构一个候选区块,然后不断测验核算这个区块的哈希(这个过程需求耗费许多的核算),直到核算出一个特定的哈希值,候选区块就被以为是有效的

  • 新发生的区块被播送到全网,一切节点更新自己的账本到最新高度。买卖正式被供认

  • 其他正在核算中的节点会抛弃自己的候选区块,转而核算下一块,本次候选区块里边被挑选的买卖记载,会回到买卖池等候重新打包

为什么某个矿工节点创立出来的新区块,会被其他节点供认呢?

区块链网络经过一致机制,例如工作量证明(Proof of Work)或权益证明(Proof of Stake),确保在没有中心威望的情况下,节点对于数据的修正和添加达成一致。

工作量证明

现在来具体阐明一下核算候选区块的过程:整个网络会设定一个动态的难度值,节点会依据区块内容,加上一个随机数nonce,这样会生成一个随机的哈希值,假如这个哈希值契合某些特定的要求(比方哈希值前N位都是0),一起随机数nonce小于设定的难度值,就以为得到效果了。

动态难度值的意图是确保区块的产出时刻是固定的(大约是每10分钟发生一个),假如区块发生时刻少于10分钟,阐明全网算力添加,需求调大难度;大于10分钟则反之。

因而,算力值也代表了挖出新区块的概率,而挖出一个新区块则代表收获了数字钱银

  • 每发生一个新区块都能够取得数字钱银(因为数字钱银设定的发行数量上线,这个收益每四年减半,跟着时刻消逝会逐步趋近0
  • 区块内打包的每一笔买卖记载,会得到一部分买卖提供的手续费

上述的内容便是区块链的Proof of Work机制。

从区块链的技能原理上,P2P节点、单纯依据区块内容生成哈希等机制,现已让数据很难被篡改了,为什么在出产新区块这儿,还需求耗费如此多的算力,来依据契合条件的随机哈希找到一个随机数呢?

因为单纯只依据区块内容哈希无法完成这个意图,针对固定内容,算力越高的机器,肯定越简单、越迅速地生成哈希值,这样,就无法到达去中心化的意图。

因而,PoW机制是便是为了让单个节点即使有强壮算力也难以彻底操控区块链,一个有强壮算力的节点,假如想要修正区块效果,就必须超过全网大都节点一起核算的效果速度,否则更慢的篡改链将被网络抛弃。

假如某个节点操控了区块链网络总算力的51%或以上,则事实上能够对区块内容进行修正或回滚。这被称为51%攻击

  • 自行生成区块,并比正常速度快,称为”算力分配“。
  • 生成一个区块,不将其公布出去,暗里进行双重支出。
  • 强行颠覆之前的某些买卖,修正账本前史。

为了防止51%攻击,区块链体系在规划时十分强调去中心化,经过算力涣散同享的模式,下降单个节点直接操控网络的或许。

这也是为什么会有新区块经济激励机制的原因:让许多节点参加进来,防止单个节点垄断算力。理论上,算力很低的节点,也是有或许更快地核算出新区块的哈希值,只是算力越大的机器概率越高罢了。

资源糟蹋

读到这儿,能够看出,工作量证明会糟蹋许多的资源

  • 假如不考虑单节点操控网络,重复的随机数核算是纯粹的糟蹋,而核算出来的随机哈希值并没有其他任何效果(比较于去参加科学核算、数学核算等)
  • 为了获取新区块发生的收益,许多高算力设备会投入进来进行核算,糟蹋许多的电力
  • 算力添加,而区块的发生速度因为动态难度值的存在并不会改变,算力的投入只会添加单节点的收益概率,对整个网络而言没有任何意义,感觉便是”卷“

因为新区块激励机制,为了获取数字钱银,有许多矿工节点会投入许多的硬件、电力资源来进行工作量证明,而得到的收益只要数字钱银,并没有其他对社会有效的产品产出,这也是为什么国家会规定:”虚拟钱银“、”挖矿“等归于落后产业

此外,因为每个节点都保存完好的数据备份,而大大都的买卖数据对自己而言都是没有意义的,重复保存这些数据感觉也是很冗余的。

小结

现在,大致了解了区块链技能的原理

  • 首先经过区块记载点对点之间的买卖记载
  • 经过区块哈希防止节点数据被篡改
  • 激励机制促进矿工节点有动力去创立新区块,经过工作量证明机制达成新区块一致,防止出现中心节点算力垄断

独立于实际世界的数字钱银是没有任何价值的,一起网络中的数字钱银还需求流转,才干发生新的买卖记载,以及新的区块。

在这个过程中,数字钱银是经过耗费显许多算力产出的,产出的数字钱银是否具有这些算力的价值,每个人或许都有各自不同的看法。

抛开数字钱银不谈,单看区块链技能本身,确实能够到达去中心化、通明的意图,在供应链、收据等其他范畴也有必定的应用场景,这儿就不展开了。