从智能合约的演进看 Move 的架构设计 -...
Transcript of 从智能合约的演进看 Move 的架构设计 -...
![Page 1: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/1.jpg)
从智能合约的演进看 MOVE 的架构设计
王渊命 WESTAR 实验室 @jolestar http://jolestar.com
![Page 2: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/2.jpg)
智能合约是什么?
![Page 3: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/3.jpg)
限定在本主题下
智能合约是什么
▸ 运⾏在链上的,由⽤户⾃定义的程序
▸ 通过链节点的重复校验以及共识机制,使其具有不依赖于权威⽅的独⽴约束⼒
智能合约到底是什么?http://jolestar.com/what-is-the-smart-contract/
![Page 4: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/4.jpg)
回顾智能合约的演进 BITCOIN~ETHEREUM
![Page 5: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/5.jpg)
智能合约的演进
BITCOIN
▸ Locking & Unlocking Script
▸ Stateless
▸ Turing Incompleteness
![Page 6: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/6.jpg)
智能合约的演进
新的需求
▸ OP_RETURN
▸ Colored Coins
▸ Script read & write state?
![Page 7: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/7.jpg)
智能合约的演进
ETHEREUM
▸ Programmable Blockchain
▸ Statefull
▸ Turing Completeness
![Page 8: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/8.jpg)
智能合约的演进
新的问题
▸ 合约的抽象与跨合约调⽤
▸ 合约的状态存储
▸ 节点状态的⼀致性校验
谈谈区块链的 UTXO 证明 http://jolestar.com/blockchain-utxo-proof/
![Page 9: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/9.jpg)
智能合约的演进
ETHEREUM 的解决⽅案 - 合约的抽象和调⽤
▸ Interface
▸ ERC-xxx
▸ Token & Defi ⽣态
![Page 10: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/10.jpg)
智能合约的演进 ETHEREUM 的解决⽅案 - 存储与状态校验
![Page 11: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/11.jpg)
智能合约的演进
ETHEREUM 的问题
▸ 链上原⽣资产(Eth)和通过合约定义的资产(ERC 20 Token)之间的抽象和⾏为不⼀致
▸ 安全问题
可扩展性与确定性之间的⽭盾
合约间的调⽤问题(DAO attack)
▸ 合约状态爆炸
A Concurrent Perspective on Smart Contracts https://arxiv.org/pdf/1702.05511.pdf
Ethereum state fees https://github.com/ledgerwatch/eth_state/blob/master/State_Fees_3.pdf
![Page 12: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/12.jpg)
智能合约的演进
可能的解决⽅案?
![Page 13: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/13.jpg)
MOVE
MOVE 的解决⽅案
▸ First-class Resources
▸ Abstract by data not behavior(No dynamic dispatch)
▸ Use Data visibility & Limited mutability to protected resource
![Page 14: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/14.jpg)
MOVE
MOVE 基本概念介绍
▸ Module,Resource|Struct,Function
▸ Copy,Move
▸ Builtin:
• borrow_global<T>(address)/borrow_global_mut<T>(address)
• move_from<T>(address)
• move_to_sender<T>()
![Page 15: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/15.jpg)
⼀个简单的例⼦ COIN
定义
![Page 16: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/16.jpg)
⼀个简单的例⼦ COIN
如何发⾏
![Page 17: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/17.jpg)
⼀个简单的例⼦ COIN
如何使⽤
![Page 18: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/18.jpg)
⼀个简单的例⼦ COIN 如何转账
![Page 19: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/19.jpg)
⼀个简单的例⼦ COIN 如何扩展 - 以 HASHTIMELOCK 为例
![Page 20: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/20.jpg)
⼀个简单的例⼦ COIN 如何扩展 - 以 HASHTIMELOCK 为例
![Page 21: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/21.jpg)
⼀个简单的例⼦ COIN 如何扩展 - 以 HASHTIMELOCK 为例
![Page 22: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/22.jpg)
WHEN CODE IS LAW, INTERFACES ARE A CRIME.
tnowacki (Move Lang author)
不⽀持动态分发,如何抽象?
![Page 23: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/23.jpg)
不⽀持动态分发,如何抽象?
![Page 24: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/24.jpg)
MOVE
回顾⼀下 MOVE 的解决⽅案
▸ First-class Resources
▸ Abstract by data not behavior(No dynamic dispatch)
▸ Use Data visibility & Limited mutability to protected resource
Ledger Box
VS
Soldity Move
![Page 25: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/25.jpg)
MOVE 的状态存储
![Page 26: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/26.jpg)
MERKLE TREE ACCUMULATORMOVE的状态存储
frozen_subtree_roots[0]
frozen_subtree_roots[1]
A B
subtree[0]
C D E F
subtree[1]
G H I J
subtree[2]
K subtree[3] placeholder
placeholder
placeholder
old root
new root
![Page 27: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/27.jpg)
SPARSE MERKLE TREEMOVE的状态存储
![Page 28: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/28.jpg)
MOVE的状态存储
改进
▸ 每⼀个交易都关联⼀个全局状态(交易的全局证明)
▸ 同⼀个⽤户的所有状态都在⽤户路径下
▸ 状态空间占⽤租赁
▸ ⽤户状态淘汰
▸ ⼆层机制设计的潜⼒
![Page 29: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/29.jpg)
MOVE 的现状
▸ Move IR & Move source lang
▸ 泛型
▸ Account 状态拆分
▸ 集合类型⽀持
▸ 空间租赁机制
![Page 30: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/30.jpg)
总结
▸ 编程模型(First-class Resources,Abstract by data)
▸ 状态存储(所有权)
▸ 状态证明
![Page 31: 从智能合约的演进看 Move 的架构设计 - Westarwestar.io/blog/meetup/libra-20200104/ppt/libra_move.pdf · 2020-03-07 · ETHEREUM 的问题 链上 ... )之间的抽象和⾏为不⼀致](https://reader033.fdocuments.in/reader033/viewer/2022042515/5fadfdd180e064053e3cfcbf/html5/thumbnails/31.jpg)
Q&A