Skip to content

Commit

Permalink
Fix getTransactionStatus rpc response (#2367)
Browse files Browse the repository at this point in the history
  • Loading branch information
weiihann authored Jan 13, 2025
1 parent 0fb6380 commit 2a4add5
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 2 deletions.
2 changes: 1 addition & 1 deletion rpc/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -501,7 +501,7 @@ func (h *Handler) MethodsV0_7() ([]jsonrpc.Method, string) { //nolint: funlen
{
Name: "starknet_getTransactionStatus",
Params: []jsonrpc.Parameter{{Name: "transaction_hash"}},
Handler: h.TransactionStatus,
Handler: h.TransactionStatusV0_7,
},
{
Name: "starknet_call",
Expand Down
18 changes: 18 additions & 0 deletions rpc/transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -646,6 +646,24 @@ func (h *Handler) TransactionStatus(ctx context.Context, hash felt.Felt) (*Trans
return nil, txErr
}

// In 0.7.0, the failure reason is not returned in the TransactionStatus response.
type TransactionStatusV0_7 struct {
Finality TxnStatus `json:"finality_status"`
Execution TxnExecutionStatus `json:"execution_status,omitempty"`
}

func (h *Handler) TransactionStatusV0_7(ctx context.Context, hash felt.Felt) (*TransactionStatusV0_7, *jsonrpc.Error) {
res, err := h.TransactionStatus(ctx, hash)
if err != nil {
return nil, err
}

return &TransactionStatusV0_7{
Finality: res.Finality,
Execution: res.Execution,
}, nil
}

func makeJSONErrorFromGatewayError(err error) *jsonrpc.Error {
gatewayErr, ok := err.(*gateway.Error)
if !ok {
Expand Down
20 changes: 19 additions & 1 deletion rpc/transaction_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1225,7 +1225,7 @@ func TestTransactionStatus(t *testing.T) {
require.Nil(t, rpcErr)
require.Equal(t, want, status)
})
t.Run("verified", func(t *testing.T) {
t.Run("verified", func(t *testing.T) { //nolint:dupl
mockReader := mocks.NewMockReader(mockCtrl)
mockReader.EXPECT().TransactionByHash(tx.Hash()).Return(tx, nil)
mockReader.EXPECT().Receipt(tx.Hash()).Return(block.Receipts[0], block.Hash, block.Number, nil)
Expand All @@ -1243,6 +1243,24 @@ func TestTransactionStatus(t *testing.T) {
require.Nil(t, rpcErr)
require.Equal(t, want, status)
})
t.Run("verified v0.7.0", func(t *testing.T) { //nolint:dupl
mockReader := mocks.NewMockReader(mockCtrl)
mockReader.EXPECT().TransactionByHash(tx.Hash()).Return(tx, nil)
mockReader.EXPECT().Receipt(tx.Hash()).Return(block.Receipts[0], block.Hash, block.Number, nil)
mockReader.EXPECT().L1Head().Return(&core.L1Head{
BlockNumber: block.Number + 1,
}, nil)

handler := rpc.New(mockReader, nil, nil, "", log)

want := &rpc.TransactionStatusV0_7{
Finality: rpc.TxnStatusAcceptedOnL1,
Execution: rpc.TxnSuccess,
}
status, rpcErr := handler.TransactionStatusV0_7(ctx, *tx.Hash())
require.Nil(t, rpcErr)
require.Equal(t, want, status)
})
})
t.Run("transaction not found in db", func(t *testing.T) {
notFoundTests := map[string]struct {
Expand Down

0 comments on commit 2a4add5

Please sign in to comment.