Struct Address
An identifier of 20 bytes (or 40 letters in hexadecimal, commonly with
a prefix 0x) that refers to a unique account.
It is derived from the corresponding PublicKey of an account, but as a derivation loses information, it is always unidirectional.
The address derivation from a public key is as follows:
- Calculates the Keccak-256, which is a previous form of SHA-3 before NIST standardized it and does not follow FIPS-202, of the corresponding PublicKey.
- Takes only the last 20 bytes of the calculated Keccak-256 hash.
- When the address needs to be shown to end users,
displays these 20 bytes in hexadecimal, with a prefix
0x.
Since the scheme of the address derivation and the PrivateKey/PublicKey is the same to Ethereum, Ethereum addresses can be used by Libplanet-backed games/apps too.
Implements
Inherited Members
Namespace: Libplanet
Assembly: Libplanet.dll
Syntax
[Serializable]
[Equals]
public struct Address : ISerializable
Remarks
Every Address value is immutable.
Constructors
| Improve this Doc View SourceAddress(PublicKey)
Derives the corresponding Address from a PublicKey.
Note that there is an equivalent extension method
ToAddress(PublicKey), which enables
a code like publicKey.ToAddress() instead of
new Address(publicKey), for convenience.
Declaration
public Address(PublicKey publicKey)
Parameters
| Type | Name | Description |
|---|---|---|
| PublicKey | publicKey |
See Also
| Improve this Doc View SourceAddress(Byte[])
Declaration
public Address(byte[] address)
Parameters
| Type | Name | Description |
|---|---|---|
| Byte[] | address | An array of 20 Bytes which
represents an Address. This must not be |
Remarks
A valid Byte array which represents an Address can be gotten using ToByteArray() method.
Exceptions
| Type | Condition |
|---|---|
| NullReferenceException | Thrown when |
| ArgumentException | Thrown when the given |
See Also
| Improve this Doc View SourceAddress(SerializationInfo, StreamingContext)
Declaration
public Address(SerializationInfo info, StreamingContext context)
Parameters
| Type | Name | Description |
|---|---|---|
| SerializationInfo | info | |
| StreamingContext | context |
Address(String)
Derives the corresponding Address from a hexadecimal address string.
Declaration
public Address(string hex)
Parameters
| Type | Name | Description |
|---|---|---|
| String | hex | A 40 characters hexadecimal address string to derive the corresponding Address from. The string should be all lower-case or mixed-case which follows EIP 55. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | Thrown when |
| ArgumentException | Thrown when the given |
| ArgumentException | Thrown when the given |
| ArgumentException | Thrown when the given |
Fields
| Improve this Doc View SourceSize
Declaration
public const int Size = 20
Field Value
| Type | Description |
|---|---|
| Int32 |
Properties
| Improve this Doc View SourceByteArray
Declaration
public ImmutableArray<byte> ByteArray { get; }
Property Value
| Type | Description |
|---|---|
| ImmutableArray<Byte> |
Remarks
This is immutable. For a mutable array, call ToByteArray() method.
See Also
Methods
| Improve this Doc View SourceGetObjectData(SerializationInfo, StreamingContext)
Declaration
public void GetObjectData(SerializationInfo info, StreamingContext context)
Parameters
| Type | Name | Description |
|---|---|---|
| SerializationInfo | info | |
| StreamingContext | context |
ToByteArray()
Declaration
[Pure]
public byte[] ToByteArray()
Returns
| Type | Description |
|---|---|
| Byte[] | A new mutable array which represents this Address. Since it is created every time the method is called, any mutation on that does not affect internal states of this Address. |
See Also
| Improve this Doc View SourceToHex()
Gets a mixed-case hexadecimal string of 40 letters that represent this Address. The returned hexadecimal string follows EIP 55.
Declaration
[Pure]
public string ToHex()
Returns
| Type | Description |
|---|---|
| String | A hexadecimal string of 40 letters that represent this Address. Note that it does not start with a prefix. |
Remarks
As the returned string has no prefix, for
0x-prefixed hexadecimal, call ToString()
method instead.
Examples
A returned string looks like
87Ae4774E20963fd6caC967CF47aDCF880C3e89B.
See Also
| Improve this Doc View SourceToString()
Gets a 0x-prefixed mixed-case hexadecimal string of
42 letters that represent this Address. The returned
hexadecimal string follows
EIP 55.
Declaration
[Pure]
public override string ToString()
Returns
| Type | Description |
|---|---|
| String | A |
Overrides
Remarks
As the returned string is 0x-prefixed, for
hexadecimal without prefix, call ToHex() method
instead.
Examples
A returned string looks like
0x87Ae4774E20963fd6caC967CF47aDCF880C3e89B.