区块链基础(上)
小白入门: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(1100+ star)
- 比特币学习:https://github.com/dukedaily/go-bitcoin-demo
一、区块链概述
1. 区块链
什么是区块链?这本是一个笼统的概念,网上描述的天花乱坠,我这里将其简化为几个小概念,消化了就入门了:
- 交易:在区块链世界里面,我们把所有的交互行为(买东西、投票、转账)统称为一个交易(Transaction,简写为Tx)
- 区块:在一个特定的时间段内(如10分钟)会产生N笔交易,我们把这些交易打包到一起之后,称之为区块(Block)
- 区块链:在更长的一段时间内(如60分钟)会产生很多区块,我们这些区块(Block)以特定的规则链接🔗到一起之后,就称之为区块链(Blockchain)
快速记忆:
- 交易:需要存储的用户信息 (一封信)
- 区块:对多个交易打包(一个盒子,里面装了一沓信)
- 区块链:对多个盒子按照序号关联起来(关联意味着记账)
- 共识机制:竞争规则(谁来记账)
- 哈希算法:每个盒子序号的生成以来的算法
哈希算法
hash就是内容的指纹,与内容一一对应,在线演示,hash在区块链中的用途:
- 将区块前后链接起来
- 将私钥和地址链接起来:私钥-> 公钥-> 地址
- 私钥签名
- 快速校验交易有效性
Hash算法的特点:
- 唯一性(你的指纹不会变化)
- 抗碰撞性(没有人和你撞指纹)
- 不可逆性(通过指纹无法还原你这个人)
传统记账方式
区块链记账方式
记账方式对比
对比项 | 传统记账 | 比特币记账 |
---|---|---|
交易记录存储位置 | 账单 | 区块 |
周期 | 记账 写满了翻⻚(无论时间多久) | 10分钟翻⻚(无论交易多少),==地铁== |
记账人 | 老会计 | 比特币客户端节点 |
奖励 | 死工资 | 记账奖励+手续费 |
记账成本 | 鸵⻦蓝黑墨水 | 非常耗电/ 设备损耗 |
账本数量 | 1 | 所有节点人手一份 |
区块链记账完整过程
交易签名(第二节会讲细节)
P2P网络(Peer-To-Peer)
矿工、挖矿、算力
对于一个特定的区块链项目,其区块的产生、链接、同步方式、同步时间等是有特定的规则的,大体上可以用下面这张图来描述。
- 第一步:由用户自己创建交易(转账等),私钥签名
- 第二步:由矿工校验交易,打包到本地交易池,并广播改交易
- 第三步:下一个记账周期开始时,开始进行挖矿竞争
- 第四步:矿工A挖矿成功,全网广播
- 第五步:多个矿工对挖矿交易进行确认无误
- 第六步:矿工A获得挖矿奖励,全网同步账本,重复第一步
出块逻辑:
2. 比特币
还是要说说比特币,它诞生于2009年,最初是C++实现的,它的功能非常纯粹:就是用来转账的,基本没法在上面做二次开发,比如想自己基于比特币开发一个DAPP(去中心化应用),这个是不可能的。
这也是为什么后来会出现以太坊这个区块链项目,以太坊的存在弥补了比特币无法二次开发的问题,不过这也是中本聪(比特币的创造者)的本意,咱不搞那些花里胡哨的功能,聚焦金融,安全稳定。
在线演示
- 演示比特币基础(账本):https://andersbrownworth.com/blockchain/hash
- 演示比特币进阶(签名):https://andersbrownworth.com/blockchain/public-private-keys/keys (讲完钱包地址后再演示)
- demo的难度值:0001000000000000000000000000000000000000000000000000000000000000
在币圈一般都称之为:大饼,各种牛鬼蛇神币种的涨跌基本完全看大饼的脸色,大饼每四年减产一次(即挖矿的奖励减半),大约在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)的概念,并将其定位为:下一代加密货币与去中心化应用平台,并拉开了一个新时代的序幕。
比特币vs以太坊
- 功能定位不同:BTC为金融转账而设计,Ethereum是一个操作系统,==可以运行程序==(世界级计算机);
- 账户体系不同:BTC和以太坊的账户体系完全不同,比特币是找零机制,以太坊是账户体系;
功能定位不同
- 比特币本身就是有价值的数字黄金,专用于金融。
- 以太坊ETH自身不是为了金融转账,以太坊的主要目的是支持智能合约。由于需要用ETH来支付调用合约的gasfee,所以ETH才有价值。
账户模型对比
UTXO:unspent transaction output,未消费的output,里面是用户持有的btc,相当于零钱
4. 公链|联盟链|私链
5. 共识机制
POW
工作量证明(POW:Proof of work)是指出示结果表示你做过一件事情,获取结果的过程很曲折,验证 却很简单。
计算过程如下图:(在线工具演示)
POS
Proof of Stake权益证明,2022年9月15日,以太坊由pow转为pos,为后续的以太坊2.0做准备,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,点击查看
6. 其他概念
分叉、双花,详细介绍,点击查看
不可能三角:可扩展性、去中心化、安全性