iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0
Web 3

從BlockChain看Web3系列 第 9

[Day 9] Tutorial -Step 3:設計我的 BasicCoin module

  • 分享至 

  • xImage
  •  

完成後的BasicCoin.move會長的像底下的圖:

https://ithelp.ithome.com.tw/upload/images/20230924/20118900qIEsrLQ56f.jpg

Move 模組沒有自己的儲存空間。相反,Move「全域儲存」(我們稱之為區塊鏈狀態)是按位址索引的。每個位址下都有 Move 模組(程式碼)和 Move 資源(值)。

全域儲存在 Rust 語法中大致如下所示:

struct GlobalStorage {
resources: Map<address, Map<ResourceType, ResourceValue>>
modules: Map<address, Map<ModuleName, ModuleBytecode>>
}
每個位址下的Move資源儲存是一個從類型到值的對應。(細心的讀者可能會發現,這意味著每個地址每種類型只能有一個值。)這方便地為我們提供了一種按地址索引的本機映射。在我們的BasicCoin模組中,我們定義了以下Balance資源,表示每個地址持有的硬幣數量:

/// Struct representing the balance of each address.
struct Balance has key {
coin: Coin // same Coin from Step 1
}

這裡比較一下Move BlockChain 與 Solidity BlockChain的差別

大致而言,Move 區塊鏈狀態應如下:

https://ithelp.ithome.com.tw/upload/images/20230924/20118900sbsa2CQJ7D.png

以太坊區塊鏈狀態可能如下圖所示:

https://ithelp.ithome.com.tw/upload/images/20230924/20118900AsDzayCKUy.png


上一篇
[Day 8] Tutorial -Step 2:在第一支move程式加上Unit Test
下一篇
[Day 10] Tutorial -Step 4: 實作 BasicCoin module
系列文
從BlockChain看Web330
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言