TPS:MoleEdu Web3 系列公开课回顾:区块链基础笔记大全_NFL

作者:Moledao

Moledao和OGBC联合举办的Web3系列课终于在2023年1月16日正式开始啦!第一周为Web3基建之周,内容涵盖了区块链基础,以太坊和Layer2,Layer0,存储。

开始的两节课,Duke导师给我们带来了详尽的“区块链基础”课程讲解,干货满满。两节课的课程录屏已全部上传Moledao的bilibili:

第一周:基建之周|区块链基础录屏

现在,让我们一起来回顾前两节课所讲内容吧!

导师介绍

Duke导师是5年资深Web3开发者,Bybit交易所Defi团队TechLead,Moledao的技术顾问,同时是国内第一批区块链布道者,培训过区块链学员近千人,目前base新加坡,专注海外Defi,DEX,元宇宙等业务方向。

学习收获

区块链入?基础知识:区块链、比特币、以太坊、Hash算法、加密算法、共识机制?

钱包相关知识:私钥、地址、钱包分类、cex与dex、钱包未来趋势?

智能合约知识:合约简介、部署合约、与合约交互

第七周和第八周会做智能合约开发的学习补充,那时Duke导师会详细介绍开发的相关知识

学习路径

以太坊学习比特币学习

以上链接可以帮助我们用go学写一个基础的比特币,通过这样的学习模式,可以深入了解区块链相关的知识,也可以强化自己的go语言能力。

那么接下来就开始正式回顾我们的课程吧!

01区块链概述

1.?区块链

区块链是一个非常泛化的概念,可以把区块链理解为车,比特币和以太坊就是不同的车型。

交易:在区块链世界里面,我们把所有的交互行为(买东?、投票、转账)统称为一个交易(Transaction,简写为Tx)?

区块:在一个特定的时间段内(如10分钟)会产生N笔交易,我们把这些交易打包到一起之后,称之为区块(Block)?

交易会打包到一个数据结构中,这个数据结构称为区块。

区块产生是有固定周期的,比特币为10分钟,而以太坊为几十秒

区块链:在更?的一段时间内(如60分钟)会产生很多区块,我们这些区块(Block)以特定的规则链接到一起之后,就称之为区块链(Blockchain)?

1.1?哈希算法

Hash就是内容的指纹,与内容一一对应!

哈希算法有很多种,在比特币和以太坊里用的最多的算法就是SHA256。大家可以通过以下链接线上尝试哈希算法。

在线演示:

https://emn178.github.io/online-tools/sha256.html

Hash在区块链中的用途主要有四种:

将区块前后连接起来

不同的内容只会有且只有一个哈希值,具有唯一性

前一个区块生成的哈希值会存在后一个区块中,这样后一个区块就能找到前一个区块

所以区块之间就能通过哈希值,产生逻辑上的连接

将私钥和地址连接起来:私钥->公钥->地址

这三者一一关联,单向不可逆

快速效验交易有效性

1.2?哈希算法特性

哈希算法是区块链技术的重要因素。而正是因为有以下特性,哈希算法才得以普及:

唯一性

一个内容通过一种哈希算法仅能生成一个哈希值。

抗碰撞性

同一个哈希值不可能由两个不同的内容生成而来。

不可逆性

不可能通过哈希值逆向推断出生成此哈希值的内容。

1.3?记账方式对比

传统记账方式

一页账单写满之后换另一页继续写

账单按照先后顺序装订在一起

区块链记账方式

固定时间内,不管区块中数据如何,都会生成新区块。和时间有强绑定关系。

记账方式对比

对比项

传统记账

比特币记账

交易记录存储位置

账单

区块

周期

记账写满了翻?(无论时间多久)

10分钟翻?(无论交易多少)

记账人

老会计

比特币客户端节点

奖励

死工资

记账奖励+手续费

记账成本

鸵?蓝黑墨水

非常耗电/设备损耗

账本数量

1

所有节点人手一份

1.4?区块链运行规则

接下来将介绍区块链规则,但是在此之前,我们要先了解区块链中的基础概念,这样大家才能更好地理解区块链的运行流程:

交易签名

持有私钥,发起转账时需要签名,就像银行要输入密码

P2P网络

任何节点都可以持有完整账本,不依赖中心节点

矿工、挖矿、算力

围绕同一件事:交易发到区块链后,由谁来打包;

获取记账权的人才能获得token奖励。

上图中,对于某一个特定的区块,其哈希值已经确定,矿工们需要算出的其实是这个随机数据的值。将这个随机数据与区块的哈希值拼接,再通过SHA256算法算出一个哈希值,并将此哈希值和目标哈希值做对比。目标哈希值会随网络中挖矿人数动态调整,以确保在固定时间段内,区块可以顺利生成。

1.4.1区块链规则

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

第一步:由用户自己创建交易(转账等),私钥签名

交易创建过程其实是发起者用私钥对交易进行签名。

第二步:由矿工校验交易,打包到本地交易池,并广播该交易

比特币网络会捕捉到这些交易,收到交易的节点进行本地校验。

校验成功之后,将再广播一次这笔交易。其他节点收到交易之后也可以校验交易,校验成功后广播。

不同节点打包的交易可能不同,节点可以做出选择。

第三步:下一个记账周期开始时,开始进行挖矿竞争

挖矿过程即根据区块数据和随机数据,尝试计算出目标哈希值。

第四步:矿工A挖矿成功,全网广播

某一时刻某矿工成功算出目标哈希值,然后全网广播。其他矿工停止计算。

第五步:多个矿工对挖矿交易进行确认无误。

第六步:矿工A获得挖矿奖励,全网同步账本。

之后重复整个计算流程。

1.4.2校验交易逻辑

检验成功:A用私钥签名给B转账的这笔数据确实有效。过程包括比特币系统往前找,确认A是不是有这笔钱,用的是不是自己的钱等。校验成功之后才会进行打包。

2.?比特币

比特币诞生于2009年,最初是基于C++实现的,功能非常纯粹:仅用来转账的,基本无法在其上做二次开发,如基于比特币开发一个DAPP(去中心化应用),是不可能实现的。

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

在线演示

演示比特币基础(账本):

演示:

https://andersbrownworth.com/blockchain/hash

Demo的难度值:

0001000000000000000000000000000000000000000000000000000000000000

2.1区块

上图中,数据即区块中储存的数据。区块、随机数、哈希都与区块头相关。

改变数据之后,页面背景变为红色,代表此时的随机数和哈希值是不匹配的。

点击挖矿之后,会计算出一个新的随机数。此时计算出的哈希值也小于难度值。

2.2区块链

上图示意了区块链的连接方式。图中“前指针”即代表了前一个区块的哈希值,记录在后一个区块的区块头中。

前一个区块生成的哈希值是基于前一个区块中的全部数据生成的。所以如果前一个区块中的任意信息被改动,那这个区块的哈希值也会改动。而后一个区块的区块头中记录了原本前一个区块的哈希值。所以前一个区块中的数据产生变动的话,后续所有区块的哈希值都理应产生变动。但因为后续区块并未发生变动,所以这个链条就断掉了,会被系统抛弃。所以这样,区块链就具有不可篡改性。

2.3分布式

所有节点都记录了这笔交易,即交易分布在不同节点的完全一模一样的账本上,一个账本出现问题,这个账本就会被舍弃掉,所以篡改难度进一步加大。

2.4币基交易

所以区块中的第一笔交易是没有from的,只有to。这笔交易叫币基,这个记录的是比特币网络奖励给矿工的比特币。后续的Tx代表Transaction,即记录在区块中的从用户转到用户的转账交易。如果篡改了信息,该链就会断掉,就不再是最长链了。随即此链被比特币网络舍弃。

2.5演示比特币进阶(签名)

演示:

https://andersbrownworth.com/blockchain/public-private-keys/keys

进阶中,区块的每笔交易涉及到用户签名,讲完钱包地址后再演示。

比特币在设计之初的功能即金融转账,没有更复杂的功能。比特币一共2100万枚每四年减产一次(即挖矿的奖励减半),大约在2140年时会全部挖完,比特币总量计算如下:totalBTC.go

3.?以太坊

在比特币问世前期,只有小范围内的人了解它。大家了解之后发现比特币很纯粹,就是一个金融转账系统。4年之后,一个俄罗斯的小伙子VitalikButerin受到了比特币设计的启示,于2013年首次提出了以太坊(Ethereum)的概念,并将其定位为:世界级计算机,可以在其上运行程序。以太坊是下一代加密货币与去中心化应用平台,并拉开了一个新时代的序幕。

3.2比特币vs以太坊

功能定位不同:BTC为金融转账而设计,Ethereum是一个操作系统,可以运行程序(世界级计算机)。

账户体系不同:BTC和以太坊的账户体系完全不同,比特币是找零机制以太坊是账户体系。

功能定位对比

比特币本身就是有价值的数字?金,专用于金融。

以太坊ETH自身不是为了金融转账,以太坊的主要目的是支持程序调用,程序调用过程中会产生手续费,这笔手续费只可用以太坊支付。由于需要用ETH来支付调用合约的gasfee,所以ETH才有价值。

账户模型对比

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

如上图所示,0.04BTC并不能支付5.2BTC,所以系统会调用12.5BTC的UTXO来支付这个5.2BTC的支出,找零的7.3BTC会记录为另一个UTXO。

4.?公链|联盟链|私链

比特币和以太坊是公链。现在市场发展趋势是公链为王,联盟链和私有链没有市场。这里Duke导师为大家准备了私链的演示,大家可以查看文章自行尝试。

运行geth演示,genesis.json

https://www.jianshu.com/p/c66b74d9dc35

5.?共识机制

5.1POW

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

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

暴力计算,很不环保

5.2POS

ProofofStake权益证明,2022年9月15日,以太坊由pow转为pos,为后续的以太坊2.0做准备。

POS好处

节能

交易吞吐量增大

POS特点

slot:出块时间固定,每隔12秒为一个slot;

epoch:每32个slot组成一个epoch(6.4分钟/epoch);

用户如果想要参与共识网络,需要先质押32个ETH,然后等待专?的交易将其加入验证者集合;

每个epoch之前,会通过VRF将验证者集合均匀的分配到32个slot中,每个slot中会随机的选出一个区块提议者。在每个slot中,提议者生成区块,分配到该slot的验证者子集对区块进行验证和投票;

在POS模式之下,区块生成不再需要比拼算力,而是按照随机指派而来

POW:概率确定性、POS:最终确定性

POS是以太坊发展的重要一环,是扩容的前置条件,结合L2。扩

容完成后以太坊会更加亲民。

深入理解pos

https://news.marsbit.co/20221008222518399952.html

6.?其他概念

分叉、双花,详细介绍

分叉

节点可能同一时间挖出区块来,因此系统会等下一个区块出现,然后认可最长链。

系统可能也会因为人为攻击进行回滚,这时就可能调用分叉

双花

同一笔钱花两次,条件是算力超过全网51%或者质押超过全网51%的币

基于转账的前一个区块,将这笔钱转给自己。因为算力特别强,所以这笔转给自己的帐就会变成最长链,这样这笔钱就花了两次。

详细介绍

https://zhuanlan.zhihu.com/p/94500557

不可能三?:高性能、去中心化、高安全性

想要安全,就需要去中心化。但是这样就需要大家都有这样的共识,这样吸引力就不强。而且因为大家都想做决策,所以性能就不可能高。

三者中最多只可能同时满足两个。

02?钱包

1.私钥|地址

使用最多的就是Metamask

地址生成大致逻辑为:随机数->私钥->公钥->公钥哈希等一系列算法->地址

地址可以理解为账号,可以收钱和给钱。

钱包就是用来保管私钥的,也就是保管钱币的

以下链接演示了比特币公私钥生成过程

演示

https://andersbrownworth.com/blockchain/public-private-keys/keys

所有推算过程都是单向不可逆的,所以在私钥不被泄露的情况下安全性很高。

保证安全的核心在于:随机数的空间足够大,否则会被暴力破解,出现过安全事件。

地址生成在线工具

https://www.rfctools.com/ethereum-address-test-tool/

2.分层确定性钱包|助记词

但是如上图所示,私钥很难记,所以就诞生了“一个私钥管理所有私钥“的管理模式。

即通过一个私钥,通过算法派生出所有私钥。也是钱包的发展方向。

现在基本都是使用分层确定性钱包,也称HD钱包,演变历史为:BIP32->BIP39->BIP44。

在线体验分层确定性钱包

https://iancoleman.io/bip39/#chinese_simplified

BIP32:引入钱包分层,即一个私钥派生出N多个私钥。

BIP39:引入助记词,将管理所有私钥的代码改编为一系列单词。更方便记忆,通过按照顺序记住助记词,再通过助记词推算出所有私钥,有效的解决了私钥管理困难的问题。

上图的12个单词,它们就是助记词,一般有12个,它们的:

作用:帮助用户来更加方便的记住自己的私钥,管理财产(一套助记词可以派生很多个钱包地址,小狐狸上可以点创建钱包,会自动生成新地址)。

原理:将随机数通过特定编码转化为词库中的单词。

助记词是随机数与单词的映射,使用助记词就可以恢复随机数,进而计算出私钥,管理资产。

上图是助记词的生成过程:

简单来说就是将生成的随机数切割成12部分,再将这12个部分对应到单词字典里的助记词。

3.钱包分类

按数据类型分类

全节点钱包

钱包里有所有链上数据,在本地就能校验交易有效性。

成本高,私人一般承担不起,也没有必要。但是所有交易所一定有至少一个全节点钱包,这样才能保证资金的安全性。

轻节点钱包

验证有效性时,会向全网发出请求。全节点会帮助轻节点进行验证。

按设备类型分类

电脑钱包和手机钱包,顾名思义,即运行在电脑上和手机上的钱包。

硬件钱包,硬件设别会存储助记词,永远不会暴露。知名硬件钱包:Ledger

按是否联网

热钱包,联网的钱包。联网意味着会有被盗窃或者被钓鱼的风险。

冷钱包,不联网的钱包,比如硬件钱包是冷钱包。

按私钥的归属

中心化钱包。比如交易所,交易所持有了客户的私钥。

去中心化钱包,所有私钥是存储在客户本地的。

客户使用中心化钱包的理由是:快捷,且交易所有信用背书。但是FTX事件之后,人们对中心化交易所的不信任感也急剧升高。

4.?私钥签名逻辑

整个区块链系统依赖于非对称加密算法。非对称加密的含义是,加密和解密不是同一个密钥,区别于对称加密

对称加密:对称加密中的密匙必须要在网上传播,这样密匙就有被盗取的风险。

非对称加密中,私钥是绝对不能暴露的,而公钥是全网公开的。一般有两种使用场景:

场景一:使用公钥加密、私钥解密

场景一图示:

Alice想给Bob专递消息,就会用Bob的公钥对信息进行加密。而这段加密信息只有通过Bob的私钥才能进行解密。黑客即便有加密过的密文和Bob的公钥,但没有Bob的私钥,就无法解密。而Bob的私钥一直保存在本地,从未经互联网传播,所以黑客将永远无法破解密文。

场景二:使用私钥签名、公钥验证(区块链依赖这个)

场景二图示:

Alice将想发送的信息用私钥签名。全网所有拥有Alice公钥的人都能用Alice的公钥进行验证,验证成功即表示这段信息是Alice发送的。在区块链中,这种方式被应用于校验交易和交易发起者的对应关系,以及验证交易发起者是不是在用自己的资产进行交易。

私钥签名完整流程:

第一步:交易发起人将整个交易信息进行哈希运算

第二步:发起人将得到的哈希值,通过私钥算法进行签名

第三步:将交易原文和数字签名一起上传

第四步:验证者将交易原文通过哈希算法算出哈希值

第五步:验证者将电子签名通过发起人的公钥进行解密

第六步:对比交易原文的哈希值和电子签名解密后的哈希值,如果一致则说明该交易和发起人匹配,即校验成功。

5.中心化交易所做了啥

我们可以在中心化交易所中充币和提币。但是具体是怎么实现的呢?

以以太坊为例,下图右侧即为以太坊所有节点,左侧是中心化交易所。交易所为了保证客户需求,也会运行一个全节点,然后和各个网络连接。要进行的三件事是:创建地址、充币、提币。

用户在中心化交易所创建账户后,交易所会替用户创建以太坊地址,但私钥由交易所保管。用户进行充币时,只需向用户的地址中进行转账。交易所会把此交易记录到中心化账本中。之后用户就能在交易所中进行交易。但是接下来交易操作都记录在交易所的数据库中,这样能保证交易快速且无链上交易所产生的手续费。交易所因为持有私钥,所以可以操作账户中的币,交易所会把币转移到交易所操作中。当用户提币时,交易所会将币从交易所账户中转移到客户账户中。所以如果交易所跑路了的话,客户所有币都将丢失。

6.钱包的未来

补充两个概念:

EOA:所有私钥控制的钱包都是EOA钱包,外部账户钱包。

CA:这种钱包由代码控制。

上面我们看到了很多种钱包,大多是助记词方式。但其实有很多不便,比如让用户自己管理钱包其实操作比较麻烦,而且容易泄漏,从而产生安全隐患。除此之外,钱包交易手续费也较高。因此大家普遍认为之后的生态发展中,新模式钱包发展一定是重点发展方向。新模式钱包有三种:

MPC钱包:多方钱包,本质上没有完全解决用户自己管理钱包的问题,是将私钥进行切片,多方保管。进行交易时,多方组合在一起在进行交易。因为私钥分配在不同服务器上,所以更加安全。主流MPC钱包目前有:Bitverse、ZenGo

智能合约钱包:是CA,本质是合约。用户在合约中存钱,所有交易都通过合约中执行。因为合约有逻辑,所以能更加安全地控制资产,可以保证用户有一定权限,大额资金不受制于任何一人。比如一笔基金钱包,要进行投资,则必须很多个EOA进行签名才能进行。目前主流智能合约钱包有:Gnosis

账户抽象(AccountAbstract):俗称AA钱包。可以把智能合约和EOA抽象到新的层面上,有一整套生态来保证智能合约安全和更多更能的应用。具体可以参考以下文章:

V神提出方案

https://medium.com/infinitism/erc-4337-account-abstraction-without-ethereum-protocol-changes-d75c9d94dc4a

EIP4337

https://eips.ethereum.org/EIPS/eip-4337

代码实现

https://github.com/eth-infinitism/account-abstraction

科普文章

Todd,公众号:AnTCapitalA&TView:我们离普及智能合约钱包还有多远?一文看懂ERC-4337

03?智能合约

每当我们提到开发区块链项目,一般包含两个层面的意思:

链条开发:聚焦在区块链本身,这相当于操作系统层面的项目(如Mac和Windows)

应用开发:聚焦在应用层面,如微信,手机银行等,在区块链领域,我们称之为Dapp(DecentralizedApplication),即去中心化应用。

接下来我们来看一个简单的智能合约开发,我们后面会有专?的课程讲解solidity入?:

Web3定义

https://en.wikipedia.org/wiki/Web3

1.定义

目前没有标准的定义,但普遍认为:

Web1是只读的,Web2是读+写,Web3是读+写+拥有。

Web3是一个利用区块链技术实现无信任、无许可和去中心化的价值网络。

核心在于理解“拥有”两字,拥有的本质是“所有权”,而所有权的载体主要是通过Token体现,所以Web3的核心不能没有Tokenomics。

登录方式的对比

内容交互的对比

2.Web3的组成架构

上图是区块链生态概貌,目前Web3生态中的赛道还是比较丰富,接下来举几个例子:

最下层是链和跨链桥。跨链桥可以将资产在不同链上转移,用中心化机制保证安全。但是跨链桥也最容易受到攻击,2022年很多暴雷事件都是和跨链桥相关。

生态中还有很多辅助项目。以下举一些例子:

OpenOpenZeppelin提供了标准的智能合约库,可以节省开发时间。

ENS可以通过钱包用户名来保存地址,否则160位的地址很难被记下来。

IPFS&arweave:提供去中心化储存方案,可以降低储存成本。

Gaming,Content/Social,NFT,FinancialService这些都属于应用层。

再往上就是接口,可以让用户通过接口利用到区块链技术。

大家可以根据自己的兴趣选择自己喜欢的赛道。

以下列出了各个层级的知名项目,大家可以自行查阅。

协议层

即底层区块链架构层,包括Layer1的各种区块链,也包括Layer2的各种扩展链,还包括跨链桥。

Layer0~1:Ethereum、BSC、Heco、Avalanche、Near、Solana、Cosmos、Polkadot、Aptos、Sui

Layer2:Optimism、Arbitrum、zkSync、StarkNet

Bridge:Synapse、Hop、AnySwap

基础设施层

由一些可互操作的构建模块组成,是一个比较多样化的一层,以下列出的只是部分模块:

链上金融协议:Uniswap、Curve、Compound、Aave

数据存储:IPFS、Arweave

数据分析:Chainalysis、Covalent、DuneAnalytics

合约安全:Certik、OpenZeppelin

通信协议:XMTP、matrix、swarm

用户身份:ENS

预言机:Chainlink

数据索引服务:Graph

应用层

与用户交互的应用层,有着各种不同类型的应用,如游戏、内容、NFT、金融服务等。

游戏:AxieInfinity、illuvium、Decentraland

内容:Mirror、rally、Context

NFT:OpenSea、Rarible、Mintbase

金融服务:Uniswap、Matcha

注意:这里又出现了Uniswap。可以思考下为什么?

访问层

即访问Web3的入口,包括钱包、浏览器等,还有一些聚合器,甚至一些Web2平台也成为了Web3的入口。

钱包:MetaMask、DipperexToken、Ledger、Terzor、GnosisSafe、MoonbeamSafe

浏览器:Brave

聚合器:DappRadar、DeBank、Zerion

Web2:twitter、reddit、discord

3.Web3各赛道现状与趋势

05?资源链接

DAPP全栈教程

https://dukedaily.github.io/solidity-expert/

Metamask下载链接

https://chrome.google.com/webstore/search/MetaMask?hl=zh-CN

HD钱包拓展

https://www.arcblock.io/blog/zh/post/2018/12/01/hd-wallets-design-and-implementation

在线体验BIP32、BIP39、BIP44

https://iancoleman.io/bip39/#english

助记词库

https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt

演示比特币基础(账本)

https://andersbrownworth.com/blockchain/hash

演示比特币进阶(签名)

https://andersbrownworth.com/blockchain/public-private-keys/keys

查看MoleEdu?Web3系列课全部课程安排

MoleDAO,公众号:MoledaoMoleEdu|Web3.0系列公益课来袭!你准备好了吗?

06?鸣谢

感谢以下组织对本次公益课程的支持!

赞助方支持:

OneGlobalBlockchainCentre(OGBC)

https://www.ogbc.com/

OGBC是Web3.0的领先孵化器,他们与新兴的加密货币初创公司合作,建立未来的基础设施。通过利用OGBC在加密货币领域的专业知识、网络和资源,公司和项目可以充分发挥其潜力,努力为区块链行业越来越多的用户开发创新和有价值的解决方案。

其它合作方支持:

07?关于Moledao

MoleDAO是一个区块链开发者社区,供所有区块链爱好者了解区块链的最新动态,并在经验丰富的区块链先驱者和创新者的帮助下成长,为构建Web3生态系统贡献更多创新想法。

我们旨在通过搭建区块链爱好者交流社区、提供区块链项目支持、举办全球黑客松系列活动、帮助项目人才匹配、提供项目赞助和指导,将区块链理念带给每个人并发展区块链生态系统。

我们的愿景是成为一个精心策划的一站式区块链生态系统。无论你是区块链爱好者、区块链开发者、机构还是投资者,都可以在Moledao找到适合自己的定位。

更多内容请查看?:Moledao是谁?在做什么?你能在这儿收获什么

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

区块博客

[0:15ms0-3:985ms