github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/evm/types/querier.go (about) 1 package types 2 3 import ( 4 "encoding/json" 5 "fmt" 6 7 ethtypes "github.com/ethereum/go-ethereum/core/types" 8 ) 9 10 // Supported endpoints 11 const ( 12 QueryBalance = "balance" 13 QueryBlockNumber = "blockNumber" 14 QueryStorage = "storage" 15 QueryStorageProof = "storageProof" 16 QueryStorageRoot = "storageRoot" 17 QueryStorageByKey = "storageKey" 18 QueryCode = "code" 19 QueryCodeByHash = "codeHash" 20 QueryNonce = "nonce" 21 QueryHashToHeight = "hashToHeight" 22 QueryBloom = "bloom" 23 QueryAccount = "account" 24 QueryExportAccount = "exportAccount" 25 // QueryParameters defines QueryParameters = "params" query route path 26 QueryParameters = "params" 27 QueryHeightToHash = "heightToHash" 28 QuerySection = "section" 29 QueryContractDeploymentWhitelist = "contract-deployment-whitelist" 30 QueryContractBlockedList = "contract-blocked-list" 31 QueryContractMethodBlockedList = "contract-method-blocked-list" 32 QuerySysContractAddress = "system-contract-address" 33 ) 34 35 // QueryResBalance is response type for balance query 36 type QueryResBalance struct { 37 Balance string `json:"balance"` 38 } 39 40 func (q QueryResBalance) String() string { 41 return q.Balance 42 } 43 44 // QueryResBlockNumber is response type for block number query 45 type QueryResBlockNumber struct { 46 Number int64 `json:"blockNumber"` 47 } 48 49 func (q QueryResBlockNumber) String() string { 50 return fmt.Sprint(q.Number) 51 } 52 53 // QueryResStorage is response type for storage query 54 type QueryResStorage struct { 55 Value []byte `json:"value"` 56 } 57 58 func (q QueryResStorage) String() string { 59 return string(q.Value) 60 } 61 62 // QueryResStorage is response type for storage query 63 type QueryResStorageProof struct { 64 Value []byte `json:"value"` 65 Proof [][]byte `json:"proof"` 66 } 67 68 func (q QueryResStorageProof) String() string { 69 res, err := json.Marshal(q) 70 if err != nil { 71 panic(err) 72 } 73 return string(res) 74 } 75 76 // QueryResCode is response type for code query 77 type QueryResCode struct { 78 Code []byte 79 } 80 81 func (q QueryResCode) String() string { 82 return string(q.Code) 83 } 84 85 // QueryResNonce is response type for Nonce query 86 type QueryResNonce struct { 87 Nonce uint64 `json:"nonce"` 88 } 89 90 func (q QueryResNonce) String() string { 91 return fmt.Sprint(q.Nonce) 92 } 93 94 // QueryETHLogs is response type for tx logs query 95 type QueryETHLogs struct { 96 Logs []*ethtypes.Log `json:"logs"` 97 } 98 99 func (q QueryETHLogs) String() string { 100 var logsStr string 101 logsLen := len(q.Logs) 102 for i := 0; i < logsLen; i++ { 103 logsStr = fmt.Sprintf("%s%v\n", logsStr, *q.Logs[i]) 104 } 105 106 return logsStr 107 } 108 109 // QueryBloomFilter is response type for tx logs query 110 type QueryBloomFilter struct { 111 Bloom ethtypes.Bloom `json:"bloom"` 112 } 113 114 func (q QueryBloomFilter) String() string { 115 return string(q.Bloom.Bytes()) 116 } 117 118 // QueryAccount is response type for querying Ethereum state objects 119 type QueryResAccount struct { 120 Balance string `json:"balance"` 121 CodeHash []byte `json:"codeHash"` 122 Nonce uint64 `json:"nonce"` 123 } 124 125 type QueryResExportAccount = GenesisAccount