Struct Currency
Represents a currency type. Every single value of Currency defines a distinct currency type. To draw a parallel with real world monetary, each Currency value represents such currencies as USD (US Dollar) or EUR (Euro), not values like $100 or €100.
Namespace: Libplanet.Assets
Assembly: Libplanet.dll
Syntax
public readonly struct Currency : IEquatable<Currency>, ISerializable
Examples
Here is how US Dollar can be represented using Currency:
var USMint = new PrivateKey();
var USD = new Currency(ticker: "USD", decimalPlace: 2, minter: USMint.ToAddress());
var twentyThreeBucks = 23 * USD;
// Or alternatively: USD * 23;
// Or explicitly: new FungibleAssetValue(USD, 23, 0)
Constructors
| Improve this Doc View SourceCurrency(IValue)
Deserializes a Currency type from a Bencodex value.
Declaration
public Currency(IValue serialized)
Parameters
| Type | Name | Description |
|---|---|---|
| IValue | serialized | The Bencodex value serialized by Serialize() method. |
See Also
| Improve this Doc View SourceCurrency(String, Byte, Nullable<IImmutableSet<Address>>)
Defines a Currency type.
Declaration
public Currency(string ticker, byte decimalPlaces, IImmutableSet<Address>? minters)
Parameters
| Type | Name | Description |
|---|---|---|
| String | ticker | The ticker symbol, e.g., |
| Byte | decimalPlaces | The number of digits to treat as minor units (i.e., exponent). |
| Nullable<IImmutableSet<Address>> | minters | The Addresses who can mint the currency. See also Minters field which corresponds to this. |
Currency(String, Byte, Nullable<Address>)
Defines a Currency type.
Declaration
public Currency(string ticker, byte decimalPlaces, Address? minter)
Parameters
| Type | Name | Description |
|---|---|---|
| String | ticker | The ticker symbol, e.g., |
| Byte | decimalPlaces | The number of digits to treat as minor units (i.e., exponent). |
| Nullable<Address> | minter | The address who can mint the currency. To specify multiple
minters, use the |
Fields
| Improve this Doc View SourceDecimalPlaces
The number of digits to treat as minor units (i.e., exponent).
Declaration
public readonly byte DecimalPlaces
Field Value
| Type | Description |
|---|---|
| Byte |
Hash
The deterministic hash derived from other fields.
Declaration
public readonly HashDigest<SHA1> Hash
Field Value
| Type | Description |
|---|---|
| HashDigest<SHA1> |
Minters
The Addresses who can mint the currency.
If this is null anyone can mint the currency.
Declaration
public readonly IImmutableSet<Address>? Minters
Field Value
| Type | Description |
|---|---|
| Nullable<IImmutableSet<Address>> |
Remarks
Unlike null, an empty set means no one can mint the currency.
See Also
| Improve this Doc View SourceTicker
The ticker symbol, e.g., "USD".
Declaration
public readonly string Ticker
Field Value
| Type | Description |
|---|---|
| String |
Methods
| Improve this Doc View SourceAllowsToMint(Address)
Returns true if and only if the given address is allowed
to mint or burn assets of this currency.
Declaration
public readonly bool AllowsToMint(Address address)
Parameters
| Type | Name | Description |
|---|---|---|
| Address | address | The account address to test. |
Returns
| Type | Description |
|---|---|
| Boolean |
|
Equals(Currency)
Declaration
public readonly bool Equals(Currency other)
Parameters
| Type | Name | Description |
|---|---|---|
| Currency | other |
Returns
| Type | Description |
|---|---|
| Boolean |
Equals(Nullable<Object>)
Declaration
public override readonly bool Equals(object? obj)
Parameters
| Type | Name | Description |
|---|---|---|
| Nullable<Object> | obj |
Returns
| Type | Description |
|---|---|
| Boolean |
GetHashCode()
Declaration
public override readonly int GetHashCode()
Returns
| Type | Description |
|---|---|
| Int32 |
Serialize()
Serializes the currency into a Bencodex value.
Declaration
public readonly IValue Serialize()
Returns
| Type | Description |
|---|---|
| IValue | The serialized Bencodex value. |
ToString()
Declaration
public override readonly string ToString()
Returns
| Type | Description |
|---|---|
| String |
Operators
| Improve this Doc View SourceMultiply(BigInteger, Currency)
Gets a fungible asset value with the given quantity of the
specified currency.
Declaration
public static FungibleAssetValue operator *(BigInteger quantity, Currency currency)
Parameters
| Type | Name | Description |
|---|---|---|
| BigInteger | quantity | The major unit of the fungible asset value, i.e., digits before the decimal separator. |
| Currency | currency | The currency to get a value. |
Returns
| Type | Description |
|---|---|
| FungibleAssetValue | A fungible asset value with the given |
Remarks
This cannot specify MinorUnit but only MajorUnit. For more precision, directly use FungibleAssetValue's constructors instead.
Multiply(Currency, BigInteger)
Gets a fungible asset value with the given quantity of the
specified currency.
Declaration
public static FungibleAssetValue operator *(Currency currency, BigInteger quantity)
Parameters
| Type | Name | Description |
|---|---|---|
| Currency | currency | The currency to get a value. |
| BigInteger | quantity | The major unit of the fungible asset value, i.e., digits before the decimal separator. |
Returns
| Type | Description |
|---|---|
| FungibleAssetValue | A fungible asset value with the given |
Remarks
This cannot specify MinorUnit but only MajorUnit. For more precision, directly use FungibleAssetValue's constructors instead.