地址型別 (Address Type)
Move 使用一種名為 address 的特殊型別來表示地址——用於識別區塊鏈上帳戶、套件與物件的 32 位元組值。在運算式中,地址常值以 @ 符號開頭,後面接十六進位數字或識別字:
// address literal
let value: address = @0x1;
// named address registered in Move.toml
let value = @std;
let other = @sui;
十六進位數字會被解讀為 32 位元組值,缺少的前導位元組會以零補齊——因此,@0x2 是以 ...0002 結尾之地址的簡寫。編譯器會在 Move.toml 文件中查詢識別字,並將其替換為對應地址;若找不到,編譯將會失敗。
有些地址由系統保留:例如,Standard Library 位於 0x1,而 Sui Framework 位於 0x2。完整清單請見 附錄 B:保留地址 (Appendix B: Reserved Addresses)。
轉換 (Conversion)
Sui Framework 提供一組用於處理地址的輔助函式。由於地址型別是 32 位元組值,因此可與 u256 型別互相轉換,也可與 vector<u8> 型別互相轉換。
範例:將地址轉換為 u256 型別後再轉換回來。
use sui::address;
let addr_as_u256: u256 = @0x1.to_u256();
let addr = address::from_u256(addr_as_u256);
範例:將地址轉換為 vector<u8> 型別後再轉換回來。
use sui::address;
let addr_as_u8: vector<u8> = @0x1.to_bytes();
let addr = address::from_bytes(addr_as_u8);
範例:將地址轉換為字串。
use sui::address;
use std::string::String;
let addr_as_string: String = @0x1.to_string();
延伸閱讀 (Further Reading)
- Move 參考文件中的 Address。
- sui::address 模組文件。