Skip to content

Commit

Permalink
Merge pull request #353 from aergoio/feature/rollback_web3
Browse files Browse the repository at this point in the history
rollback partial web3 logic
  • Loading branch information
waltzforzizi committed Apr 29, 2024
2 parents cc53115 + 70358cb commit ddbbd8b
Show file tree
Hide file tree
Showing 15 changed files with 16 additions and 324 deletions.
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@ require (
golang.org/x/text v0.13.0 // indirect
golang.org/x/tools v0.14.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 // indirect
google.golang.org/grpc/examples v0.0.0-20230724170852-2aa261560586 // indirect
gopkg.in/yaml.v2 v2.3.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1276,6 +1276,8 @@ google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk=
google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL4FRTKgpZmsRfV214zcA=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y=
google.golang.org/grpc/examples v0.0.0-20230724170852-2aa261560586 h1:3cBl7oDZlRZ9VAnaA9QglQNOY+ZP2wZJyGpiz1uuAuU=
google.golang.org/grpc/examples v0.0.0-20230724170852-2aa261560586/go.mod h1:YYPcVQPFEuZQrEwqV6D//WM2s4HnWXtvFr/kII5NKbI=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
Expand Down
78 changes: 0 additions & 78 deletions rpc/grpcserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -1067,84 +1067,6 @@ func (rpc *AergoRPCService) GetReceipt(ctx context.Context, in *types.SingleByte
return rsp.Receipt, rsp.Err
}

func (rpc *AergoRPCService) GetReceipts(ctx context.Context, in *types.ReceiptsParams) (*types.ReceiptsPaged, error) {
if err := rpc.checkAuth(ctx, ReadBlockChain); err != nil {
return nil, err
}

var result interface{}
var err error
if cap(in.Hashornumber) == 0 {
return nil, status.Errorf(codes.InvalidArgument, "Received no bytes")
}

if len(in.Hashornumber) == 32 {
result, err = rpc.hub.RequestFuture(message.ChainSvc, &message.GetReceipts{BlockHash: in.Hashornumber},
defaultActorTimeout, "rpc.(*AergoRPCService).GetReceipts#2").Result()
} else if len(in.Hashornumber) == 8 {
number := uint64(binary.LittleEndian.Uint64(in.Hashornumber))
result, err = rpc.hub.RequestFuture(message.ChainSvc, &message.GetReceiptsByNo{BlockNo: number},
defaultActorTimeout, "rpc.(*AergoRPCService).GetReceipts#1").Result()
} else {
return nil, status.Errorf(codes.InvalidArgument, "Invalid input. Should be a 32 byte hash or up to 8 byte number.")
}

if err != nil {
return nil, err
}

getPaging := func(data *types.Receipts, size uint32, offset uint32) *types.ReceiptsPaged {
allReceipts := data.Get()
total := uint32(len(allReceipts))

var fetchSize uint32
if size > uint32(1000) {
fetchSize = uint32(1000)
} else if size == uint32(0) {
fetchSize = 100
} else {
fetchSize = size
}

var receipts []*types.Receipt
if offset >= uint32(len(allReceipts)) {
receipts = []*types.Receipt{}
} else {
limit := offset + fetchSize
if limit > uint32(len(allReceipts)) {
limit = uint32(len(allReceipts))
}
receipts = allReceipts[offset:limit]
}

return &types.ReceiptsPaged{
Receipts: receipts,
BlockNo: data.GetBlockNo(),
Total: total,
Size: fetchSize,
Offset: offset,
}
}

switch result.(type) {
case message.GetReceiptsRsp:
rsp, ok := result.(message.GetReceiptsRsp)
if !ok {
return nil, status.Errorf(codes.Internal, "internal type (%v) error", reflect.TypeOf(result))
}
return getPaging(rsp.Receipts, in.Paging.Size, in.Paging.Offset), rsp.Err

case message.GetReceiptsByNoRsp:
rsp, ok := result.(message.GetReceiptsByNoRsp)
if !ok {
return nil, status.Errorf(codes.Internal, "internal type (%v) error", reflect.TypeOf(result))
}
return getPaging(rsp.Receipts, in.Paging.Size, in.Paging.Offset), rsp.Err
}

return nil, status.Errorf(codes.Internal, "unexpected result type %s, expected %s", reflect.TypeOf(result), "message.GetReceipts")
}

func (rpc *AergoRPCService) GetABI(ctx context.Context, in *types.SingleBytes) (*types.ABI, error) {
if err := rpc.checkAuth(ctx, ReadBlockChain); err != nil {
return nil, err
Expand Down
75 changes: 0 additions & 75 deletions rpc/web3/v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ func (api *Web3APIv1) NewHandler() {
"/getBlockMetadata": api.GetBlockMetadata,
"/getTx": api.GetTX,
"/getReceipt": api.GetReceipt,
"/getReceipts": api.GetReceipts,
"/queryContract": api.QueryContract,
"/listEvents": api.ListEvents,
"/getABI": api.GetABI,
Expand Down Expand Up @@ -667,80 +666,6 @@ func (api *Web3APIv1) GetReceipt() (handler http.Handler, ok bool) {
return stringResponseHandler(jsonrpc.MarshalJSON(result), nil), true
}

func (api *Web3APIv1) GetReceipts() (handler http.Handler, ok bool) {
values, err := url.ParseQuery(api.request.URL.RawQuery)
if err != nil {
return commonResponseHandler(&types.Empty{}, err), true
}

request := &types.ReceiptsParams{}
request.Paging = &types.PageParams{}

hash := values.Get("hash")
if hash != "" {
hashBytes, err := base58.Decode(hash)
if err != nil {
return commonResponseHandler(&types.Empty{}, err), true
}
request.Hashornumber = hashBytes
}

number := values.Get("number")
if number != "" {
numberValue, err := strconv.ParseUint(number, 10, 64)
if err != nil {
return commonResponseHandler(&types.Empty{}, err), true
}
number := uint64(numberValue) // Replace with your actual value
byteValue := make([]byte, 8)
binary.LittleEndian.PutUint64(byteValue, number)
request.Hashornumber = byteValue
}

size := values.Get("size")
if size != "" {
sizeValue, parseErr := strconv.ParseUint(size, 10, 64)
if parseErr != nil {
return commonResponseHandler(&types.Empty{}, parseErr), true

}
request.Paging.Size = uint32(sizeValue)
if request.Paging.Size > 100 {
request.Paging.Size = 100
}
}

offset := values.Get("offset")
if offset != "" {
offsetValue, parseErr := strconv.ParseUint(offset, 10, 64)
if parseErr != nil {
return commonResponseHandler(&types.Empty{}, parseErr), true
}
request.Paging.Offset = uint32(offsetValue)
}

result, err := api.rpc.GetReceipts(api.request.Context(), request)
if err != nil {
errStr := err.Error()

strBlockNo := strings.TrimPrefix(errStr, "empty : blockNo=")
if strBlockNo == errStr {
return commonResponseHandler(&types.Empty{}, err), true
}

blockNo, err := strconv.ParseUint(strBlockNo, 10, 64)
if err != nil {
return commonResponseHandler(&types.Empty{}, err), true
}

receipts := &jsonrpc.InOutReceipts{}
receipts.BlockNo = blockNo
return stringResponseHandler(jsonrpc.MarshalJSON(receipts), nil), true
}

output := jsonrpc.ConvReceiptsPaged(result)
return stringResponseHandler(jsonrpc.MarshalJSON(output), nil), true
}

func (api *Web3APIv1) GetTX() (handler http.Handler, ok bool) {
values, err := url.ParseQuery(api.request.URL.RawQuery)
Expand Down
2 changes: 1 addition & 1 deletion types/account.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion types/admin.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion types/aergo_raft.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion types/blockchain.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 0 additions & 26 deletions types/jsonrpc/receipt.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,32 +102,6 @@ type InOutReceipts struct {
BlockNo uint64 `json:"blockNo,omitempty"`
}

func ConvReceiptsPaged(msg *types.ReceiptsPaged) *InOutReceiptsPaged {
if msg == nil {
return nil
}

rp := &InOutReceiptsPaged{}
rp.Total = msg.GetTotal()
rp.Offset = msg.GetOffset()
rp.Size = msg.GetSize()
rp.BlockNo = msg.GetBlockNo()
rp.Receipts = make([]*types.Receipt, len(msg.Get()))
for i, receipt := range msg.Get() {
rp.Receipts[i] = receipt
}

return rp
}

type InOutReceiptsPaged struct {
Total uint32 `json:"total,omitempty"`
Offset uint32 `json:"offset,omitempty"`
Size uint32 `json:"size,omitempty"`
Receipts []*types.Receipt `json:"receipts"`
BlockNo uint64 `json:"blockNo,omitempty"`
}

func ConvEvents(msg *types.EventList) *InOutEventList {
if msg == nil {
return nil
Expand Down
2 changes: 1 addition & 1 deletion types/metric.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion types/node.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions types/p2p.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion types/pmap.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion types/polarrpc.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit ddbbd8b

Please sign in to comment.