Show / Hide Table of Contents

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:

  1. 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.
  2. Takes only the last 20 bytes of the calculated Keccak-256 hash.
  3. 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
ISerializable
IComparable<Address>
IComparable
Inherited Members
ValueType.Equals(Object)
ValueType.GetHashCode()
Object.Equals(Object, Object)
Object.GetType()
Object.ReferenceEquals(Object, Object)
Namespace: Libplanet
Assembly: Libplanet.dll
Syntax
[Serializable]
public readonly struct Address : ISerializable, IComparable<Address>, IComparable
Remarks

Every Address value is immutable.

Constructors

| Improve this Doc View Source

Address(Binary)

Creates an Address instance from the given Bencodex (i.e., address).

Declaration
public Address(Binary address)
Parameters
Type Name Description
Binary address

A Bencodex of 20 Bytes which represents an Address.

Exceptions
Type Condition
ArgumentException

Thrown when the given address did not lengthen 20 bytes.

| Improve this Doc View Source

Address(ImmutableArray<Byte>)

Creates an Address instance from the given immutable Byte array (i.e., address).

Declaration
public Address(ImmutableArray<byte> address)
Parameters
Type Name Description
ImmutableArray<Byte> address

An immutable array of 20 Bytes which represents an Address.

Remarks

A valid Byte array which represents an Address can be gotten using ToByteArray() method.

Exceptions
Type Condition
ArgumentException

Thrown when the given address array did not lengthen 20 bytes.

See Also
ByteArray
| Improve this Doc View Source

Address(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

A PublicKey to derive the corresponding Address from.

See Also
ToAddress(PublicKey)
| Improve this Doc View Source

Address(Byte[])

Creates an Address instance from the given Byte array (i.e., address).

Declaration
public Address(byte[] address)
Parameters
Type Name Description
Byte[] address

An array of 20 Bytes which represents an Address. This must not be null.

Remarks

A valid Byte array which represents an Address can be gotten using ToByteArray() method.

Exceptions
Type Condition
ArgumentNullException

Thrown when null was passed to address.

ArgumentException

Thrown when the given address array did not lengthen 20 bytes.

See Also
ToByteArray()
| Improve this Doc View Source

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 null was passed to hex.

ArgumentException

Thrown when the given hex did not lengthen 40 characters.

ArgumentException

Thrown when the given hex is mixed-case and the checksum is invalid.

ArgumentException

Thrown when the given hex does not consist of ASCII characters.

Fields

| Improve this Doc View Source

Size

The Bytes size that each Address takes.

It is 20 Bytes.

Declaration
public const int Size = 20
Field Value
Type Description
Int32

Properties

| Improve this Doc View Source

ByteArray

An immutable array of 20 Bytes that represent this Address.

Declaration
public readonly ImmutableArray<byte> ByteArray { get; }
Property Value
Type Description
ImmutableArray<Byte>
Remarks

This is immutable. For a mutable array, call ToByteArray() method.

See Also
ToByteArray()

Methods

| Improve this Doc View Source

GetObjectData(SerializationInfo, StreamingContext)

Declaration
public readonly void GetObjectData(SerializationInfo info, StreamingContext context)
Parameters
Type Name Description
SerializationInfo info
StreamingContext context
| Improve this Doc View Source

ToByteArray()

Gets a mutable array of 20 Bytes that represent this Address.

Declaration
[Pure]
public readonly 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
ByteArray
Address(Byte[])
| Improve this Doc View Source

ToHex()

Gets a mixed-case hexadecimal string of 40 letters that represent this Address. The returned hexadecimal string follows EIP 55.

Declaration
[Pure]
public readonly 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
ToString()
| Improve this Doc View Source

ToString()

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 readonly string ToString()
Returns
Type Description
String

A 0x-hexadecimal string of 42 letters that represent this Address.

Overrides
ValueType.ToString()
Remarks

As the returned string is 0x-prefixed, for hexadecimal without prefix, call ToHex() method instead.

Examples

A returned string looks like 0x87Ae4774E20963fd6caC967CF47aDCF880C3e89B.

See Also
ToHex()

Operators

| Improve this Doc View Source

Equality(Address, Address)

Declaration
public static bool operator ==(Address left, Address right)
Parameters
Type Name Description
Address left
Address right
Returns
Type Description
Boolean
| Improve this Doc View Source

Inequality(Address, Address)

Declaration
public static bool operator !=(Address left, Address right)
Parameters
Type Name Description
Address left
Address right
Returns
Type Description
Boolean

Explicit Interface Implementations

| Improve this Doc View Source

IComparable.CompareTo(Object)

Declaration
readonly int IComparable.CompareTo(object obj)
Parameters
Type Name Description
Object obj
Returns
Type Description
Int32
| Improve this Doc View Source

IComparable<Address>.CompareTo(Address)

Declaration
readonly int IComparable<Address>.CompareTo(Address other)
Parameters
Type Name Description
Address other
Returns
Type Description
Int32

Implements

System.Runtime.Serialization.ISerializable
System.IComparable<T>
System.IComparable

See Also

PublicKey
  • Improve this Doc
  • View Source
In This Article
Back to top Copyright © 2018–2021 Planetarium