区块链技术与应用-ETH

北京大学肖臻老师《区块链技术与应用》公开课
课件下载

ETH-以太坊概述

比特币 vs 以太坊

*比特币以太坊
简写BTCETH
最小计量单位Satoshi(一聪)Wei(一维,Dei Dai)
出块时间10分钟十几秒
奖励机制proof of workproof of stake
智能合约不支持smart contract
中心化decentralized currencydecentralized contract
账户基于tx的账本基于account账户

memory hard mining puzzle 比拼计算hash值的算力,导致挖矿设备的专业化
ASIC resistance

ETH-以太坊账户

比特币中一笔tx out必须一起花完,同时需要说明币的来源,需要将剩余的币拆分转回自己
double spending attack
BTC转账
以太坊采用基于账户模型的协议,不需要说明币的来源,也不需要进行拆分
replay attack,nance(交易次数)防御
account-based ledger
不需要拆分
以太坊账户分为:externally owned account(包含balance,nonce)、smart contract account(包含balance,nonce,code,storage,不能主动发起一个交易,每个合约有一个地址,需要交易时可以调用合约)
以太坊发明者Vitalik(当时19岁)
financial derivative

ETH-状态树

账户地址 到 账户状态 映射
160bits 长度地址 40位16进制数
trie retrieval 字典树
branching factor 0~f
trie
优点:

  • 每个节点的分支数目取决于key值的取值范围(如英文由26个字母组成,加上一个结束标志位,最多分支数目为27,以太坊40位地址,树的每个节点取值为16进制 0~f ,分支数目为16)
  • 查找效率取决于key的长度
  • 不会出现hash碰撞
  • 插入顺序不同,最终生成的是同一个树
  • 更新局部性较好
    缺点:
  • 存储浪费

Patricia tree/trie 压缩前缀树
Patricia tree

优点:

  • 树的高度减少,效率高

添加新记录可能会导致原来分支拆分,如添加geometry未压缩
压缩
键值分布比较稀疏的时候,压缩前缀树效果比较好。以太坊的地址2^160,使用Patricia tree作为数据结构
Merkle Patricia tree 以太坊中有三个merkle patricia tree(balance,code,storage)
MPT -> Modified MPT

状态树范例:状态树
两个相邻区块
下一个区块可能会指向上一个区块的地址(因为部分状态树未发生变化)
两个相邻区块
以太坊出现分叉时,需要回滚操作,所以需要保存历史记录
roll back
Ethereum Header
Ethereum Header
区块结构区块结构
(key,value) -> RLP:Recursive Length Prefix 简单的一种 nested array of bytes
protocal buffer protobuf

ETH-交易树和收据树

bloom filter 不支持删除操作
bloom filter
digest
transaction-driven state machine

创建新区块:
创建新区块
DeriveSha:
DeriveSha
Trie
Trie
Receipt:
Receipt
Header:
Header
Bloom:
Bloom
BloomLookup查看是否存在需要查询的交易:
BloomLookup

ETH-GHOST

BTC分叉
GHOST
ETH分支
最多包含两个uncle block
at most seven generation:
at most seven generation
uncle奖励机制,尽早合并奖励更多,分叉中只有第一个区块会获得奖励
block reward + gas fee
fork attack
etherscan.com 可实时查看当前以太坊的状态

ETH-挖矿算法

Block chain is secured by mining.
bug bounty
BTC:one cpu, one vote
ETH:专用挖矿机
ASIC resistance
memory hard mining puzzle:LiteCoin:scrypt
time-memory trade off
16M cache 1G dataset DAG

ethash算法
Pow -> Pos Proof of stake
pre-mining pre-sale
第一步
第一步
第二步
第二步
第三步
第三步
挖矿函数
![挖矿函数(https://img-blog.csdnimg.cn/20210201154504561.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JFWDExMjk=,size_16,color_FFFFFF,t_70)

挖矿主循环
所有函数集合
所有函数集合

ETH-难度调整

区块难度
区块难度
自适应难度调整自适应难度调整
难度计算公式
难度计算公式
难度炸弹
难度炸弹
难度炸弹威力难度炸弹威力
以太坊发展的四个阶段
以太坊发展的四个阶段
具体代码实现
具体代码实现
基础难度部分调整
基础难度部分调整
难度炸弹计算
难度炸弹计算

ETH-权益证明

Proof of work
TWh = Treawatt hours 10^12
KWh = Kilowatt hours 10^3
Proof of stake、 Proof of Deposit
virtual mining
Alt Coin Infanticide
nothing at stake无利害关系
Casper the Friendly Finality Gadget(FFG)
Validator epoch two-phase commit
2/3 prepare message
2/3 commit massage
权益证明1
权益证明1

权益证明2
权益证明2
finality

ETH-智能合约

什么是智能合约?

智能合约是运行在区块链上的一段代码,代码的逻辑定义了合约的内容
智能合约的账户保存了合约当前的运行状态
balance:当前余额
nonce:交易次数
code:合约代码
storage:存储,数据结构是一颗MPT
Solidity是智能合约最常用的语言,语法上和JavaScript很接近
Solidity语言

外部账户如何调用智能合约?

创建一个交易,接收地址为要调用的那个智能合约的地址,data域填写要调用的函数及其参数的编码值
调用智能合约
一个合约如何调用另外一个合约中的函数

  1. 直接调用
    直接调用
  2. 使用address类型的call()函数
    address类型的call()函数
  3. 代理调用delegatecall()
    代理调用
  4. fallback()函数
    fallback函数
智能合约的创建和运行智能合约的创建和运行
汽油费

gas fee
Halting Problem不可解
NPC可解

错误处理错误处理
嵌套调用

嵌套调用
gas limit 可调整 1/1024

智能合约先执行才能获得三个根hash值,然后才能发布区块,未发布区块不会获得任何补偿

Receipt数据结构

Receip数据结构

智能合约可以获得的区块信息

智能合约可以获得的区块信息

智能合约可以获得的调用信息

智能合约可以获得的调用信息
智能合约中地址类型
智能合约中地址类型
所有智能合约均可显式地转换成地址类型

三种发送ETH的方式

三种发送ETH的方式
transfer会导致连锁式回滚,send不会导致连锁式回滚
call会把剩余gas发送过去

一个例子:拍卖

拍卖
拍卖用到的两个函数拍卖用到的两个函数
第一版
拍卖案例
Code is low,irrevocable trust

第二版:由投标者自己取回出价
第二版
重入攻击
重入攻击
防止重入攻击在这里插入图片描述
防止重入攻击

ETH-TheDAO

DAO:Decentralized Autonomous Organization
DAC: Decentralized Autonomous Corporation
The DAO
split DAO
child DAO
split DAO
too big to fail
ETH -> ETC:Etherrum classic
chainID

ETH-反思

  • Is smart contract really smart?
    Smart contract is anything but smart.
  • Irrevocability is a double edged sword
  • Nothing is irrevocability
    Prohibition 18 -> 21
    Open container lows
  • Is solidity the right programming language?
    Ocaml formal verification
  • Many eyeball fallacy
  • What dose decentralization mean?
  • decentralized ≠ distributed
    state machine
    mission critical applications
    air traffic control
    stock exchange
    space shutlle

ETH-美链

Beauty chain

背景介绍:
背景介绍

一行代码蒸发了¥6,447,277,680 人民币!

ICO:Initial Coin Offering
IPO:Initial public Offering
EOS DPOS

ERC:Ethereum Request for Comments
batchTransfer实现
第三行会出现溢出,攻击细节
攻击细节
攻击结果导致ETH价格大跌
攻击结果
暂停货币提取
预防措施

ETH-课程总结

不可篡改不保证正确性
去中心化和完全去中心化
加密货币不是与已有货币竞争 跨境支付
Information can flow freely on the Internet,but payment cannot.
AT&T:American Telephone and Telegram
Software is eatting the world.
Democracy is the worst form of Government except for all those other forms that have been tried from time to time…
Is decentralization always a good thing?
If the business model is bad, it’s still bad on the Internet.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值