区块链基础(上)
小白入门:https://github.com/dukedaily/solidity-expert ,欢迎star转发,文末加V入群。
职场进阶: https://dukeweb3.com
讲师介绍
资深web3开发者,前bybit交易所defi团队Tech Lead,MoleDAO技术顾问,国内第一批区块链布道者,专注海外defi,dex,AA钱包等业务方向。
- 公众号:阿杜在新加坡
- github:以太坊教程
- B站:杜旭duke
- Youtube:duke du
- Twitter:dukedu2022
学习收获
- 区块链入门基础知识:区块链、比特币、以太坊、Hash算法、加密算法、共识机制
- 钱包相关知识:私钥、地址、钱包分类、cex与dex、钱包未来趋势
- 智能合约知识:合约简介、部署合约、与合约交互
学习路径
- 以太坊学习:https://github.com/dukedaily/solidity-expert(800+ star)
- 比特币学习:https://github.com/dukedaily/go-bitcoin-demo
一、钱包
1. 私钥|地址
地址生成大致逻辑为:随机数-> 私钥-> 公钥-> 公钥哈希-> 地址
演示:https://andersbrownworth.com/blockchain/public-private-keys/keys
保证安全的核心在于:随机数的空间足够大,否则会被暴力破解,出现过安全事件
以太坊地址生成在线工具:https://www.rfctools.com/ethereum-address-test-tool/
# privateKey:
A4657617423513817844D8BB5BAD89C1B9C1499D1E94875DC325BEA53526BDB4
# publicKey:
f91339a26b4cb0059642665f46369c3569fc26597694aff84d908de5b4833b24ab5aad66b23f43ae3607aa9278f9829a7719fd9702493a789067fa8c7c0d98f6
#address:
0xA8AdDb283a2AcdAc6DdE3Aa44e054A00836CCf0A
2. 分层确定性钱包|助记词
现在基本都是使用分层确定性钱包,也称 HD 钱包,演变历史为:BIP32 -> BIP39 -> BIP44,点击在线体验
BIP32引入:钱包分层,即一个私钥派生出N多个私钥。
BIP39:引入助记词
我们知道私钥是可以管理地址的,但是私钥太难记了,是256位的0和1,因此后来有人提出了助记词
的提议,从而有效的解决了私钥管理困难的问题。
还记得上面的12个单词么,它们就是助记词
,即帮助你管理自己钱包的单词,助记词可以有多个单词(通常为12个),它们的:
- 作用:帮助用户来更加方便的记住自己的私钥,管理财产(一套助记词可以派生N个钱包地址,小狐狸上可以点创建钱包,会自动生成新地址)。
- 原理:将随机数通过特定编码转化为词库中的单词。
说穿了,助记词是随机数与单词的映射,使用助记词就可以恢复随机数,进而计算出私钥,管理资产。
3. 私钥签名逻辑
整个区块链系统依赖于非对称加密算法:
- 非对称的含义:加密和解密不是同一个密钥,区别于
对称加密
- 场景一:使用公钥加密、私钥解密
- 场景二:使用私钥签名、公钥验证(==区块链依赖这个==)
对称加密:
非对称加密场景1:公钥加密,私钥解密
非对称加密场景2:私钥签名,公钥验证
私钥签名完整流程图示:
比特币真实交易,点击查看
4. 钱包分类
硬件钱包示例:
5. 中心化交易所做了啥
Not Your Keys, Not Your Coins
6. 钱包的未来
EOA: externally owned account
CA: Contract Account
二、智能合约
智能合约属于应用层面的开发语言,每当我们提到区块链项目,一般包含两个层面的意思:
- 链条开发:聚焦在区块链本身,这相当于操作系统层面的项目(如Mac和Windows)
- 应用开发:聚焦在应用层面,如微信,手机银行等,在区块链领域,我们称之为Dapp(Decentralized Application),即去中心化应用。
我们后面会有专门的课程讲解solidity入门:
// SPDX-License-Identifier: MIT
// 指定编译器版本,版本标识符
pragma solidity ^0.8.13;
// 关键字 contract 跟java的class一样 智能合约是Inbox
contract 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;
}
}
演示:
- remix部署
- 浏览器verify
三、什么是 Web3(拓展知识)
Web3 (also known as Web 3.0) - by Wikipedia Decentralized Web and Semantic Web
1. 定义
目前没有标准的定义,但普遍认为:
- Web1 是只读的,Web2 是读+写,Web3 是读+写+拥有。
- Web3 是一个利用区块链技术实现无信任、无许可和去中心化的价值网络。
核心在于理解「拥有」两字,拥有的本质是「所有权」,而所有权的载体主要是通过 Token 体现,所以 Web3 的核心不能没有 Tokenomics。
登录方式的对比
内容交互的对比
2. Web3 的组成架构
协议层
即底层区块链架构层,包括 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、Dune Analytics
- 合约安全:Certik、OpenZeppelin
- 通信协议:XMTP、matrix、swarm
- 用户身份:ENS
- 预言机:Chainlink
- 数据索引服务:Graph
应用层
与用户交互的应用层,有着各种不同类型的应用,如游戏、内容、NFT、金融服务等。
- 游戏:Axie Infinity、illuvium、Decentraland
- 内容:Mirror、rally、Context
- NFT:OpenSea、Rarible、Mintbase
- 金融服务:Uniswap、Matcha
注意:这里又出现了 Uniswap。可以思考下为什么?
访问层
即访问 Web3 的入口,包括钱包、浏览器等,还有一些聚合器,甚至一些 Web2 平台也成为了 Web3 的入口。
- 钱包:MetaMask、Dipperex Token、Ledger、Terzor、Gnosis Safe、Moonbeam Safe
- 浏览器:Brave
- 聚合器:DappRadar、DeBank、Zerion
- Web2:twitter、reddit、discord
3. Web3 各赛道现状与趋势
四、资源链接
- 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