address is a built-in type in Move that is used to represent locations (sometimes called accounts) in global storage. An
address value is a 128-bit (16 byte) identifier. At a given address, two things can be stored: Modules and Resources.
address is a 128 bit integer under the hood, Move addresses are intentionally opaque---they cannot be created from integers, they do not support arithmetic operations, and they cannot be modified. Even though there might be interesting programs that would use such a feature (e.g., pointer arithmetic in C fills a similar niche), Move does not allow this dynamic behavior because it has been designed from the ground up to support static verification.
You can use runtime address values (values of type
address) to access resources at that address. You cannot access modules at runtime via address values.
address literals are 16-byte hex literals, i.e.
0x<hex encoded value>. For convenience, leading
0s are added for literals that are too short.
The primary purpose of
address values are to interact with the global storage operations.
address values are used with the
The only global storage operation that does not use
move_to, which uses
As with the other scalar values built-in to the language,
address values are implicitly copyable, meaning they can be copied without an explicit instruction such as