-
Notifications
You must be signed in to change notification settings - Fork 181
/
querier.go
107 lines (87 loc) · 2.52 KB
/
querier.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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package types
import (
"fmt"
ethtypes "github.com/ethereum/go-ethereum/core/types"
)
// Supported endpoints
const (
QueryBalance = "balance"
QueryBlockNumber = "blockNumber"
QueryStorage = "storage"
QueryStorageByKey = "storageKey"
QueryCode = "code"
QueryCodeByHash = "codeHash"
QueryNonce = "nonce"
QueryHashToHeight = "hashToHeight"
QueryBloom = "bloom"
QueryAccount = "account"
QueryExportAccount = "exportAccount"
// QueryParameters defines QueryParameters = "params" query route path
QueryParameters = "params"
QueryHeightToHash = "heightToHash"
QuerySection = "section"
QueryContractDeploymentWhitelist = "contract-deployment-whitelist"
QueryContractBlockedList = "contract-blocked-list"
QueryContractMethodBlockedList = "contract-method-blocked-list"
)
// QueryResBalance is response type for balance query
type QueryResBalance struct {
Balance string `json:"balance"`
}
func (q QueryResBalance) String() string {
return q.Balance
}
// QueryResBlockNumber is response type for block number query
type QueryResBlockNumber struct {
Number int64 `json:"blockNumber"`
}
func (q QueryResBlockNumber) String() string {
return fmt.Sprint(q.Number)
}
// QueryResStorage is response type for storage query
type QueryResStorage struct {
Value []byte `json:"value"`
}
func (q QueryResStorage) String() string {
return string(q.Value)
}
// QueryResCode is response type for code query
type QueryResCode struct {
Code []byte
}
func (q QueryResCode) String() string {
return string(q.Code)
}
// QueryResNonce is response type for Nonce query
type QueryResNonce struct {
Nonce uint64 `json:"nonce"`
}
func (q QueryResNonce) String() string {
return fmt.Sprint(q.Nonce)
}
// QueryETHLogs is response type for tx logs query
type QueryETHLogs struct {
Logs []*ethtypes.Log `json:"logs"`
}
func (q QueryETHLogs) String() string {
var logsStr string
logsLen := len(q.Logs)
for i := 0; i < logsLen; i++ {
logsStr = fmt.Sprintf("%s%v\n", logsStr, *q.Logs[i])
}
return logsStr
}
// QueryBloomFilter is response type for tx logs query
type QueryBloomFilter struct {
Bloom ethtypes.Bloom `json:"bloom"`
}
func (q QueryBloomFilter) String() string {
return string(q.Bloom.Bytes())
}
// QueryAccount is response type for querying Ethereum state objects
type QueryResAccount struct {
Balance string `json:"balance"`
CodeHash []byte `json:"codeHash"`
Nonce uint64 `json:"nonce"`
}
type QueryResExportAccount = GenesisAccount