github.com/lino-network/lino@v0.6.11/types/minidollar.go (about) 1 package types 2 3 import ( 4 "math/big" 5 6 sdk "github.com/cosmos/cosmos-sdk/types" 7 ) 8 9 // 1 LINO = 0.012 USD 10 // 10^5 Coin = 12 * 10^7 MiniDollar 11 // 1 coin = 1200 minidollar 12 var TestnetPrice = NewMiniDollar(1200) 13 14 // 1 MiniDollar = 10^(-10) USD. 15 type MiniDollar struct { 16 // embeding sdk.Int, inheriting marshal/unmarshal function from 17 // sdk.Int, so DO NOT add any other field in this struct. 18 sdk.Int 19 } 20 21 func NewMiniDollar(v int64) MiniDollar { 22 return MiniDollar{sdk.NewInt(v)} 23 } 24 25 func NewMiniDollarFromInt(i sdk.Int) MiniDollar { 26 return MiniDollar{i} 27 } 28 29 func NewMiniDollarFromBig(v *big.Int) MiniDollar { 30 return MiniDollar{sdk.NewIntFromBigInt(v)} 31 } 32 33 // TODO(yumin): MUST DELETE on upgrade3 34 func NewMiniDollarFromTestnetCoin(c Coin) MiniDollar { 35 return NewMiniDollarFromInt(c.Amount.Mul(TestnetPrice.Int)) 36 } 37 38 func (m MiniDollar) Plus(other MiniDollar) MiniDollar { 39 return MiniDollar{m.Add(other.Int)} 40 } 41 42 func (m MiniDollar) Minus(other MiniDollar) MiniDollar { 43 return MiniDollar{m.Sub(other.Int)} 44 } 45 46 func (m MiniDollar) Multiply(other MiniDollar) MiniDollar { 47 return MiniDollar{m.Mul(other.Int)} 48 } 49 50 func (m MiniDollar) Equal(other MiniDollar) bool { 51 return m.Int.Equal(other.Int) 52 } 53 54 func (m MiniDollar) LT(other MiniDollar) bool { 55 return m.Int.LT(other.Int) 56 }