-
Notifications
You must be signed in to change notification settings - Fork 18
/
amount.go
92 lines (74 loc) · 2.64 KB
/
amount.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package btc
import (
"strconv"
"strings"
"github.com/btcsuite/btcutil"
"github.com/pkg/errors"
)
//0.00000001 BTC=1 Satoshi
//btcutil.Amount => Satoshi
//float64 => BTC
// AmountString 1.0 BTCといったstringを1.0という単位を除いたstringとして返す
func (b *Bitcoin) AmountString(amt btcutil.Amount) string {
return strings.TrimRight(amt.String(), " BTC")
}
// FloatBitToAmount BTC(float64)をSatoshi(Amount)に変換する
// e.g. 0.54 to 54000000
func (b *Bitcoin) FloatBitToAmount(f float64) (btcutil.Amount, error) {
amt, err := btcutil.NewAmount(f)
if err != nil {
return 0, errors.Errorf("btcutil.NewAmount(%f): error: %s", f, err)
}
return amt, nil
}
// CastStrBitToAmount string型のBitcoinをAmountに変換する
func (b *Bitcoin) CastStrBitToAmount(s string) (btcutil.Amount, error) {
f, err := strconv.ParseFloat(s, 64)
if err != nil {
return 0, errors.Errorf("strconv.ParseFloat(%s): error: %s", s, err)
}
amt, err := btcutil.NewAmount(f)
if err != nil {
return 0, errors.Errorf("btcutil.NewAmount(%f): error: %s", f, err)
}
//return val.ToBTC(), nil
return amt, nil
}
// CastStrSatoshiToAmount string型のSatoshiをAmountに変換する
func (b *Bitcoin) CastStrSatoshiToAmount(s string) (btcutil.Amount, error) {
f, err := strconv.ParseFloat(s, 64)
if err != nil {
return 0, errors.Errorf("strconv.ParseFloat(%s): error: %s", s, err)
}
val, err := btcutil.NewAmount(f / float64(100000000))
if err != nil {
return 0, errors.Errorf("btcutil.NewAmount(%f): error: %s", f, err)
}
return val, nil
}
// ListAccounts これは単純にアカウントの資産一覧が表示されるだけ
func (b *Bitcoin) ListAccounts() (map[string]btcutil.Amount, error) {
listAmts, err := b.client.ListAccounts()
if err != nil {
return nil, errors.Errorf("client.ListAccounts(): error: %s", err)
}
return listAmts, nil
}
// GetBalanceByAccount アカウントに対してのBalanceを取得する
func (b *Bitcoin) GetBalanceByAccount(accountName string) (btcutil.Amount, error) {
amt, err := b.client.GetBalance(accountName)
if err != nil {
return 0, errors.Errorf("client.GetBalance(%s): error: %s", accountName, err)
}
return amt, nil
}
// GetBalanceByAccountAndMinConf アカウントに対してのBalanceを取得する
// Deprecated: GetReceivedByAccountAndMinConf()を呼び出すように変更すること
//func (b *Bitcoin) GetBalanceByAccountAndMinConf(accountName string, minConf int) (btcutil.Amount, error) {
// amt, err := b.client.GetBalanceMinConf(accountName, minConf)
// if err != nil {
// return 0, errors.Errorf("client.GetBalanceMinConf(%s): error: %s", accountName, err)
// }
//
// return amt, nil
//}