diff --git a/mobile/bind.go b/mobile/bind.go index 48e9921b4..dc3f32b15 100644 --- a/mobile/bind.go +++ b/mobile/bind.go @@ -19,7 +19,6 @@ package geth import ( - "errors" "math/big" "strings" @@ -28,7 +27,6 @@ import ( "github.com/ethereum/go-ethereum/accounts/keystore" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/crypto" ) // Signer is an interface defining the callback when a contract requires a @@ -82,28 +80,14 @@ func NewTransactOpts() *TransactOpts { return new(TransactOpts) } -// NewKeyedTransactor is a utility method to easily create a transaction signer +// NewKeyedTransactOpts is a utility method to easily create a transaction signer // from a single private key. func NewKeyedTransactOpts(keyJson []byte, passphrase string) (*TransactOpts, error) { key, err := keystore.DecryptKey(keyJson, passphrase) if err != nil { return nil, err } - keyAddr := crypto.PubkeyToAddress(key.PrivateKey.PublicKey) - opts := bind.TransactOpts{ - From: keyAddr, - Signer: func(signer types.Signer, address common.Address, tx *types.Transaction) (*types.Transaction, error) { - if address != keyAddr { - return nil, errors.New("not authorized to sign this account") - } - signature, err := crypto.Sign(signer.Hash(tx).Bytes(), key.PrivateKey) - if err != nil { - return nil, err - } - return tx.WithSignature(signer, signature) - }, - } - return &TransactOpts{opts}, nil + return &TransactOpts{*bind.NewKeyedTransactor(key.PrivateKey)}, nil } func (opts *TransactOpts) GetFrom() *Address { return &Address{opts.opts.From} }