diff --git a/.travis.yml b/.travis.yml index 9d5357e..1792a41 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,6 @@ language: go go: - - "1.9.x" - - "1.10.x" - "master" script: diff --git a/hdwallet.go b/hdwallet.go index 9789376..e0177e3 100644 --- a/hdwallet.go +++ b/hdwallet.go @@ -230,7 +230,7 @@ func (w *Wallet) SignHash(account accounts.Account, hash []byte) ([]byte, error) } // SignTxEIP155 implements accounts.Wallet, which allows the account to sign an ERC-20 transaction. -func (w *Wallet) SignTxEIP155(account accounts.Account, tx *types.Transaction, chainID, baseFee *big.Int) (*types.Transaction, error) { +func (w *Wallet) SignTxEIP155(account accounts.Account, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error) { w.stateLock.RLock() // Comms have own mutex, this is for the state fields defer w.stateLock.RUnlock() @@ -245,18 +245,18 @@ func (w *Wallet) SignTxEIP155(account accounts.Account, tx *types.Transaction, c return nil, err } + signer := types.NewEIP155Signer(chainID) // Sign the transaction and verify the sender to avoid hardware fault surprises - signedTx, err := types.SignTx(tx, types.NewEIP155Signer(chainID), privateKey) + signedTx, err := types.SignTx(tx, signer, privateKey) if err != nil { return nil, err } - msg, err := signedTx.AsMessage(types.NewEIP155Signer(chainID), baseFee) + sender, err := types.Sender(signer, signedTx) if err != nil { return nil, err } - sender := msg.From() if sender != account.Address { return nil, fmt.Errorf("signer mismatch: expected %s, got %s", account.Address.Hex(), sender.Hex()) } @@ -265,7 +265,7 @@ func (w *Wallet) SignTxEIP155(account accounts.Account, tx *types.Transaction, c } // SignTx implements accounts.Wallet, which allows the account to sign an Ethereum transaction. -func (w *Wallet) SignTx(account accounts.Account, tx *types.Transaction, chainID, baseFee *big.Int) (*types.Transaction, error) { +func (w *Wallet) SignTx(account accounts.Account, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error) { w.stateLock.RLock() // Comms have own mutex, this is for the state fields defer w.stateLock.RUnlock() @@ -282,18 +282,17 @@ func (w *Wallet) SignTx(account accounts.Account, tx *types.Transaction, chainID signer := types.LatestSignerForChainID(chainID) - // Sign the transaction and verify the sender to avoid hardware fault surprises + // Sign the transaction and verify the sender to avoid hardware fault surprises signedTx, err := types.SignTx(tx, signer, privateKey) if err != nil { return nil, err } - msg, err := signedTx.AsMessage(signer, baseFee) + sender, err := types.Sender(signer, signedTx) if err != nil { return nil, err } - sender := msg.From() if sender != account.Address { return nil, fmt.Errorf("signer mismatch: expected %s, got %s", account.Address.Hex(), sender.Hex()) } @@ -310,8 +309,8 @@ func (w *Wallet) SignHashWithPassphrase(account accounts.Account, passphrase str // SignTxWithPassphrase implements accounts.Wallet, attempting to sign the given // transaction with the given account using passphrase as extra authentication. -func (w *Wallet) SignTxWithPassphrase(account accounts.Account, passphrase string, tx *types.Transaction, chainID, baseFee *big.Int) (*types.Transaction, error) { - return w.SignTx(account, tx, baseFee, chainID) +func (w *Wallet) SignTxWithPassphrase(account accounts.Account, passphrase string, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error) { + return w.SignTx(account, tx, chainID) } // PrivateKey returns the ECDSA private key of the account. diff --git a/hdwallet_test.go b/hdwallet_test.go index edee3b5..973b482 100644 --- a/hdwallet_test.go +++ b/hdwallet_test.go @@ -6,6 +6,7 @@ import ( "strings" "testing" + "github.com/ethereum/go-ethereum/accounts" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core/types" @@ -64,6 +65,8 @@ func TestWallet(t *testing.T) { if err != nil { t.Error(err) } + // Check that Wallet implements the accounts.Wallet interface. + var _ accounts.Wallet = wallet path, err := ParseDerivationPath("m/44'/60'/0'/0/0") if err != nil { @@ -163,7 +166,7 @@ func TestWallet(t *testing.T) { tx := types.NewTransaction(nonce, toAddress, value, gasLimit, gasPrice, data) - signedTx, err := wallet.SignTx(account, tx, nil, nil) + signedTx, err := wallet.SignTx(account, tx, nil) if err != nil { t.Error(err) } @@ -179,7 +182,7 @@ func TestWallet(t *testing.T) { t.Error("expected s value") } - signedTx2, err := wallet.SignTxWithPassphrase(account, "", tx, nil, nil) + signedTx2, err := wallet.SignTxWithPassphrase(account, "", tx, nil) if err != nil { t.Error(err) } @@ -187,7 +190,7 @@ func TestWallet(t *testing.T) { t.Error("expected match") } - signedTx3, err := wallet.SignTxEIP155(account, tx, big.NewInt(42), big.NewInt(10)) + signedTx3, err := wallet.SignTxEIP155(account, tx, big.NewInt(42)) if err != nil { t.Error(err) }