Skip to main content

地址型別 (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> 型別互相轉換。

下列範例使用本章稍後會介紹的 vector 與 String 型別——目前只需要知道,可以在位元組與文字之間進行轉換。

範例:將地址轉換為 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)​