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]
[GeneratedEquality]
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
[EqualityKey(KeyEqualityMode.Auto)]
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
.