mirror of https://github.com/status-im/op-geth.git
commit
c8e5d53a39
29
rpc/api.go
29
rpc/api.go
|
@ -113,7 +113,7 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
block := NewBlockRes(api.xeth().EthBlockByHash(args.BlockHash))
|
block := NewBlockRes(api.xeth().EthBlockByHash(args.BlockHash), false)
|
||||||
*reply = common.ToHex(big.NewInt(int64(len(block.Transactions))).Bytes())
|
*reply = common.ToHex(big.NewInt(int64(len(block.Transactions))).Bytes())
|
||||||
case "eth_getBlockTransactionCountByNumber":
|
case "eth_getBlockTransactionCountByNumber":
|
||||||
args := new(GetBlockByNumberArgs)
|
args := new(GetBlockByNumberArgs)
|
||||||
|
@ -121,7 +121,7 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
block := NewBlockRes(api.xeth().EthBlockByNumber(args.BlockNumber))
|
block := NewBlockRes(api.xeth().EthBlockByNumber(args.BlockNumber), false)
|
||||||
*reply = common.ToHex(big.NewInt(int64(len(block.Transactions))).Bytes())
|
*reply = common.ToHex(big.NewInt(int64(len(block.Transactions))).Bytes())
|
||||||
case "eth_getUncleCountByBlockHash":
|
case "eth_getUncleCountByBlockHash":
|
||||||
args := new(GetBlockByHashArgs)
|
args := new(GetBlockByHashArgs)
|
||||||
|
@ -130,7 +130,7 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
|
||||||
}
|
}
|
||||||
|
|
||||||
block := api.xeth().EthBlockByHash(args.BlockHash)
|
block := api.xeth().EthBlockByHash(args.BlockHash)
|
||||||
br := NewBlockRes(block)
|
br := NewBlockRes(block, false)
|
||||||
*reply = common.ToHex(big.NewInt(int64(len(br.Uncles))).Bytes())
|
*reply = common.ToHex(big.NewInt(int64(len(br.Uncles))).Bytes())
|
||||||
case "eth_getUncleCountByBlockNumber":
|
case "eth_getUncleCountByBlockNumber":
|
||||||
args := new(GetBlockByNumberArgs)
|
args := new(GetBlockByNumberArgs)
|
||||||
|
@ -139,7 +139,7 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
|
||||||
}
|
}
|
||||||
|
|
||||||
block := api.xeth().EthBlockByNumber(args.BlockNumber)
|
block := api.xeth().EthBlockByNumber(args.BlockNumber)
|
||||||
br := NewBlockRes(block)
|
br := NewBlockRes(block, false)
|
||||||
*reply = common.ToHex(big.NewInt(int64(len(br.Uncles))).Bytes())
|
*reply = common.ToHex(big.NewInt(int64(len(br.Uncles))).Bytes())
|
||||||
case "eth_getData", "eth_getCode":
|
case "eth_getData", "eth_getCode":
|
||||||
args := new(GetDataArgs)
|
args := new(GetDataArgs)
|
||||||
|
@ -179,8 +179,7 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
|
||||||
}
|
}
|
||||||
|
|
||||||
block := api.xeth().EthBlockByHash(args.BlockHash)
|
block := api.xeth().EthBlockByHash(args.BlockHash)
|
||||||
br := NewBlockRes(block)
|
br := NewBlockRes(block, true)
|
||||||
br.fullTx = args.IncludeTxs
|
|
||||||
|
|
||||||
*reply = br
|
*reply = br
|
||||||
case "eth_getBlockByNumber":
|
case "eth_getBlockByNumber":
|
||||||
|
@ -190,8 +189,7 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
|
||||||
}
|
}
|
||||||
|
|
||||||
block := api.xeth().EthBlockByNumber(args.BlockNumber)
|
block := api.xeth().EthBlockByNumber(args.BlockNumber)
|
||||||
br := NewBlockRes(block)
|
br := NewBlockRes(block, true)
|
||||||
br.fullTx = args.IncludeTxs
|
|
||||||
|
|
||||||
*reply = br
|
*reply = br
|
||||||
case "eth_getTransactionByHash":
|
case "eth_getTransactionByHash":
|
||||||
|
@ -214,8 +212,7 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
|
||||||
}
|
}
|
||||||
|
|
||||||
block := api.xeth().EthBlockByHash(args.Hash)
|
block := api.xeth().EthBlockByHash(args.Hash)
|
||||||
br := NewBlockRes(block)
|
br := NewBlockRes(block, true)
|
||||||
br.fullTx = true
|
|
||||||
|
|
||||||
if args.Index >= int64(len(br.Transactions)) || args.Index < 0 {
|
if args.Index >= int64(len(br.Transactions)) || args.Index < 0 {
|
||||||
return NewValidationError("Index", "does not exist")
|
return NewValidationError("Index", "does not exist")
|
||||||
|
@ -228,8 +225,7 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
|
||||||
}
|
}
|
||||||
|
|
||||||
block := api.xeth().EthBlockByNumber(args.BlockNumber)
|
block := api.xeth().EthBlockByNumber(args.BlockNumber)
|
||||||
v := NewBlockRes(block)
|
v := NewBlockRes(block, true)
|
||||||
v.fullTx = true
|
|
||||||
|
|
||||||
if args.Index >= int64(len(v.Transactions)) || args.Index < 0 {
|
if args.Index >= int64(len(v.Transactions)) || args.Index < 0 {
|
||||||
return NewValidationError("Index", "does not exist")
|
return NewValidationError("Index", "does not exist")
|
||||||
|
@ -241,14 +237,14 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
br := NewBlockRes(api.xeth().EthBlockByHash(args.Hash))
|
br := NewBlockRes(api.xeth().EthBlockByHash(args.Hash), false)
|
||||||
|
|
||||||
if args.Index >= int64(len(br.Uncles)) || args.Index < 0 {
|
if args.Index >= int64(len(br.Uncles)) || args.Index < 0 {
|
||||||
return NewValidationError("Index", "does not exist")
|
return NewValidationError("Index", "does not exist")
|
||||||
}
|
}
|
||||||
|
|
||||||
uhash := br.Uncles[args.Index]
|
uhash := br.Uncles[args.Index]
|
||||||
uncle := NewBlockRes(api.xeth().EthBlockByHash(uhash.String()))
|
uncle := NewBlockRes(api.xeth().EthBlockByHash(uhash.String()), false)
|
||||||
|
|
||||||
*reply = uncle
|
*reply = uncle
|
||||||
case "eth_getUncleByBlockNumberAndIndex":
|
case "eth_getUncleByBlockNumberAndIndex":
|
||||||
|
@ -258,15 +254,14 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
|
||||||
}
|
}
|
||||||
|
|
||||||
block := api.xeth().EthBlockByNumber(args.BlockNumber)
|
block := api.xeth().EthBlockByNumber(args.BlockNumber)
|
||||||
v := NewBlockRes(block)
|
v := NewBlockRes(block, true)
|
||||||
v.fullTx = true
|
|
||||||
|
|
||||||
if args.Index >= int64(len(v.Uncles)) || args.Index < 0 {
|
if args.Index >= int64(len(v.Uncles)) || args.Index < 0 {
|
||||||
return NewValidationError("Index", "does not exist")
|
return NewValidationError("Index", "does not exist")
|
||||||
}
|
}
|
||||||
|
|
||||||
uhash := v.Uncles[args.Index]
|
uhash := v.Uncles[args.Index]
|
||||||
uncle := NewBlockRes(api.xeth().EthBlockByHash(uhash.String()))
|
uncle := NewBlockRes(api.xeth().EthBlockByHash(uhash.String()), false)
|
||||||
|
|
||||||
*reply = uncle
|
*reply = uncle
|
||||||
case "eth_getCompilers":
|
case "eth_getCompilers":
|
||||||
|
|
|
@ -29,12 +29,15 @@ type BlockRes struct {
|
||||||
Uncles []*hexdata `json:"uncles"`
|
Uncles []*hexdata `json:"uncles"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewBlockRes(block *types.Block) *BlockRes {
|
func NewBlockRes(block *types.Block, fullTx bool) *BlockRes {
|
||||||
|
// TODO respect fullTx flag
|
||||||
|
|
||||||
if block == nil {
|
if block == nil {
|
||||||
return &BlockRes{}
|
return &BlockRes{}
|
||||||
}
|
}
|
||||||
|
|
||||||
res := new(BlockRes)
|
res := new(BlockRes)
|
||||||
|
res.fullTx = fullTx
|
||||||
res.BlockNumber = newHexNum(block.Number())
|
res.BlockNumber = newHexNum(block.Number())
|
||||||
res.BlockHash = newHexData(block.Hash())
|
res.BlockHash = newHexData(block.Hash())
|
||||||
res.ParentHash = newHexData(block.ParentHash())
|
res.ParentHash = newHexData(block.ParentHash())
|
||||||
|
@ -52,11 +55,20 @@ func NewBlockRes(block *types.Block) *BlockRes {
|
||||||
// res.MinGasPrice =
|
// res.MinGasPrice =
|
||||||
res.GasUsed = newHexNum(block.GasUsed())
|
res.GasUsed = newHexNum(block.GasUsed())
|
||||||
res.UnixTimestamp = newHexNum(block.Time())
|
res.UnixTimestamp = newHexNum(block.Time())
|
||||||
res.Transactions = NewTransactionsRes(block.Transactions())
|
|
||||||
|
res.Transactions = make([]*TransactionRes, len(block.Transactions()))
|
||||||
|
for i, tx := range block.Transactions() {
|
||||||
|
res.Transactions[i] = NewTransactionRes(tx)
|
||||||
|
res.Transactions[i].BlockHash = res.BlockHash
|
||||||
|
res.Transactions[i].BlockNumber = res.BlockNumber
|
||||||
|
res.Transactions[i].TxIndex = newHexNum(i)
|
||||||
|
}
|
||||||
|
|
||||||
res.Uncles = make([]*hexdata, len(block.Uncles()))
|
res.Uncles = make([]*hexdata, len(block.Uncles()))
|
||||||
for i, uncle := range block.Uncles() {
|
for i, uncle := range block.Uncles() {
|
||||||
res.Uncles[i] = newHexData(uncle.Hash())
|
res.Uncles[i] = newHexData(uncle.Hash())
|
||||||
}
|
}
|
||||||
|
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,14 +103,6 @@ func NewTransactionRes(tx *types.Transaction) *TransactionRes {
|
||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTransactionsRes(txs []*types.Transaction) []*TransactionRes {
|
|
||||||
v := make([]*TransactionRes, len(txs))
|
|
||||||
for i, tx := range txs {
|
|
||||||
v[i] = NewTransactionRes(tx)
|
|
||||||
}
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
|
|
||||||
// type FilterLogRes struct {
|
// type FilterLogRes struct {
|
||||||
// Hash string `json:"hash"`
|
// Hash string `json:"hash"`
|
||||||
// Address string `json:"address"`
|
// Address string `json:"address"`
|
||||||
|
|
|
@ -49,7 +49,7 @@ func TestNewBlockRes(t *testing.T) {
|
||||||
"timestamp": reNum,
|
"timestamp": reNum,
|
||||||
}
|
}
|
||||||
|
|
||||||
v := NewBlockRes(block)
|
v := NewBlockRes(block, false)
|
||||||
j, _ := json.Marshal(v)
|
j, _ := json.Marshal(v)
|
||||||
|
|
||||||
for k, re := range tests {
|
for k, re := range tests {
|
||||||
|
|
Loading…
Reference in New Issue