区块链基础(上)

小白入门: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. 私钥|地址

地址生成大致逻辑为:随机数-> 私钥-> 公钥-> 公钥哈希-> 地址

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

image-20230101173933979

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

以太坊地址生成在线工具:https://www.rfctools.com/ethereum-address-test-tool/

# privateKey:
A4657617423513817844D8BB5BAD89C1B9C1499D1E94875DC325BEA53526BDB4

# publicKey: 
f91339a26b4cb0059642665f46369c3569fc26597694aff84d908de5b4833b24ab5aad66b23f43ae3607aa9278f9829a7719fd9702493a789067fa8c7c0d98f6

#address: 
0xA8AdDb283a2AcdAc6DdE3Aa44e054A00836CCf0A

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

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

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

image-20230101180100016

BIP39:引入助记词

image-20230101174432315

我们知道私钥是可以管理地址的,但是私钥太难记了,是256位的0和1,因此后来有人提出了助记词的提议,从而有效的解决了私钥管理困难的问题。

还记得上面的12个单词么,它们就是助记词,即帮助你管理自己钱包的单词,助记词可以有多个单词(通常为12个),它们的:

  • 作用:帮助用户来更加方便的记住自己的私钥,管理财产(一套助记词可以派生N个钱包地址,小狐狸上可以点创建钱包,会自动生成新地址)。
  • 原理:将随机数通过特定编码转化为词库中的单词。

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

image-20230101175951612

3. 私钥签名逻辑

整个区块链系统依赖于非对称加密算法:

  1. 非对称的含义:加密和解密不是同一个密钥,区别于对称加密
  2. 场景一:使用公钥加密、私钥解密
  3. 场景二:使用私钥签名、公钥验证(==区块链依赖这个==)

对称加密:

image-20230105120529214

非对称加密场景1:公钥加密,私钥解密

image-20230105120613336

非对称加密场景2:私钥签名,公钥验证

image-20230105120635064

私钥签名完整流程图示:

image-20230105120036897

比特币真实交易,点击查看

4. 钱包分类

image-20230101194944453

硬件钱包示例:

image-20230117190548810

5. 中心化交易所做了啥

Not Your Keys, Not Your Coins

image-20230101182600843

6. 钱包的未来

EOA: externally owned account

CA: Contract Account

二、智能合约

智能合约属于应用层面的开发语言,每当我们提到区块链项目,一般包含两个层面的意思:

  1. 链条开发:聚焦在区块链本身,这相当于操作系统层面的项目(如Mac和Windows)
  2. 应用开发:聚焦在应用层面,如微信,手机银行等,在区块链领域,我们称之为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;
    }
}

演示:

  1. remix部署
  2. 浏览器verify

三、什么是 Web3(拓展知识)

Web3 (also known as Web 3.0) - by Wikipedia Decentralized Web and Semantic Web

1. 定义

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

  • Web1 是只读的,Web2 是读+写,Web3 是读+写+拥有。
  • Web3 是一个利用区块链技术实现无信任、无许可和去中心化的价值网络。

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

登录方式的对比

image-20230101135405648

内容交互的对比

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 各赛道现状与趋势

四、资源链接

  1. DAPP全栈教程:https://dukedaily.github.io/solidity-expert/
  2. Metamask下载链接:https://chrome.google.com/webstore/search/MetaMask?hl=zh-CN
  3. HD钱包拓展:https://www.arcblock.io/blog/zh/post/2018/12/01/hd-wallets-design-and-implementation
  4. 在线体验BIP32、BIP39、BIP44:https://iancoleman.io/bip39/#english
  5. 助记词库:https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt
  6. 演示比特币基础(账本):https://andersbrownworth.com/blockchain/hash
  7. 演示比特币进阶(签名):https://andersbrownworth.com/blockchain/public-private-keys/keys