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);

例:アドレスをvector<u8>型に変換して戻す

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 へ戻る