--- type: slide --- <!-- .slide: data-background="https://upload.cc/i1/2022/10/24/Zacl5b.png"--> <style> .small {font-size: 24px;} .medium {font-size: 30px;} .hl {color: #fcba03;} </style> # Aptos Dev ## @MH 參考資料: [Aptos Development Doc](https://aptos.dev/) [Aptos 白皮書](https://github.com/aptos-labs/aptos-core/blob/main/developer-docs-site/static/papers/whitepaper.pdf) [FTX Aptos Research](https://help.ftx.com/hc/en-us/articles/10138760727956-Aptos-Research-Report) [0xnz.com](https://0xnz.com/why-move-will-overtake-solidity-as-the-mainstream-programming-language/) --- # MH 自介 ## Software Architect - Fintech 公司共同創辦人&技術長 - 製作一付款使用ERC20的電商網站 (2017) - 交易策略撰寫 - USDT/USDC 放貸腳本 --- # Agenda - Move語言的起源 - Aptos 跟其他公鏈差異 -- 以資源(resource)為核心 -- 安全 -- 快速 -- 可升級 - Aptos 生態系 --- # Move語言的起源 - 2019 原為facebook(fb)的穩定幣項目Libra - 2020 Libra項目脫離fb,改由獨立機構運作,改名為 Diem - 2022 Diem 還是無法突破監管壓力,賣給了Silvergate --- # Aptos # 跟其他公鏈差異 --- # 以資源為核心 # 安全 ---- # Move語言 ## 繼承 Rust 優秀特性 ## 同時又針對區塊鏈的需求作特化 - 強調資源稀缺性(resource scarcity), 保存性(preservation), 和存取控制(access control) - 每個資源皆有:生命週期(lifetime), 存儲(storage), 和存取控制 - Move Prover: 官方bytecode驗證器,確保型別跟記憶體安全 ---- ## 資源導向的語言Move 1. 資源定義與控制權限分離 2. 靜態型別 (static typing) 3. 泛型 (generics) 4. 模組系統 (module) 5. 形式化驗證 (formal verification) ----  ```js // 'store' ability represent value stored in global storage struct Coin<phantom CoinType> has store { value: u64, } // 'key' ability represents the coin for each address (as key) struct CoinStore<phantom CoinType> has key { coin: Coin<CoinType> } ``` <span class='small'>[Reference](https://github.com/move-language/move/tree/main/language/documentation/tutorial)</span> ----  mapping(address => uint256) ---- ## 資源的屬性 | ability | 描述 | | ------- | ------ | | key | 可索引,此型別可以存在帳號下,可成為Resource | | store | 可存儲,可以存儲在 ledger state (gloabl storage),不只是模組內計算方便而定義 | | copy | 可複製 | | drop | 可銷毀 | ---- ## 資源權限分離 - Solidity 的資源存儲在合約下,透過 Map 形式儲存用戶的資產,若是合約的 owner 私鑰被取得。所有用戶的資產都會被攻擊 - Move 的資源存儲在每個用戶的帳戶下,真正的作到資源的所有權歸屬於用戶。合約的 owner 沒有修改數據的權限 ---- ## 資產轉移的差異 - Solidity: 資產轉移是透過加減法 (可override把實作任意增減)  ---- ## 資產轉移的差異 - Move: 資產轉移是`移出`再`移入`  --- ## 靜態型別 (static typing) - 變數宣告時,型別即確認 - 型別不能任意轉換 - 若有誤用,編譯階段便可以發現。不至於在執行階段產生錯誤 --- ## 泛型 (generics) - 強型別 - 不需做轉換  --- # 模組系統 (Module) 合約的可組合性 - 包含資料型別(struct)以及操作介面(function) - Solidity 的可組合性建立在Interface間透過消息傳遞進行的組合 (輪胎規格) - Move 則是透過 Module 間可升級的組合 (輪胎跟規格) --- # 形式化驗證 (formal verification) - Move Prover (MVP) 防止Move語言編寫合約存在錯誤而設計 --- # 快速 ---- ## 並行處理(Parallel Execution)  - Sequential Execution: EVM - Parallel Execution - UTXO: Bitcoin - Block STM: Aptos <!-- - Sui --> ---- # Block STM - STM: Software transactional memory - Detech & manage memory conflict - Optimistic concurrency control  無關聯交易 => 同時執行 有關聯交易 => 依序執行 <span class='small'>[Reference](https://blog.chain.link/block-stm/)</span> --- # Aptos explorer  --- # 可升級性 - 升級會根據upgrade policy (compatible/immutable) - default policy:compatible - 升級只會發生在 - 沒有已存在的 public APIs - 沒有破壞原有的 resource storage Move.toml ```yaml= [3-4] [package] name = "MyApp" version = "0.0.1" upgrade_policy = "compatible" ... ``` ---- # 升級竄改底層邏輯? - 合約能升級,但是有限制 - 在 mint 完初始規劃的總數後,會把 mint 權限拿掉 => 無法憑空創建更多資源 - 合約升級只是個工具,不是個目的。需要治理來協作 --- # Q & A ---
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up