/
coin_info.go
36 lines (31 loc) · 982 Bytes
/
coin_info.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
package api
import (
"github.com/noah-blockchain/noah-go-node/core/types"
"github.com/noah-blockchain/noah-go-node/rpc/lib/types"
"math/big"
)
type CoinInfoResponse struct {
Name string `json:"name"`
Symbol types.CoinSymbol `json:"symbol"`
Volume *big.Int `json:"volume"`
Crr uint `json:"crr"`
ReserveBalance *big.Int `json:"reserve_balance"`
}
func CoinInfo(coinSymbol string, height int) (*CoinInfoResponse, error) {
cState, err := GetStateForHeight(height)
if err != nil {
return nil, err
}
coin := cState.GetStateCoin(types.StrToCoinSymbol(coinSymbol))
if coin == nil {
return nil, rpctypes.RPCError{Code: 404, Message: "Coin not found"}
}
coinData := coin.Data()
return &CoinInfoResponse{
Name: coinData.Name,
Symbol: coinData.Symbol,
Volume: coinData.Volume,
Crr: coinData.Crr,
ReserveBalance: coinData.ReserveBalance,
}, nil
}