文章

Web3入门

Web3

Web3学习日记

Web3

什么是区块链

本质上说,区块链是一个公开的去中心化公共可信数据库(大多数情况下可信。

与传统数据库不同的是,在于存储数据的方式。传统做法是将数据存储在后端,也就是数据库中;但是对于区块链而言,它使用区块作为单位来存储数据。区块与区块之间串联,类似于链表的结构。区块链数据存储于全世界若干个节点中,这些节点采用 P2P 的形式进行通讯,节点之间可以相互验证数据正确性,并提供查询和改写的入口

数据由用户以交易(Transaction)的形式提交至区块链节点,支付费用让矿工将用户提交的数据打包至区块中,所有节点通过一定的共识算法去确认上传的数据是否正确,正确即成功,然后写入区块中,并同步给所有区块。

读取数据通过回溯区块链所有交易,或基于当前的缓存,返回给用户。

上面提到了 “矿工” 一词,这个名词很熟悉,之前很火爆的挖矿,每个挖矿的人就是一个矿工。为什么需要 “矿工”?这是因为需要对用户提交的数据,进行一系列的复杂计算,如果计算出的结果达到了一定标准,那么这个数据就是代表可以被写入区块的。正是因为需要复杂计算,所以跑的机子配置越高,越容易很快地计算出符合标准的结果,越早的拿到权限进行打包,以此来获得收益。

区块链中所有的数据都是可信的,其基于现代密码学,不可轻易篡改已经存在的数据。并且当前状态可以通过回溯所有历史记录来确认,正是因为可以通过历史记录来确认,所以佐证了数据是可信的。

区块链网络

一个链,由若干个运行在全世界的节点(Node)构成。

image-20240912161614964

彼此之间相互广播数据,同时通过共识算法,在自身验证数据,并判断其正确性。不正确的数据不会被承认。

用户与区块链网络的交互,将以节点作为入口

区块链模型

区块链模型主要包含以下几项:

  • 账户
  • 交易
  • 区块
  • 矿工
  • 代币
  • 内存池
  • 智能合约

账户

账户是进行区块链活动的最基本单位之一。几乎所有的公链,都有账户模型的设计。

区块链上的资产都由账户持有,交易也由账户发起。

区块链中的账户可以被人类所拥有,也可以是没有人拥有,如智能合约。

一个区块链账户,由一对公钥和私钥产生。大部分情况使用公钥代表链上地址

如果你持有该账户的私钥,就说明你掌握了这个地址的所有权,可以对这个地址进行任何操作,因此,泄漏自己的私钥是非常危险的!

代币

虚拟货币,是区块链派生的应用之一。在区块链中,我们也可以管虚拟货币叫做代币

链上代币主要有两种:

  • 原生代币
  • 协议代币 (通过智能合约来实现的虚拟货币,ERC20 & ERC721)

常见的公链

有三大类:

  • 比特币家族
    • 比特币
    • 莱特链 …
  • EVM家族(由一个虚拟机来运行智能合约,这个虚拟机称为EVM)
    • 以太坊
    • 马蹄链
    • 币安 …
  • 其他
    • Solana
    • SUI
    • APTOS …

智能合约

智能合约是部署在区块链上的程序,可以被用户发起交易来调用。开发者可以自己编写智能合约,部署智能合约。通过智能合约,将数据保存在链上,同时可以调用智能合约来读取数据。

所以可以将 “智能合约” 视为后端程序,而公链则可以看作是服务器

区块链钱包

用户通过使用区块链钱包作为与区块链交互的入口。

推荐安装的区块链钱包(谷歌浏览器可直接以插件的形式安装以下钱包):

  • Metamask(只适用于EVM链)
  • OKX Web3 Wallet(full-chain)

区块链的运行

一个链的运行,主要有以下几个步骤:

  • 用户发起交易,并携带一个签名,暂存到内存池
  • 矿工根据链规则,获取打包机会
  • 矿工在内存池中检索并提取,在区块大小限制内,提供小费最多的交易,小费决定了矿工的收益
  • 矿工验证交易的合法性(解密用户发起交易时携带的签名,利用公钥和私钥
  • 矿工将交易打包至区块内,广播同步到整个网络
  • 开启下一轮循环♻️

因此,出块的速度块的大小决定了一个链的 TPS (每秒交易处理能力),在网络拥堵时提供更多的小费,可以让交易更快地被网络确认(也即是被算力高的矿工发现并提取

区块链浏览器

区块链浏览器不是一个浏览器,而是一个网页,用来展示和查找链上所有的数据。

image-20240912165013598