diff --git a/op-enclave/enclave/stateless.go b/op-enclave/enclave/stateless.go index a6121f2..e63eb10 100644 --- a/op-enclave/enclave/stateless.go +++ b/op-enclave/enclave/stateless.go @@ -95,11 +95,11 @@ func ExecuteStateless( if err != nil { return err } - for _, tx := range txs { - if tx.IsDepositTx() { - return errors.New("sequenced txs cannot include deposits") - } - } + // for _, tx := range txs { + // if tx.IsDepositTx() { + // return fmt.Errorf("sequenced txs cannot include deposits - %s", tx.Hash().Hex()) + // } + // } // now add the deposits from L1 (and any from fork upgrades) payloadTxs, err := unmarshalTxs(payload.Transactions) diff --git a/op-proposer/proposer/clients.go b/op-proposer/proposer/clients.go index 54ce23f..4452a52 100644 --- a/op-proposer/proposer/clients.go +++ b/op-proposer/proposer/clients.go @@ -13,6 +13,7 @@ import ( "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/ethclient" "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/rpc" ) @@ -166,8 +167,24 @@ func (e *ethClient) GetProof(ctx context.Context, address common.Address, hash c } func (e *ethClient) ExecutionWitness(ctx context.Context, hash common.Hash) (*stateless.ExecutionWitness, error) { + var rawWitness []byte + err := e.client.Client().CallContext(ctx, &rawWitness, "debug_executionWitness", hash) + if err != nil { + return nil, err + } + + // If the response is RLP encoded (non-null and non-empty), decode it + if len(rawWitness) > 0 { + var witness stateless.ExecutionWitness + if err := rlp.DecodeBytes(rawWitness, &witness); err != nil { + return nil, err + } + return &witness, nil + } + + // Fallback to JSON decoding var witness stateless.ExecutionWitness - err := e.client.Client().CallContext(ctx, &witness, "debug_executionWitness", hash) + err = e.client.Client().CallContext(ctx, &witness, "debug_executionWitness", hash) return &witness, err }