什么是区块链
本质上说,区块链是一个公开的去中心化公共可信数据库(大多数情况下可信。
与传统数据库不同的是,在于存储数据的方式。传统做法是将数据存储在后端,也就是数据库中;但是对于区块链而言,它使用区块作为单位来存储数据。区块与区块之间串联,类似于链表的结构。区块链数据存储于全世界若干个节点中,这些节点采用 P2P
的形式进行通讯,节点之间可以相互验证数据正确性,并提供查询和改写的入口。
数据由用户以交易(Transaction)的形式提交至区块链节点,支付费用让矿工将用户提交的数据打包至区块中,所有节点通过一定的共识算法去确认上传的数据是否正确,正确即成功,然后写入区块中,并同步给所有区块。
读取数据通过回溯区块链所有交易,或基于当前的缓存,返回给用户。
上面提到了 “矿工” 一词,这个名词很熟悉,之前很火爆的挖矿,每个挖矿的人就是一个矿工。为什么需要 “矿工”?这是因为需要对用户提交的数据,进行一系列的复杂计算,如果计算出的结果达到了一定标准,那么这个数据就是代表可以被写入区块的。正是因为需要复杂计算,所以跑的机子配置越高,越容易很快地计算出符合标准的结果,越早的拿到权限进行打包,以此来获得收益。
区块链中所有的数据都是可信的,其基于现代密码学,不可轻易篡改已经存在的数据。并且当前状态可以通过回溯所有历史记录来确认,正是因为可以通过历史记录来确认,所以佐证了数据是可信的。
区块链网络
一个链,由若干个运行在全世界的节点(Node)构成。
彼此之间相互广播数据,同时通过共识算法,在自身验证数据,并判断其正确性。不正确的数据不会被承认。
用户与区块链网络的交互,将以节点作为入口。
区块链模型
区块链模型主要包含以下几项:
- 账户
- 交易
- 区块
- 矿工
- 代币
- 内存池
- 智能合约
账户
账户是进行区块链活动的最基本单位之一。几乎所有的公链,都有账户模型的设计。
区块链上的资产都由账户持有,交易也由账户发起。
区块链中的账户可以被人类所拥有,也可以是没有人拥有,如智能合约。
一个区块链账户,由一对公钥和私钥产生。大部分情况使用公钥代表链上地址。
如果你持有该账户的私钥,就说明你掌握了这个地址的所有权,可以对这个地址进行任何操作,因此,泄漏自己的私钥是非常危险的!
代币
虚拟货币,是区块链派生的应用之一。在区块链中,我们也可以管虚拟货币叫做代币。
链上代币主要有两种:
- 原生代币
- 协议代币 (通过智能合约来实现的虚拟货币,ERC20 & ERC721)
常见的公链
有三大类:
- 比特币家族
- 比特币
- 莱特链 …
- EVM家族(由一个虚拟机来运行智能合约,这个虚拟机称为EVM)
- 以太坊
- 马蹄链
- 币安 …
- 其他
- Solana
- SUI
- APTOS …
智能合约
智能合约是部署在区块链上的程序,可以被用户发起交易来调用。开发者可以自己编写智能合约,部署智能合约。通过智能合约,将数据保存在链上,同时可以调用智能合约来读取数据。
所以可以将 “智能合约” 视为后端程序,而公链则可以看作是服务器。
区块链钱包
用户通过使用区块链钱包作为与区块链交互的入口。
推荐安装的区块链钱包(谷歌浏览器可直接以插件的形式安装以下钱包):
- Metamask(只适用于EVM链)
- OKX Web3 Wallet(full-chain)
区块链的运行
一个链的运行,主要有以下几个步骤:
- 用户发起交易,并携带一个签名,暂存到内存池
- 矿工根据链规则,获取打包机会
- 矿工在内存池中检索并提取,在区块大小限制内,提供小费最多的交易,小费决定了矿工的收益
- 矿工验证交易的合法性(解密用户发起交易时携带的签名,利用公钥和私钥
- 矿工将交易打包至区块内,广播同步到整个网络
- 开启下一轮循环♻️
因此,出块的速度和块的大小决定了一个链的 TPS
(每秒交易处理能力),在网络拥堵时提供更多的小费,可以让交易更快地被网络确认(也即是被算力高的矿工发现并提取
区块链浏览器
区块链浏览器不是一个浏览器,而是一个网页,用来展示和查找链上所有的数据。