Skip to content

Commit

Permalink
Update types for 0.12.1 changes
Browse files Browse the repository at this point in the history
- Add ExecutionStatus to feeder type
- Add Reverted field to core type
  • Loading branch information
joshklop committed Jul 10, 2023
1 parent 017cfbe commit 101f060
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 6 deletions.
1 change: 1 addition & 0 deletions adapters/feeder2core/feeder2core.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ func AdaptTransactionReceipt(response *feeder.TransactionReceipt) *core.Transact
ExecutionResources: AdaptExecutionResources(response.ExecutionResources),
L1ToL2Message: AdaptL1ToL2Message(response.L1ToL2Message),
L2ToL1Message: l2ToL1Messages,
Reverted: response.ExecutionStatus == feeder.Reverted,
}
}

Expand Down
6 changes: 5 additions & 1 deletion adapters/feeder2core/feeder2core_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,11 @@ func TestAdaptBlock(t *testing.T) {
assert.Equal(t, response.Timestamp, block.Timestamp)
assert.Equal(t, len(response.Transactions), len(block.Transactions))
assert.Equal(t, uint64(len(response.Transactions)), block.TransactionCount)
assert.Equal(t, len(response.Receipts), len(block.Receipts))
if assert.Equal(t, len(response.Receipts), len(block.Receipts)) {
for i, feederReceipt := range response.Receipts {
assert.Equal(t, feederReceipt.ExecutionStatus == feeder.Reverted, block.Receipts[i].Reverted)
}
}
assert.Equal(t, expectedEventCount, block.EventCount)
assert.Equal(t, test.protocolVersion, block.ProtocolVersion)
assert.Nil(t, block.ExtraData)
Expand Down
53 changes: 48 additions & 5 deletions clients/feeder/transaction.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,49 @@
package feeder

import (
"errors"

"github.com/NethermindEth/juno/core/felt"
)

type ExecutionStatus uint8

const (
Succeeded ExecutionStatus = iota + 1
Reverted
)

func (es *ExecutionStatus) UnmarshalJSON(data []byte) error {
switch string(data) {
case "SUCCEEDED":
*es = Succeeded
case "REVERTED":
*es = Reverted
default:
return errors.New("unknown ExecutionStatus")
}
return nil
}

type FinalityStatus uint8

const (
AcceptedOnL2 FinalityStatus = iota + 1
AcceptedOnL1
)

func (fs *FinalityStatus) UnmarshalJSON(data []byte) error {
switch string(data) {
case "ACCEPTED_ON_L2":
*fs = AcceptedOnL2
case "ACCEPTED_ON_L1":
*fs = AcceptedOnL1
default:
return errors.New("unknown FinalityStatus")
}
return nil
}

// Transaction object returned by the feeder in JSON format for multiple endpoints
type Transaction struct {
Hash *felt.Felt `json:"transaction_hash,omitempty" copier:"must,nopanic"`
Expand All @@ -23,11 +63,13 @@ type Transaction struct {
}

type TransactionStatus struct {
Status string `json:"status"`
BlockHash *felt.Felt `json:"block_hash"`
BlockNumber uint64 `json:"block_number"`
TransactionIndex uint64 `json:"transaction_index"`
Transaction *Transaction `json:"transaction"`
Status string `json:"status"`
FinalityStatus FinalityStatus `json:"finality_status"`
ExecutionStatus ExecutionStatus `json:"execution_status"`
BlockHash *felt.Felt `json:"block_hash"`
BlockNumber uint64 `json:"block_number"`
TransactionIndex uint64 `json:"transaction_index"`
Transaction *Transaction `json:"transaction"`
}

type Event struct {
Expand Down Expand Up @@ -68,6 +110,7 @@ type BuiltinInstanceCounter struct {
type TransactionReceipt struct {
ActualFee *felt.Felt `json:"actual_fee"`
Events []*Event `json:"events"`
ExecutionStatus ExecutionStatus `json:"execution_status"`
ExecutionResources *ExecutionResources `json:"execution_resources"`
L1ToL2Message *L1ToL2Message `json:"l1_to_l2_consumed_message"`
L2ToL1Message []*L2ToL1Message `json:"l2_to_l1_messages"`
Expand Down
31 changes: 31 additions & 0 deletions clients/feeder/transaction_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package feeder_test

import (
"testing"

"github.com/NethermindEth/juno/clients/feeder"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func TestUnmarshalExecutionStatus(t *testing.T) {
es := new(feeder.ExecutionStatus)
require.NoError(t, es.UnmarshalJSON([]byte("SUCCEEDED")))
assert.Equal(t, feeder.Succeeded, *es)

require.NoError(t, es.UnmarshalJSON([]byte("REVERTED")))
assert.Equal(t, feeder.Reverted, *es)

require.ErrorContains(t, es.UnmarshalJSON([]byte("ABC")), "unknown ExecutionStatus")
}

func TestUnmarshalFinalityStatus(t *testing.T) {
fs := new(feeder.FinalityStatus)
require.NoError(t, fs.UnmarshalJSON([]byte("ACCEPTED_ON_L1")))
assert.Equal(t, feeder.AcceptedOnL1, *fs)

require.NoError(t, fs.UnmarshalJSON([]byte("ACCEPTED_ON_L2")))
assert.Equal(t, feeder.AcceptedOnL2, *fs)

require.ErrorContains(t, fs.UnmarshalJSON([]byte("ABC")), "unknown FinalityStatus")
}
1 change: 1 addition & 0 deletions core/transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ type TransactionReceipt struct {
L1ToL2Message *L1ToL2Message
L2ToL1Message []*L2ToL1Message
TransactionHash *felt.Felt
Reverted bool
}

type Transaction interface {
Expand Down

0 comments on commit 101f060

Please sign in to comment.