diff --git a/cli/deployer/main.go b/cli/deployer/main.go index 38d2b10..795bc86 100644 --- a/cli/deployer/main.go +++ b/cli/deployer/main.go @@ -19,6 +19,10 @@ var registrationFee = flag.Int64("payments.registrationFee", 100, "Registration var erc20address = flag.String("payments.erc20address", "", "ERC20 token address for payments. In hex (0x...) format") var contractPath = flag.String("contract.binPath", "", "Path to bin file of payments contract") var abiPath = flag.String("contract.abiPath", "", "Path to ABI file of payments contract") +var gethUrl = flag.String("geth.url", "", "URL value of started geth to connect") +var keystoreDir = flag.String("keystore.directory", "testnet", "specify runtime dir for keystore keys") +var passphrase = flag.String("keystore.passphrase", "", "Pashprase to unlock specified key from keystore") +var etherAddress = flag.String("ether.address", "", "Ethereum acc to use for deployment") func main() { flag.Parse() @@ -35,15 +39,17 @@ func executeCommand(cmd string) error { case "deploy": return deployContract() case "newAccount": - return helpers.NewAccount() + ks := helpers.GetKeystore(*keystoreDir) + return helpers.NewAccount(*passphrase, ks) case "listAccounts": - return helpers.ListAccounts() + ks := helpers.GetKeystore(*keystoreDir) + return helpers.ListAccounts(ks) case "clientStatus": - _, completed, err := helpers.LookupBackend() + _, completed, err := helpers.LookupBackend(*gethUrl) <-completed return err case "ethBalance": - return getBalanceOf(*helpers.Address) + return getBalanceOf(*etherAddress) case "help": flag.Usage() return nil @@ -51,7 +57,7 @@ func executeCommand(cmd string) error { return errors.New("unknown command: " + cmd) } func getBalanceOf(address string) error { - backend, syncCompleted, err := helpers.LookupBackend() + backend, syncCompleted, err := helpers.LookupBackend(*gethUrl) if err != nil { return err } @@ -65,15 +71,15 @@ func getBalanceOf(address string) error { } func deployContract() (err error) { - ks := helpers.GetKeystore() - acc, err := helpers.GetUnlockedAcc(ks) + ks := helpers.GetKeystore(*keystoreDir) + acc, err := helpers.GetUnlockedAcc(*etherAddress, *passphrase, ks) if err != nil { return } fmt.Println("Lookedup acc: ", acc.Address.String()) transactor := helpers.CreateNewKeystoreTransactor(ks, acc) - client, _, err := helpers.LookupBackend() + client, _, err := helpers.LookupBackend(*gethUrl) if err != nil { return err } diff --git a/cli/helpers/client.go b/cli/helpers/client.go index 3ad7791..51a895a 100644 --- a/cli/helpers/client.go +++ b/cli/helpers/client.go @@ -2,7 +2,6 @@ package helpers import ( "context" - "flag" "fmt" "time" @@ -11,10 +10,8 @@ import ( "github.com/ethereum/go-ethereum/ethclient" ) -var GethUrl = flag.String("geth.url", "", "URL value of started geth to connect") - -func LookupBackend() (*ethclient.Client, chan bool, error) { - ethClient, err := ethclient.Dial(*GethUrl) +func LookupBackend(rpcUrl string) (*ethclient.Client, chan bool, error) { + ethClient, err := ethclient.Dial(rpcUrl) if err != nil { return nil, nil, err } diff --git a/cli/helpers/keystore.go b/cli/helpers/keystore.go index 7337246..c7e03f3 100644 --- a/cli/helpers/keystore.go +++ b/cli/helpers/keystore.go @@ -2,7 +2,6 @@ package helpers import ( "errors" - "flag" "fmt" "github.com/ethereum/go-ethereum/accounts" @@ -12,35 +11,29 @@ import ( "github.com/ethereum/go-ethereum/core/types" ) -var KeyStoreDir = flag.String("keystore.directory", "testnet", "specify runtime dir for keystore keys") -var Passphrase = flag.String("keystore.passphrase", "", "Pashprase to unlock specified key from keystore") -var Address = flag.String("ether.address", "", "Ethereum acc to use for deployment") - -func GetKeystore() *keystore.KeyStore { - return keystore.NewKeyStore(*KeyStoreDir, keystore.StandardScryptN, keystore.StandardScryptP) +func GetKeystore(keystoreDir string) *keystore.KeyStore { + return keystore.NewKeyStore(keystoreDir, keystore.StandardScryptN, keystore.StandardScryptP) } -func ListAccounts() error { - ks := GetKeystore() +func ListAccounts(ks *keystore.KeyStore) error { for i, acc := range ks.Accounts() { fmt.Printf("%d: Address: %s\n", i, acc.Address.String()) } return nil } -func NewAccount() (err error) { - ks := GetKeystore() - _, err = ks.NewAccount(*Passphrase) +func NewAccount(passphrase string, ks *keystore.KeyStore) (err error) { + _, err = ks.NewAccount(passphrase) return } -func GetUnlockedAcc(ks *keystore.KeyStore) (*accounts.Account, error) { - searchAcc := accounts.Account{Address: common.HexToAddress(*Address)} +func GetUnlockedAcc(address, passphrase string, ks *keystore.KeyStore) (*accounts.Account, error) { + searchAcc := accounts.Account{Address: common.HexToAddress(address)} foundAcc, err := ks.Find(searchAcc) if err != nil { return nil, err } - err = ks.Unlock(foundAcc, *Passphrase) + err = ks.Unlock(foundAcc, passphrase) if err != nil { return nil, err } diff --git a/cli/minter/main.go b/cli/minter/main.go index 6fd593a..feee588 100644 --- a/cli/minter/main.go +++ b/cli/minter/main.go @@ -15,6 +15,10 @@ import ( var erc20contract = flag.String("erc20.address", "", "Address of ERC20 mintable token") var whom = flag.String("forAddress", "", "Address for which tokens to mint") var amount = flag.Int64("amount", 1000000, "Amount of tokens to mint") +var gethUrl = flag.String("geth.url", "", "URL value of started geth to connect") +var keystoreDir = flag.String("keystore.directory", "testnet", "specify runtime dir for keystore keys") +var passphrase = flag.String("keystore.passphrase", "", "Pashprase to unlock specified key from keystore") +var etherAddress = flag.String("ether.address", "", "Ethereum acc to use for deployment") func main() { flag.Parse() @@ -28,15 +32,15 @@ func main() { } func mintToken() (err error) { - ks := helpers.GetKeystore() - acc, err := helpers.GetUnlockedAcc(ks) + ks := helpers.GetKeystore(*keystoreDir) + acc, err := helpers.GetUnlockedAcc(*etherAddress, *passphrase, ks) if err != nil { return } fmt.Println("Lookedup acc: ", acc.Address.String()) transactor := helpers.CreateNewKeystoreTransactor(ks, acc) - client, _, err := helpers.LookupBackend() + client, _, err := helpers.LookupBackend(*gethUrl) if err != nil { return err } diff --git a/test_utils/backend.go b/test_utils/backend.go index e6c0b65..2a69ba6 100644 --- a/test_utils/backend.go +++ b/test_utils/backend.go @@ -15,7 +15,8 @@ import ( type TransactionalBackend interface { bind.ContractBackend - Commit() //taken from Simulated backend + Commit() //taken from Simulated backend + TransactionReceipt(ctx context.Context, txHash common.Hash) (*types.Receipt, error) //taken from Simulated backend } // Keep in mind that initial amount is actually in Gwei - you need really HUGE diff --git a/test_utils/keys.go b/test_utils/keys.go index 690d0af..2b9507c 100644 --- a/test_utils/keys.go +++ b/test_utils/keys.go @@ -17,11 +17,14 @@ type EthAccount struct { func NewAccountFromKey(privateKey *ecdsa.PrivateKey) *EthAccount { + transactor := bind.NewKeyedTransactor(privateKey) + transactor.GasLimit = 0 + return &EthAccount{ PrivateKey: privateKey, PublicKey: privateKey.PublicKey, Address: crypto.PubkeyToAddress(privateKey.PublicKey), - Transactor: bind.NewKeyedTransactor(privateKey), + Transactor: transactor, } }