From 1fe70a66ba2ef0f148affa7a72b4e65023474859 Mon Sep 17 00:00:00 2001 From: "Daniel A. Nagy" Date: Fri, 8 May 2015 19:37:35 +0200 Subject: Signature test. --- cmd/geth/js_test.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'cmd/geth') diff --git a/cmd/geth/js_test.go b/cmd/geth/js_test.go index 5587fe2b2..0c54f21dd 100644 --- a/cmd/geth/js_test.go +++ b/cmd/geth/js_test.go @@ -29,6 +29,8 @@ const ( testKey = "e6fab74a43941f82d89cb7faa408e227cdad3153c4720e540e855c19b15e6674" testAddress = "0x8605cdbbdb6d264aa742e77020dcbc58fcdce182" testBalance = "10000000000000000000" + // of empty string + testHash = "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" ) var ( @@ -215,6 +217,32 @@ func TestCheckTestAccountBalance(t *testing.T) { checkEvalJSON(t, repl, `eth.getBalance(primary)`, `"`+testBalance+`"`) } +func TestSignature(t *testing.T) { + tmp, repl, ethereum := testJEthRE(t) + if err := ethereum.Start(); err != nil { + t.Errorf("error starting ethereum: %v", err) + return + } + defer ethereum.Stop() + defer os.RemoveAll(tmp) + + val, err := repl.re.Run(`eth.sign({from: "` + testAddress + `", data: "` + testHash + `"})`) + + // This is a very preliminary test, lacking actual signature verification + if err != nil { + t.Errorf("Error runnig js: %v", err) + return + } + output := val.String() + t.Logf("Output: %v", output) + + regex := regexp.MustCompile(`^0x[0-9a-f]{130}$`) + if !regex.MatchString(output) { + t.Errorf("Signature is not 65 bytes represented in hexadecimal.") + return + } +} + func TestContract(t *testing.T) { tmp, repl, ethereum := testJEthRE(t) -- cgit v1.2.3 From 21e52efdfed19c4376b830f8ad0e52a9e599f633 Mon Sep 17 00:00:00 2001 From: obscuren Date: Mon, 11 May 2015 15:43:14 +0200 Subject: cmd/geth, miner, backend, xeth: Fixed miner threads to be settable Miner threads are now settable through the admin interface (closes #897) and specify 0 CPU worker threads when eth_getWork is called (closes #916) --- cmd/geth/admin.go | 5 ++--- cmd/geth/main.go | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) (limited to 'cmd/geth') diff --git a/cmd/geth/admin.go b/cmd/geth/admin.go index 2b9956638..17d711297 100644 --- a/cmd/geth/admin.go +++ b/cmd/geth/admin.go @@ -275,14 +275,13 @@ func (js *jsre) verbosity(call otto.FunctionCall) otto.Value { } func (js *jsre) startMining(call otto.FunctionCall) otto.Value { - _, err := call.Argument(0).ToInteger() + threads, err := call.Argument(0).ToInteger() if err != nil { fmt.Println(err) return otto.FalseValue() } - // threads now ignored - err = js.ethereum.StartMining() + err = js.ethereum.StartMining(int(threads)) if err != nil { fmt.Println(err) return otto.FalseValue() diff --git a/cmd/geth/main.go b/cmd/geth/main.go index fd7aae4c2..5da59ff3b 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -401,7 +401,7 @@ func startEth(ctx *cli.Context, eth *eth.Ethereum) { } } if ctx.GlobalBool(utils.MiningEnabledFlag.Name) { - if err := eth.StartMining(); err != nil { + if err := eth.StartMining(ctx.GlobalInt(utils.MinerThreadsFlag.Name)); err != nil { utils.Fatalf("%v", err) } } -- cgit v1.2.3 From 97dd4551ef757c33fa33b5c06a0b15582e6a8af3 Mon Sep 17 00:00:00 2001 From: obscuren Date: Mon, 11 May 2015 21:47:34 +0200 Subject: miner, cmd/geth: miner will not ignored owned account transactions Miner does not ignore low gas txs from accounts that are owned. --- cmd/geth/admin.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'cmd/geth') diff --git a/cmd/geth/admin.go b/cmd/geth/admin.go index 17d711297..b0cb7507a 100644 --- a/cmd/geth/admin.go +++ b/cmd/geth/admin.go @@ -275,10 +275,19 @@ func (js *jsre) verbosity(call otto.FunctionCall) otto.Value { } func (js *jsre) startMining(call otto.FunctionCall) otto.Value { - threads, err := call.Argument(0).ToInteger() - if err != nil { - fmt.Println(err) - return otto.FalseValue() + var ( + threads int64 + err error + ) + + if len(call.ArgumentList) > 0 { + threads, err = call.Argument(0).ToInteger() + if err != nil { + fmt.Println(err) + return otto.FalseValue() + } + } else { + threads = 4 } err = js.ethereum.StartMining(int(threads)) -- cgit v1.2.3 From 03bf902b9280aea91eea087f23a4c7aa1f8638c1 Mon Sep 17 00:00:00 2001 From: zelig Date: Sun, 10 May 2015 13:46:38 +0200 Subject: compiler, cli/js: fix solidity compiler tests failing when a different version of solc installed --- cmd/geth/info_test.json | 2 +- cmd/geth/js_test.go | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) (limited to 'cmd/geth') diff --git a/cmd/geth/info_test.json b/cmd/geth/info_test.json index e9e2d342e..1e0c271ac 100644 --- a/cmd/geth/info_test.json +++ b/cmd/geth/info_test.json @@ -1 +1 @@ -{"code":"605280600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa114602e57005b60376004356041565b8060005260206000f35b6000600782029050604d565b91905056","info":{"abiDefinition":[{"constant":false,"inputs":[{"name":"a","type":"uint256"}],"name":"multiply","outputs":[{"name":"d","type":"uint256"}],"type":"function"}],"compilerVersion":"0.9.13","developerDoc":{"methods":{}},"language":"Solidity","languageVersion":"0","source":"contract test {\n /// @notice Will multiply `a` by 7.\n function multiply(uint a) returns(uint d) {\n return a * 7;\n }\n}\n","userDoc":{"methods":{"multiply(uint256)":{"notice":"Will multiply `a` by 7."}}}}} \ No newline at end of file +{"code":"605280600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa114602e57005b60376004356041565b8060005260206000f35b6000600782029050604d565b91905056","info":{"abiDefinition":[{"constant":false,"inputs":[{"name":"a","type":"uint256"}],"name":"multiply","outputs":[{"name":"d","type":"uint256"}],"type":"function"}],"compilerVersion":"0.9.17","developerDoc":{"methods":{}},"language":"Solidity","languageVersion":"0","source":"contract test {\n /// @notice Will multiply `a` by 7.\n function multiply(uint a) returns(uint d) {\n return a * 7;\n }\n}\n","userDoc":{"methods":{"multiply(uint256)":{"notice":"Will multiply `a` by 7."}}}}} \ No newline at end of file diff --git a/cmd/geth/js_test.go b/cmd/geth/js_test.go index 0c54f21dd..52a1ad03c 100644 --- a/cmd/geth/js_test.go +++ b/cmd/geth/js_test.go @@ -25,6 +25,7 @@ import ( const ( testSolcPath = "" + solcVersion = "0.9.17" testKey = "e6fab74a43941f82d89cb7faa408e227cdad3153c4720e540e855c19b15e6674" testAddress = "0x8605cdbbdb6d264aa742e77020dcbc58fcdce182" @@ -273,9 +274,16 @@ func TestContract(t *testing.T) { checkEvalJSON(t, repl, `primary = eth.accounts[0]`, `"`+testAddress+`"`) checkEvalJSON(t, repl, `source = "`+source+`"`, `"`+source+`"`) - _, err = compiler.New("") + // if solc is found with right version, test it, otherwise read from file + sol, err := compiler.New("") if err != nil { t.Logf("solc not found: skipping compiler test") + } else if sol.Version() != solcVersion { + err = fmt.Errorf("solc wrong version found (%v, expect %v): skipping compiler test", sol.Version(), solcVersion) + t.Log(err) + } + + if err != nil { info, err := ioutil.ReadFile("info_test.json") if err != nil { t.Fatalf("%v", err) @@ -287,6 +295,7 @@ func TestContract(t *testing.T) { } else { checkEvalJSON(t, repl, `contract = eth.compile.solidity(source)`, string(contractInfo)) } + checkEvalJSON(t, repl, `contract.code`, `"605280600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa114602e57005b60376004356041565b8060005260206000f35b6000600782029050604d565b91905056"`) checkEvalJSON( @@ -326,7 +335,7 @@ multiply7 = new Multiply7(contractaddress); } checkEvalJSON(t, repl, `filename = "/tmp/info.json"`, `"/tmp/info.json"`) - checkEvalJSON(t, repl, `contenthash = admin.contractInfo.register(primary, contractaddress, contract, filename)`, `"0x57e577316ccee6514797d9de9823af2004fdfe22bcfb6e39bbb8f92f57dcc421"`) + checkEvalJSON(t, repl, `contenthash = admin.contractInfo.register(primary, contractaddress, contract, filename)`, `"0x0d067e2dd99a4d8f0c0279738b17130dd415a89f24a23f0e7cf68c546ae3089d"`) checkEvalJSON(t, repl, `admin.contractInfo.registerUrl(primary, contenthash, "file://"+filename)`, `true`) if err != nil { t.Errorf("unexpected error registering, got %v", err) -- cgit v1.2.3 From b79dd188d916da7adbf448dc27b0c59a04e0938d Mon Sep 17 00:00:00 2001 From: Bas van Kervel Date: Tue, 12 May 2015 14:24:11 +0200 Subject: replaced several path.* with filepath.* which is platform independent --- cmd/geth/js.go | 5 +++-- cmd/geth/js_test.go | 5 ++--- cmd/geth/main.go | 5 ++--- 3 files changed, 7 insertions(+), 8 deletions(-) (limited to 'cmd/geth') diff --git a/cmd/geth/js.go b/cmd/geth/js.go index 9b0ab0a1b..d7c76d85c 100644 --- a/cmd/geth/js.go +++ b/cmd/geth/js.go @@ -22,9 +22,10 @@ import ( "fmt" "math/big" "os" - "path" "strings" + "path/filepath" + "github.com/ethereum/go-ethereum/cmd/utils" "github.com/ethereum/go-ethereum/common/docserver" "github.com/ethereum/go-ethereum/common/natspec" @@ -209,7 +210,7 @@ func (self *jsre) interactive() { } func (self *jsre) withHistory(op func(*os.File)) { - hist, err := os.OpenFile(path.Join(self.ethereum.DataDir, "history"), os.O_RDWR|os.O_CREATE, os.ModePerm) + hist, err := os.OpenFile(filepath.Join(self.ethereum.DataDir, "history"), os.O_RDWR|os.O_CREATE, os.ModePerm) if err != nil { fmt.Printf("unable to open history file: %v\n", err) return diff --git a/cmd/geth/js_test.go b/cmd/geth/js_test.go index 52a1ad03c..3f69876f4 100644 --- a/cmd/geth/js_test.go +++ b/cmd/geth/js_test.go @@ -4,7 +4,6 @@ import ( "fmt" "io/ioutil" "os" - "path" "path/filepath" "regexp" "runtime" @@ -96,7 +95,7 @@ func testJEthRE(t *testing.T) (string, *testjethre, *eth.Ethereum) { t.Fatal(err) } - assetPath := path.Join(os.Getenv("GOPATH"), "src", "github.com", "ethereum", "go-ethereum", "cmd", "mist", "assets", "ext") + assetPath := filepath.Join(os.Getenv("GOPATH"), "src", "github.com", "ethereum", "go-ethereum", "cmd", "mist", "assets", "ext") ds, err := docserver.New("/") if err != nil { t.Errorf("Error creating DocServer: %v", err) @@ -361,7 +360,7 @@ func checkEvalJSON(t *testing.T, re *testjethre, expr, want string) error { } if err != nil { _, file, line, _ := runtime.Caller(1) - file = path.Base(file) + file = filepath.Base(file) fmt.Printf("\t%s:%d: %v\n", file, line, err) t.Fail() } diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 5da59ff3b..5fe83a2a0 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -26,7 +26,6 @@ import ( "io" "io/ioutil" "os" - "path" "path/filepath" "runtime" "strconv" @@ -565,7 +564,7 @@ func upgradeDb(ctx *cli.Context) { } filename := fmt.Sprintf("blockchain_%d_%s.chain", bcVersion, time.Now().Format("2006-01-02_15:04:05")) - exportFile := path.Join(ctx.GlobalString(utils.DataDirFlag.Name), filename) + exportFile := filepath.Join(ctx.GlobalString(utils.DataDirFlag.Name), filename) err = utils.ExportChain(ethereum.ChainManager(), exportFile) if err != nil { @@ -576,7 +575,7 @@ func upgradeDb(ctx *cli.Context) { ethereum.StateDb().Close() ethereum.ExtraDb().Close() - os.RemoveAll(path.Join(ctx.GlobalString(utils.DataDirFlag.Name), "blockchain")) + os.RemoveAll(filepath.Join(ctx.GlobalString(utils.DataDirFlag.Name), "blockchain")) ethereum, err = eth.New(cfg) if err != nil { -- cgit v1.2.3 From 95773b9673ac78fdceb152d1dd2528f90e8a02b7 Mon Sep 17 00:00:00 2001 From: Bas van Kervel Date: Tue, 12 May 2015 15:20:53 +0200 Subject: removed redundant newlines in import block --- cmd/geth/js.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'cmd/geth') diff --git a/cmd/geth/js.go b/cmd/geth/js.go index d7c76d85c..61e97433a 100644 --- a/cmd/geth/js.go +++ b/cmd/geth/js.go @@ -22,9 +22,8 @@ import ( "fmt" "math/big" "os" - "strings" - "path/filepath" + "strings" "github.com/ethereum/go-ethereum/cmd/utils" "github.com/ethereum/go-ethereum/common/docserver" -- cgit v1.2.3 From dca290d5252f23435f48f6b15c332422b2c39b72 Mon Sep 17 00:00:00 2001 From: obscuren Date: Tue, 12 May 2015 16:02:25 +0200 Subject: sol: skipped source checking step --- cmd/geth/js_test.go | 1 + 1 file changed, 1 insertion(+) (limited to 'cmd/geth') diff --git a/cmd/geth/js_test.go b/cmd/geth/js_test.go index 52a1ad03c..d4bf81d54 100644 --- a/cmd/geth/js_test.go +++ b/cmd/geth/js_test.go @@ -245,6 +245,7 @@ func TestSignature(t *testing.T) { } func TestContract(t *testing.T) { + t.Skip() tmp, repl, ethereum := testJEthRE(t) if err := ethereum.Start(); err != nil { -- cgit v1.2.3 From da9fe951da4005761a014316c46771d628dc058e Mon Sep 17 00:00:00 2001 From: Gustav Simonsson Date: Thu, 2 Apr 2015 21:14:25 +0200 Subject: Use common.Address type for accounts.Address --- cmd/geth/admin.go | 4 ++-- cmd/geth/js.go | 3 ++- cmd/geth/main.go | 9 ++++----- 3 files changed, 8 insertions(+), 8 deletions(-) (limited to 'cmd/geth') diff --git a/cmd/geth/admin.go b/cmd/geth/admin.go index b0cb7507a..949a7bde0 100644 --- a/cmd/geth/admin.go +++ b/cmd/geth/admin.go @@ -391,7 +391,7 @@ func (js *jsre) unlock(call otto.FunctionCall) otto.Value { } } am := js.ethereum.AccountManager() - err = am.TimedUnlock(common.FromHex(addr), passphrase, time.Duration(seconds)*time.Second) + err = am.TimedUnlock(common.HexToAddress(addr), passphrase, time.Duration(seconds)*time.Second) if err != nil { fmt.Printf("Unlock account failed '%v'\n", err) return otto.FalseValue() @@ -433,7 +433,7 @@ func (js *jsre) newAccount(call otto.FunctionCall) otto.Value { fmt.Printf("Could not create the account: %v", err) return otto.UndefinedValue() } - return js.re.ToVal(common.ToHex(acct.Address)) + return js.re.ToVal(acct.Address.Hex()) } func (js *jsre) nodeInfo(call otto.FunctionCall) otto.Value { diff --git a/cmd/geth/js.go b/cmd/geth/js.go index 61e97433a..4ddb3bd9c 100644 --- a/cmd/geth/js.go +++ b/cmd/geth/js.go @@ -26,6 +26,7 @@ import ( "strings" "github.com/ethereum/go-ethereum/cmd/utils" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/docserver" "github.com/ethereum/go-ethereum/common/natspec" "github.com/ethereum/go-ethereum/eth" @@ -164,7 +165,7 @@ func (self *jsre) UnlockAccount(addr []byte) bool { return false } // TODO: allow retry - if err := self.ethereum.AccountManager().Unlock(addr, pass); err != nil { + if err := self.ethereum.AccountManager().Unlock(common.BytesToAddress(addr), pass); err != nil { return false } else { fmt.Println("Account is now unlocked for this session.") diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 5fe83a2a0..dbcfe8175 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -365,11 +365,10 @@ func unlockAccount(ctx *cli.Context, am *accounts.Manager, account string) (pass // Load startup keys. XXX we are going to need a different format // Attempt to unlock the account passphrase = getPassPhrase(ctx, "", false) - accbytes := common.FromHex(account) - if len(accbytes) == 0 { + if len(account) == 0 { utils.Fatalf("Invalid account address '%s'", account) } - err = am.Unlock(accbytes, passphrase) + err = am.Unlock(common.StringToAddress(account), passphrase) if err != nil { utils.Fatalf("Unlock account failed '%v'", err) } @@ -385,11 +384,11 @@ func startEth(ctx *cli.Context, eth *eth.Ethereum) { account := ctx.GlobalString(utils.UnlockedAccountFlag.Name) if len(account) > 0 { if account == "primary" { - accbytes, err := am.Primary() + primaryAcc, err := am.Primary() if err != nil { utils.Fatalf("no primary account: %v", err) } - account = common.ToHex(accbytes) + account = primaryAcc.Hex() } unlockAccount(ctx, am, account) } -- cgit v1.2.3 From 2c1b0ff17e020f300ed9d5a5a244f59b4febfe66 Mon Sep 17 00:00:00 2001 From: Gustav Simonsson Date: Sun, 10 May 2015 20:30:02 +0200 Subject: Update key store to new spec but keep address field for now * Also fix address types post-rebase --- cmd/geth/admin.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cmd/geth') diff --git a/cmd/geth/admin.go b/cmd/geth/admin.go index 949a7bde0..15923c366 100644 --- a/cmd/geth/admin.go +++ b/cmd/geth/admin.go @@ -126,7 +126,7 @@ func (js *jsre) pendingTransactions(call otto.FunctionCall) otto.Value { // Add the accouns to a new set accountSet := set.New() for _, account := range accounts { - accountSet.Add(common.BytesToAddress(account.Address)) + accountSet.Add(account.Address) } //ltxs := make([]*tx, len(txs)) -- cgit v1.2.3 From 231fe04f0309e588c6151e1d5a14fd5adc116bf2 Mon Sep 17 00:00:00 2001 From: Gustav Simonsson Date: Tue, 12 May 2015 17:48:21 +0200 Subject: Fix address type in js test --- cmd/geth/js_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cmd/geth') diff --git a/cmd/geth/js_test.go b/cmd/geth/js_test.go index 9b6d503ab..8f9859771 100644 --- a/cmd/geth/js_test.go +++ b/cmd/geth/js_test.go @@ -45,7 +45,7 @@ type testjethre struct { } func (self *testjethre) UnlockAccount(acc []byte) bool { - err := self.ethereum.AccountManager().Unlock(acc, "") + err := self.ethereum.AccountManager().Unlock(common.BytesToAddress(acc), "") if err != nil { panic("unable to unlock") } -- cgit v1.2.3 From e389585f1f2e77fd7cd507499015bf3754581e4e Mon Sep 17 00:00:00 2001 From: Gustav Simonsson Date: Tue, 12 May 2015 18:33:04 +0200 Subject: Change default keystore dir --- cmd/geth/js_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cmd/geth') diff --git a/cmd/geth/js_test.go b/cmd/geth/js_test.go index 8f9859771..c2a0e2fe2 100644 --- a/cmd/geth/js_test.go +++ b/cmd/geth/js_test.go @@ -68,7 +68,7 @@ func testJEthRE(t *testing.T) (string, *testjethre, *eth.Ethereum) { // set up mock genesis with balance on the testAddress core.GenesisData = []byte(testGenesis) - ks := crypto.NewKeyStorePassphrase(filepath.Join(tmp, "keys")) + ks := crypto.NewKeyStorePassphrase(filepath.Join(tmp, "keystore")) am := accounts.NewManager(ks) ethereum, err := eth.New(ð.Config{ DataDir: tmp, -- cgit v1.2.3 From 36ce54e5dc147c36e5cd18508229d62e605862c1 Mon Sep 17 00:00:00 2001 From: obscuren Date: Tue, 12 May 2015 11:41:56 +0200 Subject: cmd/geth: bump version to 0.9.20 --- cmd/geth/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cmd/geth') diff --git a/cmd/geth/main.go b/cmd/geth/main.go index dbcfe8175..1582953f7 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -50,7 +50,7 @@ import _ "net/http/pprof" const ( ClientIdentifier = "Geth" - Version = "0.9.19" + Version = "0.9.20" ) var ( -- cgit v1.2.3