区块链基础(上)

小白入门:https://github.com/dukedaily/solidity-expert ,欢迎star转发,文末加V入群。

职场进阶: https://dukeweb3.com

讲师介绍

资深web3开发者,前bybit交易所defi团队Tech Lead,MoleDAO技术顾问,国内第一批区块链布道者,专注海外defi,dex,AA钱包等业务方向。

学习收获

  • 区块链入门基础知识:区块链、比特币、以太坊、Hash算法、加密算法、共识机制
  • 钱包相关知识:私钥、地址、钱包分类、cex与dex、钱包未来趋势
  • 智能合约知识:合约简介、部署合约、与合约交互

学习路径

image-20230105125248724

一、区块链概述

1. 区块链

什么是区块链?这本是一个笼统的概念,网上描述的天花乱坠,我这里将其简化为几个小概念,消化了就入门了:

  1. 交易:在区块链世界里面,我们把所有的交互行为(买东西、投票、转账)统称为一个交易(Transaction,简写为Tx)
  2. 区块:在一个特定的时间段内(如10分钟)会产生N笔交易,我们把这些交易打包到一起之后,称之为区块(Block)
  3. 区块链:在更长的一段时间内(如60分钟)会产生很多区块,我们这些区块(Block)以特定的规则链接🔗到一起之后,就称之为区块链(Blockchain)

image-20230105101902121

快速记忆:

  • 交易:需要存储的用户信息 (一封信)
  • 区块:对多个交易打包(一个盒子,里面装了一沓信)
  • 区块链:对多个盒子按照序号关联起来(关联意味着记账)
  • 共识机制:竞争规则(谁来记账)
  • 哈希算法:每个盒子序号的生成以来的算法

哈希算法

hash就是内容的指纹,与内容一一对应,在线演示,hash在区块链中的用途:

  • 将区块前后链接起来
  • 将私钥和地址链接起来:私钥-> 公钥-> 地址
  • 私钥签名
  • 快速校验交易有效性

Hash算法的特点:

  • 唯一性(你的指纹不会变化)
  • 抗碰撞性(没有人和你撞指纹)
  • 不可逆性(通过指纹无法还原你这个人)

image-20230105100924711

传统记账方式

image-20230101170342997

区块链记账方式

image-20230101163054020

记账方式对比

对比项 传统记账 比特币记账
交易记录存储位置 账单 区块
周期 记账 写满了翻⻚(无论时间多久) 10分钟翻⻚(无论交易多少),==地铁==
记账人 老会计 比特币客户端节点
奖励 死工资 记账奖励+手续费
记账成本 鸵⻦蓝黑墨水 非常耗电/ 设备损耗
账本数量 1 所有节点人手一份

区块链记账完整过程

  • 交易签名(第二节会讲细节)

  • P2P网络(Peer-To-Peer)

  • 矿工、挖矿、算力

    image-20230101172109393

对于一个特定的区块链项目,其区块的产生、链接、同步方式、同步时间等是有特定的规则的,大体上可以用下面这张图来描述。

  • 第一步:由用户自己创建交易(转账等),私钥签名
  • 第二步:由矿工校验交易,打包到本地交易池,并广播改交易
  • 第三步:下一个记账周期开始时,开始进行挖矿竞争
  • 第四步:矿工A挖矿成功,全网广播
  • 第五步:多个矿工对挖矿交易进行确认无误
  • 第六步:矿工A获得挖矿奖励,全网同步账本,重复第一步

image-20230105104658568

出块逻辑:

image-20230101174253076

2. 比特币

还是要说说比特币,它诞生于2009年,最初是C++实现的,它的功能非常纯粹:就是用来转账的,基本没法在上面做二次开发,比如想自己基于比特币开发一个DAPP(去中心化应用),这个是不可能的。

image-20230910173749312

这也是为什么后来会出现以太坊这个区块链项目,以太坊的存在弥补了比特币无法二次开发的问题,不过这也是中本聪(比特币的创造者)的本意,咱不搞那些花里胡哨的功能,聚焦金融,安全稳定。

image-20230910173731635

在线演示

image-20230101164435228

在币圈一般都称之为:大饼,各种牛鬼蛇神币种的涨跌基本完全看大饼的脸色,大饼每四年减产一次(即挖矿的奖励减半),大约在2140年时会全部挖完(2100w枚),比特币总量计算如下:totalBTC.go

package main

import "fmt"

func main() {
    total := 0.0     //总量
    interval := 21.0 //区块间隔,万单位

    reward := 50.0 //奖励数量,最初50个

    for reward != 0 {
        //累加挖矿值
        amount := reward * interval

        total += amount //总量

        reward *= 0.5 //奖励减半
    }

    fmt.Printf("total : %fw\n", total)
}

3. 以太坊

在比特币问世前期,只有小范围内的人了解它。4年之后,一个俄罗斯的小伙子受到了比特币设计的启示,来了灵感,并于2013年首次提出了以太坊(Ethereum)的概念,并将其定位为:下一代加密货币与去中心化应用平台,并拉开了一个新时代的序幕。

v_ethereum

比特币vs以太坊

  • 功能定位不同:BTC为金融转账而设计,Ethereum是一个操作系统,==可以运行程序==(世界级计算机);
  • 账户体系不同:BTC和以太坊的账户体系完全不同,比特币是找零机制,以太坊是账户体系;

功能定位不同

  • 比特币本身就是有价值的数字黄金,专用于金融。
  • 以太坊ETH自身不是为了金融转账,以太坊的主要目的是支持智能合约。由于需要用ETH来支付调用合约的gasfee,所以ETH才有价值。

账户模型对比

UTXO:unspent transaction output,未消费的output,里面是用户持有的btc,相当于零钱

image-20230101165058685

4. 公链|联盟链|私链

image-20230101163913856

5. 共识机制

POW

工作量证明(POW:Proof of work)是指出示结果表示你做过一件事情,获取结果的过程很曲折,验证 却很简单。

image-20230101172109393

计算过程如下图:(在线工具演示)

image-20230101171613731

POS

Proof of Stake权益证明,2022年9月15日,以太坊由pow转为pos,为后续的以太坊2.0做准备,pos特点如下:

  1. slot:出块时间固定,每隔12秒为一个slot;
  2. epoch:每32个slot组成一个epoch(6.4分钟/epoch);
  3. 用户如果想要参与共识网络,需要先质押32个ETH,然后等待专门的交易将其加入验证者集合;
  4. 每个epoch之前,会通过VRF将验证者集合均匀的分配到32个slot中,每个slot中会随机的选出一个区块提议者。在每个slot中,提议者生成区块,分配到该slot的验证者子集对区块进行验证和投票;
  5. 在POS模式之下,区块生成不再需要比拼算力,而是按照随机指派而来
  6. POW:概率确定性、POS:最终确定性
  7. ==POS是以太坊发展重要一环,扩容前置条件、结合L2==
  8. 深入理解pos,点击查看

image-20230116193139056

6. 其他概念

  • 分叉、双花,详细介绍,点击查看

    image-20230105104137194

  • 不可能三角:可扩展性、去中心化、安全性

    image-20230105103349916