Skip to content

Commit

Permalink
mobile: use bind.NewKeyedTransactor instead of duplicating (ethereum#…
Browse files Browse the repository at this point in the history
…20888)

It's better to reuse the existing code to create a keyed transactor
than to rewrite the logic again.
  • Loading branch information
MariusVanDerWijden authored Apr 3, 2020
1 parent be9172a commit 98eab2d
Showing 1 changed file with 2 additions and 18 deletions.
20 changes: 2 additions & 18 deletions mobile/bind.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
package geth

import (
"errors"
"math/big"
"strings"

Expand All @@ -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
Expand Down Expand Up @@ -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} }
Expand Down

0 comments on commit 98eab2d

Please sign in to comment.