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.
Inherited Members
Namespace: Libplanet.Assets
Assembly: Libplanet.dll
Syntax
[Serializable]
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. |
Exceptions
Type | Condition |
---|---|
ArgumentException | Thrown when the given |
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
[Pure]
public readonly bool AllowsToMint(Address address)
Parameters
Type | Name | Description |
---|---|---|
Address | address | The account address to test. |
Returns
Type | Description |
---|---|
Boolean |
|
Equals(Currency)
Declaration
[Pure]
public readonly bool Equals(Currency other)
Parameters
Type | Name | Description |
---|---|---|
Currency | other |
Returns
Type | Description |
---|---|
Boolean |
Equals(Object)
Declaration
[Pure]
public override readonly bool Equals(object obj)
Parameters
Type | Name | Description |
---|---|---|
Object | obj |
Returns
Type | Description |
---|---|
Boolean |
Overrides
| Improve this Doc View SourceGetHashCode()
Declaration
[Pure]
public override readonly int GetHashCode()
Returns
Type | Description |
---|---|
Int32 |
Overrides
| Improve this Doc View SourceSerialize()
Serializes the currency into a Bencodex value.
Declaration
[Pure]
public readonly IValue Serialize()
Returns
Type | Description |
---|---|
IValue | The serialized Bencodex value. |
ToString()
Declaration
[Pure]
public override readonly string ToString()
Returns
Type | Description |
---|---|
String |
Overrides
Operators
| Improve this Doc View SourceMultiply(Currency, BigInteger)
Gets a fungible asset value with the given quantity
of the
specified currency
.
Declaration
[Pure]
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.
Multiply(BigInteger, Currency)
Gets a fungible asset value with the given quantity
of the
specified currency
.
Declaration
[Pure]
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.
Explicit Interface Implementations
| Improve this Doc View SourceISerializable.GetObjectData(SerializationInfo, StreamingContext)
Declaration
readonly void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
Parameters
Type | Name | Description |
---|---|---|
SerializationInfo | info | |
StreamingContext | context |