区块链、以太坊、去中心化和web3.0

1.区块链

区块链实质上是一种储存数据的结构。它将数据按时间顺序地按批次进行存储,这些批次就是所谓的“区块”,而链则指的是每一个区块都要引用其父块,一旦某一区块内的数据发生改变,则后续区块的数据都会变化。

2.节点

网络中的计算机都要对区块链的状态达成共识,这些计算机就是节点。

3.以太坊

以太坊就是一条区块链,在以太坊中有一台规范化的计算机Ethereum Virtual Machine,简称EVM,用于对区块链的计算。其状态会得到以太坊网络中的节点的一致同意,每个节点都将保存一份该计算机的状态,任何节点都可以广播请求EVM进行计算,也就是执行代码,当请求被广播以后,所有节点将检查,验证并且执行计算。EVM进行计算后状态发生变化,变化广播到所有节点,所有节点的EVM状态更新。

4.计算请求

计算请求也称之为交易请求;区块链中将储存以太坊虚拟机的所有状态以及交易记录并由所有节点达成一致;任何广播计算请求的人将会向以太网络支付部分以太币以防止垃圾交易或者网络被滥用,这部分以太币被称为Gas fees,根据以太坊的EIP-1559机制,Gas fees的一部分将作为基础费用被销毁,减少代币的供应量,以保证以太币的价值;另一部分则奖励给矿工节点作为小费,这是矿工的主要收入来源之一

5.节点种类

矿工节点、验证者节点和轻节点、全节点:

2022年以太坊机制改革之前,主要是工作量证明机制PoW(Proof of Work)区块的提出主要依赖矿工节点。

矿工节点:一般的非矿工节点主要是验证交易和区块。矿工节点除了前者,的主要任务还包括交易打包到新的区块当中。矿工选择待处理的交易,将其打包为一个候选区块,其中除了交易数据,还包含了上一个区块的哈希和时间戳等等,这些称之为”区块头“。而在区块头中矿工将加入一个字段Nonce,也就是随机数,矿工需要不断地调整随机数使其计算出的哈希使其符合网络规定难度,这个过程也称之为挖矿,可以说挖矿就是在比拼算力。当矿工找到合适的Nonce并且完成打包,新的区块将会形成。另外矿工在挖矿的过程中也会获得挖矿奖励,他和小费一起构成矿工输入的来源。

2022年改革后,变成权益证明机制(Proof of Stake)矿工角色在以太坊中转变为验证者节点:

验证者节点:非验证者节点可以通过委托质押(Dapp或者质押池)或者至少单独质押32个以太币,质押后的节点有概率被选中成为区块提议者,收集待处理交易,构建区块并且进行广播;一般而言,质押的ETH数量越多,被选中的概率就越大。

验证者节点的奖励根据基础奖励乘以不同权重求和再减去离线惩罚来计算,权重包括投票奖励权重、区块提议奖励权重、打包奖励权重等

除此之外,验证者节点的收入还可以来自手续费和MEV(最大可提取价值,通过优化交易排序套利);

全节点和轻节点:

不是所有的网络节点都会完整的储存区块链副本。轻节点仅仅储存区块链的部分信息,主要是区块头。并且通过于全节点交互来验证数据。

6.账户

一个以太坊的账户指的是有以太币余额的实体,账户有两种:

1.外部所有的账户(Externally Owned Account):由任何一个持有账户私钥的人控制

2.合约账户:部署到网络上的智能合约,拥有以太币余额;

7.智能合约

智能合约是一段代码,或者说是以太坊链上的一段程序,个人账户可以跟智能合约进行交互,可以从外部进行调用,调用其中公开函数之类,同时也可以向合约账户进行转账。智能合约是Dapp的核心,与智能合约交互的安全问题是区块链安全的重要组成部分。

以太坊中智能合约通常由solidity语言写成,经过编译后的字节码会部署到区块链上,字节码对所有人可见。

8.app和Dapp

传统的app主要包含C/S和B/S架构:

在C/S架构下:业务逻辑主要储存在客户端软件上,数据则储存在数据库服务器上,用户需要下载诸如桌面应用程序之类的才可使用应用

在B/S架构之下:不依赖桌面应用程序,只需要浏览器即可使用应用;少量的业务逻辑储存在前端,核心业务逻辑储存在业务服务器上,业务服务器再和数据库服务器交互。

Dapp即去中心化应用,D表示dencentralized,核心的不同是在区块链上运行的智能合约。其架构是:

用户在浏览器通过前端发送数据到provider,这个provider是以太坊网络中的一个节点,一般如果自己没有节点,都会采用第三方的节点,比入Alchemy,Infura提供的节点等等,通过节点将用户执行代码的请求通过节点广播,考虑到区块链上的储存成本高昂,Dapp产生的数据经过Provider,采用去中心化储存方案储存在链下,同时,由于执行代码需要消耗比特币作为gas,因此会有signer从浏览器中读取私钥签署交易,一般是metamask;相对于数据的写入,我们使用链下索引解决方案如graph读取数据;由于上述步骤成本比较高昂,因此有诸如L2 scaling的一站式拓展方案。

架构图如下(来自稀土掘金):

dapp架构

除此之外,还补充一点,这点没有在架构图上有所呈现,就是预言机,预言机用于给区块链提供外部的数据,这很重要,因为区块链是封闭的,没法读取链外数据,只能读取链内的,但在一些特殊场景中必须要由链外数据才可以。比如有一个猜奖游戏的Dapp,猜数字,猜对了给奖金,由于区块链上难以产生合格的随机数以保证公平(合约生成随机数主要依赖链上的确定性信息,生成的随机数容易被矿工提前预测;这个具体可以了解一下Ethernaut闯关的CoinFlip,就是写攻击合约对随机数提前预测猜硬币正反面),这时候需要预言机给他链外提供合格的随机数保证猜奖游戏的公平性。

9web2.0和web3.0

web2.0和和web3.0最大的不同在于web3.0是去中心化的,不存在中心服务器运行核心业务代码的情况,而是节点广播请求执行代码;同时,代码自身由于部署在区块链上,考虑到其不可篡改性,web3.0的反单点故障和安全性相对于web2.0有所增强;同时,通过数字身份,通过去中心化分布式储存,用户重新将其数据变为个人财产,数据不再归软件开发者所掌握。但需要指出的是,在代码这部分并非是完全去中心化的,开发者对代码仍然掌握控制权,可以绝对是否开源智能合约的代码,而区块链只能读取字节码。

设想一下,如果存在一个去中心化的抖音,那么可能相对于中心化抖音有如下变化:

1.理论上信息茧房消失:由于用户数据的所有权在用户手中,开发者无法通过收集用户数据并分析其模式的方式推断用户的喜好并以此设计算法推荐视频,可能只能在用户公开的视频中随机选择并且推荐给用户。

2.视频审查机制和评论审查机制变化:人工审查封禁的方式将会消失,只有通过智能合约或者社区投票有可能对视频和评论内容进行审查。但是两者可能面临一些挑战,前者可能难以识别复杂的语义,比如讽刺,隐喻,而后者可能出现恶意团体操纵投票的情况

3.用户无法被封禁:因为数据归于用户所有,私钥在用户手里,因此平台无法封禁用户;

4.数据可以跨平台迁移

5.视频加载速度可能受到去中心化储存节点分布的影响,视频加载速度相对于传统抖音可能会变慢;

6.用户管理责任加重:如果丢失了私钥,那么用户将永久失去账户。

总的来说,要用辩证的眼光来看待web2.0和web3.0的关系。