Skip to content

Commit 474eda1

Browse files
authored
Merge pull request ethereum#101 from yzhou61/deposit-sender-fix
Fix sender of deposit transactions
2 parents 09ade3d + 1ee4f9f commit 474eda1

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

core/types/transaction_marshalling_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,27 @@ func TestTransactionUnmarshalJSON(t *testing.T) {
7777
}
7878
})
7979
}
80+
81+
tests = []struct {
82+
name string
83+
json string
84+
expectedError string
85+
}{
86+
{
87+
name: "Valid deposit sender",
88+
json: `{"type":"0x7e","nonce":"0x1","gas": "0x1234", "gasPrice":null,"maxPriorityFeePerGas":null,"maxFeePerGas":null,"value":"0x1","input":"0x616263646566","v":null,"r":null,"s":null,"to":null,"sourceHash":"0x0000000000000000000000000000000000000000000000000000000000000000","from":"0x0000000000000000000000000000000000000001","hash":"0xa4341f3db4363b7ca269a8538bd027b2f8784f84454ca917668642d5f6dffdf9"}`,
89+
},
90+
}
91+
for _, test := range tests {
92+
t.Run(test.name, func(t *testing.T) {
93+
var parsedTx = &Transaction{}
94+
err := json.Unmarshal([]byte(test.json), &parsedTx)
95+
require.NoError(t, err)
96+
97+
signer := NewLondonSigner(big.NewInt(123))
98+
sender, err := signer.Sender(parsedTx)
99+
require.NoError(t, err)
100+
require.Equal(t, common.HexToAddress("0x1"), sender)
101+
})
102+
}
80103
}

core/types/transaction_signing.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,12 @@ func NewLondonSigner(chainId *big.Int) Signer {
183183

184184
func (s londonSigner) Sender(tx *Transaction) (common.Address, error) {
185185
if tx.Type() == DepositTxType {
186-
return tx.inner.(*DepositTx).From, nil
186+
switch tx.inner.(type) {
187+
case *DepositTx:
188+
return tx.inner.(*DepositTx).From, nil
189+
case *depositTxWithNonce:
190+
return tx.inner.(*depositTxWithNonce).From, nil
191+
}
187192
}
188193
if tx.Type() != DynamicFeeTxType {
189194
return s.eip2930Signer.Sender(tx)

0 commit comments

Comments
 (0)