planetmint-go/util/rddl_token.go
Lorenz Herzberger 0d74b81ac9
210 make distribution dependent reissuance (#216)
* distribution now requires re-issuance
* change claim conversion to use fixed uint amounts
* change initialization of util variable
* move rpc conf init to app config init


Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com>
Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com>
Co-authored-by: Jürgen Eckel <juergen@riddleandcode.com>
2023-12-15 09:39:02 +01:00

50 lines
1.0 KiB
Go

package util
import (
"strconv"
)
const (
factor = 100000000.0
)
func RDDLToken2Uint(amount float64) uint64 {
return uint64(amount * factor)
}
func RDDLToken2Float(amount uint64) float64 {
return float64(amount) / factor
}
func RDDLTokenStringToFloat(amount string) (amountFloat float64, err error) {
amountFloat, err = strconv.ParseFloat(amount, 64)
return amountFloat, err
}
func RDDLTokenStringToUint(amount string) (amountUint uint64, err error) {
amountFloat, err := RDDLTokenStringToFloat(amount)
if err == nil {
amountUint = RDDLToken2Uint(amountFloat)
}
return amountUint, err
}
func addPrecision(valueString string) string {
length := len(valueString)
if length > 8 {
return valueString[:length-8] + "." + valueString[length-8:]
}
resultString := "0."
for i := 0; i < 8-length; i++ {
resultString += "0"
}
return resultString + valueString
}
func UintValueToRDDLTokenString(value uint64) (rddlString string) {
uint64String := strconv.FormatUint(value, 10)
rddlString = addPrecision(uint64String)
return
}