13th BIU winter school
What are Blockchains and What are They For? - Dan Boneh
如果有可信方,不需要区块链技术
比特币的创新:实际的公开可写的数据结构
以太坊的创新:可编程的环境,应用可以互相调用
区块链通过复制的方法实现只能写的功能
- persistence: 只能写,不能删除
- liveness: 诚实节点可以添加新的交易
- 抗审查
和web2的区别是真正的状态存储在链上,而不是数据库
资产由DAPP管理,和现实的金融机构不同,具有透明性
2 application areas
DeFi
任何人都可以建立金融基础设施
应用之间可以交互,只要满足ERC-20标准 6个函数
为什么需要DeFi
- 垮境手续费
- 经济可能不稳定
- 经济状况不好时不适合使用银行
Time will tell
DAOs
- 运行在特定地址的的DAPP
- 任何人可以给DAO捐钱
- 任何人可以发起请求
- 投票(链上投票,链下可以用snapshot.org,如果通过再上链)
- 如何链下投票,安全地把结果转移到链上是个问题
- 同意,执行
- 投票(链上投票,链下可以用snapshot.org,如果通过再上链)
甚至有全日制员工,自己的博物馆,工资被program支付
gitcoin 写开源代码,给开源者打钱
直接民主,direct governance,导致了参与度非常低
liquid democracy,也就是代理民主
政治学家可以进行民主实验,而不用建立一个新的国家
2021年 Constitution DAO 但是输了
如何建立一个有secret treasury的DAO
一个dapp,管理DAO的集合
问题是不知道DAO为什么要投资呢
跨链
现实生活中有审计员,区块链可能需要对付款能力的零知识证明
An Overview of PoW and PoS Consensus - Valeria Nikoaenko
Definiation of blockchian
consensus不需要协商整个账本的历史,只需要协商最新的区块并达成一致
safety:
liveness: means not consoring, malicious
实际像是key-value对,每个区块是对币的重新分配
D是一个状态
节点负责打包交易出块
client作为用户,发送交易,身份可以重合
选举领导者的过程简化了共识的过程(选项更少)
假设了理想情况下节点对交易的内容是客观的,但实际上节点会有意见
PoW vs PoS
共识机制consensus 包含两部分
- 选举出块者
- 每个参与者决定是否接收区块
工作量证明增加了成为出块者的门槛,系统更容易选择如何出块
虽然很浪费资源,但是没有挖金矿浪费资源
比特币和以太坊占了时长的80%
考虑设计密码系统的成本时,可以参考,计算$2^{76}$次哈希的成本约为$150,000$刀
如何设计更好地PoW
- proof-of-useful-work:解决实际问题
减少PoW使用的频率:PoW选举领导者,每个任期多次出块
挖矿的收益和投入之间成比例
在PoS中矿工的收入和存的钱相关,任期结束后归还,提供了惩罚的方法;和Pow的区别是:在PoW系统中如果想要退出,已经购买的硬件成本无法像PoS一样回收
在代理PoS中,借出权益也会获得收益
非常成功,全球用电量降低了0.2%,ASIC用户可能转向其他Pow的区块链或者零知识证明的
An application-specific integrated circuit (ASIC) is an integrated circuit chip designed for a specific purpose. An ASIC miner is a computerized device that uses ASICs for the sole purpose of “mining” digital currency. Generally, each ASIC miner is constructed to mine a specific digital currency.
Longest chain vs BFT
BFT是为了设计可靠的分布式系统提出的,但是需要预先知道验证者的规模
推荐的学习资料
Latest message-driven greedy heaviest observed sub-tree
未被选择的区块内的交易重新回到交易池等待被打包
最长链方案存在的问题:
双花攻击,确认结果是概率的,等待时间越长,确认的正确概率越高
对用户不友好,可能需要等待1h-1day
在分片下不安全,可能会出现冲突的链
Responsiveness指网络越快,完成协议越快
Hotstuff的创新点在于:
将消息重新发回Leader,让Leader再广播,避免了$n^2$的复杂度
支持并行
保证了3个区块后就一定会被确认
当验证者的数量增加到大于100时,效率会非常低,延迟会很高
混合的协议
An Overview of the Ethereum Excecution Layer - Dan Boneh
先上一节crash course
状态转移函数,什么是world state
这次讲座主要介绍execution_layer
The Ethereum Compute Layer: The EVM
从顶向下进行介绍
状态空间很大,$2^{32}$
人类的代码站在了同一个层次
线性计算复杂度
四种类型的交易,contract也可以给contract转钱
交易的内容
来自contract的交易不会被签名
目的地址为0时相当于建立新的账户,输出hash(your address,your notes)
如何在链上存储secret key?
nonce机制是为了防御重放攻击,但仍然可能存在跨链重放,设计了chain_id字段
如果同一个nonce被使用多次,只有其中一个交易会被接受,其他会被拒绝
提交的代码占的空间越少越好
archival 存储了所有的历史
log message for:记录了合约做了什么,如果发起了一个换钱交易,log可能记录了将多少转换为多少
存在front running attack](https://www.halborn.com/blog/post/what-is-a-front-running-attack))
Front-running attacks take advantage of this process of adding transactions to blocks based on transaction fees. An attacker has the ability to ensure that their transaction is processed before any other transaction by including a higher transaction fee with it. This is called a front-running attack.
nameLookup函数是为其他智能合约设计的,brain of the contract
如果把秘密放在链上
为什么使用name而不是直接使用地址:
- name的代价是付出成本,convenience costs money
- 某种意义上将name可能更安全,address可能存在typo
目前存在系统中的小bug:由于交易的目的地址可以是虚假的地址,造成了不存在的地址却拥有账户余额的情况,如果智能合约的编写假设了余额为0,可能产生bug
一般数据存在链下,链上存储承诺
log是执行层产生的,但是执行层不能读
CeFi Versus DeFi - Arthur Gervais
Defi存在于application logic state层 ,将逻辑编码在应用程序中
设计的composability使得应用之间能够进行交互
标准保证了composability
arbitrage:套利
What Is a Bear Raid?
A bear raid is an illegal practice of colluding to push a stock’s price lower through concerted short selling, while spreading negative rumors about the shorted company. A bear raid is sometimes undertaken by unscrupulous short sellers who want to make a quick buck from their short positions, leveraging social media platforms and online message boards.
what is stable coin like USDC?A stablecoin is a digital currency that is pegged to a “stable” reserve asset like the U.S. dollar or gold. Stablecoins are designed to reduce volatility relative to unpegged cryptocurrencies like Bitcoin.
由于比特币缺乏接受外界输出的能力,需要使用Oracle和现实世界交互.区块链外信息写入区块链内的机制,一般被称为预言机 (oracle mechanism) 参考](https://zhuanlan.zhihu.com/p/52369816))
Oracle需要了解实时的汇率
custodial就是类似于银行的机构,保管大部分资产
任何参与者不能有优势来审查交易和协议执行
FAFT gives examples but not standards.
如果有节点能独自审查交易,可能会要求KYC/AML
稳定币可以冻结一些地址,减少攻击带来的危害 2周前发生过
usdt可以销毁
limit order book
买卖订单可以分为市价订单(market order)和限价订单(limit order),市价订单是指当交易者想要尽可能快速地执行目标交易指令,从而以市场最优价格发出的订单指令;限价订单则区别于最优价格,交易者会在订单中指定买入的最高价格或者卖出的最低价格,以及对应的订单规模,等待市场价格变动后到达自己的目标价位,再进行撮合成交。这些限价订单被交易所整合到一起并挂出,就是我们所介绍的限价订单簿。因此,限价订单簿(limit order book, LOB),顾名思义,也就是市场上限价订单的集合簿。
什么是Uniswap? 史上最全新手导读 - 知乎 (zhihu.com)
如何免费发送交易,using relayer,如果失败了不需要付款
在Defi中抵押的价值通常比借的数额更多
杠杆是导致借贷流行的重要因素
主要用来交换担保或者套利
可能会被拿来进行投票(虚假的权益),makerDAO,已经修复无法进行投票 ;
可能会被用来套现
rational矿工实际可以在打包交易时本地运行程序来检查自己能否复现套现的操作,为自己谋利
如果钱包的私钥泄露,可能存在跨链的安全性问题
GameStop
Hard Problems in Blockchains - Valeria Nikolaenko
Long-Range Attack
虽然讲的是困难问题,实际上区块链系统运行的很好,更加高效节约能源(不要被吓到233)
出块时锁定了自己的权益,如果作恶会被惩罚
考虑验证者的生命周期,当不再持有财产后没有保存旧的密钥的动机
PoS中敌手很容易做到分叉,PoW中不适用
当以前的私钥泄露后,敌手可能轻易伪造一条和当前链长度相同的分叉
当验证者密钥最少的时候最容易受到敌手攻击
将主链的区块哈希硬编码在中心化组织,比如github
- 如果不中心化,检查点的哈希可能不一样,如何协商/选择
- 可以把检查点写在PoW区块链上(目前最实际的做法)
- 如果安全性依赖PoW的链,PoS也没有那么节约电力
如果不验证轮换密钥,更加容易攻击。考虑在$t_4$攻击两个节点很困难,但是等价于在$t_2$攻击相同的两个节点
核心思想是激励验证者更新密钥
公钥不变,更新私钥,但是会泄露部分信息,私钥会变得越来越弱
假设相信他们会忘记旧的密钥
如果验证者知道未来可能通过出售私钥获利,无法假设验证者是诚实的,因此无法解决实际问题
以太坊建议的解决方案 ,问题是实际上验证者和客户端不会一直查看链的状态
开始介绍自己发的文章,引入了第二层共识
如果区块链生成区块的速度很快,用户发起的交易的last_block字段很可能落后于当前区块,可以考虑设置此字段为更长的时间间隔,比如epoch
第二层共识需要用户在线,实际的场景可能没有这么多用户在线,考虑代理或降低交易费
验证者可能会更加倾向于打包一些交易,不再客观
假设所有用户知道当前正确的链是哪一条,预防了敌手不知道在哪条冲突的链投票的情况
存在潜在中心化的问题:用户的对链上信息的了解可能来自某些中心化机构,比如交易所;本方案要求用户对比各个信息源的
方案类似于要求用户参与链的安全性
Proposer Election in PoS
如果T的值很大,攻击者很容易引诱leader或者进行Dos攻击
循环选择显然不满足不可预测性和无偏性
使用RB的问题在于出现了循环依赖关系,一般的解决方案是当前轮固定proposer的schedule
以太坊采用的drb
节点可以选择提交$v_i$或者保存,但是VDF保证了无法预先计算随机数的值,不具备提前进行判断的优势
问题是目前的实践部分,VDF的理论构造很好,但是实际的构造基于class group,很多人不看好;
以太坊的构造是对同一个函数的多次计算并给出证明,未来很可能会出现可用的
为了保证VDF无法被加速,需要在ASIC进行验证(很贵)
ethereum
Post-quantum blockchains
PoW机制也存在问题,量子矿工能在$T$时间搜索$T^2$的空间,可能传统矿工挖矿的动机会消失
hash函数的困难性依然得到保证
后量子签名的大小显著增加
可以采用零知识证明证明自己拥有seed来宣称所有权
The Risk of Censorship and De-anonymization - Arthur Gervais
define censorship:
- 某个矿工忽略某个交易,属于censor吗
- 许多矿工故意不传播某个交易,属于对该交易censor
- 如果网络发生了分片,可能是一种censor
Q:为什么tornado cash只实现输入1eth拿出1eth而不支持1.1eth进1.1出
A:如果进入的输入不固定为1,10,100,敌手容易观察出身份
Q:who pays for the gas?
A:存在一个第三方,需要混币的人向第三方发送证明,第三方负责给mixer支付gas,然后从需要混币的人从池子中拿回的钱里取一部分做补偿
- 或许可以拿存的钱来挖矿,类似于银行
mixer的用户足够多时,才能够保护用户的隐私。同时还需要浏览器,ip地址可能泄露隐私的保护。
相当一部分来自TC自己,说明可能经过多次混币
制裁之后TC的存款量减少为以前的20%
多次混币
但是从矿池角度来看,制裁之后包含TC交易的矿池几乎没有了
以太坊目前有四类实体
- searchers 逐利,可能在套利/清算,将交易发给builder
- builder负责将交易打包为有序的区块,发给relayer
- relayer选择出价最高的交易交给validator出块
究竟谁在参与censor?
图中的绿色区块是包含TC交易的区块,即认为是没有被审查过的
该网站提供了以太坊的四类实体的交易区块的可视化 mevboost.pics | MEV-Boost Dashboard
Maximal Extractable Value (MEV) is a method for miners or validators to increase their profits by changing the order of transactions before approving a new block on the network. MEV refers to profits that can be made by extracting value from Ethereum users by reordering, inserting, or censoring transactions within blocks being produced. It is one of Ethereum’s biggest issues, with more than $689 million extracted from users of the network year-to-date.
TC交易被ban掉的这一现象可能就是一种censorship
blender.io不是智能合约,由第三方实体提供混币服务,当OFAC开始后,服务几乎停止了(相对于智能合约,代码开源,更难容易关停)
Q:security implications of censorship?
如何判断交易确认延迟:引入挖矿矿池之外的节点spy node
实验结果显示censor 交易确认时间出现了变化15.8s-29.3s
但是实验无法区分是sanction导致了变化还是ethereum的proposer builder(M PBS)区分导致的
接下来考虑DOS的部分,核心思想是让节点执行工作却不付gas ,前提条件是发起交易比验证更廉价
如何设计攻击:交易前面都是复杂的逻辑,但是最后是TC,由于节点想要监管,并不会将交易包含在区块内,类似于让validator打白工了
存在问题:如何得知哪个validator在执行交易
已经解决:查看每个块的coinbase交易,可以区分执行censoring和不censoring的miner
后续可以设计更加精巧的攻击方案:如果可能得知下一个validator会censor再攻击
通过这个问题,提出了Censor可能引入被Dos攻击这一问题
Q:如果所有的validator开始审查,是否可以通过硬分叉来实现先拿到fee再执行
A:可能存在的
What Are Snarks and What Are They Good for? - Dan Boneh
Intro
40年发展,第一行是提供snark的公司,第二行是使用snark的公司,第三行是研究snark硬件加速的
ZNARK发展快速的原因
what is layer1 blockchain
Layer 1 refers to a base network, such as Bitcoin, BNB Chain, or Ethereum, and its underlying infrastructure. Layer-1 blockchains can validate and finalize transactions without the need for another network. Making improvements to the scalability of layer-1 networks is difficult, as we’ve seen with Bitcoin. As a solution, developers create layer-2 protocols that rely on the layer-1 network for security and consensus. Bitcoin’s Lightning Network is one example of a layer-2 protocol. It allows users to make transactions freely before recording them into the main chain.
讨论两类区块链:
- 外包计算的:没有隐私,不需要ZK,但是链上存储非常昂贵,交易需要快速被验证
- 跨链:对旧链资产进行证明,B链证明
- 如何实现资产的跨链?在旧链上lock资产,新链得知存在被locked的资产
- 需要保护隐私的链
- 证明加密的交易有效
- 证明交易是可偿还的,证明资产
研究的目的:证明更短,验证更快,生成证明更快
区块链驱动了SNARKS的发展,许多其他的与区块链无关的应用收益
Zero Knowledge Canon, part 1 & 2 - a16z crypto
what is SNARK?
算术电路,n元多项式的评估方法
pp is prover parameter,vp is verifier parameter.
next
NARK is trivial
NARK with succint
任何比trivial NARK更好的方法都很有意义,比如当证明的长度为sub-linear
目前有的SNARK证明的长度和验证的时间都是常数
比较有趣的地方:验证者甚至不能完全读入C就要做出验证?实际上VP是C的一个总结
这次讲座主要讲SNARK,存在从SNARK到zk-SNARK的通用构造,因此困难的部分在构造SNARK
zero-knowledge可能不公开witness
现实中使用snark并不需要写算术电路,已经有了domain-specific的语言,建议学习
采用dsl写好后编辑器编译为SNARK友好的形式:circuit/EVM
给定输入x和witness产生证明的过程可能需要很多的计算
但是输出很可能是简单的几百个字节,DB建议打印在T恤上
问题是谁来执行高昂的运算?现在有专门的公司
未来可能会有证明市场,证明者选算力提供者来产生证明,臭打游戏的显卡空闲时也可以用来产生证明
存在树形的递归证明,prover3不证明交易,证明prover1和prover2
non-interactive表现在verifier的验证阶段
think:who gets paid?
为什么不能哪个节点先响应就把证明任务交给哪个节点?如果这样设计,永远都是硬件最强的节点进行证明,存在中心化的风险,因此市场需要指派由哪个节点来证明,这里需要设计界复杂的机制,可能会有密码的应用
为什么要去中心化?出于对效率的考虑而不是安全的考虑,现有的算力是分布式的现状
如果witness是保密的,可以采用秘密分享,分拆后的份额分别进行证明
证明的交易之前可能存在一致性的问题,tx1的输出可能会影响tx3
applications of SNARKs-Tornado
只有名字里没写zk的Tornado使用了零知识证明(乐
Q:目前zkRollup在实际的full contract中运行,效率如何
A:硬件问题,是可以并行的,需要更多GPU即可
DAI是稳定币,1000dai约为1000刀乐
看起来人畜无害(benign)
coin merkle tree存了当前存储的所有coin,链上存储过于昂贵,链上只存merkle root
nullifier
当Alice想要存100DAI时,给出MerkleProof(4)
和C_4
,发送的证明必须和当前的next
字段值相同
合约检查证明,计算更新后的merkle_root
,更新状态
Alice保存hash的原像即可作为取钱的凭证
存在的问题:observer知道谁存在哪个叶节点
当Bob要取钱时证明自己有nf,不泄露存的是哪个币
(i)在10年前是不可能高效证明的,但是由于zkSNARK的发展,现在浏览器的JavaScript几秒内就能够完成
A作为输入但是没有使用:在假设敌手不能扩展的情况下,用来防御重放攻击
一般的论文会证明soundness,但是实际上不可延展性非常重要
取完钱后需要新加上nf
设计的很好,然后被别人拿来洗钱了
吃一堑长一智:支付系统中完全的匿名化问题多多
如何设计
显然不可以,攻击者可以使用proxy
Tornado的匿名性可以通过存储的时间来增强,存的时间越长越不容易被链接起来
Permissionless Consensus I - Rafael Pass
future self-consistency sometimes are neglected
$\Delta$ should be polynomial,比特币假设为10s(非常悲观的取值),实际可能2s已经到达了99%的网络节点
传统的许可链,参与者很少(10),参与者的数量固定,身份已知
协议执行期间节点不会掉线
节点之前存在认证信道/PKI
实际上认证信道和PKI的区别分长达
为什么加一个节点就能保证consistency and liveness
economic robostness指因为节点可能随时离开或加入网络,需要设计激励机制
敌手能够伪装为good guy的代价太低了
不再依赖于诚实节点的占比,依赖于计算能力
考虑一个人恶意
诚实节点遵循最长链原则
chain quality: get paid for their work
如果有了一个区块链系统,如何得到consensus?
- 去掉最后k个区块,实现consistency
- chain is going… even bad guys are censoring
看上去chain quality不是最优的:诚实节点比例为1-p,但是得到的链质量为$(1-p/(1-p))$
实际上这已经是最优的
敌手可以获得比恶意算力更多的收益:自私挖矿
比特币看起来是一个半同步的网络假设,没有用到$\Delta$,但是挖矿的难度$d$隐含了这一条件
如果网络中的最大时延超过10mins,协议不再安全