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