Move言語では、アドレス を表現するためにaddress
という特別な型を使用します。これは32バイトの値であり、ブロックチェーン上の任意のアドレスを表現するために使用できます。アドレスは、0x
で始まる16進数アドレスと名前付きアドレスの2つの構文形式で使用されます。
// アドレスリテラル
let value: address = @0x1;
// Move.tomlに登録された名前付きアドレス
let value = @std;
let other = @sui;
アドレスリテラルは、@
記号に続いて16進数または識別子が続きます。16進数は32バイトの値として解釈されます。識別子はMove.toml ファイルで検索され、コンパイラによって対応するアドレスに置き換えられます。識別子がMove.tomlファイルに見つからない場合、コンパイラはエラーを投げます。
Suiフレームワークは、アドレスを操作するためのヘルパー関数のセットを提供しています。アドレスタイプが32バイトの値であるため、u256
型に変換することができ、その逆も可能です。また、vector<u8>
型への変換もおよびその逆変換も可能です。
u256
型に変換して戻すuse sui::address;
let addr_as_u256: u256 = address::to_u256(@0x1);
let addr = address::from_u256(addr_as_u256);
use sui::address;
let addr_as_u8: vector<u8> = address::to_bytes(@0x1);
let addr = address::from_bytes(addr_as_u8);
use sui::address;
use std::string::String;
let addr_as_string: String = address::to_string(@0x1);
The Move Book へ戻る