iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0
Web 3

從BlockChain看Web3系列 第 4

[Day 4 ] Let's Move

  • 分享至 

  • xImage
  •  

SUI是一個基於Move語言的高性能、安全、可擴展的區塊鏈平台,它的目標是實現數字資產的自由流動和交互 。Move語言是一種基於Rust的開源語言,用於創建可定制的交易邏輯和智能合約。

Move語言特點

1. 資源(Resource)

Move語言採用了一種名為**資源(Resource)**的數據結構,它是一種封裝了資產和操作的抽象單元,可以根據不同的類型和權限進行分類和管理。資源具有以下特性:

  • 不可複製
  • 不可銷毀
  • 可儲存
  • 可索引

這確保了數字資產的安全性和唯一性。

2. 程式設計元素

Move語言支持的程式設計元素包括:

  • 泛型
  • 模塊
  • 函數
  • 結構

這可以提高代碼的重用性和表達力。Move語言還支持多種代幣標準,例如ERC-20ERC-721等,並且可以與其他基於Move的區塊鏈(如Diem、Aptos等)兼容。

3. Move VM(虛擬機)

Move語言提供了一種名為**Move VM(虛擬機)的執行環境,它是一種基於堆疊的字節碼解釋器,可以在不同的區塊鏈平台上運行Move代碼。Move VM還提供了一種名為Move IR(中間表示)**的文本格式,可以方便地編寫和測試Move代碼。

4. 形式化驗證

Move語言支持形式化驗證,這是一種使用數學方法來證明代碼正確性和安全性的技術。Move語言內置了一種名為**Move Prover(驗證器)**的工具,可以對Move代碼進行靜態分析和符號執行,並且可以使用Z3等SMT求解器來驗證代碼是否符合預定義的規範。

下面是一個使用Move語言編寫的智能合約範例,它定義了一種名為Coin的資源,並且實現了創建、轉移和查詢Coin的功能:

// 定義一個模塊名為Coin
module Coin {
// 定義一個資源結構名為Coin
resource struct Coin {
// 資源屬性:可儲存、可索引
value: u64, // 儲存Coin的數值
}

// 定義一個函數名為mint
public fun mint(value: u64): Coin {
// 創建一個Coin資源並返回
Coin { value }
}

// 定義一個函數名為get_value
public fun get_value(coin: &Coin): u64 {
// 獲取Coin資源的數值並返回
coin.value
}

// 定義一個函數名為transfer
public fun transfer(coin: &mut Coin, amount: u64) {
// 對Coin資源進行轉移操作
// 檢查Coin的數值是否大於等於轉移金額
assert!(coin.value >= amount, 1);
// 減去Coin的數值
coin.value = coin.value - amount;
// 創建一個新的Coin資源
let new_coin = Coin { value: amount };
// 將新的Coin資源發送給當前交易的接收者
move_to_sender<Coin>(new_coin);
}
}

參考資料

資深開發團隊:為何 Move 語言將超越 Solidity,成為區塊鏈圈主流?
Solidity 最強對手:MOVE 程式語言及新公鏈崛起
Move語言取代Solidity的可能性


上一篇
[Day 3] 上善如SUI
下一篇
[Day 5] How Move beat Solidity - Solidity怎麼輸的?
系列文
從BlockChain看Web330
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言