Moledao 和 OGBC 联合举办的 Web3 系列课终于在 2023 年 1 月 16 日正式开始啦!第一周为 Web3 基建之周,内容涵盖了区块链基础,以太坊和 Layer2,Layer0,存储。
开始的两节课,Duke 导师给我们带来了详尽的“区块链基础”课程讲解,干货满满。两节课的课程录屏已全部上传 Moledao 的 bilibili:
第一周:基建之周 | 区块链基础录屏
https://www.bilibili.com/video/BV148411A7Us/?spm_id_from=333.999.0.0
现在,让我们一起来回顾前两节课所讲内容吧!
导师介绍
Duke 导师是 5 年资深 Web3 开发者,Bybit 交易所 Defi 团队 Tech Lead,Moledao 的技术顾问,同时是国内第一批区块链布道者,培训过区块链学员近千人,目前 base 新加坡,专注海外 Defi,DEX,元宇宙等业务方向。
学习收获
区块链入⻔基础知识: 区块链、比特币、以太坊、Hash 算法、加密算法、共识机制
钱包相关知识: 私钥、地址、钱包分类、cex 与 dex、钱包未来趋势
智能合约知识: 合约简介、部署合约、与合约交互
第七周和第八周会做智能合约开发的学习补充,那时 Duke 导师会详细介绍开发的相关知识
学习路径
以太坊学习(800+star):
https://github.com/dukedaily/solidity-expert
比特币学习:
https://github.com/dukedaily/go-bitcoin-demo
以上链接可以帮助我们用 go 学写一个基础的比特币,通过这样的学习模式,可以深入了解区块链相关的知识,也可以强化自己的 go 语言能力。
那么接下来就开始正式回顾我们的课程吧!
01 区块链概述
1. 区块链
区块链是一个非常泛化的概念,可以把区块链理解为车,比特币和以太坊就是不同的车型。
1.1 哈希算法(Hash Algorithm)
Hash 就是内容的指纹,与内容一一对应!
哈希算法有很多种,在比特币和以太坊里用的最多的算法就是 SHA256。大家可以通过以下链接线上尝试哈希算法。
在线演示:
https://emn178.github.io/online-tools/sha256.html
Hash 在区块链中的用途主要有四种:
1.2 哈希算法特性
哈希算法是区块链技术的重要因素。而正是因为有以下特性,哈希算法才得以普及:
1.3 记账方式对比
传统记账方式
对比项
传统记账
比特币记账
交易记录存储位置
账单
区块
周期
记账 写满了翻⻚ ( 无论时间多久 )
10 分钟翻⻚ ( 无论交易多少 )
记账人
老会计
比特币客户端节点
奖励
死工资
记账奖励 + 手续费
记账成本
鸵⻦蓝黑墨水
非常耗电 / 设备损耗
账本数量
1
所有节点人手一份
接下来将介绍区块链规则,但是在此之前,我们要先了解区块链中的基础概念,这样大家才能更好地理解区块链的运行流程:
上图中,对于某一个特定的区块,其哈希值已经确定,矿工们需要算出的其实是这个随机数据的值。将这个随机数据与区块的哈希值拼接,再通过 SHA256 算法算出一个哈希值,并将此哈希值和目标哈希值做对比。目标哈希值会随网络中挖矿人数动态调整,以确保在固定时间段内,区块可以顺利生成。
对于一个特定的区块链项目,其区块的产生、链接、同步方式、同步时间等是有特定的规则 的,大体上可以用下面这张图来描述。
1.4.2 校验交易逻辑
检验成功:A 用私钥签名给 B 转账的这笔数据确实有效。过程包括比特币系统往前找,确认 A 是不是有这笔钱,用的是不是自己的钱等。校验成功之后才会进行打包。
2. 比特币
比特币诞生于 2009 年,最初是基于 C++ 实现的,功能非常纯粹:仅用来转账的,基本无法在其上做二次开发,如基于比特币开发一个 DAPP( 去中心化应用 ),是不可能实现的。
这也是为什么后来会出现以太坊这个区块链项目,以太坊的存在弥补了比特币无法二次开发的问题,不过这也是中本聪 ( 比特币的创造者 ) 的本意,咱不搞那些花里胡哨的功能,聚焦金融,安全稳定。
演示:
https://andersbrownworth.com/blockchain/hash
Demo 的难度值:
0001000000000000000000000000000000000000000000000000000000000000
上图中,数据即区块中储存的数据(交易记录)。区块、随机数、哈希都与区块头相关。
改变数据之后,页面背景变为红色,代表此时的随机数和哈希值是不匹配的。
点击挖矿之后,会计算出一个新的随机数(13713)。此时计算出的哈希值也小于难度值(因为哈希值开头为 00008,而难度值开头为 0001,所以认为哈希值比难度值小)。
上图示意了区块链的连接方式。图中“前指针”即代表了前一个区块的哈希值,记录在后一个区块的区块头中。
前一个区块生成的哈希值是基于前一个区块中的全部数据生成的。所以如果前一个区块中的任意信息被改动,那这个区块的哈希值也会改动。而后一个区块的区块头中记录了原本前一个区块的哈希值。所以前一个区块中的数据产生变动的话,后续所有区块的哈希值都理应产生变动。但因为后续区块并未发生变动,所以这个链条就断掉了,会被系统抛弃。所以这样,区块链就具有不可篡改性。
所有节点都记录了这笔交易,即交易分布在不同节点的完全一模一样的账本上,一个账本出现问题,这个账本就会被舍弃掉,所以篡改难度进一步加大。
所以区块中的第一笔交易是没有 from 的,只有 to。这笔交易叫币基(coinbase),这个记录的是比特币网络奖励给矿工的比特币。后续的 Tx 代表 Transaction,即记录在区块中的从用户转到用户的转账交易。如果篡改了信息,该链就会断掉,就不再是最长链了。随即此链被比特币网络舍弃。
演示:
https://andersbrownworth.com/blockchain/public-private-keys/keys
进阶中,区块的每笔交易涉及到用户签名(图中红色方框标记),讲完钱包地址后再演示。
比特币在设计之初的功能即金融转账,没有更复杂的功能。比特币一共 2100 万枚每四年减 产一次 ( 即挖矿的奖励减半 ),大约在 2140 年时会全部挖完,比特币总量计算如下: totalBTC.go
3. 以太坊
在比特币问世前期,只有小范围内的人了解它。大家了解之后发现比特币很纯粹,就是一个金融转账系统。4 年之后,一个俄罗斯的小伙子 Vitalik Buterin(业界称为 V 神)受到了比特币设计的启示,于 2013 年首次提出了以太坊 (Ethereum) 的概念,并将其定位为:世界级计算机,可以在其上运行程序。以太坊是下一代加密货币与去中心化应用平台,并拉开了一个新时代的序幕。
UTXO:unspent transaction output,未消费的 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
工作量证明 (POW:Proof of work) 是指出示结果表示你做过一件事情,获取结果的过程很曲折,验证却很简单。
计算过程如下图:( 在线工具演示 )
暴力计算,很不环保(会消耗很多电力,也烧芯片)
Proof of Stake 权益证明,2022 年 9 月 15 日,以太坊由 pow 转为 pos,为后续的以太坊 2.0 做准备。
深入理解 pos
https://news.marsbit.co/20221008222518399952.html
详细介绍
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/
# privateKey: A4657617423513817844D8BB5BAD89C1B9C1499D1E94875DC325BEA53526BDB4 # publicKey: f91339a26b4cb0059642665f46369c3569fc26597694aff84d908de5b4833b24ab5aad66b23f43ae3607aa9278f9829a7719fd9702493a789067fa8c7c0d98f6#address: 0xA8AdDb283a2AcdAc6DdE3Aa44e054A00836CCf0A
但是如上图所示,私钥很难记,所以就诞生了“一个私钥管理所有私钥“的管理模式。
即通过一个私钥,通过算法派生出所有私钥。也是钱包的发展方向。
现在基本都是使用分层确定性钱包,也称 HD 钱包,演变历史为:BIP32 -> BIP39 -> BIP44。
在线体验分层确定性钱包
https://iancoleman.io/bip39/#chinese_simplified
BIP32:引入钱包分层,即一个私钥派生出 N 多个私钥。
BIP39:引入助记词,将管理所有私钥的代码改编为一系列单词。更方便记忆,通过按照顺序记住助记词,再通过助记词推算出所有私钥,有效的解决了私钥管理困难的问题。
上图的 12 个单词,它们就是助记词,一般有 12 个, 它们的:
助记词是随机数与单词的映射,使用助记词就可以恢复随机数,进而计算出私钥,管理资产。
上图是助记词的生成过程:
简单来说就是将生成的随机数切割成 12 部分,再将这 12 个部分对应到单词字典里的助记词。
4. 私钥签名逻辑
整个区块链系统依赖于非对称加密算法。非对称加密的含义是,加密和解密不是同一个密钥,区别于对称加密(加密解密用的同一个密匙)
对称加密:对称加密中的密匙必须要在网上传播,这样密匙就有被盗取的风险。
非对称加密中,私钥是绝对不能暴露的,而公钥是全网公开的。一般有两种使用场景:
场景一:使用公钥加密、私钥解密
场景一图示:
Alice 想给 Bob 专递消息,就会用 Bob 的公钥对信息进行加密。而这段加密信息只有通过 Bob 的私钥才能进行解密。黑客即便有加密过的密文和 Bob 的公钥,但没有 Bob 的私钥,就无法解密。而 Bob 的私钥一直保存在本地,从未经互联网传播,所以黑客将永远无法破解密文。
场景二:使用私钥签名、公钥验证 ( 区块链依赖这个 )
场景二图示:
Alice 将想发送的信息用私钥签名。全网所有拥有 Alice 公钥的人都能用 Alice 的公钥进行验证,验证成功即表示这段信息是 Alice 发送的。在区块链中,这种方式被应用于校验交易和交易发起者的对应关系,以及验证交易发起者是不是在用自己的资产进行交易。
私钥签名完整流程(以一笔交易为例):
我们可以在中心化交易所中充币和提币。但是具体是怎么实现的呢?
以以太坊为例,下图右侧即为以太坊所有节点,左侧是中心化交易所。交易所为了保证客户需求(充币等),也会运行一个全节点,然后和各个网络连接。要进行的三件事是:创建地址、充币、提币。
用户在中心化交易所创建账户后,交易所会替用户创建以太坊地址,但私钥由交易所保管。用户进行充币时,只需向用户的地址中进行转账。交易所会把此交易记录到中心化账本中。之后用户就能在交易所中进行交易。但是接下来交易操作(除了提币)都记录在交易所的数据库中,这样能保证交易快速且无链上交易所产生的手续费(Gas fee)。交易所因为持有私钥,所以可以操作账户中的币,交易所会把币转移到交易所操作中。当用户提币时,交易所会将币从交易所账户中转移到客户账户中(此步骤为链上进行)。所以如果交易所跑路了的话,客户所有币都将丢失。
补充两个概念:
上面我们看到了很多种钱包,大多是助记词方式。但其实有很多不便,比如让用户自己管理钱包其实操作比较麻烦,而且容易泄漏,从而产生安全隐患。除此之外,钱包交易手续费也较高。因此大家普遍认为之后的生态发展中,新模式钱包发展一定是重点发展方向。新模式钱包有三种:
MPC(Multi-Party Computation)钱包:多方钱包,本质上没有完全解决用户自己管理钱包的问题,是将私钥进行切片,多方保管。进行交易时,多方组合在一起在进行交易。因为私钥分配在不同服务器上,所以更加安全。主流 MPC 钱包目前有:Bitverse、ZenGo
智能合约钱包:是 CA,本质是合约。用户在合约中存钱,所有交易都通过合约中执行。因为合约有逻辑,所以能更加安全地控制资产,可以保证用户有一定权限,大额资金不受制于任何一人。比如一笔基金钱包,要进行投资,则必须很多个 EOA 进行签名才能进行。目前主流智能合约钱包有:Gnosis
账户抽象 (Account Abstract):俗称 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,公众号:AnT CapitalA&T View:我们离普及智能合约钱包还有多远?一文看懂 ERC-4337
03 智能合约(Smart Contract)
每当我们提到开发区块链项目,一般包含两个层面的意思:
接下来我们来看一个简单的智能合约开发(应用层开发 Demo),我们后面会有专⻔的课程讲解 solidity 入⻔:
// SPDX-License-Identifier:MIT// 指定编译器版本,版本标识符 pragma solidity ^0.8.13; // 关键字 contract 跟 java 的 class 一样 智能合约是 Inboxcontract Inbox{ // 状态变量,存在链上 string public message; // 构造函数 constructor(string memory initMessage) { // 本地变量 string memory tmp = initMessage; message = tmp; } // 写操作,需要支付手续费 function setMessage(string memory _newMessage) public { message = _newMessage; } // 读操作,不需要支付手续费 function getMessage() public view returns(string memory) { return message; }}
04 什么是 Web3(拓展知识)
Web3 (also known as Web 3.0) 以下是维基百科上的定义:
Web3 定义
https://en.wikipedia.org/wiki/Web3
1. 定义
目前没有标准的定义,但普遍认为:
核心在于理解“拥有”两字,拥有的本质是“所有权”,而所有权的载体主要是通过 Token(代币)体现,所以 Web3 的核心不能没有 Tokenomics(代币经济)。
登录方式的对比
内容交互的对比
上图是区块链生态概貌,目前 Web3 生态中的赛道还是比较丰富,接下来举几个例子:
大家可以根据自己的兴趣选择自己喜欢的赛道。
以下列出了各个层级的知名项目,大家可以自行查阅。
即底层区块链架构层,包括 Layer1 的各种区块链,也包括 Layer2 的各种扩展链,还包括跨链桥。
由一些可互操作的构建模块组成,是一个比较多样化的一层,以下列出的只是部分模块:
与用户交互的应用层,有着各种不同类型的应用,如游戏、内容、NFT、金融服务等。
注意:这里又出现了 Uniswap。可以思考下为什么?
即访问 Web3 的入口,包括钱包、浏览器等,还有一些聚合器,甚至一些 Web2 平台也成为 了 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 鸣谢
感谢以下组织对本次公益课程的支持!
赞助方支持:
One Global Blockchain Centre (OGBC)
https://www.ogbc.com/
OGBC 是 Web 3.0 的领先孵化器,他们与新兴的加密货币初创公司合作,建立未来的基础设施。通过利用 OGBC 在加密货币领域的专业知识、网络和资源,公司和项目可以充分发挥其潜力,努力为区块链行业越来越多的用户开发创新和有价值的解决方案。
其它合作方支持:
07 关于 Moledao
MoleDAO是一个区块链开发者社区,供所有区块链爱好者了解区块链的最新动态,并在经验丰富的区块链先驱者和创新者的帮助下成长,为构建 Web 3 生态系统贡献更多创新想法。
我们旨在通过搭建区块链爱好者交流社区、提供区块链项目支持、举办全球黑客松系列活动、帮助项目人才匹配、提供项目赞助和指导,将区块链理念带给每个人并发展区块链生态系统。
我们的愿景是成为一个精心策划的一站式区块链生态系统。无论你是区块链爱好者、区块链开发者、机构还是投资者,都可以在 Moledao 找到适合自己的定位。
更多内容请查看👉:Moledao 是谁?在做什么?你能在这儿收获什么
加入我们
我们欢迎所有区块链爱好者加入 Moledao 并共建 Web3.0 生态。
官方所有链接⬇️
https://linktr.ee/moledao
Discord 社区⬇️
https://discord.gg/khR98dRPum
微信群⬇️
添加微信申请入群:WeChat ID: Phoebe_Junbo
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。