Skip to content

Commit 441b80b

Browse files
authored
receipts: decode zksync receipts (#300)
1 parent 209f0bd commit 441b80b

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

receipts.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ func DecodeReceipt(ctx context.Context, receipt *types.Receipt, provider *ethrpc
128128
return nil, nil, err
129129
}
130130

131+
receipt.Logs = removeZKSyncLogs(receipt.Logs)
132+
131133
isGuestExecute := decodedNonce != nil && len(decodedSignature) == 0
132134
logs, receipts, err := decodeReceipt(receipt.Logs, decodedTransactions, decodedNonce, wallet, transaction.ChainId(), isGuestExecute)
133135
if err != nil {
@@ -141,6 +143,22 @@ func DecodeReceipt(ctx context.Context, receipt *types.Receipt, provider *ethrpc
141143
return receipts, logs, nil
142144
}
143145

146+
var zkSyncAddresses = map[common.Address]struct{}{
147+
common.HexToAddress("0x0000000000000000000000000000000000008006"): {},
148+
common.HexToAddress("0x000000000000000000000000000000000000800A"): {},
149+
}
150+
151+
func removeZKSyncLogs(logs []*types.Log) []*types.Log {
152+
logs_ := make([]*types.Log, 0, len(logs))
153+
for _, log := range logs {
154+
if _, ok := zkSyncAddresses[log.Address]; !ok {
155+
logs_ = append(logs_, log)
156+
}
157+
}
158+
159+
return logs_
160+
}
161+
144162
func V1IsTxExecutedEvent(log *types.Log, hash common.Hash) bool {
145163
return len(log.Topics) == 0 &&
146164
len(log.Data) == 32 &&

receipts_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"math/big"
88
"testing"
99

10+
"github.com/0xsequence/ethkit/ethrpc"
1011
"github.com/0xsequence/ethkit/go-ethereum/common"
1112
"github.com/0xsequence/ethkit/go-ethereum/core/types"
1213
"github.com/0xsequence/go-sequence"
@@ -245,3 +246,18 @@ func areIsomorphic(receipt *sequence.Receipt, transaction *sequence.Transaction)
245246

246247
return nil
247248
}
249+
250+
func TestZKSyncReceipts(t *testing.T) {
251+
ctx := context.Background()
252+
253+
provider, err := ethrpc.NewProvider("https://nodes.sequence.app/sandbox-testnet")
254+
assert.NoError(t, err)
255+
256+
hash := common.HexToHash("0x6ddb43ddf29ed48f302c6b7b6dc9bb47b33dd5099540fb0793f239edb406fa5d")
257+
258+
receipt, err := provider.TransactionReceipt(ctx, hash)
259+
assert.NoError(t, err)
260+
261+
_, _, err = sequence.DecodeReceipt(ctx, receipt, provider)
262+
assert.NoError(t, err)
263+
}

0 commit comments

Comments
 (0)