Compare commits

...

8518 Commits

Author SHA1 Message Date
Felix Lange
5f54075760 params: v1.8.0 stable 2018-02-14 13:51:30 +01:00
Péter Szilágyi
57bca0af8c containers/docker: bump legacy images to 1.8 branch (#16084) 2018-02-14 13:49:53 +01:00
Felix Lange
a5c0bbb4f4 all: update license information (#16089) 2018-02-14 13:49:11 +01:00
Péter Szilágyi
0544a43c13 Merge pull request #16085 from karalabe/p2p-fix-outofbounds
p2p/discover: fix out-of-bounds issue
2018-02-13 23:40:18 +02:00
Péter Szilágyi
20797348ca p2p/discover: fix out-of-bounds issue 2018-02-13 20:59:43 +02:00
Felix Lange
88f2839da4 travis.yml: work around Go 1.9.4 issue (#16082)
* travis.yml: work around Go 1.9.4 issue

* travis: workaround the workaround
2018-02-13 19:32:20 +02:00
Felix Lange
b007412db1 core: soften up state memory force-commit log messages (#16080)
Talk about "state" instead of "trie timing", "trie memory" and remove
the overzealous warning when the limit is just reached. Since the time
limit is always reached on slow machines, move the message to info level
so users don't freak out about internal details.
2018-02-13 15:12:55 +02:00
Péter Szilágyi
da41a7258d Merge pull request #16073 from karalabe/puppeth-unify-discovery
cmd/puppeth: unify discv4 and discv5 ports
2018-02-13 11:43:50 +02:00
Felföldi Zsolt
8d32c4b990 light: new CHTs (#16074) 2018-02-12 18:03:17 +02:00
Péter Szilágyi
12dab53495 cmd/puppeth: unify discv4 and discv5 ports 2018-02-12 16:27:53 +02:00
Péter Szilágyi
70fbc87379 Merge pull request #16071 from holiman/lintfix
node, rpc: fix linter issues
2018-02-12 15:16:47 +02:00
Martin Holst Swende
6c6247a690 node, rpc: fix linter issues 2018-02-12 14:12:55 +01:00
Martin Holst Swende
589b603a9b rpc: dns rebind protection (#15962)
* cmd,node,rpc: add allowedHosts to prevent dns rebinding attacks

* p2p,node: Fix bug with dumpconfig introduced in r54aeb8e4c0bb9f0e7a6c67258af67df3b266af3d

* rpc: add wildcard support for rpcallowedhosts + go fmt

* cmd/geth, cmd/utils, node, rpc: ignore direct ip(v4/6) addresses in rpc virtual hostnames check

* http, rpc, utils: make vhosts into map, address review concerns

* node: change log messages to use geth standard (not sprintf)

* rpc: fix spelling
2018-02-12 14:52:07 +02:00
Felix Lange
9123eceb0f p2p, p2p/discover: misc connectivity improvements (#16069)
* p2p: add DialRatio for configuration of inbound vs. dialed connections

* p2p: add connection flags to PeerInfo

* p2p/netutil: add SameNet, DistinctNetSet

* p2p/discover: improve revalidation and seeding

This changes node revalidation to be periodic instead of on-demand. This
should prevent issues where dead nodes get stuck in closer buckets
because no other node will ever come along to replace them.

Every 5 seconds (on average), the last node in a random bucket is
checked and moved to the front of the bucket if it is still responding.
If revalidation fails, the last node is replaced by an entry of the
'replacement list' containing recently-seen nodes.

Most close buckets are removed because it's very unlikely we'll ever
encounter a node that would fall into any of those buckets.

Table seeding is also improved: we now require a few minutes of table
membership before considering a node as a potential seed node. This
should make it less likely to store short-lived nodes as potential
seeds.

* p2p/discover: fix nits in UDP transport

We would skip sending neighbors replies if there were fewer than
maxNeighbors results and CheckRelayIP returned an error for the last
one. While here, also resolve a TODO about pong reply tokens.
2018-02-12 14:36:09 +02:00
Péter Szilágyi
1d39912a9b Merge pull request #16068 from karalabe/import-known-rolledback-blocks
core: force import known but rolled back blocks
2018-02-12 12:53:45 +02:00
Péter Szilágyi
69c1f2c2a7 core: force import known but rolled back blocks 2018-02-12 11:54:14 +02:00
ferhat elmas
52ad848b2e internal/build: fix usage of strings.TrimLeft (#16066) 2018-02-12 11:18:35 +02:00
Péter Szilágyi
4065695350 Merge pull request #16063 from karalabe/deprecate-ubuntu-zesty
build: deprecate zesty, add bionic PPA
2018-02-11 19:54:57 +02:00
Péter Szilágyi
969474f60a build: deprecate zesty, add bionic PPA 2018-02-11 19:07:11 +02:00
Péter Szilágyi
62ffec1be3 Merge pull request #16062 from karalabe/nodisable-fastsync
eth: only disable fast sync after success
2018-02-11 19:01:32 +02:00
Péter Szilágyi
57fd2da0fe eth: only disable fast sync after success 2018-02-11 17:25:00 +02:00
Péter Szilágyi
aa9432b816 Merge pull request #16061 from karalabe/downloader-nostate-ancestor-lookup
eth/downloader: don't require state for ancestor lookups
2018-02-11 16:39:09 +02:00
Péter Szilágyi
7a0019c63b les, light: fix CHT trie retrievals (#16039)
* les, light: fix CHT trie retrievals

* les, light: minor polishes, test remote CHT retrievals

* les, light: deterministic nodeset rlp, bloombits test skeleton

* les: add an event emission to the les bloombits test

* les: drop dead tester code
2018-02-11 14:57:46 +02:00
Péter Szilágyi
96dad6b6f6 eth/downloader: don't require state for ancestor lookups 2018-02-11 14:43:56 +02:00
Guillaume Ballet
5cf75a30c1 whisper: get wnode to work with v6 (#16051)
The bulk of the issue was to adapt to the new requirement
that a v6 filter has to either contain a symmertric key or
an asymmetric one.

This commits revert one of the fixes that I made to remove
a linter warning: unexporting NewSentMessage. This is not
really a problem as I have a cleanup in the pipe that will
solve this issue.
2018-02-10 15:35:32 +02:00
Felföldi Zsolt
2f849ade82 les: fix server panic when discovery disabled (#16055) 2018-02-10 14:33:52 +02:00
Chase Wright
a00f4a12a9 README: remove --fast and --cache flags and clarify default sync mode (#16043)
* Remove --fast flag and clarify default

`--fast` is no longer a flag it's `--syncmode "fast"` and that is the default

* Remove --cache flag

--cache=512 is no longer required as of 1.8 as the default has been increased

* README: Minor cache amount fix, mention Rinkeby
2018-02-10 12:50:14 +02:00
gluk256
42628ba7ed whisper: bloom filter refactoring (#16046)
* whisper: bloom filter refactoring

* whisper: fixed full node
2018-02-09 17:25:23 +02:00
gluk256
ccf8083537 whisper: Seal function fixed (#16048) 2018-02-09 17:25:03 +02:00
Felföldi Zsolt
c4712bf96b p2p/discv5: fix multiple discovery issues (#16036)
* p2p/discv5: add query delay, fix node address update logic, retry refresh if empty

* p2p/discv5: remove unnecessary ping before topic query

* p2p/discv5: do not filter local address from topicNodes

* p2p/discv5: remove canQuery()

* p2p/discv5: gofmt
2018-02-08 19:06:31 +02:00
cdetrio
2b4c7e9b37 params: update ropsten bootnodes (#16029)
* params: update ropsten bootnodes

* params: fix linter
2018-02-08 15:30:26 +02:00
Péter Szilágyi
03daf601c1 Merge pull request #16037 from karalabe/light-startup-polishes
eth, light: minor light client startup cleanups
2018-02-08 15:11:05 +02:00
Péter Szilágyi
eb07dbb079 eth, light: minor light client startup cleanups 2018-02-08 07:49:23 +02:00
gluk256
1a4e68721a Merge pull request #16022 from gballet/whisper-v6-investigate-macos-timeout
whisper: improve a log message to analyze a travis issue
2018-02-06 22:20:23 +02:00
Guillaume Ballet
806430a252 whisper: improve a log message to analyze a travis issue 2018-02-05 18:18:13 +01:00
Péter Szilágyi
55599ee95d core, trie: intermediate mempool between trie and database (#15857)
This commit reduces database I/O by not writing every state trie to disk.
2018-02-05 17:40:32 +01:00
Péter Szilágyi
59336283c0 Merge pull request #16020 from evertonfraga/patch-1
github: Replaces Wiki link [ci skip]
2018-02-05 17:58:47 +02:00
Ev
203440e813 github: Replaces Wiki link 2018-02-05 16:52:27 +01:00
Felföldi Zsolt
c3f238dd53 les: limit LES peer count and improve peer configuration logic (#16010)
* les: limit number of LES connections

* eth, cmd/utils: light vs max peer configuration logic
2018-02-05 15:41:53 +02:00
Martin Holst Swende
bc0666fb27 eth/downloader: fix #15858 by checking if downloader dropPeer function is set (#15992) 2018-02-05 15:38:06 +02:00
Péter Szilágyi
0662384d29 Merge pull request #16009 from holiman/db_handles
cmd/utils: fix #16006 by not lowering OS ulimit
2018-02-04 01:05:32 +02:00
Péter Szilágyi
b4e05adcc7 Merge pull request #16011 from karalabe/fix-bootnode-gofmt
params: fix bootnodes gofmt
2018-02-02 15:58:10 +02:00
Péter Szilágyi
efc9209158 params: fix bootnodes gofmt 2018-02-02 15:57:13 +02:00
Martin Holst Swende
ec28a58cc1 utils: fix #16006 by not lowering OS ulimit 2018-02-02 09:33:33 +01:00
Afri Schoedon
4dedde7beb params: Add Ropsten bootnodes (#16008) 2018-02-01 16:10:57 +02:00
Péter Szilágyi
fdb34b7a7c Merge pull request #15996 from karalabe/drop-redundant-methods
core, eth, les, light: get rid of redundant methods
2018-01-31 12:46:38 +02:00
Péter Szilágyi
07d4a02257 Merge pull request #15997 from karalabe/batch-reset-size
ethdb: reset the batch size too on reset
2018-01-30 19:18:42 +02:00
Péter Szilágyi
3e89b80ccb ethdb: reset the batch size too on reset 2018-01-30 19:12:28 +02:00
Martin Holst Swende
017b9f7eac core, ethdb: reuse database batches (#15989)
* leveldb: Update leveldb to 211f780 (poolfix)

* core, ethdb: reuse database batches
2018-01-30 19:03:31 +02:00
Péter Szilágyi
566d5c0777 core, eth, les, light: get rid of redundant methods 2018-01-30 18:42:00 +02:00
Felföldi Zsolt
6198c53e28 p2p/discv5: fix removeTicketRef cached ticket removal (#15995) 2018-01-30 18:01:22 +02:00
gluk256
a9e4a90d57 whisper: change the whisper message format so as to add the payload size (#15870)
* whisper: message format changed

* whisper: tests fixed

* whisper: style fixes

* whisper: fixed names, fixed failing tests

* whisper: fix merge issue in #15870

Occured while using the github online merge tool. Lesson learned.

* whisper: fix a gofmt error for #15870
2018-01-30 10:55:08 +02:00
Martin Holst Swende
59a852e418 vendor: update leveldb to 211f780 (poolfix) (#15988) 2018-01-29 16:17:59 +02:00
Guillaume Ballet
dd7a715d73 internal: fix a typo that caused a lint error on travis (#15987) 2018-01-29 15:35:05 +02:00
Martin Holst Swende
722bac84fa ethapi: add personal.signTransaction (#15971)
* ethapi: add personal.signTransaction

* ethapi: refactor to minimize duplicate code

* ethapi: make nonce,gas,gasPrice obligatory in signTransaction
2018-01-26 19:32:43 +02:00
Felföldi Zsolt
23bca0f374 les: fix TxStatusMsg RLP coding (#15974) 2018-01-26 19:30:45 +02:00
Guillaume Ballet
367c329b88 whisper: remove linter warnings (#15972)
* whisper: fixes warnings from the code linter

* whisper: more non-API-breaking changes

The remaining lint errors are because of auto-generated
files and one is because an exported function has a non-
exported return type. Changing this would break the API,
and will be part of another commit for easier reversal.

* whisper: un-export NewSentMessage to please the linter

This is an API change, which is why it's in its own commit.
This change was initiated after the linter complained that
the returned type wasn't exported. I chose to un-export
the function instead of exporting the type, because that
type is an implementation detail that I would like to
change in the near future to make the code more
readable and with an increased coverage.

* whisper: update gencodec output after upgrading it to new lint standards
2018-01-26 13:45:10 +02:00
b00ris
2ef3815af4 whisper: fix empty topic (#15811)
* whisper: fix empty topic

* whisper: add check to matchSingleTopic

* whisper: add tests

* whisper: fix gosimple

* whisper: added lastTopicByte const
2018-01-26 13:41:53 +02:00
Miguel Mota
4dd0727c39 accounts: fix comment typo (#15977) 2018-01-26 13:33:27 +02:00
waymobetta
8f6990dc7d accounts/abi/bind/backends: fix comment typo (#15914) 2018-01-25 12:26:14 +02:00
Felföldi Zsolt
c335821479 cmd, params: update discovery v5 bootnodes (#15954) 2018-01-25 12:25:00 +02:00
Steven Roose
952482d5e4 rpc: Support specifying HTTP client in RPC dialing (#15836)
* rpc: Support specifying HTTP client in RPC dialing

Adds a minimal interface that captures http.Client and adds a new method
rpc.DialHTTPClient that takes a client using that interface. The existing
rpc.DialHTTP method is then alternatively implemented by using the new
rpc.DialHTTPClient method provided with a standard *http.Client.

* rpc: fix minor doc typos
2018-01-24 10:59:15 +02:00
Péter Szilágyi
5c83a4e5dd Merge pull request #15832 from karalabe/abigen-events
accounts/abi/bind: support event filtering in abigen
2018-01-24 10:55:24 +02:00
Péter Szilágyi
1bf508b449 accounts/abi/bind: support event filtering in abigen 2018-01-24 10:54:13 +02:00
Kurkó Mihály
05ade19302 dashboard: CPU, memory, diskIO and traffic on the footer (#15950)
* dashboard: footer, deep state update

* dashboard: resolve asset path

* dashboard: prevent state update on every reconnection

* dashboard: fix linter issue

* dashboard, cmd: minor UI fix, include commit hash

* dashboard: gitCommit renamed to commit

* dashboard: move the geth version to the right, make commit optional

* dashboard: memory, traffic and CPU on footer

* dashboard: fix merge

* dashboard: CPU, diskIO on footer

* dashboard: rename variables, use group declaration

* dashboard: docs
2018-01-23 22:51:04 +02:00
Felföldi Zsolt
ec96216d16 Chain indexer fix + new CHT (#15934)
* core, light: fix chain indexer bug

* light: add new CHT
2018-01-23 13:10:49 +02:00
Felföldi Zsolt
397c6cde1e p2p/discv5: fix topic register panic at shutdown (#15946) 2018-01-23 12:53:09 +02:00
Péter Szilágyi
302c17c36a Merge pull request #15948 from holiman/addr_v5_bootnode
p2p/discv5: logs info about discv5 node info at bind time
2018-01-23 12:27:03 +02:00
Felix Lange
924065e19d consensus/ethash: improve cache/dataset handling (#15864)
* consensus/ethash: add maxEpoch constant

* consensus/ethash: improve cache/dataset handling

There are two fixes in this commit:

Unmap the memory through a finalizer like the libethash wrapper did. The
release logic was incorrect and freed the memory while it was being
used, leading to crashes like in #14495 or #14943.

Track caches and datasets using simplelru instead of reinventing LRU
logic. This should make it easier to see whether it's correct.

* consensus/ethash: restore 'future item' logic in lru

* consensus/ethash: use mmap even in test mode

This makes it possible to shorten the time taken for TestCacheFileEvict.

* consensus/ethash: shuffle func calc*Size comments around

* consensus/ethash: ensure future cache/dataset is in the lru cache

* consensus/ethash: add issue link to the new test

* consensus/ethash: fix vet

* consensus/ethash: fix test

* consensus: tiny issue + nitpick fixes
2018-01-23 12:05:30 +02:00
Martin Holst Swende
48641d7308 p2p/discv5: logs info about discv5 node info at bind time 2018-01-23 08:50:11 +01:00
Péter Szilágyi
5d4267911a Merge pull request #15941 from karalabe/fix-header-reorg-order
core: sorted reorg insertion order for proper head header updating
2018-01-22 15:38:30 +02:00
Felföldi Zsolt
92580d69d3 p2p, p2p/discover, p2p/discv5: implement UDP port sharing (#15200)
This commit affects p2p/discv5 "topic discovery" by running it on
the same UDP port where the old discovery works. This is realized
by giving an "unhandled" packet channel to the old v4 discovery
packet handler where all invalid packets are sent. These packets
are then processed by v5. v5 packets are always invalid when
interpreted by v4 and vice versa. This is ensured by adding one
to the first byte of the packet hash in v5 packets.

DiscoveryV5Bootnodes is also changed to point to new bootnodes
that are implementing the changed packet format with modified
hash. Existing and new v5 bootnodes are both running on different
ports ATM.
2018-01-22 13:38:34 +01:00
Péter Szilágyi
84be009154 core: sorted reorg insertion order for proper head header updating 2018-01-22 14:11:07 +02:00
Péter Szilágyi
02aeb3d766 Merge pull request #15902 from shapeshed/patch-2
core/vm: Fix comment typo
2018-01-16 18:23:41 +02:00
George Ornbo
370dca4491 core/vm: Fix comment typo 2018-01-16 15:47:33 +00:00
Felix Lange
f08cd94fb7 cmd/ethkey: fix formatting, review nits (#15807)
This commit:

- Adds a --msgfile option to read the message to sign from a file
  instead of command line argument.
- Adds a unit test for signing subcommands.
- Removes some weird whitespace in the code.
2018-01-16 15:42:41 +01:00
Péter Szilágyi
216e584899 Revert "trie: make fullnode children hash calculation concurrently (#15131)" (#15889)
This reverts commit 0f7fbb85d6.
2018-01-15 15:32:14 +02:00
Jim McDonald
18a7d31338 miner: avoid unnecessary work (#15883) 2018-01-15 12:57:06 +02:00
Kurkó Mihály
938cf4528a dashboard: deep state update, version in footer (#15837)
* dashboard: footer, deep state update

* dashboard: resolve asset path

* dashboard: remove bundle.js

* dashboard: prevent state update on every reconnection

* dashboard: fix linter issue

* dashboard, cmd: minor UI fix, include commit hash

* remove geth binary

* dashboard: gitCommit renamed to commit

* dashboard: move the geth version to the right, make commit optional

* dashboard: commit limited to 7 characters

* dashboard: limit commit length on client side

* dashboard: run go generate
2018-01-15 11:20:00 +02:00
Péter Szilágyi
81ad8f665d Merge pull request #15869 from Magicking/ethstats-reporting-fix
ethstats: Fix ethstats reporting while syncing
2018-01-15 10:36:43 +02:00
Magicking
90e5744d6f ethstats: Fix ethstats reporting while syncing 2018-01-12 18:30:38 +01:00
Péter Szilágyi
3f40b22dac Merge pull request #15863 from karalabe/light-miner-error
cmd/geth: user friendly light miner error
2018-01-12 17:30:19 +02:00
gluk256
fd869dc839 whisper/whisperv6: implement pow/bloom exchange protocol (#15802)
This is the main feature of v6.
2018-01-12 12:11:22 +01:00
Péter Szilágyi
bd0dbfa2a8 cmd/geth: user friendly light miner error 2018-01-12 11:59:18 +02:00
Ricardo Domingos
56152b31ac common/fdlimit: Move fdlimit files to separate package (#15850)
* common/fdlimit: Move fdlimit files to separate package

When go-ethereum is used as a library the calling program need to set
the FD limit.

This commit extract fdlimit files to a separate package so it can be
used outside of go-ethereum.

* common/fdlimit: Remove FdLimit from functions signature

* common/fdlimit: Rename fdlimit functions
2018-01-11 22:55:21 +02:00
Jean-André Santoni
023769d9d4 travis.yml: remove alias for 'cd' to avoid hang on macOS (#15849)
This works around travis-ci/travis-ci#8703.
2018-01-11 16:02:01 +01:00
Nick Johnson
b06e20bc7c eth/gasprice: set default percentile to 60%, count blocks instead of transactions (#15828)
The first should address a long term issue where we recommend a gas
price that is greater than that required for 50% of transactions in
recent blocks, which can lead to gas price inflation as people take
this figure and add a margin to it, resulting in a positive feedback
loop.
2018-01-10 13:57:36 +01:00
gary rong
3a5a5599dd consensus/ethash: fix byzantium difficulty comment typo (#15842) 2018-01-10 10:58:03 +02:00
Felföldi Zsolt
83d1657444 les: fix les/1 CHT compatibility issue (#15692) 2018-01-09 11:41:59 +01:00
Felix Lange
9d06026c19 all: regenerate codecs with gencodec commit 90983d99de (#15830)
Fixes #15777 because null is now allowed for hexutil.Bytes.
2018-01-08 15:13:22 +02:00
Felix Lange
5c2f1e0014 all: update generated code (#15808)
* core/types, core/vm, eth, tests: regenerate gencodec files

* Makefile: update devtools target

Install protoc-gen-go and print reminders about npm, solc and protoc.
Also switch to github.com/kevinburke/go-bindata because it's more
maintained.

* contracts/ens: update contracts and regenerate with solidity v0.4.19

The newer upstream version of the FIFSRegistrar contract doesn't set the
resolver anymore. The resolver is now deployed separately.

* contracts/release: regenerate with solidity v0.4.19

* contracts/chequebook: fix fallback and regenerate with solidity v0.4.19

The contract didn't have a fallback function, payments would be rejected
when compiled with newer solidity. References to 'mortal' and 'owned'
use the local file system so we can compile without network access.

* p2p/discv5: regenerate with recent stringer

* cmd/faucet: regenerate

* dashboard: regenerate

* eth/tracers: regenerate

* internal/jsre/deps: regenerate

* dashboard: avoid sed -i because it's not portable

* accounts/usbwallet/internal/trezor: fix go generate warnings
2018-01-08 14:15:57 +02:00
Russ Cox
a139041d40 dashboard: use balanced trees to include binary data (#15813)
* go-ethereum/dashboard: update assets.go

Use current rsc/go-bindata instead of jteeuwen/go-bindata, to get
balanced tree in very long string concatenations.
This works around problems in current Go distributions.

For golang/go#23222.

* dashboard: run last two go:generate steps for linter
2018-01-05 13:02:15 +02:00
Felix Lange
1c2378b926 tests: update to upstream commit 2bb0c3da3b (#15806)
Also raise traceLimit once again and print the VM
error and output on failure.
2018-01-04 13:18:30 +01:00
Péter Szilágyi
ae71da1b03 eth: fix tracer panic when running without configs + reexec (#15799) 2018-01-04 12:58:11 +01:00
Evangelos Pappas
7a59a9380e cmd/utils: handle git commit a bit safer for user specified strings (#15790)
* cmd/utils/flags.go: Applying a String len guard for the gitCommit param of the NewApp()

* cmd/utils: remove redundant clause in if condition
2018-01-03 18:18:53 +02:00
Péter Szilágyi
762f3a48a0 Merge pull request #15466 from karalabe/uint64-gas-limit
all: switch gas limits from big.Int to uint64
2018-01-03 16:53:06 +02:00
Felix Lange
b47285f1cf vendor: update github.com/rjeczalik/notify (#15801) 2018-01-03 16:50:33 +02:00
Péter Szilágyi
6f69cdd109 all: switch gas limits from big.Int to uint64 2018-01-03 14:45:35 +02:00
Furkan KAMACI
b8caba9709 various: remove redundant parentheses (#15793) 2018-01-03 14:14:47 +02:00
Felix Lange
9d48dbf5c2 eth: revert tracer preimage recording (#15800)
This reverts commits 85a1eda59e (#15792) and c495bca4ad (#15787)
because they introduce database writes during tracing.
2018-01-03 11:58:25 +01:00
Felix Lange
85a1eda59e eth: uncaptialize tracer preimage error message (#15792)
* eth: uncaptialize tracer preimage error message

* eth: improve very important error message
2018-01-03 10:53:09 +02:00
Richard Hart
72e70bcec2 console: remove comment about 'invalid' input (#15735)
All inputs are saved into history, including 'invalid' inputs.
2018-01-02 13:00:13 +01:00
ferhat elmas
5866626b08 core, p2p/discv5: use time.NewTicker instead of time.Tick (#15747) 2018-01-02 12:50:46 +01:00
cdetrio
c495bca4ad eth: enable preimage recording when tracing (#15787) 2018-01-02 12:49:17 +01:00
Péter Szilágyi
413cc5b0c8 cmd/geth: remove trailing newline in license command (#15782) 2018-01-02 12:48:19 +01:00
Péter Szilágyi
d2533d0efb vendor: update github.com/rjeczalik/notify for go1.10 (#15785) 2018-01-02 11:41:47 +01:00
Péter Szilágyi
3e0113fff4 build: set CC through a command-line flag (#15784)
This avoids setting CC for the go run invocation, which fails on go1.10.
2018-01-02 11:40:56 +01:00
Péter Szilágyi
9c42a41ed8 eth/downloader: avoid hidden reference to finished statesync request (#15545) 2018-01-02 11:38:26 +01:00
Péter Szilágyi
2fe07c203e build: fix version comparison for go1.10 and beyond (#15781) 2018-01-02 11:28:07 +01:00
Deepak Sharma
6882943e39 containers/docker: change docker images to go1.9 (#15789) 2018-01-02 11:27:33 +01:00
Péter Szilágyi
b98aa3b4f1 whisper/whisper2: fix Go 1.10 vet issues on type mismatches (#15783) 2018-01-02 11:13:24 +01:00
Alex Wu
6cd6b921ac crypto: ensure private keys are < N (#15745)
Fixes #15744
2018-01-02 10:55:03 +01:00
sunxiaojun2014
908faf8cd7 consensus/ethash: fix overdue link (#15786) 2017-12-31 13:38:39 +02:00
Péter Szilágyi
b9731767af accounts/abi: handle named ouputs prefixed with underscores (#15766)
* accounts/abi: handle named ouputs prefixed with underscores

* accounts/abi: handle collinding outputs for struct unpacks

* accounts: handle purely underscore output names
2017-12-29 23:20:02 +02:00
Anton Evangelatov
36a10875c8 p2p/enr: initial implementation (#15585)
Initial implementation of ENR according to ethereum/EIPs#778
2017-12-29 21:18:51 +01:00
Péter Szilágyi
f7ca03ae87 eth, les, light: expose chain config in les node info too (#15732) 2017-12-28 14:18:34 +01:00
Péter Szilágyi
c15d76a40f p2p/discv5: fix reg lookup, polish code, use logger (#15737) 2017-12-28 14:17:03 +01:00
Sorin Neacsu
5369a5c54d rpc: allow OPTIONS requests without Content-Type (#15759)
Fixes #15740
2017-12-28 14:15:33 +01:00
Martin Holst Swende
9d187f0238 Merge pull request #15731 from holiman/revamp_abi
accounts/abi refactor
2017-12-22 20:59:41 +01:00
Martin Holst Swende
c095c87e11 accounts/abi: merging of https://github.com/ethereum/go-ethereum/pull/15452 + lookup by id 2017-12-22 19:26:57 +01:00
Martin Holst Swende
73d4a57d47 acounts/abi: refactor abi, generalize abi pack/unpack to Arguments 2017-12-22 19:26:52 +01:00
gary rong
5f8888e116 accounts, consensus, core, eth: make chain maker consensus agnostic (#15497)
* accounts, consensus, core, eth: make chain maker consensus agnostic

* consensus, core: move CalcDifficulty to Engine interface

* consensus: add docs for calcDifficulty function

* consensus, core: minor comment fixups
2017-12-22 14:37:50 +02:00
Kurkó Mihály
9dbb8ef4aa dashboard: integrate Flow, sketch message API (#15713)
* dashboard: minor design change

* dashboard: Flow integration, message API

* dashboard: minor polishes, exclude misspell linter
2017-12-21 17:54:38 +02:00
Péter Szilágyi
52f4d6dd78 Merge pull request #15730 from karalabe/puppeth-expose-faucet-http
cmd/puppeth: fix faucet 502 error due to non-exposed HTTP port
2017-12-21 17:36:27 +02:00
Péter Szilágyi
e4aa882ec5 cmd/puppeth: fix faucet 502 error due to non-exposed HTTP port 2017-12-21 17:25:42 +02:00
gluk256
38b1e8ee20 whisper/whisperv6: PoW requirement (#15701)
New Whisper-level message introduced (PoW requirement),
corresponding logic added, plus some tests.
2017-12-21 15:17:27 +01:00
Robert Zaremba
81d4cafb32 accounts/abi: add unpack into array test 2017-12-21 15:14:50 +01:00
Robert Zaremba
1afca33eac accounts/abi: add Method Unpack tests
+ Reworked Method Unpack tests into more readable components
+ Added Method Unpack into slice test
2017-12-21 15:14:50 +01:00
Robert Zaremba
95461e8b22 accounts/abi: satisfy most of the linter warnings
+ adding missing comments
+ small cleanups which won't significantly change
  function body.
+ unify Method receiver name
2017-12-21 15:14:50 +01:00
Robert Zaremba
0ed8b838a9 accounts/abi: fix event unpack into slice
+ The event slice unpacker doesn't correctly extract element from the
slice. The indexed arguments are not ignored as they should be
(the data offset should not include the indexed arguments).

+ The `Elem()` call in the slice unpack doesn't work.
The Slice related tests fails because of that.

+ the check in the loop are suboptimal and have been extracted
out of the loop.

+ extracted common code from event and method tupleUnpack
2017-12-21 15:14:50 +01:00
Robert Zaremba
9becba5540 accounts/abi: fix event tupleUnpack
Event.tupleUnpack doesn't handle correctly Indexed arguments,
hence it can't unpack an event with indexed arguments.
2017-12-21 15:14:50 +01:00
Robert Zaremba
3511904aad accounts/abi: adding event unpacker tests 2017-12-21 15:14:50 +01:00
Martin Holst Swende
b0d41e386e Merge pull request #15285 from yondonfu/abi-offset-fixed-arrays
accounts/abi: include fixed array size in offset for dynamic type
2017-12-21 14:42:03 +01:00
Péter Szilágyi
91c3362315 Merge pull request #15729 from karalabe/faucet-fix-twitter
cmd/faucet: fix removal of Twitter zlib compression
2017-12-21 15:32:10 +02:00
lash
14852810b4 cmd/utils: add check on fd hard limit, skip test if below target (#15684)
* cmd/utils: Add check on hard limit, skip test if below target

* cmd/utils: Cross platform compatible fd limit test

* cmd/utils: Remove syscall.Rlimit in test

* cmd/utils: comment fd utility method
2017-12-21 15:30:44 +02:00
Janoš Guljaš
542d51895f swarm/api: url scheme bzz-hash to get hashes of swarm content (#15238) (#15715)
* swarm/api: url scheme bzz-hash to get hashes of swarm content (#15238)

Update URI to support bzz-hash scheme and handle such HTTP requests by
responding with hash of the content as a text/plain response.

* swarm/api: return hash of the content for bzz-hash:// requests

* swarm/api: revert "return hash of the content for bzz-hash:// requests"

Return hashes of the content that would be returned by bzz-raw
request.

* swarm/api/http: handle error in TestBzzGetPath

* swarm/api: remove extra blank line in comment
2017-12-21 14:47:10 +02:00
Péter Szilágyi
68651a2329 cmd/faucet: fix removal of Twitter zlib compression 2017-12-21 14:14:24 +02:00
Péter Szilágyi
5258785c81 cmd, core, eth/tracers: support fancier js tracing (#15516)
* cmd, core, eth/tracers: support fancier js tracing

* eth, internal/web3ext: rework trace API, concurrency, chain tracing

* eth/tracers: add three more JavaScript tracers

* eth/tracers, vendor: swap ottovm to duktape for tracing

* core, eth, internal: finalize call tracer and needed extras

* eth, tests: prestate tracer, call test suite, rewinding

* vendor: fix windows builds for tracer js engine

* vendor: temporary duktape fix

* eth/tracers: fix up 4byte and evmdis tracer

* vendor: pull in latest duktape with my upstream fixes

* eth: fix some review comments

* eth: rename rewind to reexec to make it more obvious

* core/vm: terminate tracing using defers
2017-12-21 13:56:11 +02:00
Péter Szilágyi
1a5425779b Merge pull request #15727 from karalabe/rinkeby-akasha-bootnode
params: add Rinkeby bootnode from Akasha
2017-12-21 13:54:46 +02:00
Péter Szilágyi
a28390542c params: add Rinkeby bootnode from Akasha 2017-12-21 13:19:42 +02:00
Steven Roose
eeb53bc143 cmd/ethkey: new command line tool for keys (#15438)
ethkey is a new tool that serves as a command line interface to
the basic key management functionalities of geth. It currently
supports:
 
 - generating keyfiles
 - inspecting keyfiles (print public and private key)
 - signing messages
 - verifying signed messages
2017-12-21 11:36:05 +01:00
Bob Glickstein
e21aa0fda3 accounts/abi: remove check for len%32==0 when unpacking events (#15670)
This change inlines the logic of bytesAreProper at its sole
callsite, ABI.Unpack, and applies the multiple-of-32 test only in
the case of unpacking methods. Event data is not required to be a
multiple of 32 bytes long.
2017-12-21 10:59:14 +01:00
gluk256
9f1007e554 whisper/whisperv6: message bundling (#15666)
Changed the communication protocol for ordinary message,
according to EIP 627. Messages will be send in bundles, i.e.
array of messages will be sent instead of single message.
2017-12-21 10:31:44 +01:00
Péter Szilágyi
4b939c23e4 appveyor: bump Go to 1.9.2 (#15726) 2017-12-21 11:30:44 +02:00
Péter Szilágyi
7138de7b55 core: silence txpool reorg warning (annoying on import) (#15725) 2017-12-21 10:20:10 +02:00
Kurkó Mihály
b4cf57a581 core: fix typos (#15720) 2017-12-20 19:08:51 +02:00
Dmitry Shulyak
da58afcea0 accounts/abi: update array length after parsing array (#15618)
Fixes #15617
2017-12-20 15:09:23 +01:00
Felix Lange
ce823c9f84 crypto: ensure that VerifySignature rejects malleable signatures (#15708)
* crypto: ensure that VerifySignature rejects malleable signatures

It already rejected them when using libsecp256k1, make sure the nocgo
version does the same thing.

* crypto: simplify check

* crypto: fix build
2017-12-20 14:30:00 +02:00
Péter Szilágyi
5e1581c2c3 core: fix panic when stat-ing a tx from a queue-only account (#15714) 2017-12-20 12:34:43 +02:00
Armin Braun
50df2b78be console: create datadir at startup (#15700)
Fixes #15672 by creating the datadir when creating the
console. This prevents failing to save the history if no datadir
exists.
2017-12-19 13:21:03 +01:00
Janoš Guljaš
c786f75389 swarm: bzz-list, bzz-raw and bzz-immutable schemes (#15667)
* swarm/api: url scheme bzz-list for getting list of files from manifest

Replace query parameter list=true for listing all files contained
in a swarm manifest with a new URL scheme bzz-list.

* swarm: replaace bzzr and bzzi schemes with bzz-raw and bzz-immutable

New URI Shemes are added and old ones are deprecated, but not removed.
Old Schemes bzzr and bzzi are functional for backward compatibility.

* swarm/api: completely remove bzzr and bzzi schemes

Remove old schemes in favour of bzz-raw and
bzz-immutable.

* swarm/api: revert "completely remove bzzr and bzzi schemes"

Keep bzzr and bzzi schemes for backward compatibility. At least
until 0.3 swarm release.
2017-12-19 10:49:30 +02:00
Péter Szilágyi
7f9d94fe9a Merge pull request #15693 from zsfelfoldi/wait_nopeers
contracts/release: do not print error log if les backend has no peers
2017-12-19 10:45:02 +02:00
Yondon Fu
cf7aba36c8 accounts/abi: update array type check in method.go. Add more packing tests 2017-12-18 21:16:25 -05:00
Yondon Fu
3857cdc267 Merge branch 'master' into abi-offset-fixed-arrays 2017-12-18 17:17:41 -05:00
Zsolt Felfoldi
48648bc2f8 contracts/release: do not print error log if les backend has no peers 2017-12-18 16:26:17 +01:00
Péter Szilágyi
fe070ab5c3 Merge pull request #15674 from chfast/vm-no-snapshot-param
core/vm: Remove snapshot param from Interpreter.Run()
2017-12-18 16:16:59 +02:00
Felix Lange
8c33ac10bf internal/ethapi: support "input" in transaction args (#15640)
The tx data field is called "input" in returned objects and "data" in
argument objects. Make it so "input" can be used, but bail if both
are set.
2017-12-18 12:50:21 +01:00
Péter Szilágyi
3b79bac05b Merge pull request #15698 from original-brownbear/15668
accounts/keystore: Improved error message
2017-12-18 13:43:10 +02:00
Armin
afc2039f22 accounts/keystore: Improved error message
* Fix for #15668
2017-12-18 12:28:34 +01:00
Péter Szilágyi
13db4af345 Merge pull request #15696 from ferhatelmas/p2p-goroutine-leak
p2p/discover: fix leaked goroutine in data expiration
2017-12-18 10:59:10 +02:00
Péter Szilágyi
64ee3e92ea Merge pull request #15686 from sorin/sorin-geth-attach-rinkeby
cmd/geth: add support for geth --rinkeby attach
2017-12-18 10:28:09 +02:00
ferhat elmas
afa3c72c40 p2p/discover: fix leaked goroutine in data expiration 2017-12-18 09:16:54 +01:00
Sorin Neacsu
1d7d7f57d0 cmd/geth: add support for geth --rinkeby attach 2017-12-15 13:31:10 -08:00
Paweł Bylica
fb5f25eeee core/vm: Remove snapshot param from Interpreter.Run() 2017-12-15 13:33:35 +01:00
Felix Lange
c6069a627c crypto, crypto/secp256k1: add CompressPubkey (#15626)
This adds the inverse to DecompressPubkey and improves a few minor
details in crypto/secp256k1.
2017-12-15 10:40:09 +01:00
Péter Szilágyi
1f2176dedc Merge pull request #15679 from shapeshed/patch-1
crypto: Fix comment typo
2017-12-15 01:24:19 +02:00
George Ornbo
7bb2a489b2 crypto: Fix comment typo 2017-12-14 21:55:18 +00:00
rhaps107
e9971d356b internal/ethapi: don't crash for missing receipts
Fixes #15408
Fixes #14432
2017-12-14 13:24:34 +01:00
Péter Szilágyi
5129ef22c2 Merge pull request #15629 from holiman/relax_futuretime
consensus/ethash: relax requirements when determining future-blocks
2017-12-14 11:28:42 +02:00
Felix Lange
3654aeaa4f p2p/simulations: fix gosimple nit (#15661) 2017-12-13 03:15:27 +01:00
Vitaly V
f258a21a63 rpc: use method constants instead of literal strings (#15652) 2017-12-12 19:12:32 +01:00
holisticode
fd777bb210 p2p/simulations: add mocker functionality (#15207)
This commit adds mocker functionality to p2p/simulations. A
mocker allows to starting/stopping of nodes via the HTTP API.
2017-12-12 19:10:41 +01:00
Zach
3da1bf8ca1 all: use gometalinter.v2, fix new gosimple issues (#15650) 2017-12-12 19:05:47 +01:00
yoza
bbea4b2b53 internal/ethapi: fix typo in comment (#15659) 2017-12-12 18:55:39 +01:00
holisticode
32516c768e cmd/swarm: add config file (#15548)
This commit adds a TOML configuration option to swarm. It reuses
the TOML configuration structure used in geth with swarm
customized items.

The commit:

* Adds a "dumpconfig" command to the swarm executable which
  allows printing the (default) configuration to stdout, which
  then can be redirected to a file in order to customize it.
* Adds a "--config <file>" option to the swarm executable which will
  allow to load a configuration file in TOML format from the
  specified location in order to initialize the Swarm node The
  override priorities are like follows: environment variables
  override command line arguments override config file override
  default config.
2017-12-11 22:56:06 +01:00
Felix Lange
1a32bdf92c crypto: fix error check in toECDSA (#15632)
With this change,

    key, err := crypto.HexToECDSA("000000...")
    
returns nil key and an error instead of a non-nil key with nil X
and Y inside. Issue found by @guidovranken.
2017-12-11 22:49:09 +01:00
Felix Lange
2499b1b139 rlp: fix string size check in readKind (#15625)
Issue found by @guidovranken
2017-12-11 22:47:10 +01:00
Guillaume Ballet
e7610eadfe whisper: sym encryption message padding includes salt (#15631)
Now that the AES salt has been moved to the payload, padding must
be adjusted to hide it, lest an attacker guesses that the packet
uses symmetric encryption.
2017-12-11 12:32:58 +01:00
Michael Ruminer
732f5468d3 eth: make tracing API errors more user friendly (#15589) 2017-12-09 23:47:13 +01:00
Alejandro Isaza
bbfe0b8d04 mobile: Add GetSign to BigInt (#15558) 2017-12-09 23:45:46 +01:00
Péter Szilágyi
46e5583993 cmd/utils, eth: init etherbase from within eth (#15528) 2017-12-09 23:42:23 +01:00
Guillaume Ballet
bf62acf033 whisper/whisperv6: remove Version from the envelope (#15621) 2017-12-08 16:08:56 +01:00
Sorin Neacsu
586198ccea console: add admin.clearHistory command (#15614) 2017-12-08 15:14:14 +01:00
Guillaume Ballet
d95962cd5d whisper/whisperv6: remove aesnonce (#15578)
As per EIP-627, the salt for symmetric encryption is now
part of the payload. This commit does that.
2017-12-08 11:40:59 +01:00
Martin Holst Swende
79d5e5593f consensus/ethash: relax requirements when determining future-blocks 2017-12-08 10:06:16 +01:00
Felix Lange
b5874273ce travis.yml: avoid submodules on builders without tests (#15620)
Also remove installation steps for fuse and golang.org/x/tools/cmd/cover 
because they're not required anymore.
2017-12-07 15:49:35 +01:00
Airead
8092106abc core/types: fix typo in comment (#15619) 2017-12-07 10:06:44 +01:00
Benoit Verkindt
eab2201f80 eth: return rlp-decoded values from debug_storageRangeAt (#15476)
Fixes #15196
2017-12-06 16:42:16 +01:00
Felix Lange
e85b68ef53 crypto: add DecompressPubkey, VerifySignature (#15615)
We need those operations for p2p/enr.

Also upgrade github.com/btcsuite/btcd/btcec to the latest version
and improve BenchmarkSha3. The benchmark printed extra output 
that confused tools like benchstat and ignored N.
2017-12-06 16:07:08 +01:00
Sorin Neacsu
6e613cf3de cmd/geth: add support for geth attach --testnet (#15597) 2017-12-05 11:17:38 +01:00
Steven Roose
afb8154eab common: improve IsHexAddress and add tests (#15551)
Also unexport isHex, hasHexPrefix because IsHexAddress is the only caller.

Fixes #15550
2017-12-04 19:34:15 +01:00
ferhat elmas
1d06e41f04 p2p, swarm/network/kademlia: use IsZero to check for zero time (#15603) 2017-12-04 11:07:10 +01:00
ferhat elmas
43dd8e62fc build: enable gosimple linter (#15593) 2017-12-01 13:04:06 +01:00
Matthew Di Ferrante
80c6dfc19f crypto/bn256: fix generator on G1 (#15591)
Generator in the current lib uses -2 as the y point when doing
ScalarBaseMult, this makes it so that points/signatures generated
from libs like py_ecc don't match/validate as pretty much all
other libs (including libsnark) have (1, 2) as the standard
generator.

This does not affect consensus as the generator is never used in
the VM, points are always explicitly defined and there is not
ScalarBaseMult op - it only makes it so that doing "import
github.com/ethereum/go-ethereum/crypto/bn256" doesn't generate
bad points in userland tools.
2017-12-01 13:03:39 +01:00
Rob
d927c67f9d eth/downloader: update tests for reliability (#15337)
Updated use of Parallel and added some subtests to help isolate
them. Increased timeout in RequestHeadersByNumber so it
doesn't time out and causes other tests to break.
2017-12-01 12:54:17 +01:00
Guillaume Ballet
20fe928914 whisper: rename EnvNonce to Nonce in the v6 Envelope (#15579) 2017-12-01 12:50:19 +01:00
Lewis Marshall
54aeb8e4c0 p2p/simulations: various stability fixes (#15198)
p2p/simulations: introduce dialBan

- Refactor simulations/network connection getters to support
  avoiding simultaneous dials between two peers If two peers dial
  simultaneously, the connection will be dropped to help avoid
  that, we essentially lock the connection object with a
  timestamp which serves as a ban on dialing for a period of time
  (dialBanTimeout).

- The connection getter InitConn can be wrapped and passed to the
  nodes via adapters.NodeConfig#Reachable field and then used by
  the respective services when they initiate connections. This
  massively stablise the emerging connectivity when running with
  hundreds of nodes bootstrapping a network.

p2p: add Inbound public method to p2p.Peer

p2p/simulations: Add server id to logs to support debugging
in-memory network simulations when multiple peers are logging.

p2p: SetupConn now returns error. The dialer checks the error and
only calls resolve if the actual TCP dial fails.
2017-12-01 12:49:04 +01:00
Zach
73067fd24f buld: enable goconst linter (#15566) 2017-11-30 11:22:26 +01:00
Péter Szilágyi
e37f7be97e Merge pull request #15577 from karalabe/common-hexconvert-singlebyte
common: fix hex utils to handle 1 byte address conversions
2017-11-29 11:27:24 +02:00
Péter Szilágyi
b33a5294ea common: fix hex utils to handle 1 byte address conversions 2017-11-29 02:25:32 +02:00
Felix Lange
be12392fba core/vm: track 63/64 call gas off stack (#15563)
* core/vm: track 63/64 call gas off stack

Gas calculations in gasCall* relayed the available gas for calls by
replacing it on the stack. This lead to inconsistent traces, which we
papered over by copying the pre-execution stack in trace mode.

This change relays available gas using a temporary variable, off the
stack, and allows removing the weird copy.

* core/vm: remove stackCopy

* core/vm: pop call gas into pool

* core/vm: to -> addr
2017-11-28 21:05:49 +02:00
Maximilian Meister
8f35e3086c cmd/geth: fix geth attach --datadir=... (#15517) 2017-11-28 14:00:00 +01:00
Péter Szilágyi
e323ed5a9a Merge pull request #15557 from MaximilianMeister/bootnodes-toml
cmd/utils: bootstrap nodes in config file were not respected
2017-11-28 13:34:14 +02:00
Zach
6bb61ee9ef build: improve ci.go synopsis (#15565) 2017-11-28 10:45:48 +01:00
gary rong
0f7fbb85d6 trie: make fullnode children hash calculation concurrently (#15131)
* trie: make fullnode children hash calculation concurrently

* trie: thread out only on topmost fullnode

* trie: clean up full node children hash calculation

* trie: minor code fixups
2017-11-27 13:34:17 +02:00
Maximilian Meister
62dc530773 cmd/utils: bootstrap nodes in config file were not respected
Signed-off-by: Maximilian Meister <mmeister@suse.de>
2017-11-26 12:42:51 +01:00
Paul Litvak
e4c9fd29a3 cmd/utils: disallow --lightserv in light mode (#15514)
* Disallow --lightserv in light mode

* Reformatted

* cmd/utils: reduce nesting levels a bit
2017-11-24 17:07:21 +02:00
Péter Szilágyi
de37e088f2 Merge pull request #15549 from karalabe/statedb-copy
core/state: copy trie too, not just content
2017-11-24 17:02:40 +02:00
Péter Szilágyi
f0ac925fa7 Merge pull request #15329 from holisticode/exact-match-fix
swarm/api: bug fix exact match for manifest
2017-11-24 16:23:37 +02:00
Péter Szilágyi
0981d2e566 Merge pull request #15498 from nonsense/account_cache_modtime_test_fix
accounts/keystore: change modtime for test case files to be bigger than 1sec.
2017-11-24 16:21:39 +02:00
gary rong
f14047dae5 cmd, consensus, eth: split ethash related config to it own (#15520)
* cmd, consensus, eth: split ethash related config to it own

* eth, consensus: minor polish

* eth, consenus, console: compress pow testing config field to single one

* consensus, eth: document pow mode
2017-11-24 16:10:27 +02:00
Péter Szilágyi
b0056f5bd0 Merge pull request #15552 from karalabe/javascript-tracers-nowrap
internal/ethapi: avoid recreating JavaScript tracer wrappers
2017-11-24 15:45:08 +02:00
Péter Szilágyi
5dea0f2aa4 core/state: copy trie too, not just content 2017-11-24 14:20:49 +02:00
Péter Szilágyi
989fb4472a internal/ethapi: avoid recreating JavaScript tracer wrappers 2017-11-24 13:55:12 +02:00
Ricardo Domingos
9ff9d04a69 all: fix code comment typos (#15547)
* console: fix typo in comment

* contracts/release: fix typo in comment

* core: fix typo in comment

* eth: fix typo in comment

* miner: fix typo in comment
2017-11-24 11:20:01 +02:00
Zoe Nolan
edc3e0efeb cmd/puppeth: fix typo in comment (#15539)
* cmd: fix typo in comment

* cmd/puppeth: tiny comment fixup
2017-11-24 10:58:28 +02:00
Péter Szilágyi
f9569f3cd8 Merge pull request #15390 from karalabe/puppeth-devcon3
cmd/puppeth: new version as presented at devcon3
2017-11-24 10:56:33 +02:00
Péter Szilágyi
a3a2c6b0d9 cmd/puppeth: fix typos and review suggestions 2017-11-23 14:22:59 +02:00
Péter Szilágyi
35801f938e Merge pull request #15538 from zoenolan/patch-1
build: fix typo in comment
2017-11-23 14:06:48 +02:00
Zoe Nolan
cc3ca63dbf build: fix typo in comment 2017-11-21 19:23:42 +00:00
Péter Szilágyi
049797d40a Merge pull request #15521 from rjl493456442/clean_tx_journal
les: clean up tx journal file after testing
2017-11-21 20:42:11 +02:00
rjl493456442
41ef34ae40 les: use modified default txpool config to avoid creating journal file 2017-11-21 22:13:57 +08:00
Péter Szilágyi
b169a309f9 cmd/puppeth: fix unconvert linters 2017-11-21 15:13:08 +02:00
Péter Szilágyi
7f40ae7876 cmd/puppeth: switch over to upstream alltools docker image 2017-11-21 15:09:40 +02:00
Péter Szilágyi
327dcd3622 cmd/faucet, cmd/puppeth: drop GitHub support at official request 2017-11-21 15:09:39 +02:00
Péter Szilágyi
ffc12f63ec cmd/puppeth: simplifications and pre-built docker images 2017-11-21 15:09:39 +02:00
Péter Szilágyi
80be5e5463 cmd/puppeth: store genesis locally to persist restarts 2017-11-21 15:09:38 +02:00
Péter Szilágyi
7abf968d6f cmd/puppeth: skip genesis custom extra-data 2017-11-21 15:09:37 +02:00
Péter Szilágyi
6eb38e02a8 cmd/puppeth: fix dashboard iframes, extend with new services 2017-11-21 15:09:36 +02:00
Péter Szilágyi
51a86f61be cmd/faucet: protocol relative websockets, noauth mode 2017-11-21 15:09:36 +02:00
Péter Szilágyi
b5cf603895 cmd/puppeth: add support for deploying web wallets 2017-11-21 15:09:35 +02:00
Péter Szilágyi
1e0c336d29 cmd/puppeth: etherchain light block explorer for PoW nets 2017-11-21 15:09:34 +02:00
Péter Szilágyi
9e095251b7 cmd/puppeth: mount ethash dir from the host to cache DAGs 2017-11-21 15:09:33 +02:00
Péter Szilágyi
da3b9f831e cmd/puppeth: support deploying services with forced rebuilds 2017-11-21 15:09:33 +02:00
Péter Szilágyi
7b258c9681 cmd/puppeth: concurrent server dials and health checks 2017-11-21 15:09:32 +02:00
Péter Szilágyi
8c78449a9e cmd/puppeth: reorganize stats reports to make it readable 2017-11-21 15:09:28 +02:00
Péter Szilágyi
005665867d VERSION, params: begin 1.8.0 release cycle 2017-11-21 11:59:12 +02:00
Péter Szilágyi
4bb3c89d44 params: release v1.7.3 stable 2017-11-21 11:54:19 +02:00
Martin Holst Swende
bedf6f40af cmd/geth: make geth account new faster with many keys (#15529) 2017-11-20 17:39:53 +01:00
Felix Lange
b4f2e4de8f .github: add CODEOWNERS (#15507) 2017-11-20 17:32:23 +01:00
Nick Johnson
72ed186f46 eth, internal: Implement getModifiedAccountsBy(Hash|Number) using trie diffs (#15512)
* eth, internal: Implement  using trie diffs

* eth, internal: Changes in response to review

* eth: More fixes to getModifiedAccountsBy*

* eth: minor polishes on error capitalization
2017-11-20 17:18:50 +02:00
Péter Szilágyi
7b95cca56c Merge pull request #15527 from holiman/bump_watch
accounts/keystore: Ignore initial trigger of rescan-event
2017-11-20 13:54:15 +02:00
Martin Holst Swende
e2b3a23663 accounts/keystore: Ignore initial trigger of rescan-event 2017-11-20 12:35:30 +01:00
Péter Szilágyi
0f184d3b14 Merge pull request #15526 from karalabe/accounts-new
accounts: fix two races in the account manager
2017-11-20 13:14:57 +02:00
Péter Szilágyi
6810674de9 accounts/keystore: lock file cache during scan, minor polish 2017-11-20 12:21:52 +02:00
Péter Szilágyi
8a79836044 accounts: list, then subscribe (sub requires active reader) 2017-11-20 12:20:46 +02:00
Pulyak Viktor
f5091e5711 internal/ethapi: fix js tracer to properly decode addresses (#15297)
* Add method getBalanceFromJs for work with address as bytes

* expect []byte instead of common.Address in ethapi tracer
2017-11-18 03:56:03 +02:00
Péter Szilágyi
0dbf55d478 Merge pull request #15509 from tbm/typo
Fix typo in README.md
2017-11-17 17:01:53 +02:00
Martin Michlmayr
2ab5c11261 README: fix typo 2017-11-17 14:45:09 +00:00
Péter Szilágyi
e39ca5e597 Merge pull request #15506 from tsarpaul/master
internal/ethapi: changed output in txpool.inspect
2017-11-17 15:16:49 +02:00
tsarpaul
c7b0abf86b Added output to clarify gas calculation in txpool.inspect 2017-11-17 15:07:57 +02:00
Péter Szilágyi
c8b7ea1c2e Merge pull request #15505 from karalabe/fix-rpc-pr
rpc: minor cleanups to RPC PR
2017-11-17 14:59:44 +02:00
Péter Szilágyi
3c6b9c5d72 rpc: minor cleanups to RPC PR 2017-11-17 14:25:02 +02:00
Armani Ferrante
c5b8569707 rpc: disallow PUT and DELETE on HTTP (#15501)
Fixes #15493
2017-11-17 13:07:11 +01:00
Péter Szilágyi
b0190189a3 core/vm, internal/ethapi: tracer no full storage, nicer json output (#15499)
* core/vm, internal/ethapi: tracer no full storage, nicer json output

* core/vm, internal/ethapi: omit disabled trace fields
2017-11-16 18:53:18 +02:00
Péter Szilágyi
87f5b4123c Merge pull request #15496 from karalabe/rpc-get-healthcheck
rpc: allow dumb empty requests for AWS health checks
2017-11-16 17:03:06 +02:00
Anton Evangelatov
b64525694b accounts/keystore: comments above time.Sleep 2017-11-16 15:01:02 +01:00
Anton Evangelatov
448abb61eb accounts/keystore: change modtime for test cases to be bigger than 1sec. 2017-11-16 14:17:28 +01:00
Péter Szilágyi
4013e23312 rpc: allow dumb empty requests for AWS health checks 2017-11-16 13:51:06 +02:00
jtakalai
5aa3eac22d eth/downloader: minor comments cleanup (#15495)
it's -> its

pet peeve, and I like to imagine I'm not alone.
2017-11-16 13:14:51 +02:00
Péter Szilágyi
bb57f1f1e5 Merge pull request #15489 from karalabe/bloombits-shifted-start
core/bloombits: handle non 8-bit boundary section matches
2017-11-15 14:34:53 +02:00
Péter Szilágyi
463014126f core/bloombits: handle non 8-bit boundary section matches 2017-11-15 14:10:35 +02:00
Péter Szilágyi
bce5d837b5 Merge pull request #14582 from holiman/jumpdest_improv
core/vm: improve jumpdest analysis
2017-11-15 10:52:14 +02:00
Péter Szilágyi
43c8a1914c Merge pull request #15470 from karalabe/clique-sametd-splitter
core: split same-td blocks on block height
2017-11-15 10:44:18 +02:00
Kurkó Mihály
ba62215d9e cmd, dashboard: dashboard using React, Material-UI, Recharts (#15393)
* cmd, dashboard: dashboard using React, Material-UI, Recharts

* cmd, dashboard, metrics: initial proof of concept dashboard

* dashboard: delete blobs

* dashboard: gofmt -s -w .

* dashboard: minor text and code polishes
2017-11-14 19:34:00 +02:00
gary rong
984c25ac40 accounts, internal: fail if no suitable estimated gas found (#15477)
* accounts, internal: return an error if no suitable estimated gas found

* accounts, internal: minor polishes on the gas estimator
2017-11-14 18:26:31 +02:00
Péter Szilágyi
a3128f9099 Merge pull request #15479 from guoger/patch-1
core/vm: fix typos in jump_table.go
2017-11-14 15:06:29 +02:00
Jay Guo
924098c6e5 core/vm: fix typos in jump_table.go 2017-11-14 17:57:37 +08:00
Martin Holst Swende
96ddf27a48 core/vm: copyright header on test-file 2017-11-13 22:04:53 +01:00
Péter Szilágyi
54ce3887d8 core: split same-td blocks on block height 2017-11-13 17:07:05 +02:00
Péter Szilágyi
b81a9cd829 Merge pull request #15467 from karalabe/docker-alltools
Dockerfile: support alltools image beside plain Geth
2017-11-13 14:40:37 +02:00
Péter Szilágyi
cef06358ff Dockerfile: support alltools image beside plain Geth 2017-11-13 14:30:13 +02:00
Péter Szilágyi
9b97f98334 Merge pull request #15457 from robert-zaremba/testify
vendor: add github.com/stretchr/testify test dependency
2017-11-13 14:23:38 +02:00
Péter Szilágyi
836314c055 Merge pull request #15464 from karalabe/docker-fix
dockerignore, internal/build: forward correct git folder
2017-11-12 22:56:38 +02:00
Péter Szilágyi
e401536c97 dockerignore, internal/build: forward correct git folder 2017-11-12 22:52:41 +02:00
Bo
cb8bbe7081 puppeth: handle encrypted ssh keys (closes #15442) (#15443)
* cmd/puppeth: handle encrypted ssh keys

* cmd/puppeth: fix unconvert linter error
2017-11-12 22:24:42 +02:00
Arba Sasmoyo
f47adc9ea8 .dockerignore, internal/build: Read git information directly from file (#15458)
* .dockerignore, internal/build: Read git information directly from file

This commit changes the way of retrieving git commit and branch for build
environment from running git command to reading git files directly.

This commit also adds required git files into Docker build context.

fixes: #15346

* .dockerignore: workaround for including some files in .git
2017-11-12 22:00:18 +02:00
Robert Zaremba
5d895db2fd vendor: add github.com/stretchr/testify test dependency
github.com/stretchr/testify is a useful library for doing
assertion in tests. It makes assertions in test more less verbose and
more comfortable to read and use.
2017-11-11 00:29:41 +01:00
ferhat elmas
86f6568f66 build: enable unconvert linter (#15456)
* build: enable unconvert linter

 - fixes #15453
 - update code base for failing cases

* cmd/puppeth: replace syscall.Stdin with os.Stdin.Fd() for unconvert linter
2017-11-10 19:06:45 +02:00
Benoit Verkindt
3ee86a57f3 rpc: warn on WebSocket origin mismatch (#15451)
Fixes #15373
2017-11-10 10:22:06 +01:00
Alex Beregszaszi
b31cc71ff6 contracts/chequebook: update for latest Solidity (#15425)
This changes behaviour: before if the owner/amount didn't match, it
resulted in a successful execution without doing anything; now it
results in a failed execution using the revert opcode (remainder gas
is not consumed).
2017-11-10 10:19:51 +01:00
Péter Szilágyi
febfea7af2 Merge pull request #15450 from karalabe/lint-gofmt-misspell
build: enable gofmt and misspell linters
2017-11-10 11:09:47 +02:00
Péter Szilágyi
d1eb4006e2 build: enable gofmt and misspell linters 2017-11-09 19:48:12 +02:00
Fabio Barone
03ec3fed2b swarm/api: bug fix exact match for manifest 2017-11-09 10:38:42 -05:00
Péter Szilágyi
3d88ecd61a Merge pull request #15448 from karalabe/android-build-fix
travis: bump Android NDK version and Android Go builder
2017-11-09 14:43:37 +02:00
Péter Szilágyi
09b347fec9 travis: bump Android NDK version and Android Go builder 2017-11-09 14:32:05 +02:00
Dan Melton
d7f2462e8f build: add Travis job to lint Go code #15372 (#15416)
* build: [finishes #15372] implements generalized linter and travis job

* .travis, build: minor polishes, disable deadcode
2017-11-09 12:46:03 +02:00
bas-vk
4fe30bf5ad rpc: check content-type for HTTP requests (#15220) 2017-11-09 10:54:58 +01:00
bas-vk
4732ee89cb github: add remark about general questions (#15250) 2017-11-09 10:51:14 +01:00
b00ris
7ace023981 les: fix channel assignment data race (#15441) 2017-11-09 10:43:37 +01:00
Evgeny Danilenko
0914d4e0d2 les: fix misuse of WaitGroup (#15365) 2017-11-09 10:34:35 +01:00
ferhat elmas
9619a61024 all: gofmt -w -s (#15419) 2017-11-08 11:45:52 +01:00
Eugene Valeyev
bfdc0fa362 mobile: fix FilterLogs (#15418)
All logs in the FilterLog return value would be the same object 
because the for loop captured the pointer to the iteration variable.
2017-11-06 09:46:43 -06:00
gluk256
9f7cd75682 whisper/whisperv6: initial commit (clone of v5) (#15324) 2017-11-03 21:29:49 +01:00
Jim McDonald
0131bd6ff9 core: respect price bump threshold (#15401)
* core: allow price bump at threshold

* core: test changes to allow price bump at threshold

* core: reinstate tx replacement test underneath threshold

* core: minor test failure message cleanups
2017-10-30 13:05:00 +02:00
Péter Szilágyi
dd8a62683e Merge pull request #15398 from ferhatelmas/core-swarm-typo
core, swarm: typo fixes
2017-10-30 11:08:24 +02:00
ferhat elmas
07e8c177e7 core, swarm: typo fixes 2017-10-30 01:23:23 +01:00
Felföldi Zsolt
8d434f6a6f les, core/bloombits: post-LES/2 fixes (#15391)
* les: fix topic ID

* core/bloombits: fix interface conversion
2017-10-27 17:18:53 +03:00
Péter Szilágyi
6dafec0666 Merge pull request #15389 from mcdee/rlpdump
cmd/rlpdump: allow hex input to have leading '0x'
2017-10-27 13:11:22 +03:00
Jim McDonald
3e6d7c169b cmd/rlpdump: allow hex input to have leading '0x' 2017-10-27 09:40:52 +01:00
Péter Szilágyi
0095531a58 core, eth, les: fix messy code (#15367)
* core, eth, les: fix messy code

* les: fixed tx status test and rlp encoding

* core: add a workaround for light sync
2017-10-25 12:18:44 +03:00
Felföldi Zsolt
ca376ead88 les, light: LES/2 protocol version (#14970)
This PR implements the new LES protocol version extensions:

* new and more efficient Merkle proofs reply format (when replying to
  a multiple Merkle proofs request, we just send a single set of trie
  nodes containing all necessary nodes)
* BBT (BloomBitsTrie) works similarly to the existing CHT and contains
  the bloombits search data to speed up log searches
* GetTxStatusMsg returns the inclusion position or the
  pending/queued/unknown state of a transaction referenced by hash
* an optional signature of new block data (number/hash/td) can be
  included in AnnounceMsg to provide an option for "very light
  clients" (mobile/embedded devices) to skip expensive Ethash check
  and accept multiple signatures of somewhat trusted servers (still a
  lot better than trusting a single server completely and retrieving
  everything through RPC). The new client mode is not implemented in
  this PR, just the protocol extension.
2017-10-24 15:19:09 +02:00
Péter Szilágyi
6d6a5a9337 cmd, consensus, core, miner: instatx clique for --dev (#15323)
* cmd, consensus, core, miner: instatx clique for --dev

* cmd, consensus, clique: support configurable --dev block times

* cmd, core: allow --dev to use persistent storage too
2017-10-24 13:40:42 +03:00
Anton Markelov
ea5f2da39a README: add docker RPC access docs (#15362) 2017-10-24 09:55:20 +03:00
Péter Szilágyi
479aa61f11 Merge pull request #15343 from karalabe/txpool-replacement-propagation
core: fire tx event on replace, expand tests
2017-10-20 15:21:54 +03:00
Péter Szilágyi
0af1ab0c86 core: avoid warning when loading the transaction journal 2017-10-20 14:42:20 +03:00
Péter Szilágyi
65738c1eb3 event: fix datarace between Subscribe and Send 2017-10-20 14:42:19 +03:00
Péter Szilágyi
0e7d019e0e core: fire tx event on replace, expand tests 2017-10-20 14:42:19 +03:00
Péter Szilágyi
eaa4f8a5f9 Merge pull request #15344 from karalabe/ubuntu=artful
build: start shipping Ubuntu Artful Aardvark binaries
2017-10-20 13:25:19 +03:00
Martin Holst Swende
0900aae412 cmd/evm: print stateroot in evm utility (#15341) 2017-10-20 13:22:06 +03:00
Péter Szilágyi
ba2201981a build: start shipping Ubuntu Artful Aardvark binaries 2017-10-20 12:49:32 +03:00
baizhenxuan
eea996e4e1 whisper/shhclient: fix Version return type (#15306) 2017-10-18 11:16:12 +02:00
Péter Szilágyi
2ab7fe8982 Merge pull request #15313 from karalabe/puppeth-nongithub-faucet
cmd/faucet: support twitter, google+ and facebook auth too
2017-10-17 23:20:20 +03:00
Péter Szilágyi
5d2c947060 cmd/faucet: dynamic funding progress and visual feedback 2017-10-17 14:55:21 +03:00
Sumit Sarin
e5c19b6f98 README: fix typo (#15312) 2017-10-17 13:15:42 +02:00
RJ Catalano
dec8bba9d4 accounts/abi: improve type handling, add event support (#14743) 2017-10-17 13:07:08 +02:00
Péter Szilágyi
7f7abfe4d1 cmd/faucet: proper error handling all over 2017-10-17 12:08:57 +03:00
Péter Szilágyi
0bb194c956 cmd/faucet: support twitter, google+ and facebook auth too 2017-10-16 16:57:04 +03:00
Péter Szilágyi
e9295163aa VERSION, params: start 1.7.3 release cycle 2017-10-14 16:00:46 +03:00
Péter Szilágyi
1db4ecdc0b params: bump to 1.7.2 stable 2017-10-14 15:58:53 +03:00
Péter Szilágyi
fdb3bd287e Merge pull request #15298 from karalabe/stack-then-readonly
core/vm: check opcode stack before readonly enforcement
2017-10-14 15:57:08 +03:00
Péter Szilágyi
a91e682234 core/vm: check opcode stack before readonly enforcement 2017-10-14 15:42:48 +03:00
Péter Szilágyi
41b7745529 Merge pull request #15288 from karalabe/trie-hash-benchmark
trie: make hasher benchmark meaningful post-caches
2017-10-13 15:50:05 +03:00
Péter Szilágyi
a5fcaa55ac trie: make hasher benchmark meaningful post-caches 2017-10-13 11:22:38 +03:00
Péter Szilágyi
0ed4d76c79 Merge pull request #15275 from mcdee/master
core/types: fix test for TransactionsByPriceAndNonce
2017-10-13 10:51:22 +03:00
Péter Szilágyi
4b5e797288 Merge pull request #15287 from ernestodeltoro/typo_thoretical
ethash: fix typo
2017-10-13 10:47:48 +03:00
Ernesto del Toro
2e83c82f80 ethash: fix typo 2017-10-13 01:13:52 -04:00
Yondon Fu
a5330fe0c5 accounts/abi: include fixed array size in offset for dynamic type 2017-10-12 10:58:53 -04:00
Péter Szilágyi
8d8034fe59 Merge pull request #15269 from karalabe/puppeth-dumb-ip-filtering
cmd/puppeth: use dumb textual IP filtering
2017-10-12 13:46:57 +03:00
Péter Szilágyi
fd0e7b1c67 Merge pull request #15280 from terasum/master
miner: fix typo
2017-10-12 13:46:29 +03:00
terasum
e9382c6e9f miner: fix typo 2017-10-12 10:19:23 +08:00
Jim McDonald
c599b78f62 core/types: fix test for TransactionsByPriceAndNonce 2017-10-11 11:35:44 +01:00
Péter Szilágyi
ad44475231 Merge pull request #14785 from Arachnid/downloaddb
cmd: Added support for downloading to another DB instance
2017-10-11 13:10:18 +03:00
Péter Szilágyi
35767dfd0c cmd, eth: separate out FakePeer for future reuse 2017-10-10 15:52:11 +03:00
Nick Johnson
345332906c cmd: Added support for copying data to another DB instance 2017-10-10 15:52:10 +03:00
Jia Chenhui
cefeb58598 event: fix typo (#15270) 2017-10-10 14:11:15 +02:00
Péter Szilágyi
b45cc0c9e8 cmd/puppeth: use dumb textual IP filtering 2017-10-10 12:35:09 +03:00
Péter Szilágyi
3680cd5926 params: explain EIP150Hash (#15237) 2017-10-10 10:56:33 +02:00
Péter Szilágyi
d3beff7e20 consensus/clique: add fork hash enforcement (#15236) 2017-10-10 10:54:47 +02:00
Miya Chen
40a3856af9 eth/fetcher: check the origin of filter tasks (#14975)
* eth/fetcher: check the origin of filter task

* eth/fetcher: add some details to fetcher logs
2017-10-10 11:53:05 +03:00
Darrel Herbst
89860f4197 swarm/fuse: return amount of data written if the file exists (#15261)
If the file already existed, the WriteResponse.Size was being set
as the length of the entire file, not just the amount that was
written to the existing file.

Fixes #15216
2017-10-09 12:45:30 +02:00
Martin Holst Swende
88b1db7288 accounts/keystore: scan key directory without locks held (#15171)
The accountCache contains a file cache, and remembers from
scan to scan what files were present earlier. Thus, whenever
there's a change, the scan phase only bothers processing new
and removed files.
2017-10-09 12:40:50 +02:00
Guillaume Ballet
7a045af05b whisper/whisperv5: set filter SymKeyHash on creation (#15165) 2017-10-06 16:04:21 +02:00
Guillaume Ballet
36243c7ed8 internal/web3ext: make whisper v5 methods work (#15111) 2017-10-06 15:53:29 +02:00
holisticode
1ae0411d41 swarm/api: fixed 404 handling on missing default entry (#15139) 2017-10-06 15:45:54 +02:00
Darrel Herbst
d54e3539d4 p2p/nat: delete port mapping before adding (#15222)
Fixes #1024
2017-10-06 13:39:47 +02:00
Lio李欧
5df0b240ae eth: fix typo (#15252) 2017-10-06 12:55:18 +02:00
ligi
605c2b261f mobile: fix variadic argument expansion 2017-10-05 21:08:14 +03:00
Péter Szilágyi
4bc60e3aa8 Merge pull request #15241 from karalabe/puppeth-fork-management
cmd/puppeth: support managing fork block in the chain config
2017-10-05 19:40:25 +03:00
Péter Szilágyi
eb9abbd3f2 Merge pull request #15248 from karalabe/update-liner
vendor: update liner to fix docker and mips bugs
2017-10-05 16:45:13 +03:00
Péter Szilágyi
41d361565b vendor: update liner to fix docker and mips bugs 2017-10-05 15:57:33 +03:00
Péter Szilágyi
edba5e9854 cmd/puppeth: support managing fork block in the chain config 2017-10-04 12:15:58 +03:00
Felix Lange
c0a1f1c907 params, VERSION: v1.7.2 unstable 2017-10-03 19:19:37 +02:00
Felix Lange
0510164145 params: v1.7.1 stable 2017-10-03 19:18:39 +02:00
Péter Szilágyi
629b5837e9 core: revert invalid block dedup code (#15235) 2017-10-03 18:59:53 +02:00
Péter Szilágyi
c2d93ded35 Merge pull request #15232 from karalabe/macos-usbhw-fixes
accounts/usbwallet: handle bad interface number on macOS
2017-10-03 13:14:18 +03:00
Péter Szilágyi
8d126a4981 accounts/usbwallet: handle bad interface number on macOS 2017-10-03 12:45:45 +03:00
Péter Szilágyi
f4c49bc0f0 Merge pull request #15030 from rjl493456442/expose_vm_failed
internal, accounts, eth: utilize vm failed flag to help gas estimation
2017-10-02 16:23:21 +03:00
Péter Szilágyi
d347656280 Merge pull request #15224 from karalabe/byzantium-block-numbers
cmd/puppeth, params: enable Byzantium on all networks
2017-10-02 15:40:54 +03:00
rjl493456442
94903d572b internal, accounts, eth: utilize vm failed flag to help gas estimation 2017-10-02 15:26:40 +03:00
Péter Szilágyi
f86c4177d5 Merge pull request #15042 from rjl493456442/receipt_rpc
internal/ethapi: add status code to receipt rpc return
2017-10-02 14:41:10 +03:00
Péter Szilágyi
7e9e3a134b core/types, internal: swap Receipt.Failed to Status 2017-10-02 14:04:22 +03:00
Péter Szilágyi
7514e8a24d cmd/puppeth, params: enable Byzantium on all networks 2017-10-02 13:01:40 +03:00
rjl493456442
a31835c8b4 internal/ethapi: add status code to receipt rpc return 2017-10-02 11:42:53 +03:00
Felix Lange
d78ad226c2 ethclient, mobile: add TransactionSender (#15127)
* core/types: make Signer derive address instead of public key

There are two reasons to do this now: The upcoming ethclient signer
doesn't know the public key, just the address. EIP 208 will introduce a
new signer which derives the 'entry point' address for transactions with
zero signature. The entry point has no public key.

Other changes to the interface ease the path make to moving signature
crypto out of core/types later.

* ethclient, mobile: add TransactionSender

The new method can get the right signer without any crypto, and without
knowledge of the signature scheme that was used when the transaction was
included.
2017-10-01 11:03:28 +02:00
Martin Holst Swende
a660685746 tests: add ethash difficulty tests (#15191) 2017-09-27 15:30:41 +02:00
Péter Szilágyi
2ab2a9f131 core/bloombits, eth/filters: handle null topics (#15195)
When implementing the new bloombits based filter, I've accidentally broke null
topics by removing the special casing of common.Hash{} filter rules, which
acted as the wildcard topic until now.

This PR fixes the regression, but instead of using the magic hash
common.Hash{} as the null wildcard, the PR reworks the code to handle nil
topics during parsing, converting a JSON null into nil []common.Hash topic.
2017-09-27 12:14:52 +02:00
Péter Szilágyi
860e697b00 Merge pull request #15208 from ayeowch/fix-typo
cmd/geth: fix --password typo
2017-09-27 11:01:38 +03:00
ayeowch
f3c9585f2e cmd/geth: fix --password typo 2017-09-27 10:28:26 +10:00
Péter Szilágyi
229bf51f0d Merge pull request #15181 from fjl/state-revert-log-index
core/state: revert log index when removing logs
2017-09-26 17:11:46 +03:00
Péter Szilágyi
2ee885958b p2p: snappy encoding for devp2p (version bump to 5) (#15106)
* p2p: snappy encoding for devp2p (version bump to 5)

* p2p: remove lazy decompression, enforce 16MB limit
2017-09-26 16:54:49 +03:00
slumber1122
2b4a5f2677 internal/ethapi: remove code duplication around tx sending (#15158) 2017-09-25 10:38:42 +02:00
Derek Chiang
d6a6180366 contracts/chequebook: fix two contract issues (#15086)
This patch fixes the following issues:

* The contract executes send() when it does not have enough balance.
* The contract always sends a total amount of zero.
2017-09-25 10:36:13 +02:00
Lewis Marshall
9feec51e2d p2p: add network simulation framework (#14982)
This commit introduces a network simulation framework which
can be used to run simulated networks of devp2p nodes. The
intention is to use this for testing protocols, performing
benchmarks and visualising emergent network behaviour.
2017-09-25 10:08:07 +02:00
cdetrio
673007d7ae core/vm: standard vm traces (#15035) 2017-09-22 10:22:56 +02:00
Zahoor Mohamed
d558a595ad swarm/storage: pyramid chunker re-write (#14382) 2017-09-21 22:22:51 +02:00
Felix Lange
a0d783094e core/state: revert log index when removing logs 2017-09-21 20:46:21 +02:00
Ernesto del Toro
3c8656347f eth, internal/ethapi: fix spelling of 'Ethereum' (#15164) 2017-09-20 11:31:31 +02:00
gary rong
b9ff44bd64 params: rename EIP150 gas table (#15167) 2017-09-20 11:27:00 +02:00
Mark
cb5235eb07 miner: make starting of CPU agent more reliable (#15148) 2017-09-19 13:28:15 +02:00
Paul Litvak
a92d8a2654 trie: fix typo (#15152) 2017-09-18 23:07:19 +02:00
Davor Kapsa
dc17fa6b18 travis.yml: update go versions (#15154) 2017-09-18 23:07:02 +02:00
Dave Appleton
019dca9ba2 accounts/abi/backends: add AdjustTime (#15077) 2017-09-15 15:20:29 +02:00
Kyuntae Ethan Kim
c197d805f7 ethereum: fix typos in interfaces.go (#15149) 2017-09-15 11:30:17 +02:00
Péter Szilágyi
5705ad004e containers/docker: bump docker images to 1.7 release branch 2017-09-14 14:01:44 +03:00
Péter Szilágyi
a989cf5bad VERSION, params: begin 1.7.1 release cycle 2017-09-14 14:01:31 +03:00
Péter Szilágyi
6c6c7b2af3 params: release Geth 1.7.0 - Megara 2017-09-14 13:55:42 +03:00
Péter Szilágyi
5c93462b5e Merge pull request #15147 from karalabe/enable-byzantium-ropsten
params: enable Byzantium on Ropsten/tests, fix failures
2017-09-14 11:28:54 +03:00
Péter Szilágyi
701d60c889 params: enable Byzantium on Ropsten/tests, fix failures 2017-09-14 10:59:05 +03:00
Martin Holst Swende
9be07de539 params: Updated finalized gascosts for ECMUL/MODEXP (#15135)
* params: Updated finalized gascosts for ECMUL/MODEXP

* core,tests: Updates pending new tests

* tests: Updated with new tests

* core: revert state transition bugfix

* tests: Add expected failures due to  #15119
2017-09-14 10:35:54 +03:00
Péter Szilágyi
885c13c2c9 Merge pull request #15146 from karalabe/byzantium-rebrand
consensus, core, params: rebrand Metro to Byzantium
2017-09-14 10:29:08 +03:00
Péter Szilágyi
5bbd7fb390 consensus, core, params: rebrand Metro to Byzantium 2017-09-14 10:10:46 +03:00
Péter Szilágyi
79b11121a7 Merge pull request #15141 from karalabe/rinkeby-infura-bootnode
params: add Infura bootnode to Rinkeby
2017-09-13 12:48:00 +03:00
Péter Szilágyi
72af509abe params: add Infura bootnode to Rinkeby 2017-09-13 11:25:50 +03:00
Péter Szilágyi
382c9266e6 Merge pull request #15138 from karalabe/statesync-peer-drops
eth/downloader: track peer drops and deassign state sync tasks
2017-09-12 15:33:32 +03:00
Péter Szilágyi
f46adfac28 eth/downloader: track peer drops and deassign state sync tasks 2017-09-12 15:13:14 +03:00
Péter Szilágyi
514b1587db Merge pull request #15137 from karalabe/puppeth-keywords
cmd/puppeth: reserve "yournode" as a non-allowed ethstats user
2017-09-12 11:50:53 +03:00
Péter Szilágyi
66a7ef57e6 cmd/puppeth: reserve "yournode" as a non-allowed ethstats user 2017-09-12 11:35:35 +03:00
Péter Szilágyi
ecca2c3c1b Merge pull request #15129 from zsfelfoldi/cht1040
light: new CHTs for mainnet and ropsten
2017-09-12 10:59:01 +03:00
Zsolt Felfoldi
7a7f6a4f29 light: new CHTs for mainnet and ropsten 2017-09-11 23:36:16 +02:00
Péter Szilágyi
c8e70186a6 Merge pull request #14973 from rjl493456442/fix_downloader
eth/downloader: exit loop when there is no more available task
2017-09-11 14:02:02 +03:00
Péter Szilágyi
794741b8b2 Merge pull request #15124 from fjl/debug-gcpercent
internal/debug: add debug_setGCPercent
2017-09-11 13:34:34 +03:00
Felix Lange
48705f8aea internal/debug: add debug_setGCPercent 2017-09-11 12:29:47 +02:00
Péter Szilágyi
10b3f97c9d core: only fire one chain head per batch (#15123)
* core: only fire one chain head per batch

* miner: announce chan events synchronously
2017-09-11 13:13:05 +03:00
Felix Lange
5596b664c4 internal/debug: add debug_freeOSMemory (#15122) 2017-09-11 09:33:18 +02:00
Felix Lange
42a5b54bf5 core/vm: improve bitvec comments 2017-09-10 21:04:36 +02:00
Felix Lange
10181b57a9 core, eth/downloader: commit block data using batches (#15115)
* ethdb: add Putter interface and Has method

* ethdb: improve docs and add IdealBatchSize

* ethdb: remove memory batch lock

Batches are not safe for concurrent use.

* core: use ethdb.Putter for Write* functions

This covers the easy cases.

* core/state: simplify StateSync

* trie: optimize local node check

* ethdb: add ValueSize to Batch

* core: optimize HasHeader check

This avoids one random database read get the block number. For many uses
of HasHeader, the expectation is that it's actually there. Using Has
avoids a load + decode of the value.

* core: write fast sync block data in batches

Collect writes into batches up to the ideal size instead of issuing many
small, concurrent writes.

* eth/downloader: commit larger state batches

Collect nodes into a batch up to the ideal size instead of committing
whenever a node is received.

* core: optimize HasBlock check

This avoids a random database read to get the number.

* core: use numberCache in HasHeader

numberCache has higher capacity, increasing the odds of finding the
header without a database lookup.

* core: write imported block data using a batch

Restore batch writes of state and add blocks, tx entries, receipts to
the same batch. The change also simplifies the miner.

This commit also removes posting of logs when a forked block is imported.

* core: fix DB write error handling

* ethdb: use RLock for Has

* core: fix HasBlock comment
2017-09-09 19:03:07 +03:00
holisticode
ac193e36ce swarm/api/http: add error pages (#14967) 2017-09-08 20:29:09 +02:00
Martin Holst Swende
d6681ed360 core/vm: Rename + updated doc on jumpdest analysis 2017-09-08 12:47:44 +02:00
nkbai
5ba9225fe3 accounts/abi/bind: pass non-empty directory when calling goimports (#15070) 2017-09-07 23:34:45 +02:00
Martin Holst Swende
fc87bc5f52 common: improve documentation of Hash.SetBytes (#15062)
Fixes #15004
2017-09-07 23:32:59 +02:00
Mark
c1740e4540 core/types, miner: avoid tx sender miscaching (#14773) 2017-09-07 23:22:27 +02:00
Benoit Verkindt
e3db1236de contracts/chequebook: fix race in test (#15058) 2017-09-07 23:14:47 +02:00
Fiisio
02b4d074f6 core/asm: use ContainsRune instead of IndexRune (#15098) 2017-09-07 23:11:48 +02:00
Fiisio
2dcb22afec swarm/fuse: use Equal instead of Compare (#15097) 2017-09-07 23:10:51 +02:00
Pawan Singh Pal
69c8be7c86 core: delete dao.go (#15113)
- dao.go is already present in consensus/misc
- core/dao.go is not used anywhere in the codebase
2017-09-07 23:08:06 +02:00
Péter Szilágyi
55e5926f34 Merge pull request #15103 from karalabe/disable-fastsync-postpivot
eth: disable fast sync after pivot is committed
2017-09-07 19:29:45 +03:00
Péter Szilágyi
f30179d62e eth: disable fast sync after pivot is committed 2017-09-06 15:02:44 +03:00
Péter Szilágyi
c4d21bc8e5 Merge pull request #14631 from zsfelfoldi/bloombits2
core/bloombits, eth/filter: transformed bloom bitmap based log search
2017-09-06 13:00:35 +03:00
Péter Szilágyi
160add8570 Merge pull request #15095 from karalabe/txpool-avoid-deep-reorg
core: use blocks and avoid deep reorgs in txpool
2017-09-06 12:01:07 +03:00
Péter Szilágyi
564c8f3ae6 core/bloombits: drop nil-matcher special case 2017-09-06 11:14:22 +03:00
Zsolt Felfoldi
451ffdb62b core/bloombits: use general filters instead of addresses and topics 2017-09-06 11:14:21 +03:00
Zsolt Felfoldi
6ff2c02991 core/bloombits: AddBloom index parameter and fixes variable names 2017-09-06 11:14:20 +03:00
Péter Szilágyi
f585f9eee8 core, eth: clean up bloom filtering, add some tests 2017-09-06 11:14:19 +03:00
Zsolt Felfoldi
4ea4d2dc34 core, eth: add bloombit indexer, filter based on it 2017-09-06 11:13:13 +03:00
Péter Szilágyi
1e67378df8 Merge pull request #15094 from karalabe/eth-auto-maxpeers
eth: use maxpeers from p2p layer instead of extra config
2017-09-06 10:38:37 +03:00
Péter Szilágyi
cc313e78b7 core: use blocks and avoid deep reorgs in txpool 2017-09-05 19:50:29 +03:00
Péter Szilágyi
b0ca1b67ce eth: use maxpeers from p2p layer instead of extra config 2017-09-05 19:18:28 +03:00
Nick Johnson
03d00361f5 Merge pull request #15092 from karalabe/puppeth-main-docker-images
Dockerfile, cmd/puppeth: fix missing SSL certificates, use main image in puppeth
2017-09-05 14:24:09 +01:00
Péter Szilágyi
f90a193f92 cmd/puppeth: switch node containers to main ones 2017-09-05 16:09:41 +03:00
Péter Szilágyi
8e14bb1448 Dockerfile: fix missing SSL certificates 2017-09-05 16:06:04 +03:00
Péter Szilágyi
cd6c861dc5 vendor: pull in latest changes for goleveldb (#15090) 2017-09-05 15:04:32 +02:00
Péter Szilágyi
c91f7beb53 Merge pull request #15085 from karalabe/txpool-immutable
core: make txpool operate on immutable state
2017-09-05 13:39:18 +03:00
Viktor Trón
2bacf36d80 bmt: Binary Merkle Tree Hash (#14334)
bmt is a new package that provides hashers for binary merkle tree hashes on
size-limited chunks. the main motivation is that using BMT hash as the chunk
hash of the swarm hash offers logsize inclusion proofs for arbitrary files on a
32-byte resolution completely viable to use in challenges on the blockchain.
2017-09-05 12:38:36 +02:00
Péter Szilágyi
32d8d42274 Merge pull request #15089 from karalabe/docker-multistage
Dockerfile: multi-stage builds, Go 1.9
2017-09-05 13:36:20 +03:00
Péter Szilágyi
da7d57e07c core: make txpool operate on immutable state 2017-09-05 13:34:41 +03:00
Martin Holst Swende
8cab3ab435 cmd/evm: adds ability to run individual state test file (#14998)
* cmd/evm: adds ability to run individual state test file

* cmd/evm: Fix statetest runner to be more json friendly

* cmd/evm, tests: minor polishes, dump state on fail
2017-09-05 12:24:26 +03:00
Péter Szilágyi
8f567dc8a2 Dockerfile: multi-stage builds, Go 1.9 2017-09-05 12:16:59 +03:00
Péter Szilágyi
504278e839 build: bump PPA builders to Go 1.9 (#15083) 2017-09-05 10:16:46 +02:00
Martin Holst Swende
e7408b5552 core/vm: Make MaxCodesize non-retroactive (#15072)
* core/vm: Make max_codesize only applicable post Spurious Dragon/158/155/161/170

* tests: Remove expected failure
2017-09-04 12:53:25 +03:00
Martin Holst Swende
1901521ed0 core: Fix flaw where underpriced locals were removed (#15081)
* core: Fix flaw where underpriced locals were removed

* core: minor code cleanups for tx pool tests
2017-09-04 12:48:36 +03:00
Martin Holst Swende
23b51a68cb core/vm: avoid state lookup during gas calc for call (#15061) 2017-09-04 10:56:45 +02:00
Martin Holst Swende
dc92779c0a p2p: change ping ticker to timer (#15071)
Using a Timer over Ticker seems to be a lot better, though I cannot fully
account for why that it behaves so (since Ticker should be more bursty, but not
necessarily more active over time, but that may depend on how long window it
uses to decide on when to tick next)
2017-09-04 09:24:52 +02:00
Péter Szilágyi
d70536b5d4 Merge pull request #15047 from holiman/ecmul_benchmarks
core/vm: more benchmarks
2017-08-28 17:25:36 +03:00
Martin Holst Swende
07635e43e2 core/vm: renamed struct member + go fmt 2017-08-28 13:33:24 +02:00
Martin Holst Swende
64a3a3d23c core/vm: Fix testcase input for ecmul 2017-08-28 13:30:26 +02:00
Péter Szilágyi
777540628e Merge pull request #15054 from karalabe/go-1.9
travis, appveyor: bump Go to 1.9 stable
2017-08-28 13:19:03 +03:00
Péter Szilágyi
a4df80f47f travis, appveyor: bump Go to 1.9 stable 2017-08-28 11:15:29 +03:00
Martin Holst Swende
bc2a5578c0 core/vm: more benchmarks 2017-08-27 14:00:32 +02:00
Oli Bye
ebf41d16a0 cmd/geth: fix --nousb typo (#15040) 2017-08-25 16:54:36 +03:00
Péter Szilágyi
9d0c51fb0f Merge pull request #15039 from karalabe/metropolis-contract-clash
core, tests: implement Metropolis EIP 684
2017-08-25 16:03:39 +03:00
Péter Szilágyi
08f27428b4 core, tests: implement Metropolis EIP 684 2017-08-25 13:00:27 +03:00
Péter Szilágyi
27a5622e99 Merge pull request #15028 from karalabe/metropolis-iceage
consensus, core, tests: implement Metropolis EIP 649
2017-08-25 11:00:51 +03:00
Péter Szilágyi
8596fc5974 Merge pull request #15033 from fjl/core-receipt-status-bytes
core/types: encode receipt status in PostState field
2017-08-25 10:31:44 +03:00
Felix Lange
ad16aeb0a2 core/types: encode receipt status in PostState field
This fixes a regression where the new Failed field in ReceiptForStorage
rejected previously stored receipts. Fix it by removing the new field
and store status in the PostState field. This also removes massive RLP
hackery around the status field.
2017-08-24 23:51:50 +02:00
Péter Szilágyi
b872961ec8 consensus, core, tests: implement Metropolis EIP 649 2017-08-24 17:16:39 +03:00
Felix Lange
54b1de67e2 core/vm: make jumpdest code nicer 2017-08-24 13:09:53 +02:00
nkbai
68955ed2eb core/types: fix create indicator in Transaction.String (#15025) 2017-08-24 12:48:13 +02:00
Péter Szilágyi
ff9a868232 core/state: revert metro suicide map addition (#15024) 2017-08-24 12:42:00 +02:00
Péter Szilágyi
20b818d206 Merge pull request #15029 from karalabe/rlp-raw-decode
rlp: fix decoding long strings into RawValue types
2017-08-24 13:32:45 +03:00
Péter Szilágyi
63246e2542 rlp: fix decoding long strings into RawValue types 2017-08-24 13:10:50 +03:00
Péter Szilágyi
3c48a25762 Merge pull request #15014 from rjl493456442/metropolis-eip658
core: add status as a consensus field in receipt
2017-08-23 14:39:37 +03:00
Martin Holst Swende
286ec5df40 cmd/evm, core/vm, internal/ethapi: Show error when exiting (#14985)
* cmd/evm, core/vm, internal/ethapi: Add 'err' to tracer interface CaptureEnd

* cmd/evm: fix nullpointer when there is no error
2017-08-23 14:37:18 +03:00
Péter Szilágyi
4ee92f2d19 core/types: reject Metro receipts with > 0x01 status bytes 2017-08-23 13:57:15 +03:00
Péter Szilágyi
f7e39a7724 Merge pull request #15000 from fjl/node-flock
node: fix instance dir locking and improve error message
2017-08-23 13:36:11 +03:00
Péter Szilágyi
79cdbcfe64 Merge pull request #15018 from Bo-Ye/master
metrics: change MetricsEnabledFlag to be const
2017-08-23 13:22:46 +03:00
Péter Szilágyi
79bf69b556 tests: pull in new test suite, enable most block tests 2017-08-22 18:35:18 +03:00
rjl493456442
28aea46ac0 core: implement Metropolis EIP 658, receipt status byte 2017-08-22 18:35:17 +03:00
Péter Szilágyi
fc5f8a3dda Merge pull request #15022 from karalabe/enable-byzantium-state-tests
tests: enable Byzantium state tests for CI
2017-08-22 15:06:02 +03:00
Péter Szilágyi
3cc476c8ab tests: enable Byzantium state tests for CI 2017-08-22 14:04:44 +03:00
Ti Zhou
2fd5ba6bd4 core/vm: fix typo in method documentation (#15019)
Signed-off-by: Ti Zhou <tizhou1986@gmail.com>
2017-08-22 12:43:36 +03:00
Bo Ye
b4b27ebaea metrics: change MetricsEnabledFlag to be const 2017-08-22 18:35:09 +12:00
Péter Szilágyi
8c037dc487 Merge pull request #15017 from karalabe/usbhid-macos-thread-fix
vendor: update USB HID lib (fix macOS crash)
2017-08-21 14:32:47 +03:00
Péter Szilágyi
3e14837c1c vendor: update USB HID lib (fix macOS crash) 2017-08-21 13:45:50 +03:00
George Angel
58f7f977e7 Dockerfile: use alpine:3.6, clean up apk incovation (#15006) 2017-08-21 12:26:42 +02:00
Péter Szilágyi
afdfdebd87 Merge pull request #14983 from karalabe/metropolis-revert
core/vm: implement REVERT metropolis opcode
2017-08-21 12:23:03 +03:00
Noman
e311bb520a whisper: Fix spelling and grammar in error (#15009)
* whisper: Fix spelling and grammar in error

* whisper: Fix grammar in comments
2017-08-21 12:22:00 +03:00
Péter Szilágyi
1ab3e30698 Merge pull request #15016 from gurrpi/patch-1
README: add missing full stop
2017-08-21 11:04:07 +03:00
gurrpi
314246da78 Adding period at end of sentence
missing period at line 119
2017-08-21 15:08:57 +09:00
Miya Chen
bf1e263128 core, light: send chain events using event.Feed (#14865) 2017-08-18 12:58:36 +02:00
Felix Lange
7e57fee355 node: fix instance dir locking and improve error message
The lock file was ineffective because opening leveldb storage in
read-only mode doesn't really take the lock. Fix it by including a
dedicated flock library (which is actually split out of goleveldb).
2017-08-18 12:14:00 +02:00
Péter Szilágyi
a4da8416ee Merge pull request #14996 from markya0616/send_not_announce
eth: send but not announce block to peers if propagate is true
2017-08-18 12:47:33 +03:00
Péter Szilágyi
998abb9107 Merge pull request #14999 from karalabe/puppeth-ethstats-blacklist
cmd/puppeth: support blacklisting malicious IPs on ethstats
2017-08-18 12:39:48 +03:00
Péter Szilágyi
059c767adf cmd/puppeth: support blacklisting malicious IPs on ethstats 2017-08-18 11:23:56 +03:00
mark.lin
d4f11d9b4f eth: send but not announce block to peers if propagate is true 2017-08-18 13:52:16 +08:00
Péter Szilágyi
104375f398 Merge pull request #14993 from karalabe/bn256-precompile-fixes
core/vm, crypto/bn256: fix bn256 use and pairing corner case
2017-08-17 17:46:45 +03:00
Péter Szilágyi
1bbd400899 tests: skip the bad tests from colliding account touches 2017-08-17 16:50:36 +03:00
Péter Szilágyi
f9fb70d2ee core/vm: rework reversion to work on a higher level 2017-08-17 16:50:35 +03:00
Péter Szilágyi
1335a6cc8c core/vm, crypto/bn256: fix bn256 use and pairing corner case 2017-08-17 16:46:46 +03:00
Jeffrey Wilcke
b70a73cd3e core/vm: implement REVERT metropolis opcode 2017-08-16 15:32:59 +03:00
Péter Szilágyi
0b978f91b6 Merge pull request #14981 from karalabe/metropolis-returndata
core/vm: implement RETURNDATA metropolis opcodes
2017-08-16 15:19:33 +03:00
Péter Szilágyi
64d199edf2 tests: pull in latest tests from upstream 2017-08-16 13:43:15 +03:00
Péter Szilágyi
4e0fea4d30 core/vm: polish RETURNDATA, add missing returns to CALL* 2017-08-16 13:43:14 +03:00
Jeffrey Wilcke
9bd6068fef core/vm: implement RETURNDATA metropolis opcodes 2017-08-16 13:43:08 +03:00
Péter Szilágyi
76069eef38 Merge pull request #14978 from karalabe/metropolis-staticcall
core/vm: implement metropolis static call opcode
2017-08-16 12:39:31 +03:00
Péter Szilágyi
3df7142b3e core/vm: minor polishes, fix STATICCALL for precompiles
* Fix STATICCALL so it is able to call precompiles too
 * Fix write detection to use the correct value argument of CALL
 * Fix write protection to ignore the value in CALLCODE
2017-08-15 14:40:12 +03:00
Jeffrey Wilcke
3d123bcde6 core/vm: implement metropolis static call opcode 2017-08-15 13:03:49 +03:00
Martin Holst Swende
3040243042 cmd/evm: add --receiver, support code from stdin (#14873) 2017-08-15 11:31:36 +02:00
Péter Szilágyi
9facf6423d Merge pull request #14959 from karalabe/metropolis-precompiles
core/vm: metropolis precompiles
2017-08-15 10:31:29 +03:00
Péter Szilágyi
2403656373 Merge pull request #14951 from egonelbre/megacheck_swarm
swarm: fix megacheck warnings
2017-08-14 19:44:17 +03:00
Péter Szilágyi
ef0edc6e32 Merge pull request #14885 from karalabe/trezor-boom
accounts, console, internal: support trezor hardware wallet
2017-08-14 18:52:40 +03:00
Egon Elbre
133de3d806 swarm: fix megacheck warnings 2017-08-14 18:12:37 +03:00
Péter Szilágyi
f8d8b56b28 core/vm: optimize copy-less data retrievals 2017-08-14 17:08:49 +03:00
Martin Holst Swende
d8aaa3a215 core/vm: benchmarking of metro precompiles 2017-08-14 15:37:09 +03:00
Péter Szilágyi
6131dd55c5 core/vm: polish precompile contract code, add tests and benches
* Update modexp gas calculation to new version
 * Fix modexp modulo 0 special case to return zero
2017-08-14 15:27:44 +03:00
Péter Szilágyi
02656f9f61 console: use keypad based pinpad (Trezor request) 2017-08-14 12:21:40 +03:00
Martin Holst Swende
967e097faa core/vm: Address review concerns 2017-08-14 10:57:54 +02:00
rjl493456442
02aa86e659 eth/downloader: exit loop when there is no more available task 2017-08-14 13:51:37 +08:00
Jeffrey Wilcke
7bbdf3e268 core: add Metropolis pre-compiles (EIP 197, 198 and 213) 2017-08-11 15:24:54 +03:00
Péter Szilágyi
6ca59d98f8 Merge pull request #14964 from fjl/tests-update-2
tests: update tests, use blockchain test "network" field
2017-08-11 15:23:22 +03:00
Joel Burget
833eeb9f23 core/vm/runtime: remove unused state parameter to NewEnv (#14953)
* core: Remove unused `state` parameter to `NewEnv`.

`cfg.State` is used instead.

* core/vm/runtime: remove unused import
2017-08-11 14:29:32 +03:00
Maximilian Meister
2b422b1a47 cmd/geth, cmd/swarm: sort commands and flags by name (#3462) 2017-08-11 13:29:05 +02:00
gary rong
73c5aba21f ethdb: return copied value from MemDatabase.Get (#14958) 2017-08-11 12:41:49 +02:00
Felix Lange
6a56b15019 tests: update tests, use blockchain test "network" field
Blockchain tests now include the "network" which determines the chain
config to use. Remove config matching based on test name and share the
name-to-config index with state tests.

Byzantium/Constantinople tests are still skipped because most of them
fail anyway.
2017-08-11 12:34:03 +02:00
Péter Szilágyi
5d9ac49c7e accounts: refactor API for generalized USB wallets 2017-08-09 13:26:07 +03:00
Péter Szilágyi
db568a61e2 accounts, console, internal: support trezor hardware wallet 2017-08-09 11:30:17 +03:00
Ivan Daniluk
17ce0a37de eth/downloader: fix race in downloadTesterPeer (#14942)
* eth/downloader: fix race in downloadTesterPeer

Signed-off-by: Ivan Daniluk <ivan.daniluk@gmail.com>

* eth/downloader: minor datarace fix cleanup
2017-08-08 20:10:09 +03:00
Egon Elbre
26b2d6e1aa contracts: fix megacheck errors (#14916)
* contracts: fix megacheck errors

* contracts: drop useless sleep, lets see what breaks
2017-08-08 19:41:35 +03:00
Felföldi Zsolt
fff6e03a79 les: fix megacheck warnings (#14941)
* les: fix megacheck warnings

* les: fixed testGetProofs
2017-08-08 19:31:08 +03:00
Egon Elbre
d375193797 whisper: fix megacheck warnings (#14925)
* whisper: fix megacheck warnings

* whisper/whisperv5: regenerate json codec to fix unused override type
2017-08-08 14:48:06 +03:00
Felix Lange
374c49e0ac Merge pull request #14522 from ethereum/go-ethereum/chainproc2 2017-08-08 13:37:59 +02:00
Egon Elbre
10ce8b0e3c crypto: fix megacheck warnings (#14917)
* crypto: fix megacheck warnings

* crypto/ecies: remove ASN.1 support
2017-08-08 13:58:22 +03:00
Péter Szilágyi
9a7e99f75d Merge pull request #14940 from karalabe/txpool-races
core: fix txpool journal and test races
2017-08-08 13:20:36 +03:00
Egon Elbre
6f8c7b0def ethdb: add basic and parallel sanity tests (#14938)
* ethdb: add basic sanity test

* ethdb: test MemDatabase

* ethdb: add parallel tests
2017-08-08 12:32:10 +03:00
Péter Szilágyi
1c45f2f42e core: fix txpool journal and test races 2017-08-08 12:22:01 +03:00
Egon Elbre
e063d538b8 rpc: fix megacheck warnings 2017-08-08 11:08:37 +02:00
Péter Szilágyi
43437806fb Merge pull request #14933 from egonelbre/megacheck_eth
eth: fix megacheck warnings
2017-08-08 09:59:52 +03:00
Egon Elbre
8f06b7980d eth: fix megacheck warnings 2017-08-07 19:54:20 +03:00
Egon Elbre
971079822e light: fix megacheck warnings (#14920) 2017-08-07 17:25:18 +02:00
Egon Elbre
f42bd73ce5 internal: fix megacheck warnings (#14919) 2017-08-07 17:14:40 +02:00
Péter Szilágyi
f5925b0459 Merge pull request #14928 from fjl/build-goroot-explain
internal/build: add GoTool and document why it uses GOROOT
2017-08-07 17:47:58 +03:00
Péter Szilágyi
8edaaa227d core: polish chain indexer a bit 2017-08-07 17:38:33 +03:00
Zsolt Felfoldi
bd74882d83 core: implement ChainIndexer 2017-08-07 17:37:08 +03:00
Péter Szilágyi
67439c1dba Merge pull request #14927 from karalabe/blockchain-test-cleanups
core: fix blockchain goroutine leaks in tests
2017-08-07 17:21:29 +03:00
Felix Lange
f59a49d591 internal/build: add GoTool and document why it uses GOROOT 2017-08-07 16:08:50 +02:00
Péter Szilágyi
2b50367fe9 core: fix blockchain goroutine leaks in tests 2017-08-07 16:00:47 +03:00
Péter Szilágyi
46cf0a616b Merge pull request #14914 from egonelbre/megacheck_consensus
consensus: fix megacheck warnings
2017-08-07 14:35:45 +03:00
Egon Elbre
85454e7678 cmd: fix megacheck warnings (#14912)
* cmd: fix megacheck warnings

* cmd: revert time.Until changes, keep readFloat
2017-08-07 14:34:21 +03:00
Egon Elbre
80de4dc72c consensus: revert time.Until change 2017-08-07 14:32:03 +03:00
Péter Szilágyi
8c2cf3c66c Merge pull request #14922 from egonelbre/megacheck_miner
miner: fix megacheck warnings
2017-08-07 14:31:41 +03:00
Péter Szilágyi
37e9fcacca Merge pull request #14923 from egonelbre/megacheck_node
node: fix megacheck warnings
2017-08-07 14:28:10 +03:00
Péter Szilágyi
b36f54c684 Merge pull request #14918 from egonelbre/megacheck_ethstats
ethstats: fix megacheck warnings
2017-08-07 14:25:08 +03:00
Péter Szilágyi
3991745c5f Merge pull request #14921 from egonelbre/megacheck_log
log: fix megacheck warnings
2017-08-07 14:24:22 +03:00
Péter Szilágyi
6dd2803b8e Merge pull request #14915 from egonelbre/megacheck_console
console: fix megacheck warnings
2017-08-07 14:21:21 +03:00
Péter Szilágyi
fc0c6c175c Merge pull request #14913 from egonelbre/megacheck_common
common: fix megacheck warnings
2017-08-07 14:16:55 +03:00
Egon Elbre
7c74e166b0 accounts: fix megacheck warnings (#14903)
* accounts: fix megacheck warnings

* accounts: don't modify abi in favor of full cleanup
2017-08-07 14:11:15 +03:00
Péter Szilágyi
f7848c2aa5 Merge pull request #14911 from karalabe/txpool-flaky-test
core: bump timeout test to avoid flakyness on overloaded ci
2017-08-07 14:09:35 +03:00
Egon Elbre
19866075ac node: fix megacheck warnings 2017-08-07 13:43:08 +03:00
Egon Elbre
faafeef79e miner: fix megacheck warnings 2017-08-07 13:41:22 +03:00
Egon Elbre
cd82b89fde log: fix megacheck warnings 2017-08-07 13:40:05 +03:00
Egon Elbre
3780d0b6f7 ethstats: fix megacheck warnings 2017-08-07 13:32:19 +03:00
Egon Elbre
ff89a3ddce console: fix megacheck warnings 2017-08-07 13:19:44 +03:00
Egon Elbre
aee70ae30b consensus: fix megacheck warnings 2017-08-07 13:18:08 +03:00
Egon Elbre
392151e251 common: fix megacheck warnings 2017-08-07 13:16:56 +03:00
Péter Szilágyi
5b742fb82b core: bump timeout test to avoid flakyness on overloaded ci 2017-08-07 12:53:32 +03:00
Péter Szilágyi
b159cdd8dd Merge pull request #14910 from karalabe/drop-yakkety-support
build: drop yakkety builds (launchpad end of life)
2017-08-07 12:42:30 +03:00
Péter Szilágyi
524ca544b2 build: drop yakkety builds (launchpad end of life) 2017-08-07 11:12:44 +03:00
Péter Szilágyi
1059927f9c Merge pull request #14905 from armellini13/patch-1
node: fix doc typo
2017-08-07 09:51:00 +02:00
Agustin Armellini Fischer
fca6e515d6 node: fix doc typo 2017-08-06 00:32:17 +02:00
Péter Szilágyi
ca436f4b90 Merge pull request #14897 from karalabe/cardinal-sin
cmd/puppeth: remove wrapping loop in single reads
2017-08-05 00:34:05 +02:00
Péter Szilágyi
350bb6d9ca Merge pull request #14898 from detailyang/patch-1
Makefile: call shell function to get pwd
2017-08-04 18:23:15 +02:00
detailyang
5e805aa865 Makefile: call shell function to get pwd 2017-08-04 23:54:30 +08:00
Péter Szilágyi
455fcc8309 cmd/puppeth: remove wrapping loop in single reads 2017-08-04 17:00:22 +02:00
evgk
0cc9b8791e core/vm: fix typo in comment (#14894) 2017-08-04 01:31:18 +02:00
Péter Szilágyi
8b84bd283f Merge pull request #14889 from karalabe/ethash-cache-on-import
cmd: add makecache cmd, use caches during import cmd
2017-08-03 18:40:21 +02:00
Péter Szilágyi
4a260dc1f2 cmd: add makecache cmd, use caches during import cmd 2017-08-03 18:39:34 +02:00
akiva
4371367cd1 Makefile, README: remove evm target, add puppeth to table (#14886) 2017-08-03 13:58:35 +02:00
Jim McDonald
bc0e6a5e68 ethclient: add NetworkID method (#14791)
There is currently no simple way to obtain the network ID from a Client. 
This adds a NetworkID method that wraps the net_version JSON-RPC call.
2017-08-01 10:59:46 +02:00
Lewis Marshall
60c858a529 swarm/api: make api.NewManifest synchronous (#14880)
Previously, NewManifest was asynchronous so subsequent code which tried
to use the returned manifest could error as the manifest was not yet
persisted.
2017-07-31 15:58:19 +02:00
Lewis Marshall
e9b850805e cmd/swarm: support exporting, importing chunk db (#14868) 2017-07-31 13:23:44 +02:00
njupt-moon
53f3460ab5 core/asm: fix hex number lexing (#14861) 2017-07-31 13:02:36 +02:00
Felix Lange
bdf98b4fcd common: EIP55-compliant Address.Hex() (#14815)
This patch updates the Address type in common/types.go so that the Hex
function provides an EIP55-compliant output string. The implementation is pretty lightweight; 
on my laptop the benchmark gives 1100ns/op, with the majority of that value due to the Keccak hash.
2017-07-31 12:22:02 +02:00
bas-vk
c259e6874e light: update txpool signer to EIP155 (#14720) 2017-07-31 12:06:01 +02:00
Lee Hyeon
13cda8d9b6 Makefile: fixed GOBIN absolute path issue (#14854) 2017-07-31 12:00:17 +02:00
Mark
4f9789b28d core: avoid write existing block again (#14849) 2017-07-31 11:59:07 +02:00
Péter Szilágyi
ee748d1451 Merge pull request #14882 from am2rican5/rinkeby-genesis
mobile: add RinkebyGenesis method
2017-07-31 12:27:45 +03:00
am2rican5
0732ad4e47 mobile: add RinkebyGenesis method 2017-07-31 17:44:08 +09:00
Péter Szilágyi
3d32690b54 cmd, core, eth: journal local transactions to disk (#14784)
* core: reduce txpool event loop goroutines and sync structs

* cmd, core, eth: journal local transactions to disk

* core: journal replacement pending transactions too

* core: separate transaction journal from pool
2017-07-28 15:09:39 +02:00
Péter Szilágyi
a602ee90f2 Merge pull request #14858 from xmikus01/patch-1
trie: typo in comment
2017-07-26 09:40:41 +02:00
Péter Szilágyi
fc78ce61c0 Merge pull request #14859 from cdetrio/evm-flag-gasprice
core/vm/runtime: fix evm command to use --gasprice flag value
2017-07-26 09:40:05 +02:00
cdetrio
ffebf00114 core/vm/runtime: fix evm command to use --gasprice flag value 2017-07-25 13:08:29 -04:00
Petr Mikusek
99da85c895 trie: typo in comment 2017-07-25 19:02:40 +02:00
Lewis Marshall
f4841ff43d swarm/api/http: redirect root manifest requests to include trailing slash (#14806) 2017-07-25 11:51:26 +02:00
Leo Shklovskii
3a678a15c9 cmd/abigen: update generated go file header text (#14845)
As per https://golang.org/s/generatedcode. This will allow other tools
such as golint to properly ignore the files.
2017-07-24 14:09:03 +02:00
Felix Lange
3e0dbe0eaa core/vm: remove logging and add section labels to struct logs (#14782) 2017-07-19 14:32:45 +02:00
Chase Wright
1802682f65 node: Rename TrusterNodes (#14827)
* node: Rename TrusterNodes

* node: Rename TrusterNodes
2017-07-18 11:58:46 +03:00
Péter Szilágyi
4d2249773a Merge pull request #14824 from karalabe/faucet-ignore-whitespace
cmd/faucet: ignore whitespace in gist content
2017-07-17 21:19:16 +03:00
Péter Szilágyi
8a8fc5f8ef Merge pull request #14823 from karalabe/puppeth-limited-logging
cmd/puppeth: limit cotnainers to 10MB logs
2017-07-17 21:18:31 +03:00
Péter Szilágyi
671ba3791d cmd/faucet: ignore whitespace in gist content 2017-07-17 21:15:25 +03:00
Péter Szilágyi
9488e7fd5f cmd/puppeth: limit cotnainers to 10MB logs 2017-07-17 20:38:40 +03:00
Elias Naur
23c6fcdbe8 mobile: don't retain transient []byte in CallMsg.SetData (#14804)
* mobile: don't retain transient []byte in CallMsg.SetData

Go mobile doesn't copy []byte parameters, for performance and to allow
writes to the byte array be reflected in the native byte array.
Unfortunately, that means []byte arguments are only valid during the
call it is being passed into.

CallMsg.SetData retains such a byte array. Copy it instead

Fixes #14675

* mobile: copy all []byte arguments from gomobile

To avoid subtle errors when accidentially retaining an otherwise
transient byte slice coming from gomobile, copy all byte slices before
use.

* mobile: replace copySlice with common.CopyBytes
2017-07-17 15:25:46 +03:00
ligi
cf5d4b5541 mobile: use EIP155 signer (#14817)
* mobile: Use EIP155Signer - closes #14762

* mobile: Correctly fall back on HomesteadSigner when no chainID is passed in
2017-07-17 14:31:26 +03:00
Péter Szilágyi
b95c2b58f0 Merge pull request #14807 from Dexaran/master
README: get rid of the non-existent disasm command
2017-07-17 12:48:56 +03:00
Péter Szilágyi
8e9197f2a1 README: get rid of the on-existent disasm command 2017-07-17 12:48:12 +03:00
Péter Szilágyi
c65f10a17b Merge pull request #14733 from karalabe/metro-eip100
consensus/ethash, core: implement Metropolis EIP 100
2017-07-17 12:43:13 +03:00
Péter Szilágyi
a56f3dc0d9 core, ethclient: implement Metropolis EIP 98 (#14750)
Implements ethereum/EIPs#98
2017-07-17 10:34:53 +02:00
Martin Holst Swende
47359301a2 core: blocknumber in genesis as hex (#14812) 2017-07-17 10:33:13 +02:00
Jim McDonald
688ee6d1e5 cmd/geth: update tests for EIP55-compliant Address.Hex() 2017-07-16 13:29:20 +01:00
Jim McDonald
ad8d519eb5 common: tests for EIP55-compliant Address.Hex() 2017-07-16 13:28:22 +01:00
Jim McDonald
9e80d9bee1 common: Address.Hex() outputs EIP55-compliant string 2017-07-16 13:26:16 +01:00
Péter Szilágyi
0ff35e170d core: remove redundant storage of transactions and receipts (#14801)
* core: remove redundant storage of transactions and receipts

* core, eth, internal: new transaction schema usage polishes

* eth: implement upgrade mechanism for db deduplication

* core, eth: drop old sequential key db upgrader

* eth: close last iterator on successful db upgrage

* core: prefix the lookup entries to make their purpose clearer
2017-07-14 19:39:53 +03:00
Péter Szilágyi
8d6a5a3581 VERSION, params: begin 1.7.0 cycle (cannot downgrade) 2017-07-14 18:10:18 +03:00
Dexaran
33a24bb731 Update README.md 2017-07-14 11:56:08 +04:00
Dexaran
2d47c6bfde Update README.md 2017-07-14 11:55:10 +04:00
Dexaran
d68ad36bb9 Update README.md 2017-07-14 11:54:35 +04:00
Dexaran
df74a43396 Update README.md 2017-07-14 11:53:46 +04:00
Dexaran
01cb9948f1 Update README.md 2017-07-14 11:53:09 +04:00
Felix Lange
bf468a81ec params, VERSION: v1.6.8 unstable 2017-07-11 16:33:39 +02:00
Felix Lange
ab5646c532 params: v1.6.7 stable 2017-07-11 16:32:36 +02:00
Péter Szilágyi
3b25012481 Merge pull request #14792 from karalabe/slim-docker-image
dockerignore: ignore all git metadata and all tests
2017-07-11 17:07:01 +03:00
Péter Szilágyi
bd381be9c8 dockerignore: ignore all git metadata and all tests 2017-07-11 17:02:22 +03:00
Felix Lange
225de7ca0a tests: update tests and implement general state tests (#14734)
Tests are now included as a submodule. This should make updating easier
and removes ~60MB of JSON data from the working copy.

State tests are replaced by General State Tests, which run the same test
with multiple fork configurations.

With the new test runner, consensus tests are run as subtests by walking
json files. Many hex issues have been fixed upstream since the last
update and most custom parsing code is replaced by existing JSON hex
types. Tests can now be marked as 'expected failures', ensuring that
fixes for those tests will trigger an update to test configuration. The
new test runner also supports parallel execution and the -short flag.
2017-07-11 13:49:14 +02:00
Péter Szilágyi
bd01cd7183 vendor: update go-stack to fix a sigpanic panic (#14790) 2017-07-11 13:43:33 +02:00
Daniel Sloof
0958770625 internal/web3ext: fix debug.traceBlockFromFile wrapper (#14774)
As stated in the documentation, this method should be called traceBlockFromFile
and not traceBlockByFile. Previously this would result in a 'The method ... does
not exist/is not available' error.
2017-07-10 12:47:50 +02:00
Péter Szilágyi
4f7a38001f Merge pull request #14737 from holiman/txpool_localaccounts
Txpool localaccounts
2017-07-10 12:43:23 +03:00
Emin Mahrt
65f0e905dd README: add missing full stop (#14766) 2017-07-07 16:41:26 +02:00
Nick Johnson
4b8860a7b4 Merge pull request #14723 from Arachnid/downloadrefactor
Refactor downloader to use interfaces instead of callbacks
2017-07-06 12:40:22 +01:00
Péter Szilágyi
34ec9913f6 core: test locals support in txpool queue limits, fix
The commit reworks the transaction pool queue limitation tests
to cater for testing local accounts, also testing the nolocal flag.

In addition, it also fixes a panic if local transactions exceeded
the global queue allowance (no accounts left to drop from) and also
fixes queue eviction to operate on all accounts, not just the one
being updated.
2017-07-06 11:51:59 +03:00
ligi
f25486c3fb core: fix typo in error message (#14763) 2017-07-06 00:19:38 +02:00
Péter Szilágyi
88b4fe7d21 core: handle nolocals during add, exepmt locals from expiration 2017-07-05 17:16:42 +03:00
Péter Szilágyi
5e38f7a664 cmd, core: add --txpool.nolocals to disable local price exemptions 2017-07-05 17:06:05 +03:00
Péter Szilágyi
4c1d0b164b eth: drop leftover from previous nonce protection scheme 2017-07-05 16:53:40 +03:00
Péter Szilágyi
48ee7f9de7 core, eth, les: polish txpool API around local/remote txs 2017-07-05 16:51:55 +03:00
Nick Johnson
fe13949d9d eth/downloader: Doc fixes 2017-07-05 11:13:16 +01:00
Péter Szilágyi
138f26c93a Merge pull request #14749 from karalabe/disable-metro-allprotocols
params: remove redundant consts, disable metro on AllProtocolChanges
2017-07-04 14:11:04 +03:00
Péter Szilágyi
8f12d76a47 params: remove redundant consts, disable metro on AllProtocolChanges 2017-07-04 12:28:58 +03:00
Nick Johnson
be8f8409bc eth/downloader, les, light: Changes in response to review 2017-07-03 15:17:12 +01:00
Martin Holst Swende
a633a2d7ea core: Prevent local tx:s from being discarded 2017-06-30 22:55:10 +02:00
Martin Holst Swende
67aff49822 core: Change local-handling to use sender-account instead of tx hashes 2017-06-30 22:43:26 +02:00
Péter Szilágyi
8c313eed26 consensus, core: EIP 100 polishes, fix chain maker diff
This PR polishes the EIP 100 difficulty adjustment algorithm
to match the same mechanisms as the Homestead was implemented
to keep the code uniform. It also avoids a few memory allocs
by reusing big1 and big2, pulling it out of the common package
and into ethash.

The commit also fixes chain maker to forward the uncle hash
when creating a simulated chain (it wasn't needed until now
so we just skipped a copy there).
2017-06-30 16:42:09 +03:00
Jeffrey Wilcke
c4d28aee9b consensus/ethash: implement Metropolis EIP 100 2017-06-30 16:41:25 +03:00
Péter Szilágyi
a0aa071ca6 Merge pull request #14732 from ethersphere/swarm-remove-ethapi
cmd/swarm: Exit if --ethapi is set
2017-06-30 13:06:52 +03:00
Lewis Marshall
c7041fe145 cmd/swarm: Exit if --ethapi is set
The previous attempt to use --ethapi as a fallback if --ens-api is not
set does not work because --ens-api has a default value, and also
setting --ens-api to "" is the suggested way to disable ENS lookups.

Signed-off-by: Lewis Marshall <lewis@lmars.net>
2017-06-30 10:16:03 +01:00
Péter Szilágyi
41318f3776 Merge pull request #14646 from ethersphere/swarm-ens-api
cmd/swarm: Support using Mainnet for resolving ENS names
2017-06-29 19:09:01 +03:00
Péter Szilágyi
65b96dc4b9 Merge pull request #14727 from holiman/count_txs_right
Fix error when reporting numer of txs in imported blocks
2017-06-29 16:49:43 +03:00
Martin Holst Swende
8bbd598ef4 core: fix an off-by-one when the block import counts blocks 2017-06-29 14:19:10 +02:00
Nick Johnson
ae11545bc5 eth, les: Refactor downloader peer to use structs 2017-06-29 12:49:18 +01:00
Nick Johnson
0550957989 eth, les, light: Refactor downloader to use blockchain interface 2017-06-28 15:58:41 +01:00
Péter Szilágyi
dfd076244d Merge pull request #14718 from holiman/gascalc_fix
core/vm: fix overflow in gas calculation formula
2017-06-28 13:12:13 +03:00
Martin Holst Swende
6dc32e897a core/vm: add benchmarks for some ops and precompiles (#14641) 2017-06-28 11:45:45 +02:00
Martin Holst Swende
e4301564c2 core/vm : fix testcase for gas calculation 2017-06-28 10:47:07 +02:00
Martin Holst Swende
bae7565231 core/vm: fix overflow in gas calculation formula 2017-06-28 09:51:31 +02:00
Felix Lange
9e5f03b6c4 core/state: access trie through Database interface, track errors (#14589)
With this commit, core/state's access to the underlying key/value database is
mediated through an interface. Database errors are tracked in StateDB and
returned by CommitTo or the new Error method.

Motivation for this change: We can remove the light client's duplicated copy of
core/state. The light client now supports node iteration, so tracing and storage
enumeration can work with the light client (not implemented in this commit).
2017-06-27 15:57:06 +02:00
Péter Szilágyi
bb366271fe Merge pull request #14686 from fjl/hexutil-json-type-error
common/hexutil: wrap errors in json.UnmarshalTypeError
2017-06-27 15:02:43 +03:00
Felix Lange
4a741df757 common/hexutil: wrap errors in json.UnmarshalTypeError
This adds type and struct field context to error messages.
Instead of "hex string of odd length" users will now see "json: cannot
unmarshal hex string of odd length into Go struct field SendTxArgs.from
of type common.Address".
2017-06-27 13:15:12 +02:00
RJ Catalano
5421a08d2f accounts/abi: reorganizing package with small fixes (#14610)
* accounts/abi: reorganizing package and some notes and a quick correction of name.

Signed-off-by: RJ Catalano <rj@monax.io>

get rid of some imports

Signed-off-by: RJ Catalano <rj@monax.io>

* accounts/abi: move file names

Signed-off-by: RJ Catalano <rj@monax.io>

* accounts/abi: fix boolean decode function

Signed-off-by: RJ Catalano <rj@monax.io>

* accounts/abi: fix for the array set and for creating a bool

Signed-off-by: RJ Catalano <rj@monax.io>

* accounts/abi: be very very very correct

Signed-off-by: RJ Catalano <rj@monax.io>

* accounts/abi: fix up error message and variable names

Signed-off-by: RJ Catalano <rj@monax.io>

* accounts/abi: take out unnecessary argument in pack method

Signed-off-by: RJ Catalano <rj@monax.io>

* accounts/abi: add bool unpack test and add a panic to readBool function

Signed-off-by: RJ Catalano <rj@monax.io>

* accounts/abi: fix panic message

Signed-off-by: RJ Catalano <rj@monax.io>

* accounts/abi: change from panic to basic error

Signed-off-by: RJ Catalano <rj@monax.io>

* accounts/abi: fix nil to false

Signed-off-by: RJ Catalano <rj@monax.io>

* accounts/abi: fill out type regex tests and fill with the correct type for integers

Signed-off-by: RJ Catalano <rj@monax.io>

* accounts/abi: move packNumbers into pack.go.

Signed-off-by: RJ Catalano <rj@monax.io>

* accounts/abi: separation of the testing suite into appropriately named files.

Signed-off-by: RJ Catalano <rj@monax.io>

* account/abi: change to hex string tests.

Signed-off-by: RJ Catalano <rj@monax.io>

* account/abi: fix up rest of tests to hex

Signed-off-by: RJ Catalano <rj@monax.io>

* accounts/abi: declare bool at the package level

Signed-off-by: RJ Catalano <rj@monax.io>

* accounts/abi: use errors package in the error file.

Signed-off-by: RJ Catalano <rj@monax.io>

* accounts/abi: fix ugly hack and fix error type declaration.

Signed-off-by: RJ Catalano <rj@monax.io>
2017-06-27 11:05:33 +03:00
Addy Yeow
cf611c50b9 build: fix devel golang detection on debian/ubuntu (#14711) 2017-06-27 09:11:41 +02:00
Péter Szilágyi
c008176f9f Merge pull request #14690 from karalabe/faucet-key-reuse
cmd/puppeth: fix key reuse during faucet deploys
2017-06-26 14:03:46 +03:00
Lewis Marshall
f3359d5e58 cmd/swarm: Support using Mainnet for resolving ENS names
Signed-off-by: Lewis Marshall <lewis@lmars.net>
2017-06-26 12:51:33 +02:00
Péter Szilágyi
feb2932706 Merge pull request #14540 from bas-vk/whisper-api
whisperv5: integrate whisper and implement API
2017-06-26 13:44:35 +03:00
Péter Szilágyi
ea1d1825a8 cmd/geth: fix whisper flag group capitalization 2017-06-26 13:40:43 +03:00
Péter Szilágyi
f321ed23fb Merge pull request #14687 from markya0616/unused_events
core: remove unused events
2017-06-26 13:27:39 +03:00
bloonfield
413dc1d265 rpc: fix closure problem in batch processing (#14688)
Demo of the issue: https://play.golang.org/p/EeTLFfppqC
2017-06-26 12:26:22 +03:00
Péter Szilágyi
fdf2184b1e Merge pull request #14697 from homotopycolimit/master
swarm/storage: remove panic on invalid chunk
2017-06-26 12:21:11 +03:00
Aron
3c7338d6c8 Makefile: add make swarm command (#14698)
* Makefile: add make swarm command

* Makefile: minor code formatting polishes
2017-06-26 12:19:53 +03:00
G. Kay Lee
ef8d4711d5 Update README.md (#14701)
README: change heading to "Go Ethereum"
2017-06-26 12:17:06 +03:00
aron
caa00b7e6d swarm/storage: remove panic on invalid chunk 2017-06-25 16:10:54 +02:00
Péter Szilágyi
5603eb9116 cmd/puppeth: fix key reuse during faucet deploys 2017-06-23 13:34:21 +03:00
Felix Lange
78c04c920d params, VERSION: 1.6.7 unstable 2017-06-23 11:28:43 +02:00
Felix Lange
10a45cb59b params: 1.6.6 stable 2017-06-23 11:26:54 +02:00
Péter Szilágyi
cd88f69715 Merge pull request #14596 from markya0616/valid_clique_vote
consensus/clique: choose valid votes
2017-06-23 11:21:38 +03:00
Péter Szilágyi
46d0d04f97 Merge pull request #14685 from karalabe/ethdb-metrics-fail-fix
eth: gracefully error if database cannot be opened
2017-06-23 11:10:29 +03:00
Péter Szilágyi
514659a023 consensus/clique: minor cleanups 2017-06-23 11:06:38 +03:00
Felix Lange
01c9cf1cb5 node: don't return non-nil database on error 2017-06-23 09:56:30 +02:00
Péter Szilágyi
b751cf3901 Merge pull request #14681 from fjl/build-fixup
travis.yml, cmd/swarm: fix Travis CI build
2017-06-23 10:30:27 +03:00
Bas van Kervel
b6e99deee9 whisper: renamed Info#Message to Info#Messages 2017-06-23 09:18:02 +02:00
Péter Szilágyi
d40179f882 eth: gracefully error if database cannot be opened 2017-06-23 10:12:41 +03:00
mark.lin
beb708e6d7 core: remove unused events 2017-06-23 10:39:38 +08:00
Felix Lange
f2c5b2cc1c travis.yml: add fakeroot to launchpad builder 2017-06-22 22:21:59 +02:00
Felix Lange
a4277450b2 cmd/swarm: disable TestCLISwarmUp because it's flaky 2017-06-22 22:17:53 +02:00
Péter Szilágyi
b664bedcf2 Merge pull request #14673 from holiman/txfix
core: add testcase for txpool
2017-06-22 23:01:43 +03:00
Péter Szilágyi
eebde1a2e2 core: ensure transactions correctly drop on pool limiting 2017-06-22 21:03:54 +03:00
Martin Holst Swende
b0b3cf2eeb core: add testcase for txpool 2017-06-22 20:36:07 +03:00
Péter Szilágyi
c98d9b49bf Merge pull request #14677 from karalabe/miner-cli-gasprice
cmd/geth: corrently init gas price for CLI CPU mining
2017-06-22 15:54:24 +03:00
Felix Lange
0042f13d47 eth/downloader: separate state sync from queue (#14460)
* eth/downloader: separate state sync from queue

Scheduling of state node downloads hogged the downloader queue lock when
new requests were scheduled. This caused timeouts for other requests.
With this change, state sync is fully independent of all other downloads
and doesn't involve the queue at all.

State sync is started and checked on in processContent. This is slightly
awkward because processContent doesn't have a select loop. Instead, the
queue is closed by an auxiliary goroutine when state sync fails. We
tried several alternatives to this but settled on the current approach
because it's the least amount of change overall.

Handling of the pivot block has changed slightly: the queue previously
prevented import of pivot block receipts before the state of the pivot
block was available. In this commit, the receipt will be imported before
the state. This causes an annoyance where the pivot block is committed
as fast block head even when state downloads fail. Stay tuned for more
updates in this area ;)

* eth/downloader: remove cancelTimeout channel

* eth/downloader: retry state requests on timeout

* eth/downloader: improve comment

* eth/downloader: mark peers idle when state sync is done

* eth/downloader: move pivot block splitting to processContent

This change also ensures that pivot block receipts aren't imported
before the pivot block itself.

* eth/downloader: limit state node retries

* eth/downloader: improve state node error handling and retry check

* eth/downloader: remove maxStateNodeRetries

It fails the sync too much.

* eth/downloader: remove last use of cancelCh in statesync.go

Fixes TestDeliverHeadersHang*Fast and (hopefully)
the weird cancellation behaviour at the end of fast sync.

* eth/downloader: fix leak in runStateSync

* eth/downloader: don't run processFullSyncContent in LightSync mode

* eth/downloader: improve comments

* eth/downloader: fix vet, megacheck

* eth/downloader: remove unrequested tasks anyway

* eth/downloader, trie: various polishes around duplicate items

This commit explicitly tracks duplicate and unexpected state
delieveries done against a trie Sync structure, also adding
there to import info logs.

The commit moves the db batch used to commit trie changes one
level deeper so its flushed after every node insertion. This
is needed to avoid a lot of duplicate retrievals caused by
inconsistencies between Sync internals and database. A better
approach is to track not-yet-written states in trie.Sync and
flush on commit, but I'm focuing on correctness first now.

The commit fixes a regression around pivot block fail count.
The counter previously was reset to 1 if and only if a sync
cycle progressed (inserted at least 1 entry to the database).
The current code reset it already if a node was delivered,
which is not stong enough, because unless it ends up written
to disk, an attacker can just loop and attack ad infinitum.

The commit also fixes a regression around state deliveries
and timeouts. The old downloader tracked if a delivery is
stale (none of the deliveries were requestedt), in which
case it didn't mark the node idle and did not send further
requests, since it signals a past timeout. The current code
did mark it idle even on stale deliveries, which eventually
caused two requests to be in flight at the same time, making
the deliveries always stale and mass duplicating retrievals
between multiple peers.

* eth/downloader: fix state request leak

This commit fixes the hang seen sometimes while doing the state
sync. The cause of the hang was a rare combination of events:
request state data from peer, peer drops and reconnects almost
immediately. This caused a new download task to be assigned to
the peer, overwriting the old one still waiting for a timeout,
which in turned leaked the requests out, never to be retried.
The fix is to ensure that a task assignment moves any pending
one back into the retry queue.

The commit also fixes a regression with peer dropping due to
stalls. The current code considered a peer stalling if they
timed out delivering 1 item. However, the downloader never
requests only one, the minimum is 2 (attempt to fine tune
estimated latency/bandwidth). The fix is simply to drop if
a timeout is detected at 2 items.

Apart from the above bugfixes, the commit contains some code
polishes I made while debugging the hang.

* core, eth, trie: support batched trie sync db writes

* trie: rename SyncMemCache to syncMemBatch
2017-06-22 15:26:03 +03:00
Péter Szilágyi
d432688886 cmd/geth: corrently init gas price for CLI CPU mining 2017-06-22 14:58:07 +03:00
Péter Szilágyi
58a1e13e6d Merge pull request #14657 from markya0616/refactor_clique
consensus/clique: fix typo and don't need to add snapshot into recents again
2017-06-21 17:58:15 +03:00
Lewis Marshall
a1f3878ec5 swarm/test: add integration test for 'swarm up' (#14353) 2017-06-21 14:54:23 +02:00
Maximilian Meister
a20a02ce0b README: document new config file option (#14348) 2017-06-21 14:53:08 +02:00
Martin Holst Swende
9a44e1035e cmd/evm, core/vm: add --nomemory, --nostack to evm (#14617) 2017-06-21 14:52:31 +02:00
Bas van Kervel
c62d5422bb whisper: use hexutil.UnmarshalFixedText for topic parsing 2017-06-21 12:58:00 +02:00
Péter Szilágyi
9012863ad7 Merge pull request #14667 from fjl/swarm-fuse-cleanup
swarm/fuse: simplify externalUnmount, use subtests
2017-06-21 13:51:00 +03:00
Felföldi Zsolt
a5d08c893d les: code refactoring (#14416)
This commit does various code refactorings:

- generalizes and moves the request retrieval/timeout/resend logic out of LesOdr
  (will be used by a subsequent PR)
- reworks the peer management logic so that all services can register with
  peerSet to get notified about added/dropped peers (also gets rid of the ugly
  getAllPeers callback in requestDistributor)
- moves peerSet, LesOdr, requestDistributor and retrieveManager initialization
  out of ProtocolManager because I believe they do not really belong there and the
  whole init process was ugly and ad-hoc
2017-06-21 12:27:38 +02:00
Bas van Kervel
a4e4c76cb3 whisper: use syncmap for dynamic configuration options 2017-06-21 11:15:47 +02:00
Bas van Kervel
7a11e86442 whisper: move flags from whisper package to utils 2017-06-21 10:49:14 +02:00
Bas van Kervel
4a1d516d78 whisper: renamed errors 2017-06-21 10:32:36 +02:00
Bas van Kervel
b6b0e00198 whisper: fallback to default config if none is specified 2017-06-21 10:24:34 +02:00
Bas van Kervel
3d66ba56ef whisper: remove obsolete api tests 2017-06-21 10:23:45 +02:00
Bas van Kervel
767dc6c73d whisper: remove gencodec override for config 2017-06-21 10:11:54 +02:00
Bas van Kervel
36e7963467 whisper: move ShhClient to its own package 2017-06-21 10:11:46 +02:00
Felix Lange
98e101ef8e swarm/fuse: use subtests 2017-06-21 09:56:58 +02:00
Felix Lange
50c18e6eb8 swarm/fuse: simplify externalUnmount
The code looked for /usr/bin/diskutil on darwin, but it's actually
located in /usr/sbin. Fix that by not specifying the absolute path.
Also remove weird timeout construction and extra whitespace.
2017-06-21 09:56:58 +02:00
Jim McDonald
60e27b51bc ethclient: fix TransactionByHash pending return value. (#14663)
As per #14661 TransactionByHash always returns false for pending.
This uses blockNumber rather than blockHash to ensure that it returns
the correct value for pending and will not suffer side-effects if
eth_getTransactionByHash is fixed in future.
2017-06-21 09:53:50 +02:00
Felix Lange
693d9ccbfb trie: more node iterator improvements (#14615)
* ethdb: remove Set

Set deadlocks immediately and isn't part of the Database interface.

* trie: add Err to Iterator

This is useful for testing because the underlying NodeIterator doesn't
need to be kept in a separate variable just to get the error.

* trie: add LeafKey to iterator, panic when not at leaf

LeafKey is useful for callers that can't interpret Path.

* trie: retry failed seek/peek in iterator Next

Instead of failing iteration irrecoverably, make it so Next retries the
pending seek or peek every time.

Smaller changes in this commit make this easier to test:

* The iterator previously returned from Next on encountering a hash
  node. This caused it to visit the same path twice.
* Path returned nibbles with terminator symbol for valueNode attached
  to fullNode, but removed it for valueNode attached to shortNode. Now
  the terminator is always present. This makes Path unique to each node
  and simplifies Leaf.

* trie: add Path to MissingNodeError

The light client trie iterator needs to know the path of the node that's
missing so it can retrieve a proof for it. NodeIterator.Path is not
sufficient because it is updated when the node is resolved and actually
visited by the iterator.

Also remove unused fields. They were added a long time ago before we
knew which fields would be needed for the light client.
2017-06-20 18:26:09 +02:00
mark.lin
5c53a5be66 consensus/clique: fix typo and don't add snapshot into recents again 2017-06-20 10:20:45 +08:00
Péter Szilágyi
431cf2a1e4 Merge pull request #14635 from necaremus/patch-1
cmd/geth: fixed a minor typo in the comments
2017-06-16 17:11:54 +03:00
necaremus
4f77857f74 cmd/geth: fixed a minor typo in the comments 2017-06-16 15:03:19 +02:00
Alan Chen
fade09a7ff eth: remove les server from protocol manager (#14625) 2017-06-15 15:28:57 +02:00
Bas van Kervel
b58a501673 whisperv5: integrate whisper and add whisper RPC simulator 2017-06-15 11:53:15 +02:00
mark.lin
db6e695002 consensus/clique: choose valid votes 2017-06-14 16:49:33 +08:00
Péter Szilágyi
335abdceb1 Merge pull request #14581 from holiman/byte_opt
core/vm: improve opByte
2017-06-13 14:44:19 +03:00
Péter Szilágyi
732273094c Merge pull request #14604 from bas-vk/mobile-getfrom
mobile: use EIP155 signer for determining sender
2017-06-13 14:09:25 +03:00
Péter Szilágyi
b8793edd83 mobile: add a regression test for signer recovery 2017-06-13 13:39:39 +03:00
Bas van Kervel
eb92522278 mobile: use EIP155 signer for determining sender 2017-06-13 09:13:59 +02:00
S. Matthew English
061889d4ea rlp, trie, contracts, compression, consensus: improve comments (#14580) 2017-06-12 14:45:17 +02:00
Péter Szilágyi
e3dfd55820 Merge pull request #14598 from konradkonrad/fix_makedag
consensus/ethash, cmd/geth: Fix `makedag` epoch
2017-06-12 13:34:26 +03:00
Konrad Feldmeier
2fefe4baa0 consensus: Fix makedag epoch
`geth makedag <blocknumber> <path>` was creating DAGs for
`<blocknumber>/<epoch_length> + 1`, hence
it was impossible to create an epoch 0 DAG.

This fixes the calculations in `consensus/ethash/ethash.go` for
`MakeDataset` and `MakeCache`, and applies `gofmt`.
2017-06-12 11:15:16 +02:00
Martin Holst Swende
ac9865791a core/vm, common/math: Add doc about Byte, fix format 2017-06-08 23:16:05 +02:00
Martin Holst Swende
80f7c6c299 cmd/evm: add --prestate, --sender, --json flags for fuzzing (#14476) 2017-06-07 17:09:08 +02:00
bailantaotao
bc24b7a912 core/types: use Header.Hash for block hashes (#14587)
Fixes #14586
2017-06-07 12:06:25 +02:00
Martin Holst Swende
1496b3aff6 common/math, core/vm: Un-expose bigEndianByteAt, use correct terms for endianness 2017-06-06 18:38:38 +02:00
Lewis Marshall
1e9f86b49e cmd/swarm: fix error handling in 'swarm up' (#14557)
The error returned by client.Upload was previously being ignored due to becoming
out of scope outside the if statement. This has been fixed by instead defining a
function which returns the hash and error (rather than trying to set the hash in
each branch of the if statement).
2017-06-06 09:39:10 +02:00
Péter Szilágyi
65ea913e29 Merge pull request #14583 from ethersphere/core-log-fixes
core: Fix VM error logging
2017-06-06 10:31:27 +03:00
FaceHo
9a0e433b13 accounts: fix spelling error (#14567) 2017-06-06 09:28:47 +02:00
Lewis Marshall
04d2de9119 core: Fix VM error logging
Signed-off-by: Lewis Marshall <lewis@lmars.net>
2017-06-05 23:51:32 +01:00
Martin Holst Swende
f4b5f67ee0 core/vm: improved jumpdest analysis 2017-06-05 09:15:46 +02:00
Martin Holst Swende
3285a0fda3 core/vm, common/math: Add fast getByte for bigints, improve opByte 2017-06-05 08:44:11 +02:00
Péter Szilágyi
6171d01b11 VERSION, params: begin Geth 1.6.6 release cycle 2017-06-01 22:08:19 +03:00
Péter Szilágyi
cf87713dd4 params: mark Geth v1.6.5 stable (Hat Trick) 2017-06-01 21:48:47 +03:00
Péter Szilágyi
ac92d7c411 Merge pull request #14570 from Arachnid/jumpdestanalysis
core/vm: Use a bitmap instead of a map for jumpdest analysis
2017-06-01 21:44:50 +03:00
Nick Johnson
d5a79934dc core/vm: Use a bitmap instead of a map for jumpdest analysis
t push --force
2017-06-01 19:14:05 +01:00
Péter Szilágyi
0424192e61 VERSION, params: begin geth 1.6.5 cycle 2017-06-01 17:37:44 +03:00
Péter Szilágyi
9c2882b2e5 params: Geth 1.6.4 stable (hotfix) 2017-06-01 17:33:17 +03:00
Martin Holst Swende
1a0eb903f1 internal/ethapi: initialize account mutex in lock properly 2017-06-01 17:16:12 +03:00
Lewis Marshall
0036e2a747 swarm/dev: add development environment (#14332)
This PR adds a Swarm development environment which can be run in a
Docker container and provides scripts for building binaries and running
Swarm clusters.
2017-06-01 12:52:18 +02:00
Péter Szilágyi
727eadacca VERSION, params: begin Geth 1.6.4 release cycle 2017-06-01 11:43:57 +03:00
Péter Szilágyi
99cba96f26 params: release Geth 1.6.3 - Covfefe 2017-06-01 11:41:48 +03:00
Péter Szilágyi
f272879e5a Merge pull request #14565 from karalabe/relax-privkey-checks
accounts/keystore, crypto: don't enforce key checks on existing keyfiles
2017-06-01 11:14:11 +03:00
Péter Szilágyi
72dd51e25a accounts/keystore, crypto: don't enforce key checks on existing keyfiles 2017-06-01 11:11:06 +03:00
Péter Szilágyi
799a469000 Merge pull request #14561 from karalabe/txpool-perf-fix
core: reduce transaction reorganization overhead
2017-06-01 10:33:47 +03:00
Péter Szilágyi
f4d81178d8 Merge pull request #14563 from karalabe/ethstats-reduce-traffic-2
ethstats: reduce ethstats traffic by trottling reports
2017-06-01 10:33:21 +03:00
Péter Szilágyi
310d2e7ef4 Merge pull request #14564 from karalabe/fix-1.6-docker
cotnainers/docker: fix the legacy alpine image before dropping
2017-06-01 10:33:03 +03:00
Péter Szilágyi
3ecde4e2aa cotnainers/docker: fix the legacy alpine image before dropping 2017-06-01 00:21:47 +03:00
Péter Szilágyi
a355b401db ethstats: reduce ethstats traffic by trottling reports 2017-06-01 00:16:19 +03:00
Péter Szilágyi
cba33029a8 core: only reorg changed account, not all 2017-05-31 23:26:24 +03:00
Péter Szilágyi
9702badd83 core: don't uselessly recheck transactions on dump 2017-05-31 21:29:50 +03:00
Felix Lange
067dc2cbf5 params, VERSION: 1.6.3 unstable 2017-05-31 05:47:35 +02:00
Felix Lange
65979770e6 params: 1.6.2 stable 2017-05-31 05:45:13 +02:00
Péter Szilágyi
41bdf49eed Merge pull request #14516 from holiman/noncefixes
internal/ethapi: add mutex around signing + nonce assignment
2017-05-30 18:15:57 +03:00
Martin Holst Swende
ea11f7dd7a internal/ethapi: add mutex around signing + nonce assignment
This prevents concurrent assignment of identical nonces when automatic
assignment is used.
2017-05-30 16:43:38 +02:00
Péter Szilágyi
8df24760d7 Merge pull request #14553 from karalabe/puppeth-key-check
cmd/puppeth: fix improper key validation for remotes
2017-05-30 14:50:48 +03:00
Péter Szilágyi
71814bf6c4 Merge pull request #14547 from karalabe/txpool-gas-decrease
core: check for gas limit exceeding txs too on new block
2017-05-30 14:50:27 +03:00
Péter Szilágyi
ec1700600a cmd/puppeth: fix improper key validation for remotes 2017-05-30 14:24:01 +03:00
Péter Szilágyi
b0f30b0b37 Merge pull request #14545 from karalabe/clique-cache-signatures
consensus/clique: cache block signatures for fast checks
2017-05-30 12:56:57 +03:00
Péter Szilágyi
e96f2981e2 Merge pull request #14548 from karalabe/ethstats-no-txs
ethstats: don't report transaction content, only hash
2017-05-30 12:54:00 +03:00
Péter Szilágyi
09d59da3a1 ethstats: don't report transaction content, only hash 2017-05-30 02:15:40 +03:00
Péter Szilágyi
280609c99b core: check for gas limit exceeding txs too on new block 2017-05-30 00:31:37 +03:00
Péter Szilágyi
309da541de consensus/clique: cache block signatures for fast checks 2017-05-29 22:07:02 +03:00
Péter Szilágyi
dd06c85843 Merge pull request #14523 from karalabe/txpool-cli-flags
cmd, core, eth: configurable txpool parameters
2017-05-29 11:42:48 +03:00
Péter Szilágyi
ae40d51410 Merge pull request #14539 from karalabe/txpool-inspec-nonces
internal/ethapi: fix tx nonces in pool inspect/content
2017-05-29 11:37:34 +03:00
Péter Szilágyi
b865fad888 Merge pull request #14537 from karalabe/setgasprice-durning-nomine
eth: update default gas price when not mining too
2017-05-29 11:37:26 +03:00
Péter Szilágyi
afb17cf071 Merge pull request #14524 from karalabe/noimport-during-fastsync
eth: don't import propagated blocks during fastsync
2017-05-29 11:37:08 +03:00
Péter Szilágyi
08959bbc70 cmd, core, eth: configurable txpool parameters 2017-05-29 11:29:46 +03:00
Péter Szilágyi
673c92db6b internal/ethapi: fix tx nonces in pool inspect/content 2017-05-29 11:17:31 +03:00
Péter Szilágyi
c2a494c743 eth: update default gas price when not mining too 2017-05-29 10:21:34 +03:00
Péter Szilágyi
afdd23b5ca eth: don't import propagated blocks during fastsync 2017-05-26 16:04:12 +03:00
Nick Johnson
cb809c03da Merge pull request #14517 from Ali92hm/master
Improved Dockerfile?
2017-05-26 10:54:41 +01:00
Ali92hm
45421d3130 dockerfile: expose 30303/udp 2017-05-25 12:34:29 -07:00
Ali92hm
115e7d71cc dockerfile: cp geth to /usr/local/bin 2017-05-25 12:34:28 -07:00
Péter Szilágyi
dd5ed01f3b Merge pull request #14514 from karalabe/go1.8.3
travis, appveyor: bump to Go 1.8.3, Android NDK 14b
2017-05-25 17:42:40 +03:00
Péter Szilágyi
b7ff0d42e3 Merge pull request #14515 from karalabe/golint-tooooolong
core: fix various golint warnings and errors
2017-05-25 17:40:51 +03:00
Péter Szilágyi
c98bce709c core: fix minor accidental typos and comment errors 2017-05-25 17:22:45 +03:00
changhong
17f0b11942 core: typos and comments improve
1. fix typos
2. methods recevier of struct should be same
3. comments improve

(cherry picked from commit 1ba979539582a00b7fd1a7c8a37a6852e59eac0d)
2017-05-25 17:14:33 +03:00
Péter Szilágyi
6231edcbab travis, appveyor: bump to Go 1.8.3, Android NDK 14b 2017-05-25 17:05:33 +03:00
Péter Szilágyi
07aae19e5d Merge pull request #14446 from bas-vk/cli-help
Rewrite templates for (sub)commands help section
2017-05-25 13:58:55 +03:00
Péter Szilágyi
b596b4ba5b Merge pull request #14513 from obscuren/allocate-stack
core/vm: allocate stack to 1024
2017-05-25 13:22:56 +03:00
Or Rikon
8b1e4c4c5e README: corrected attach example (#14512) 2017-05-25 13:22:26 +03:00
Jeffrey Wilcke
846d091bd2 core/vm: allocate stack to 1024
Pre allocate the stack to 1024 optimising stack pushing, reducing calls
to runtime.makeslice and runtime.mallocgc
2017-05-25 11:37:04 +02:00
Bas van Kervel
a346aedb90 cmd/geth: reorganise help section for new cli flag handling 2017-05-25 09:15:51 +02:00
Felix Lange
ef25b826e6 Merge pull request #14502 from karalabe/mobile-import-ecdsa
Enforce 256 bit keys on raw import, support raw mobile imports
2017-05-24 22:30:47 +02:00
Felix Lange
261b3e2351 Merge pull request #14336 from obscuren/metropolis-preparation
consensus, core/*, params: metropolis preparation refactor
2017-05-24 22:28:22 +02:00
Péter Szilágyi
344f25fb3e Merge pull request #14507 from karalabe/faucet-misspell
cmd/faucet: fix a few typos
2017-05-24 17:14:21 +03:00
Péter Szilágyi
1afaea4bfe cmd/faucet: fix a few typos 2017-05-24 17:12:07 +03:00
Felix Lange
11cf5b7ead consensus/ethash: fix TestCalcDifficulty 2017-05-24 15:40:54 +02:00
Felix Lange
069cb661c3 crypto/bn256: fix go vet false positive
Also add the package to the license tool ignore list.
2017-05-24 15:40:26 +02:00
Péter Szilágyi
3b8915e387 Merge pull request #14504 from bas-vk/wallet-import
cmd/geth: reintroduce wallet import subcommand
2017-05-24 13:00:22 +03:00
Bas van Kervel
437ceaa9be cmd/geth: reintroduce wallet import subcommand 2017-05-23 17:45:26 +02:00
Péter Szilágyi
136f78ff0a mobile: support importing flat ecdsa keyst too 2017-05-23 14:58:28 +03:00
Péter Szilágyi
aa73420207 accounts/keystore, crypto: enforce 256 bit keys on import 2017-05-23 14:58:03 +03:00
Péter Szilágyi
3556962053 Merge pull request #14501 from sqli-nantes/master
mobile: manage FilterQuery enabling contract events subscription
2017-05-23 13:47:22 +03:00
Jeffrey Wilcke
e1e87d8b1a common: fixed byte padding functions
Byte padding function should return the given slice if the length is
smaller or equal rather than *only* smaller than.

This fix improves almost all EVM push operations.
2017-05-23 11:24:07 +02:00
Nicolas Guillaume
30cc1c3bf0 mobile: Add management methods to {Addresses,Topics,Hashes} structures 2017-05-23 11:16:25 +02:00
Jeffrey Wilcke
10582a97ca core/vm: expose intpool to stack dup method
Improve the duplication method of the stack to reuse big ints by passing
in an existing integer pool.
2017-05-23 10:52:11 +02:00
Jeffrey Wilcke
e16a7ef60f core/vm: capped int pool 2017-05-23 10:40:09 +02:00
Jeffrey Wilcke
a816e75662 core/vm: improved push instructions
Improved push instructions by removing unnecessary big int allocations
and by making it int instead of big.Int
2017-05-23 10:39:53 +02:00
Jeffrey Wilcke
3ee75bec9f cmd/evm: added mem/cpu profiling 2017-05-23 10:17:55 +02:00
Valentin Wüstholz
04b668b232 core/vm: improve error message for invalid opcodes 2017-05-22 17:48:07 +02:00
Nicolas Guillaume
da636c53d6 mobile: Allows mobile clients to create custom FilterQueries 2017-05-22 17:12:36 +02:00
Lewis Marshall
2a41e76b39 swarm/api: Fix adding paths which exist as manifests (#14482)
Signed-off-by: Lewis Marshall <lewis@lmars.net>
2017-05-22 08:57:03 +02:00
Lewis Marshall
4a2c17b1ab cmd/swarm: Add --httpaddr flag (#14475)
Fixes #14474.

Signed-off-by: Lewis Marshall <lewis@lmars.net>
2017-05-22 08:56:40 +02:00
Dave Conroy
bc75351edf README: fixing typo in documentation (#14493) 2017-05-22 08:47:27 +02:00
Ali Hajimirza
33b158e0ed discover: Changed Logging from Debug to Info (#14485) 2017-05-20 13:10:59 +02:00
Martin Holst Swende
83721a95ce internal/ethapi: lock when auto-filling transaction nonce (#14483)
More context in the bug This solves the problems of transactions being
submitted simultaneously, and getting the same nonce, due to the gap (due to
signing) between nonce-issuance and nonce-update. With this PR, a lock will
need to be acquired whenever a nonce is used, and released when the transaction
is submitted or errors out.
2017-05-19 15:03:56 +02:00
Jeffrey Wilcke
e7119ce12d core/state: fixed (self)destructed objects
Add the object to the list of destructed objects during a selfdestruct /
suicide operation and also remove it from the list once the journal
reverts.
2017-05-18 09:05:58 +02:00
Jeffrey Wilcke
a5f6a1cb7c consensus, core, core/vm, parems: review fixes 2017-05-18 09:05:58 +02:00
Jeffrey Wilcke
e6aff513db core/types: corrected abstract signing address 2017-05-18 09:05:58 +02:00
Jeffrey Wilcke
8a4c1fb799 consensus/ethash: set time to current instead of parent time 2017-05-18 09:05:58 +02:00
Jeffrey Wilcke
10a57fc3d4 consensus, core/*, params: metropolis preparation refactor
This commit is a preparation for the upcoming metropolis hardfork. It
prepares the state, core and vm packages such that integration with
metropolis becomes less of a hassle.

* Difficulty calculation requires header instead of individual
  parameters
* statedb.StartRecord renamed to statedb.Prepare and added Finalise
  method required by metropolis, which removes unwanted accounts from
  the state (i.e. selfdestruct)
* State keeps record of destructed objects (in addition to dirty
  objects)
* core/vm pre-compiles may now return errors
* core/vm pre-compiles gas check now take the full byte slice as argument
  instead of just the size
* core/vm now keeps several hard-fork instruction tables instead of a
  single instruction table and removes the need for hard-fork checks in
  the instructions
* core/vm contains a empty restruction function which is added in
  preparation of metropolis write-only mode operations
* Adds the bn256 curve
* Adds and sets the metropolis chain config block parameters (2^64-1)
2017-05-18 09:05:58 +02:00
Péter Szilágyi
a2f23ca9b1 cmd, core, eth, miner: remove txpool gas price limits (#14442) 2017-05-16 21:07:27 +02:00
Felix Lange
e20158176d les: fix goroutine leak in execQueue (#14480)
execQueue used an atomic counter to track whether the queue had been
closed, but the checking the counter didn't happen because the queue was
blocked on its channel.

Fix it by using a condition variable instead of sync/atomic. I tried an
implementation based on channels first, but it was hard to make it
reliable.

quit now waits for the queue loop to exit.
2017-05-16 20:56:02 +02:00
Péter Szilágyi
ef7b9fb7d0 cmd/puppeth: v4/v5 boot separation, signer gas configs (#14453) 2017-05-13 02:03:56 +02:00
Lewis Marshall
b0d0fafd68 swarm/api: fix error reporting in api.Resolve (#14464)
Previously, resolve errors were being swallowed and the returned error
was a generic "not a content hash" which isn't helpful.

This updates the Resolve function to fail fast rather than only
returning an error at the end, and also adds test coverage.
2017-05-13 02:02:25 +02:00
Péter Szilágyi
90c7155ef4 mobile: accept nil for chainid as homestead signing (#14463) 2017-05-13 02:00:39 +02:00
Koustubh Sinkar
df4e7eccf5 containers/vagrant: add support for CentOS (#14380)
CentOS has been added as a multi-machine option to the Vagrant script.
Ubuntu is still the default option. For starting the CentOS machine, use:

   vagrant up centos
2017-05-13 01:59:03 +02:00
Péter Szilágyi
7c707d14d1 Merge pull request #14454 from karalabe/mobile-surface-txrlp
mobile: add toString & rlp/json encoding for protocol types
2017-05-11 17:53:15 +03:00
Péter Szilágyi
953a995116 mobile: add toString & rlp/json encoding for protocol types 2017-05-11 17:25:40 +03:00
Péter Szilágyi
c5840ce12f Merge pull request #14452 from karalabe/dual-bootnodes
cmd, node: support different bootnodes, fix default light port
2017-05-10 21:00:22 +03:00
Péter Szilágyi
3b3989de6a cmd, node: support different bootnodes, fix default light port 2017-05-10 17:51:52 +03:00
bas-vk
40976ea1a0 README: update attach instructions for testnet users (#14448) 2017-05-09 16:06:07 +02:00
Péter Szilágyi
d18b509e40 Merge pull request #14441 from karalabe/receipt-data-regression
core: fix processing regression during receipt import
2017-05-08 12:37:01 +03:00
Péter Szilágyi
2e4d23a793 Merge pull request #14427 from zsfelfoldi/compress
common/bitutil: added data compression algorithm
2017-05-08 12:30:35 +03:00
Péter Szilágyi
60293820b7 core: fix processing regression during receipt import 2017-05-08 12:09:35 +03:00
Péter Szilágyi
82defe5c56 common/compress: internalize encoders, add length wrappers 2017-05-08 11:38:25 +03:00
Péter Szilágyi
dd483d7d0d Merge pull request #14440 from karalabe/cocoapods-confirm-fix
travis: adapt build script to new travis VM settings
2017-05-08 11:26:35 +03:00
Péter Szilágyi
dddebe469b travis: adapt build script to new travis VM settings 2017-05-08 11:22:08 +03:00
Péter Szilágyi
cf19586cfb common/bitutil: fix decompression corner cases; fuzz, test & bench 2017-05-06 19:06:17 +03:00
Zsolt Felfoldi
fd5d51c9ae common/bitutil: added data compression algorithm 2017-05-05 20:24:48 +02:00
Péter Szilágyi
2ec5cf1673 Merge pull request #14423 from karalabe/bitutil
common/bitutil, consensus/ethash: reusable bitutil package
2017-05-05 18:23:08 +03:00
Péter Szilágyi
36a800a1d2 common/bitutil, consensus/ethash: reusable bitutil package 2017-05-05 16:00:11 +03:00
Péter Szilágyi
93832b633e VERSION, params: begin 1.6.2 release cycle 2017-05-04 14:34:59 +03:00
Péter Szilágyi
021c3c2816 params: release Geth 1.6.1, Deripors of Ohratuu 2017-05-04 14:11:45 +03:00
Péter Szilágyi
ff2c966e7f Merge pull request #14418 from karalabe/rinkeby-flag
cmd, core, params: add --rinkeby flag for fast connectivity
2017-05-04 13:54:02 +03:00
Martin Holst Swende
14cc40a31a Hive-test fixes (#14419)
* core: Fix for consensus test gasLimit > 2^63-1 https://github.com/ethereum/tests/blob/develop/BlockchainTests/bcInvalidHeaderTest.json#L238

* core: fix testcase for uncle gasUsage > gasLimit : https://github.com/ethereum/tests/blob/develop/BlockchainTests/EIP150/bcUncleHeaderValiditiy.json#L986

* math/big: rename TTM63m1 -> MaxBig63, + go fmt

* core: documentation
2017-05-04 13:53:42 +03:00
Péter Szilágyi
881df0e629 Merge pull request #14413 from bas-vk/cli-chain-mngt
Migrate remaining flags/command to new style
2017-05-04 13:31:09 +03:00
Péter Szilágyi
1c2f6f5597 Merge pull request #14402 from karalabe/tiered-faucet
cmd/faucet, cmd/puppeth: support multi-tiered faucet
2017-05-04 13:07:41 +03:00
Péter Szilágyi
d51a9fd6b7 cmd, core, params: add --rinkeby flag for fast connectivity 2017-05-04 12:36:20 +03:00
Péter Szilágyi
464f30d301 cmd/faucet: fix period to days conversion 2017-05-04 11:43:18 +03:00
Péter Szilágyi
8a28408616 cmd/faucet, cmd/puppeth: support multi-tiered faucet 2017-05-04 11:42:43 +03:00
Péter Szilágyi
e1dc7ece62 Merge pull request #14414 from gluk256/77_release
build: wnode added to the build configuration
2017-05-03 16:45:39 +03:00
Vlad
99127ff2e7 build: wnode added to the build configuration 2017-05-03 15:36:02 +02:00
Bas van Kervel
81d6ec908a cmd/geth: migrate dumpconfig command/flags 2017-05-03 14:39:07 +02:00
Bas van Kervel
38b4fc8069 cmd/geth: migrate bug command/flags 2017-05-03 14:33:08 +02:00
Bas van Kervel
11ab73f6d8 cmd/geth: migrate metric command/flags 2017-05-03 14:33:08 +02:00
Bas van Kervel
18e9cb1187 cmd/geth: reorganise misc commands/flags 2017-05-03 14:33:07 +02:00
Bas van Kervel
502a2bd69f cmd/geth: reorganise console/attach commands/flags 2017-05-03 14:33:07 +02:00
Bas van Kervel
8b517d7f00 cmd/geth: reorganise chain commands/flags 2017-05-03 14:33:03 +02:00
Péter Szilágyi
cad071009d Merge pull request #14412 from karalabe/init-both-chains
cmd/geth, cmd/utils: init/removedb on light/full dbs simultaneously
2017-05-03 14:32:24 +03:00
Péter Szilágyi
181a3309df cmd/geth, cmd/utils: init/removedb on light/full dbs simultaneously 2017-05-03 13:35:47 +03:00
Péter Szilágyi
02fa3e3179 Merge pull request #14411 from karalabe/clique-double-sign
consensus/clique: fix overflow on recent signer check around genesis
2017-05-03 11:45:36 +03:00
Péter Szilágyi
a8eafcdc0e Merge pull request #13885 from bas-vk/rpc_generic_pubsub
rpc: support subscriptions under custom namespaces
2017-05-03 11:41:07 +03:00
Péter Szilágyi
bcf2465b0b consensus/clique: fix overflow on recent signer check around genesis 2017-05-03 11:01:06 +03:00
nicky g
c3dc01caf1 README: add config to genesis.json (#14373)
README: add config to genesis.json
2017-05-03 09:10:36 +02:00
Péter Szilágyi
cf4faa491a cmd/puppeth, vendor: update ssh, manage server keys (#14398) 2017-05-03 09:09:34 +02:00
Péter Szilágyi
59966255ad Merge pull request #14407 from karalabe/ethash-generation-race
consensus/ethash: fix a timestamp update race
2017-05-03 09:17:01 +03:00
Péter Szilágyi
f8acc0af7e consensus/ethash: fix a timestamp update race 2017-05-02 16:48:36 +03:00
Péter Szilágyi
02a29060d2 Merge pull request #14406 from karalabe/downloader-sensitive-code
eth/downloader: fix a potential issue against future refactors
2017-05-02 16:31:31 +03:00
Péter Szilágyi
0255ed6335 Merge pull request #14403 from fjl/console-number
console: avoid float64 when remarshaling parameters
2017-05-02 16:24:34 +03:00
Péter Szilágyi
96c2ab22e0 eth/downloader: fix a potential issue against future refactors 2017-05-02 16:14:35 +03:00
Péter Szilágyi
5494e6e7ab Merge pull request #14399 from bas-vk/rpc-cors
rpc: disable CORS if user has not specified a custom config
2017-05-02 15:53:47 +03:00
Felix Lange
32db571681 console: avoid float64 when remarshaling parameters
With Go 1.7, encoding/json marshals float64 using scientific
notation ("10e+6"), but Go's int and *big.Int decoders don't accept such
numbers. This change disables use of float64 to avoid the problem.
2017-05-02 13:42:55 +02:00
Bas van Kervel
a6af56fa4d rpc: disable CORS if user has not specified custom config 2017-05-02 11:14:40 +02:00
Péter Szilágyi
5884606ec3 Merge pull request #14388 from bas-vk/cli-account-mngt
cmd/geth: reorganise account/wallet command/flags
2017-05-02 10:05:20 +03:00
Bas van Kervel
f6c0f76cc5 cmd/geth: reorganise account/wallet command/flags 2017-04-28 14:01:54 +02:00
gluk256
f9be9a2302 whisper: switching to v5 + minor refactoring (#14387) 2017-04-28 11:57:15 +02:00
gluk256
95f0bd0acf whisper: message format refactoring (#14335)
* whisper: salt removed from AES encryption
* whisper: padding format updated
* whisper: padding test added
* whisper: padding refactored, tests fixed
* whisper: padding test updated
* whisper: wnode bugfix
* whisper: send/receive protocol updated
* whisper: minor update
* whisper: bugfix in test
* whisper: updated parameter names and comments
* whisper: functions renamed
* whisper: minor refactoring
2017-04-26 21:05:48 +02:00
Péter Szilágyi
8dce4c283d Merge pull request #14379 from farazdagi/fix/deadlock-in-node-wait
node: fixes deadlock on Wait()
2017-04-25 18:47:55 +03:00
Péter Szilágyi
fff16169c6 Merge pull request #14377 from karalabe/unify-network-ids
cmd, eth, les, mobile: make networkid uint64 everywhere
2017-04-25 18:30:56 +03:00
Victor Farazdagi
5f7eb78918 node: fixes deadlock on Wait() 2017-04-25 18:04:02 +03:00
Péter Szilágyi
e61035c5a3 cmd, eth, les, mobile: make networkid uint64 everywhere 2017-04-25 14:53:50 +03:00
Bas van Kervel
37e3f561f1 rpc: support subscriptions under custom namespaces 2017-04-25 11:13:22 +02:00
Péter Szilágyi
ba3bcd16a6 Merge pull request #14350 from fjl/trie-iterator-skip-2
eth: add debug_storageRangeAt
2017-04-25 11:10:20 +03:00
Felix Lange
207bd7d2cd eth: add debug_storageRangeAt 2017-04-25 02:14:32 +02:00
Felix Lange
4047ccad2f trie: add start key to NodeIterator constructors
The 'step' method is split into two parts, 'peek' and 'push'. peek
returns the next state but doesn't make it current.

The end of iteration was previously tracked by setting 'trie' to nil.
End of iteration is now tracked using the 'iteratorEnd' error, which is
slightly cleaner and requires less code.
2017-04-25 02:14:31 +02:00
Felix Lange
a13e920af0 trie: clean up iterator constructors
Make it so each iterator has exactly one public constructor:

- NodeIterators can be created through a method.
- Iterators can be created through NewIterator on any NodeIterator.
2017-04-25 02:14:31 +02:00
Felix Lange
f958d7d482 trie: rework and document key encoding
'encode' and 'decode' are meaningless because the code deals with three
encodings. Document the encodings and give a name to each one.
2017-04-25 02:14:31 +02:00
Péter Szilágyi
7cc6abeef6 Merge pull request #14372 from bas-vk/bootnodegenkey
cmd/bootnode: stop after generating/writing nodekey
2017-04-24 19:31:23 +03:00
bas-vk
54253aae4c internal/ethapi: return empty arrays instead of null (#14374)
* internal/ethapi: return empty arrays instead of null

* internal/ethapi: minor comments to avoid future regressions
2017-04-24 15:00:30 +03:00
Péter Szilágyi
09aabaea9f Merge pull request #14364 from fjl/core-remove-split-stat-ty
core, light: delete SplitStatTy, ChainSplitEvent (unused)
2017-04-24 11:43:22 +03:00
Bas van Kervel
ecec454e92 cmd/bootnode: stop after generating/writing nodekey 2017-04-24 10:40:20 +02:00
Felix Lange
7b2fc0643f core, light: delete SplitStatTy, ChainSplitEvent (unused) 2017-04-21 18:56:00 +02:00
Péter Szilágyi
d2fda73ad7 Merge pull request #14339 from karalabe/faucet-block-banned-users
cmd/faucet: further user validations and bot protection
2017-04-20 17:42:36 +03:00
Péter Szilágyi
5aa21d8b32 Merge pull request #14357 from karalabe/nousb-flag
cmd, node: add --nousb and node.Config.NoUSB to disable hw wallets
2017-04-20 17:40:57 +03:00
Péter Szilágyi
9fc90b6747 Merge pull request #14358 from karalabe/wrong-genesis-description
core: make genesis incompatibility error more explicit
2017-04-20 15:17:59 +03:00
Péter Szilágyi
edef84da2b core: make genesis incompatibility error more explicit 2017-04-20 14:14:13 +03:00
Péter Szilágyi
6430e672c9 cmd, node: add --nosub and node.Config.NoUSB to disable hw wallets 2017-04-20 14:01:51 +03:00
Felix Lange
a31d268b76 trie: remove Key in MissingNodeError
The key was constructed from nibbles, which isn't possible for all
nodes. Remove the only use of Key in LightTrie by always retrying with
the original key that was looked up.
2017-04-18 14:52:11 +02:00
Péter Szilágyi
e353f9c088 Merge pull request #13886 from bas-vk/rpc_blocknum_parse
rpc: improve BlockNumber unmarshal parsing
2017-04-18 14:55:53 +03:00
Péter Szilágyi
af48a331bf cmd: integrate invisible recaptcha into puppeth 2017-04-16 20:53:27 +03:00
Péter Szilágyi
80e74fc1e0 cmd/faucet: fix websocket double close/reopen 2017-04-16 20:39:42 +03:00
Péter Szilágyi
03dffe3efd cmd/faucet: add optional recaptcha validation support 2017-04-16 19:49:40 +03:00
Péter Szilágyi
cb3f5f8b93 cmd/faucet: double check user against the GH website 2017-04-16 18:49:06 +03:00
Péter Szilágyi
c7a4d9cf8a VERSION, params: begin 1.6.1 release cycle 2017-04-14 13:43:10 +03:00
Péter Szilágyi
facc47cb5c params: release Geth 1.6.0, Puppeth Master 2017-04-14 13:07:07 +03:00
Péter Szilágyi
6876e92f8d Merge remote-tracking branch 'fjl/license-update-1.6' 2017-04-14 12:33:10 +03:00
Péter Szilágyi
15f32a8d57 build: disable misspell, upstream bug prevents builds 2017-04-14 12:24:01 +03:00
Péter Szilágyi
6d359dbcc6 eth: revert accidental ethash cache dir change 2017-04-14 11:35:17 +03:00
Péter Szilágyi
65e1095c3f consensus/ethash: close mmap before rename, windows limitation 2017-04-14 11:32:47 +03:00
Felix Lange
0cc492f815 all: update license information 2017-04-14 10:29:00 +02:00
Péter Szilágyi
ee05cc4a27 Merge pull request #14327 from karalabe/flag-group-fixes
cmd/geth: update flag groups in the geth command usage
2017-04-13 17:28:09 +03:00
Péter Szilágyi
97f38ce4d6 cmd/geth: update flag groups in the geth command usage 2017-04-13 17:12:37 +03:00
Péter Szilágyi
732b75325c Merge pull request #3786 from fjl/compiler-metadata
common/compiler: add metadata output for solc > 0.4.6
2017-04-13 16:26:38 +03:00
Bas van Kervel
7d0ac94809 rpc: improve BlockNumber unmarshal parsing 2017-04-13 13:20:19 +02:00
Péter Szilágyi
906378a32e Merge pull request #14326 from karalabe/launchpad-go-1.8
build: bump launchpad builds to Go 1.8.1
2017-04-13 14:18:53 +03:00
Péter Szilágyi
cc5654cb59 build: bump launchpad builds to Go 1.8.1 2017-04-13 14:11:33 +03:00
Nick Johnson
b35aa21f9f trie: implement unionIterator (#14312) 2017-04-13 11:14:19 +02:00
holisticode
409b61fe3c swarm/api: better name resolver handling (#3754)
Fixes #3608
2017-04-13 11:06:19 +02:00
Péter Szilágyi
d5d910e8b6 Merge pull request #14323 from fjl/ethash-verify-headers-fix
consensus/ethash: simplify concurrency in VerifyHeaders
2017-04-13 10:32:28 +03:00
bas-vk
5e29f4be93 cmd/utils, node: remove unused solc references and improve RPC config (#14324)
Currently http cors and websocket origins are a comma separated string in the
config object. These are replaced with string arrays that are more expressive in
case of a config file.
2017-04-12 23:04:14 +02:00
Felix Lange
b27589517a consensus/ethash: simplify concurrency in VerifyHeaders
This change removes a convoluted use of sync/atomic from VerifyHeaders.
It also fixes the annoying error about future blocks.
2017-04-12 19:38:30 +02:00
Felix Lange
2870496124 core: don't import genesis block in TestDAOForkRangeExtradata
The genesis block doesn't have a valid ancestor.
2017-04-12 18:47:47 +02:00
Péter Szilágyi
43671067fb Merge pull request #14320 from karalabe/rlpdump-single-flag
cmd/rlpdump: support dumping only the first entity
2017-04-12 18:57:37 +03:00
Felix Lange
30d706c35e cmd/geth: add --config file flag (#13875)
* p2p/discover, p2p/discv5: add marshaling methods to Node

* p2p/netutil: make Netlist decodable from TOML

* common/math: encode nil HexOrDecimal256 as 0x0

* cmd/geth: add --config file flag

* cmd/geth: add missing license header

* eth: prettify Config again, fix tests

* eth: use gasprice.Config instead of duplicating its fields

* eth/gasprice: hide nil default from dumpconfig output

* cmd/geth: hide genesis block in dumpconfig output

* node: make tests compile

* console: fix tests

* cmd/geth: make TOML keys look exactly like Go struct fields

* p2p: use discovery by default

This makes the zero Config slightly more useful. It also fixes package
node tests because Node detects reuse of the datadir through the
NodeDatabase.

* cmd/geth: make ethstats URL settable through config file

* cmd/faucet: fix configuration

* cmd/geth: dedup attach tests

* eth: add comment for DefaultConfig

* eth: pass downloader.SyncMode in Config

This removes the FastSync, LightSync flags in favour of a more
general SyncMode flag.

* cmd/utils: remove jitvm flags

* cmd/utils: make mutually exclusive flag error prettier

It now reads:

   Fatal: flags --dev, --testnet can't be used at the same time

* p2p: fix typo

* node: add DefaultConfig, use it for geth

* mobile: add missing NoDiscovery option

* cmd/utils: drop MakeNode

This exposed a couple of places that needed to be updated to use
node.DefaultConfig.

* node: fix typo

* eth: make fast sync the default mode

* cmd/utils: remove IPCApiFlag (unused)

* node: remove default IPC path

Set it in the frontends instead.

* cmd/geth: add --syncmode

* cmd/utils: make --ipcdisable and --ipcpath mutually exclusive

* cmd/utils: don't enable WS, HTTP when setting addr

* cmd/utils: fix --identity
2017-04-12 17:27:23 +03:00
Péter Szilágyi
b57680b0b2 Merge pull request #14322 from karalabe/puppeth-new-configs
cmd/puppeth: format dashboard html, update syncmode flags
2017-04-12 17:26:57 +03:00
Péter Szilágyi
e418bc67d2 cmd/puppeth: format dashboard html, update syncmode flags 2017-04-12 17:07:34 +03:00
Péter Szilágyi
a7b9e484d0 consensus, core, ethstats: use engine specific block beneficiary (#14318)
* consensus, core, ethstats: use engine specific block beneficiary

* core, eth, les, miner: use explicit beneficiary during mining
2017-04-12 16:38:31 +03:00
Péter Szilágyi
6b7ae4e751 consensus/clique, internal/web3ext: support hash based API queries (#14321)
* consensus/clique, internal/web3ext: support hash based API queries

* consensus/clique: make RPC return types public
2017-04-12 15:37:10 +03:00
Péter Szilágyi
436acb4f75 cmd/rlpdump: support dumping only the first entity 2017-04-12 14:27:34 +03:00
Nick Johnson
050ceff1ae Merge pull request #14311 from Arachnid/tracing
internal/ethapi: Add support for fetching information about the current call in JS traces
2017-04-12 08:56:27 +01:00
Péter Szilágyi
a0cd77e833 build: create deb source for Ubuntu Zesty (#14316) 2017-04-12 02:07:00 +02:00
Zahoor Mohamed
1d1d988aa7 swarm/api: FUSE read-write support (#13872)
- Moved fuse related code in a new package, swarm/fuse
- Added write support
  - Create new files
  - Delete existing files
  - Append to files (with limitations)
- More test coverage
2017-04-12 02:06:02 +02:00
Victor Farazdagi
dd37064a15 cmd/swarm: add --password (#3748) 2017-04-12 02:03:42 +02:00
Nick Johnson
49f1e84253 internal/ethapi: Add support for fetching information about the current call in JS traces 2017-04-11 11:37:23 +01:00
Jamie Pitts
9de257505b params: updated testnet bootnodes (#14310) 2017-04-11 11:57:54 +02:00
Péter Szilágyi
706a1e552c cmd/puppeth: your Ethereum private network manager (#13854) 2017-04-11 01:25:53 +02:00
Felföldi Zsolt
18bbe12425 les: allow LES connection to other servers (#13889) 2017-04-11 01:23:39 +02:00
Péter Szilágyi
04fcae207d p2p: if no nodes are connected, attempt dialing bootnodes (#13874) 2017-04-10 18:33:41 +02:00
Justin
542e42b21e core: fix comment typo 2017-04-10 16:01:31 +03:00
Péter Szilágyi
feeccdf4ec consensus/clique: Proof of Authority (#3753)
This PR is a prototype implementation of plugable consensus engines and the
Clique PoA protocol ethereum/EIPs#225
2017-04-10 12:24:12 +02:00
Péter Szilágyi
bfe5eb7f8c eth: accept transactions when starting CPU mining (#13882) 2017-04-10 10:43:01 +02:00
Péter Szilágyi
f32b72ca5d Merge pull request #13883 from karalabe/boardcast-sync-head
eth: announce block after sync cycle (star topology)
2017-04-10 09:03:00 +03:00
gluk256
9cd7135516 whisper: big refactoring (#13852)
* whisper: GetMessages fixed; size restriction updated
* whisper: made PoW and MaxMsgSize customizable
* whisper: test added
* whisper: sym key management changed
* whisper: identity management refactored
* whisper: API refactoring (Post and Filter)
* whisper: big refactoring complete
* whisper: spelling fix
* whisper: variable topic size allowed for a filter
* whisper: final update
* whisper: formatting
* whisper: file exchange introduced in wnode
* whisper: bugfix
* whisper: API updated + new tests
* whisper: statistics updated
* whisper: wnode server updated
* whisper: allowed filtering for variable topic size
* whisper: tests added
* whisper: resolving merge conflicts
* whisper: refactoring (documenting mostly)
* whsiper: tests fixed
* whisper: down cased error messages
* whisper: documenting the API functions
* whisper: logging fixed
* whisper: fixed wnode parameters
* whisper: logs fixed (typos)
2017-04-09 23:49:22 +02:00
Péter Szilágyi
bd2c54fa9f eth: announce block after sync cycle (star topology) 2017-04-09 20:12:46 +03:00
Péter Szilágyi
8570ef19eb Merge pull request #13881 from karalabe/go-1.8.1
travis, appveyor: update to Go 1.8.1
2017-04-08 22:35:41 +03:00
Péter Szilágyi
d144299af4 travis, appveyor: update to Go 1.8.1 2017-04-08 22:20:15 +03:00
Péter Szilágyi
badbaf66b6 Merge pull request #13880 from karalabe/remote-miner-fix
consensus/ethash, eth: don't mine if 0 threads are set
2017-04-08 20:40:54 +03:00
Péter Szilágyi
b801be99d4 consensus, eth: don't CPU mine by default during remote mining 2017-04-07 17:22:06 +03:00
Péter Szilágyi
cc13d576f0 Merge pull request #13870 from karalabe/miners-fixes
all: clean up various error handling in core and the miner
2017-04-07 11:03:11 +03:00
Lewis Marshall
71fdaa4238 swarm/api: refactor and improve HTTP API (#3773)
This PR deprecates the file related RPC calls in favour of an improved HTTP API.

The main aim is to expose a simple to use API which can be consumed by thin
clients (e.g. curl and HTML forms) without the need for complex logic (e.g.
manipulating prefix trie manifests).
2017-04-07 00:22:22 +02:00
Péter Szilágyi
158d603528 consensus, core: drop all the legacy custom core error types 2017-04-06 17:34:19 +03:00
Felföldi Zsolt
9aca9e6deb cmd, les, eth, eth/gasprice: using new gas price oracle (#13853)
* cmd, les, eth, eth/gasprice: using new gas price oracle

* eth/gasprice: renamed source file

* eth/gasprice: added security checks for gpo params

* eth/gasprice: fixed naming issues

* eth/gasprice: max limit, maxEmpty
2017-04-06 17:20:42 +03:00
Louis Holbrook
0ec1104ba9 cmd/swarm: allow uploading from stdin (#3744)
- intended to be a swarm alternative to termbin.com
- added --stdin flag to swarm executable. if set, swarm will
  read data from stdin and postRaw it.
2017-04-06 14:21:16 +02:00
Péter Szilágyi
702bef8493 cmd/geth, eth: drop bad block reporting, its offline anyway 2017-04-06 14:25:05 +03:00
Péter Szilágyi
c76ad94492 .travis, build: autodelete old unstable archives (#13867)
This commit adds a build step to travis to auto-delete unstable archives older than
14 days (our regular release schedule) from Azure via ci.go purge.

The commit also pulls in the latest Azure storage code, also switching over from
the old import path (github.com/Azure/azure-sdk-for-go) to the new split one
(github.com/Azure/azure-storage-go).
2017-04-06 12:53:33 +02:00
Péter Szilágyi
d83a9a8f44 miner: don't verify our own blocks, trust the engine 2017-04-06 12:22:14 +03:00
Felix Lange
3d8de95f99 core, core/types: regenerate JSON marshaling, add "hash" to headers (#13868)
* Makefile: fix devtools target

* core: regenerate genesis marshaling with fjl/gencodec@cbfa5be5a8

* core/types: regenerate marshaling methods with fjl/gencodec@cbfa5be5a8

* core/types: add "hash" to JSON headers
2017-04-06 11:38:21 +03:00
Péter Szilágyi
24b9860c1b cmd/geth, node: surface geth architecture into version (#13866) 2017-04-05 21:51:01 +02:00
Martin Holst Swende
cc303017c3 debug: convert uint64-blocknumber into rpc.Blocknumber (#13862)
* debug: Converted uint64-blocknumber into rpc.Blocknumber

* api/debug: Fix pending block issues in DumpBlock
2017-04-05 17:49:54 +02:00
gary rong
49437a02c9 core/state: make TestSnapshotRandom work again (#3816)
In `touch` operation, only `touched` filed has been changed. Therefore
in the related undo function, only `touched` field should be reverted.
In addition, whether remove this obj from dirty map should depend on
prevDirty flag.
2017-04-05 00:44:16 +02:00
Lewis Marshall
b319f027a0 cmd/swarm, swarm/api/client: add HTTP API client and 'swarm ls' command (#3742)
This adds a swarm ls command which lists files and directories stored in a
manifest. Rather than listing all files, it uses "directory prefixes" in case there are a
lot of files in a manifest but you just want to traverse it.

This also includes some refactoring to the tests and the introduction of a
swarm/api/client package to make things easier to test.
2017-04-05 00:20:07 +02:00
Péter Szilágyi
09777952ee core, consensus: pluggable consensus engines (#3817)
This commit adds pluggable consensus engines to go-ethereum. In short, it
introduces a generic consensus interface, and refactors the entire codebase to
use this interface.
2017-04-05 00:16:29 +02:00
Péter Szilágyi
e50a5b7771 Merge pull request #13856 from karalabe/ethstats-sanity-checks
ethstats: sanity check ethstats history queries
2017-04-04 13:03:34 +03:00
Péter Szilágyi
fb98a8c6c2 ethstats: cut short unavailable history responses 2017-04-04 11:41:17 +03:00
Péter Szilágyi
96d1a4aee6 ethstats: sanity check ethstats history queries 2017-03-31 15:06:54 +03:00
Felix Lange
105b37f1b4 swarm/api: improve FUSE build constraints, logging and APIs (#3818)
* swarm/api: fix build/tests on unsupported platforms

Skip FUSE tests if FUSE is unavailable and change build constraints so
the 'lesser' platforms aren't mentioned explicitly. The test are
compiled on all platforms to prevent regressions in _fallback.go

Also gofmt -w -s because why not.

* internal/web3ext: fix swarmfs wrappers

Remove inputFormatter specifications so users get an error
when passing the wrong number of arguments.

* swarm/api: improve FUSE-related logging and APIs

The API now returns JSON objects instead of strings.
Log messages for invalid arguments are removed.
2017-03-31 12:11:01 +02:00
Péter Szilágyi
c4a0efafd7 Merge pull request #13851 from karalabe/ethstats-url-scheme-discovery
ethstats: work around weird URL scheme parsing issues
2017-03-30 13:25:17 +03:00
Péter Szilágyi
db93641941 ethstats: work around weird URL scheme parsing issues 2017-03-30 12:53:50 +03:00
Felix Lange
1cf2ee4597 build: work around cgo linker issue on macOS 10.12.4 (#13849)
Fixes #3792 by stripping debug symbols.
2017-03-29 12:20:57 +02:00
bas-vk
baf20010e7 core/types: rename txdata.gasLimit -> txdata.gas in JSON (#13848) 2017-03-29 11:59:13 +02:00
Péter Szilágyi
16afb5c468 Merge pull request #13516 from fjl/core-marshal-non-pointer
core, core/types: use non-pointer receiver for Marshal* methods
2017-03-28 15:55:34 +03:00
Péter Szilágyi
225c28716f Merge pull request #3801 from karalabe/ledger-linux-confirm
accounts/usbwallet: fix Ledger hidapi/libusb protocol violation
2017-03-28 09:16:23 +03:00
Felix Lange
aa9a78e463 core, core/types: use non-pointer receiver for Marshal* methods
Regenerated with fjl/gencodec@1a75a21610
Also add ,omitempty to optional GenesisAccount fields.
2017-03-27 13:29:01 +02:00
Péter Szilágyi
7419d0c382 Merge pull request #3820 from fjl/core-types-eip155-chainid-mul
core/types: ensure all EIP155 signer fields are set by deriveSigner
2017-03-27 00:22:34 +03:00
Felix Lange
4be37e91b9 core/types: ensure all EIP155 signer fields are set by deriveSigner
Fixes #3819
2017-03-24 22:06:10 +01:00
Péter Szilágyi
1018bf6a00 rpc: honour pending requests before tearing conn down (#3814) 2017-03-24 12:07:12 +01:00
Péter Szilágyi
37e252587a Merge pull request #3813 from fjl/build-fixes-2
build: unify vendor skipping, always run go vet
2017-03-24 11:52:42 +02:00
Péter Szilágyi
bb7dca275c ethstats: cleanups, trace logs and "fix" history responses (#3812) 2017-03-24 10:42:40 +01:00
Felix Lange
69ac6cc70e travis.yml: re-add missing build commands for Go 1.7 2017-03-24 10:29:20 +01:00
Felix Lange
df1fbe3c06 build: always run go vet
This ensures 'make test' finds all errors that remote CI would find.
Go 1.7 vet reports a false positive in package log, add a workaround.
2017-03-24 10:28:46 +01:00
Péter Szilágyi
8771c3061f Merge pull request #3794 from fjl/core-genesis-refactor
core: refactor genesis handling
2017-03-23 17:36:38 +02:00
Péter Szilágyi
8ff7e55ab5 accounts/usbwallet: if a confirmation is pending, skip refresh 2017-03-23 17:04:39 +02:00
Felix Lange
37dd9086ec core: refactor genesis handling
This commit solves several issues concerning the genesis block:

* Genesis/ChainConfig loading was handled by cmd/geth code. This left
  library users in the cold. They could specify a JSON-encoded
  string and overwrite the config, but didn't get any of the additional
  checks performed by geth.
* Decoding and writing of genesis JSON was conflated in
  WriteGenesisBlock. This made it a lot harder to embed the genesis
  block into the forthcoming config file loader. This commit changes
  things so there is a single Genesis type that represents genesis
  blocks. All uses of Write*Genesis* are changed to use the new type
  instead.
* If the chain config supplied by the user was incompatible with the
  current chain (i.e. the chain had already advanced beyond a scheduled
  fork), it got overwritten. This is not an issue in practice because
  previous forks have always had the highest total difficulty. It might
  matter in the future though. The new code reverts the local chain to
  the point of the fork when upgrading configuration.

The change to genesis block data removes compression library
dependencies from package core.
2017-03-23 15:58:43 +01:00
Felix Lange
67c47459f2 core/types: handle nil ChainId in NewEIP155Signer
All uses of ChainConfig.ChainId eventually end up in NewEIP155Signer.
This fixes the case where users forget to set the ChainId in their
config.
2017-03-23 15:58:42 +01:00
Felix Lange
0f4b75bea2 core/state: expose CommitTo 2017-03-23 15:58:42 +01:00
Felix Lange
d42a56afc5 common: add UnprefixedHash, UnprefixedAddress 2017-03-23 15:58:42 +01:00
Felix Lange
b4547a560b common/hexutil: add UnmarshalFixedUnprefixedText 2017-03-23 15:58:42 +01:00
Felix Lange
04fa6a3744 common/math: add HexOrDecimal64, HexOrDecimal256 2017-03-23 15:58:42 +01:00
Péter Szilágyi
26da6daaa9 accounts/usbwallet: fix Ledger hidapi/libusb protocol violation 2017-03-23 16:51:04 +02:00
Felix Lange
e7911ad9ea build: unify vendor skipping logic
This fixes a recent bug where 'make geth' built everything instead of
just geth.
2017-03-23 15:50:05 +01:00
Zahoor Mohamed
11e7a712f4 swarm/api: support mounting manifests via FUSE (#3690) 2017-03-23 14:56:06 +01:00
Péter Szilágyi
61d2150a07 Merge pull request #3795 from fjl/pow-fix-test-mode
pow: fix Search with ethash test mode
2017-03-23 10:56:12 +02:00
Péter Szilágyi
3fa0fa713b Merge pull request #3809 from fjl/all-use-normal-context
all: import "context" instead of "golang.org/x/net/context"
2017-03-23 10:22:56 +02:00
Felix Lange
f1534f5797 trie, whisper/whisperv5: use math/rand Read function 2017-03-22 20:49:15 +01:00
Felix Lange
9a2720fb35 mobile: remove support for Go < 1.7 2017-03-22 20:49:15 +01:00
Felix Lange
c213fd1fd8 all: import "context" instead of "golang.org/x/net/context"
There is no need to depend on the old context package now that the
minimum Go version is 1.7. The move to "context" eliminates our weird
vendoring setup. Some vendored code still uses golang.org/x/net/context
and it is now vendored in the normal way.

This change triggered new vet checks around context.WithTimeout which
didn't fire with golang.org/x/net/context.
2017-03-22 20:49:15 +01:00
Felföldi Zsolt
525116dbff les: implement request distributor, fix blocking issues (#3660)
* les: implement request distributor, fix blocking issues
* core: moved header validation before chain mutex lock
2017-03-22 20:44:22 +01:00
Péter Szilágyi
1c1dc0e0fc Merge pull request #3808 from fjl/build-go-1.7
build: require Go >= 1.7
2017-03-22 18:49:50 +02:00
Felix Lange
c6e6f1fec2 build: remove support for the GO_OPENCL environment variable
We don't use the opencl build tag anymore.
2017-03-22 16:00:21 +01:00
Felix Lange
da7af44060 build: require Go >= 1.7
We have decided to bump the requirement to Go 1.7 because it enables
subtests and allows dropping backwards-compatibility code. This is in
line with Go's support policy. Go 1.6 and earlier no longer receive
security updates.
2017-03-22 16:00:16 +01:00
Yohann Leon
6742fc526f core/vm: use uint64 instead of *big.Int in tracer (#3805) 2017-03-22 15:32:51 +01:00
Péter Szilágyi
9b84caf3a5 core, eth, les: support resuming fast sync on heavy rollback (#3743) 2017-03-22 01:37:24 +01:00
Felix Lange
06d6685eb5 Merge pull request #3756 from fjl/core-types-gencodec
core/types: use gencodec for JSON marshaling code
2017-03-22 01:36:22 +01:00
Péter Szilágyi
1dfd65f6d0 Merge pull request #3802 from karalabe/cocoapods-stable
travis: switch to cocoapods 1.2.0 stable
2017-03-20 14:35:48 +02:00
Péter Szilágyi
7242e4f71b travis: switch to cocoapods 1.2.0 stable 2017-03-20 14:12:47 +02:00
Péter Szilágyi
be39bf382a Merge pull request #3800 from karalabe/ethstats-genesis-fixes
ethstats: try both ws:// and wss:// if none specified
2017-03-20 13:04:57 +02:00
Péter Szilágyi
2ba9374789 ethstats: try both ws:// and wss:// if none specified 2017-03-20 12:45:43 +02:00
holisticode
d97dea51ec swarm/network/kademlia: set kademlia log output to debug instead of warn (#3787) 2017-03-18 01:45:00 +01:00
Felix Lange
24dd0355a3 pow: fix Search with ethash test mode
The cache/dataset methods crashed with a nil pointer error if
cachesinmem/dagsinmem were zero. Fix it by skipping the eviction logic
if there are no caches/datasets.

Search always used the regular dataset size regardless of test mode. Fix
it by removing the redundant size parameter of hashimotoFull.

Fixes #3784
2017-03-18 01:05:28 +01:00
bas-vk
6d038e762b accounts/abi/bind: allow client to specify sender address for call (#3782) 2017-03-16 12:24:22 +01:00
Steve Waldman
728a299728 common/compiler: add metadata output for solc > 0.4.6
Metadata is provided as JSON string, rather than as JSON object. This
ensures that we can decode to a set of bytes that will be consistent
with the swarm hash embedded in the code, without worrying about
ambiguities of spacing, ordering, or escaping.
2017-03-16 12:18:38 +01:00
Micah Zoltu
4e4e5fca54 rpc: add support for extended headers in CORS requests (#3783)
Fixes #3762.  Details about parameter:
a62a804a8a/cors.go (L50-L54)
2017-03-16 04:34:08 +01:00
Péter Szilágyi
61ede86737 internal/ethapi: drop eth_compile (#3740) 2017-03-16 02:54:52 +01:00
Péter Szilágyi
dc4c59d42b Merge pull request #3779 from zsfelfoldi/cht-update
light: added new CHT
2017-03-14 17:02:56 +02:00
Zsolt Felfoldi
0a01f3f607 light: added new CHT 2017-03-14 16:59:42 +02:00
Péter Szilágyi
f3579f6460 pow: make data dumps backwards compatible, fix DAG end 2017-03-09 15:50:14 +01:00
Péter Szilágyi
5c8fa6ae1a crypto, pow, vendor: hash optimizations, mmap ethash 2017-03-09 15:50:14 +01:00
Péter Szilágyi
b7d93500f1 all: finish integrating Go ethash, delete C++ vendor 2017-03-09 15:50:14 +01:00
Péter Szilágyi
df72e20cc5 pow: only support prime calculations on Go 1.8 and above 2017-03-09 15:50:14 +01:00
Péter Szilágyi
023670f6ba cmd, eth, les, node, pow: disk caching and progress reports 2017-03-09 15:50:14 +01:00
Péter Szilágyi
567d41d936 all: swap out the C++ ethash to the pure Go one (mining todo) 2017-03-09 15:50:14 +01:00
Péter Szilágyi
3b00a77de5 crypto, pow: add pure Go implementation of ethash 2017-03-09 15:50:14 +01:00
Péter Szilágyi
288700c4d8 build: add bootnode to Ubuntu PPAs too (#3766) 2017-03-09 11:02:43 +01:00
Martin Holst Swende
544247c918 * cmd/geth: add --nocompaction flag + multiple import files
* main,import: Add --nocompaction flag + multiple import files

* geth/import: documentation

* import: Added more info to err message

* fix :P
2017-03-08 13:26:19 +02:00
Felix Lange
8cf08e4b25 core/types: use gencodec for JSON marshaling code 2017-03-07 12:45:12 +01:00
Felix Lange
eee96a5bb7 rlp: add support for "-" struct tag 2017-03-07 12:45:12 +01:00
Felix Lange
667cd518ce internal/jsre/deps: ensure that go generate produces no changes 2017-03-07 12:38:46 +01:00
Péter Szilágyi
4c6f4e569e Merge pull request #3755 from ligi/mobile_fix_typo
mobile: Fix typo ( Ethereun -> Ethereum )
2017-03-07 02:35:11 +02:00
Felix Lange
9c4fd4e9c9 Makefile: add devtools target 2017-03-07 01:33:05 +01:00
ligi
db2698c87c mobile: Fix typo ( Ethereun -> Ethereum ) 2017-03-07 01:30:06 +01:00
Péter Szilágyi
07c216d603 Merge pull request #3739 from karalabe/logger-updates-4
all: update light logs (and a few others) to the new model
2017-03-03 18:53:30 +02:00
Péter Szilágyi
1a00e39539 Merge pull request #3738 from karalabe/impossible-reorg-warning
core: reorg logs crashed, add a check for corner cases
2017-03-03 14:37:02 +02:00
Péter Szilágyi
92e50adfa3 Merge pull request #3741 from karalabe/fix-makefile-xgo
build: fix xgo argument order when building from make
2017-03-03 14:36:21 +02:00
Péter Szilágyi
2b284e7366 build: fix xgo argument order when building from make 2017-03-03 12:18:44 +02:00
Péter Szilágyi
e7030c4bf5 all: update light logs (and a few others) to the new model 2017-03-03 11:41:52 +02:00
Péter Szilágyi
a38e1a9c00 core: reorg logs crashed, add a check for corner cases 2017-03-03 09:54:13 +02:00
Aaron Hnatiw
faf713632c README: fix typo 2017-03-02 18:44:07 +02:00
Péter Szilágyi
725c2646a0 Merge pull request #3735 from karalabe/bundle-bootnode
build: bundle the bootnode too into alltools
2017-03-02 16:05:23 +02:00
Péter Szilágyi
f2e94ff94b Merge pull request #3727 from karalabe/travis-mips
travis: support building mips32 and mips64 too
2017-03-02 15:49:40 +02:00
Péter Szilágyi
090699c0f6 build: bundle the bootnode too into alltools 2017-03-02 15:23:15 +02:00
Péter Szilágyi
213b8f9af4 Merge pull request #3722 from fjl/hexutil-text-unmarshal
common/hexutil: implement TextMarshaler, TextUnmarshaler
2017-03-02 15:16:59 +02:00
Péter Szilágyi
9184249b39 Logger updates 3 (#3730)
* accounts, cmd, eth, ethdb: port logs over to new system

* ethdb: drop concept of cache distribution between dbs

* eth: fix some log nitpicks to make them nicer
2017-03-02 14:06:16 +01:00
Felix Lange
280f08be84 common/hexutil: ensure negative big.Int is encoded sensibly
Restricting encoding is silly.
2017-03-02 14:05:46 +01:00
Felix Lange
d304da3803 common/hexutil: implement TextMarshaler, TextUnmarshaler
This commit makes the wrapper types more generally applicable.
encoding.TextMarshaler is supported by most codec implementations (e.g.
for yaml).

The tests now ensure that package json actually recognizes the custom
marshaler implementation irrespective of how it is implemented.

The Uint type has new tests, too. These are tricky because uint size
depends on the CPU word size. Turns out that there was one incorrect
case where decoding returned ErrUint64Range instead of ErrUintRange.
2017-03-02 14:05:46 +01:00
Felix Lange
357d00cdb1 common/hexutil: don't leak encoding/hex errors in Decode
All other functions return errors from package hexutil, ensure that
Decode does too.
2017-03-02 14:05:46 +01:00
Felix Lange
f3b7dcc5bd common/hexutil: reject big integer inputs > 256 bits
This follows the change to common/math big integer parsing in PR #3699.
2017-03-02 14:05:46 +01:00
Péter Szilágyi
82e7c1d124 Merge pull request #3728 from obscuren/format-trace
core/evm, core/vm: improved evm trace output
2017-03-02 13:01:01 +02:00
Péter Szilágyi
f972691eea travis: support building mips32 and mips64 too 2017-03-02 11:43:06 +02:00
Valentin Wüstholz
c52ab932e6 cmd/disasm, cmd/evm: integrate disasm tool into evm tool. (#3729) 2017-03-01 13:34:50 +01:00
Jeffrey Wilcke
f30733c806 cmd/evm: removed -sysstat and moved content to -debug flag
Added the ability to directly compile and run ethereum assembly using
the evm utility: `evm run <file>`. This is equivalant to `evm compile
<file> | evm run`.
2017-03-01 11:52:57 +01:00
Jeffrey Wilcke
bf4155846c core/evm, core/vm: improved evm trace output
* Improved the standard evm tracer output and renamed it to WriteTrace
which now takes an io.Writer to write the logs to.
* Added WriteLogs which writes logs to the given writer in a readable
format.
* evm utility now also prints logs generated during the execution.
2017-03-01 11:20:25 +01:00
Jeffrey Wilcke
230cf2ec91 cmd/evm, core/asm: add EVM assembler (#3686)
The evm compile command implements a simple assembly language that compiles to
EVM bytecode.
2017-03-01 01:11:24 +01:00
Jeffrey Wilcke
7ff75ac2f2 cmd/utils, core, params: fork all teh things for dev mode (#3697) 2017-02-28 23:18:13 +01:00
Péter Szilágyi
167be7f260 Merge pull request #3725 from karalabe/kill-it-with-fire
errs: kill it with fire
2017-02-28 18:45:44 +02:00
Péter Szilágyi
7e3762fdc6 errs: kill it with fire 2017-02-28 18:01:54 +02:00
Péter Szilágyi
94c71c171f Merge pull request #3723 from karalabe/logger-updates-2
Logger updates
2017-02-28 16:55:37 +02:00
Felix Lange
5f7826270c all: unify big.Int zero checks, use common/math in more places (#3716)
* common/math: optimize PaddedBigBytes, use it more

name              old time/op    new time/op    delta
PaddedBigBytes-8    71.1ns ± 5%    46.1ns ± 1%  -35.15%  (p=0.000 n=20+19)

name              old alloc/op   new alloc/op   delta
PaddedBigBytes-8     48.0B ± 0%     32.0B ± 0%  -33.33%  (p=0.000 n=20+20)

* all: unify big.Int zero checks

Various checks were in use. This commit replaces them all with Int.Sign,
which is cheaper and less code.

eg templates:

    func before(x *big.Int) bool { return x.BitLen() == 0 }
    func after(x *big.Int) bool  { return x.Sign() == 0 }

    func before(x *big.Int) bool { return x.BitLen() > 0 }
    func after(x *big.Int) bool  { return x.Sign() != 0 }

    func before(x *big.Int) int { return x.Cmp(common.Big0) }
    func after(x *big.Int) int  { return x.Sign() }

* common/math, crypto/secp256k1: make ReadBits public in package math
2017-02-28 15:09:11 +01:00
Péter Szilágyi
b117da2db3 core/state: drop most of a logs (useless at this volume) 2017-02-28 15:51:30 +02:00
Péter Szilágyi
e02883c0a2 core, log: track field length and pad to align 2017-02-28 15:36:51 +02:00
Péter Szilágyi
e588e0ca2b all: next batch of log polishes to contextual versions 2017-02-28 15:03:20 +02:00
Péter Szilágyi
d4f60d362b Merge pull request #3721 from karalabe/drop-legacy-db-updates
core, eth: drop database block splitting upgrader
2017-02-28 14:00:25 +02:00
Péter Szilágyi
46bcd9a92c core, eth: drop database block splitting upgrader 2017-02-28 13:41:02 +02:00
Jamie Pitts
dbd88a1aa4 params: updated bootnodes (#3720)
* Updated the list of go bootnodes: replaced BR with a new one, added US-WEST and AU.

* Updated bootnodes, minor go formatting change.
2017-02-28 12:30:44 +02:00
Péter Szilágyi
965407f238 Merge pull request #3709 from fjl/p2p-context-log
p2p, p2p/discover, p2p/nat: rework logging using context keys
2017-02-28 12:22:05 +02:00
Felix Lange
96ae35e2ac p2p, p2p/discover, p2p/nat: rework logging using context keys 2017-02-28 10:20:29 +01:00
Péter Szilágyi
dc0a006c7c Merge pull request #3718 from karalabe/terminal-format-hash
common, eth/downloader, log: support terminal log formatting
2017-02-27 20:49:17 +02:00
Péter Szilágyi
2f28a12cdb common, eth/downloader, log: support terminal log formatting 2017-02-27 19:15:18 +02:00
Felix Lange
35e8308bf7 eth, les: shorten genesis block mismatch error message 2017-02-27 17:19:41 +01:00
Péter Szilágyi
fc97c7a38d Merge pull request #3717 from tranvictor/master
internal/ethapi: return logsBloom for pending block
2017-02-27 18:11:11 +02:00
Péter Szilágyi
48bc07ae97 Merge pull request #3708 from fjl/log-letter
log: fix annoyances
2017-02-27 18:05:50 +02:00
tranvictor
a624ce69f7 internal/ethapi: fixes #2648, returns logsBloom for pending block 2017-02-27 21:45:57 +07:00
Felix Lange
d0eba23af3 all: disable log message colors outside of geth
Also tweak behaviour so colors are only enabled when stderr is a terminal.
2017-02-27 15:33:12 +01:00
Felix Lange
43362ab4fb log: disable logs by default 2017-02-27 15:32:48 +01:00
Felix Lange
38e273597c log: log full level names instead of mispelled "EROR", "DBUG" 2017-02-27 15:32:48 +01:00
Péter Szilágyi
e8b3e22612 Merge pull request #3711 from karalabe/update-downloader-logs
eth/downloader: port over old logs from glog to log15
2017-02-27 14:18:26 +02:00
Péter Szilágyi
32ee1b3cd8 Merge pull request #3715 from karalabe/update-hid-library
vendor: update HID library for glibc < v2.17 build
2017-02-27 14:04:40 +02:00
Péter Szilágyi
8676aeb798 eth/downloader: review fixes 2017-02-27 13:22:33 +02:00
Valentin Wüstholz
37511ec520 core, core/vm, cmd/disasm: unify procedures for disassembling evm code (#3530) 2017-02-27 12:21:19 +01:00
Péter Szilágyi
46eea4d105 accounts, eth/downloader: use "err" instead of "error" in logs 2017-02-27 13:17:58 +02:00
Péter Szilágyi
0a63c3e362 eth/downloader: port over old logs from glog to log15 2017-02-27 13:16:40 +02:00
Péter Szilágyi
45c7cfd2e6 vendor: update HID library for glibc < v2.17 build 2017-02-27 12:58:09 +02:00
Felix Lange
5c8fe28b72 common: move big integer math to common/math (#3699)
* common: remove CurrencyToString

Move denomination values to params instead.

* common: delete dead code

* common: move big integer operations to common/math

This commit consolidates all big integer operations into common/math and
adds tests and documentation.

There should be no change in semantics for BigPow, BigMin, BigMax, S256,
U256, Exp and their behaviour is now locked in by tests.

The BigD, BytesToBig and Bytes2Big functions don't provide additional
value, all uses are replaced by new(big.Int).SetBytes().

BigToBytes is now called PaddedBigBytes, its minimum output size
parameter is now specified as the number of bytes instead of bits. The
single use of this function is in the EVM's MSTORE instruction.

Big and String2Big are replaced by ParseBig, which is slightly stricter.
It previously accepted leading zeros for hexadecimal inputs but treated
decimal inputs as octal if a leading zero digit was present.

ParseUint64 is used in places where String2Big was used to decode a
uint64.

The new functions MustParseBig and MustParseUint64 are now used in many
places where parsing errors were previously ignored.

* common: delete unused big integer variables

* accounts/abi: replace uses of BytesToBig with use of encoding/binary

* common: remove BytesToBig

* common: remove Bytes2Big

* common: remove BigTrue

* cmd/utils: add BigFlag and use it for error-checked integer flags

While here, remove environment variable processing for DirectoryFlag
because we don't use it.

* core: add missing error checks in genesis block parser

* common: remove String2Big

* cmd/evm: use utils.BigFlag

* common/math: check for 256 bit overflow in ParseBig

This is supposed to prevent silent overflow/truncation of values in the
genesis block JSON. Without this check, a genesis block that set a
balance larger than 256 bits would lead to weird behaviour in the VM.

* cmd/utils: fixup import
2017-02-26 22:21:51 +01:00
Péter Szilágyi
50ee279f25 Merge pull request #3705 from karalabe/drop-legacy-commands
Drop legacy commands
2017-02-24 13:59:56 +02:00
gluk256
562ccff822 whisper: fixed temporary directory for tests (#3707) 2017-02-24 09:21:01 +01:00
gluk256
11539030cd whisper: expiry refactoring (#3706) 2017-02-23 18:46:32 +01:00
Péter Szilágyi
aca066f337 cmd/geth: drop upgradedb subcommand since it's unfeasible
This command was meant as a hackish way to upgrade our chain database way back
when nobody cared for live updates and the size of the database along with its
import times was small. With the current database weighing hundreds of GBs and
processing times of many days, this command is just ludicrous.
2017-02-23 16:49:50 +02:00
Péter Szilágyi
5ee00209d2 cmd/ethtest: drop the manual test tool in favor of hive
All the state and block tests are ran as part of our CU builds internally, as
well as have been added to hive black-box tests. As such, there is no reason for
maintaining an extra standalone tool.
2017-02-23 16:49:50 +02:00
Péter Szilágyi
e7bdb00700 cmd/gethrpctest: ethereum/rpc-tests is deprecated
Only ethereum/rpc-tests used this command, which hasn't been maintained for over
a year now, a lot of tests failing. What's left of it was moved underneath hive,
which can run the entire test against a black-box geth without special commands.

Also a new RPC test suite is being added which is also based on black box tests,
not needing special commands any more.
2017-02-23 16:49:49 +02:00
Péter Szilágyi
357732a840 Merge pull request #3696 from karalabe/contextual-logger
Contextual logger
2017-02-23 16:49:05 +02:00
Péter Szilágyi
f89dd62776 internal, log: support debug log prints, displaying log origins 2017-02-23 12:16:47 +02:00
Péter Szilágyi
1ca20a2697 cmd, whisper/mailserver: revert to utils.Fatalf 2017-02-23 12:16:46 +02:00
Péter Szilágyi
23a5d64fd0 accounts, cmd: port packages over to the new logging system 2017-02-23 12:16:46 +02:00
Péter Szilágyi
61e6bb1247 eth, les, swarm: fix go vet issues sufraced by log15 2017-02-23 12:16:45 +02:00
Péter Szilágyi
d4fd06c3dc all: blidly swap out glog to our log15, logs need rework 2017-02-23 12:16:44 +02:00
Péter Szilágyi
47af53f9aa log: implement a glog style pattern matching handler 2017-02-23 12:00:05 +02:00
Péter Szilágyi
3f923f3902 swarm: remove superfluous line break in log statements 2017-02-23 12:00:04 +02:00
Péter Szilágyi
189dee26c6 p2p: remove trailing newlines from log messages 2017-02-23 12:00:04 +02:00
Péter Szilágyi
b9d48b4a93 log: add support for trace level, exit on critical 2017-02-23 12:00:03 +02:00
Péter Szilágyi
ec7f81f4bc log, vendor: vendor in log15 inline into our codebase 2017-02-23 12:00:02 +02:00
gluk256
29fac7de44 Whisper API fixed (#3687)
* whisper: wnode updated for tests with geth

* whisper: updated processing of incoming messages

* whisper: symmetric encryption updated

* whisper: filter id type changed to enhance security

* whisper: allow filter without topic for asymmetric encryption

* whisper: POW updated

* whisper: logging updated

* whisper: spellchecker update

* whisper: error handling changed

* whisper: JSON field names fixed
2017-02-23 09:41:47 +01:00
Nick Johnson
555273495b trie: add difference iterator (#3637)
This PR implements a differenceIterator, which allows iterating over trie nodes
that exist in one trie but not in another. This is a prerequisite for most GC
strategies, in order to find obsolete nodes.
2017-02-22 23:49:34 +01:00
Jeffrey Wilcke
024d41d0c2 core, core/state, core/vm: remove exported account getters (#3618)
Removed exported statedb object accessors, reducing the chance for nasty
bugs to creep in. It's also ugly and unnecessary to have these methods.
2017-02-22 23:29:59 +01:00
Péter Szilágyi
46ec4357e7 Merge pull request #3698 from karalabe/govet-latest-only
travis: only run go vet and misspell on latest Go
2017-02-22 17:08:00 +02:00
Péter Szilágyi
c6e716eb31 travis: only run go vet and misspell on latest Go 2017-02-22 15:40:28 +02:00
Péter Szilágyi
388803b139 Merge pull request #3682 from karalabe/update-go1.8
travis, appveyor: update builders to Go 1.8
2017-02-22 14:55:47 +02:00
Jeffrey Wilcke
4ac481b45f core/vm, crypto: support for go-fuzz (#3672) 2017-02-21 10:24:07 +01:00
Jeffrey Wilcke
94334c233e cmd/geth: added 'geth bug' command (#3684)
* cmd/geth: added 'geth bug' command

Added bug command to geth, which will open a browser window
with an issue template and some additional system information.

* cmd/geth: update bug with better infos

* cmd/geth: added browser fallback

* cmd/geth: govet yo momma
2017-02-20 15:26:21 +02:00
Péter Szilágyi
b7f010de52 tests: cleanup tester blockchain after test run (#3692) 2017-02-20 11:54:23 +01:00
Péter Szilágyi
a0c011f1a8 travis: fallback ARM64 builds to Go 1.7.5 due to compiler bug 2017-02-20 11:28:55 +02:00
Péter Szilágyi
449a850023 travis, appveyor: update builders to Go 1.8 2017-02-20 11:22:56 +02:00
Nick Johnson
e51f65af1f Merge pull request #3681 from karalabe/usb-hidapi
accounts/usbwallet: swap karalabe/gousb to karalabe/hid
2017-02-19 17:19:40 +01:00
Jeffrey Wilcke
037c8b9ae9 VERSION, params: bumped unstable version to 1.6 (#3685) 2017-02-18 09:28:15 +01:00
Martin Holst Swende
b19e5885fe core/blockchain: Change iterator in procFutureBlocks to use lru.Peek instead of Get (#3655) 2017-02-18 09:27:21 +01:00
Felix Lange
9b0af51386 crypto: add btcec fallback for sign/recover without cgo (#3680)
* vendor: add github.com/btcsuite/btcd/btcec

* crypto: add btcec fallback for sign/recover without cgo

This commit adds a non-cgo fallback implementation of secp256k1
operations.

* crypto, core/vm: remove wrappers for sha256, ripemd160
2017-02-18 09:24:12 +01:00
Jeffrey Wilcke
bf21549faa common/math: "optimised" SafeMul and added comment on Exp (#3675) 2017-02-17 18:39:43 +01:00
Péter Szilágyi
6f74fb962e Merge pull request #3683 from karalabe/swarm-go1.8-vet-fix
swarm/api/http: fix go vet issue on Go 1.8
2017-02-17 12:08:31 +02:00
Péter Szilágyi
6ec8135256 accounts/usbwallet, vendor: use hidapi instead of libusb directly 2017-02-17 12:04:21 +02:00
Péter Szilágyi
e94dfb78f8 swarm/api/http: fix go vet issue on Go 1.8 2017-02-17 11:48:26 +02:00
Péter Szilágyi
bdef758d5c Merge pull request #3679 from fjl/vendor-govendor
vendor: update dependencies with github.com/kardianos/govendor
2017-02-16 18:23:58 +02:00
Felix Lange
2c4455b12a vendor: update dependencies with github.com/kardianos/govendor 2017-02-16 13:44:09 +01:00
Felix Lange
c8695fae35 logger: remove Core verbosity level (#3659) 2017-02-15 10:14:44 +01:00
Péter Szilágyi
a973d1d523 Merge pull request #3674 from obscuren/gaz64
params: core, core/vm, miner: 64bit gas instructions
2017-02-14 18:59:00 +02:00
gluk256
15a609d5d6 whisper: interface changed to simplify the transition to v5
* whisper: mailserver test introduced, refactoring

* whisper: validation test updated

* whisper: max number of peers fixed

* whisper: verification bug fixed

* whisper: esthetic fix

* whisper: interface changed to simplify the transition to v5

* whisper: preparation for version switch
2017-02-14 16:44:47 +02:00
Jeffrey Wilcke
c12f4df910 params: core, core/vm, miner: 64bit gas instructions
Reworked the EVM gas instructions to use 64bit integers rather than
arbitrary size big ints. All gas operations, be it additions,
multiplications or divisions, are checked and guarded against 64 bit
integer overflows.

In additon, most of the protocol paramaters in the params package have
been converted to uint64 and are now constants rather than variables.

* common/math: added overflow check ops
* core: vmenv, env renamed to evm
* eth, internal/ethapi, les: unmetered eth_call and cancel methods
* core/vm: implemented big.Int pool for evm instructions
* core/vm: unexported intPool methods & verification methods
* core/vm: added memoryGasCost overflow check and test
2017-02-13 21:44:25 +01:00
Martin Holst Swende
72dcd3c58b core, eth, internal: Added debug_getBadBlocks() method (#3654)
* core,eth,internal: Added `debug_getBadBlocks()` method

When bad blocks are discovered, these are stored within geth.
An RPC-endpoint makes them availablewithin the `debug`
namespace. This feature makes it easier to discover network forks.

```

* core, api: go format + docs

* core/blockchain: Documentation, fix minor nitpick

* core: fix failing blockchain test
2017-02-13 21:44:06 +01:00
Péter Szilágyi
4ece9c6cb0 VERSION, params: start 1.5.10 development cycle 2017-02-13 19:02:57 +02:00
Péter Szilágyi
a07539fb88 Merge pull request #3671 from karalabe/1.5.9-stable
params: 1.5.9 stable
2017-02-13 18:54:59 +02:00
Péter Szilágyi
6988e5f074 Merge pull request #3670 from karalabe/docker-usb-fix
Dockerfile: support building USB on Alpine, ignore temp files
2017-02-13 18:47:27 +02:00
Péter Szilágyi
aba016da72 params: 1.5.9 stable 2017-02-13 18:38:21 +02:00
Péter Szilágyi
09aef5c0ae Dockerfile: support building USB on Alpine, ignore temp files 2017-02-13 18:31:09 +02:00
Péter Szilágyi
9b161187ec Merge pull request #3649 from ethersphere/swarm-sigterm-fix
cmd/swarm: handle SIGTERM unix signal for clean exit
2017-02-13 18:22:15 +02:00
zelig
8883f36fe3 cmd/swarm: handle SIGTERM unix signal for clean exit 2017-02-13 22:15:14 +06:30
Péter Szilágyi
0850f68fd1 Merge pull request #3668 from obscuren/revert-gas64
Revert "params: core, core/vm, miner: 64bit gas instructions (#3514)"
2017-02-13 17:13:40 +02:00
Jeffrey Wilcke
57f4e90257 Revert "params: core, core/vm, miner: 64bit gas instructions (#3514)"
This reverts commit 8b57c49490.
2017-02-13 15:15:12 +01:00
Péter Szilágyi
f8f428cc18 Merge pull request #3592 from karalabe/hw-wallets
accounts: initial support for Ledger hardware wallets
2017-02-13 15:03:16 +02:00
Viktor Trón
e23e86921b swarm/network: fix chunk integrity checks (#3665)
* swarm/network: integrity on incoming known chunks
* swarm/network: fix integrity check for incoming chunks
* swarm/storage: imrpoved integrity checking on chunks
* dbstore panics on corrupt chunk entry an prompts user to run cleandb
* memstore adds logging for garbage collection
* dbstore refactor item delete. correct partial deletes in Get
* cmd/swarm: added cleandb subcommand
2017-02-13 13:20:50 +01:00
gluk256
65ed6a9def whisper: add tests for mailserver (#3631) 2017-02-13 13:15:20 +01:00
Péter Szilágyi
e99c788155 accounts: ledger and HD review fixes
- Handle a data race where a Ledger drops between list and open
- Prolong Ledger tx confirmation window to 30 days from 1 minute
- Simplify Ledger chainid-signature calculation and validation
- Simplify Ledger USB APDU request chunking algorithm
- Silence keystore account cache notifications for manual actions
- Only enable self derivations if wallet open succeeds
2017-02-13 14:00:12 +02:00
Péter Szilágyi
c7022c1a0c accounts/usbwallet: detect and report in Ledger is in browser mode 2017-02-13 14:00:11 +02:00
Péter Szilágyi
26cd41f0c7 accounts/usbwallet: make wallet responsive while Ledger is busy 2017-02-13 14:00:10 +02:00
Péter Szilágyi
fb19846855 accounts/usbwallet: Ledger teardown on health-check failure 2017-02-13 14:00:10 +02:00
Péter Szilágyi
205ea95802 accounts, cmd, internal, node: implement HD wallet self-derivation 2017-02-13 14:00:09 +02:00
Péter Szilágyi
c5215fdd48 accounts, cmd, internal, mobile, node: canonical account URLs 2017-02-13 14:00:08 +02:00
Péter Szilágyi
fad5eb0a87 accounts, cmd, eth, internal, miner, node: wallets and HD APIs 2017-02-13 14:00:07 +02:00
Péter Szilágyi
b3c0e9d3cc accounts/usbwallet: two phase Ledger refreshes to avoid Windows bug 2017-02-13 14:00:07 +02:00
Péter Szilágyi
470b79385b accounts/usbwallet: support Ledger app version <1.0.2 2017-02-13 14:00:06 +02:00
Péter Szilágyi
1ecf99bd0f accounts/usbwallet: skip support on iOS altogether 2017-02-13 14:00:05 +02:00
Péter Szilágyi
e0fb4d1da9 build: work around CGO linker bug on pre-1.8 Go 2017-02-13 14:00:04 +02:00
Péter Szilágyi
ac2a0e615b accounts/usbwallet: initial support for Ledger wallets 2017-02-13 14:00:04 +02:00
Péter Szilágyi
52bd4e29ff vendor: pull in support for USB devices via libusb/gousb 2017-02-13 14:00:03 +02:00
Péter Szilágyi
833e4d1319 accounts, cmd, eth, internal, mobile, node: split account backends 2017-02-13 14:00:02 +02:00
Martin Holst Swende
564b60520c core: ignore 0x prefix for code in JSON genesis blocks (#3656) 2017-02-13 03:36:50 +01:00
Zahoor Mohamed
085987ff2c cmd/swarm: manifest manipulation commands (#3645) 2017-02-13 03:33:05 +01:00
Péter Szilágyi
aaf9cfd18c Merge pull request #3662 from karalabe/travis-linux-android
travis: split Android off OSX, use native image
2017-02-12 19:25:32 +02:00
Péter Szilágyi
7ff686d6ec travis: split Android off OSX, use native image 2017-02-10 19:24:37 +02:00
Péter Szilágyi
0cc9409fda Merge pull request #3648 from bas-vk/abigen
cmd/abigen: parse contract name as abi identifier
2017-02-10 12:11:43 +02:00
Maksim
6dd27e7cff swarm/storage: release chunk storage after stop swarm (#3651)
closes #3650
2017-02-08 18:01:12 +01:00
Bas van Kervel
d0eeb3ebdc cmd/abigen: parse contract name as abi identifier 2017-02-06 18:16:56 +01:00
Péter Szilágyi
fa99986143 Merge pull request #3641 from karalabe/events-init-once
event: use sync.Once for init for faster/cleaner locking
2017-02-03 14:34:12 +02:00
Diego Siqueira
6ea8eba8ce accounts/abi, internal/jsre/deps: gofmt -w -s (#3636)
Signed-off-by: DiSiqueira <dieg0@live.com>
2017-02-03 13:32:04 +01:00
Péter Szilágyi
9b5c7153c9 event: use sync.Once for init for faster/cleaner locking 2017-02-03 14:04:57 +02:00
Péter Szilágyi
d52b0c32a0 Merge pull request #3635 from holiman/hive_fixes
core/genesis: add support for setting nonce in 'alloc'
2017-02-03 14:00:18 +02:00
Péter Szilágyi
7734ead520 Merge pull request #3605 from fjl/event-feed
event: add new Subscription type and related utilities
2017-02-03 13:56:00 +02:00
Felix Lange
1bed9b3fea event: address review issues (multiple commits)
event: address Feed review issues

event: clarify role of NewSubscription function

event: more Feed review fixes

* take sendLock after dropping f.mu
* add constant for number of special cases

event: fix subscribing/unsubscribing while Send is blocked
2017-02-03 13:37:49 +02:00
Jeffrey Wilcke
8b57c49490 params: core, core/vm, miner: 64bit gas instructions (#3514)
Reworked the EVM gas instructions to use 64bit integers rather than
arbitrary size big ints. All gas operations, be it additions,
multiplications or divisions, are checked and guarded against 64 bit
integer overflows.

In additon, most of the protocol paramaters in the params package have
been converted to uint64 and are now constants rather than variables.

* common/math: added overflow check ops
* core: vmenv, env renamed to evm
* eth, internal/ethapi, les: unmetered eth_call and cancel methods
* core/vm: implemented big.Int pool for evm instructions
* core/vm: unexported intPool methods & verification methods
* core/vm: added memoryGasCost overflow check and test
2017-02-02 15:25:42 +01:00
Brian Schroeder
296450451b state: take write lock in GetNonce (#3625)
We must take a write lock here because `GetNonce` calls
`StateDB.GetStateObject`, which mutates the DB's live set.
2017-02-01 10:55:46 +01:00
Felix Lange
4f5f90222f params, VERSION: v1.5.9-unstable 2017-02-01 02:14:54 +01:00
Felix Lange
f58fb32283 params: v1.5.8-stable 2017-02-01 02:14:04 +01:00
Felix Lange
9c45b4462c Merge pull request #3607 from zsfelfoldi/light-fix2
les: fix private net issues, enable adding peers manually again
2017-02-01 02:03:43 +01:00
gluk256
690f6ea1d7 cmd/wnode, whisper: add whisper CLI tool and mail server (#3580) 2017-01-31 11:16:20 +01:00
Péter Szilágyi
1c140f7382 Merge pull request #3615 from nolash/bzzpathfix_real5
cmd/swarm, swarm/api: bzzr improve + networkid prio
2017-01-30 16:36:30 +02:00
Péter Szilágyi
e5a93bf99a swarm/api/http: add missing copyright header 2017-01-30 15:21:46 +02:00
Péter Szilágyi
f3c368ca73 Merge pull request #3624 from kaneshin/patch-01
cmd/geth, cmd/swarm: Fix to close file handler appropriately
2017-01-30 12:24:41 +02:00
Péter Szilágyi
b8823a8b34 Merge pull request #3623 from kaneshin/patch-1
build: Fix tiny typo
2017-01-29 20:46:55 +02:00
Shintaro Kaneko
355a42f36d cmd/geth, cmd/swarm: Fix to close file handler appropriately 2017-01-30 01:10:19 +09:00
Shintaro Kaneko
658bcbcbdc build: Fix tiny typo 2017-01-30 01:09:00 +09:00
nolash
7669c5b5ec cmd/swarm, swarm/api: bzzr improve + networkid prio
fixes #3444
fixes #3494
networkid override

Added comments to explain why test against 0 appears twice

* Command line overrides saved config, saved config overrides system default

---

fixes #3476
bzzr get with path

Finally a hopefully clean commit for this PR
Added check for empty path to avoid SIGSEGV in path parser and resolver
Added requested tests for empty path and non-existing manifest.
However signature for StartHTTPServer had changed.
Now it's hacked as so:

	StartHttpServer(api.API, &Server{Addr: "127.0.0.1:8504", CorsString: ""})

* Parse url before resolve when path and ENS is supplied, example
* swarm/api/http proxy server test for retrieval of subpath through get
* Removed nil entry assignment on subtrie leaf in recursive key retrieval
* Cleaned up path-or-no-path condition in proxy server get handler
* swarm: processed with gofmt refers to lash/go-ethereum@90daa7a
* swarm: Added public access method Parse alias to parse
* swarm: processed with gofmt References nolash/go-ethereum@2ec3fd7
* Rename parse to Parse, removed alias
2017-01-27 08:18:13 +01:00
Zsolt Felfoldi
a390ca5f30 les, cmd/util: disable topic discovery with --nodiscover 2017-01-27 02:52:45 +01:00
bas-vk
c46c41eae3 core/types: add unittest for tx json serialization (#3609) 2017-01-26 21:16:24 +01:00
Vivek Anand
82aa5b1de6 core: fix a small typo in blockchain.go (#3611) 2017-01-26 16:54:49 +02:00
Zsolt Felfoldi
12379c697a les: remove delayed les server starting 2017-01-26 04:23:53 +01:00
Zsolt Felfoldi
f5348e17f8 les: add unknown peers to server pool instead of rejecting them 2017-01-26 04:23:49 +01:00
Felix Lange
a2b4abd89a rpc: send nil on subscription Err channel when Client is closed
This change makes client subscriptions compatible with the new
Subscription semantics introduced in the previous commit.
2017-01-25 18:44:21 +01:00
Felix Lange
6d5e100d0d event: add new Subscription type and related utilities
This commit introduces a new Subscription type, which is synonymous with
ethereum.Subscription. It also adds a couple of utilities that make
working with Subscriptions easier. The mot complex utility is Feed, a
synchronisation device that implements broadcast subscriptions. Feed is
slightly faster than TypeMux and will replace uses of TypeMux across the
go-ethereum codebase in the future.
2017-01-25 18:44:20 +01:00
Felix Lange
1886d03faa console, internal/web3ext: remove bzz and ens extensions (#3602)
web3.js includes bzz methods and throws an error when the extension
module is reregistered. The ENS RPC API is deprecated and not exposed by
anything.
2017-01-25 16:29:40 +01:00
Felix Lange
9b62facdd4 event: deprecate TypeMux and related types
The Subscription type is gone, all uses are replaced by
*TypeMuxSubscription. This change is prep-work for the
introduction of the new Subscription type in a later commit.

   gorename -from '"github.com/ethereum/go-ethereum/event"::Event' -to TypeMuxEvent
   gorename -from '"github.com/ethereum/go-ethereum/event"::muxsub' -to TypeMuxSubscription
   gofmt -w -r 'Subscription -> *TypeMuxSubscription' ./event/*.go
   find . -name '*.go' -and -not -regex '\./vendor/.*' \| xargs gofmt -w -r 'event.Subscription -> *event.TypeMuxSubscription'
2017-01-25 16:25:57 +01:00
Martin Holst Swende
da92f5b2d6 core/genesis: add support for setting nonce in 'alloc'
This is to be able to set `pre`-state when performing blockchain tests through Hive, we need to be able to set the nonce.
2017-01-24 20:42:47 +01:00
Felix Lange
f1069a30b9 eth/downloader: improve deliverNodeData (#3588)
Commit d3b751e accidentally deleted a crucial 'return' statement,
leading to a crash in case of an issue with node data. This change
improves the fix in PR #3591 by removing the lock entirely.
2017-01-24 13:20:37 +01:00
Péter Szilágyi
2718b42828 Merge pull request #3599 from karalabe/docker-alpine-cacerts
containers/docker: update base images, add CA certs, build internally on Ubuntu
2017-01-24 13:46:56 +02:00
Felix Lange
fc52f2c007 core/types: make Transaction zero value printable (#3595) 2017-01-23 18:51:02 +01:00
Péter Szilágyi
0b9070fe01 containers/docker: update ubuntu images to build, not pull 2017-01-23 12:12:38 +02:00
Péter Szilágyi
c04598f2b0 containers/docker: update to alpine 3.5, add CA certificates 2017-01-23 11:46:15 +02:00
Felix Lange
96778a1c21 crypto/secp256k1: sign with deterministic K (rfc6979) (#3561) 2017-01-22 23:28:47 +01:00
Martin Holst Swende
935d891e9d cmd/evm: added debug flag (back) (#3554)
* evm: added debug flag (back)

* cmd/evm: gofmt
2017-01-22 22:14:09 +01:00
Péter Szilágyi
682875adff accounts/abi/bind, internal/ethapi: binary search gas estimation (#3587)
Gas estimation currently mostly works, but can underestimate for more funky
refunds. This is because various ops (e.g. CALL) need more gas to run than they
actually consume (e.g. 2300 stipend that is refunded if not used). With more
intricate contract interplays, it becomes almost impossible to return a proper
value to the user.

This commit swaps out the simplistic gas estimation to a binary search approach,
honing in on the correct gas use. This does mean that gas estimation needs to
rerun the transaction log(max-price) times to measure whether it fails or not,
but it's a price paid by the transaction issuer, and it should be worth it to
support proper estimates.
2017-01-20 23:39:16 +01:00
bas-vk
0126d01435 types: bugfix invalid V derivation on tx json unmarshal (#3594) 2017-01-20 23:32:16 +01:00
Péter Szilágyi
946db8ba65 internal/guide: initial test suite to ensure guide snippets run ok (#3582) 2017-01-20 11:50:21 +01:00
Péter Szilágyi
7814a8e131 travis: Install Android NDK explicitly, removed from gomobile (#3593)
The Android NDK was recently removed from gomobile, leading to our Android
builds failing. Starting from https://go-review.googlesource.com/#/c/35173/ ,
gomobile requires a locally installed NDK. This PR ensures that travis installs
that too before running the build steps.
2017-01-20 10:33:58 +01:00
Péter Szilágyi
ebc3d232f4 eth/downloader: fix mutex regression causing panics on fail (#3591) 2017-01-20 01:12:14 +01:00
Péter Szilágyi
f087c66f95 Merge pull request #3584 from obscuren/dead-code
core: removal of dead-code
2017-01-18 13:36:21 +02:00
Jeffrey Wilcke
508fdc3496 core: removal of dead-code
Removal of dead code that appeard as if we had a consensus issue. This
however is not the case as the proper error catching happens in the vm
package instead.
2017-01-17 21:50:08 +01:00
Péter Szilágyi
d63752ef4d Merge pull request #3579 from bas-vk/natspec
cmd,eth,les,internal: remove natspec support
2017-01-17 14:38:57 +02:00
Martin Holst Swende
6fb76443b3 core/blockchain: Made logging of reorgs more structured (#3573)
* core: Made logging of reorgs more structured, also always log if reorg is > 63 blocks long

* core/blockchain: go fmt

* core/blockchain: Minor fixes to the reorg reporting
2017-01-17 14:10:26 +02:00
Péter Szilágyi
2eefed84c9 Merge pull request #3581 from karalabe/accounts-polish
accounts, mobile: make account manager API a bit more uniform
2017-01-17 14:09:29 +02:00
Péter Szilágyi
230530f5ea accounts, mobile: make account manager API a bit more uniform 2017-01-17 13:25:36 +02:00
Nick Johnson
17d92233d9 cmd/geth, core: add support for recording SHA3 preimages (#3543) 2017-01-17 12:19:50 +01:00
Bas van Kervel
54a65e6d87 cmd,eth,les,internal: remove natspec support 2017-01-17 12:13:50 +01:00
Felix Lange
26d385c18b params, VERSION: 1.5.8 unstable 2017-01-16 11:12:50 +01:00
Felix Lange
da2a22c384 params: stable 1.5.7 2017-01-16 10:57:02 +01:00
Felföldi Zsolt
0fa9a8929c les: fixed transaction sending deadlock (#3568) 2017-01-16 10:51:29 +01:00
Péter Szilágyi
2a1a531ba3 Merge pull request #3570 from fjl/hexutil-zero-fix
common/hexutil: fix EncodeBig, Big.MarshalJSON
2017-01-16 11:49:17 +02:00
Felix Lange
51f6b6d33f common/hexutil: fix EncodeBig, Big.MarshalJSON
The code was too clever and failed to include zeros on a big.Word
boundary.
2017-01-16 10:32:40 +01:00
Péter Szilágyi
b5a100b859 Merge pull request #3560 from karalabe/ci-misspell
travis, appveyor, build: add source spell checking
2017-01-13 12:16:22 +02:00
Péter Szilágyi
54fcab20e3 appveyor, build: fix review requests 2017-01-13 12:04:55 +02:00
Péter Szilágyi
a2bc90d1d7 build: spellcheck individual packages (Windows path limits) 2017-01-13 11:22:24 +02:00
Péter Szilágyi
c01f8c3d3c accounts/abi: fix comment spelling error 2017-01-13 11:14:47 +02:00
Péter Szilágyi
e4181a7f1b travis, appveyor, build: add source spell checking 2017-01-13 11:14:13 +02:00
Felix Lange
01f6f2d741 common/hexutil: allow empty strings when decoding JSON (#3559) 2017-01-13 09:45:40 +01:00
Felix Lange
c5df37c111 eth: accept leading zeros for nonce parameter of submitWork (#3558) 2017-01-13 00:37:23 +01:00
Felix Lange
e0ceeab0d1 crypto/secp256k1: update to github.com/bitcoin-core/secp256k1 @ 9d560f9 (#3544)
- Use defined constants instead of hard-coding their integer value.
- Allocate secp256k1 structs on the C stack instead of converting []byte
- Remove dead code
2017-01-12 21:29:11 +01:00
Péter Szilágyi
93077c98e4 internal: update web3.js to 0.18.1, embed deps with go-bindata (#3545) 2017-01-12 21:28:35 +01:00
Péter Szilágyi
3dab303826 Merge pull request #3555 from obscuren/unskip-test
tests: unskip test
2017-01-12 12:08:56 +02:00
Jeffrey Wilcke
3160fd24ba tests: unskip test 2017-01-12 10:32:21 +01:00
Péter Szilágyi
ce7822c130 Merge pull request #3553 from bas-vk/rm-olympic-support
core: remove support for Olympic network
2017-01-12 11:26:00 +02:00
Bas van Kervel
745a3adebd core: remove support for Olympic network 2017-01-12 09:50:54 +01:00
Péter Szilágyi
218ec6c085 Merge pull request #3551 from fjl/core-import-log-align
core: improve import log alignment
2017-01-11 14:53:54 +02:00
Nick Johnson
d30d7800e0 ethdb: Implement interface for prefixed operations to the DB (#3536) 2017-01-11 13:26:09 +01:00
Felix Lange
8820d97039 internal/ethapi: fix duration parameter of personal_unlockAccount (#3542) 2017-01-11 13:20:24 +01:00
Péter Szilágyi
b52fde7cf7 Merge pull request #3546 from fjl/deps-update
vendor: update dependencies
2017-01-11 12:14:08 +02:00
Péter Szilágyi
2b4d0b6ff9 Merge pull request #3548 from fjl/geth-fix-bootnodes
cmd/utils: fix comma-separated --bootnodes
2017-01-11 10:59:14 +02:00
Felix Lange
21f1370d2a core: improve import log alignment 2017-01-10 23:14:08 +01:00
Felix Lange
d78f9b834a vendor: update all dependencies except Azure SDK
The Azure SDK doesn't support Go 1.5 anymore. We can't upgrade it until
Go 1.8 comes out.
2017-01-10 22:33:24 +01:00
Felix Lange
445deb7470 cmd/utils: fix comma-separated --bootnodes 2017-01-10 21:13:43 +01:00
Péter Szilágyi
02b67558e8 Merge pull request #3535 from fjl/all-ineffassign
all: fix ineffectual assignments
2017-01-09 23:53:17 +02:00
Péter Szilágyi
91c8f87fb1 Merge pull request #3538 from karalabe/cycle-1.5.7
params, VERSION: start 1.5.7 release cycle
2017-01-09 17:47:35 +02:00
Péter Szilágyi
d056b7fa52 params, VERSION: start 1.5.7 release cycle 2017-01-09 17:45:49 +02:00
Péter Szilágyi
2a609af518 Merge pull request #3537 from karalabe/release-1.5.6
params: stable version 1.5.6
2017-01-09 17:39:27 +02:00
Péter Szilágyi
1d5d6616ae params: stable version 1.5.6 2017-01-09 17:30:35 +02:00
Felix Lange
b9b3efb09f all: fix ineffectual assignments and remove uses of crypto.Sha3
go get github.com/gordonklaus/ineffassign
ineffassign .
2017-01-09 16:24:42 +01:00
Felix Lange
0f34d506b5 generators: delete dead code
We don't use this anymore.
2017-01-09 16:12:54 +01:00
Felix Lange
5eccc122e8 build, node: fix go vet nits 2017-01-09 16:12:54 +01:00
Péter Szilágyi
681b51aac4 Merge pull request #3519 from zsfelfoldi/light-topic5
les: fixed selectPeer deadlock, improved request distribution
2017-01-09 16:58:23 +02:00
Péter Szilágyi
4268cb8efe Merge pull request #3534 from bas-vk/writemipmaprace
core: fix race condition in WriteMipmapBloom
2017-01-09 16:58:05 +02:00
Viktor Trón
3f1a72908c cmd/swarm: uploader uses HTTP PUT for directories (#3488) 2017-01-09 15:19:56 +01:00
Bas van Kervel
2fed476ce1 core: fix race condition in WriteMipmapBloom 2017-01-09 15:35:58 +02:00
Péter Szilágyi
6cb39dd3da Merge pull request #3529 from fjl/console-error-fix
console: fix error message in faux JSON-RPC responses
2017-01-09 13:46:15 +02:00
Péter Szilágyi
88cc1ca55a Merge pull request #3533 from karalabe/modum-io-develop-2
accounts/abi: support custom int slice types
2017-01-09 11:49:17 +02:00
Thomas Bocek
1bd9769111 accounts/abi: fixed broken types slice testcases
Check for slice in type as well and adapted test case as arrays
also store its types.
2017-01-09 11:36:33 +02:00
Jeffrey Wilcke
47372813ef accounts/abi: fixed comments 2017-01-09 11:36:33 +02:00
tbocek
fc213c873d accounts/abi: added testcase to unpack []uint32 2017-01-09 11:36:32 +02:00
Thomas Bocek
972f0bd3db accounts/abi: support custom int slice types
On solidity contract I have "uint32 []" type, when abigen creates Go
bindings - they are also "[]uint32" type on Go side. Even though it
looks like it should work - the actual type of the data coming from
the chain is of type " []*big.Int".

When executing contract function from Go side - getting unmarshal error:
abi: cannot unmarshal []*big.Int in to []uint32

The fix is to create array with the correct type

This fixed the issue reported in: https://github.com/ethereum/go-ethereum/issues/2802
2017-01-09 11:36:31 +02:00
Victor Farazdagi
808310a569 node: fix pointer dereference issue in StartRPC (#3532) 2017-01-08 15:55:37 +01:00
Valentin Wüstholz
0a5450fe04 cmd/disasm: fix array-out-of-bounds error (#3491) 2017-01-08 01:18:22 +01:00
Felix Lange
9bab0b8a24 console: fix error message in faux JSON-RPC responses
The message was used as both key and value in the error object.
This only affected unusual errors with no error code.
2017-01-08 00:55:48 +01:00
Péter Szilágyi
17182732f5 Merge pull request #3526 from karalabe/misspell
all: fix spelling errors
2017-01-06 20:03:44 +02:00
Péter Szilágyi
18c77744ff all: fix spelling errors 2017-01-06 19:44:35 +02:00
Péter Szilágyi
ac93a6ff6c Merge pull request #3525 from fjl/all-gosimple-cleanup
all: clean up lint issues, remove more dead code
2017-01-06 19:30:44 +02:00
Felix Lange
13e3b2f433 logger, pow/dagger, pow/ezp: delete dead code 2017-01-06 18:18:07 +01:00
Felix Lange
f2da6581ba all: fix issues reported by honnef.co/go/simple/cmd/gosimple 2017-01-06 18:18:07 +01:00
Péter Szilágyi
444fc892b0 Merge pull request #3524 from karalabe/mobile-signwith-swift-fixup
mobile: rename passphrase signing method to avoid Swift rewrite
2017-01-06 18:04:19 +02:00
Péter Szilágyi
b56aee3697 mobile: rename passphrase signing method to avoid Swift rewrite 2017-01-06 17:47:15 +02:00
Felix Lange
35a7dcb162 all: gofmt -w -s 2017-01-06 15:52:03 +01:00
Felix Lange
e0fde02290 common/compiler: remove workaround for solc 0.3.5 stdin bug (#3522)
The crash when compiling stdin was fixed in solc 0.3.6 (released
2016-08-10). While here, simplify the test so it runs with any solc
version.

Fixes #3484. The byte code was different for each run because recent
solc embeds the swarm hash of contract metadata into the code. When
compiling from stdin the name in the metadata is constant.
2017-01-06 15:39:35 +01:00
Péter Szilágyi
59b8245bbc Merge pull request #3516 from fjl/types-drop-sign-ecdsa
core/types: remove redundant SignECDSA wrappers, rename to SignTx
2017-01-06 15:55:55 +02:00
Péter Szilágyi
8f9daaa3ba Merge pull request #3518 from fjl/ethclient-dependency-cleanup
core/types: dependency cleanup
2017-01-06 15:42:03 +02:00
Felix Lange
d3b751e4d9 trie: remove dependency on ethdb
This removes the core/types -> leveldb dependency.
2017-01-06 14:15:22 +01:00
Felix Lange
7731061903 core/vm: move Log to core/types
This significantly reduces the dependency closure of ethclient, which no
longer depends on core/vm as of this change.

All uses of vm.Logs are replaced by []*types.Log. NewLog is gone too,
the constructor simply returned a literal.
2017-01-06 14:15:22 +01:00
Felix Lange
b9683d3748 params: avoid importing p2p/discover for bootnodes
params is imported by leaf-ish library packages and should not pull in
the p2p stack.
2017-01-06 14:15:21 +01:00
Zsolt Felfoldi
66979aa468 light: fixed data race in TestTxPool 2017-01-06 04:34:35 +01:00
Zsolt Felfoldi
93f9c023cc les: fixed selectPeer deadlock, improved request distribution
les/flowcontrol: using proper types for relative and absolute times
2017-01-06 04:34:31 +01:00
Péter Szilágyi
e0ee0cc66a Merge pull request #3517 from karalabe/empty-ios-prefix
build: finally settle on empty iOS ObjC package prefixes
2017-01-05 15:29:36 +02:00
Péter Szilágyi
9b135a9c20 build: finally settle on empty iOS ObjC package prefixes 2017-01-05 14:32:30 +02:00
Felix Lange
e171bf74f8 core/types: remove redundant SignECDSA wrappers, rename to SignTx 2017-01-05 12:59:17 +01:00
Péter Szilágyi
bb2e99dfc2 Merge pull request #3417 from karalabe/mobile-polishes
Account management API polishes
2017-01-05 13:57:12 +02:00
Péter Szilágyi
b37d175e59 accounts, internal, mobile: polish accounts API, extend Android tests 2017-01-05 12:58:03 +02:00
Maran
f087633efd swarm/api/http: add support for CORS headers (#3388) 2017-01-05 11:57:41 +01:00
Péter Szilágyi
bbce726c8a Merge pull request #3515 from bas-vk/exportropsten
core,cmd/utils: bugfix for ropsten dump imports
2017-01-05 12:54:45 +02:00
Jeffrey Wilcke
bbc4ea4ae8 core/vm: improved EVM run loop & instruction calling (#3378)
The run loop, which previously contained custom opcode executes have been
removed and has been simplified to a few checks.

Each operation consists of 4 elements: execution function, gas cost function,
stack validation function and memory size function. The execution function
implements the operation's runtime behaviour, the gas cost function implements
the operation gas costs function and greatly depends on the memory and stack,
the stack validation function validates the stack and makes sure that enough
items can be popped off and pushed on and the memory size function calculates
the memory required for the operation and returns it.

This commit also allows the EVM to go unmetered. This is helpful for offline
operations such as contract calls.
2017-01-05 11:52:10 +01:00
RJ
2126d81488 accounts/abi: add support for function types (#3405) 2017-01-05 11:46:44 +01:00
Péter Szilágyi
06b381d1c9 cmd/utils: disallow --fakepow for live operation (#3512) 2017-01-05 11:40:56 +01:00
Péter Szilágyi
08eea0f0e4 accounts, core, crypto, internal: use normalised V during signature handling (#3455)
To address increasing complexity in code that handles signatures, this PR
discards all notion of "different" signature types at the library level. Both
the crypto and accounts package is reduced to only be able to produce plain
canonical secp256k1 signatures. This makes the crpyto APIs much cleaner,
simpler and harder to abuse.
2017-01-05 11:35:23 +01:00
Bas van Kervel
a1798a8188 core,cmd/utils: bugfix for ropsten dump imports 2017-01-05 11:31:57 +01:00
Péter Szilágyi
0fac8cba47 Merge pull request #3511 from karalabe/live-fakepow
cmd/utils, eth, les: bubble --fakepow flag into eth/les too
2017-01-04 13:27:51 +02:00
Péter Szilágyi
1ca74aba6f Merge pull request #3505 from bas-vk/txinblock
ethclient: hex encode request args for TransactionInBlock
2017-01-04 12:43:27 +02:00
Péter Szilágyi
2ce30382d9 cmd/utils, eth, les: bubble --fakepow flag into eth/les too 2017-01-04 10:42:41 +02:00
Bas van Kervel
8bc545be2a ethclient: hex encode request args for TransactionInBlock 2017-01-03 14:46:00 +01:00
Péter Szilágyi
891fcd8ce1 Merge pull request #3486 from bas-vk/txbyhash
ethclient: pass ptr when parsing eth_getTransactionByHash result
2017-01-03 10:56:22 +02:00
Guillaume NICOLAS
bd06091874 mobile: add SetVerbosity (#3492) 2017-01-02 18:12:31 +01:00
Péter Szilágyi
3e3edcc465 Merge pull request #3490 from karalabe/fix-miner-api
eth: fix miner start API to accept int, not hexint
2016-12-23 14:59:26 +02:00
Péter Szilágyi
89a32267f7 eth: fix miner start API to accept int, not hexint 2016-12-23 11:28:11 +02:00
Bas van Kervel
021177ca9b ethclient: pass ptr when parsing eth_getTransactionByHash result 2016-12-22 14:45:01 +01:00
Péter Szilágyi
115364b0a9 Merge pull request #3475 from fjl/rpc-hex-improvements
rpc: remove HexBytes, HexNumber
2016-12-22 13:49:16 +02:00
bas-vk
6d15d00ac4 accounts/abi: add support for "anonymous" and "indexed" for events (#3464) 2016-12-22 01:51:20 +01:00
Valentin Wüstholz
bdaa43510b cmd/disasm: fix off-by-one error and improve error handling (#3482) 2016-12-22 00:37:27 +01:00
Aron Fischer
9a51f5c350 swarm/http: check error returned by reader.Size (#3470) 2016-12-22 00:35:05 +01:00
Aron Fischer
301c0a6303 swarm/storage: call size before seek-from-end (#3469) 2016-12-22 00:34:05 +01:00
Aron Fischer
65f486ff02 swarm/api: check for zero length manifest error (#3468) 2016-12-22 00:32:08 +01:00
Péter Szilágyi
df096a7771 Merge pull request #3479 from karalabe/android-ropsten-dao
mobile: fix ropsten chain configs
2016-12-21 13:25:00 +02:00
Péter Szilágyi
0e9a9f243f mobile: fix ropsten chain configs 2016-12-21 13:10:57 +02:00
Felix Lange
12c964b2b7 internal/ethapi: fix hex handling for eth_call input and eth_sendRawTransaction 2016-12-20 14:46:22 +01:00
Felix Lange
cf71f5cd60 rpc: remove HexNumber, replace all uses with hexutil types
This change couldn't be automated because HexNumber was used for numbers
of all sizes.
2016-12-20 14:41:58 +01:00
Felix Lange
adab2e16bd rpc: remove HexBytes, replace all uses with hexutil.Bytes 2016-12-20 14:35:26 +01:00
Felix Lange
a3e3235d97 rpc: improve error messages for invalid arguments
The message now includes the index of the invalid arg.
2016-12-20 14:35:26 +01:00
Felix Lange
2be3c4b0e3 internal/jsre: fix built-in inspect function
inspect was broken by ffaf58f0a9 (May 2016!).
Looks like nobody uses this function.
2016-12-20 14:35:14 +01:00
Péter Szilágyi
0ee796632a eth, miner: verify PoW in the remote agent to notify submitter (#3438) 2016-12-20 02:14:36 +01:00
Nick Johnson
1fe67c125d eth/filters: add FindOnce for iterator-like operation (#3435)
This commit introduces a FindOnce method for filters. FindOnce finds the next block that
matches the filter and returns all matching logs from that block. If there are no further
matching logs, it returns a nil slice. This method allows callers to iterate over large
sets of logs progressively.

The changes introduce a small inefficiency relating to mipmaps: the first time a filter is
called, it acts as if all mipmaps are matched, and thus iterates several blocks near the
requested start point. This is in the interest of simplicity and avoiding duplicate mipmap
lookups each time FindOnce is called.
2016-12-20 02:00:03 +01:00
gluk256
ba996f5e27 whisper: refactoring (#3411)
* whisper: refactored message processing
* whisper: final polishing
* whisper: logging updated
* whisper: moved the check, changed the default PoW
* whisper: refactoring of message queuing
* whisper: refactored parameters
2016-12-20 00:58:01 +01:00
Péter Szilágyi
64bf5bafe9 Merge pull request #3403 from VoR0220/fixedPointsAbi
accounts/abi: prepare ABI to handle fixed point types
2016-12-19 14:22:57 +02:00
Péter Szilágyi
4d05bbf2a4 accounts/abi: clean up PR and add type parsing tests 2016-12-19 14:11:11 +02:00
VoR0220
471990f771 accounts/abi: prepare ABI to handle fixed point types
Signed-off-by: VoR0220 <rj@erisindustries.com>
2016-12-19 14:11:11 +02:00
Péter Szilágyi
7b623aab9d Merge pull request #3454 from karalabe/allow-zeroprice-tx
core: allow zero priced transactions from inexistent accounts too
2016-12-19 12:23:46 +02:00
Péter Szilágyi
e871ae1270 Merge pull request #3453 from fjl/api-sign-recover-hex
internal/ethapi: fix hex handling for eth_sign, personal_{sign,recover}
2016-12-19 11:49:21 +02:00
Péter Szilágyi
c44830ebf3 core, light: allow zero cost txs from inexistent accounts too 2016-12-16 13:30:39 +02:00
Felix Lange
3e4a04f34d internal/ethapi: fix hex handling for eth_sign, personal_{sign,recover} 2016-12-16 11:32:51 +01:00
Péter Szilágyi
38827dd9ca Merge pull request #3445 from karalabe/govet-ip-signal
p2p/nat: fix a bytes based net.IP comparison
2016-12-15 16:51:14 +02:00
Péter Szilágyi
21fd9f037e p2p/nat: fix a bytes based net.IP comparison 2016-12-15 16:28:31 +02:00
Péter Szilágyi
033763eaf7 Merge pull request #3442 from karalabe/discv5-fix-ip-comparison
p2p/discover, p2p/discv5: use flexible comparison for IPs
2016-12-14 19:15:05 +02:00
Péter Szilágyi
2573094df2 p2p/discover, p2p/discv5: use flexible comparison for IPs 2016-12-14 18:40:49 +02:00
Péter Szilágyi
745026b7b4 Merge pull request #3433 from karalabe/badblock-order-fix
core: import future blocks one-by-one, enfore chain ancestry
2016-12-14 16:45:48 +02:00
Péter Szilágyi
a07d955eaa Merge pull request #3441 from karalabe/begin-1.5.6-cycle
VERSION, params: start Geth 1.5.6 development cycle
2016-12-14 16:28:45 +02:00
Péter Szilágyi
9d6f4e2e7f VERSION, params: start Geth 1.5.6 development cycle 2016-12-14 16:27:35 +02:00
Péter Szilágyi
ff07d54843 Merge pull request #3440 from karalabe/release-1.5.5
params: stable version 1.5.5
2016-12-14 16:06:54 +02:00
Péter Szilágyi
e53879328c params: stable version 1.5.5 2016-12-14 15:57:44 +02:00
Péter Szilágyi
b792412d31 Merge pull request #3430 from karalabe/miner-pending-race
miner: clean up unconfirmed mined block tracking
2016-12-14 15:05:50 +02:00
Péter Szilágyi
49c6f1053c Merge pull request #3421 from ethersphere/s/swarm-cmd
cmd/swarm: one command  with subcommands
2016-12-14 12:26:20 +02:00
Péter Szilágyi
4d960f6dc6 Merge pull request #3439 from karalabe/drop-deprecated-wily
build: Ubuntu wily was officially deprecated, drop support
2016-12-14 12:18:03 +02:00
Péter Szilágyi
8941665896 build: Ubuntu wily was officially deprecated, drop support 2016-12-14 11:45:14 +02:00
Péter Szilágyi
9cc0f60666 Merge pull request #3429 from bas-vk/txpool-crash
core: init pending state in tx pool on creation
2016-12-14 11:17:39 +02:00
Péter Szilágyi
fdb8edf5ea Merge pull request #3427 from Arachnid/gzipdump
cmd/utils, eth: Add gzip support for chain dump and restore
2016-12-14 11:15:21 +02:00
Nick Johnson
9ba9fe818d cmd/utils, eth: Add gzip support for chain dump and restore 2016-12-14 08:59:55 +00:00
zelig
92224d27b1 cmd/swarm: testnet bootnodes IP address change 2016-12-14 08:14:52 +01:00
Péter Szilágyi
157a4bd926 Merge pull request #3437 from karalabe/update-ci-go1.7.4
travis, appveyor: build with Go 1.7.4
2016-12-13 22:30:14 +02:00
Péter Szilágyi
29d6881112 travis, appveyor: build with Go 1.7.4 2016-12-13 19:54:56 +02:00
Péter Szilágyi
e2692921e1 Merge pull request #3434 from karalabe/drop-legacy-android
cmd/geth: drop legacy android code
2016-12-13 18:53:06 +02:00
Péter Szilágyi
b63138c3ec cmd/geth: drop legacy android code 2016-12-13 18:17:49 +02:00
Péter Szilágyi
a59fcc33e6 core: import future blocks one-by-one, enfore chain ancestry 2016-12-13 16:19:45 +02:00
Péter Szilágyi
07311f3157 miner: rename pending to unconformed, add bounds and ops tests 2016-12-13 15:10:52 +02:00
Péter Szilágyi
17637ed1bb miner: clean up unconfirmed mined block tracking 2016-12-13 14:31:32 +02:00
Péter Szilágyi
f15828e901 Merge pull request #3431 from karalabe/miner-race-fixes
Miner race fixes
2016-12-13 14:30:26 +02:00
Péter Szilágyi
dadd689359 miner: fix data race on setting etherbase/extradata 2016-12-13 14:04:05 +02:00
Péter Szilágyi
b750cab56a miner: fix a race between remote agent start/loop 2016-12-13 14:03:57 +02:00
zelig
485748c416 cmd/swarm: improve uploader output and add defaultpath option 2016-12-13 12:54:13 +01:00
zelig
080699f7df cmd/swarm: ethapi not required 2016-12-13 12:54:13 +01:00
zelig
8e35f54931 cmd/swarm: trim trailing slash from bzzapi url 2016-12-13 12:54:13 +01:00
zelig
d44f1a77ee cmd/swarm: add default bootnodes for testnet 3 2016-12-13 12:54:13 +01:00
zelig
4181046488 swarm/network, cmd/swarm: swarm default network id is 3 (to match Ropsten) 2016-12-13 12:54:13 +01:00
zelig
d7c398b638 build: add swarm command to binary packages, update README 2016-12-13 12:54:13 +01:00
zelig
5f5d0aa4ff cmd/swarm: subsume cmd/bzz* as subcommands under swarm
cmd/swarm: subsume cmd/bzz* under cmd/swarm as subcommands
2016-12-13 12:54:05 +01:00
Bas van Kervel
9f1520b4c0 core: init pending state in tx pool on creation 2016-12-13 10:38:04 +01:00
Felix Lange
a98e8c0889 Merge pull request #3413 from zsfelfoldi/light-topic4
les, p2p/discv5: implement server pool, improve peer selection, light fetcher and topic searching
2016-12-12 20:46:15 +01:00
Péter Szilágyi
ee445a2ba4 Merge pull request #3425 from karalabe/netstats-time-fixup
netstats: time and block history
2016-12-12 14:55:00 +02:00
Péter Szilágyi
b2c226cb7d ethstats: implement block history retrievals 2016-12-12 14:01:52 +02:00
Péter Szilágyi
13614f4e1c ethstats: fix timestamps and add custom proto support 2016-12-11 20:16:30 +02:00
bas-vk
4f9ccdd70f build: safe update of PATH on Windows (#3419)
NSIS has a default MAX_STR_LEN of 1024. If $ENV{PATH} is longer
the returned string is truncated to an empty string. Its then not
possible to distinguis between the variable not set or too long.
As a result the variable is set with the location where geth and/or
dev tools are installed. This may override any previous set values.
2016-12-11 00:01:57 +01:00
bas-vk
4e36b1e3da core: bugfix state change race condition in txpool (#3412)
The transaction pool keeps track of the current nonce in its local pendingState. When a
new block comes in the pendingState is reset. During the reset it fetches multiple times
the current state through the use of the currentState callback. When a second block comes
in during the reset its possible that the state changes during the reset. If that block
holds transactions that are currently in the pool the local pendingState that is used to
determine nonces can get out of sync.
2016-12-10 23:54:58 +01:00
Zsolt Felfoldi
f12f8a6c14 les, light: add block availability check for ODR requests 2016-12-10 09:53:25 +01:00
Zsolt Felfoldi
c57c54ce96 eth, les: defer starting LES service until ETH initial sync is finished 2016-12-10 09:53:25 +01:00
Zsolt Felfoldi
c8130df1d9 les: using random request IDs 2016-12-10 09:53:25 +01:00
Zsolt Felfoldi
af8a742d00 les: improved header fetcher and server statistics 2016-12-10 09:53:08 +01:00
Zsolt Felfoldi
e67500aa15 les: fixed light fetcher request ID matching 2016-12-08 13:38:15 +01:00
Zsolt Felfoldi
a6d3bf6fc3 p2p/discv5: search and lookup improvement 2016-12-08 13:38:15 +01:00
Zsolt Felfoldi
3e617f3cd6 les: implement light server pool 2016-12-08 13:38:15 +01:00
Péter Szilágyi
0fe35b907a mobile: iOS naming and API fixes for generators and Swift (#3408)
* build: modify the iOS namespace to iGeth (gomobile limitation)
* mobile: assign names to return types for ObjC wrapper
* mobile: use more expanded names for iOS/Swift API
2016-12-08 13:09:26 +01:00
Jeffrey Wilcke
3fc7c97827 core, core/vm: implemented a generic environment (#3348)
Environment is now a struct (not an interface). This
reduces a lot of tech-debt throughout the codebase where a virtual
machine environment had to be implemented in order to test or run it.

The new environment is suitable to be used en the json tests, core
consensus and light client.
2016-12-06 02:16:03 +01:00
Felix Lange
7f79d249a6 Merge pull request #3402 from fjl/ethclient-api-fixes
eth/filters, ethclient, ethereum: API improvements
2016-12-05 20:08:18 +01:00
Felix Lange
f138374027 ethereum: document use of Removed field for SubscribeFilterLogs 2016-12-05 10:57:11 +01:00
Felix Lange
f52a1ae849 core, core/vm, eth/filters: move Removed field into vm.Log
This field used to be assigned by the filter system and returned through
the RPC API. Now that we have a Go client that uses the underlying type,
the field needs to move. It is now assigned to true when the RemovedLogs
event is generated so the filter system doesn't need to care about the
field at all.

While here, remove the log list from ChainSideEvent. There are no users
of this field right now and any potential users could subscribe to
RemovedLogsEvent instead.
2016-12-05 10:57:11 +01:00
Felix Lange
3bc0fe1ee3 ethclient, ethereum: add NotFound, split transactions out of ChainReader
ethclient now returns ethereum.NotFound if the server returns null and
no error while accessing blockchain data.

The light client cannot provide arbitrary transactions. The change to
split transaction access into its own interface emphasizes that
transactions should not be relied on and recommends use of logs.
2016-12-05 10:57:11 +01:00
Felix Lange
fa0cc27400 ethclient: use package hexutil for number encoding 2016-12-04 19:45:55 +01:00
Felix Lange
4cb29bde2e ethclient: don't crash if server returns null uncle header
It should never return null for a known uncle, but even if it does
we can't just crash.
2016-12-04 19:45:55 +01:00
gluk256
2dcf75a722 whisper/shhapi, whisper/whisperv5: refactoring (#3364)
* Filter refactoring
* API tests added + bugfix
* fixed the error logs
* FilterID fixed
* test cases fixed
* key generation updated
* POW updated
* got rid of redundant stuff
2016-12-01 20:09:22 +01:00
Nick Johnson
671fd94e25 swarm/api: Update ENS root address for Ropsten & prod (#3391) 2016-12-01 19:33:10 +01:00
Péter Szilágyi
717d2f6f9e Merge pull request #3390 from bas-vk/statsd-stop
ethstats: check if received event is valid
2016-12-01 10:30:19 +02:00
Maran
8cb95cb916 README: removed develop mentions 2016-11-30 19:39:05 +01:00
Bas van Kervel
56b446190a ethstats: check if received event is valid 2016-11-30 17:47:39 +01:00
Péter Szilágyi
86f9e836be cmd/geth: tidied up the source (#3385)
cmd/geth: tidied up the source
2016-11-30 13:34:24 +02:00
Péter Szilágyi
a90a170361 Merge pull request #3373 from karalabe/ethstats-block-fields
ethstats: don't drop concurrent head reports (mini forks)
2016-11-30 12:36:22 +02:00
Péter Szilágyi
889a5e0cf1 Merge pull request #3368 from bas-vk/sha3
node: improve error handling for web3_sha3 RPC method
2016-11-30 12:10:05 +02:00
Martin Holst Swende
9f8bc00cf5 eth, miner: removed unnecessary state.Copy()
* miner: removed unnecessary state.Copy()

* eth: made use of new miner method without state copying

* miner: More documentation about new method
2016-11-30 11:48:48 +02:00
Luca Zeug
3363a1c227 cmd/utils: update helpscreen's testnet description (#3377) 2016-11-29 16:23:11 +02:00
Péter Szilágyi
fc9939c4e1 Merge pull request #3376 from karalabe/drop-dao-flags
cmd: drop DAO related choice flags since ETC diverged
2016-11-29 16:12:40 +02:00
Péter Szilágyi
7267f796e6 cmd: drop DAO related choice flags since ETC diverged 2016-11-29 15:50:27 +02:00
Péter Szilágyi
7dfeceb8cc ethstats: don't drop concurrent head reports (mini forks) 2016-11-29 14:17:20 +02:00
Péter Szilágyi
3807e520ec Merge pull request #3370 from karalabe/ethstats-block-fields
ethstats: report block miner, gas limit and gas consumption
2016-11-29 13:15:58 +02:00
Péter Szilágyi
7625b1a4f4 ethstats: report block miner, gas limit and gas consumption 2016-11-29 11:39:56 +02:00
Bas van Kervel
1fc5cc1b59 node: improve error handling for web3_sha3 RPC method 2016-11-29 09:36:51 +01:00
Steven Roose
61ccb43487 core/types: Document Transaction.To (#3366) 2016-11-28 21:56:38 +01:00
Jeffrey Wilcke
bf24b120d7 VERSION, params: bump unstable version 1.5.5 (#3361) 2016-11-28 15:09:12 +01:00
Jeffrey Wilcke
b70acf3c5b params: stable version 1.5.4 (#3360) 2016-11-28 14:59:26 +01:00
bas-vk
b5be6b72cb eth/filter: add support for pending logs (#3219) 2016-11-28 14:59:06 +01:00
Felix Lange
318ad3c1e4 common/hexutil: fix Test{Decode,Unmarshal}Uint64 on 32bit arch (#3363) 2016-11-28 13:55:56 +01:00
Viktor Trón
e949a2ed2f cmd/bzzd: swarm daemon fixes (#3359)
* cmd/bzzd: add missing p2p/discovery flags
* cmd/bzzd: fix two bugs crashing bzzd if bootnodes flag given
* cmd/bzzd: make no swap default, renamed flag bzznoswap->bzzswap
* internal/web3ext: correct methods for bzz IPC module
* cmd/bzzd: ethapi param not mandatory. Warning if no blockchain
* cmd/bzzd: correct default IPC modules in help string
* cmd/utils: fix help description for networkId - add Ropsten
* cmd/bzz, swarm/api, swarm/network: add swarm networkId flag
* cmd/bzzd: change nosync flag to sync and BootTFlag
2016-11-28 13:29:33 +01:00
Péter Szilágyi
8d0108fc5d Merge pull request #3355 from fjl/hexutil-2
Improve hex encoding/decoding
2016-11-28 13:29:16 +02:00
Péter Szilágyi
ba41efa8a0 Merge pull request #3362 from karalabe/cocoapods-fix-3000
build: use single CocoaPods package, pre-release dev builds
2016-11-28 13:28:02 +02:00
Péter Szilágyi
f81660b6db build: use single CocoaPods package, pre-release dev builds 2016-11-28 13:09:43 +02:00
Felix Lange
91bceb4ace ethclient: "addresses" -> "address" in filter query encoding 2016-11-28 11:37:13 +01:00
Felix Lange
be746628c7 eth/filters: simplify query object decoding 2016-11-28 11:37:13 +01:00
Felix Lange
ec5f531f4b accounts: don't use common.Address for address field
common.Address JSON encoding now enforces the 0x prefix, but key files
don't have the prefix.
2016-11-28 11:37:13 +01:00
Felix Lange
37e5816bcd common: use package hexutil for fixed size type encoding 2016-11-28 11:37:13 +01:00
Felföldi Zsolt
665bb43a4c light: implemented VMState.Empty() (#3357) 2016-11-28 11:31:15 +01:00
Viktor Trón
e4bf004560 build/ci: add swarm related executables (bzzd, bzzup, bzzhash) to binary packages (#3354) 2016-11-28 11:25:19 +01:00
Felix Lange
1609df3275 ethclient: use package hexutil for JSON handling 2016-11-28 11:22:52 +01:00
Felix Lange
24f288770e core/types: use package hexutil for JSON handling 2016-11-28 11:22:52 +01:00
Felix Lange
65e6319b12 core/vm: use package hexutil for JSON handling 2016-11-28 11:22:52 +01:00
Felix Lange
ec75953f50 common/hexutil: new package for 0x hex encoding
The new package is purpose-built to handle the encoding consumed and
produced by the RPC API.
2016-11-28 11:22:52 +01:00
Jeffrey Wilcke
801a13f791 core: fixed unwinding bad hash (#3347)
Fixed unwinding of bad hashes when already on the canon chain
2016-11-28 10:37:42 +01:00
Péter Szilágyi
eea8d6aa96 Merge pull request #3356 from fjl/accounts-no-watch-on-windows
accounts: disable file system watcher on windows
2016-11-28 10:36:39 +02:00
Péter Szilágyi
2b9cd71d67 Merge pull request #3352 from fjl/build-git-tag
internal/build: use 'git tag --points-at' to get the current tag
2016-11-28 10:33:12 +02:00
Felix Lange
5df83e3bd9 accounts: disable file system watcher on windows
The watcher is unreliable and causes test failures on Windows.
Disable it until we have a better solution.
2016-11-28 03:09:58 +01:00
Jeffrey Wilcke
6061707371 core: eip unit tests (#3309) 2016-11-28 01:33:28 +01:00
Felix Lange
20899c05a4 internal/build: use 'git tag --points-at' to get the current tag
This should restore support for building with git 1.x.
2016-11-27 18:42:48 +01:00
Péter Szilágyi
4c8c5e2f74 cmd, ethstats, les, mobile, params: native netstats (#3336) 2016-11-25 16:55:06 +01:00
Felix Lange
d1a95c643e Merge pull request #3325 from fjl/p2p-netrestrict
Prevent relay of invalid IPs, add --netrestrict
2016-11-25 13:59:18 +01:00
Péter Szilágyi
9c3ea0d32d Merge pull request #3346 from obscuren/registrar-removal
common/registrar, eth: removed registrar (tech debt)
2016-11-25 14:22:53 +02:00
Jeffrey Wilcke
67e0894d9e common/httpclient, les: removed httpclient 2016-11-25 13:10:44 +01:00
Jeffrey Wilcke
6cc87a31c6 cmd/utils, internal/web3ext: removed httpGet 2016-11-25 12:31:06 +01:00
Jeffrey Wilcke
b8c766a9c5 eth: removed http doc backend api 2016-11-25 12:17:10 +01:00
Péter Szilágyi
66441c9b4b Merge pull request #3345 from karalabe/cleanup-mobile-crossbuilds
Makefile, build: do proper mobile builds, not cross builds
2016-11-25 13:15:57 +02:00
Felix Lange
18d51d1de8 common/registrar: delete the old registrar code
The registrar was broken, unmaintained and there is a much better
replacement: ENS.

(cherry picked from commit 6ca8f57b08d550613175260cab7633adcacbe6ab)
2016-11-25 12:15:28 +01:00
Felix Lange
01d5fc670b internal/web3ext: remove registrar-related extensions
(cherry picked from commit d54ad55c6079ae6eab93d7f34ce5c4ec829f8e5b)
2016-11-25 12:15:12 +01:00
Péter Szilágyi
0f1cbfd3da Makefile, build: do proper mobile builds, not cross builds 2016-11-25 12:51:10 +02:00
Felix Lange
586f10ecb1 cmd/utils, VERSION: 1.5.4 unstable 2016-11-24 23:06:25 +01:00
Felix Lange
978737f5d5 cmd/utils: 1.5.3 stable 2016-11-24 23:03:13 +01:00
Felix Lange
fa0e057f8a Merge pull request #3341 from obscuren/touch-delete-fix
core, core/state: fixed consensus issue added touch revert
2016-11-24 23:01:34 +01:00
Felix Lange
bca7bfa927 tests: update from github.com/ethereum/tests @ f21c49dc816e 2016-11-24 22:54:50 +01:00
Jeffrey Wilcke
12d654a6fc core, core/state: fixed consensus issue added touch revert
Implemented proper touch revert journal entries and copied a Parity
consensus bug in order to remain in sync with the current longest chain.
2016-11-24 22:12:54 +01:00
Péter Szilágyi
8e64e4383c Merge pull request #3338 from karalabe/miner-driveby-cleanup
miner: remove dead code, add gas price getter
2016-11-24 15:35:38 +02:00
Péter Szilágyi
f59d8cde26 Merge pull request #3337 from karalabe/core-driveby-cleanup
core: remove dead event
2016-11-24 15:34:51 +02:00
Péter Szilágyi
94c0519be2 miner: remove dead code, add gas price getter 2016-11-24 15:24:49 +02:00
Péter Szilágyi
529c502876 core: remove dead event 2016-11-24 15:23:01 +02:00
Jeffrey Wilcke
c04c8f10f0 core: improved bad block error reporting (#3320) 2016-11-23 13:32:25 +01:00
Péter Szilágyi
e05d35e6e0 Merge pull request #3317 from fjl/build-unstable-simplify
build, internal/build: simplify unstable build checks
2016-11-23 12:24:28 +02:00
Felix Lange
e1e2df656a internal/build: add support for git tag in local Environment
I didn't add this initially because the command I tried was too slow.
The 'git for-each-ref ...' invocation takes 40ms on my machine. That
ought to be acceptable.
2016-11-23 10:40:22 +01:00
Péter Szilágyi
f7da5b29f0 Merge pull request #3327 from karalabe/cocoapods-version-round2
build: remove hash metadata from cocoapod version
2016-11-23 11:32:49 +02:00
Péter Szilágyi
2b4c236773 build: remove hash metadata from cocoapod version 2016-11-23 10:49:25 +02:00
Jeffrey Wilcke
a8ca75738a core: implemented new ropsten testnet 2016-11-23 09:34:01 +01:00
Jeffrey Wilcke
aad4890082 cmd/geth, core, light, mobile: removed state account StartingNonce
All account's nonce start at 0.
2016-11-23 09:34:01 +01:00
Felix Lange
e5edd3b983 cmd/bootnode, cmd/geth, cmd/bzzd: add --netrestrict 2016-11-22 22:21:18 +01:00
Felix Lange
a47341cf96 p2p, p2p/discover, p2p/discv5: add IP network restriction feature
The p2p packages can now be configured to restrict all communication to
a certain subset of IP networks. This feature is meant to be used for
private networks.
2016-11-22 22:21:18 +01:00
Felix Lange
e46bda5093 swarm/network: prevent relay of invalid IPs 2016-11-22 22:21:18 +01:00
Felix Lange
a98d1d67d6 p2p/discover, p2p/discv5: prevent relay of invalid IPs and low ports
The discovery DHT contains a number of hosts with LAN and loopback IPs.
These get relayed because some implementations do not perform any checks
on the IP.

go-ethereum already prevented relay in most cases because it verifies
that the host actually exists before adding it to the local table. But
this verification causes other issues. We have received several reports
where people's VPSs got shut down by hosting providers because sending
packets to random LAN hosts is indistinguishable from a slow port scan.

The new check prevents sending random packets to LAN by discarding LAN
IPs sent by Internet hosts (and loopback IPs from LAN and Internet
hosts). The new check also blacklists almost all currently registered
special-purpose networks assigned by IANA to avoid inciting random
responses from services in the LAN.

As another precaution against abuse of the DHT, ports below 1024 are now
considered invalid.
2016-11-22 22:21:18 +01:00
Felix Lange
ba2884f343 p2p/discover, p2p/discv5: use netutil.IsTemporaryError 2016-11-22 22:21:15 +01:00
Felix Lange
1d80155d5e p2p/netutil: new package for network utilities
The new package contains three things for now:

- IP network list parsing and matching
- The WSAEMSGSIZE workaround, which is duplicated in p2p/discover and
  p2p/discv5.
2016-11-22 22:20:38 +01:00
Péter Szilágyi
a0e42aa4e2 build: mobile CI fixes (#3322)
* build: use metatags on cocoapods, not prerelease tags
* build: fix Maven and CocoaPods author email addresses
2016-11-22 17:35:49 +01:00
Felix Lange
92959cd4ef appveyor: use native 32bit go
This simplifies the build and should speed it up a bit because the
standard library doesn't need to be cross compiled on the 32bit builder.
2016-11-21 12:22:55 +01:00
sandakersmann
2c802399c3 README: Changed http:// to https:// for swarm link (#3312)
Changed http:// to https:// on one link in README.md
2016-11-20 19:40:59 +01:00
Felix Lange
8ed72a8470 build: simplify unstable build check
ci.go decides whether a build is unstable by looking at the branch and
tag. This causes issues when a GitHub release is created on the master
branch because the build is considered unstable (the CI environment
reports the branch as "master").

Fix this by looking at the tag only. Any tagged build is stable.
2016-11-18 19:55:19 +01:00
Aron Fischer
0d9a8207d6 cmd/bzzup: trim directory in the manifest entry path (#3299) 2016-11-18 14:41:37 +01:00
FrankWang
04edbb0703 node: Remove redundant filepath.Join in parsePersistentNodes (#3300) 2016-11-18 12:45:06 +01:00
Nick Johnson
e1c1fce92c cmd/utils, VERSION: 1.5.3 unstable (#3306) 2016-11-18 12:33:47 +01:00
Nick Johnson
c8695209f6 core: Don't perform EIP150 hash check on uncles (#3303) 2016-11-18 12:01:54 +01:00
Nick Johnson
9b95112a2d cmd/utils: Set version string to stable (#3304) 2016-11-18 11:57:48 +01:00
Viktor Trón
a602c57c8d README: add documentation for bzz related executables to the table (#3294) 2016-11-18 11:56:27 +01:00
Péter Szilágyi
f3228592f5 travis: dash of black magic to summon the cache daemon (#3288) 2016-11-17 16:15:17 +01:00
Nick Johnson
87b8254da1 Dockerfile: Add git dependency to Dockerfile (#3295) 2016-11-17 15:38:14 +01:00
Felix Lange
20eab80189 cmd/utils, VERSION: 1.5.2 unstable 2016-11-17 14:40:32 +01:00
Jeffrey Wilcke
810389c07a Merge pull request #3278 from obscuren/version-1-5-1
utils: bump stable 1.5.1
2016-11-16 13:10:03 +01:00
Jeffrey Wilcke
3badd3782b Merge pull request #3280 from fjl/fix-go15
build: set GO15VENDOREXPERIMENT in env.sh
2016-11-16 13:07:44 +01:00
Felix Lange
be2a264915 build: set GO15VENDOREXPERIMENT in env.sh
This should fix the 'make' build with Go 1.5.
2016-11-16 10:54:05 +01:00
Jeffrey Wilcke
b81baf5423 utils: bump stable 2016-11-16 10:46:22 +01:00
Péter Szilágyi
64359c9417 cmd/utils, mobile, params: set the correct field on testnet EIP 155 (#3272) 2016-11-16 00:46:40 +01:00
Péter Szilágyi
5a3853f83f travis: only install the needed three android platforms (#3274) 2016-11-16 00:44:37 +01:00
Péter Szilágyi
532d746036 Merge pull request #3275 from obscuren/les-print-fix
les: fixed logging
2016-11-16 00:08:47 +02:00
Jeffrey Wilcke
c66e18b175 Merge pull request #3271 from Arachnid/dockerfiles
Dockerfile revamp
2016-11-15 22:54:51 +01:00
Jeffrey Wilcke
2d4bd3b3ad les: fixed logging 2016-11-15 22:48:00 +01:00
Felix Lange
a96d6c68e2 cmd/utils: remove jit flag handling (#3273)
The jit config options are not handled, but random selection still took
place, printing confusing messages.
2016-11-15 22:20:18 +01:00
Nick Johnson
504815091f containers/docker: Fix dockerfiles for new branch layout; add dockerfile in root 2016-11-15 17:57:56 +00:00
Péter Szilágyi
4dd3e7fe35 Merge pull request #3270 from fjl/version-1.5.1
README, VERSION: update for 1.5 release
2016-11-15 16:56:29 +02:00
Felix Lange
4c614909ff README: update for develop->master switch, remove old build table 2016-11-15 15:53:35 +01:00
Felix Lange
b0a23c73cf VERSION: bump unstable version to 1.5.1 2016-11-15 15:46:51 +01:00
Jeffrey Wilcke
922c1f8f9f Merge pull request #3260 from obscuren/version-1-5-1
utils: unstable 1.5.1
2016-11-15 14:33:14 +01:00
Jeffrey Wilcke
c3c58eb601 Merge pull request #3259 from obscuren/version-1-5-0
utils: stable 1.5.0
2016-11-15 14:29:33 +01:00
Jeffrey Wilcke
ce3c52d17d Merge pull request #3268 from fjl/build-master-unstable
build: master is unstable
2016-11-15 14:29:22 +01:00
Felix Lange
6663d0264e build: master is unstable 2016-11-15 14:11:27 +01:00
Péter Szilágyi
6e4d623dc8 Merge pull request #3266 from fjl/travis-ppa-live
travis.yml: upload to the real PPA
2016-11-15 12:39:45 +02:00
Felix Lange
8e704d9718 travis.yml: upload to the real PPA 2016-11-15 11:13:07 +01:00
Péter Szilágyi
5bd32bd90d travis: force xcode to finish iOS simulator configs (#3265) 2016-11-15 10:44:54 +01:00
Jeffrey Wilcke
b9f417e2e6 params: hardfork blocknumber (#3264) 2016-11-15 10:43:23 +01:00
Péter Szilágyi
9f7b087235 Merge pull request #3263 from karalabe/travis-cocoapods-gpg2
travis, build: further maven and gpg refinements
2016-11-15 10:40:28 +02:00
Péter Szilágyi
2cb9738649 travis, build: further maven and gpg refinements 2016-11-15 10:25:51 +02:00
Péter Szilágyi
0dc590a9f8 Merge pull request #3262 from karalabe/travis-cocoapods-gpg2
travis, build: fix mobile build issues on travis
2016-11-15 09:50:47 +02:00
Péter Szilágyi
dfd2c60509 travis, build: fix mobile build issues on travis 2016-11-15 09:49:00 +02:00
Jeffrey Wilcke
fd27393df3 utils: unstable 1.5.1 2016-11-15 00:40:40 +01:00
Jeffrey Wilcke
233950da40 utils: stable 1.5.0 2016-11-15 00:39:12 +01:00
Péter Szilágyi
bd0aafb4fd Merge pull request #3258 from karalabe/unfuckup-travis
travis: work around "timeout features"
2016-11-15 01:17:12 +02:00
Jeffrey Wilcke
a672eae3d1 core, core/types: refactored tx chain id checking (#3257)
* core, core/types: refactored tx chain id checking

Refactored explicit chain id checking in to the Sender deriviation method

* cmd/utils, params: define chain ids
2016-11-14 21:37:13 +01:00
Péter Szilágyi
99d0d771a7 travis: work around "timeout features" 2016-11-14 20:10:22 +02:00
Felix Lange
8dcea0ac07 Merge pull request #2977 from karalabe/initial-mobile-suport
mobile: initial wrappers for mobile support
2016-11-14 18:10:03 +01:00
Jeffrey Wilcke
7a6c6ec946 cmd/utils, params: define chain ids 2016-11-14 17:23:39 +01:00
Péter Szilágyi
dfe79cc784 cmd/utils, mobile: place bootnodes in LGPL packages 2016-11-14 18:00:14 +02:00
Péter Szilágyi
4a439c2359 mobile: port wrappers to EIP155 and EIP158 fork 2016-11-14 18:00:14 +02:00
Péter Szilágyi
4c16c82500 travis, build: cocoapods build fixes and travis caches 2016-11-14 18:00:14 +02:00
Péter Szilágyi
5513c49c54 accounts/abi/bind, mobile: review fixes and android tests 2016-11-14 18:00:14 +02:00
Péter Szilágyi
b61f48e5aa cmd, mobile, node, p2p: surface the discovery V5 bootnodes 2016-11-14 18:00:14 +02:00
Péter Szilágyi
de4b39a1a3 cmd/utils, mobile: update to reprice HF and light client 2016-11-14 17:56:58 +02:00
Péter Szilágyi
322502b441 build: iOS XCode framework build and upload 2016-11-14 17:56:58 +02:00
Péter Szilágyi
b7dfd333c5 .travis, build: Build step to push .aar to Maven Central 2016-11-14 17:56:58 +02:00
Péter Szilágyi
178da7c6a9 mobile: initial wrappers for mobile support 2016-11-14 17:56:58 +02:00
Felix Lange
d89ea3e6f9 Merge pull request #3253 from zsfelfoldi/light-topic3
Light client bugfixes and updates
2016-11-14 16:56:27 +01:00
Jeffrey Wilcke
6c9c1e6712 core, core/types: refactored tx chain id checking
Refactored explicit chain id checking in to the Sender deriviation method
2016-11-14 15:59:31 +01:00
Zsolt Felfoldi
b10bcd924b core/types: turn off nonce checking for Call messages 2016-11-14 14:16:06 +01:00
Zsolt Felfoldi
d8e2e9a41f light: updated CHTs for mainnet and testnet 2016-11-14 13:22:19 +01:00
Zsolt Felfoldi
1f70b279ba p2p/discv5: added new bootnodes 2016-11-14 13:22:19 +01:00
Zsolt Felfoldi
e33e57684f p2p/discv5: fixed bootnode connect issues 2016-11-14 13:22:19 +01:00
Zsolt Felfoldi
a0c6649960 les/flowcontrol: fixed locking scheme 2016-11-14 13:22:19 +01:00
Felix Lange
ca73dea3b9 Merge pull request #3179 from obscuren/eip-158
EIP158 & 160 Hardfork
2016-11-14 10:52:02 +01:00
Jeffrey Wilcke
648bd22427 core/vm/runtime: fixed go vet 2016-11-13 23:26:10 +01:00
Jeffrey Wilcke
0231d8f86d core, params: EIP#170 2016-11-13 23:26:10 +01:00
Jeffrey Wilcke
a91908e567 tests: updated 2016-11-13 23:26:07 +01:00
Jeffrey Wilcke
ae33883c2f cmd/utils: set temporary HF number 2016-11-13 15:50:32 +01:00
Jeffrey Wilcke
4dca5d4db7 core/types, params: EIP#155 2016-11-13 14:55:30 +01:00
Jeffrey Wilcke
21701190ac les: cleaned up logging (#3256) 2016-11-13 12:34:50 +01:00
Jeffrey Wilcke
5cd86443ee tests: added new EIP158 tests 2016-11-13 10:44:06 +01:00
Jeffrey Wilcke
779ddb1832 core/vm, params: EIP160: EXP reprice 2016-11-13 10:44:04 +01:00
Jeffrey Wilcke
445feaeef5 core, core/state, trie: EIP158, reprice & skip empty account write
This commit implements EIP158 part 1, 2, 3 & 4

1. If an account is empty it's no longer written to the trie. An empty
  account is defined as (balance=0, nonce=0, storage=0, code=0).
2. Delete an empty account if it's touched
3. An empty account is redefined as either non-existent or empty.
4. Zero value calls and zero value suicides no longer consume the 25k
  reation costs.

params: moved core/config to params

Signed-off-by: Jeffrey Wilcke <jeffrey@ethereum.org>
2016-11-13 10:44:04 +01:00
Felix Lange
932d973e36 Merge pull request #3248 from zsfelfoldi/light-topic3
Topic discovery bugfix
2016-11-11 06:28:33 +01:00
Felix Lange
9eb6f627fa Merge pull request #3247 from fjl/bzzd
cmd: add swarm command line tools
2016-11-11 06:13:16 +01:00
Zsolt Felfoldi
323c2d6775 les: add missing nil check and handle quit in findServers 2016-11-11 03:16:46 +01:00
Zsolt Felfoldi
09baeec0da discv5: fixed state machine lockup bug 2016-11-11 03:10:46 +01:00
Felix Lange
8247bccf71 cmd/bzzhash: add swarm hashing tool 2016-11-11 00:15:21 +01:00
Felix Lange
bbf37c0404 cmd/bzzup: add swarm upload tool 2016-11-11 00:15:21 +01:00
Felix Lange
e336b0d60e cmd/bzzd: add swarm server daemon 2016-11-11 00:15:21 +01:00
Felix Lange
5cd4430a8d swarm/api/http: reject requests without content-length 2016-11-11 00:15:21 +01:00
Felix Lange
23420ff67a swarm/network: skip TestSyncDb 2016-11-11 00:15:21 +01:00
Felix Lange
ef50e01c5e swarm/api: add bzz prefix to swarm directory 2016-11-11 00:15:20 +01:00
Felix Lange
cc0064b267 node: add InstanceDir method 2016-11-10 17:47:07 +01:00
Felix Lange
1aaa599147 accounts: add Find method 2016-11-10 17:46:45 +01:00
Felix Lange
d27472cc74 cmd/v5test: delete the v5test tool 2016-11-10 17:46:45 +01:00
Kenji Siu
80ea44c485 cmd/geth: improve command help messages (#3227) 2016-11-10 13:00:09 +02:00
Péter Szilágyi
dba29970d7 Merge pull request #3244 from karalabe/reinstate-cache
cmd/geth: reinstate dropped --cache flag
2016-11-09 19:21:30 +02:00
Péter Szilágyi
4cd2617848 cmd/geth: reinstate dropped --cache flag 2016-11-09 19:18:20 +02:00
xiekeyang
5b31794dfe cmd/geth: use a loop in TestDAOForkBlockNewChain (#3222) 2016-11-09 03:15:48 +01:00
Felix Lange
355f4b0c15 Merge pull request #3232 from zsfelfoldi/light-topic3 2016-11-09 03:09:05 +01:00
Felix Lange
bbb5e5d56a les: print 'experimental feature' warning on startup 2016-11-09 02:51:34 +01:00
Felix Lange
b8bd9a71c8 all: update license information 2016-11-09 02:51:34 +01:00
Felix Lange
be3865211c core/types: remove header accessors
These accessors were introduced by light client changes, but
the only method that is actually used is GetNumberU64. This
commit replaces all uses of .GetNumberU64 with .Number.Uint64.
2016-11-09 02:19:07 +01:00
Felix Lange
0f19cbc6e5 p2p/discv5: fix build with Go 1.5, delete package testimg 2016-11-09 02:18:48 +01:00
Zsolt Felfoldi
49da42983a p2p/discv5: added new topic discovery package 2016-11-09 02:12:53 +01:00
zsfelfoldi
7db7109a5b cmd, eth: added light client and light server modes 2016-11-09 02:12:53 +01:00
Zsolt Felfoldi
9f8d192991 les: light client protocol and API 2016-11-09 02:12:53 +01:00
Zsolt Felfoldi
760fd65487 light: light chain, VM env and tx pool 2016-11-09 02:12:53 +01:00
Felix Lange
8b1df1a259 build: fix remote path for archive uploads (#3243)
archiveUpload did not handle absolute paths correctly. Fix it by using
the basename and ensure that uploads can be tested using -n.
2016-11-08 23:46:46 +01:00
Péter Szilágyi
9bc97a5785 build: NSIS based Windows installer (#3240)
This commit adds support for creating Windows installers to ci.go
2016-11-08 22:55:39 +01:00
Péter Szilágyi
6707f70b4a Merge pull request #3241 from karalabe/fix-pgp-signer
internal/build: call correct signer method
2016-11-08 11:04:53 +02:00
Péter Szilágyi
df30ef5177 internal/build: call correct signer method 2016-11-08 10:59:19 +02:00
Péter Szilágyi
7e8ad6cad3 Merge pull request #3239 from karalabe/fix-windows-separators
build: fix missing .exe executable names on cross builds
2016-11-07 12:37:35 +02:00
Péter Szilágyi
e0e18f3841 Merge pull request #3231 from fjl/liner-update
console, vendor: update liner and enable multiline mode
2016-11-07 12:29:50 +02:00
Péter Szilágyi
328f0dd631 build: fix missing .exe executable names on cross builds 2016-11-07 12:18:28 +02:00
Péter Szilágyi
15c8d46b04 Merge pull request #3238 from karalabe/appveyor-azure-push
appveyor: build 386 too, upload both to the gethstore
2016-11-07 11:52:10 +02:00
Péter Szilágyi
052918a6d9 appveyor: build 386 too, upload both to the gethstore 2016-11-07 00:13:45 +02:00
Péter Szilágyi
afe41de6b3 travis: build to all supported linux architectures (#3235) 2016-11-04 12:48:20 +01:00
RJ
2ad5dba50a accounts/abi: differentiate between static and dynamic arrays (#3121)
solves #3119

Signed-off-by: VoR0220 <rj@erisindustries.com>
2016-11-03 23:25:19 +01:00
Felix Lange
0b8a14fed7 console: enable multiline mode 2016-11-03 19:57:04 +01:00
Felix Lange
ac9013162e vendor: update github.com/peterh/liner 2016-11-03 19:51:19 +01:00
Felix Lange
ed2bc7fbe9 build, internal/build: misc improvements (#3229)
* travis.yml: don't create darwin/386 builds

* build: remove godep remains

* internal/build: improve archives

- enable compression for zip files
- don't write half-complete archives

* build: add -unstable to archive names
2016-11-03 14:44:16 +02:00
Felix Lange
d0c820acd6 Merge pull request #3226 from karalabe/azure-gethstore
travis, build: implement uploading archives to azure
2016-11-03 10:41:20 +01:00
Péter Szilágyi
2f9f2cbb19 travis, build: enable 386 builds too for linux and osx 2016-11-03 10:32:58 +02:00
Péter Szilágyi
bad0de0dcb vendor: pull in azure sdk and openpgp signer 2016-11-03 10:32:57 +02:00
Péter Szilágyi
3b62c145f8 travis, build: implement uploading archives to azure 2016-11-03 10:32:53 +02:00
Péter Szilágyi
3914e82f17 Merge pull request #3225 from kenji-isuntv/develop
common/math: go fmt
2016-11-02 18:38:22 +02:00
Kenji Siu
b522b788b6 common/math: go fmt 2016-11-02 22:58:59 +08:00
Jeffrey Wilcke
1b73c79234 common/math, core/vm: implement fast EXP (#3214)
* common/math, core/vm: implement fast EXP.

Courtesy @chfast & @karalabe

* common/math: fix go vet issues on exp calculation
2016-11-02 13:43:15 +02:00
Martin Holst Swende
36956da4d2 core: metrics collection for transaction events (#3157)
* core: Add metrics collection for transaction events; replace/discard for pending and future queues, as well as invalid transactions

* core: change namespace for txpool metrics

* core: define more metrics (not yet used)

* core: implement more tx metrics for when transactions are dropped

* core: minor formatting tweeks (will squash later)

* core: remove superfluous meter, fix missing pending nofunds

* core, metrics: switch txpool meters to counters
2016-11-01 14:46:11 +02:00
Péter Szilágyi
f4d878f3d8 Merge pull request #3216 from karalabe/fastsync-bigdb-tuning
core/state, eth/downloader, trie: reset fast-failure on progress
2016-11-01 13:31:12 +02:00
Péter Szilágyi
61acd18e79 Merge pull request #3218 from kenji-isuntv/develop
internal/debug, internal/ethapi, rpc, swarm/storage: go fmt
2016-11-01 13:16:22 +02:00
Péter Szilágyi
e1b4acfb6e eth/downloader: clear pending requests when switching trie root 2016-11-01 12:53:33 +02:00
Kenji Siu
d85d3c74db internal/debug, internal/ethapi, rpc, swarm/storage: Ran "go fmt" 2016-11-01 18:40:36 +08:00
Péter Szilágyi
8ecee175f2 eth/downloader: lower a state sync log level (users freak out) 2016-10-31 18:28:03 +02:00
Péter Szilágyi
8b10617bba eth/downloader: reduce fast sync block requirements, fix test 2016-10-31 17:26:44 +02:00
Péter Szilágyi
90b16a3e85 core/state, eth/downloader, trie: reset fast-failure on progress 2016-10-31 14:19:14 +02:00
Jeffrey Wilcke
4dc1fb923a Merge pull request #3064 from pirapira/limit_struct_logs
core/vm: add limit option to LogConfig
2016-10-31 12:07:43 +01:00
Péter Szilágyi
b8dec948d4 Merge pull request #3215 from fjl/weird-files
all: remove weird files
2016-10-30 12:25:00 +02:00
Felix Lange
87670a7ac1 all: remove weird files 2016-10-30 11:02:34 +01:00
Péter Szilágyi
63d293cdbe Merge pull request #3195 from karalabe/fix-testnet-fastsync
cmd/utils, core, params: explicitly pick reprice fork for fast sync
2016-10-29 17:21:26 +03:00
Péter Szilágyi
f0dbec0c93 cmd, params: only set default fork configs for test and mainnet 2016-10-29 17:07:07 +03:00
gluk256
79789af2e7 whisper: project restructured, version 5 introduced (#3022)
whisper: project restructured, version 5 introduced

This commits adds a draft version of the new shh v5 protocol.
The new version is not on by default, --shh still selects version 2.
2016-10-29 14:11:37 +02:00
Péter Szilágyi
8639b0fae9 cmd/utils, core, params: explicitly pick reprice fork for fast sync 2016-10-29 12:10:00 +03:00
Nick Johnson
00665a0b72 cmd/evm: Allow stdin and files as sources of bytecode (#3172)
* cmd/evm: Allow stdin and files as sources of bytecode

* cmd/evm: Print and exit instead of panicing

* cmd/evm: fix compile and vet errors
2016-10-29 12:07:38 +03:00
bas-vk
b59c8399fb internal/ethapi: add personal_sign and fix eth_sign to hash message (#2940)
This commit includes several API changes:

- The behavior of eth_sign is changed. It now accepts an arbitrary
  message, prepends the well-known string

        \x19Ethereum Signed Message:\n<length of message>

  hashes the result using keccak256 and calculates the signature of
  the hash. This breaks backwards compatability!
  
- personal_sign(hash, address [, password]) is added. It has the same
  semantics as eth_sign but also accepts a password. The private key
  used to sign the hash is temporarily unlocked in the scope of the
  request.
  
- personal_recover(message, signature) is added and returns the
  address for the account that created a signature.
2016-10-28 21:25:49 +02:00
Péter Szilágyi
289b30715d Godeps, vendor: convert dependency management to trash (#3198)
This commit converts the dependency management from Godeps to the vendor
folder, also switching the tool from godep to trash. Since the upstream tool
lacks a few features proposed via a few PRs, until those PRs are merged in
(if), use github.com/karalabe/trash.

You can update dependencies via trash --update.

All dependencies have been updated to their latest version.

Parts of the build system are reworked to drop old notions of Godeps and
invocation of the go vet command so that it doesn't run against the vendor
folder, as that will just blow up during vetting.

The conversion drops OpenCL (and hence GPU mining support) from ethash and our
codebase. The short reasoning is that there's noone to maintain and having
opencl libs in our deps messes up builds as go install ./... tries to build
them, failing with unsatisfied link errors for the C OpenCL deps.

golang.org/x/net/context is not vendored in. We expect it to be fetched by the
user (i.e. using go get). To keep ci.go builds reproducible the package is
"vendored" in build/_vendor.
2016-10-28 19:05:01 +02:00
Steven Roose
7770304576 ethclient: changed TransactionByHash to only pass one argument to api method (#3209)
Fixes #3203
2016-10-27 23:10:24 +02:00
Péter Szilágyi
890ffa05f8 Merge pull request #3189 from fjl/leveldb-update
Update goleveldb, add debug.chaindbCompact
2016-10-21 19:14:11 +03:00
Hao Bryan Cheng
89014b4524 core/vm: Ignore EnableJit ChainConfig setting (#3166) 2016-10-21 17:35:03 +02:00
Péter Szilágyi
f8608a5228 trie: while fast syncing, don't keep trie nodes in memory (#3186) 2016-10-21 17:34:17 +02:00
Péter Szilágyi
437c1e40b2 Merge pull request #3185 from karalabe/fix-log-race
eth/downloader: fix a data race in a log output
2016-10-21 13:25:38 +03:00
Péter Szilágyi
53db80da89 eth/downloader: fix a data race in a log output 2016-10-21 13:09:27 +03:00
Péter Szilágyi
28cc3cc960 Merge pull request #3184 from karalabe/import-gas-use
cmd/geth, code, eth/downloader: tune import logs and mem stats
2016-10-21 12:37:59 +03:00
Péter Szilágyi
1291778032 cmd/geth, code, eth/downloader: tune import logs and mem stats 2016-10-21 12:23:39 +03:00
Felix Lange
b930baa580 Godeps: update github.com/syndtr/goleveldb to 6b4daa5362 2016-10-20 14:56:34 +02:00
Felix Lange
66ee2dec53 internal/ethapi: add debug.chaindbCompact 2016-10-20 14:37:01 +02:00
Péter Szilágyi
f2ae2f7eef Merge pull request #3176 from karalabe/trie-stats-report
cmd/geth, trie: report on trie cache unloads, also add debug log
2016-10-19 17:35:58 +03:00
Péter Szilágyi
88a593d559 cmd/geth, trie: report on trie cache unloads, also add debug log 2016-10-19 17:31:19 +03:00
Felix Lange
5d9bb0a050 trie: add metric to track cache unloading (#3175) 2016-10-19 16:07:19 +02:00
Péter Szilágyi
8048f4d4f6 Merge pull request #3173 from karalabe/parametrized-trie-cache-get
cmd, core/state: allow configurable trie cache generations
2016-10-19 16:42:54 +03:00
Felix Lange
d48e6ae66f trie: make the cache miss counter a real metric 2016-10-19 15:22:37 +02:00
Péter Szilágyi
4f46bd19d0 cmd, core/state: allow configurable trie cache generations 2016-10-19 14:55:13 +03:00
Jeffrey Wilcke
ca49510e6d Merge pull request #3168 from benjaminbrent/develop
core/vm: fix GASPRICE string (resolves #2553)
2016-10-19 13:36:13 +02:00
Jeffrey Wilcke
25ac04a444 Merge pull request #3153 from fjl/trie-unload-fix
trie: improve cache unloading mechanism
2016-10-19 13:35:49 +02:00
Péter Szilágyi
8e52c2e754 Merge pull request #3161 from karalabe/trie-cache-counters
cmd/geth, trie: track and report trie cache misses
2016-10-19 14:29:24 +03:00
Péter Szilágyi
2bb5ec1e41 cmd/geth, trie: track and report trie cache misses 2016-10-19 14:12:35 +03:00
Benjamin Brent
55522373fd core/vm: fix GASPRICE string (resolves #2553) 2016-10-19 15:55:34 +11:00
Nick Johnson
c9471e7782 miner: copy pending state before handing it to callers (#3162)
The pending state was not copied while not mining, leading to a data race.
2016-10-18 22:34:37 +02:00
Jeffrey Wilcke
5b262ff5ab Merge pull request #3156 from holiman/metrics-blocks
core: Add block processing time metric collection
2016-10-18 13:26:31 +02:00
Péter Szilágyi
e8d0538a00 Merge pull request #3160 from karalabe/import-database-stats
cmd/geth: compact and print database stats after an import
2016-10-18 14:09:02 +03:00
Péter Szilágyi
a1c63e8be6 cmd/geth: compact and print database stats after an import 2016-10-18 13:45:16 +03:00
Péter Szilágyi
a64b1b4375 Merge pull request #3158 from karalabe/pretty-print-imports
common, core, eth/downloader: adjust import log formatting
2016-10-18 13:29:06 +03:00
Péter Szilágyi
64500ab0fa common, core, eth/downloader: adjust import log formatting 2016-10-18 13:16:36 +03:00
Martin Holst Swende
00b853418e core: Add block processing time metric collection 2016-10-18 09:29:50 +02:00
Felix Lange
8d56bf5ceb trie: ensure dirty flag is unset for embedded child nodes
This was caught by the new invariant check.
2016-10-18 04:57:47 +02:00
Felix Lange
44f419ec0f core/state: bump trie cache values slightly 2016-10-18 04:57:47 +02:00
Felix Lange
177cab5fe7 trie: ensure resolved nodes stay loaded
Commit 40cdcf1183 broke the optimisation which kept nodes resolved
during Get in the trie. The decoder assigned cache generation 0
unconditionally, causing resolved nodes to get flushed on Commit.

This commit fixes it and adds two tests.
2016-10-18 04:57:47 +02:00
Felix Lange
187d6a66a5 trie: avoid loading the root node twice
New checks whether the root node is present by loading it from the
database. Keep the node around instead of discarding it.
2016-10-18 04:57:47 +02:00
Felix Lange
6952fe3a5c Merge pull request #3100 from kobigurk/develop
internal/ethapi, internal/web3ext: adds raw tx retrieval methods
2016-10-17 16:55:28 +02:00
Péter Szilágyi
b19b7c39ac Merge pull request #3142 from fjl/trie-sync-fix
trie: fix regression that linked all downloaded nodes together
2016-10-15 10:58:54 +03:00
Jeffrey Wilcke
9276c4e163 Merge pull request #3141 from obscuren/reprice-block-number
params: set reprice block number to 2463000
2016-10-15 00:50:45 +02:00
Felix Lange
2cd7a0395d trie: fix regression that linked all downloaded nodes together
The trie sync code links subtries using pointers into node structs.
Since commit 40cdcf1183 nodes are no longer copied when unpacking from
an interface value, causing all nodes to get linked up as the sync
progresses. Fix it by breaking the pointer chain with an explicit copy.
2016-10-15 00:42:52 +02:00
Jeffrey Wilcke
f2be249385 params: set reprice block number to 2463000 2016-10-15 00:36:49 +02:00
Péter Szilágyi
81b01f1c2b Merge pull request #3111 from obscuren/gas-price-fork
core, core/vm: added gas price variance table (EIP #150)
2016-10-14 19:32:11 +03:00
Péter Szilágyi
a4d9e63d12 Merge pull request #3138 from karalabe/txpool-pending-limits
core: add global (soft) limits on the pending transactions
2016-10-14 19:10:55 +03:00
Jeffrey Wilcke
64af2aafda core, core/vm: added gas price variance table
This implements 1b & 1c of EIP150 by adding a new GasTable which must be
returned from the RuleSet config method. This table is used to determine
the gas prices for the current epoch.

Please note that when the CreateBySuicide gas price is set it is assumed
that we're in the new epoch phase.

In addition this PR will serve as temporary basis while refactorisation
in being done in the EVM64 PR, which will substentially overhaul the gas
price code.
2016-10-14 18:09:17 +02:00
Felix Lange
40cdcf1183 trie, core/state: improve memory usage and performance (#3135)
* trie: store nodes as pointers

This avoids memory copies when unwrapping node interface values.

name      old time/op  new time/op  delta
Get        388ns ± 8%   215ns ± 2%  -44.56%  (p=0.000 n=15+15)
GetDB      363ns ± 3%   202ns ± 2%  -44.21%  (p=0.000 n=15+15)
UpdateBE  1.57µs ± 2%  1.29µs ± 3%  -17.80%  (p=0.000 n=13+15)
UpdateLE  1.92µs ± 2%  1.61µs ± 2%  -16.25%  (p=0.000 n=14+14)
HashBE    2.16µs ± 6%  2.18µs ± 6%     ~     (p=0.436 n=15+15)
HashLE    7.43µs ± 3%  7.21µs ± 3%   -2.96%  (p=0.000 n=15+13)

* trie: close temporary databases in GetDB benchmark

* trie: don't keep []byte from DB load around

Nodes decoded from a DB load kept hashes and values as sub-slices of
the DB value. This can be a problem because loading from leveldb often
returns []byte with a cap that's larger than necessary, increasing
memory usage.

* trie: unload old cached nodes

* trie, core/state: use cache unloading for account trie

* trie: use explicit private flags (fixes Go 1.5 reflection issue).

* trie: fixup cachegen overflow at request of nick

* core/state: rename journal size constant
2016-10-14 19:04:33 +03:00
Péter Szilágyi
182d9cb752 core: add global (soft) limits on the pending transactions 2016-10-14 15:57:58 +03:00
Péter Szilágyi
c2ddfb343a Merge pull request #3136 from Arachnid/expvar
metrics, internal/debug: Add --pprofaddr flag, expose metrics via gexp
2016-10-14 15:01:59 +03:00
Nick Johnson
9e9bfc4e26 metrics, internal/debug: Add --pprofaddr flag, expose metrics via gexp 2016-10-14 12:29:08 +01:00
Viktor Trón
f63c6c008f Merge pull request #3133 from ethersphere/http-fix
swarm: fix http API's last problems
2016-10-13 12:43:57 -07:00
Daniel A. Nagy
eb2f01aee8 swarm/storage: Allow EOF at the end of the reader in the chunker. Handle the case when Read returns less than length of target slice 2016-10-13 21:23:28 +02:00
Felix Lange
30fb5c3e81 Merge pull request #3108 from homotopycolimit/FixChunkerWithBrokenReader
swarm/storage: fixes for tree chunker in the context of a broken reader
2016-10-13 19:45:29 +02:00
Felix Lange
c780901cd5 Merge pull request #3120 from obscuren/reporter-fix
core: fixed import reporter
2016-10-12 20:14:19 +02:00
Jeffrey Wilcke
ca419f3cd8 core: fixed import reporter 2016-10-11 00:16:08 +02:00
aron
a45421baaf swarm/storage: fix chunker when reader is broken
* brokenLimitedReader gives error after half size
* TestRandomBrokenData tests chunker with broken reader
* add blocking quitC (instead of errC) and use errC only for errors
* don't close chunkC in tester Split,
* use quitC to quit chunk storage loop
2016-10-10 23:34:44 +02:00
Felix Lange
be6a3696a9 Merge pull request #3104 from fjl/core-import-log
core: print import stats more often
2016-10-10 20:38:27 +02:00
Felix Lange
7943ecb812 Merge pull request #3117 from fjl/txpool-low-limit
core: lower transaction pool max queue limit
2016-10-10 16:06:10 +02:00
Felix Lange
16d8397e30 core: lower transaction pool max queue limit 2016-10-10 15:32:06 +02:00
Kobi Gurkan
1a6682c21d internal/ethapi, internal/web3ext: adds raw tx retrieval methods 2016-10-10 12:57:15 +03:00
Felix Lange
82b14a05f2 eth: move "timed out DAO fork check, dropping" to debug level 2016-10-07 21:03:38 +02:00
Felix Lange
e66b158f0b core: print import stats more often
If geth is busy importing 2048 heavy blocks it can take a while before
it prints anything. This change ensures that a message gets printed
every 8s.
2016-10-07 21:03:38 +02:00
Felix Lange
c88e435724 Merge pull request #3088 from bas-vk/rpc-block-output
core/types: renamed receiptRoot to receiptsRoot
2016-10-06 18:32:27 +02:00
Felix Lange
eeb2a1a6e3 Merge pull request #3094 from fjl/tests-update
tests: update test files from github.com/ethereum/tests @ 45bc1d21d3c1
2016-10-06 16:19:53 +02:00
Jeffrey Wilcke
7335a70a02 Merge pull request #3092 from fjl/state-journal
core/state: implement reverts by journaling all changes
2016-10-06 16:14:22 +02:00
Felix Lange
1b7b2ba216 tests: update test files from github.com/ethereum/tests @ 45bc1d21d3c1
Two new tests are skipped because they're buggy. Making some newer
random state tests work required implementing the 'compressed return
value encoding'.
2016-10-06 15:36:21 +02:00
Felix Lange
3c836dd71b core/state: optimize GetState
There is no need to use the reflection-based decoder to decode []byte.
2016-10-06 15:32:17 +02:00
Felix Lange
90fce8bfa6 core/state: rename Delete/IsDeleted to Suicide/HasSuicided
The delete/remove naming has caused endless confusion in the past.
2016-10-06 15:32:17 +02:00
Felix Lange
1f1ea18b54 core/state: implement reverts by journaling all changes
This commit replaces the deep-copy based state revert mechanism with a
linear complexity journal. This commit also hides several internal
StateDB methods to limit the number of ways in which calling code can
use the journal incorrectly.

As usual consultation and bug fixes to the initial implementation were
provided by @karalabe, @obscuren and @Arachnid. Thank you!
2016-10-06 15:32:16 +02:00
Jeffrey Wilcke
07caa3fccd Merge pull request #3090 from karalabe/fix-eth-header-indexing
eth: monitor malicious header retrieval requests
2016-10-06 13:52:08 +02:00
Felix Lange
83fc6fdb34 Merge pull request #3089 from bas-vk/resend
internal/ethapi: bugfix gas price and limit swapped in eth_resend
2016-10-06 01:42:42 +02:00
Péter Szilágyi
2acb9a6ea7 Merge pull request #3081 from ethernomad/cors-max-age
rpc: set CORS Max-Age to reduce preflight OPTIONS requests
2016-10-05 16:47:10 +03:00
Péter Szilágyi
e482b5694f eth: monitor malicious header retrieval requests 2016-10-05 16:34:07 +03:00
Bas van Kervel
6c959207db internal/ethapi: bugfix gas price and limit swapped in eth_resend 2016-10-05 14:21:03 +02:00
Bas van Kervel
71e8ae01b8 core/types: renamed receiptRoot to receiptsRoot 2016-10-05 12:24:42 +02:00
Felix Lange
a7cc3248fe Merge pull request #3082 from fjl/build-fix-tag-appveyor
internal/build: fix git tag env variable for AppVeyor
2016-10-03 20:28:04 +02:00
Felix Lange
82e09c17a9 internal/build: fix git tag env variable for AppVeyor 2016-10-03 17:19:43 +02:00
Jonathan Brown
ae341b31c8 rpc: set CORS Max-Age to reduce preflight OPTIONS requests 2016-10-03 20:24:58 +07:00
Péter Szilágyi
ab7adb0027 Merge pull request #3073 from fjl/build-git17
internal/build: use less edgy command to get the branch name
2016-10-03 11:34:28 +03:00
Felix Lange
b4b5921dd0 internal/build: use less edgy command to get the branch name 2016-10-03 10:22:14 +02:00
Péter Szilágyi
c683e4aaa2 Merge pull request #3072 from karalabe/state-storage-dirty
core/state: track dirty state entries for each object
2016-10-03 11:15:48 +03:00
Péter Szilágyi
b7159818f9 core/state: track dirty state entries for each object 2016-10-03 10:48:01 +03:00
Péter Szilágyi
d4b55fc5b2 Merge pull request #3066 from fjl/build-env
build: improve debian packaging
2016-10-02 14:44:30 +03:00
Felix Lange
4f7627972e build: improve debian packaging
This commit tweaks the debian packaging tool:

* All build environment metadata can now be overriden on the command
  line. This allows testing the CI build behaviour locally.
* -unstable packages now actually contain the binaries (oops)
* packages use Go 1.7 to build
* archiving is skipped for PR builds
2016-10-02 13:08:56 +02:00
Felix Lange
920e1ccfe0 Merge pull request #3068 from fjl/update-sha3
crypto/sha3: update from golang.org/x/crypto/sha3 a 80b25ed4
2016-10-01 21:45:29 +02:00
Felix Lange
54ea317375 crypto/sha3: update from golang.org/x/crypto/sha3 a 80b25ed4
This pulls in the assembly implementation of keccakf1600 for amd64.
2016-10-01 21:26:43 +02:00
Péter Szilágyi
0731b44809 Merge pull request #3067 from karalabe/vm-avoid-hashing
cmd, core, internal, light, tests: avoid hashing the code in the VM
2016-10-01 16:58:49 +03:00
Péter Szilágyi
cb84e3f029 cmd, core, internal, light, tests: avoid hashing the code in the VM 2016-10-01 16:01:58 +03:00
Yoichi Hirai
bb6115b737 vm, ethapi: add limit option to traceTransaction
that specifies the maximum number of elements in the `structLogs`
output.  This option is useful for debugging a transaction that
involves a large number of repetition.

For example,
```
debug.traceTransaction(tx, {disableStorage: true, limit: 2})
```
shows at most the first two steps in the `structLogs`.
2016-09-30 17:36:00 +02:00
Péter Szilágyi
d8715fba1a Merge pull request #3062 from fjl/trie-delete-bug
trie: fix delete bug for values contained in fullNode
2016-09-30 16:44:00 +03:00
Felix Lange
b4cc8cbac4 Merge pull request #3032 from Gustav-Simonsson/keystore_padding
accounts: left pad keybytes-to-encrypt
2016-09-30 11:30:54 +02:00
Felix Lange
c3a77d6268 trie: fix delete bug for values contained in fullNode
Delete crashed if a fullNode contained a valueNode directly. This bug is
very unlikely to occur with SecureTrie, but can happen with regular
tries. This commit also introduces a randomised test which triggers all
trie operations, which should prevent such bugs in the future.

Credit for finding this bug goes to Github user @rjl493456442.
2016-09-29 22:53:59 +02:00
Felix Lange
ba8c4c6b1a trie: remove dependency on package crypto
Package crypto needs cgo, which is inconvenient for some build
configurations.
2016-09-29 22:23:24 +02:00
Felix Lange
44bc2e80dd Merge pull request #2914 from fjl/node-coinhabit
cmd/utils, node: make datadir reusable for bzzd
2016-09-29 14:24:37 +02:00
Péter Szilágyi
4e8cec05ab Merge pull request #3048 from sandakersmann/patch-2
README: Changed http:// to https:// on some links
2016-09-29 10:29:53 +03:00
ken10100147
afecb93e2e p2p/nat: fix parameter order for AddMapping 2016-09-28 12:11:58 +02:00
Péter Szilágyi
437c3863f1 Merge pull request #3053 from karalabe/fjl-state-trie-journal
core, trie: replace state caches with trie journal
2016-09-28 12:53:54 +03:00
Péter Szilágyi
710435b51b core, eth, trie: reuse trie journals in all our code 2016-09-28 11:27:31 +03:00
Felix Lange
cd791bd855 core, trie: replace state caches with trie journal 2016-09-28 11:27:28 +03:00
Gustav Simonsson
7cc6b801e0 accounts: left pad keybytes-to-encrypt, add 30/31 byte keys tests 2016-09-27 13:07:33 -04:00
sandakersmann
5a3844981b README: Changed http:// to https:// on some links
Changed http:// to https:// on some links in README.md
2016-09-27 08:48:55 +02:00
Felix Lange
863d166c7b Merge pull request #3043 from fjl/windows-fix-fatalf
cmd/utils: don't check for stderr redirect on windows
2016-09-26 18:29:56 +02:00
Felix Lange
b04219fdbb cmd/utils: don't check for stderr redirect on windows
The redirect check did not work on Go 1.6 and below because Stat
returned an error for stdout and stderr. In Go 1.7 Stat works on stdout
but doesn't return anything meaningful, causing cmd/geth test failures
because the message is printed to stderr only. Fix it by printing to
stdout only.
2016-09-26 17:35:19 +02:00
Péter Szilágyi
61734cc7ae Merge pull request #3041 from fjl/build-less-parallel
build: limit test concurrency
2016-09-26 16:31:10 +03:00
Felix Lange
0951524ca2 travis.yml: remove go 1.4 builder 2016-09-26 13:48:15 +02:00
Felix Lange
b0a6b979a3 build: limit test concurrency
TravisCI and AppVeyor run the tests in very slow VMs.
Some of our tests can't cope with that. Running less tests
in parallel should make them somewhat less flakey.
2016-09-26 13:41:18 +02:00
Péter Szilágyi
7f2b077da4 Merge pull request #3040 from karalabe/dummy
accounts/abi: fix typo in the comment (dummy commit)
2016-09-26 13:42:15 +03:00
Péter Szilágyi
06ac31cf1a accounts/abi: fix typo in the comment (dummy commit) 2016-09-26 13:40:28 +03:00
Péter Szilágyi
2e14aff80f Merge pull request #3037 from karalabe/state-caching
State caching
2016-09-26 11:20:47 +03:00
Felix Lange
a59a93f476 core/state: track all accounts in canon state
This change introduces a global, per-state cache that keeps account data
in the canon state. Thanks to @karalabe for lots of fixes.
2016-09-26 10:09:52 +02:00
Péter Szilágyi
e859f36967 Merge pull request #3035 from Gustav-Simonsson/zero_value_transfer_noop
core/state: short-circuit balance change if zero value
2016-09-26 08:47:20 +03:00
Gustav Simonsson
25ed5fedda core/state: short-circuit balance change if zero value 2016-09-26 01:26:54 -04:00
Felix Lange
3778f1bf77 Merge pull request #3009 from Gustav-Simonsson/fix_oom_in_light
light: fix memory expansion bug (same as fix for core/state)
2016-09-22 13:11:59 +02:00
Felix Lange
f85f46461f Merge pull request #3021 from bas-vk/ethclient-logs
ethclient: bugfix retrieving logs
2016-09-21 15:08:14 +02:00
Bas van Kervel
5bb517355e ethclient: bugfix retrieving logs 2016-09-21 14:10:11 +02:00
Gustav Simonsson
22eea17b06 light: fix memory expansion bug (same as fix for core/state) 2016-09-19 15:26:55 -04:00
Felix Lange
c8d6efd602 Merge pull request #3010 from Gustav-Simonsson/remove_unused_initcode_field
core/state, light: remove unused StateObject.initCode
2016-09-19 09:58:14 +02:00
Gustav Simonsson
b6b17e5648 core/state, light: remove unused StateObject.initCode 2016-09-19 02:16:58 -04:00
Péter Szilágyi
88b012ad3b Merge pull request #3006 from Arachnid/patch
core/state: Fix memory expansion bug by not copying clean objects
2016-09-19 04:20:14 +03:00
Nick Johnson
581b320b9d core/state: Fix memory expansion bug by not copying clean objects 2016-09-19 08:57:08 +08:00
Felix Lange
b42a5b118f common, node: move datadir defaults into package node 2016-09-16 15:24:31 +02:00
Felix Lange
eeb322ae64 node: ensure datadir can be co-inhabited by different instances
This change ensures that nodes started with different Name but same
DataDir values don't use the same nodekey and IPC socket.
2016-09-16 15:24:31 +02:00
Felix Lange
52ede09b17 ethdb: add accessor for database directory 2016-09-16 15:24:31 +02:00
Felix Lange
f5c432bcab p2p/nat: delay auto discovery until first use
Port mapper auto discovery used to run immediately after parsing the
--nat flag, giving it a slight performance boost. But this is becoming
inconvenient because we create node.Node for all geth operations
including account management and bare chain interaction. Delay
autodiscovery until the first use instead, which avoids any network
interaction until the node is actually started.
2016-09-16 11:06:52 +02:00
Péter Szilágyi
7c12e8ea44 Merge pull request #2999 from karalabe/bury-blockchain-version
cmd, eth: drop the blockchain version from cli/eth configs
2016-09-15 14:41:10 +03:00
Péter Szilágyi
30860491ba cmd, eth: drop the blockchain version from cli/eth configs 2016-09-15 14:09:47 +03:00
Felix Lange
0f6f83a709 Merge pull request #2983 from bas-vk/txindex
miner: set tx index logs
2016-09-14 21:05:17 +02:00
Bas van Kervel
e3fe634f99 miner: set tx index logs 2016-09-12 11:33:25 +02:00
Péter Szilágyi
dc3e969e14 Merge pull request #2973 from bas-vk/filterid
rpc: format filter ID according to spec for quantities
2016-09-12 11:55:15 +03:00
bas-vk
b7f6404168 Merge pull request #2984 from karalabe/fix-head-sub
core/types, ethclient: fix broken subscriptions
2016-09-09 16:20:52 +02:00
Péter Szilágyi
b6b5ec8f75 core/types: add core type marshal methods too 2016-09-08 18:16:53 +03:00
Péter Szilágyi
ca37730c9d ethclient: fix new block->header subscription endpoint 2016-09-08 17:17:55 +03:00
Péter Szilágyi
6fb8ae2bd6 Merge pull request #2979 from karalabe/ethclient-sync-api
ethereum, ethclient: add SyncProgress API endpoint
2016-09-06 13:59:41 +03:00
Péter Szilágyi
2924fdfcf7 ethereum, ethclient: add SyncProgress API endpoint 2016-09-06 13:41:43 +03:00
Felix Lange
eac390f289 Merge pull request #2976 from fjl/utils-version
cmd/evm, cmd/geth, cmd/utils: move version handling to cmd/utils
2016-09-05 14:09:45 +02:00
Felix Lange
de54273f51 cmd/geth: fix port clash in genesis test 2016-09-05 13:24:11 +02:00
Felix Lange
6b727c0440 cmd/evm, cmd/geth, cmd/utils: move version handling to cmd/utils 2016-09-05 13:24:11 +02:00
Péter Szilágyi
2c6be49d20 Merge pull request #2949 from elliots/fix/#2948
miner: Prevent attempts to close nil quit channel in agent (fixes #2948)
2016-09-02 14:45:15 +03:00
Jeffrey Wilcke
a42b7355f4 Merge pull request #2742 from karalabe/tx-spam-protection
Transaction pool optimizations
2016-09-02 13:44:23 +02:00
Péter Szilágyi
b4a5251391 core: abstract out a sorted transaction hash map 2016-09-02 14:15:40 +03:00
Péter Szilágyi
a183ea29f9 core: add upper bound on the queued transctions 2016-09-02 14:15:40 +03:00
Péter Szilágyi
affffb39b3 core/types, miner: switch over to the grouped tx sets 2016-09-02 14:12:03 +03:00
Péter Szilágyi
0ef327bbee core, eth, internal, miner: optimize txpool for quick ops 2016-09-02 14:12:03 +03:00
Péter Szilágyi
795b70423e core, eth, miner: only retain 1 tx/nonce, remove bad ones 2016-09-02 14:12:03 +03:00
Felix Lange
49227f65ff Merge pull request #2972 from Arachnid/ens
contracts/ens: Replace setOwner with setSubnodeOwner per EIP137
2016-09-01 15:27:45 +02:00
Nick Johnson
a386b4c983 contracts/ens: Replace setOwner with setSubnodeOwner in accordance with EIP137 2016-09-01 12:40:15 +01:00
Felix Lange
5cb3fa2f89 Merge pull request #2965 from fjl/swarm-merge
swarm: plan bee for content storage and distribution on web3
2016-09-01 12:10:24 +02:00
Bas van Kervel
43d716280e rpc: format filter ID according to spec for quantities 2016-09-01 11:50:13 +02:00
Felix Lange
cc6170d7fc Merge pull request #2918 from hypergig/patch-2
Small docker run example for main README
2016-08-31 22:51:09 +02:00
ΞTHΞЯSPHΞЯΞ
4d300e4dec swarm: plan bee for content storage and distribution on web3
This change imports the Swarm protocol codebase. Compared to the 'swarm'
branch, a few mostly cosmetic changes had to be made:

* The various redundant log message prefixes are gone.
* All files now have LGPLv3 license headers.
* Minor code changes were needed to please go vet and make the tests
  pass on Windows.
* Further changes were required to adapt to the go-ethereum develop
  branch and its new Go APIs.

Some code has not (yet) been brought over:

* swarm/cmd/bzzhash: will reappear as cmd/bzzhash later
* swarm/cmd/bzzup.sh: will be reimplemented in cmd/bzzup
* swarm/cmd/makegenesis: will reappear somehow
* swarm/examples/album: will move to a separate repository
* swarm/examples/filemanager: ditto
* swarm/examples/files: will not be merged
* swarm/test/*: will not be merged
* swarm/services/swear: will reappear as contracts/swear when needed
2016-08-31 16:19:40 +02:00
Felix Lange
1f58b2d084 Merge pull request #2962 from fjl/release-move
contracts/release: move package release to contracts/
2016-08-31 15:32:13 +02:00
Felix Lange
6903fa2d47 Merge pull request #2963 from fjl/ens-solc-0.3.6
contracts/ens: regenerate binding with solc v0.3.6
2016-08-31 09:28:18 +02:00
Felix Lange
319ae90184 Merge pull request #2964 from nagydani/develop
contracts/chequebook: fix possible reentrancy bug in chequebook contract
2016-08-31 01:29:01 +02:00
Daniel A. Nagy
7b884e0075 contracts/chequebook/contract: fix possible reentrancy bug in chequebook.sol 2016-08-30 18:16:49 +02:00
Felix Lange
3e7b4ae0c3 Merge pull request #2967 from fjl/godeps-update
Godeps: update golang.org/x/...
2016-08-30 12:43:10 +02:00
Felix Lange
3b75d0ce23 Godeps: update golang.org/x/... 2016-08-30 12:20:34 +02:00
Felix Lange
48807de305 contracts/ens: regenerate binding with solc v0.3.6 2016-08-29 19:34:44 +02:00
Felix Lange
1d7d1a3499 contracts/release: move package release to contracts/
This change also deletes generator.go, moving the only interesting line
in it into release.go. The binding has been regenerated with abigen from
develop and solc v0.3.6.
2016-08-29 19:25:05 +02:00
Felix Lange
969008dbb0 Merge pull request #2952 from Arachnid/ens
contracts/ens: Add ENS contract binding
2016-08-29 19:09:35 +02:00
Nick Johnson
6976e602f6 contracts/ens: Add ENS contract binding 2016-08-29 17:30:17 +01:00
Felix Lange
3b087e03ea Merge pull request #2956 from fjl/chequebook
contracts/chequebook: add chequebook contract wrapper
2016-08-29 14:06:12 +02:00
Viktor Trón
6c8b023298 contracts/chequebook: add chequebook contract wrapper
The wrapper code is adapted from the swarm/services/chequebook package
with the following mostly cosmetic changes:

* The code now uses the new Go API interfaces to query balances. Some
  minor functional changes were required to make this work.
* The package no longer depends on swarm/services/swap/swap. References
  to swap.Promise are replaced by interface{}, the base type of Promise.
  This is temporary.
* The contract wrapper has been regenerated with latest abigen
  and solc v0.3.6.
* There is a new generator that creates the 'deployed code' variable.
* Documentation comments now follow the recommended godoc style.
* [CHEQUEBOOK] log prefixes are gone.
* LGPL license headers have been added to all files.
2016-08-29 13:39:25 +02:00
gregg dourgarian
8dbf59fec5 common,internal: typo/misspelling fixes (#2953) 2016-08-27 15:05:09 +03:00
☃ Elliot Shepherd
ac0f8b81ae miner: Move CpuAgent channel creation from Start() to initialization (fixes #2948)
Also remove the now un-needed mutex locking in Start() and Stop()
2016-08-26 00:12:17 +10:00
Péter Szilágyi
5fc032a9d1 Merge pull request #2930 from fjl/ethclient
Stable Go API, part 1
2016-08-25 16:20:38 +03:00
Felix Lange
806e3cd075 Merge pull request #2943 from Arachnid/tracing
internal/ethapi: Fix bug in opCodeWrapper usage
2016-08-24 18:20:26 +02:00
Nick Johnson
8923325d5c internal/ethapi: Fix bug in opCodeWrapper usage 2016-08-24 16:10:29 +01:00
Felix Lange
a2b2c8adc9 Merge pull request #2941 from Arachnid/tracing
internal/ethapi: Improve tracer error reporting and serialization
2016-08-24 16:10:51 +02:00
Nick Johnson
d20238c2a7 internal/ethapi: Improve tracer error reporting and serialization 2016-08-24 13:17:55 +01:00
Stein Dekker
4ce83bf57b eth/fetcher: small typo fix (#2932) 2016-08-23 18:23:34 +03:00
Péter Szilágyi
b500953425 Merge pull request #2929 from Arachnid/tracing
core/vm, eth: Add support for javascript trace functions
2016-08-23 18:22:20 +03:00
Nick Johnson
2f99720901 core/vm, eth: Add support for javascript trace functions 2016-08-23 15:06:39 +01:00
Hellsegga
6bd9008025 cmd/geth: set correct initial nonce on testnet for import/init subcommands (#2924) 2016-08-23 11:36:40 +03:00
Felix Lange
c97df052a9 accounts/abi/bind: add utilities for waiting on transactions
The need for these functions comes up in code that actually deploys and
uses contracts. As of this commit, they can be used with both
SimulatedBackend and ethclient.

SimulatedBackend gains some additional methods in the process and is now
safe for concurrent use.
2016-08-22 23:20:13 +02:00
Felix Lange
7d9c5e0f7d Merge pull request #2928 from obscuren/remove-dao-message
cmd/utils: removed DAO oppose / support message
2016-08-22 15:33:00 +02:00
Felix Lange
d62d5fe59a accounts/abi/bind: use ethereum interfaces
In this commit, contract bindings and their backend start using the
Ethereum Go API interfaces offered by ethclient. This makes ethclient a
suitable replacement for the old remote backend and gets us one step
closer to the final stable Go API that is planned for go-ethereum 1.5.

The changes in detail:

* Pending state is optional for read only contract bindings.
  BoundContract attempts to discover the Pending* methods via an
  interface assertion. There are a couple of advantages to this:
  ContractCaller is just two methods and can be implemented on top of
  pretty much anything that provides Ethereum data. Since the backend
  interfaces are now disjoint, ContractBackend can simply be declared as
  a union of the reader and writer side.

* Caching of HasCode is removed. The caching could go wrong in case of
  chain reorganisations and removing it simplifies the code a lot.
  We'll figure out a performant way of providing ErrNoCode before the
  1.5 release.

* BoundContract now ensures that the backend receives a non-nil context
  with every call.
2016-08-22 14:01:28 +02:00
Péter Szilágyi
d8cec35b10 Merge pull request #2927 from obscuren/license
cmd/geth: added copyright and license information
2016-08-22 12:38:05 +03:00
Péter Szilágyi
f81cff539a Merge pull request #2923 from Arachnid/tracing
core: Refactor tracing to make Tracer the main interface
2016-08-22 12:31:47 +03:00
Jeffrey Wilcke
5fff491bbd cmd/geth: added copyright and license information
As per GNU GPL requirement I've added the copyright and the license
information as a subcommand as well as a copyright notice when
displaying the help command.
2016-08-22 11:17:23 +02:00
Nick Johnson
781915f183 core/vm: Refactor tracing to make Tracer the main interface
This CL makes several refactors:
 - Define a Tracer interface, implementing the `CaptureState` method
 - Add the VM environment as the first argument of
   `Tracer.CaptureState`
 - Rename existing functionality `StructLogger` an make it an
   implementation of `Tracer`
 - Delete `StructLogCollector` and make `StructLogger` collect the logs
   directly
 - Change all callers to use the new `StructLogger` where necessary and
   extract logs from that.
 - Deletes the apparently obsolete and likely nonfunctional 'TraceCall'
   from the eth API.

Callers that only wish accumulated logs can use the `StructLogger`
implementation straightforwardly. Callers that wish to efficiently
capture VM traces and operate on them without excessive copying can now
implement the `Tracer` interface to receive VM state at each step and
do with it as they wish.

This CL also removes the accumulation of logs from the vm.Environment;
this was necessary as part of the refactor, but also simplifies it by
removing a responsibility that doesn't directly belong to the
Environment.
2016-08-22 09:26:15 +01:00
Jeffrey Wilcke
5b44a819d3 cmd/utils: removed DAO oppose / support message 2016-08-21 23:55:53 +02:00
Felix Lange
056f15aa53 accounts/abi/bind/backends: remove nil and remote backends
The remote backend is superseded by ethclient.

The nil backend's stated purpose was to enable testing of
accounts/abi/bind. None of its methods actually worked. A much simpler
way to get a crashing backend is to simply pass nil as the backend. With
a one-line change to the generator (removing two explicit interface
assertions), passing nil actually works.

Removing these backends means that less changes are required later.
2016-08-21 17:06:25 +02:00
Péter Szilágyi
37bda7e029 Merge pull request #2921 from karalabe/fix-fetcher-log
eth/fetcher: fix a log message formatting issue
2016-08-19 17:30:34 +03:00
Péter Szilágyi
454dc9b7c2 eth/fetcher: fix a log message formatting issue 2016-08-19 14:04:03 +03:00
Jordan Cohen
b3d7a5c5d0 README: docker run example 2016-08-18 12:49:42 -04:00
Felix Lange
475521dd74 Merge pull request #2909 from fjl/account-manager-cleanup
all: clean up tech debt left behind by the API split
2016-08-17 20:59:59 +02:00
Felix Lange
3c09c5f12d core, miner: move Backend to miner
This ensures that package core doesn't depend on package accounts and
resolves an age-old TODO.
2016-08-17 17:39:04 +02:00
Felix Lange
1a9e66915b common/compiler: simplify solc wrapper
Support for legacy version 0.9.x is gone. The compiler version is no
longer cached. Compilation results (and the version) are read directly
from stdout using the --combined-json flag. As a workaround for
ethereum/solidity#651, source code is written to a temporary file before
compilation.

Integration of solc in package ethapi and cmd/abigen is now much simpler
because the compiler wrapper is no longer passed around as a pointer.

Fixes #2806, accidentally
2016-08-17 17:39:04 +02:00
Felix Lange
84d11c19fd eth: remove dapp database remains 2016-08-17 17:39:03 +02:00
Felix Lange
312263c7d9 cmd/utils, node: create account manager in package node
The account manager was previously created by packge cmd/utils as part
of flag processing and then passed down into eth.Ethereum through its
config struct. Since we are starting to create nodes which do not have
eth.Ethereum as a registered service, the code was rearranged to
register the account manager as its own service. Making it a service is
ugly though and it doesn't really fix the root cause: creating nodes
without eth.Ethereum requires duplicating lots of code.

This commit splits utils.MakeSystemNode into three functions, making
creation of other node/service configurations easier. It also moves the
account manager into Node so it can be used by those configurations
without requiring package eth.
2016-08-17 17:39:03 +02:00
Felix Lange
3369783e0a Merge pull request #2885 from bas-vk/subscriptions
rpc: refactor subscriptions and filters
2016-08-17 17:14:42 +02:00
Bas van Kervel
47ff813012 rpc: refactor subscriptions and filters 2016-08-17 12:59:58 +02:00
Nick Johnson
3b39d4d1c1 Merge pull request #2913 from karalabe/travis-go-1.7
TravisCI: add Go 1.7 targets, bump PPA to 1.7 too
2016-08-17 09:22:58 +01:00
Péter Szilágyi
2fab2b310b TravisCI: add Go 1.7 targets, bump PPA to 1.7 too 2016-08-17 10:05:59 +03:00
Felix Lange
c2ac4465cd Merge pull request #2873 from bas-vk/canonicalblock
core: ensure the canonical block is written before the canonical hash is set
2016-08-16 20:16:48 +02:00
Bas van Kervel
bb8059f6aa core: ensure the canonical block is written before the canonical hash is set 2016-08-16 15:21:22 +02:00
Péter Szilágyi
4c2cc32f2e Makefile: support building for the MIPS64 platforms (#2682) 2016-08-16 09:52:24 +02:00
Péter Szilágyi
89a3fbc0fb Merge pull request #2866 from karalabe/downloader-future-ancestors
eth/downloader: fewer headers and futures too in ancestor lookup
2016-08-16 10:01:52 +03:00
cdetrio
077353b47e console: fix return via callbacks (#2910)
Fixes #2872
2016-08-15 23:52:47 +02:00
Felix Lange
46621fd2c3 ethclient: add initial implementation of the typed RPC client
ethclient implements the proposed Ethereum Go API. There are no tests at
the moment, a suite that excercises all implementations of the API will
be added later.
2016-08-10 00:01:13 +02:00
Péter Szilágyi
d6625ac34d Merge pull request #2891 from fjl/rpc-client-fixes
rpc: client bug fixes
2016-08-09 11:51:01 +03:00
Péter Szilágyi
b46b36729f Merge pull request #2868 from karalabe/downloader-abort-master-drop
eth/downloader: abort sync if master drops (timeout prev)
2016-08-09 11:39:24 +03:00
Péter Szilágyi
893fabd336 Merge pull request #2867 from karalabe/dao-challenge-finish
eth, eth/downloader: don't forward the DAO challenge header
2016-08-09 11:39:13 +03:00
Péter Szilágyi
44ea0da2b0 Merge pull request #2861 from karalabe/track-peer-heads-properly
eth, eth/downloader: better remote head tracking
2016-08-09 11:38:34 +03:00
Felix Lange
4f4e1026f5 Merge pull request #2896 from karalabe/fix-xgo-crossbuilds
Makefile, build: move cross compilation into ci.go
2016-08-08 19:56:18 +02:00
Péter Szilágyi
8c23f20c68 Makefile, build: move cross compilation into ci.go 2016-08-08 13:45:44 +03:00
Felix Lange
4f65227971 Merge pull request #2892 from fjl/vm-hide-ecrecover-message
core/vm: hide ecrecover error message
2016-08-05 23:19:10 +02:00
Felix Lange
e4736fe469 core/vm: hide ecrecover error message
Fixes #2825
2016-08-05 23:12:52 +02:00
Felix Lange
e32925397b rpc: add context argument to EthSubscribe
It's inconsistent not to pass it and most callers will
work with contexts anyway.
2016-08-05 20:48:33 +02:00
Felix Lange
f5f042ffdc rpc: ensure client doesn't block for slow subscribers
I initially made the client block if the 100-element buffer was
exceeded. It turns out that this is inconvenient for simple uses of the
client which subscribe and perform calls on the same goroutine, e.g.

    client, _ := rpc.Dial(...)
    ch := make(chan int) // note: no buffer
    sub, _ := client.EthSubscribe(ch, "something")
    for event := range ch {
        client.Call(...)
    }

This innocent looking code will lock up if the server suddenly decides
to send 2000 notifications. In this case, the client's main loop won't
accept the call because it is trying to deliver a notification to ch.

The issue is kind of hard to explain in the docs and few people will
actually read them. Buffering is the simple option and works with close
to no overhead for subscribers that always listen.
2016-08-05 20:48:33 +02:00
Felix Lange
d445a9aafb Merge pull request #2889 from fjl/godeps-update-notify
Godeps: update github.com/rjeczalik/notify to f627deca7a51
2016-08-05 19:29:59 +02:00
Felix Lange
464660651d rpc: don't exceed context deadline while waiting for send lock 2016-08-05 13:27:02 +02:00
Felix Lange
8d9141ed9a ethereum: add new Go API interfaces 2016-08-05 13:25:52 +02:00
Felix Lange
4be37222ef Godeps: update github.com/rjeczalik/notify to f627deca7a51
Fixes #2829
2016-08-04 21:20:08 +02:00
Felix Lange
b0d9f7372a internal/ethapi: add missing output fields
- returned headers didn't include mixHash
- returned transactions didn't include signature fields
- empty transaction input was returned as "", but should be "0x"
- returned receipts didn't include the bloom filter
- "root" in receipts was missing 0x prefix
2016-08-04 01:40:50 +02:00
Felix Lange
704fde01e8 core/types, core/vm: improve docs, add JSON marshaling methods
In this commit, core/types's types learn how to encode and decode
themselves as JSON. The encoding is very similar to what the RPC API
uses. The RPC API is missing some output fields (e.g. transaction
signature values) which will be added to the API in a later commit. Some
fields that the API generates are ignored by the decoder methods here.
2016-08-04 03:55:33 +02:00
Felix Lange
0c9a858f2d eth: don't call ValidateFields
ValidateFields was introduced before the rlp decoder disallowed nil
values. Decoding RLP will never return nil values, there is no need
to check for them.
2016-08-04 03:30:05 +02:00
Felix Lange
b8ba80bff7 Merge pull request #2740 from Firescar96/removepeer
node, p2p, internal: Add ability to remove peers via admin interface
2016-07-29 12:34:28 +02:00
Péter Szilágyi
8ec6ccc54d Merge pull request #2870 from lukeyeager/patch-1
Fix README typo
2016-07-27 10:49:04 +03:00
Luke Yeager
1ca9e552d9 README: Fix typo
"fine graned" -> "fine-grained"
2016-07-26 17:23:20 -07:00
Péter Szilágyi
8f0a4a25f8 eth/downloader: abort sync if master drops (timeout prev) 2016-07-26 13:07:12 +03:00
Péter Szilágyi
071af57bcf eth, eth/downloader: don't forward the DAO challenge header 2016-07-26 12:26:41 +03:00
Péter Szilágyi
d68865f3b1 eth/downloader: fewer headers and futures too un ancestor lookup 2016-07-26 11:15:38 +03:00
Péter Szilágyi
a724952f75 Merge pull request #2862 from yep/faster-git-clone
containers/docker: use shallow clone of single branch
2016-07-26 09:51:47 +03:00
yep
a4215f469c containers/docker: whitespace changes only, make future diffs more readable 2016-07-25 16:39:00 +02:00
yep
4c1abcb0ce containers/docker: use shallow clone of single branch 2016-07-25 16:38:46 +02:00
Péter Szilágyi
1dd272080d eth, eth/downloader: better remote head tracking 2016-07-25 15:14:14 +03:00
Felix Lange
3e3a79ea13 Merge pull request #2855 from karalabe/downloader-fix-stall-drop
eth/downloader: fix the stall checks/drops during sync
2016-07-25 12:56:11 +02:00
bas-vk
771655e3fe Merge pull request #2808 from fjl/rpc-client-3
rpc: add new client, use it everywhere
2016-07-25 10:07:05 +02:00
Felix Lange
60cd5bf939 Merge pull request #2842 from fjl/downloader-remove-eth61
eth, eth/downloader, eth/fetcher: delete eth/61 sync code
2016-07-22 23:23:30 +02:00
Felix Lange
91b7690428 rpc: add new client, use it everywhere
The new client implementation supports concurrent requests,
subscriptions and replaces the various ad hoc RPC clients
throughout go-ethereum.
2016-07-22 23:21:27 +02:00
Felix Lange
bb01bea4e2 rpc: fix bad method error for batch requests
If a batch request contained an invalid method, the server would reply
with a non-batch error response. Fix this by tracking an error for each
batch element.
2016-07-22 23:21:27 +02:00
Felix Lange
c145589f25 rpc: remove grace period when shutting down the server
The server delayed closing of connections for 3s when stopping. This was
supposed to allow for slow handlers, but it didn't really work. When
geth quits, it will just exit immediately after quitting the server.

Removing the timer makes testing easier because all connections will be
closed after Stop returns.
2016-07-22 23:21:27 +02:00
Péter Szilágyi
c7c82f1b44 eth/downloader: fix the stall checks/drops during sync 2016-07-22 17:55:46 +03:00
Péter Szilágyi
f58ac2b46b Merge pull request #2712 from bas-vk/sendtx
eth/api: rename signAndSendTransaction to sendTransaction
2016-07-22 14:28:21 +03:00
Felix Lange
016007bd25 eth, eth/downloader, eth/fetcher: delete eth/61 code
The eth/61 protocol was disabled in #2776, this commit removes its
message handlers and hash-chain sync logic.
2016-07-22 13:17:19 +02:00
Bas van Kervel
4ee00b2309 eth/api: rename signAndSendTransaction to sendTransaction 2016-07-22 13:12:14 +02:00
Péter Szilágyi
fb81bc3291 Merge pull request #2851 from yep/alpine-3-4
containers/docker: update to alpine 3.4
2016-07-22 12:18:22 +03:00
Péter Szilágyi
c646d287f8 Merge pull request #2833 from karalabe/fix-dao-challenge-annoyance
eth: cancel DAO challenge on peer drop (annoying log)
2016-07-22 11:57:43 +03:00
yep
51d4539a79 containers/docker: update to alpine 3.4 2016-07-22 07:37:41 +02:00
Péter Szilágyi
f273c64a94 Merge pull request #2836 from fjl/godeps-update-leveldb
Godeps: bump github.com/syndtr/goleveldb/... to ab8b5dcf104
2016-07-20 10:55:53 +03:00
Felix Lange
74ec95e7f6 Merge pull request #2711 from hdiedrich/1.4.7-filter-races-cleanup
Fix #2710 Filter race: concurrent map read and map write
2016-07-19 23:14:08 +02:00
Felix Lange
65f340bb95 Merge pull request #2821 from Arachnid/discover-enode
cmd/bootnode: Add support for outputting a node's ID on the command line
2016-07-19 18:53:22 +02:00
Felix Lange
4d014d6d7e Godeps: bump github.com/syndtr/goleveldb/... to ab8b5dcf104 2016-07-19 18:45:42 +02:00
Péter Szilágyi
fe56461387 Merge pull request #2834 from zsfelfoldi/chaindb-upgrade-fix
eth: fixed chaindb upgrade
2016-07-19 18:41:58 +03:00
zsfelfoldi
56efed71b5 eth: fixed chaindb upgrade 2016-07-19 14:32:38 +02:00
Péter Szilágyi
91f18ffd47 eth: cancel DAO challenge on peer drop (annoying log) 2016-07-19 12:00:09 +03:00
Jeffrey Wilcke
a4c4125b11 Merge pull request #2814 from karalabe/dao-hard-finalcombo
cmd, core, eth, miner, params, tests: finalize the DAO fork
2016-07-16 12:08:16 +02:00
Péter Szilágyi
993b412160 cmd/utils, eth: display the user's current fork, minor text tweak 2016-07-16 12:38:37 +03:00
Péter Szilágyi
2c2e389b77 cmd, core, eth, miner, params, tests: finalize the DAO fork 2016-07-15 16:52:55 +03:00
Péter Szilágyi
3291235711 accounts, core, eth: pass chain config for chain maker to test DAO 2016-07-15 16:52:55 +03:00
Péter Szilágyi
461cdb593b core, params, tests: add DAO hard-fork balance moves 2016-07-15 16:52:55 +03:00
Péter Szilágyi
7f00e8c033 core, eth: enforce network split post DAO hard-fork 2016-07-15 16:52:55 +03:00
Péter Szilágyi
a87089fd2d cmd, core, miner: add extradata validation to consensus rules 2016-07-15 16:52:55 +03:00
Péter Szilágyi
1e24c2e4f4 cmd/geth, miner, params: special extradata for DAO fork start 2016-07-15 16:52:55 +03:00
Péter Szilágyi
9e56811a37 core: gracefully handle missing homestead block config 2016-07-15 16:52:55 +03:00
Péter Szilágyi
6060e098c9 cmd, core, eth, params: implement flags to control dao fork blocks 2016-07-15 16:52:55 +03:00
Péter Szilágyi
aa1e052cb4 Merge pull request #2823 from karalabe/circleci-hive
circleci: enable docker based hive testing
2016-07-15 16:32:04 +03:00
Péter Szilágyi
1a652afe16 Merge pull request #2724 from pirapira/fix_reset_fees
vm: Replace some SstoreClearGas with SstoreResetGas
2016-07-15 16:24:16 +03:00
Péter Szilágyi
6f1e45d5ba circleci: enable docker based hive testing 2016-07-15 16:07:34 +03:00
Nick Johnson
91130ea3fc cmd/bootnode: Add support for outputting a node's ID on the command line 2016-07-15 11:09:37 +01:00
Felix Lange
b7caa1751c Merge pull request #2819 from fjl/rpc-back-to-npipe
Godeps, rpc: switch back to package npipe
2016-07-15 09:11:06 +02:00
Firescar96
4c3da0f2e1 node, p2p, internal: Add ability to remove peers via admin interface 2016-07-14 18:51:41 -04:00
Felix Lange
39b4ef4b02 Godeps: update golang.org/x/net/...
This adds compatibility with Go 1.7, where context has
moved into the standard library.
2016-07-14 23:03:40 +02:00
Felix Lange
74be4a62c5 Godeps, rpc: switch back to package npipe
The named pipe implementation from go-winio has some issues
that need to be addressed before we can use it again.
2016-07-14 23:03:40 +02:00
Felix Lange
e11489eb5f appveyor.yml: don't install Go and MinGW, they're already there (#2813) 2016-07-14 10:33:20 +02:00
Péter Szilágyi
f970610c04 Merge pull request #2799 from zsfelfoldi/api-nonce-fix2
core: added CheckNonce() to Message interface
2016-07-12 16:07:15 +03:00
Matthew Di Ferrante
68b48cc045 cmd/geth: print version on geth start (#2622) 2016-07-12 14:43:15 +02:00
Péter Szilágyi
7596b33506 Merge pull request #2801 from karalabe/dao-hardfork-importdrop
eth/downloader: return invalid chain (peer drop) on import fails
2016-07-12 15:22:13 +03:00
Péter Szilágyi
2b7aff202a Merge pull request #2793 from karalabe/blockchain-import-mine-datarace
core: solve a remote-import/local-mine data race
2016-07-12 15:16:11 +03:00
Péter Szilágyi
e76c55a9b8 Merge pull request #2805 from karalabe/readme-running-geth
README: expand with "Running Geth" section
2016-07-12 14:16:45 +03:00
Péter Szilágyi
ca211065b6 README: expand with "Running Geth" section 2016-07-12 12:51:31 +03:00
villesundell
c7442ef0d2 ethdb, p2p/discover: replace "alloted" with "allotted" (#2785) 2016-07-12 11:42:47 +02:00
Péter Szilágyi
a691aa2a13 eth/downloader: return invalid chain (peer drop) on import fails 2016-07-11 19:00:49 +03:00
zsfelfoldi
00787fe781 core: added CheckNonce() to Message interface 2016-07-11 12:35:23 +02:00
Péter Szilágyi
f5a29eab5c core: solve a remote-import/local-mine data race 2016-07-08 16:59:19 +03:00
Felix Lange
2b94d7fc7f Merge pull request #2782 from karalabe/docker-alpine-master-nogmp
containers/docker/master-alpine: drop gmp dependency
2016-07-04 18:04:06 +02:00
Henning Diedrich
51f8ce26cf eth: fix #2710 filter races
and locking bugs found in its wake.
2016-07-04 17:38:35 +02:00
Péter Szilágyi
092fcaffe4 containers/docker/master-alpine: drop gmp dependency 2016-07-04 14:42:57 +03:00
Péter Szilágyi
7e6ede1051 Merge pull request #2776 from karalabe/disable-eth61
eth: disable eth/61 to prepare for more elaborate fork sync algos
2016-07-04 12:29:21 +03:00
Péter Szilágyi
ddfef21125 eth: disable eth/61 to prepare for more elaborate fork sync algos 2016-07-04 12:03:19 +03:00
Péter Szilágyi
3af101ccc1 Merge pull request #2763 from karalabe/fix-readme-type
README: fix build->built typo
2016-07-01 11:21:50 +03:00
Try Space
4f088b6f1c README: fix build->built typo
(cherry picked from commit e271fd57132763f39c6993a35e6c063aac3af4f1)
2016-07-01 11:20:15 +03:00
Péter Szilágyi
da9aad8876 Merge pull request #2759 from karalabe/drop-redundant-full-service
cmd, common, console, eth, release: drop redundant "full"s
2016-07-01 11:13:53 +03:00
Péter Szilágyi
96dc42d99c cmd, common, console, eth, release: drop redundant "full"s 2016-06-30 13:03:26 +03:00
Péter Szilágyi
1e50f5dd28 Merge pull request #2159 from zsfelfoldi/light-backend
eth: separate common and full node-specific API and backend service
2016-06-30 12:57:50 +03:00
Péter Szilágyi
f127799d79 Merge pull request #2750 from sybiload/develop
cmd/geth: fix the import error message
2016-06-29 14:12:46 +03:00
Yohann LEON
6b1d73446d cmd/geth: fix the import error message
cmd/geth: include the error message on import failure
2016-06-29 13:08:32 +02:00
Péter Szilágyi
fd4e161497 Merge pull request #2752 from karalabe/revert-soft-fork
Revert faulty DAO soft-fork
2016-06-29 12:17:18 +03:00
Péter Szilágyi
6362a9d610 Revert "test, cmd/evm, core, core/vm: illegal code hash implementation"
This reverts commit 7a5b571c67.
2016-06-29 11:44:51 +03:00
Péter Szilágyi
d55fc35df1 Revert "core: add voting and result tracking for the dao soft-fork"
This reverts commit c4de28938f.
2016-06-29 11:44:40 +03:00
Péter Szilágyi
67e9d33486 Revert "core: update DAO soft-fork number, clean up the code"
This reverts commit ba784bdf36.
2016-06-29 11:44:29 +03:00
Péter Szilágyi
219859f8bb Revert "core: update the DAO soft fork proposal to the final block"
This reverts commit 1e3a7d4fab.
2016-06-29 11:44:03 +03:00
Péter Szilágyi
e0493457d5 Merge pull request #2734 from karalabe/dao-final-block
core: update the DAO soft fork proposal to the final block
2016-06-24 16:19:45 +03:00
Péter Szilágyi
1e3a7d4fab core: update the DAO soft fork proposal to the final block 2016-06-24 15:24:09 +03:00
Péter Szilágyi
848dec3da2 Merge pull request #2725 from karalabe/obscuren-softfork-dao-2
DAO soft-fork
2016-06-24 13:09:36 +03:00
Péter Szilágyi
ae0880997b Merge pull request #2731 from justincc/remove-old-natspec-js-stubs
web3ext: Remove old natspec Admin_JS stubs
2016-06-24 11:02:44 +03:00
Justin Clark-Casey
9eb50a9624 web3ext: Remove old natspec Admin_JS stubs
This stops them from showing up on the javascript console.
2016-06-23 22:34:53 +01:00
Péter Szilágyi
acecefee88 Merge pull request #2726 from fjl/appveyor
build: add ci.go, use it everywhere
2016-06-23 18:44:22 +03:00
Péter Szilágyi
ba784bdf36 core: update DAO soft-fork number, clean up the code 2016-06-23 17:16:43 +03:00
Péter Szilágyi
c4de28938f core: add voting and result tracking for the dao soft-fork 2016-06-23 16:43:35 +03:00
Felix Lange
6c33ba14a4 build: add ci.go, use it everywhere
The new build script, ci.go, replaces some of the older shell scripts.
ci.go can compile go-ethereum, run the tests, create release archives
and debian source packages.
2016-06-22 13:42:39 +02:00
Jeffrey Wilcke
7a5b571c67 test, cmd/evm, core, core/vm: illegal code hash implementation
This implements a generic approach to enabling soft forks by allowing
anyone to put in hashes of contracts that should not be interacted from.
This will help "The DAO" in their endevour to stop any whithdrawals from
any DAO contract by convincing the mining community to accept their code
hash.
2016-06-22 11:38:25 +03:00
Péter Szilágyi
599e3c7b3f Merge pull request #2722 from fabioberger/fixTypos
README, core, rpc: Fix typos
2016-06-22 11:08:49 +03:00
Yoichi Hirai
86bc7795a3 vm: Replace some SstoreClearGas with SstoreResetGas 2016-06-21 21:15:26 +02:00
Fabio Berger
a3efdb13f2 README, core, rpc: fix various typos 2016-06-21 17:38:35 +01:00
zsfelfoldi
3a97280ae8 eth: separate common and full node-specific API and backend service 2016-06-16 17:36:38 +02:00
Péter Szilágyi
4f3f6e28d5 Merge pull request #2685 from karalabe/ethash-bitengdian-fix
Godeps: pull in ethash with the big endian build fix
2016-06-15 13:07:46 +03:00
Péter Szilágyi
79ada05756 Merge pull request #2693 from obscuren/evm-bin-create
cmd/evm: added --create flag indicating the exec code is to be created
2016-06-15 11:35:34 +03:00
Péter Szilágyi
c48271958f Merge pull request #2697 from karalabe/CamTosh-patch-1-3
cmd/utils: add space between "to" and filename
2016-06-15 11:11:15 +03:00
Tosh Camille
ac66d96c5a cmd/utils: add space between "to" and filename 2016-06-15 11:02:22 +03:00
Jeffrey Wilcke
e5165aeb27 cmd/evm: added --create flag indicating the exec code is to be created
This fixes an issue if you wanted to test out code deployment rather
than running a piece of code with an argument. This solves it by adding
a --create flag that indicates the Create function should be used rather
than the Call function.

This also adds a statedb.commit call so that the proper state can be
dumped when requested using the --dump flag.
2016-06-14 17:11:33 +02:00
Péter Szilágyi
970f4c06e1 Merge pull request #2680 from karalabe/abi-fix-uints
accounts/abi: fix uint64 upper range encoding.
2016-06-14 17:09:13 +03:00
Péter Szilágyi
22ef7370e7 Merge pull request #2686 from obscuren/issue-2542
core/state, eth: Updated suicides objects when tracing transactions
2016-06-14 16:54:46 +03:00
Jeffrey Wilcke
a38be3eb48 Merge pull request #2455 from zsfelfoldi/chaindb
core: improved chain db performance by using sequential keys
2016-06-13 15:16:09 +02:00
Felix Lange
73c028c40a Merge pull request #2687 from karalabe/downloader-fasttest-fix
eth/downloader: fix occasional fast sync critical section test fails
2016-06-13 12:55:32 +02:00
Péter Szilágyi
783289068a eth/downloader: fix occasional fast sync critical section test fails 2016-06-13 13:04:19 +03:00
Jeffrey Wilcke
bb3651abc8 core/state, eth: Updated suicides objects when tracing transactions
Consensus rules dictate that objects can only be removed during the
finalisation of the transaction (i.e. after all calls have finished).
Thus calling a suicided contract twice from the same transaction:
A->B(S)->ret(A)->B(S) results in 2 suicides. Calling the suicided
object twice from two transactions: A->B(S), A->B, results in only one
suicide and a call to an empty object.

Our current debug tracing functionality replays all transaction that
were executed prior to the targetted transaction in order to provide
the user with an accurate trace.

As a side effect to calling StateDB.IntermediateRoot it also deletes any
suicides objects. Our tracing code never calls this function because it
isn't interested in the intermediate root. Becasue of this it caused a
bug in the tracing code where transactions that were send to priviously
deleted objects resulted in two suicides rather than one suicide and a
call to an empty object.

Fixes #2542
2016-06-13 11:57:42 +02:00
Péter Szilágyi
f0134f363b Godeps: pull in ethash with the big endian build fix 2016-06-13 12:43:09 +03:00
Péter Szilágyi
ce88d41907 Merge pull request #2681 from karalabe/fix-cli-deprecation
cmd: fix CLI package deprecation warnings
2016-06-10 16:24:06 +03:00
Péter Szilágyi
0f9539e1e3 accounts/abi: fix uint64 upper range encoding. 2016-06-10 12:32:08 +03:00
Péter Szilágyi
90e07b19ab cmd: fix CLI package deprecation warnings 2016-06-10 11:23:00 +03:00
Péter Szilágyi
63d1d145e2 Merge pull request #2677 from bas-vk/cli
cmd/geth: codegansta/cli package renamed to urfave/cli
2016-06-10 10:16:20 +03:00
Péter Szilágyi
c039bb38d4 Merge pull request #2653 from tbocek/develop
Negative numbers not properly converted in ABI encoding
2016-06-10 10:14:42 +03:00
Bas van Kervel
861add3d72 cmd/geth: codegansta/cli package renamed to urfave/cli 2016-06-09 15:37:13 +02:00
Péter Szilágyi
6886913fdf Merge pull request #2670 from bas-vk/indent
Ignore round and curly brackets in strings for indentation level
2016-06-09 15:42:17 +03:00
Felix Lange
c75d3b0ede Merge pull request #2673 from karalabe/fix-accounts-usage-text
cmd/geth: fix the keystore path in the accounts help text
2016-06-08 17:22:52 +02:00
Péter Szilágyi
7c0eb47dfb cmd/geth: fix the keystore path in the accounts help text 2016-06-08 17:00:18 +03:00
Bas van Kervel
dbcdf83ed8 console: ignore round and curly brackets in strings when determining indentation level 2016-06-08 14:21:52 +02:00
Péter Szilágyi
d31eab94fd Merge pull request #2671 from karalabe/randomize-console-tests
cmd/geth: truly randomize console test RPC endpoints
2016-06-08 14:38:22 +03:00
Péter Szilágyi
553f08b819 Merge pull request #2669 from karalabe/fix-windows-console-color
console: fix windows console colors
2016-06-08 13:54:49 +03:00
Péter Szilágyi
32258af87b cmd/geth: truly randomize console test RPC endpoints 2016-06-08 13:53:07 +03:00
Péter Szilágyi
d251d48439 console: fix windows color transformation issue 2016-06-08 13:12:15 +03:00
zsfelfoldi
f9917c8c7b core: improved chainDb using sequential keys 2016-06-07 16:38:56 +02:00
zsfelfoldi
5a458da42a core: chain read/write speed benchmarks 2016-06-06 14:38:28 +02:00
Thomas Bocek
89c6c5bb85 accounts/abi: Negative numbers not properly converted in ABI encoding
When converting a negative number e.g., -2, the resulting ABI encoding
should look as follows:
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe.
However, since the check of the type is for an uint instead of an
int, it results in the following ABI encoding:
0101010101010101010101010101010101010101010101010101010101010102. The
Ethereum ABI
(https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI) says,
that signed integers are stored in two's complement which should be
of the form ffffff.... and not 01010101..... for e.g. -1. Thus, I
removed the type check in numbers.go as well as the function S256
as I don't think they are correct. Or maybe I'm missing something?
2016-06-06 14:27:15 +02:00
Péter Szilágyi
fdd61b83ff Merge pull request #2649 from karalabe/omit-startup-tx-processing
eth: don't accept transactions until we sync up with the network
2016-06-06 15:12:27 +03:00
Péter Szilágyi
32559ccad1 eth: don't accept transactions until we sync up with the network 2016-06-06 14:45:38 +03:00
Péter Szilágyi
826efc2295 Merge pull request #2630 from karalabe/adaptive-qos-tuning
eth/downloader: adaptive quality of service tuning
2016-06-06 14:44:59 +03:00
Péter Szilágyi
88f174a014 eth/downloader: adaptive quality of service tuning 2016-06-06 14:20:57 +03:00
Péter Szilágyi
780bdb3e80 Merge pull request #2647 from karalabe/fastsync-critical-resilience
eth/downloader: make fast sync resilient to critical section fails
2016-06-06 12:42:49 +03:00
Péter Szilágyi
828e1e35fd Merge pull request #2655 from fjl/txpool-lock
core: add missing lock in TxPool.GetTransaction
2016-06-03 14:08:22 +03:00
Felix Lange
fc85dd175e core: add missing lock in TxPool.{GetTransaction,RemoveTx}
Fixes #2650
2016-06-03 12:43:33 +02:00
Felix Lange
89ba380b3c Merge pull request #2656 from fjl/console-test
cmd/geth: make console tests more robust
2016-06-03 11:25:38 +02:00
Felix Lange
b57b6e341e cmd/geth: make console tests more robust
* use --port 0 to avoid p2p port conflicts
* use --maxpeers 0 so it doesn't connect to bootstrap nodes
* use geth.expectExit() to wait for termination
2016-06-03 11:08:55 +02:00
Felix Lange
ad0e6e971e console: remove unnecessary JS evaluation in Welcome 2016-06-03 11:08:55 +02:00
Felix Lange
fdba0cb03c internal/jsre: ensure Stop can be called more than once
This makes "geth js file.js" terminate again.
2016-06-02 22:49:33 +02:00
Péter Szilágyi
61ee9f299d eth/downloader: make fast sync resilient to critical section fails 2016-06-02 12:37:14 +03:00
Péter Szilágyi
16a23ff740 Merge pull request #2637 from karalabe/downloader-always-cancel
eth/downloader: ensure cancel channel is closed post sync
2016-05-31 14:48:52 +03:00
Péter Szilágyi
1d5d21726a Merge pull request #2627 from karalabe/concurrent-head-sync
eth/downloader, trie: pull head state concurrently with chain
2016-05-31 11:52:16 +03:00
Péter Szilágyi
7b662103a0 Merge pull request #2535 from karalabe/modularize-console
cmd, console: split off the console into a reusable package
2016-05-31 11:48:08 +03:00
Péter Szilágyi
da729e5b38 cmd/geth, console: fix reviewer issues 2016-05-31 10:59:38 +03:00
Jeffrey Wilcke
5c39a1bb26 Merge pull request #2585 from karalabe/trie-dirty-tracking
core, core/state, trie: enterprise hand-tuned multi-level caching
2016-05-30 23:07:51 +02:00
Péter Szilágyi
14ae5708d6 console, internal/jsre: colorize JavaScript exceptions too 2016-05-30 17:25:23 +03:00
Péter Szilágyi
ffaf58f0a9 cmd, console: split off the console into a reusable package 2016-05-30 17:25:23 +03:00
Péter Szilágyi
4496a44f68 eth/downloader: ensure cancel channel is closed post sync 2016-05-30 12:01:50 +03:00
Péter Szilágyi
4f1d92b332 eth/downloader, trie: pull head state concurrently with chain 2016-05-27 14:26:00 +03:00
Péter Szilágyi
ab664c7e17 Merge pull request #2626 from karalabe/fix-testnet-zero-nonce
core/state: return the starting nonce for non-existent accs (testnet)
2016-05-27 11:10:52 +03:00
Péter Szilágyi
8ee84584a4 core/state: return the starting nonce for non-existent accs (testnet) 2016-05-27 10:42:11 +03:00
Péter Szilágyi
748d1c171d core, core/state, trie: enterprise hand-tuned multi-level caching 2016-05-26 16:33:09 +03:00
Jeffrey Wilcke
a7434fd008 Merge pull request #2614 from fjl/bad-block-report
eth: enable bad block reports
2016-05-25 22:40:28 +02:00
Jeffrey Wilcke
d9bb8179d3 Merge pull request #2617 from obulpathi/develop
misc: fix spelling mistake
2016-05-25 09:54:06 +02:00
Jeffrey Wilcke
ee36057dd5 Merge pull request #2612 from remyroy/fix-eth-getCompilers
eth/api: fixed GetCompilers when there is no error creating Solc
2016-05-25 09:48:51 +02:00
Jeffrey Wilcke
a476aabf1a Merge pull request #2613 from remyroy/rel-path-solc
common/compiler: support relative path to solc
2016-05-25 09:47:54 +02:00
Obulapathi N Challa
f3769a97d5 misc: fix spelling mistake 2016-05-24 22:13:05 -05:00
Felix Lange
ca18202eb9 eth: enable bad block reports
We used to have reporting of bad blocks, but it was disabled
before the Frontier release. We need it back because users
are usually unable to provide the full RLP data of a bad
block when it occurs.

A shortcoming of this particular implementation is that the
origin peer is not tracked for blocks received during eth/63
sync. No origin peer info is still better than no report at
all though.
2016-05-25 02:02:51 +02:00
Rémy Roy
5eb60a6da2 common/compiler: support relative path to solc 2016-05-24 17:02:00 -04:00
Rémy Roy
f86ea9aad5 eth/api: fixed GetCompilers when there is no error creating Solc 2016-05-24 16:44:33 -04:00
Felix Lange
5bcdbb1ce4 Merge pull request #2603 from Digital-Contraptions-Imaginarium/develop
README: make it clear how to build all executables
2016-05-23 16:46:16 +02:00
Gianfranco Cecconi
2e530f4889 Just to make it clear how to build all executables 2016-05-23 14:19:17 +01:00
Jeffrey Wilcke
7f515b0e88 Merge pull request #2564 from bas-vk/submit-tx
eth: add new RPC method (personal.) SignAndSendTransaction
2016-05-23 14:17:46 +02:00
Jeffrey Wilcke
b4dd3209b2 Merge pull request #2597 from fabioberger/develop
core: Simplify bloom9 tests
2016-05-23 13:15:32 +02:00
Jeffrey Wilcke
262d92834a Merge pull request #2575 from bas-vk/filter
eth/filter: bugfix which can cause a nil pointer crash when parsing f…
2016-05-23 12:54:35 +02:00
Fabio Berger
faf663133b core: Simplify bloom9 tests with available convenience method TestBytes 2016-05-22 16:42:46 -07:00
Bas van Kervel
64a6c2c1b6 eth: add new RPC method (personal.) SignAndSendTransaction 2016-05-20 15:54:18 +02:00
Jeffrey Wilcke
847aaffbb8 Merge pull request #2589 from karalabe/estimate-remove-codecheck
accounts/abi/bind, eth: rely on getCode for sanity checks, not estimate and call
2016-05-20 15:13:29 +02:00
Jeffrey Wilcke
a8472e0fdb Merge pull request #2315 from karalabe/concurrent-headers-2
eth/downloader: concurrent header downloads
2016-05-20 14:25:28 +02:00
Péter Szilágyi
1580ec1804 accounts/abi/bind, eth: rely on getCode for sanity checks, not estimate and call 2016-05-20 12:29:28 +03:00
Péter Szilágyi
8906b2fe09 eth/downloader: fix reviewer comments 2016-05-20 10:56:01 +03:00
Jeffrey Wilcke
e798e4fd75 Merge pull request #2582 from obscuren/fix-sign-tx
eth: fixed regression in eth_signTransaction fixes #2578
2016-05-19 14:22:24 +02:00
Jeffrey Wilcke
4b1a7d3868 eth: fixed regression in eth_signTransaction fixes #2578
Sign transaction returned the unsigned transaction rather than the
signed one.
2016-05-18 17:25:34 +02:00
Felix Lange
e27af97a3c Merge pull request #2580 from fjl/p2p-config
node, p2p: move network config out of Server
2016-05-18 12:37:15 +02:00
Felix Lange
542b839ec7 node, p2p: move network config out of Server
This silences a go vet message about copying p2p.Server in package node.
2016-05-18 12:19:04 +02:00
Bas van Kervel
67cd4ee8d2 eth/filter: bugfix which can cause a nil pointer crash when parsing filter arguments 2016-05-17 16:17:54 +02:00
Jeffrey Wilcke
c8a8ad97f7 Merge pull request #2574 from karalabe/notx-during-fastsync
eth: skip transaction handling during fast sync
2016-05-17 14:56:57 +02:00
Péter Szilágyi
d87f7a1e81 eth: skip transaction handling during fast sync 2016-05-17 14:17:20 +03:00
Jeffrey Wilcke
adc1b50395 Merge pull request #2567 from fjl/console-history-exclude
cmd/geth: fix console history exclusion
2016-05-17 12:04:58 +02:00
Péter Szilágyi
e86619e75d eth/downloader: stream partial skeleton filling to processor 2016-05-17 10:03:34 +03:00
Péter Szilágyi
b40dc8a1da eth/downloader: implement concurrent header downloads 2016-05-17 10:03:34 +03:00
Felix Lange
86da6feb40 cmd/geth: fix console history exclusion
Calls to 'personal' API should be excluded from console history because
they can be called with an account passphrase as argument. The check for
such calls was inverted and didn't work.
2016-05-14 00:10:41 +02:00
Jeffrey Wilcke
fe532a98f9 core: fixed pointer assignment
This fixes an issue where it's theoretical possible to cause a consensus
failure when hitting the lower end of the difficulty, though pratically
impossible it's worth a fix.
2016-05-13 12:12:46 +02:00
Péter Szilágyi
39ce85cf5d eth/downloader: bound fork ancestry and allow heavy short forks 2016-05-13 12:12:13 +02:00
Jeffrey Wilcke
72e60dea36 Merge pull request #2563 from obscuren/rpcaddr-fix
eth: fixed double close of channel. Fixes #2555
2016-05-12 20:50:40 +02:00
Jeffrey Wilcke
7c1f74713e event: fixed subscribtions to stopped event mux
This fixes an issue where the following would lead to a panic due to a
channel being closed twice:

* Start mux
* Stop mux
* Sub to mux
* Unsub

This is fixed by setting the subscriptions status to closed resulting in
the Unsubscribe to ignore the request when called.
2016-05-12 20:38:09 +02:00
Péter Szilágyi
a5ff487889 Merge pull request #2559 from karalabe/abigen-unmarshal
accounts/abi/bind: fix multi-value anonymous unmarshalling
2016-05-12 17:49:09 +03:00
Péter Szilágyi
331b815300 Merge pull request #2560 from 6londe/patch-3
README: fix typos
2016-05-12 16:52:09 +03:00
Changhoon Lee
2348f8e2a8 README: fix typos
README: fix typos
2016-05-12 22:40:47 +09:00
Péter Szilágyi
251b3c6406 accounts/abi: fix abi test for go vet... 2016-05-12 16:36:58 +03:00
Péter Szilágyi
cc21706c50 accounts/abi/bind: fix multi-value anonymous unmarshalling 2016-05-12 16:28:18 +03:00
Péter Szilágyi
25931f12c1 Merge pull request #2551 from obscuren/abi-interface-slice-fix
accounts/abi: fixed unpacking in to already sliced interfaces
2016-05-12 16:27:26 +03:00
Jeffrey Wilcke
91a7a4a786 accounts/abi: fixed unpacking in to already slice interfaces
Previously it was assumed that wheneven type `[]interface{}` was given
that the interface was empty. The abigen rightfully assumed that
interface slices which already have pre-allocated variable sets to be
assigned.

This PR fixes that by checking that the given `[]interface{}` is larger
than zero and assigns each value using the generic `set` function (this
function has also been moved to abi/reflect.go) and checks whether the
assignment was possible.

The generic assignment function `set` now also deals with pointers
(useful for interface slice mentioned above) by dereferencing the
pointer until it finds a setable type.
2016-05-11 13:36:27 +02:00
Péter Szilágyi
d89e57ea8d Merge pull request #2549 from karalabe/geth-tester-text-templates
cmd/geth: use text/templates in the tester, not html
2016-05-11 13:51:11 +03:00
Péter Szilágyi
5a901bb555 Merge pull request #2548 from karalabe/surface-rpc-endpoint
cmd/geth, internal/web3ext, rpc: surface rpc module, fix shh, fix miner
2016-05-11 12:37:26 +03:00
Péter Szilágyi
284f1d6beb cmd/geth: use text/templates in the tester, not html 2016-05-11 11:58:48 +03:00
Péter Szilágyi
bc6fdad786 cmd/geth, internal/web3ext, rpc: surface rpc module, fix shh, fix miner 2016-05-11 11:49:44 +03:00
Jeffrey Wilcke
c05db38a5e Merge pull request #2515 from karalabe/multigo-travis
travis: run CI builds against multiple Go versions
2016-05-11 10:10:28 +02:00
Jeffrey Wilcke
34c56766b7 Merge pull request #2539 from bas-vk/origin-case
rpc: HTTP origin case insensitive
2016-05-11 10:10:04 +02:00
Bas van Kervel
5479097790 rpc: HTTP origin case insensitive 2016-05-10 18:01:58 +02:00
Jeffrey Wilcke
20d4e527bd Merge pull request #2537 from obscuren/hotfix-pending-statu
miner: fixed pending state by not shutting down update loop
2016-05-10 13:43:07 +02:00
Jeffrey Wilcke
a824c3f02f miner: fixed pending state by not shutting down update loop 2016-05-10 13:35:01 +02:00
Péter Szilágyi
5782164a35 Merge pull request #2529 from fjl/fdlimit-bsd
cmd/utils: fix build on *BSD
2016-05-09 16:39:34 +03:00
Péter Szilágyi
27f657478f Merge pull request #2524 from fjl/windows-ci-scripts
build: add CI scripts for windows
2016-05-09 15:59:49 +03:00
Péter Szilágyi
756b62988c Merge pull request #2523 from fjl/shutdown
core, eth, miner: improve shutdown synchronisation
2016-05-09 15:59:41 +03:00
Felix Lange
f61e203c10 cmd/utils: fix build on *BSD 2016-05-09 13:13:44 +02:00
Felix Lange
56ed6152a1 core, eth, miner: improve shutdown synchronisation
Shutting down geth prints hundreds of annoying error messages in some
cases. The errors appear because the Stop method of eth.ProtocolManager,
miner.Miner and core.TxPool is asynchronous. Left over peer sessions
generate events which are processed after Stop even though the database
has already been closed.

The fix is to make Stop synchronous using sync.WaitGroup.

For eth.ProtocolManager, in order to make use of WaitGroup safe, we need
a way to stop new peer sessions from being added while waiting on the
WaitGroup. The eth protocol Run function now selects on a signaling
channel and adds to the WaitGroup only if ProtocolManager is not
shutting down.

For miner.worker and core.TxPool the number of goroutines is static,
WaitGroup can be used in the usual way without additional
synchronisation.
2016-05-09 13:03:08 +02:00
Péter Szilágyi
dc7f202ecd Merge pull request #2528 from karalabe/fix-web3-eth_syncing
jsre: hotfix web3 for the console eth.syncing formatting
2016-05-09 12:46:48 +03:00
Péter Szilágyi
1d42061e2c jsre: hotfix web3 for the console eth.syncing formatting 2016-05-09 11:59:59 +03:00
Jeffrey Wilcke
b6135a72dd Merge pull request #2527 from obscuren/trace-transaction-fix
eth: fixed tracing functions using the current header instead of parent
2016-05-09 10:34:53 +02:00
Jeffrey Wilcke
7d59c5c58d eth: fixed tracing functions using the current header instead of parent
Fixes #2525
2016-05-09 10:24:31 +02:00
Péter Szilágyi
8aa4597c9e Merge pull request #2520 from karalabe/makefile-cross-update
Makefile: go build instead of install (solves cross compile issues)
2016-05-09 11:12:28 +03:00
Péter Szilágyi
57ba1824ac Merge pull request #2514 from bas-vk/startRPC_WS
node: start RPC/WS interface on localhost by default
2016-05-08 17:37:35 +03:00
Felix Lange
c89f4352d0 build: add CI scripts for windows 2016-05-08 01:23:07 +02:00
Péter Szilágyi
6a00a3ade1 Makefile: go build instead of install (solves cross compile issues) 2016-05-06 16:56:22 +03:00
Péter Szilágyi
f821b0188a Merge pull request #2518 from fjl/debug-go-trace
internal/debug: also rename debug_startTrace to debug_startGoTrace
2016-05-06 13:05:54 +03:00
Bas van Kervel
d79f2f2656 node: start RPC/WS interface on localhost by default 2016-05-06 12:00:47 +02:00
Felix Lange
130bccc763 cmd/utils: flush trace and CPU profile data when force-qutting
Also reduce log messages a little bit.
2016-05-06 11:16:47 +02:00
Felix Lange
ae9ed5c420 internal/debug: also rename debug_startTrace to debug_startGoTrace
This was missing from the previous change.
2016-05-06 11:15:05 +02:00
Jeffrey Wilcke
a1c201a5ac Merge pull request #2517 from fjl/debug-go-trace
internal/debug: rename debug_trace to debug_goTrace
2016-05-06 11:09:15 +02:00
Felix Lange
844e911129 internal/debug: rename debug_trace to debug_goTrace
Reduces confusion with EVM execution tracing methods.
2016-05-06 10:27:24 +02:00
Péter Szilágyi
bc3b406bff travis: run CI builds against multiple Go versions 2016-05-04 20:10:36 +03:00
Jeffrey Wilcke
2d7d7ef2fe Merge pull request #2511 from obscuren/ver-fix
cmd/geth: fixed to use proper version string for output
2016-05-03 14:04:53 +02:00
Jeffrey Wilcke
14d5033c9d cmd/geth: fixed to use proper version string for output 2016-05-03 14:01:37 +02:00
Jeffrey Wilcke
258cc73ea9 Merge pull request #2510 from fjl/p2p-fixups
p2p/discover: prevent bonding self
2016-05-03 13:30:51 +02:00
Jeffrey Wilcke
79b7b5eeaa Merge pull request #2505 from karalabe/make-readme-suck-less
Make the README suck less :P
2016-05-03 13:30:42 +02:00
Péter Szilágyi
b4fbcd5060 README: Polish up exec section, rewrite contrib and add license. 2016-05-03 14:26:55 +03:00
Jeffrey Wilcke
488528e9e4 Merge pull request #2497 from karalabe/version-contract-3
Geth release oracle
2016-05-03 13:19:05 +02:00
Felix Lange
8110671960 p2p/discover: prevent bonding self 2016-05-02 18:50:16 +02:00
Felix Lange
32bb280179 p2p: improve readability of dial task scheduling code 2016-05-02 18:50:15 +02:00
Péter Szilágyi
4536b993ff cmd/geth, release: polish and deploy live release contract 2016-05-02 16:20:58 +03:00
Péter Szilágyi
586eddfd09 release, all: integrate the release service into geth 2016-05-02 16:20:21 +03:00
Péter Szilágyi
d46da273c6 common/releases: rewrite release version contract + use native dapps 2016-05-02 16:20:04 +03:00
Gustav Simonsson
ecd7199c43 common/versions, cmd/utils: add geth version contract 2016-05-02 10:31:54 +03:00
Felix Lange
1c20313a6a Merge pull request #2493 from almindor/develop
eth: add personal_importRawKey
2016-04-29 23:09:37 +02:00
Péter Szilágyi
cfa999f006 Merge pull request #2504 from Arachnid/public-vmconfig
Provide a public accessor for ChainConfig
2016-04-29 14:50:10 +03:00
Nicholas Johnson
c74a575725 core: Provide a public accessor for ChainConfig
This is necessary for external users of the go-ethereum code who want to, for instance, build a custom node that plays back transactions, as core.ApplyTransaction requires a ChainConfig as a parameter.
2016-04-29 12:42:03 +01:00
Péter Szilágyi
9672a62a38 Merge pull request #2485 from karalabe/fakepow
cmd: add a `--fakepow` flag to help benchmarking database changes
2016-04-29 14:19:38 +03:00
Ales Katona
572da73d4d eth: add personal_importRawKey for runtime private key import 2016-04-28 09:11:40 -06:00
Péter Szilágyi
0f722df2d9 Merge pull request #2435 from obscuren/abi-array-fixes
accounts/abi: refactored ABI package
2016-04-28 15:23:07 +03:00
Jeffrey Wilcke
1b77d5090d Merge pull request #2499 from bas-vk/reorg-logs
eth/filters: ignore logs that don't match filter criteria on chain reorg
2016-04-28 12:59:07 +02:00
Jeffrey Wilcke
e62c2aeb1b Merge pull request #2491 from obscuren/genesis-config-fix
core, eth: added json tag field for proper unmarshalling
2016-04-28 12:58:56 +02:00
Jeffrey Wilcke
4880868c88 accounts/abi: fixed string and fixed size bytes packing 2016-04-28 12:41:47 +02:00
Jeffrey Wilcke
c3d5250473 accounts/abi: added unpacking "anything" in to interface{} 2016-04-28 12:41:42 +02:00
Jeffrey Wilcke
e0dc45fce2 accounts/abi: fixed strict go-like unpacking 2016-04-28 12:41:37 +02:00
Bas van Kervel
48cc36ce83 eth/filters: ignore logs that don't match filter criteria on chain reorg 2016-04-28 12:33:42 +02:00
Péter Szilágyi
123aa659e4 Merge pull request #2496 from karalabe/abibind-missing-contract-error
accounts/abi/bind, eth: add contract non-existent error
2016-04-27 17:31:12 +03:00
Péter Szilágyi
cdcbb2f160 accounts/abi/bind, eth: add contract non-existent error 2016-04-27 17:15:23 +03:00
Péter Szilágyi
db62979514 Merge pull request #2492 from fjl/accounts-arm64
accounts: disable file system watch on linux/arm64
2016-04-26 16:15:18 +03:00
Péter Szilágyi
5137c04ccf Merge pull request #2484 from pcasaretto/address-test-coverage
Improve Address test coverage
2016-04-26 16:13:49 +03:00
Paulo L F Casaretto
a20d3fc362 common: Add tests for Address#UnmarshalJSON 2016-04-26 09:12:36 -03:00
Felix Lange
3d6d828caf Merge pull request #2478 from fjl/geth-js-tweak
cmd/geth, jsre: improve the js command
2016-04-26 10:39:19 +02:00
Felix Lange
6a543607ef accounts: disable file system watch on linux/arm64 2016-04-25 13:30:28 +02:00
Jeffrey Wilcke
c1a4dcfc87 core, eth: added json tag field for proper unmarshalling
According to our own instructions the genesis config attribute should be
"config". The genesis definition in the go code, however, has a field
called `ChainConfig`. This field now has a `json:"config"` struct tag so
that the json is properly unmarshalled.

This fixes #2482
2016-04-25 12:48:31 +02:00
Felix Lange
70b8b54cd2 Merge pull request #2481 from fjl/bootnode-fixup
cmd/bootnode: fix -genkey, add logging options
2016-04-25 12:42:28 +02:00
Felix Lange
c88c89fd9e cmd/bootnode: fix -genkey, add logging options 2016-04-22 13:35:40 +02:00
Péter Szilágyi
b06f44ecc2 cmd: add a --fakepow flag to help benchmarking database changes 2016-04-21 12:14:57 +03:00
Felix Lange
87ae0df476 cmd/geth, jsre: improve the js command
geth js stopped the JS runtime after running the first input file
and blocked for pending callbacks. This commit makes it process
all files and enables quitting with Ctrl-C regardless of callbacks.

Error reporting is also improved. If a script fails to load, the error
is printed and includes the backtrace. package jsre now ensures that
otto is aware of the filename, the backtrace will contain them.

Before:

$ geth js bad.js; echo "exit $?"
... log messages ...
exit 0

After:

$ geth js bad.js; echo "exit $?"
... log messages ...
Fatal: JavaScript Error: Invalid number of input parameters
    at web3.js:3109:20
    at web3.js:4917:15
    at web3.js:4960:5
    at web3.js:4984:23
    at checkWork (bad.js:11:9)
    at bad.js:19:1

exit 1
2016-04-20 23:33:43 +02:00
Jeffrey Wilcke
5127ec10cb accouns/abi: refactored ABI package
Refactored the abi package parsing and type handling. Relying mostly on
package reflect as opposed to most of our own type reflection. Our own
type reflection is still used however for cases such as Bytes and
FixedBytes (abi: bytes•).

This also inclused several fixes for slice handling of arbitrary and
fixed size for all supported types.

This also further removes implicit type casting such as assigning,
for example `[2]T{} = []T{1}` will fail, however `[2]T{} == []T{1, 2}`
(notice assigning *slice* to fixed size *array*). Assigning arrays to
slices will always succeed if they are of the same element type.

Incidentally also fixes #2379
2016-04-20 16:43:57 +02:00
Jeffrey Wilcke
18580e152c VERSION, cmd/geth: bumped version 2016-04-19 18:17:44 +02:00
Péter Szilágyi
a6ca8fd268 Merge pull request #2463 from fjl/rpc-context-key
rpc: remove NotifierContextKey
2016-04-19 10:22:48 +03:00
Felix Lange
27116bd46c Merge pull request #2462 from fjl/rpc-remove-js
rpc: move web3.js extensions to internal/web3ext
2016-04-15 18:13:24 +02:00
Felix Lange
a40e61b4ac rpc: remove NotifierContextKey
Context keys must have a unique type in order to prevent
any unintented clashes. The code used int(1) as key.

Fix it by implementing the pattern recommended by package context.
2016-04-15 18:10:52 +02:00
Péter Szilágyi
16d10aae0c Merge pull request #2461 from karalabe/fix-simulator-estimates
accounts/abi/bind/backends: estimate needed gas, not used
2016-04-15 18:50:50 +03:00
Felix Lange
e728aaca72 rpc: move web3.js extensions to internal/web3ext 2016-04-15 17:36:01 +02:00
Péter Szilágyi
e581f2690a accounts/abi/bind/backends: estimate needed gas, not used 2016-04-15 18:32:21 +03:00
Felix Lange
6197fbf8d7 Merge pull request #2458 from fjl/go-vet
all: fix go vet warnings
2016-04-15 13:45:15 +02:00
Péter Szilágyi
5c17b2f521 Merge pull request #2460 from fjl/whisper-expiration-test-delay
whisper: deflake Test*MessageExpiration
2016-04-15 14:44:36 +03:00
Felix Lange
3a5bdef962 whisper: deflake Test*MessageExpiration
These tests have become a common annoyance on CI. Fix them by allowing
messages with expiration == now into the cache and delaying the check
for expired message handling slightly.
2016-04-15 13:28:46 +02:00
Felix Lange
bf5ae502ef Makefile: enable go vet on Travis CI 2016-04-15 11:17:27 +02:00
Felix Lange
6fdd0893c3 all: fix go vet warnings 2016-04-15 11:17:27 +02:00
Felix Lange
68c755a238 core/state: fix TestDump
Lazy "I'll just put return here instead of fixing the test" found by go vet.
2016-04-15 11:16:56 +02:00
Felix Lange
ebf3cf8f7d logger/glog: fix go vet issues
logging.printf triggered a format string warning. Silence it
by renaming the function.
2016-04-15 10:58:41 +02:00
Felix Lange
24cdac41f3 core, core/types, eth: add and use Block.Body
This fixes a few uses of unkeyed Body literals which go vet was
complaining about.
2016-04-15 10:57:37 +02:00
Felix Lange
fdc5a7dc1a Merge pull request #2457 from fjl/license-update-1.4
all: update license information
2016-04-15 10:09:40 +02:00
Felix Lange
d04a2e7557 all: update license information 2016-04-15 09:48:05 +02:00
Felix Lange
728ad6f47d build: tweak update-license.go 2016-04-15 09:46:54 +02:00
Péter Szilágyi
499d63f706 Merge pull request #2456 from bas-vk/rpc-arg-whitespace
cmd/utils: strip excessive whitespace from api command line arguments
2016-04-14 18:26:56 +03:00
Péter Szilágyi
5f917715c5 Merge pull request #2454 from karalabe/trace-fix
eth: fix single transaction tracing (run prev mutations)
2016-04-14 17:52:34 +03:00
Bas van Kervel
529897ea2b cmd/utils: strip excessive whitespace from api command line arguments 2016-04-14 16:23:43 +02:00
Péter Szilágyi
53016c1225 eth, rpc: make trace configs optional 2016-04-14 15:10:29 +03:00
Péter Szilágyi
bbc77f488e eth: fix single transaction tracing (run prev mutations) 2016-04-14 14:29:47 +03:00
Felix Lange
e50e3bea49 Merge pull request #2235 from fjl/chaindb-api-and-console-fixes
eth: add chaindbProperty to debug API (+ console fixes)
2016-04-13 13:05:29 +02:00
Felix Lange
bea56d84e5 internal/debug: add memStats and gcStats to API 2016-04-13 12:08:07 +02:00
Felix Lange
bcd8aeefdd eth: add chaindbProperty to debug API 2016-04-13 12:08:07 +02:00
Felix Lange
05e257c22c jsre: hide fields with prefix _ when pretty-printing
This makes web3 internals like _requestManager invisible.
2016-04-13 12:06:42 +02:00
Felix Lange
f08680985a jsre: fix <tab><tab> completion magic 2016-04-13 12:06:42 +02:00
Felix Lange
5542b51b50 jsre: expose Do 2016-04-13 12:06:42 +02:00
Péter Szilágyi
b34b130fb5 Merge pull request #2450 from karalabe/fix-ios-kqueue
accounts: disable filesystem notifications on iOS
2016-04-13 12:48:51 +03:00
Péter Szilágyi
fd36448d6a accounts: disable filesystem notifications on ios 2016-04-13 12:29:39 +03:00
Felix Lange
9d81f4fdd1 Merge pull request #2448 from fjl/jsre-bignum
jsre: print BigNumber objects with custom constructor as number
2016-04-12 18:52:40 +02:00
Felix Lange
4e85be0717 jsre: print BigNumber objects with custom constructor as number 2016-04-12 17:42:14 +02:00
Felix Lange
f460b0217f Merge pull request #2446 from karalabe/console-unlock-fix
cmd/utils: fix accounts merge error on console unlock
2016-04-12 17:07:37 +02:00
Péter Szilágyi
a1f1c404c3 cmd/utils: fix accounts merge error on console unlock 2016-04-12 18:01:37 +03:00
Péter Szilágyi
1e9b504ee7 Merge pull request #2284 from fjl/accounts-addr-cache
accounts: cache key addresses
2016-04-12 17:51:09 +03:00
Péter Szilágyi
33e4f51749 Merge pull request #2444 from karalabe/gethrpctest-chainconfig-panic
cmd/gethrpctest: add missing chain configuration config field
2016-04-12 17:01:51 +03:00
Felix Lange
6498df7b02 accounts: ensure TimedUnlock does not override indefinite unlock timeout 2016-04-12 15:59:18 +02:00
Felix Lange
46df50be18 accounts: improve API and add documentation
- Sign takes common.Address, not Account
- Import/Export methods work with encrypted JSON keys
2016-04-12 15:59:18 +02:00
Felix Lange
91aaddaeb3 cmd/geth: add recovery procedure for AmbiguousAddrError 2016-04-12 15:59:18 +02:00
Felix Lange
ea005a0295 cmd/utils: fix --password on Windows
Text files created on Windows typically have \r\n line endings.
Trim them when reading password files.
2016-04-12 15:59:18 +02:00
Felix Lange
aca9d6a1fb cmd/geth: print actual error when --unlock fails 2016-04-12 15:59:17 +02:00
Felix Lange
549f1add29 eth: report unlock errors to RPC clients 2016-04-12 15:59:12 +02:00
Felix Lange
6f1ca0bc91 accounts: add ErrDecrypt 2016-04-12 15:58:07 +02:00
Felix Lange
a9f26dcd0d accounts: cache key addresses
In order to avoid disk thrashing for Accounts and HasAccount,
address->key file mappings are now cached in memory. This makes it no
longer necessary to keep the key address in the file name. The address
of each key is derived from file content instead.

There are minor user-visible changes:

- "geth account list" now reports key file paths alongside the address.
- If multiple keys are present for an address, unlocking by address is
  not possible. Users are directed to remove the duplicate files
  instead. Unlocking by index is still possible.
- Key files are overwritten written in place when updating the password.
2016-04-12 15:58:07 +02:00
Felix Lange
ef63e9af55 Godeps: add github.com/rjeczalik/notify 2016-04-12 15:58:07 +02:00
Felix Lange
ee1682ffe6 cmd/geth: add tests for account commands 2016-04-12 15:58:07 +02:00
Felix Lange
6cb08d8328 Godeps: add github.com/cspeare/cp 2016-04-12 15:58:06 +02:00
Felix Lange
46e8940b19 accounts: streamline API
- Manager.Accounts no longer returns an error.
- Manager methods take Account instead of common.Address.
- All uses of Account with unkeyed fields are converted.
2016-04-12 15:58:01 +02:00
Felix Lange
2dc20963e7 cmd/geth: move account commands to accountcmd.go 2016-04-12 15:56:49 +02:00
Felix Lange
4e6d8b348d accounts: fix go vet warnings 2016-04-12 15:56:49 +02:00
Felix Lange
85e6c40c00 accounts, crypto: move keystore to package accounts
The account management API was originally implemented as a thin layer
around crypto.KeyStore, on the grounds that several kinds of key stores
would be implemented later on. It turns out that this won't happen so
KeyStore is a superflous abstraction.

In this commit crypto.KeyStore and everything related to it moves to
package accounts and is unexported.
2016-04-12 15:56:49 +02:00
Felix Lange
dff9b4246f cmd/geth, cmd/utils: improve input handling
These changes make prompting behave consistently on all platforms:

* The input buffer is now global.
  Buffering was previously set up for each prompt, which can cause weird
  behaviour, e.g. when running "geth account update <input.txt" where
  input.txt contains three lines. In this case, the first password
  prompt would fill up the buffer with all lines and then use only the
  first one.

* Print the "unsupported terminal" warning only once.
  Now that stdin prompting has global state, we can use it to track
  the warning there.

* Work around small liner issues, particularly on Windows.
  Prompting didn't work under most of the third-party terminal emulators
  on Windows because liner assumes line editing is always available.
2016-04-12 15:56:49 +02:00
Péter Szilágyi
aceaaa5178 eth: gracefully fail if chain config is missing 2016-04-12 16:48:43 +03:00
Péter Szilágyi
9027981280 cmd/gethrpctest: add missing chain configuration config field 2016-04-12 16:44:42 +03:00
Felix Lange
83877a0f9d tests: remove eth, node, accounts dependencies
Unlocking the accounts in the test doesn't help with anything.
2016-04-12 15:34:39 +02:00
Jeffrey Wilcke
8627680e24 Merge pull request #2359 from bas-vk/rpc-optional-args
rpc: several fixes and support for optional arguments
2016-04-12 14:03:21 +02:00
Bas van Kervel
aa9fff3e68 rpc: various fixes/enhancements
rpc: be less restrictive on the request id
rpc: improved documentation
console: upgrade web3.js to version 0.16.0
rpc: cache http connections
rpc: rename wsDomains parameter to wsOrigins
2016-04-12 11:02:39 +02:00
Jeffrey Wilcke
934f587bd5 Merge pull request #2431 from bas-vk/js-preload
cmd/geth: add JS preload parameter
2016-04-12 11:00:42 +02:00
Jeffrey Wilcke
e456451a89 Merge pull request #2440 from karalabe/update-ethash
Update ethash
2016-04-11 20:03:47 +02:00
Péter Szilágyi
bf1f620343 eth: fix GPU miner chain config regression 2016-04-11 17:31:00 +03:00
Péter Szilágyi
701ac1ce6c Godeps: pull in the ethash opencl fix 2016-04-11 17:14:32 +03:00
Bas van Kervel
3c5329599c cmd/geth: add JS preload parameter 2016-04-11 13:32:26 +02:00
Péter Szilágyi
8abf06d378 Merge pull request #2430 from bas-vk/chaincmd
cmd/utils: bugfix where database is opened multiple times
2016-04-11 13:21:47 +03:00
Péter Szilágyi
a7161caedf Merge pull request #2427 from bas-vk/pending-tx-console-format
console: use transaction output formatter for eth.pendingTransactions…
2016-04-11 12:34:48 +03:00
Péter Szilágyi
4b2492b614 Merge pull request #2423 from karalabe/abigen-support-arrays
accounts/abi/bind: support generating bindings for various arrays
2016-04-11 11:40:07 +03:00
Bas van Kervel
4081868452 cmd/utils: bugfix where database is opened multiple times 2016-04-07 12:49:00 +02:00
Bas van Kervel
18490d833c console: use transaction output formatter for eth.pendingTransactions output 2016-04-06 11:27:05 +02:00
Péter Szilágyi
fc4fffd5ac accounts/abi/bind: support generating bindings for various arrays 2016-04-05 18:20:50 +03:00
Jeffrey Wilcke
7e02105672 Merge pull request #2417 from fjl/rpc-go-winio
rpc: use go-winio instead of vendoring a named pipe implementation
2016-04-05 09:43:45 +02:00
Jeffrey Wilcke
ed92f116f7 Merge pull request #2407 from bas-vk/rpc-notifications
RPC pub sub
2016-04-05 09:43:32 +02:00
Jeffrey Wilcke
6a185531d2 Merge pull request #2416 from karalabe/kill-canary
core, miner: remove Frontier canary
2016-04-04 20:43:01 +02:00
Jeffrey Wilcke
8d8e2248b2 Merge pull request #2396 from obscuren/abi-slices
abi: support for input and output slices & removed support for implicit type conversion
2016-04-04 20:42:48 +02:00
Jeffrey Wilcke
a306e17a26 abi: removed implicit type casting & refactored type parsing 2016-04-04 20:30:59 +02:00
Jeffrey Wilcke
968d8ffe94 abi: accept output slices of all supported types 2016-04-04 20:30:59 +02:00
Jeffrey Wilcke
022cbd6800 abi: accept input slices of all supported types 2016-04-04 20:30:58 +02:00
Felix Lange
467bb7a719 rpc: use go-winio instead of vendoring a named pipe implementation 2016-04-04 13:56:17 +02:00
Péter Szilágyi
e9254bb0f9 core, miner: remove Frontier canary 2016-04-04 13:18:34 +03:00
Péter Szilágyi
3a2da31c3e Merge pull request #2412 from fjl/p2p-eip8-enable
p2p: enable EIP-8 handshake sending
2016-04-04 13:10:48 +03:00
Jeffrey Wilcke
52dc7cb452 Merge pull request #2378 from obscuren/enable-jit-a-b
cmd/utils, miner: A/B testing JIT VM. Disabled for miners
2016-04-04 11:15:23 +02:00
Jeffrey Wilcke
f6f7e7a870 Merge pull request #2415 from karalabe/fix-missing-gastarget
cmd/geth: add missing gas target flag (fixing 0 convergence issue)
2016-04-04 11:14:04 +02:00
Péter Szilágyi
c90fc3503d cmd/geth: add missing gas target flag (fixing 0 convergence issue) 2016-04-04 12:04:04 +03:00
Felix Lange
659c0cb9e8 p2p: enable EIP-8 handshake sending
With the Ethereum Homestead fork is now behind us, we can
assume that everyone runs an EIP-8 capable client.
2016-04-03 23:10:11 +02:00
Jeffrey Wilcke
96c7c39ae4 Merge pull request #2409 from fjl/geth-fixup-init
cmd/geth: fix startup with empty database
2016-04-02 11:40:25 +02:00
Felix Lange
cf842b3fe5 cmd/geth, eth: move --genesis deprecation warning to cmd/geth
This prevents display of the warning for --dev and --olympic.
2016-04-01 21:59:35 +02:00
Felix Lange
78b70d79ec cmd/utils: fix geth startup with empty database 2016-04-01 21:59:23 +02:00
Bas van Kervel
f7328c5ecb rpc: add pub/sub support 2016-04-01 18:26:35 +02:00
Jeffrey Wilcke
fb578f4550 Merge pull request #2405 from karalabe/abigen-default-methods
accounts/abi/bind: surface raw wrappers to access low level ops
2016-04-01 15:42:05 +02:00
Jeffrey Wilcke
8b2aca96c5 Merge pull request #2404 from obscuren/common-hash-json-length-validation
common: added Hash unmarshal json length validation
2016-04-01 14:53:38 +02:00
Jeffrey Wilcke
bbeaab7e64 cmd/utils, miner: A/B testing JIT VM. Disabled for miners
This PR introduces a 10% probability that you'll run the client with the
JIT enabled testing the new client and helps us potentially catch
errors when reported.

This feature is **disabled** for miners (disabling the JIT completely).
The JIT can however be force for miners if they enable both --jitvm and
--forcejit.
2016-04-01 13:44:58 +02:00
Jeffrey Wilcke
be44651523 Merge pull request #2402 from obscuren/eth-sign-fix
eth: enforce signing hashes using eth_sign instead of arbitrary data
2016-04-01 13:42:48 +02:00
Jeffrey Wilcke
c58079461b Merge pull request #2281 from obscuren/configurable-genesis
core: homestead chain configuration & artificial gas floor target mining flag
2016-04-01 13:42:19 +02:00
Jeffrey Wilcke
d63e29241d common: added Hash unmarshal json length validation 2016-04-01 12:56:54 +02:00
Péter Szilágyi
4097478884 accounts/abi/bind: surface raw wrappers to access low level ops 2016-04-01 13:07:05 +03:00
Jeffrey Wilcke
1f3596c25a core: transition db now also returns the required gas amount
Exposes some core methods to transition and compute new state
information and adds an additional return value to the transition db
method to fetch required gas for that particular message (excluding gas
refunds from any SSTORE[X] = 0 and SUICIDE.

Fixes #2395
2016-04-01 01:01:10 +02:00
Jeffrey Wilcke
9055c16efa accounts/a/b/backends, core: chain maker homestead block set to 0
The chain maker and the simulated backend now run with a homestead phase
beginning at block 0 (i.e. there's no frontier).

This commit also fixes up #2388
2016-04-01 01:01:10 +02:00
Jeffrey Wilcke
f0cbebb19f core: added basic chain configuration
Added chain configuration options and write out during genesis database
insertion. If no "config" was found, nothing is written to the database.

Configurations are written on a per genesis base. This means
that any chain (which is identified by it's genesis hash) can have their
own chain settings.
2016-04-01 01:01:10 +02:00
Jeffrey Wilcke
916fe11241 eth: enforce signing hashes using eth_sign instead of arbitrary data 2016-04-01 00:43:14 +02:00
Péter Szilágyi
10d3466c93 Merge pull request #2383 from karalabe/goabi-exclusions-duplicates
accounts/abi/bind, cmd/abigen: dedup structs, exclude patterns
2016-03-31 19:29:31 +03:00
Jeffrey Wilcke
db739b506a Merge pull request #2399 from karalabe/fix-trace-json-output
eth: fix accidental nil panic on nil errors
2016-03-31 17:39:21 +02:00
Péter Szilágyi
4326061e35 eth: fix accidental nil panic on nil errors 2016-03-31 18:26:25 +03:00
Péter Szilágyi
f115f077d7 Merge pull request #2398 from karalabe/fix-trace-json-output
eth: manually convert errors to strings on the trace API (json cannot)
2016-03-31 17:59:28 +03:00
Péter Szilágyi
6c670eff01 eth: manually convert errors to strings on the trace API (json cannot) 2016-03-31 17:41:26 +03:00
Péter Szilágyi
4ab593c5a1 accounts/abi/bind: support account slices, drop hash type 2016-03-31 12:48:50 +03:00
Péter Szilágyi
c2bbff6116 accounts/abi/bind: merge all tests into a single suite 2016-03-31 12:45:50 +03:00
Péter Szilágyi
787d688c2f accounts/abi/bind: use anonymous ephemeral call result structs 2016-03-31 12:45:30 +03:00
Péter Szilágyi
b813e4d411 accounts/abi/bind, cmd/abigen: dedup structs, exclude patterns 2016-03-26 11:43:09 +02:00
Jeffrey Wilcke
798e4fb4ed Merge pull request #2381 from karalabe/fix-abigen-tuples
accounts/abi/bind: fix double pointer in generated code
2016-03-25 17:17:43 +01:00
Péter Szilágyi
9b4a45f6e8 accounts/abi/bind: fix double pointer in generated code 2016-03-25 15:09:06 +02:00
Péter Szilágyi
cfb3a8ea8f Merge pull request #2357 from karalabe/abi-binding-generator
accounts/abi/bind: Go ABI binding generator
2016-03-24 17:35:42 +02:00
Péter Szilágyi
73308dbe0e accounts/abi/bind, cmd/abigen: port to templates, bind to solidity 2016-03-24 17:09:45 +02:00
Péter Szilágyi
86cfc22c79 accounts/abi/bind: constructor, auth utils and various backends 2016-03-24 14:15:32 +02:00
Péter Szilágyi
72826bb5ad accounts/abi/bind, cmd/abigen: Go API generator around an EVM ABI 2016-03-24 14:15:18 +02:00
Jeffrey Wilcke
75c86f8646 Merge pull request #2141 from obscuren/evm-init
core, core/vm, tests: changed the initialisation behaviour of the EVM
2016-03-23 23:20:51 +01:00
Jeffrey Wilcke
0cfa21fc7f core, eth, cmd: temporary work around for enabling the jit
This commit serves as a temporary workaround for enabling the jit until
the block customisation PR is merged in.
2016-03-23 23:02:44 +01:00
Jeffrey Wilcke
5f92606be2 eth/api: added root to the receipts 2016-03-23 23:02:44 +01:00
Jeffrey Wilcke
3601320ccd eth, rpc: implemented block debugging rpc calls
Implemented the following block debugging RPC calls

* Block(RLP)
* BlockByFile(fileName)
* BlockByNumber(number)
* BlockByHash(hash)
2016-03-23 23:02:44 +01:00
Jeffrey Wilcke
14013372ae core: Added EVM configuration options
The EVM is now initialised with an additional configured object that
allows you to turn on debugging options.
2016-03-23 23:02:42 +01:00
Jeffrey Wilcke
9866f19d6a Merge pull request #2371 from hiddentao/fix_prompt_passwd_input
Strip extraneous carriage return from end of entered password
2016-03-23 18:06:27 +01:00
Ramesh Nair
6f30034413 cmd/utils: removed password line endings when not using liner. 2016-03-23 22:53:20 +08:00
Jeffrey Wilcke
77d21e472d Merge pull request #2259 from bas-vk/http
rpc/http: improve request handling
2016-03-23 13:01:22 +01:00
Bas van Kervel
a7bae3b2a6 rpc/http: improve request handling 2016-03-23 11:27:08 +01:00
Jeffrey Wilcke
342ae7ce7d core, core/vm, tests: changed the initialisation behaviour of the EVM
The EVM was previously initialised and created for every CALL, CALLCODE,
DELEGATECALL and CREATE. This PR changes this behaviour so that the same
EVM can be used through the session and beyond as long as the
Environment sticks around.
2016-03-23 00:04:00 +01:00
Péter Szilágyi
b3b110bc95 Merge pull request #2348 from obscuren/abi-variable-input
accounts/abi: Fixed bytes input accept []byte and variable input support
2016-03-17 10:21:34 +02:00
Péter Szilágyi
138e7af96c Merge pull request #2354 from karalabe/miner-atomic-pending
eth, miner: fetch pending block/state in on go (data race)
2016-03-16 13:12:46 +02:00
Péter Szilágyi
8b6ae6bf86 Merge pull request #2355 from karalabe/abi-constant-functions-2
accounts/abi: handle the "constant" modifier for functions
2016-03-16 13:12:14 +02:00
Péter Szilágyi
270ea6eec3 accounts/abi: handle the "constant" modifier for functions 2016-03-16 11:24:16 +02:00
Péter Szilágyi
0228fb57cd eth, miner: fetch pending block/state in on go (data race) 2016-03-16 11:23:26 +02:00
Péter Szilágyi
2855a93ede Merge pull request #2341 from leijurv/patch-2
core: fixed various typos
2016-03-16 11:22:33 +02:00
Felix Lange
b5cee9738b Merge pull request #2350 from leijurv/patch-3
core, eth: replace reorganiz with reorganis
2016-03-15 20:33:38 +01:00
Leif Jurvetson
434e4b31d8 core, eth: replace reorganiz with reorganis 2016-03-15 12:03:17 -07:00
Felix Lange
06fe6310a3 Merge pull request #2351 from leijurv/patch-4
core: various typos
2016-03-15 19:39:36 +01:00
Felix Lange
066d301520 Merge pull request #2352 from leijurv/patch-5
eth: various typos
2016-03-15 19:38:24 +01:00
Leif Jurvetson
bbbe2360d0 eth: various typos 2016-03-15 11:27:49 -07:00
Leif Jurvetson
b7bb2d8589 core: various typos 2016-03-15 11:08:18 -07:00
Leif Jurvetson
c7727191ae core: fixed various typos 2016-03-15 09:12:03 -07:00
Jeffrey Wilcke
fe45210c55 accounts/abi: Fixed bytes input accept []byte and variable input support
Fixed up `[]byte` slice support such that `function print(bytes input)`
accepts `[]byte` as input and treats it as 1 element rather than a slice
of multiple elements.

Added support for variable length input parameters like `bytes` and
`strings`.
2016-03-15 14:10:39 +01:00
Péter Szilágyi
e189fb839c Merge pull request #2327 from fjl/debug-fixes
cmd/utils, internal/debug: fixes for debugging
2016-03-15 11:01:31 +02:00
Jeffrey Wilcke
42c049e519 Merge pull request #2342 from obscuren/issue-templates
templates: added issue template
2016-03-14 23:45:53 +01:00
Jeffrey Wilcke
a0e2e22a4f templates: added issue template 2016-03-14 23:39:21 +01:00
Péter Szilágyi
b8f4a48ada Merge pull request #2337 from karalabe/upnp-error-hang
p2p/nat: fix #2291, NAT discovery did't abort on failure
2016-03-14 17:17:21 +02:00
Péter Szilágyi
64c8e2f2ca p2p/nat: fix #2291, NAT discovery did't abort on failure 2016-03-14 17:08:15 +02:00
Felix Lange
c1343c8872 cmd/utils, internal/debug: show all stacks for 10x Ctrl-C induced panic
Go 1.6 only prints stacks for the current goroutine by default,
but for this panic we want to see all of them.
2016-03-12 00:59:37 +01:00
Felix Lange
cafdd5931e internal/debug: don't disable heap profile collection by default
Setting runtime.MemProfileRate to 0 through the flag default
value makes it impossible to get an 'in-use' profile.
2016-03-12 00:41:34 +01:00
Jeffrey Wilcke
8a3ce5450a Merge pull request #2311 from obscuren/future-proc-fix
core: added future proc mutex lock
2016-03-11 18:26:57 +01:00
Péter Szilágyi
08759b0aaf Merge pull request #2322 from karalabe/headerchain-preformance-fixes
core: cache fresh headers and tds to avoid db trashing
2016-03-11 16:49:21 +02:00
Jeffrey Wilcke
558d18d2b0 core: added future proc mutex lock
Added a future lock which prevents the anything being added or removed
from or to the set when looping over the set of blocks. This fixes a nil
pointer in the range loop when trying to retrieve a block from the set
which was previously available but removed due to regular chain
processing.

Fixes #2305
2016-03-11 09:52:36 +01:00
Péter Szilágyi
c3a4874e5e Merge pull request #2326 from karalabe/goleveldb-datarace-fix
Godeps: pull in the leveldb upstream write race fix
2016-03-11 10:30:46 +02:00
Péter Szilágyi
9ff07304a3 Godeps: pull in the leveldb upstream write race fix 2016-03-11 09:30:25 +02:00
Péter Szilágyi
daad2b2559 core: cache fresh headers and tds to avoid db trashing 2016-03-10 21:40:34 +02:00
Péter Szilágyi
850f41b374 Merge pull request #2321 from karalabe/downloader-throughput-datarace
eth/downloader: fix a throughput estimation data race
2016-03-10 20:38:55 +02:00
Jeffrey Wilcke
8b58cd0190 Merge pull request #2081 from zsfelfoldi/light-chain
core: create a header chain structure shared by full and light clients
2016-03-10 15:16:11 +01:00
zsfelfoldi
73d21ea6af core: create a header chain structure shared by core.BlockChain and light.LightChain 2016-03-10 14:57:32 +01:00
Jeffrey Wilcke
bff9ceb6b8 Merge pull request #2301 from obscuren/uncle-fix
core: announce ChainSideEvent during reorg
2016-03-10 14:21:41 +01:00
Jeffrey Wilcke
6d3cd03a03 Merge pull request #2320 from karalabe/update-goleveldb
Godeps: update goleveldb to fix a compaction data race
2016-03-10 12:24:34 +01:00
Péter Szilágyi
e3f2b541f2 eth/downloader: fix a throughput estimation data race 2016-03-10 12:58:46 +02:00
Péter Szilágyi
ea19e61fba Godeps: update goleveldb to fix a compaction data race 2016-03-10 12:57:59 +02:00
Péter Szilágyi
edd7aa054c Merge pull request #2228 from karalabe/allocate-cache-to-chaindata
cmd, eth, ethdb, node: prioritise chaindata for resources, bump cache
2016-03-09 10:43:07 +02:00
Péter Szilágyi
e90958cd29 cmd, eth, ethdb, node: prioritise chaindata for resources, bump cache 2016-03-09 10:33:39 +02:00
Jeffrey Wilcke
ba3fb9e6f4 core: announce ChainSideEvent during reorg
Previously all blocks that were already in our chain were never re
announced as potential uncle block (e.g. ChainSideEvent). This is
problematic during mining where you want to gather as much possible
uncles as possible increasing the profit. This is now addressed in this
PR where during reorganisations of chains the old chain is regarded as
uncles.

Fixed #2298
2016-03-08 16:12:48 +01:00
Péter Szilágyi
05c86c2c9f Merge pull request #2309 from bas-vk/passwd
console: allow optional password on the command line
2016-03-08 17:07:12 +02:00
Péter Szilágyi
31b4ff8cc1 Merge pull request #2310 from karalabe/ethash-future-cache
Godeps: pull in ethash future cache generator
2016-03-08 16:55:22 +02:00
Péter Szilágyi
119b724362 Godeps: pull in ethash future cache generator 2016-03-08 16:43:56 +02:00
Bas van Kervel
0fd251c7f7 console: allow optional password on the command line 2016-03-08 15:02:21 +01:00
Felix Lange
848e50d6fb Merge pull request #2293 from kobigurk/develop
Adds --keystore
2016-03-08 09:32:33 +01:00
Felix Lange
bc63a3d282 Merge pull request #2292 from remyroy/fix-solc-win-path
Fix path problem with Solidity compile with filepath.Glob on Windows
2016-03-08 00:05:48 +01:00
Rémy Roy
de1831b6e9 common/compiler: fix path problem with filepath.Glob on Windows 2016-03-07 17:52:19 -05:00
Kobi Gurkan
627c2311fb cmd/utils: add --keystore 2016-03-07 14:38:56 -08:00
Jeffrey Wilcke
d45f01d5f7 Merge pull request #2285 from karalabe/forward-empty-bodies
eth: forward empty body responses to the downlaoder
2016-03-03 15:02:10 +01:00
Péter Szilágyi
ae4982a365 eth: forward empty body responses to the downlaoder 2016-03-03 13:06:23 +02:00
Jeffrey Wilcke
41f35d7913 Merge pull request #2280 from bas-vk/js-cleanup
console: cleanup old autocompletations relics
2016-03-02 21:23:47 +01:00
Péter Szilágyi
5adc461d58 Merge pull request #2267 from karalabe/pending-state-events
core, miner: add PendingStateEvent to track non-log updates.
2016-03-02 11:24:27 +02:00
Bas van Kervel
789b9a9f16 console: cleanup old autocompletations relics 2016-03-01 18:27:08 +01:00
Péter Szilágyi
c0bf321ec8 Merge pull request #2278 from fjl/rpc-inproc-pipe
rpc: simplify inproc client
2016-03-01 14:54:52 +02:00
Felix Lange
e8e6df5159 rpc: simplify inproc client
Fixes #2277
2016-03-01 12:47:36 +01:00
Péter Szilágyi
8255afbc75 Merge pull request #2221 from karalabe/expost-key-decryption
crypto: expose key decryption method to parse a string direclty
2016-03-01 11:01:06 +02:00
Péter Szilágyi
f30b809f00 Merge pull request #2215 from bas-vk/estimategas
core: improved check for contract creation
2016-03-01 10:59:12 +02:00
Jeffrey Wilcke
7d598af493 params: updated homestead block 2016-02-29 16:19:32 +01:00
Jeffrey Wilcke
0d89e6c2f1 cmd/utils, params: homestead block 2016-02-29 15:04:55 +01:00
Jeffrey Wilcke
7cbcae3fac Merge pull request #2269 from obscuren/repl-multi-line
cmd/geth: removed multiline support
2016-02-29 15:04:33 +01:00
Jeffrey Wilcke
8ce04ae8e7 Merge pull request #2273 from obscuren/lower-min-accepted-ga-price
cmd/utils: lower the min accepted gas price for relay and GPO
2016-02-29 14:52:29 +01:00
Jeffrey Wilcke
ab92678fb3 cmd/utils: lower the min accepted gas price for relay and GPO to 20 shannon 2016-02-29 14:45:47 +01:00
Jeffrey Wilcke
b1c1d09f83 Merge pull request #2272 from karalabe/fix-premature-downloader-exit
eth/downloader: fix premature exit before notifying all part fetchers
2016-02-29 13:49:01 +01:00
Péter Szilágyi
64ee5763ee eth/downloader: fix premature exit before notifying all part fetchers 2016-02-29 14:22:28 +02:00
Péter Szilágyi
b534106cc8 core, miner: add PendingStateEvent to track non-log updates 2016-02-29 11:24:58 +02:00
Jeffrey Wilcke
cec92f5940 cmd/geth: removed multiline support
When attempting to paste very long lines of text the REPL goes
completely fubar, never completing the paste. Removing the multiline
support "fixes" this.

Long lines of text are usually pasted when deploying contracts and as it
stands right now makes creating new contracts from the REPL impossible.
2016-02-27 16:58:27 +01:00
Jeffrey Wilcke
4e7abcff30 Merge pull request #2266 from obscuren/up-gas-floor
params: settle the Pi vs Tau dispute
2016-02-26 19:26:30 +01:00
Jeffrey Wilcke
f954a8b666 params: settle the Pi vs Tau dispute
This commit increases the artificial gas floor to 4712388
2016-02-26 16:18:11 +01:00
Jeffrey Wilcke
85865a51b6 Merge pull request #2265 from fjl/downloader-mem
eth/downloader: fix header download limiting
2016-02-26 16:02:28 +01:00
Felix Lange
26e72b2ccd eth/downloader: fix header download limiting
Fixes #2201
2016-02-26 15:24:51 +01:00
Péter Szilágyi
a6903ad6a5 Merge pull request #2260 from karalabe/ethash-cache-fixes
Godeps, eth, tests: update ethash, used shared for testing
2016-02-24 17:58:12 +02:00
Péter Szilágyi
45d08a8aa7 crypto: expose key encryption method, add ping-pong test 2016-02-24 16:28:25 +02:00
Péter Szilágyi
0969b35eec crypto: code polish + ensure key file contents match with name 2016-02-24 16:27:32 +02:00
Péter Szilágyi
cda91ee180 crypto: expose key decryption method to parse a string direclty 2016-02-24 16:27:32 +02:00
Péter Szilágyi
66b148dd8f Merge pull request #2251 from karalabe/increase-downlaoder-queue
eth/downloader: bump the download queue size to prevent starvation
2016-02-24 15:55:21 +02:00
Jeffrey Wilcke
483feb0d3f Merge pull request #2242 from jimenezrick/upstream-crypto
Closes #2241: Use Keccak-256 from golang.org/x/crypto/sha3 and mention explicitly
2016-02-24 12:57:57 +01:00
Péter Szilágyi
0a5ee08e2b Godeps, eth, tests: update ethash, used shared for testing 2016-02-24 13:29:47 +02:00
Péter Szilágyi
1415669ac3 Merge pull request #2218 from karalabe/time-drift-warning
p2p/discover: NTP sanity check clock drift in case of expirations
2016-02-24 13:12:52 +02:00
Péter Szilágyi
1e62cd6c79 Merge pull request #2252 from karalabe/disable-metrics-metaops
ethdb: fully disable metrics if not requested (oops?)
2016-02-24 12:50:45 +02:00
Péter Szilágyi
ac954f48bd p2p/discover: emphasize warning, add 10 min cooldown 2016-02-24 12:16:28 +02:00
Péter Szilágyi
b1908f6a16 psp/discovery: NTP sanity check clock drift in case of expirations 2016-02-24 12:14:15 +02:00
Péter Szilágyi
f1ddb1a7ad ethdb: fully disable metrics if not requested (oops?) 2016-02-23 15:47:04 +02:00
Péter Szilágyi
7841f0cc09 Merge pull request #2147 from prasanna/add-vagrantfile
Added Vagrantfile so that developers can spin up a VM to build geth
2016-02-23 13:48:32 +02:00
Péter Szilágyi
93c0012000 eth/downloader: bump the download queue size to prevent starvation 2016-02-23 13:12:11 +02:00
Péter Szilágyi
b57a3f154f Merge pull request #2234 from obscuren/tx-rpc-fix
eth: fixed homestead tx check
2016-02-23 10:29:25 +02:00
Péter Szilágyi
1f281dcaab Merge pull request #2220 from karalabe/fix-rollback-lock
eth/downloader: fix partial rollback and ancestor lookup
2016-02-23 10:27:51 +02:00
Péter Szilágyi
3dca9cc550 Merge pull request #2095 from karalabe/trie-node-iterator
core/state, trie: add node iterator, test state/trie sync consistency
2016-02-23 10:26:25 +02:00
Ricardo Catalinas Jiménez
139f6a0f4c generators: Don't generate params/protocol_params.go with +x bit 2016-02-21 22:46:32 +00:00
Ricardo Catalinas Jiménez
8f65444bf3 common/natspec: Remove old unnused file 2016-02-21 22:46:31 +00:00
Ricardo Catalinas Jiménez
53ce0a76d8 ethdb: Remove outdated README pointing to an old link 2016-02-21 22:46:31 +00:00
Ricardo Catalinas Jiménez
e6af65d02a common: Remove dead code 2016-02-21 22:46:31 +00:00
Ricardo Catalinas Jiménez
fbf3b2ede2 common: Remove empty lines 2016-02-21 22:46:31 +00:00
Ricardo Catalinas Jiménez
3d971c5a34 crypto: Remove dead code 2016-02-21 22:46:31 +00:00
Ricardo Catalinas Jiménez
0c6665558a crypto: Add backward compatible aliases for Sha3{,Hash}() 2016-02-21 22:46:31 +00:00
Ricardo Catalinas Jiménez
436fc8d76a all: Rename crypto.Sha3{,Hash}() to crypto.Keccak256{,Hash}()
As we aren't really using the standarized SHA-3
2016-02-21 22:34:34 +00:00
Ricardo Catalinas Jiménez
c20d6e5e4e crypto/sha3: Export Keccak-256 hash function
This hash function is slightly different from the standarized NIST SHA-3
as both of them use different domain separation bits.
2016-02-21 22:34:34 +00:00
Ricardo Catalinas Jiménez
5387ad760f crypto/sha3: Remove import path checking from vendored code 2016-02-21 22:34:34 +00:00
Ricardo Catalinas Jiménez
e4b138a593 crypto/sha3: Copy latest code from "golang.org/x/crypto/sha3"
Revision: 1f22c0103821b9390939b6776727195525381532
2016-02-21 22:34:34 +00:00
Ricardo Catalinas Jiménez
0a1da69fac crypto/sha3: Delete old copied code 2016-02-21 22:34:34 +00:00
Jeffrey Wilcke
c616391df2 eth: fixed homestead tx check
When a block is queried for retrieval we should add a check whether the
block falls within the frontier rules. If we'd always use `From`
retrieving transaction might fail. This PR temporarily changes
everything to `FromFrontier` (safe!).
2016-02-20 12:39:41 +01:00
Jeffrey Wilcke
f8d98f7fcd Merge pull request #2116 from obscuren/homestead
core, core/vm: consensus changes necessary for the homestead release
2016-02-19 14:41:57 +01:00
Felix Lange
c305005d83 Merge pull request #2227 from bas-vk/mathrandom
console: seed random number generator
2016-02-19 13:17:10 +01:00
Bas van Kervel
6777531a2d console: seed random number generator 2016-02-19 12:55:31 +01:00
Jeffrey Wilcke
17649edd85 Merge pull request #2226 from fjl/eip-8
p2p, p2p/discover: EIP-8 changes
2016-02-19 11:53:50 +01:00
Felix Lange
7d8155714b p2p: EIP-8 changes 2016-02-19 11:14:48 +01:00
Felix Lange
ee1debda53 p2p/discover: EIP-8 changes 2016-02-19 11:14:42 +01:00
Felix Lange
bb07ce3eed rlp: add "tail" struct tag 2016-02-19 11:14:29 +01:00
Péter Szilágyi
216729009b eth/downloader: fix partial rollback and ancestor lookup 2016-02-19 11:17:02 +02:00
Jeffrey Wilcke
5b283663b4 core: Added new TD strategy which mitigate the risk for selfish mining
Assuming the following scenario where a miner has 15% of all hashing
power and the ability to exert a moderate control over the network to
the point where if the attacker sees a message A, it can't stop A from
propagating, but what it **can** do is send a message B and ensure that
most nodes see B before A. The attacker can then selfish mine and
augment selfish mining strategy by giving his own blocks an advantage.

This change makes the time at which a block is received less relevant
and so the level of control an attacker has over the network no longer
makes a difference.

This change changes the current td algorithm `B_td > C_td` to the new
algorithm `B_td > C_td || B_td == C_td && rnd < 0.5`.
2016-02-18 10:12:13 +01:00
Jeffrey Wilcke
b6d88a0e9f core, core/vm, crypto: fixes for homestead
* Removed some strange code that didn't apply state reverting properly
* Refactored code setting from vm & state transition to the executioner
* Updated tests
2016-02-18 10:11:48 +01:00
Jeffrey Wilcke
4f4d2b6474 tests: updated homestead tests 2016-02-18 10:08:18 +01:00
Gustav Simonsson
371871d685 parmas, crypto, core, core/vm: homestead consensus protocol changes
* change gas cost for contract creating txs
* invalidate signature with s value greater than secp256k1 N / 2
* OOG contract creation if not enough gas to store code
* new difficulty adjustment algorithm
* new DELEGATECALL op code
2016-02-18 10:08:11 +01:00
Jeffrey Wilcke
aa36a6ae4f Merge pull request #2206 from fjl/update-deps
Godeps: update all dependencies
2016-02-17 13:46:30 +01:00
Péter Szilágyi
b8d59d9c98 core/state, trie: switch iterator panics to error fields 2016-02-16 12:37:00 +02:00
Péter Szilágyi
151c7bef41 core/state, trie: node iterator reports parent hashes too 2016-02-16 12:21:08 +02:00
Péter Szilágyi
5a057a8ded core/state, trie: surface iterator entry hashes 2016-02-16 12:21:08 +02:00
Péter Szilágyi
7e29b0b5b4 core/state, trie: add node iterator, test state/trie sync consistency 2016-02-16 12:21:08 +02:00
Bas van Kervel
0ff2adb21b core: improved check for contract creation 2016-02-16 10:52:46 +01:00
Felix Lange
6ba7bbbe29 jsre: include constructor properties in auto-completion 2016-02-15 16:43:25 +01:00
Felix Lange
ae5bc89cad cmd/geth, jsre: improve auto-completion 2016-02-15 15:03:26 +01:00
Prasanna Pendse
3ab1fb0215 Added Vagrantfile so that developers can spin up a VM to build geth 2016-02-14 21:48:35 -05:00
Jeffrey Wilcke
4f28c5b69d Merge pull request #2210 from obscuren/abi-typed-array
accounts/abi: support for typed array
2016-02-14 19:13:48 +01:00
Jeffrey Wilcke
6fe917ecb8 accounts/abi: support for typed array
Added support for fixed size and arbitrary length byte arrays to be
marshallable in fixed size (typed) byte slices.
2016-02-14 18:56:56 +01:00
Péter Szilágyi
cb85923828 Merge pull request #2205 from obscuren/pending-filters
eth/filters:  pending logs 
2016-02-13 14:53:59 +02:00
Péter Szilágyi
770b29fd80 Merge pull request #2175 from karalabe/refactor-http-rpc
cmd, common, node, rpc: move HTTP RPC into node, drop singleton aspect
2016-02-13 14:53:48 +02:00
Jeffrey Wilcke
987c1a595a eth/filters: pending logs
Pending logs are now filterable through the Go API. Filter API changed
such that each filter type has it's own bucket and adding filter
explicitly requires you specify the bucket to put it in.
2016-02-13 13:14:02 +01:00
Felix Lange
fdb936ee95 crypto/ecies: make authenticated shared data work
The s2 parameter was not actually written to the MAC.
2016-02-12 09:49:18 +01:00
Felix Lange
2abf1a36b9 cmd/geth: enable multi-line mode
This was requested by some users earlier but liner didn't support
it at the time. It does now.
2016-02-12 02:41:29 +01:00
Felix Lange
4063d30b5e cmd/geth: gofmt js.go and rename ethereum.js to web3.js
Fixing the filename matters now because it will actually show
up in JS backtraces.
2016-02-12 02:20:18 +01:00
Felix Lange
2680e23b15 jsre: fix pretty printer for upstream otto change 2016-02-12 02:19:52 +01:00
Péter Szilágyi
d6c6bcc9f3 cmd/geth: update monitor to new termui code 2016-02-11 16:46:28 +02:00
Péter Szilágyi
b019f3ee29 Godeps: update all dependencies to latest code 2016-02-11 16:16:52 +02:00
Jeffrey Wilcke
b05e472c07 Merge pull request #2192 from obscuren/runtime-abi-fixes
account/abi, vm/runtime: abi fixes & simplified runtime calling mechanism
2016-02-11 11:44:01 +01:00
Jeffrey Wilcke
6cace73bea core/vm/runtime: simplified runtime calling mechanism
Implemented `runtime.Call` which uses - unlike Execute - the given state
for the execution and the address of the contract you wish to execute.
Unlike `Execute`, `Call` requires a config.
2016-02-11 10:17:16 +01:00
Jeffrey Wilcke
ecc876cec0 accounts/abi: fixed return tuple and string, bytes return type parsing
Removed old unmarshalling of return types: `abi.Call(...).([]byte)`.
This is now replaced by a new syntax:

```
var a []byte
err := abi.Call(&a, ...)
```

It also addresses a few issues with Bytes and Strings and can also
handle both fixed and arbitrary sized byte slices, including strings.
2016-02-11 10:16:38 +01:00
Péter Szilágyi
537774e049 Merge pull request #2195 from obscuren/gpo-rpc
eth: Added GPO to suggest default gas prices
2016-02-11 10:36:37 +02:00
Péter Szilágyi
1cc4bd76db Merge pull request #2193 from karalabe/sync-state-reports
eth, eth/downloader, jsre: surface state sync progress through the API
2016-02-10 20:20:59 +02:00
Jeffrey Wilcke
725f2a4cf7 eth: Added GPO to suggest default gas prices
This PR fixes a regression of the RPC where the default gas price that
was being used for transaction wasn't properly using the GPO. This PR
adds the GPO back to suggest gas prices rather than the hardcoded
default of 10000000000000.

Closes #2194
2016-02-10 16:50:50 +01:00
Péter Szilágyi
59cd60b266 eth, eth/downloader, jsre: surface state sync progress through the API 2016-02-10 14:30:41 +02:00
Péter Szilágyi
be79b4aacb Merge pull request #2189 from karalabe/fix-nil-miner
eth, miner: move the public miner api into eth to access etherbase
2016-02-09 16:38:00 +02:00
Péter Szilágyi
dda5af0e6c eth, miner: move the public miner api into eth to access etherbase 2016-02-09 16:03:04 +02:00
Péter Szilágyi
df75dbfd68 cmd, node, rpc: readd inproc RPC client, expose via node 2016-02-09 14:10:40 +02:00
Péter Szilágyi
900e124bee cmd, common, node, rpc: rework naming convention to canonical one 2016-02-09 13:24:42 +02:00
Péter Szilágyi
8b5b635db7 Merge pull request #2184 from karalabe/fix-fastsync-state-serializer-bug
eth/downloader: raise pending state limit that prevented concurrency
2016-02-09 12:14:48 +02:00
Péter Szilágyi
f1ec226d80 eth/downloader: raise pending state limit that prevented concurrency 2016-02-08 14:57:02 +02:00
Péter Szilágyi
856b9e9c50 Merge pull request #2183 from bas-vk/issue2180
eth_sendTransaction, error not reported
2016-02-08 12:41:39 +02:00
Bas van Kervel
5fb68f4b39 eth: sendTransaction would not report the error when tx could not be added to tx pool 2016-02-08 11:11:07 +01:00
Jeffrey Wilcke
707ac67bab Merge pull request #2106 from obscuren/out-of-bound-logs
eth/filters: added notifications for out of bound log events
2016-02-06 01:11:42 +01:00
Jeffrey Wilcke
68dda34905 eth/filters: added notifications for out of bound log events
Out of Bound log events are events that were removed due to a fork. When
logs are received the filtering mechanism should check for the `removed`
field on the json structure.
2016-02-05 16:55:27 +01:00
Péter Szilágyi
7486904b92 cmd, node, rpc: move websockets into node, break singleton 2016-02-05 16:53:47 +02:00
Jeffrey Wilcke
7d2d141b34 Merge pull request #2178 from isghe/fix_typo
cmd/utils: fix jspath flag typo
2016-02-05 15:37:42 +01:00
Isidoro Ghezzi
cf47ef12d3 cmd/utils: fix jspath flag typo 2016-02-05 15:32:00 +01:00
Péter Szilágyi
a13bc9d7a1 cmd, common, node, rpc: move HTTP RPC into node, drop singletone aspect 2016-02-05 13:45:36 +02:00
Péter Szilágyi
ba7c125153 Merge pull request #2168 from karalabe/move-rpc-into-node
cmd, common, node, rpc: move IPC into the node itself
2016-02-05 11:33:24 +02:00
Péter Szilágyi
2128289631 Merge pull request #2171 from karalabe/rpc-modules-fix
rpc: add jsonrpc version to module request, use json types
2016-02-05 11:33:10 +02:00
Péter Szilágyi
6b939fbeaa rpc: add jsonrpc version to module request, use json types 2016-02-04 16:55:50 +02:00
Péter Szilágyi
188ab928c3 cmd, common, node, rpc: move IPC into the node itself 2016-02-04 11:23:15 +02:00
Jeffrey Wilcke
3274db19c7 Merge pull request #2169 from karalabe/fix-http-rpc-method
rpc: allow RPC requests on GET too
2016-02-03 23:34:36 +01:00
Péter Szilágyi
a50bccc642 Merge pull request #2134 from karalabe/save-state-writes
core/state, trie: don't leak database writes before commit
2016-02-03 10:56:21 +02:00
Péter Szilágyi
fbbedb4c03 Merge pull request #2154 from karalabe/rpc-fixes
cmd, eth, rpc: fix some RPC issues with pending blocks
2016-02-03 10:50:34 +02:00
Péter Szilágyi
5da7ec7c18 cmd, eth, rpc: fix some RPC issues with pending blocks 2016-02-03 10:35:59 +02:00
Péter Szilágyi
a8fd0de0d3 Merge pull request #2156 from ppratscher/add_replay_tx
core/vm, rpc/api: added debug_replayTransaction RPC call
2016-02-03 10:34:52 +02:00
Péter Szilágyi
2e2f093ec2 Merge pull request #2167 from obscuren/abi-event-fixes
account/abi: implements event parsing
2016-02-03 10:34:27 +02:00
Péter Szilágyi
da645f007b Merge pull request #2166 from obscuren/contrib
CONTRIBUTING: Added a feature section
2016-02-03 10:34:16 +02:00
Péter Szilágyi
72c255caef rpc: allow RPC requests on GET too 2016-02-03 00:50:02 +02:00
Péter Szilágyi
db056eeafe Merge pull request #2170 from karalabe/fix-miner-registration
miner: register newly created remote agent in the API
2016-02-03 00:09:20 +02:00
Péter Szilágyi
9aa7158057 miner: register newly created remote agent in the API 2016-02-02 20:22:21 +02:00
Jeffrey Wilcke
1894c9239f CONTRIBUTING: Added a feature section 2016-02-02 15:44:27 +01:00
Jeffrey Wilcke
bddf8f76c8 account/abi: implements event parsing
Implementation of basic event parsing and its input types. This
separates methods and events and fixes an issue with go type parsing and
validation.
2016-02-02 15:28:59 +01:00
Peter Pratscher
15780ead07 core/vm, rpc/api: renamed to debug.replayTransaction, migrated to new RPC, integrated feedback
Integrated code review suggestions

Integrated last review comments
2016-02-02 15:20:18 +01:00
Jeffrey Wilcke
6005dcef5b Merge pull request #2098 from karalabe/rpc-txpool-queue-inspection
core, eth, rpc/api: rpc method to inspect the txpool queue
2016-02-02 10:53:23 +01:00
Péter Szilágyi
d3642b0715 core, eth, rpc/api: rpc method to inspect the txpool queue 2016-02-01 14:58:14 +02:00
Jeffrey Wilcke
f85212aa86 Merge pull request #2146 from fjl/discover-win32-large-packets
p2p/discover: fix Windows-specific issue for larger-than-buffer packets
2016-02-01 11:36:31 +01:00
Péter Szilágyi
d951ff300e Merge pull request #2165 from karalabe/gmp-dep-master-alpine
containers/docker/master-alpine: add the legacy gmp lib back for now
2016-01-31 16:23:47 +02:00
Péter Szilágyi
0781fd7aa0 containers/docker/master-alpine: add the legacy gmp lib back for now 2016-01-31 16:19:55 +02:00
Péter Szilágyi
aed25640a4 Merge pull request #2164 from karalabe/add-alpine-images
containers: regroup and add Alpine images (31 MB)
2016-01-31 15:08:52 +02:00
Péter Szilágyi
f9b2fd79e8 containers: regroup and add Alpine images (31 MB) 2016-01-30 20:55:44 +02:00
Jeffrey Wilcke
528dcc3814 Merge pull request #2151 from fjl/debug-api
internal/debug: APIs for profiling and tracing
2016-01-28 16:11:24 +01:00
Jeffrey Wilcke
ae1a137ce7 Merge pull request #2143 from karalabe/fix-transaction-sort-2
core, core/types, miner: fix transaction nonce-price combo sort
2016-01-28 16:11:14 +01:00
Felix Lange
3750d835a1 internal/debug: APIs for profiling and tracing
The debug package provides an RPC wrapper for glog settings and the
debugging facilities of the Go runtime. They can be triggered through
both command line flags and the IPC listener.
2016-01-28 13:36:11 +01:00
Felix Lange
e287b56b69 logger/glog: clean up flag getters 2016-01-27 00:51:14 +01:00
Felix Lange
a411fe7e6e logger/glog: fix TraceLocation.Set("") 2016-01-27 00:51:14 +01:00
Felix Lange
5728dd381d rpc: fix success response encoding for null return value
The "result" field of JSON-RPC 2.0 responses was omitted
if the result was nil, causing exceptions in web3.js.
2016-01-27 00:06:37 +01:00
Jeffrey Wilcke
63e76482ac Merge pull request #2140 from obscuren/rpc2-console
Rpc2 console
2016-01-26 14:01:00 +01:00
Bas van Kervel
19b2640e89 rpc: migrated the RPC insterface to a new reflection based RPC layer 2016-01-26 13:51:50 +01:00
Felix Lange
f2ab351e8d Merge pull request #2136 from fjl/glog-prefix
logger/glog: improve vmodule
2016-01-25 23:35:25 +01:00
Felix Lange
2871781f64 p2p/discover: fix Windows-specific issue for larger-than-buffer packets
On Windows, UDPConn.ReadFrom returns an error for packets larger
than the receive buffer. The error is not marked temporary, causing
our loop to exit when the first oversized packet arrived. The fix
is to treat this particular error as temporary.

Fixes: #1579, #2087
Updates: #2082
2016-01-22 23:44:25 +01:00
Felix Lange
6e6931ef73 Merge pull request #2145 from caktux/develop
separate and optimize Dockerfile for master and develop
2016-01-22 21:55:13 +01:00
Péter Szilágyi
a2dc074b1d core, core/types, miner: fix transaction nonce-price combo sort 2016-01-22 12:33:34 +02:00
caktux
896c134d30 separate and optimize Dockerfile for master and develop 2016-01-22 04:03:41 -05:00
Felix Lange
e4d794851b node, rpc/api: add debug_vmodule, move admin_verbosity to debug_verbosity 2016-01-21 13:37:38 +01:00
Felix Lange
0edcbc797f logger/glog: add SetVmodule 2016-01-21 13:37:38 +01:00
Felix Lange
a15b02320e logger/glog: add directory context to output and vmodule matching
This change allows setting the verbosity for directory prefixes
using the syntax:

    --vmodule=eth/=6
2016-01-21 13:37:38 +01:00
Jeffrey Wilcke
78f1964095 Merge pull request #2115 from karalabe/vm-debug-storage
core/vm: resolve circular dependency to debug vm storage
2016-01-20 22:18:19 +01:00
Jeffrey Wilcke
7b11e94441 Merge pull request #2132 from bas-vk/console-sleep
console: add admin.sleep and admin.sleepBlocks
2016-01-20 22:17:46 +01:00
Péter Szilágyi
f3d4ce0d16 core/state, ethdb, trie: test intermediate secure key leak, fix memdb bug 2016-01-20 16:06:28 +02:00
Péter Szilágyi
886478b18b core/state, trie: don't leak database writes before commit 2016-01-20 12:09:24 +02:00
Felix Lange
e7f6798b59 Merge pull request #2130 from bas-vk/nodeinfo-format
Nodeinfo format Genesis and Header
2016-01-19 13:21:40 +01:00
Bas van Kervel
cdd34fcb16 console: add admin.sleep and admin.sleepBlocks 2016-01-19 12:30:33 +01:00
Bas van Kervel
6e7620afe0 eth: changed NodeInfo Genesis and Head types 2016-01-18 13:28:03 +01:00
Jeffrey Wilcke
5945a33350 Merge pull request #2119 from karalabe/statedb-batch-commit
core/state: always commit in batches, just finish if not needed later
2016-01-14 12:17:59 +01:00
Péter Szilágyi
2d5d6d9d0e core/state: always commit in batches, just finish if not needed later 2016-01-13 12:04:03 +02:00
Péter Szilágyi
752c75fb21 core/vm: resolve circular dependency to debug vm storage 2016-01-11 18:21:39 +02:00
Felix Lange
1b8566a7b1 Merge pull request #2114 from karalabe/chain-maker-state-remake
core: fix invalid state reuse in chain maker based tests
2016-01-11 16:40:28 +01:00
Péter Szilágyi
e5b480b638 core: fix invalid state reuse in chain maker based tests 2016-01-11 16:53:06 +02:00
Felix Lange
0ab8a175d8 Merge pull request #2110 from LefterisJP/determining_home_for_ubuntu_core
common: Fix HomeDir detection
2016-01-08 14:24:49 +01:00
Lefteris Karapetsas
e2fdd33541 common: Fix HomeDir detection
I am working on porting geth to [Ubuntu Core](https://developer.ubuntu.com/en/snappy/https://developer.ubuntu.com/en/snappy/). I am testing geth on a Raspberry PI and for Ubuntu Core the $HOME directory is unique for each application. See [here](https://developer.ubuntu.com/en/snappy/guides/filesystem-layout) for more information of their filesystem layout.

For some reason in Go `usr.HomeDir` returns a different value than `$HOME` in Ubuntu Core.

Adding this at the end of `HomeDir()`
```go
fmt.Printf("at HomeDir, user.HomeDir = %s and $HOME is %s\n", usr.HomeDir, os.Getenv("HOME"))
```

gives the following output

```
at HomeDir, user.HomeDir = /home/ubuntu and $HOME is /home/ubuntu/apps/geth.sideload/IJcODREBYbHO
```

With this commit, I propose giving precedence to the `$HOME` environment variable as is also suggested by the [homedir](https://github.com/mitchellh/go-homedir/blob/master/homedir.go) project.
2016-01-08 13:36:37 +01:00
Jeffrey Wilcke
32226f1b0c Merge pull request #2097 from karalabe/block-state-checks
core, eth/downloader: ensure state presence in ancestor lookup
2016-01-05 12:26:38 +01:00
Jeffrey Wilcke
a7fc4fa9b7 Merge pull request #2101 from karalabe/delete-outoffund-transactions
core: transaction invalidation and reorganization fixes
2016-01-05 12:26:28 +01:00
Péter Szilágyi
649787a9bf core: fix transaction reorg issues within the tx pool 2016-01-05 11:22:59 +02:00
Péter Szilágyi
9e011ff1cd core, eth/downloader: ensure state presence in ancestor lookup 2016-01-04 16:27:23 +02:00
Felix Lange
36137623ed Merge pull request #2099 from karalabe/fix-throttling-test
eth/downloader: throttling tests are time-sensitive, don't run parallel
2015-12-30 13:55:03 +01:00
Péter Szilágyi
1f39746886 eth/downloader: throttling tests are time-sensitive, don't run parallel 2015-12-30 14:42:21 +02:00
Jeffrey Wilcke
dbbcf558e2 Merge pull request #2064 from fjl/remove-common-rlp
common: remove old RLP implementation, Value and ExtPackage
2015-12-18 20:26:19 +01:00
Jeffrey Wilcke
4811409e99 Merge pull request #2084 from bas-vk/rpcnilptr
console crash on nil ptr
2015-12-18 20:25:55 +01:00
Bas van Kervel
3c9a2c752f console: bugfix that causes the console to crash when connection to an endpoint without the personal api enabled 2015-12-18 15:30:08 +01:00
Jeffrey Wilcke
fd69d2b7a8 Merge pull request #2019 from zsfelfoldi/light-state
Light state
2015-12-18 12:40:01 +01:00
Felix Lange
e6fb69296e common: remove old RLP implementation, Value and ExtPackage
In order to make this happen, kill all remaining trivial uses of
common/{rlp,value}.go. The non-trivial ones have been updated earlier.
2015-12-18 12:09:10 +01:00
Felix Lange
1b89bd5d26 core/state, core/types use package rlp for state, receipt serialisation 2015-12-18 12:09:10 +01:00
Felix Lange
9be5d5cd90 eth/downloader: fix negative balance issue in tests
The test chain generated by makeChainFork included invalid uncle
headers, crashing the generator during the state commit.

The headers were invalid because they used the iteration counter as the
block number, even though makeChainFork uses a block with number > 0 as
the parent. Fix this by introducing BlockGen.Number, which allows
accessing the actual number of the block being generated.
2015-12-18 12:09:10 +01:00
Jeffrey Wilcke
2baf1de00d Merge pull request #1925 from fjl/p2p-dial-resolve
p2p: resolve incomplete dial targets
2015-12-18 11:31:55 +01:00
Felix Lange
b3f1f4c673 p2p/discover: attempt to deflake TestUDP_responseTimeouts
The test expected the timeout to fire after a matcher for the response
was added, but the timeout is random and fired sooner sometimes.
2015-12-17 23:44:56 +01:00
Felix Lange
6c41e675ec p2p: resolve incomplete dial targets
This change makes it possible to add peers without providing their IP
address. The endpoint of the target node is resolved using the discovery
protocol.
2015-12-17 23:39:49 +01:00
Felix Lange
04c6369a09 p2p, p2p/discover: track bootstrap state in p2p/discover
This change simplifies the dial scheduling logic because it
no longer needs to track whether the discovery table has been
bootstrapped.
2015-12-17 23:38:54 +01:00
Felix Lange
d1f507b7f1 p2p/discover: support incomplete node URLs, add Resolve 2015-12-17 23:38:54 +01:00
zsfelfoldi
ef422ee1e1 light: implemented odr-capable trie and state structures 2015-12-17 16:07:54 +01:00
Jeffrey Wilcke
82a024d425 Merge pull request #1997 from zsfelfoldi/gasprice2
core: tx pool skip price validation for "owned" transactions
2015-12-17 12:45:45 +01:00
Jeffrey Wilcke
24f856ad6b Merge pull request #2077 from karalabe/fix-header-query-duplication
eth: fix #2076, where end of hash query was interpreted number query
2015-12-17 10:37:21 +01:00
Felix Lange
e640861704 Merge pull request #2061 from zsfelfoldi/rpc-context
rpc: optionally passing context argument to rpc v2 api methods
2015-12-16 11:12:06 +01:00
Péter Szilágyi
e51eeb8104 eth: fix #2076, where end of hash query was interpreted number query 2015-12-16 08:44:13 +02:00
zsfelfoldi
f3aac71fad rpc/v2: optionally passing context argument to rpc v2 api methods 2015-12-16 03:48:08 +01:00
zsfelfoldi
975c591261 core: tx pool skip price validation for "owned" transactions 2015-12-16 03:21:17 +01:00
Felix Lange
b9aedeab0b Merge pull request #2072 from karalabe/admin-debug-apis
core, eth, node, rpc: port the admin and debug API
2015-12-15 11:33:18 +01:00
Felix Lange
9c636d2490 Merge pull request #2070 from karalabe/android-archives
Makefile, cmd/geth: support building Android archives
2015-12-14 21:32:00 +01:00
Péter Szilágyi
d8370a4e15 core, eth, node, rpc: port the admin and debug API 2015-12-14 19:36:51 +02:00
Felix Lange
fa187a366d Merge pull request #2035 from bas-vk/rcp-v2-rebase
rpc: new RPC implementation with pub/sub support
2015-12-14 17:38:10 +01:00
Bas van Kervel
eae81465c1 rpc: new RPC implementation with pub/sub support 2015-12-14 16:34:05 +01:00
Péter Szilágyi
03f090b30b Makefile, cmd/geth: support building Android archives 2015-12-14 14:28:14 +02:00
Jeffrey Wilcke
787d71d659 Merge pull request #2056 from fjl/fix-account-format
crypto: "Crypto" -> "crypto" in web3 key format
2015-12-10 10:45:00 +01:00
Felix Lange
b2ffb76ca2 Merge pull request #2058 from karalabe/geth-framework
Makefile, cmd/geth: assemble ios xcode frameworks
2015-12-09 18:04:27 +01:00
Péter Szilágyi
0e4deeb6e7 Makefile, cmd/geth: assemble ios xcode frameworks 2015-12-08 18:05:43 +02:00
Felix Lange
38ff815485 Merge pull request #2003 from obscuren/abi-calling
accounts/abi: added output parsing & added call mechanism
2015-12-07 23:24:41 +01:00
Felix Lange
659d6b9b7c Merge pull request #2051 from karalabe/store-transaction-fastsync
core: write individual transactions and receipts too on fast sync
2015-12-07 23:24:15 +01:00
Felix Lange
032453b3e7 crypto: "Crypto" -> "crypto" in web3 key format 2015-12-07 17:01:29 +01:00
Jeffrey Wilcke
2a3322ea14 Merge pull request #2034 from karalabe/always-allow-dyndials
p2p: always allow dynamic dials if network not disabled
2015-12-07 11:26:05 +01:00
Péter Szilágyi
1cecda8333 core: write individual transactions and receipts too on fast sync 2015-12-04 15:30:59 +02:00
Péter Szilágyi
4dee2000a3 Merge pull request #2037 from fjl/no-libgmp
crypto/secp256k1: remove dependency on libgmp
2015-12-04 12:27:16 +02:00
Jeffrey Wilcke
fece1fa9be Merge pull request #2024 from obscuren/exp-logs
core: added a new RemovedLogEvent
2015-12-03 22:27:44 +01:00
Felix Lange
02356b36d6 crypto/secp256k1: remove dependency on libgmp
Turns out we actually don't need it, USE_NUM_NONE works
because we also set USE_FIELD_INV_BUILTIN.
2015-12-03 21:12:13 +01:00
Felix Lange
6d3a924283 Merge pull request #2036 from karalabe/ios-arm64-cross
Makefile: support 64bit ARM iOS cross builds
2015-12-03 21:09:09 +01:00
Péter Szilágyi
9acec62cf8 Makefile: support 64bit ARM iOS cross builds 2015-12-03 20:33:24 +02:00
Péter Szilágyi
abb53644c6 p2p: always allow dynamic dials if network not disabled 2015-12-03 11:45:35 +02:00
Jeffrey Wilcke
3eebeae363 Merge pull request #2032 from karalabe/linux-arm64-cross
Makefile: enable 64-bit ARM builds on Linux
2015-12-02 21:27:52 +01:00
Péter Szilágyi
98d68cfa91 Makefile: enable 64-bit ARM builds on Linux 2015-12-02 16:57:15 +02:00
Jeffrey Wilcke
888e7bc765 Merge pull request #1862 from Gustav-Simonsson/libsecp256k1_ecdh
crypto, crypto/secp256k1: use libsecp256k1 for scalar multiplication
2015-12-02 13:19:33 +01:00
Felix Lange
8db9d44ca9 Merge pull request #2025 from karalabe/windows-account-unlock-testfix
accounts: increase re-lock timeout to account for slow CI servers
2015-12-01 13:23:31 +01:00
Péter Szilágyi
2d4c228933 Merge pull request #2022 from karalabe/multiversion-arm-builds
Makefile: build ARM v5/v6/v7, drop high API mobile clients
2015-12-01 13:40:22 +02:00
Jeffrey Wilcke
96d86740a1 Merge pull request #2005 from zsfelfoldi/light-trie
Trie error handling
2015-12-01 12:28:26 +01:00
Jeffrey Wilcke
23031b1554 Merge pull request #2021 from fjl/fix-etherbase-no-accounts
cmd/utils: restore starting geth without any accounts and etherbase
2015-12-01 12:21:25 +01:00
Péter Szilágyi
2e43414c79 accounts: increase re-lock timeout to account for slow CI servers 2015-12-01 13:20:43 +02:00
Jeffrey Wilcke
9901a40f04 core: added a new RemovedLogEvent
When a chain reorganisation occurs we collect the logs that were deleted
during the chain reorganisation. The removed logs are posted to the
event mux indicating that those were deleted during the reorg.
2015-12-01 12:12:30 +01:00
Felix Lange
d648e96b3d cmd/utils: restore starting geth without any accounts and etherbase
Also remove some duplication around address/index parsing.
2015-12-01 11:55:52 +01:00
Péter Szilágyi
391ca61678 Makefile: build ARM v5/v6/v7, drop high API mobile clients 2015-12-01 12:40:55 +02:00
Jeffrey Wilcke
f801ec78ce Merge pull request #2020 from bas-vk/issue2016
eth package creates new event mux
2015-12-01 11:13:57 +01:00
Bas van Kervel
61ca14bc44 eth: use global event mux instead 2015-12-01 11:01:40 +01:00
zsfelfoldi
52904ae32f trie: added error handling
Created alternate versions of Trie and SecureTrie functions that can return a MissingNodeError (used by ODR services)
2015-12-01 01:38:32 +01:00
Jeffrey Wilcke
f4a6470a7b Merge pull request #2015 from bas-vk/console-instance-name
console: fix instance name printed incorrect on start
2015-11-30 14:46:21 +01:00
Gustav Simonsson
c8ad64f33c crypto, crypto/ecies, crypto/secp256k1: libsecp256k1 scalar mult
thanks to Felix Lange (fjl) for help with design & impl
2015-11-30 13:43:32 +01:00
Gustav Simonsson
27a50c8f4b core/secp256k1: update libsecp256k1 Go wrapper and tests 2015-11-30 13:24:04 +01:00
Bas van Kervel
1ead43c88c console: fix instance name printed incorrect on start 2015-11-30 09:49:10 +01:00
Felix Lange
66d47ced48 Merge pull request #2014 from karalabe/enable-ios-builds
Makefile: enable iOS experimental builds (fix prev omission)
2015-11-29 17:18:34 +01:00
Péter Szilágyi
9af4065243 Makefile: enable iOS experimental builds (fix prev omission) 2015-11-29 17:52:52 +02:00
Jeffrey Wilcke
a0d203a874 Merge pull request #2011 from karalabe/fix-hex-address
common: fix #2008, wrong hex prefix check
2015-11-27 19:16:31 +01:00
Péter Szilágyi
18ea468cf8 common: fix #2008, wrong hex prefix check 2015-11-27 19:32:46 +02:00
Jeffrey Wilcke
7dde2b902c Merge pull request #1970 from karalabe/customizable-protocol-stacks
Customizable protocol stacks
2015-11-27 10:41:22 +01:00
Péter Szilágyi
3e1000fda3 cmd, eth, node, rpc, xeth: use single-instance services 2015-11-27 11:06:12 +02:00
Péter Szilágyi
1e806c4c77 cmd, common, core, eth, node, rpc, tests, whisper, xeth: use protocol stacks 2015-11-27 11:06:12 +02:00
Péter Szilágyi
8a44451edf cmd: drop blocktest command, create gethrpctest program 2015-11-27 11:06:12 +02:00
Péter Szilágyi
9e1d9bff3b node: customizable protocol and service stacks 2015-11-27 11:06:12 +02:00
Jeffrey Wilcke
ffe58bf5ab Merge pull request #2002 from karalabe/ios-cross-builds
Makefile: add support for iOS cross compilation
2015-11-26 23:00:59 +01:00
Jeffrey Wilcke
de75d542f3 Merge pull request #1999 from karalabe/javascript-timer-argcheck
jrse: fix #1082, fail if setTimeout/setInterval lack callback
2015-11-26 23:00:36 +01:00
Jeffrey Wilcke
b9db5b37f2 Merge pull request #2001 from obscuren/fixes
cmd, crypto: updated web3
2015-11-26 23:00:05 +01:00
Jeffrey Wilcke
b1e0143444 cmd, crypto: fixed nil public keys and updated web3 2015-11-26 13:38:53 +01:00
Jeffrey Wilcke
168d0e9e45 Merge pull request #1996 from obscuren/whisper-spam-fix
whisper: fixed broadcast race
2015-11-25 13:19:45 +01:00
Jeffrey Wilcke
a0bf2ea7e7 accounts/abi: added output parsing & added call mechanism
Added calling mechanism and return value parsing
2015-11-25 12:23:29 +01:00
Jeffrey Wilcke
5f0a4416db whisper: fixed broadcast race
Whisper's expire and broadcast loops happen in two separate go routines.
Whenever an envelope is being expired it's removed from the set of
envelopes and it looses all information about the envelope, including
the "known hash". After the envelope has been removed it can be
re-accepted by a broadcasting peer putting back the envelope in the set
of envelopes. Since the envelope broadcast loop is separate of the
expire loop expired messages may be broadcast to other peer, resulting
in messages **never** being dropped.

This PR includes an expire check before adding new messages to the set
of envelopes.
2015-11-25 12:10:47 +01:00
Péter Szilágyi
83a22b457c Makefile: support library build modes 2015-11-24 19:49:08 +02:00
Péter Szilágyi
2c42e54519 Makefile: add support for iOS cross compilation 2015-11-24 17:24:43 +02:00
Jeffrey Wilcke
b0fb48c389 Merge pull request #1988 from bas-vk/issue1971
miner: bugfix where blockhash in receipts and logs is left empty
2015-11-24 10:55:07 +01:00
Péter Szilágyi
f27e826b14 jrse: fix #1082, fail if setTimeout/setInterval lack callback 2015-11-23 13:03:31 +02:00
Gustav-Simonsson
ae9e9efa31 Merge pull request #1991 from Gustav-Simonsson/common_tests
Update common test files
2015-11-23 10:26:21 +01:00
Jeffrey Wilcke
6bb29aebee Merge pull request #1666 from obscuren/create-transaction
rpc/api, xeth: added signTransaction method
2015-11-20 21:36:56 +01:00
Jeffrey Wilcke
314c031ff2 Merge pull request #1995 from karalabe/parametrize-crosscompile-go
Makefile: individual platforms, configurable Go runtime
2015-11-20 21:10:21 +01:00
Péter Szilágyi
fea819f74f Makefile: individual platforms, configurable Go runtime 2015-11-20 16:06:35 +02:00
Gustav Simonsson
220b0bf6e5 Update common test files 2015-11-20 12:53:36 +01:00
Jeffrey Wilcke
f16fab91c8 Merge pull request #1953 from karalabe/switch-to-fast-peers
eth/downloader: fetch data proportionally to peer capacity
2015-11-19 18:48:53 +01:00
Bas van Kervel
98cbe1356e miner: bugfix were blockhash in receipts and logs is left empty 2015-11-19 16:02:49 +01:00
Péter Szilágyi
b6f5523bdc eth/downloader: fetch data proportionally to peer capacity 2015-11-19 17:01:39 +02:00
Jeffrey Wilcke
4c2933ad82 Merge pull request #1993 from obscuren/remove-legalese
cmd/geth, cmd/utils: removed legalese
2015-11-19 15:29:49 +01:00
Jeffrey Wilcke
7399b138a8 Merge pull request #1923 from karalabe/cleanup-receipt-data-access
core, eth, miner, xeth: clean up tx/receipt db accessors
2015-11-19 15:28:15 +01:00
Jeffrey Wilcke
65bb07fb4e Merge pull request #1980 from fjl/downloader-deliver-hang
eth/downloader: don't hang for spurious deliveries
2015-11-19 15:19:21 +01:00
Péter Szilágyi
e86e0ecdc8 core, eth, miner, xeth: clean up tx/receipt db accessors 2015-11-19 16:03:32 +02:00
Felix Lange
dd09af27af eth/downloader: run tests in parallel 2015-11-19 14:18:35 +01:00
Felix Lange
b7b62d4b3c eth/downloader: also drain stateCh, receiptCh in eth/61 mode
State and receipt deliveries from a previous eth/62+ sync can hang if
the downloader has moved on to syncing with eth/61. Fix this by also
draining the eth/63 channels while waiting for eth/61 data.

A nicer solution would be to take care of the channels in a central
place, but that would involve a major rewrite.
2015-11-19 14:18:35 +01:00
Felix Lange
db52a6a0ff eth: remove workaround for asynchronous processing in the downloader 2015-11-19 14:18:34 +01:00
Felix Lange
900da3d800 eth/downloader: don't hang for spurious deliveries
Unexpected deliveries could block indefinitely if they arrived at the
right time. The fix is to ensure that the cancellation channel is
always closed when the sync ends, unblocking any deliveries. Also remove
the atomic check for whether a sync is currently running because it
doesn't help and can be misleading.

Cancelling always seems to break the tests though. The downloader
spawned d.process whenever new data arrived, making it somewhat hard to
track when block processing was actually done. Fix this by running
d.process in a dedicated goroutine that is tied to the lifecycle of the
sync. d.process gets notified of new work by the queue instead of being
invoked all the time. This removes a ton of weird workaround code,
including a hairy use of atomic CAS.
2015-11-19 14:18:34 +01:00
Jeffrey Wilcke
1c63d08ed1 cmd/geth, cmd/utils: removed legalese
Removed the legalese confirmation dialog. This closes #1992
2015-11-19 12:03:33 +01:00
Jeffrey Wilcke
ae37a8013d Merge pull request #1917 from obscuren/validator-interface
core, eth, rpc: split out block validator and state processor
2015-11-19 10:57:00 +01:00
Jeffrey Wilcke
23f42d9463 Merge pull request #1964 from obscuren/evm-runtime
core/vm/runtime: added simple execution runtime
2015-11-18 17:39:27 +01:00
Jeffrey Wilcke
1372b991c3 core/vm/runtime: added simple execution runtime
The runtime environment can be used for simple basic execution of
contract code without the requirement of setting up a full stack and
operates fully in memory.
2015-11-18 16:50:20 +01:00
Jeffrey Wilcke
a1d9ef48c5 core, eth, rpc: split out block validator and state processor
This removes the burden on a single object to take care of all
validation and state processing. Now instead the validation is done by
the `core.BlockValidator` (`types.Validator`) that takes care of both
header and uncle validation through the `ValidateBlock` method and state
validation through the `ValidateState` method. The state processing is
done by a new object `core.StateProcessor` (`types.Processor`) and
accepts a new state as input and uses that to process the given block's
transactions (and uncles for rewords) to calculate the state root for
the next block (P_n + 1).
2015-11-18 14:24:42 +01:00
Felix Lange
4a938406dc Merge pull request #1990 from karalabe/fix-whisper-autocomplete
rpc/api: fix #1986, newIdentity autocomplete
2015-11-18 12:32:39 +01:00
Péter Szilágyi
53f28e71dc rpc/api: fix #1986, newIdentity autocomplete 2015-11-18 13:03:20 +02:00
Jeffrey Wilcke
10475f444c Merge pull request #1984 from fjl/secp256k1-recover-id-verify
crypto/secp256k1: verify recovery ID before calling libsecp256k1
2015-11-17 19:39:42 +01:00
Jeffrey Wilcke
6ea05f5a54 rpc/api, xeth: added signTransaction method
SignTransaction creates a transaction but does submit it to the
network. SignTransaction returns a structure which includes the
transaction object details as well as the RLP encoded transaction that
could possibly be submitted by the SendRawTransaction method.
2015-11-17 17:51:05 +01:00
Felix Lange
e344e1d490 crypto/secp256k1: drop pkgsrc paths from CFLAGS
They cause compiler warnings for people who don't have these
directories. People with pkgsrc can add the directory through CGO_CFLAGS
instead.
2015-11-17 09:53:10 +01:00
Felix Lange
5159f8f649 crypto/secp256k1: raise internal errors as recoverable Go panic 2015-11-17 09:53:10 +01:00
Felix Lange
1b29aed128 crypto/secp256k1: verify recovery ID before calling libsecp256k1
The C library treats the recovery ID as trusted input and crashes
the process for invalid values, so it needs to be verified before
calling into C. This will inhibit the crash in #1983.

Also remove VerifySignature because we don't use it.
2015-11-17 09:51:59 +01:00
Jeffrey Wilcke
9422eec554 Merge pull request #1976 from karalabe/enable-light-kdf
cmd/geth, cmd/utils: surface the light KDF flag to the CLI
2015-11-11 12:45:30 +01:00
Péter Szilágyi
9aa77a3769 cmd/geth, cmd/utils: surface the light KDF flag to the CLI 2015-11-10 15:47:19 +02:00
Jeffrey Wilcke
da6696862e Merge pull request #1974 from karalabe/fix-rpc-regression
rpc/api: fix #1972 api regression (nil eth panic) in attach
2015-11-06 13:10:28 +01:00
Péter Szilágyi
6e5349880e rpc/api: fix #1972 api regression (nil eth panic) in attach 2015-11-06 11:47:57 +02:00
Jeffrey Wilcke
6d09468cab Merge pull request #1967 from karalabe/fix-filter-test-datarace
event/filter: fix data race in the test
2015-11-05 20:31:11 +01:00
Jeffrey Wilcke
2334ee97d0 Merge pull request #1963 from karalabe/fix-database-regression
eth: fix error casting regression during database open
2015-11-05 20:27:11 +01:00
Péter Szilágyi
5d89bbdda1 eth: fix error casting regression during database open 2015-11-05 16:59:16 +02:00
Péter Szilágyi
8e2bf42c46 event/filter: fix data race in the test 2015-11-05 16:55:53 +02:00
Felix Lange
76390ef892 Merge pull request #1966 from karalabe/fix-recover-noparam-panic
cmd/geth: fix recover command crash if no param is supplied
2015-11-05 13:15:23 +01:00
Felix Lange
636f67f232 Merge pull request #1969 from karalabe/fix-whisper-tests-datarace
whisper: fix datarace in expiration test
2015-11-05 13:03:36 +01:00
Felix Lange
eb11c0e597 Merge pull request #1965 from karalabe/fix-natto-test
jsre: fix #1876, sleep too short on a slow test server
2015-11-05 13:03:06 +01:00
Felix Lange
ca4f6d0fdd Merge pull request #1968 from karalabe/fix-json-tests-datarace
tests: fix data race in bad-block-report disabling during tests
2015-11-05 12:59:07 +01:00
Péter Szilágyi
60e0abb595 whisper: fix datarace in expiration test 2015-11-05 13:36:25 +02:00
Péter Szilágyi
9dc5de51a2 tests: fix data race in bad-block-report disabling during tests 2015-11-05 13:29:50 +02:00
Péter Szilágyi
90655736ed cmd/geth: fix recover command crash if no param is supplied 2015-11-05 11:53:50 +02:00
Péter Szilágyi
bddb13d436 jsre: fix #1876, sleep too short on a slow test server 2015-11-05 11:36:10 +02:00
Jeffrey Wilcke
e3f36d9728 Merge pull request #1960 from karalabe/fix-peer-ignore-list
eth/downloader: fix dysfunctional ignore list hidden by generic set
2015-11-04 14:43:58 +01:00
Péter Szilágyi
b658a73ed5 eth/downloader: fix dysfunctional ignore list hidden by generic set 2015-11-04 13:11:52 +02:00
Jeffrey Wilcke
e165c2d23c Merge pull request #1934 from karalabe/polish-protocol-infos
eth, p2p, rpc/api: polish protocol info gathering
2015-11-04 11:59:31 +01:00
Jeffrey Wilcke
dda3bf3ce7 Merge pull request #1943 from obscuren/abi-fixes
accounts/abi: ABI fixes & added types
2015-11-03 15:22:37 +01:00
Jeffrey Wilcke
6dfbbc3e11 Merge pull request #1948 from bas-vk/rpcfix
Infinite loop in filters
2015-11-03 15:22:02 +01:00
Jeffrey Wilcke
5ff0814b1f VERSION, cmd/geth: bumped version 1.4.0 2015-11-03 11:48:18 +01:00
Felix Lange
001684fb11 Merge pull request #1958 from fjl/secp256k1-pkgsrc
crypto/secp256k1: add C compiler flags for pkgsrc
2015-11-03 10:46:04 +01:00
Felix Lange
16b0bc7c3b crypto/secp256k1: add C compiler flags for pkgsrc
pkgsrc is a cross-platform package manager that also
supports OS X.
2015-11-03 10:33:31 +01:00
Jeffrey Wilcke
c841e39476 Merge pull request #1954 from obscuren/regression-miner
miner: synchronise start / stop
2015-10-31 20:00:34 +01:00
Jeffrey Wilcke
8c38f8d815 miner: synchronise start / stop
This PR fixes an issue where the remote worker was stopped twice and not
properly handled. This adds a synchronised running check to the start
and stop methods preventing closing of a channel more than once.
2015-10-31 02:18:41 +01:00
Jeffrey Wilcke
016ad3e962 Merge pull request #1952 from obscuren/testnet-peers
eth: added new testnet peers
2015-10-30 11:00:31 +01:00
Jeffrey Wilcke
98b036ddb6 Merge pull request #1949 from karalabe/update-command-usage
cmd/geth, cmd/utils, eth: group CLI flags by purpose
2015-10-30 10:59:36 +01:00
Péter Szilágyi
3c6e285d3b cmd/geth, cmd/utils, eth: group CLI flags by purpose 2015-10-30 11:33:12 +02:00
Jeffrey Wilcke
1bc789553a eth: added new testnet peers 2015-10-30 10:01:19 +01:00
Jeffrey Wilcke
1abbe05e93 Merge pull request #1951 from fjl/godeps-upgrade-goupnp
Godeps: upgrade github.com/huin/goupnp
2015-10-30 00:14:15 +01:00
Felix Lange
f570b68ed1 p2p/nat: add docs for discover 2015-10-29 22:54:44 +01:00
Felix Lange
bf11a47f22 Godeps: upgrade github.com/huin/goupnp to 90f71cb5 2015-10-29 22:53:59 +01:00
Jeffrey Wilcke
1f72952f04 accounts/abi: ABI fixes & added types
Changed field `input` to new `inputs`. Addad Hash and Address as input
types.

Added bytes[N] and N validation
2015-10-29 21:40:18 +01:00
Jeffrey Wilcke
fc46cf337a Merge pull request #1946 from fjl/xeth-oom
Fix for xeth OOM issue
2015-10-29 17:42:55 +01:00
Bas van Kervel
76410df6a2 rpc: return an unsupported error when "pending" was used to create a filter 2015-10-29 17:35:43 +01:00
Felix Lange
fbdb44dcc1 cmd/utils, rpc/comms: stop XEth when IPC connection ends
There are a bunch of changes required to make this work:

- in miner: allow unregistering agents, fix RemoteAgent.Stop
- in eth/filters: make FilterSystem.Stop not crash
- in rpc/comms: move listen loop to platform-independent code

Fixes #1930. I ran the shell loop there for a few minutes and didn't see
any changes in the memory profile.
2015-10-29 17:26:26 +01:00
Jeffrey Wilcke
fd27f074fe Merge pull request #1945 from bas-vk/rpcparsing
Argument parsing can lead to panic in rpc channel
2015-10-29 16:55:51 +01:00
Jeffrey Wilcke
8202bae070 Merge pull request #1939 from karalabe/fix-blocked-sync-goroutines
eth: don't block sync goroutines that short circuit
2015-10-29 16:54:43 +01:00
Bas van Kervel
c3c5f8b654 rpc: fixed params parsing problem which could lead to a panic
check argument type before parsing params
 recover from panic in ipc channel
2015-10-29 09:23:03 +01:00
Felix Lange
56f8699a6c Merge pull request #1940 from wildfjre/lightkdfflag
cmd/utils, crypto: add --lightkdf flag for lighter KDF
2015-10-28 18:54:50 +01:00
Drake Burroughs
05ea8926c3 cmd/utils, crypto: add --lightkdf flag for lighter KDF 2015-10-28 18:46:39 +01:00
Péter Szilágyi
667987e7d0 core: only reset head header/fastblock if stale 2015-10-28 17:40:24 +02:00
Péter Szilágyi
2019ed71b4 eth: don't block sync goroutines that short circuit 2015-10-28 16:41:01 +02:00
Jeffrey Wilcke
6b5a42a15c Merge pull request #1937 from karalabe/make-ldflags
makefile: fix evm ld flags, pass them to xgo too
2015-10-28 11:46:23 +01:00
Péter Szilágyi
e46ab3bdcd eth, p2p, rpc/api: polish protocol info gathering 2015-10-28 12:44:15 +02:00
Péter Szilágyi
e655626268 makefile: dump mist leftover, add phony targets 2015-10-28 12:34:40 +02:00
Péter Szilágyi
04f8d05bd4 makefile: fix evm ld flags, pass them to xgo too 2015-10-28 12:31:20 +02:00
Jeffrey Wilcke
05f74077fb Merge pull request #1919 from ethersphere/getnatspec
rpc api: eth_getNatSpec
2015-10-28 10:49:53 +01:00
Jeffrey Wilcke
2e4fdce743 Merge pull request #1932 from fjl/gpo-defootgunize
eth, xeth: fix GasPriceOracle goroutine leak
2015-10-28 10:32:35 +01:00
Felix Lange
ae1b5b3ff2 eth, xeth: fix GasPriceOracle goroutine leak
XEth.gpo was being initialized as needed. WithState copies the XEth
struct including the gpo field. If gpo was nil at the time of the copy
and Call or Transact were invoked on it, an additional GPO listenLoop
would be spawned.

Move the lazy initialization to GasPriceOracle instead so the same GPO
instance is shared among all created XEths.

Fixes #1317
Might help with #1930
2015-10-27 18:43:47 +01:00
caktux
57ab147388 update Dockerfile, remove supervisord and unattended-upgrades 2015-10-26 18:06:19 -04:00
zelig
4d005a2c1d rpc api: eth_getNatSpec
* xeth, rpc: implement eth_getNatSpec for tx confirmations
* rename silly docserver -> httpclient
* eth/backend: httpclient now accessible via eth.Ethereum init-d via config.DocRoot
* cmd: introduce separate CLI flag for DocRoot (defaults to homedir)
* common/path: delete unused assetpath func, separate HomeDir func
2015-10-26 22:24:09 +01:00
caktux
3b4ffacd0c bump VERSION to 1.3.0 2015-10-25 17:49:01 -04:00
Jeffrey Wilcke
491dd49419 Merge pull request #1928 from Gustav-Simonsson/common_tests
tests: update JSON files, add new wrappers
2015-10-25 06:17:19 -07:00
Jeffrey Wilcke
c43db8a2ee Merge pull request #1924 from fjl/eth-status-timeout
eth: time out status message exchange after 5s
2015-10-23 16:43:10 -07:00
Jeffrey Wilcke
0aeab5fd83 Merge pull request #1929 from ethersphere/develop
fix console history, lines with leadning whitespace NOT included
2015-10-23 16:18:52 -07:00
zelig
6b5d077c09 fix console history, lines with leadning whitespace NOT included 2015-10-23 20:37:12 +02:00
Gustav Simonsson
145366c07e tests: update JSON files, add new wrappers 2015-10-23 14:25:18 +02:00
Felix Lange
3cf74336c9 eth: time out status message exchange after 5s 2015-10-22 22:22:04 +02:00
Jeffrey Wilcke
77878f76a9 Merge pull request #1922 from karalabe/fix-receipt-storage-regression
core: fix #1921, decode all receipt field, not just consensus
2015-10-22 10:17:15 -07:00
Jeffrey Wilcke
dce503779b Merge pull request #1840 from ethersphere/console
console, cli, api fixes
2015-10-22 09:27:05 -07:00
Péter Szilágyi
28c7b54d68 core: fix #1921, decode all receipt field, not just consensus 2015-10-22 13:09:30 +03:00
zelig
8b81ad1fc4 console:
* lines with leading space are ommitted from history
* exit processed even with whitespace around
* all whitespace lines (not only empty ones) are ignored

add 7 missing commands to admin api autocomplete

registrar: methods now return proper error if reg addresses are not set. fixes #1457

rpc/console: fix personal.newAccount() regression. Now all comms accept interactive password

registrar: add registrar tests for errors

crypto: catch AES decryption error on presale wallet import + fix error msg format. fixes #1580

CLI: improve error message when starting a second instance of geth. fixes #1564

cli/accounts: unlock multiple accounts. fixes #1785
* make unlocking multiple accounts work with inline <() fd
* passwdfile now correctly read only once
* improve logs
* fix CLI help text for unlocking

fix regression with docRoot / admin API
* docRoot/jspath passed to rpc/api ParseApis, which passes onto adminApi
* docRoot field for JS console in order to pass when RPC is (re)started
* improve flag desc for jspath

common/docserver: catch http errors from response

fix rpc/api tests

common/natspec: fix end to end test (skipped because takes 8s)

registrar: fix major regression:
* deploy registrars on frontier
* register HashsReg and UrlHint in GlobalRegistrar.
* set all 3 contract addresses in code
* zero out addresses first in tests
2015-10-22 00:22:39 +02:00
Jeffrey Wilcke
58d0752fdd Merge pull request #1883 from obscuren/jit-vm-optimisations
core/vm: JIT segmentation
2015-10-21 12:34:32 -07:00
Jeffrey Wilcke
0467a6ceec Merge pull request #1889 from karalabe/fast-sync-rebase
eth/63 fast synchronization algorithm
2015-10-21 11:44:22 -07:00
Péter Szilágyi
5b0ee8ec30 core, eth, trie: fix data races and merge/review issues 2015-10-21 16:49:55 +03:00
Jeffrey Wilcke
dba15d9c36 Merge pull request #1918 from obscuren/get-hash-fix
core, tests: get_hash fix
2015-10-21 03:54:59 -07:00
Jeffrey Wilcke
80f26086ee core, tests: get_hash fix
Make sure that we're fetching the hash from the current chain and not
the canonical chain.
2015-10-21 02:31:46 +02:00
Jeffrey Wilcke
796952a49a Merge pull request #1758 from fjl/coinbase
core, core/state: move gas tracking out of core/state
2015-10-20 03:31:36 -07:00
Péter Szilágyi
aa0538db0b eth: clean out light node notions from eth 2015-10-19 10:03:10 +03:00
Péter Szilágyi
a9d8dfc8e7 core, eth: roll back uncertain headers in failed fast syncs 2015-10-19 10:03:10 +03:00
Péter Szilágyi
b97e34a8e4 eth/downloader: concurrent receipt and state processing 2015-10-19 10:03:10 +03:00
Péter Szilágyi
ab27bee25a core, eth, trie: direct state trie synchronization 2015-10-19 10:03:09 +03:00
Péter Szilágyi
832b37c822 core, eth: receipt chain reconstruction 2015-10-19 10:03:09 +03:00
Péter Szilágyi
42c8afd440 core: differentiate receipt concensus and storage decoding 2015-10-19 10:03:09 +03:00
Péter Szilágyi
b99fe27f8b core: fix block canonical mark / content write race 2015-10-19 10:03:09 +03:00
Péter Szilágyi
f186b39018 eth/downloader: add fast and light sync strategies 2015-10-19 10:03:09 +03:00
Péter Szilágyi
c33cc382b3 core: support inserting pure header chains 2015-10-19 10:03:09 +03:00
Péter Szilágyi
92f9a3e5fa cmd, eth: support switching client modes of operation 2015-10-19 10:03:09 +03:00
Felix Lange
de8d5aaa92 core, core/state: move gas tracking out of core/state
The amount of gas available for tx execution was tracked in the
StateObject representing the coinbase account. This commit makes the gas
counter a separate type in package core, which avoids unintended
consequences of intertwining the counter with state logic.
2015-10-17 10:24:34 +02:00
Jeffrey Wilcke
8c85532412 core/vm: added parsing utilities 2015-10-16 22:30:42 +02:00
Jeffrey Wilcke
b196278044 core/vm: added JIT segmenting / optimisations
* multi-push segments
* static jumps segments
2015-10-16 22:30:42 +02:00
Jeffrey Wilcke
9d61d78de6 core/vm: abstracted instruction execution away from JIT
Moved the execution of instructions to the instruction it self. This
will allow for specialised instructions (e.g. segments) to be execution
in the same manner as regular instructions.
2015-10-16 22:17:35 +02:00
Jeffrey Wilcke
10ed107ba2 Merge pull request #1899 from obscuren/mipmap-bloom
core, eth/filters, miner, xeth: Optimised log filtering
2015-10-16 12:35:24 -07:00
Jeffrey Wilcke
6dc14788a2 core, eth/filters, miner, xeth: Optimised log filtering
Log filtering is now using a MIPmap like approach where addresses of
logs are added to a mapped bloom bin. The current levels for the MIP are
in ranges of 1.000.000, 500.000, 100.000, 50.000, 1.000. Logs are
therefor filtered in batches of 1.000.
2015-10-16 21:28:59 +02:00
Jeffrey Wilcke
c5ef2afda5 Merge pull request #1907 from Gustav-Simonsson/ethash_godep
godeps: update ethash following GPU miner merge
2015-10-16 07:39:42 -07:00
Gustav Simonsson
d5f56ad5c5 godeps: update ethash following GPU miner merge 2015-10-16 16:27:51 +02:00
Jeffrey Wilcke
d5327ddc5f Merge pull request #1869 from Gustav-Simonsson/gpu_miner
all: Add GPU mining, disabled by default
2015-10-16 06:25:33 -07:00
Jeffrey Wilcke
b747754009 Merge pull request #1881 from Gustav-Simonsson/state_new_error
core/state, core, miner: handle missing root error from state.New
2015-10-16 06:18:41 -07:00
Gustav Simonsson
1b1f293082 core/state, core, miner: handle missing root error from state.New 2015-10-16 02:22:06 +02:00
Jeffrey Wilcke
f466243417 Merge pull request #1853 from Gustav-Simonsson/libsecp256k1_update
Update libsecp256k1, Go wrapper and tests
2015-10-15 10:46:57 -07:00
Jeffrey Wilcke
30f057aaf9 eth/filters: added benchmark 2015-10-15 19:45:44 +02:00
Jeffrey Wilcke
cefe5c80b1 Merge pull request #1898 from karalabe/eventmux-post-race
core, eth, event, miner, xeth: fix event post / subscription race
2015-10-15 10:44:30 -07:00
Jeffrey Wilcke
2f1f2e4811 Merge pull request #1887 from Gustav-Simonsson/icap
common, crypto: add ICAP functions
2015-10-15 10:32:05 -07:00
Gustav Simonsson
2db9798646 common, crypto: add ICAP functions 2015-10-13 17:44:14 +02:00
Péter Szilágyi
402fd6e8c6 core, eth, event, miner, xeth: fix event post / subscription race 2015-10-12 16:22:03 +03:00
Jeffrey Wilcke
0de9b16b11 Merge pull request #1896 from karalabe/fix-vm-stack-logs
core/vm: copy stack element to prevent overwrites
2015-10-12 05:32:45 -07:00
Péter Szilágyi
af9afb686b core/vm: copy stack element to prevent overwrites 2015-10-12 00:14:35 +03:00
Gustav Simonsson
f32fa075f1 core/secp256k1: update libsecp256k1 Go wrapper and tests 2015-10-09 14:47:55 +02:00
Jeffrey Wilcke
315a422ba7 Merge pull request #1888 from obscuren/testnet
cmd, core, eth: added official testnet
2015-10-09 01:31:37 -07:00
Jeffrey Wilcke
1de796f101 cmd, core, eth: added official testnet 2015-10-08 22:01:39 +02:00
Jeffrey Wilcke
9e91579105 Merge pull request #1885 from karalabe/olympic-fix
cmd: properly initialize Olympic for all subcommands
2015-10-08 11:33:28 -07:00
Jeffrey Wilcke
bba4dcb72f Merge pull request #1880 from Gustav-Simonsson/core_transfer
core, core/vm, cmd/evm: remove redundant balance check
2015-10-08 11:32:30 -07:00
Jeffrey Wilcke
37abbcb54b Merge pull request #1833 from Gustav-Simonsson/crypto_tests
crypto: correct sig validation, add missing unit tests of exported functions
2015-10-08 11:31:12 -07:00
Péter Szilágyi
2547c9c9b7 cmd: properly initialize Olympic for all subcommands 2015-10-07 18:25:33 +03:00
Gustav Simonsson
ec6a548ee3 all: Add GPU mining, disabled by default 2015-10-07 13:19:30 +02:00
Jeffrey Wilcke
27528ad3d2 Merge pull request #1851 from bas-vk/historyfile
console/history respect datadir
2015-10-07 01:51:13 -07:00
Jeffrey Wilcke
f8786defd0 Merge pull request #1850 from karalabe/genesis-block-receipts
core: fix #1848, block receipts db entry for the genesis too
2015-10-07 01:50:37 -07:00
Gustav Simonsson
e1616f77c7 core, core/vm, cmd/evm: remove redundant balance check 2015-10-06 12:42:34 +02:00
Jeffrey Wilcke
44fd395141 Merge pull request #1879 from obscuren/versioning
cmd/geth: dev version number
2015-10-05 12:35:42 -07:00
Jeffrey Wilcke
7b44b8aece cmd/geth: dev version number 2015-10-05 21:11:39 +02:00
Jeffrey Wilcke
13699e2dd9 Merge pull request #1877 from obscuren/head-write
core: fixed head write on block insertion
2015-10-05 11:00:57 -07:00
Jeffrey Wilcke
20ab29f885 core: fixed head write on block insertion
Due to a rebase this probably got overlooked / ignored. This fixes the
issue of a block insertion never writing the last block.
2015-10-05 17:00:59 +02:00
Jeffrey Wilcke
5b34fa538e Merge pull request #1756 from obscuren/core-refactor
core, core/vm: refactor
2015-10-05 07:14:01 -07:00
Jeffrey Wilcke
7c7692933c cmd/geth, cmd/utils, core, rpc: renamed to blockchain
* Renamed ChainManager to BlockChain
* Checkpointing is no longer required and never really properly worked
when the state was corrupted.
2015-10-04 01:13:56 +02:00
Jeffrey Wilcke
361082ec4b cmd/evm, core/vm, test: refactored VM and core
* Moved `vm.Transfer` to `core` package and changed execution to call
`env.Transfer` instead of `core.Transfer` directly.
* core/vm: byte code VM moved to jump table instead of switch
* Moved `vm.Transfer` to `core` package and changed execution to call
  `env.Transfer` instead of `core.Transfer` directly.
* Byte code VM now shares the same code as the JITVM
* Renamed Context to Contract
* Changed initialiser of state transition & unexported methods
* Removed the Execution object and refactor `Call`, `CallCode` &
  `Create` in to their own functions instead of being methods.
* Removed the hard dep on the state for the VM. The VM now
  depends on a Database interface returned by the environment. In the
  process the core now depends less on the statedb by usage of the env
* Moved `Log` from package `core/state` to package `core/vm`.
2015-10-04 01:13:54 +02:00
Jeffrey Wilcke
f7a71996fb core, event/filter, xeth: refactored filter system
Moved the filtering system from `event` to `eth/filters` package and
removed the `core.Filter` object. The `filters.Filter` object now
requires a `common.Database` rather than a `eth.Backend` and invokes the
`core.GetBlockByX` directly rather than thru a "manager".
2015-10-02 22:47:43 +02:00
Jeffrey Wilcke
8b865fa9bf Merge pull request #1866 from karalabe/honor-eth-capabilities
eth/downloader: match capabilities when querying idle peers
2015-10-02 03:49:56 -07:00
Jeffrey Wilcke
0d78f96205 Merge pull request #1865 from obscuren/deadlock-chainmanager-fix
core: deadlock in chainmanager after posting RemovedTransactionEvent
2015-10-02 03:39:43 -07:00
Péter Szilágyi
47f62a67aa eth/downloader: match capabilities when querying idle peers 2015-10-02 13:20:41 +03:00
Jeffrey Wilcke
a6cc02f68f core: deadlock in chainmanager after posting RemovedTransactionEvent
This PR solves an issue with the chain manager posting a
`RemovedTransactionEvent`, the tx pool will try to
acquire the chainmanager lock which has previously been locked prior to
posting `RemovedTransactionEvent`. This results in a deadlock in the
core.
2015-10-02 12:20:18 +02:00
Jeffrey Wilcke
49ae538506 Merge pull request #1405 from fjl/lean-trie
core, trie: new trie
2015-10-01 04:34:38 -07:00
Jeffrey Wilcke
581c0901af Merge pull request #1856 from karalabe/andorid-path-fix
common: fix #1818, secondary datadir paths to fall back to
2015-10-01 04:03:04 -07:00
Péter Szilágyi
74578ab22b common: fix #1818, secondary datadir paths to fall back to 2015-10-01 12:26:19 +03:00
Jeffrey Wilcke
e3ac56d502 Merge pull request #1859 from fjl/fix-discover-refresh-race
p2p/discover: fix race involving the seed node iterator
2015-09-30 08:21:40 -07:00
Felix Lange
32dda97602 p2p/discover: ignore packet version numbers
The strict matching can get in the way of protocol upgrades.
2015-09-30 16:23:03 +02:00
Felix Lange
631bf36102 p2p/discover: remove unused lastLookup field 2015-09-30 16:23:03 +02:00
Felix Lange
b4374436f3 p2p/discover: fix race involving the seed node iterator
nodeDB.querySeeds was not safe for concurrent use but could be called
concurrenty on multiple goroutines in the following case:

- the table was empty
- a timed refresh started
- a lookup was started and initiated refresh

These conditions are unlikely to coincide during normal use, but are
much more likely to occur all at once when the user's machine just woke
from sleep. The root cause of the issue is that querySeeds reused the
same leveldb iterator until it was exhausted.

This commit moves the refresh scheduling logic into its own goroutine
(so only one refresh is ever active) and changes querySeeds to not use
a persistent iterator. The seed node selection is now more random and
ignores nodes that have not been contacted in the last 5 days.
2015-09-30 16:23:03 +02:00
Jeffrey Wilcke
46ad5a5f5b Merge pull request #1852 from obscuren/filter-nil-fix
xeth: fixed nil pointer of filter retrieval
2015-09-30 03:06:36 -07:00
Jeffrey Wilcke
9b94076717 Merge pull request #1854 from karalabe/badhasherror-formatting-loop
core: fix a formatting loop in BadHashError
2015-09-29 02:26:01 -07:00
Péter Szilágyi
b8b996be74 core: fix a formatting loop in BadHashError 2015-09-29 09:11:38 +03:00
Gustav Simonsson
1d20b0247c Update libsecp256k1 2015-09-28 17:46:38 +02:00
Jeffrey Wilcke
b9359981f4 xeth: fixed nil pointer of filter retrieval
This fix addresses an issue with filters that were (possibly) not yet
added to the filter queues but were expected. I've added additional nil
checks making sure it doesn't crash and swapped the installation of the
filter around so it's installed before use.

Closes #1665
2015-09-25 13:56:53 +02:00
Jeffrey Wilcke
7977e87ce1 Merge pull request #1843 from karalabe/cleanup-downloader-channel
eth/downloader: always send termination wakes, clean leftover
2015-09-25 04:34:59 -07:00
Bas van Kervel
8636f0e1c3 console/history respect datadir 2015-09-25 13:08:48 +02:00
Péter Szilágyi
830ddcee60 core: fix #1848, block receipts db entry for the genesis too 2015-09-24 19:38:59 +03:00
Jeffrey Wilcke
69d86442a5 Merge pull request #1803 from Gustav-Simonsson/badhashes
core: Add BadHashErr and test for BadHashes handling
2015-09-23 11:10:25 -07:00
Jeffrey Wilcke
36f46a61a7 Merge pull request #1844 from obscuren/version-file
VERSION: added version
2015-09-23 05:48:00 -07:00
Jeffrey Wilcke
6e1dc321f4 VERSION: added version 2015-09-23 14:47:20 +02:00
Felix Lange
7a2a918067 Merge pull request #1842 from fjl/rpc-fix-unknown-block
rpc/api: don't crash for unknown blocks
2015-09-23 12:57:33 +02:00
Péter Szilágyi
f459a3f0ae eth/downloader: always send termination wakes, clean leftover 2015-09-23 12:39:17 +03:00
Jeffrey Wilcke
e456f27795 Merge pull request #1827 from Gustav-Simonsson/common_tests
tests: add test for StateTests/stCallCodes.json
2015-09-23 02:12:59 -07:00
Felix Lange
90cd8ae9f2 rpc/api: don't crash for unknown blocks
Most eth RPC calls that work with blocks crashed when the block was not
found because they called Hash on a nil block. This is a regression
introduced in cdc2662c40 (#1779).

While here, remove the insane conversions in get*CountBy*. There is no
need to construct a complete BlockRes and converting
int->int64->*big.Int->[]byte->hexnum->string to format the length of a
slice as hex.
2015-09-22 23:59:26 +02:00
Felix Lange
70b6174748 cmd/geth, core: make "geth blocktest" work again
The test genesis block was not written properly, block insertion failed
immediately.

While here, fix the panic when shutting down "geth blocktest" with
Ctrl+C. The signal handler is now installed automatically, causing
ethereum.Stop to crash because everything is already stopped.
2015-09-22 23:55:31 +02:00
Felix Lange
c1a352c108 trie: add merkle proof functions 2015-09-22 22:57:37 +02:00
Felix Lange
a2d5a60418 core, core/state: batch-based state sync 2015-09-22 22:57:37 +02:00
Felix Lange
565d9f2306 core, trie: new trie 2015-09-22 22:53:49 +02:00
Felix Lange
6b91a4abe5 trie: improve benchmarks 2015-09-22 22:49:27 +02:00
Gustav Simonsson
bfde1a4305 core: Add BadHashErr and test for BadHashes handling 2015-09-22 18:02:26 +02:00
Gustav Simonsson
3340b56593 crypto: correct sig validation, add more unit tests 2015-09-22 17:33:39 +02:00
Jeffrey Wilcke
e56cbc225e Merge pull request #1835 from karalabe/make-cross
makefile: built in cross compilation targets
2015-09-21 11:47:10 -07:00
Jeffrey Wilcke
7bf8e949e7 Merge pull request #1669 from obscuren/tx-pool-auto-resend
core, xeth: chain reorg move missing transactions to transaction pool
2015-09-21 11:45:59 -07:00
Péter Szilágyi
6a05c569f2 makefile: built in cross compilation targets 2015-09-21 21:36:01 +03:00
Jeffrey Wilcke
eaa4473dbd core, core/types: readd transactions after chain re-org
Added a `Difference` method to `types.Transactions` which sets the
receiver to the difference of a to b (NOTE: not a **and** b).

Transaction pool subscribes to RemovedTransactionEvent adding back to
those potential missing from the chain.

When a chain re-org occurs remove any transactions that were removed
from the canonical chain during the re-org as well as the receipts that
were generated in the process.

Closes #1746
2015-09-21 20:33:28 +02:00
Jeffrey Wilcke
be76a68aea cmd/geth: changed version number to 1.2.0
Changed the version number of geth to 1.2.0 so that dev builds are now properly build (instead of master). Note to self; increase version number to 1.2.1 for our next actual release.
2015-09-21 16:13:07 +02:00
Jeffrey Wilcke
12c0afe4fe Merge pull request #1822 from karalabe/contain-pow
core: separate and contain POW verifier, extensive tests
2015-09-21 06:52:11 -07:00
Gustav Simonsson
5621308949 tests: add test for StateTests/stCallCodes.json 2015-09-21 11:34:02 +02:00
Péter Szilágyi
399c920380 core: separate and contain POW verifier, extensive tests 2015-09-21 10:24:49 +03:00
Jeffrey Wilcke
e40b447fea Merge pull request #1814 from Gustav-Simonsson/common_tests
tests: update common test wrappers and test files
2015-09-18 16:34:54 -07:00
Jeffrey Wilcke
b94b9b0158 Merge pull request #1817 from obscuren/nonce-fix
core: transaction nonce recovery
2015-09-18 15:56:10 -07:00
Gustav Simonsson
47ca6904b3 tests: use lastblockhash field to validate reorgs and block headers 2015-09-18 17:48:31 +02:00
Gustav Simonsson
075815e5ff tests: update common test wrappers and test files 2015-09-18 13:08:36 +02:00
Jeffrey Wilcke
b60a27627b core: transaction nonce recovery fix
When the transaction state recovery kicked in it assigned the last
(incorrect) nonce to the pending state which caused transactions with
the same nonce to occur.

Added test for nonce recovery
2015-09-18 11:59:21 +02:00
Felix Lange
216c486a3a Merge pull request #1815 from karalabe/chain-maker-timer
core: allow modifying test-chain block times
2015-09-18 11:23:31 +02:00
Felix Lange
ac6248ed7a Merge pull request #1793 from jeffallen/typo
common: Update README.md for the current package name
2015-09-17 19:26:49 +02:00
Felix Lange
bdf4fd6091 Merge pull request #1813 from kobigurk/develop
cmd/geth: extradata is correcly initialized with console
2015-09-17 19:25:32 +02:00
Felix Lange
69f48e4689 Merge pull request #1811 from bas-vk/timer-clearinterval
timer bugfix when clearInterval was called from within the callback
2015-09-17 19:21:49 +02:00
Péter Szilágyi
6f3cb12924 core: allow modifying test-chain block times 2015-09-17 13:43:52 +03:00
Jeffrey Wilcke
58fbcaa750 Merge pull request #1810 from karalabe/pure-header-verifications-2
core, eth, miner: use pure header validation
2015-09-16 14:21:12 -07:00
Kobi Gurkan
1a1a1ee4ff cmd/geth: extradata is correcly initialized with console 2015-09-16 21:01:21 +03:00
Jeffrey Wilcke
985b5f29ed Merge pull request #1801 from fjl/ethdb
all: move common.Database to ethdb and add NewBatch
2015-09-16 07:50:14 -07:00
Bas van Kervel
2f65ddc501 jsre: timer bugfix when clearInterval was called from within the callback 2015-09-16 11:57:33 +02:00
Jeffrey Wilcke
1cc2f08041 Merge pull request #1784 from karalabe/standard-sync-stats
eth, rpc: standardize the chain sync progress counters
2015-09-16 02:31:58 -07:00
Péter Szilágyi
821619e1c3 core, eth, miner: use pure header validation 2015-09-16 10:46:28 +03:00
Jeffrey Wilcke
e9a80518c7 Merge pull request #1744 from kobigurk/develop
adds extradata flag
2015-09-15 13:56:10 -07:00
Kobi Gurkan
321733ab23 cmd/geth: adds extradata flag 2015-09-15 23:35:36 +03:00
Péter Szilágyi
d4d3fc6a70 jsre, rpc/api: pull in new web3 and use hex numbers 2015-09-15 17:05:12 +03:00
Péter Szilágyi
99b62f36b6 eth/downloader: header-chain order and ancestry check 2015-09-15 14:45:53 +03:00
Péter Szilágyi
0a7d059b6a eth, rpc: standardize the chain sync progress counters 2015-09-15 14:45:53 +03:00
Jeffrey Wilcke
55bdcfaeac Merge pull request #1806 from ethersphere/solc2
new solc api - late fixes
2015-09-15 01:08:30 -07:00
zelig
3a5e7ed9a6 new solc api:
* use legacy version matcher
* optimise just a boolean flag
* skipf for messages in tests
2015-09-15 00:35:22 +02:00
Felix Lange
b252589960 ethdb: remove Flush 2015-09-14 23:36:30 +02:00
Felix Lange
d581dfee5f ethdb: copy stored memdb values
Storing a value in LevelDB copies the bytes, modifying the value
afterwards does not affect the content of the database. This commit
ensures that MemDatabase satisfies the same property.
2015-09-14 23:36:30 +02:00
Felix Lange
8b32f10f16 ethdb: add NewBatch 2015-09-14 23:36:30 +02:00
Felix Lange
8c4dab77ba all: move common.Database to package ethdb 2015-09-14 23:36:30 +02:00
Felix Lange
071e2cd08e Merge pull request #1786 from ethersphere/solc
common/compiler: new solc API
2015-09-14 23:32:40 +02:00
Felix Lange
47b9c640f5 Merge pull request #1797 from karalabe/ensure-ipcpath-exists
rpc/comms: fix #1795, ensure IPC path exists before binding
2015-09-14 14:45:11 +02:00
Felix Lange
a9c809b441 Merge pull request #1792 from jeffallen/uuid
Change go-uuid to use the current supported repository.
2015-09-14 12:06:59 +02:00
Jeff R. Allen
0d40727775 Change go-uuid to use the current supported repository. 2015-09-12 16:49:24 +06:00
zelig
17b729759b Solidity Compiler - solc new API
* adapt to new compiler versioning
* use compiler version as language version
* implement new solc API for versions >= 0.1.[2-9][0-9]* fixes #1770
* add optimize=1 to options
* backward compatibility (for now) for <= 0.1.1, and old versions (0.[2-9][0-9]*.[0-9]+)
* introduce compilerOptions to ContractInfo
* clean up flair, include full version string to version line and ContractInfo
2015-09-12 10:52:52 +02:00
Jeffrey Wilcke
55ed8d108d Merge pull request #1789 from Gustav-Simonsson/core_remove_unused_functions
core, core/vm, core/state: remove unused functions
2015-09-11 15:29:27 -07:00
Jeffrey Wilcke
f1a4b330dd Merge pull request #1796 from karalabe/ethash-android-support
godeps: pull in ethash android fix
2015-09-11 15:26:01 -07:00
Jeffrey Wilcke
0eac601b5b Merge pull request #1779 from karalabe/split-block-storage-3000
core: split the db blocks into components, move TD out top level
2015-09-11 08:10:37 -07:00
Péter Szilágyi
cdc2662c40 core: split out TD from database and all internals 2015-09-11 17:42:25 +03:00
Péter Szilágyi
2b339cbbd8 core, eth: split the db blocks into headers and bodies 2015-09-11 17:42:25 +03:00
Péter Szilágyi
3e6964b841 rpc/comms: fix #1795, ensure IPC path exists before binding 2015-09-11 17:03:31 +03:00
Péter Szilágyi
c6013725a8 godeps: pull in ethash android fix 2015-09-11 15:53:23 +03:00
Felix Lange
4e075e4013 Merge pull request #1773 from obscuren/dev-mode
cmd/geth, cmd/utils, eth: added dev mode flag
2015-09-10 21:15:33 +02:00
Gustav Simonsson
b81a6e6ab8 core, core/vm, core/state: remove unused functions 2015-09-10 21:10:58 +02:00
Jeffrey Wilcke
62bbf8a09e Merge pull request #1778 from fjl/rlp-trie-changes
rlp: precursor changes for trie, p2p
2015-09-10 12:02:16 -07:00
Jeff R. Allen
4ce3dfe9c8 common: Update README.md for the current package name 2015-09-10 23:59:38 +06:00
Felix Lange
fc8b246109 rlp: move ListSize to raw.go 2015-09-10 19:41:51 +02:00
Felix Lange
24bb68e7cf rlp: add RawValue 2015-09-10 19:41:51 +02:00
Felix Lange
bc17dba8fb rlp: add Split functions
These functions allow destructuring of raw rlp-encoded bytes
without the overhead of reflection or copying.
2015-09-10 19:41:51 +02:00
Felix Lange
ac32f52ca6 rlp: fix encReader returning nil buffers to the pool
The bug can cause crashes if Read is called after EOF has been returned.
No code performs such calls right now, but hitting the bug gets more
likely as rlp.EncodeToReader gets used in more places.
2015-09-10 19:12:32 +02:00
Felix Lange
90f1fe0ed2 Merge pull request #1781 from Gustav-Simonsson/state_object_copy
core/state: deleted field in StateObject Copy() and unit test
2015-09-09 18:42:36 +02:00
Jeffrey Wilcke
28b13a4d1e Merge pull request #1780 from bas-vk/miner-crash
agent/miner Prevent the CpuAgent to be started multiple times
2015-09-09 04:49:28 -07:00
Jeffrey Wilcke
f04b3a6f29 cmd/geth, cmd/utils, eth: added dev mode flag
Dev mode enabled some debugging flags such as:

* VM debugging mode
* Simpler proof of work
* Whisper enabled by default
* Datadir to a tmp datadir
* Maxpeers set to 0
* Gas price of 0
* Random listen port
2015-09-09 08:53:05 +02:00
Gustav Simonsson
bf879ef230 core/state: test formatting adhering to Go convention 2015-09-09 00:26:18 +02:00
Gustav Simonsson
004ed786b4 core/state: deleted field in StateObject Copy() and unit test 2015-09-08 15:56:11 +02:00
Bas van Kervel
652eea71fe put unlock after lock 2015-09-08 12:42:29 +02:00
Bas van Kervel
618065895b agent/miner Prevent the CpuAgent to be started multiple times 2015-09-08 11:27:55 +02:00
Péter Szilágyi
edaea69817 Merge pull request #1777 from hectorchu/develop
rpc/comms: fix bug attaching the console over http
2015-09-08 11:02:09 +03:00
Péter Szilágyi
6fe46cc743 Merge pull request #1774 from bas-vk/console-crash
cmd/geth Autocompletion bugfix which let the console crash
2015-09-08 10:33:09 +03:00
Hector Chu
4ea81f170a rpc/comms: fix bug attaching the console over http 2015-09-07 15:09:59 +01:00
Bas van Kervel
f69121357d cmd/geth Autocompletion bugfix which let the console crash 2015-09-06 16:25:55 +02:00
Felix Lange
e2d7c1a523 Merge pull request #1752 from karalabe/fix-eth61-test
eth/downloader: fix race causing occasional test failure
2015-09-03 15:52:18 +02:00
Péter Szilágyi
ebbe25ee71 Merge pull request #1764 from kobigurk/honor_ipc_datadir
honors datadir when attaching
2015-09-03 10:48:23 +03:00
Kobi Gurkan
1a86adc5a2 cmd/geth: honor datadir when attaching 2015-09-03 10:28:30 +03:00
Jeffrey Wilcke
e98854588b Merge pull request #1761 from CJentzsch/patch-3
fix block time issue
2015-09-02 15:13:14 -07:00
Christoph Jentzsch
0fda4c4e15 fix block time issue
currently, under normal circumstances, you always set the timestamp to previous.Time() + 1.
credits to https://www.reddit.com/r/ethereum/comments/3jcs5r/code_avg_block_time_vs_difficulty_adjustment/cuoi4op

style
2015-09-03 00:05:05 +02:00
Felix Lange
b2c17a5a63 Merge pull request #1726 from Gustav-Simonsson/update_tests
Add TestBcForkUncle tests & update JSON files
2015-09-02 22:02:44 +02:00
Gustav Simonsson
e9b031b88b Merge pull request #1755 from fjl/coinbase
core: improve block gas tracking
2015-09-01 23:36:05 +02:00
Felix Lange
00b45acb9e core: improve block gas tracking 2015-09-01 23:11:03 +02:00
Felix Lange
1ffc5b0cfd Merge pull request #1751 from maran/fix_filters
core: Filter on addresses should work as an OR not an AND.
2015-09-01 20:10:27 +02:00
Felix Lange
5e4cd599eb Merge pull request #1745 from mrdomino/obsd-build-master
Pull in ethash and go-isatty updates
2015-09-01 20:06:13 +02:00
Péter Szilágyi
1f1d73ab74 eth/downloader: fix race causing occasional test failure 2015-09-01 16:11:14 +03:00
Maran
67225de255 Filter on addresses should work as an OR not an AND. 2015-09-01 09:19:45 +02:00
Steven Dee
540eb3d02d Pull in ethash and go-isatty updates
Fixes build on OpenBSD.
2015-08-31 12:14:32 -04:00
Gustav Simonsson
fe8093b71f Add TestBcForkUncleTests and update JSON files 2015-08-31 16:45:00 +02:00
Felix Lange
9dc23ce284 Merge pull request #1742 from fjl/rpc-receipt-root
rpc: add receiptRoot to getBlock* responses
2015-08-31 14:50:21 +02:00
Felix Lange
1801748ccd Merge pull request #1734 from fjl/ldflags-warning-go1.5
build: avoid -X separator warning with Go >= 1.5
2015-08-31 14:49:50 +02:00
Felix Lange
8b12bcc0ac rpc: add receiptRoot to getBlock* responses
Fixes #1679
2015-08-29 11:12:01 +02:00
Felix Lange
e1037bd0cf Merge pull request #1724 from Gustav-Simonsson/get_work
rpc: return error code for eth_getWork when no work ready
2015-08-29 10:54:10 +02:00
Felix Lange
2d1ced8759 Merge pull request #1739 from bas-vk/empty-password
rpc/api allow empty password
2015-08-28 13:14:51 +02:00
Bas van Kervel
39e9560600 rpc/api allow empty password 2015-08-28 12:49:41 +02:00
Gustav Simonsson
d9addf79fa Improve error string and remove unneeded else clause 2015-08-28 03:42:01 +02:00
Felix Lange
cfd84a6ad9 build: avoid -X separator warning with Go >= 1.5 2015-08-27 13:26:13 +02:00
Felix Lange
6ec13e7e2b Merge pull request #1701 from karalabe/eth62-sync-rebase
eth: implement eth/62 synchronization logic
2015-08-27 00:03:59 +02:00
Felix Lange
79b644c7a3 Merge pull request #1717 from karalabe/forward-solidity-errors
common/compiler: fix #1598, expose solidity errors
2015-08-26 19:00:11 +02:00
Felix Lange
14370a2260 Merge pull request #1718 from caktux/develop
add missing shh_getMessages to RPC mappings
2015-08-26 18:55:51 +02:00
Felix Lange
3df6f3fc14 Merge pull request #1721 from bas-vk/console-error-parsing
Improved console error handling
2015-08-26 18:55:31 +02:00
Felix Lange
847794a321 Merge pull request #1722 from bas-vk/remote-deleteaccount
Remove personal.deleteAccount from RPC interface
2015-08-26 18:02:51 +02:00
Gustav Simonsson
829201382b rpc: return error code for eth_getWork when no work ready 2015-08-26 12:46:50 +02:00
Bas van Kervel
5dd2462816 rpc/api - remove personal.deleteAccount from RPC interface 2015-08-26 11:39:43 +02:00
Bas van Kervel
f448310eef bugfix console error handling 2015-08-26 11:33:02 +02:00
Péter Szilágyi
101418b275 common/compiler: fix #1598, expose solidity errors 2015-08-26 10:04:23 +03:00
caktux
a1d8015817 add missing shh_getMessages to RPC mappings 2015-08-25 14:42:57 -04:00
Péter Szilágyi
17f65cd1e5 eth: update metrics collection to handle eth/62 algos 2015-08-25 17:48:47 +03:00
Péter Szilágyi
47a7fe5d22 eth: port the synchronisation algo to eth/62 2015-08-25 17:48:47 +03:00
Felix Lange
abce09954b Merge pull request #1711 from Gustav-Simonsson/timestamp_big_int
Add tests for uncle timestamps and refactor timestamp type
2015-08-25 15:49:36 +02:00
Felix Lange
a219159e7e Merge pull request #1710 from bas-vk/useragent
user agent messages were dumped in some cases
2015-08-25 12:23:25 +02:00
Gustav Simonsson
7324176f70 Add tests for uncle timestamps and refactor timestamp type 2015-08-25 04:46:11 +02:00
Péter Szilágyi
ca88e18f59 eth: kill off protocol eth/60 in preparation for eth/62 2015-08-24 17:57:28 +03:00
Péter Szilágyi
42f44dda54 eth, eth/downloader: handle header requests, table driven proto tests 2015-08-24 17:57:28 +03:00
Bas van Kervel
d910148a96 Set ipc channel as user agent client 2015-08-24 12:41:34 +02:00
Péter Szilágyi
c51e153b5c eth, metrics, p2p: prepare metrics and net packets to eth/62 2015-08-21 10:30:57 +03:00
Jeffrey Wilcke
d51d0022ce cmd/geth: bumped version 1.1.0 2015-08-20 21:43:36 +02:00
Jeffrey Wilcke
3793991c0e remove 0x 2015-08-20 18:50:47 +02:00
Jeffrey Wilcke
b884d6ebaa canary update 2015-08-20 18:38:21 +02:00
Jeffrey Wilcke
36f7fe61c3 core, tests: Double SUICIDE fix 2015-08-20 18:22:50 +02:00
Jeffrey Wilcke
54088b0b8b cmd/geth: bumped version 1.0.3 2015-08-20 13:08:08 +02:00
Jeffrey Wilcke
9fb7bc7443 geth: bumped version 1.0.2 2015-08-19 23:05:39 +02:00
Jeffrey Wilcke
e2d44814a5 Merge pull request #1694 from obscuren/hide-fdtrack
fdtrack: hide message
2015-08-19 13:50:54 -07:00
Jeffrey Wilcke
bd3a44cac9 Merge pull request #1652 from bas-vk/autoreconnect
rpc/comms: reconnect ipc client after write error
2015-08-19 13:29:51 -07:00
Jeffrey Wilcke
61a6911eeb Merge pull request #1689 from fjl/discover-ignore-temp-errors
p2p, p2p/discover: small fixes
2015-08-19 12:55:40 -07:00
Bas van Kervel
9bf17eb05a rpc/comms reconnect ipc client after write error 2015-08-19 21:48:56 +02:00
Jeffrey Wilcke
269c5c7107 Revert "fdtrack: temporary hack for tracking file descriptor usage"
This reverts commit 5c949d3b3b.
2015-08-19 21:46:01 +02:00
Jeffrey Wilcke
382d35bf40 Merge pull request #1688 from karalabe/fix-double-imports
eth: fix an issue with pulling and inserting blocks twice
2015-08-19 08:19:37 -07:00
Felix Lange
dd54fef898 p2p/discover: don't attempt to replace nodes that are being replaced
PR #1621 changed Table locking so the mutex is not held while a
contested node is being pinged. If multiple nodes ping the local node
during this time window, multiple ping packets will be sent to the
contested node. The changes in this commit prevent multiple packets by
tracking whether the node is being replaced.
2015-08-19 14:57:16 +02:00
Felix Lange
edccc7ae34 p2p: continue listening after temporary errors 2015-08-19 14:39:04 +02:00
Felix Lange
7d5ff770e2 p2p/discover: continue reading after temporary errors
Might solve #1579
2015-08-19 14:38:55 +02:00
Jeffrey Wilcke
c6a11fe372 Merge pull request #1680 from maran/fix_removedb
cmd/geth: Fix chain purging from cmd line
2015-08-19 05:17:22 -07:00
Péter Szilágyi
941920f2aa eth: fix an issue with pulling and inserting blocks twice 2015-08-19 15:14:26 +03:00
Jeffrey Wilcke
3b997c3e16 Merge pull request #1454 from ethersphere/frozen-cryptoclean
crypto: remove obsolete code
2015-08-19 02:39:02 -07:00
Jeffrey Wilcke
0737cbc5c1 Merge pull request #1683 from ethereum/travis
Switch from Coveralls to Codecov code coverage service
2015-08-18 14:26:14 -07:00
Jeffrey Wilcke
227ff4d2d6 Merge pull request #1682 from obscuren/readme-improvements
Updated README, Added CONTRIBUTING
2015-08-18 14:16:42 -07:00
Jeffrey Wilcke
18d450b2d0 Updated README, Added CONTRIBUTING 2015-08-18 23:00:15 +02:00
Taylor Gerring
cc87551edc Codecov integration 2015-08-18 22:46:48 +02:00
Jeffrey Wilcke
d0dc1b4a60 Merge pull request #1681 from obscuren/miner-receipt-fix
core, miner: write miner receipts
2015-08-18 12:53:26 -07:00
Jeffrey Wilcke
b4369e1015 core, miner: write miner receipts 2015-08-18 21:46:26 +02:00
Maran
4d5501c46a cmd/geth: Fix chain purging from cmd line 2015-08-18 15:56:37 +02:00
zelig
d4da2f630e crypto: remove obsolete key files 2015-08-18 01:25:04 +02:00
Jeffrey Wilcke
e1da124415 Merge pull request #1675 from obscuren/submithashrate-change
rpc/api: return boolean value for eth_submitHashrate
2015-08-17 11:49:15 -07:00
Jeffrey Wilcke
36081505c4 Merge pull request #1673 from karalabe/fix-api-xeth-responses
rpc: update the xeth over RPC API to use the success/failure messages
2015-08-17 11:47:55 -07:00
Jeffrey Wilcke
2497f28aa9 Merge pull request #1627 from zsfelfoldi/gpo
GPO update
2015-08-17 06:37:58 -07:00
zsfelfoldi
49ece3155c GPO update 2015-08-17 15:20:33 +02:00
Jeffrey Wilcke
8839fee415 rpc/api: return boolean value for eth_submitHashrate 2015-08-17 15:09:30 +02:00
Jeffrey Wilcke
ff1f6fa09d Merge pull request #1649 from maran/pending_tx_response
rpc/api: format pendingTx response. Fixes #1648
2015-08-17 06:02:08 -07:00
Jeffrey Wilcke
7ea30f18f9 Merge pull request #1674 from tgerring/bootnodes
Added SG bootnode
2015-08-17 05:56:38 -07:00
Jeffrey Wilcke
12805c738c Merge pull request #1667 from fjl/pretty-printer-improvements
jsre: pretty printer improvements
2015-08-17 05:55:09 -07:00
Taylor Gerring
80b294c3c7 Update CPP pubkey 2015-08-17 14:51:27 +02:00
Taylor Gerring
8884f856ef Added SG bootnode 2015-08-17 14:36:57 +02:00
Péter Szilágyi
309788de37 rpc: update the xeth over RPC API to use the success/failure messages 2015-08-17 14:04:20 +03:00
Jeffrey Wilcke
f6367548e4 Merge pull request #1654 from obscuren/call-gas
xeth: call fix when doing 'create'-like calls
2015-08-16 16:33:29 -07:00
Jeffrey Wilcke
1c3ca3ce6a xeth: max gas limit 2015-08-16 15:27:30 +02:00
Maran
8603ec7055 rpc/api: format pendingTx response. Fixes #1648 2015-08-16 11:12:22 +02:00
Felix Lange
1086e2f298 jsre: fix annoying indentation when printing arrays of objects
The pretty printer, dumb as it is, printed arrays of objects as

  [{
    ...
    }]

With this change, they now print as:

  [{
    ...
  }]
2015-08-16 00:35:00 +01:00
Felix Lange
49703bea0a jsre: bind the pretty printer to "inspect" in JS 2015-08-15 23:55:42 +01:00
Jeffrey Wilcke
59b28cfa31 Merge pull request #1663 from obscuren/issue-1662
xeth: added a transact mu
2015-08-15 14:55:04 -07:00
Jeffrey Wilcke
5c5c3930b7 Merge pull request #1659 from bas-vk/exec-output
Javascript --exec output
2015-08-15 06:23:29 -07:00
Jeffrey Wilcke
7bb5ac045e xeth: added a transact mu
Added a transact mutex. The transact mutex will fix an issue where
transactions were created with the same nonce resulting in some
transactions being dropped. This happened when two concurrent calls
would call the `Transact` method (which is OK) which would both call
`GetNonce`. While the managed is thread safe it does not help us in this
case.
2015-08-15 00:33:52 +02:00
Jeffrey Wilcke
cd81356ace Merge pull request #1658 from bas-vk/liner-ctrl-c
Clear current line on ctrl-C
2015-08-14 04:36:15 -07:00
Bas van Kervel
c472b8f725 main clear current line on ctrl-C 2015-08-14 13:23:41 +02:00
Jeffrey Wilcke
3a66c4ed47 Merge pull request #1642 from ethereum/fix-js-console-windows
cmd/geth, jsre: restore command line editing on windows
2015-08-14 04:14:11 -07:00
Jeffrey Wilcke
29181003d4 Merge pull request #1655 from obscuren/db-merge-fix
eth, trie: removed key prefixing from state entries & merge db fix
2015-08-14 04:12:33 -07:00
Bas van Kervel
87d1cde7e4 main print console output for js statement given by the exec argument 2015-08-14 13:06:34 +02:00
Jeffrey Wilcke
28b14d3e6d Merge pull request #1635 from bas-vk/useragent
support for user agents
2015-08-13 16:25:33 -07:00
Jeffrey Wilcke
73c4e6005c Merge pull request #1638 from obscuren/jit-fixes
core/vm: fixed jit error & added inline docs
2015-08-13 11:49:01 -07:00
Jeffrey Wilcke
b8ca0a830e eth, trie: removed key prefixing from state entries & merge db fix
Fixed database merge strategy to use the correct database. Due to a copy
paste fail when doing type evaluation the same database was being
iterated (chain), all others were ignored.

Removed state prefixing because {H(code): code} is stored in the same
database as the rest of the state.
2015-08-13 20:44:03 +02:00
Felix Lange
a89cfe92cc Merge pull request #1470 from ebuchman/encHandshake
p2p: validate recovered ephemeral pubkey
2015-08-13 11:59:27 +02:00
Felix Lange
0b0b31c7d2 Merge pull request #1651 from karalabe/rlp-boolean-support
rlp: boolean support
2015-08-13 11:10:26 +02:00
Péter Szilágyi
1d2420323c rlp: add support for boolean encoding/decoding 2015-08-13 12:05:39 +03:00
Felix Lange
0dd6911c62 Merge pull request #1647 from fjl/fix-disc-reason
p2p: fix value of DiscSubprotocolError
2015-08-12 21:20:21 +02:00
Felix Lange
28feafe7af Merge pull request #1646 from fjl/fix-client-identifier
cmd/geth: remove spaces in client identifier
2015-08-12 14:38:48 +02:00
Felix Lange
0d10d5a0a5 p2p: fix value of DiscSubprotocolError
We had the wrong value (12) since forever.
2015-08-12 14:15:54 +02:00
Felix Lange
31a2793662 cmd/geth: remove spaces in client identifier 2015-08-12 13:32:52 +02:00
Bas van Kervel
f9cbd16f27 support for user agents 2015-08-12 12:22:16 +02:00
Felix Lange
0ef80bb3d0 cmd/geth, jsre: restore command line editing on windows
PR #856 broke command line editing by wrapping stdout with a filter that
interprets ANSI escape sequences to fix colored printing on windows.
Implement the printer in Go instead so it can do its own
platform-dependent coloring.

As a nice side effect, the JS console is now noticeably more responsive
when printing results.

Fixes #1608
Fixes #1612
2015-08-12 12:04:00 +02:00
Jeffrey Wilcke
05c66529b2 Merge pull request #1621 from ethereum/fix-discover-hangs
p2p/discover: fix two major bugs in reply packet handling
2015-08-11 12:17:13 -07:00
Jeffrey Wilcke
9cacec70f9 cmd/evm, core/vm, tests: changed DisableVm to EnableVm 2015-08-11 18:43:22 +02:00
Jeffrey Wilcke
94b6f38869 Merge pull request #1641 from obscuren/web3-update
web3: updated
2015-08-11 08:55:55 -07:00
Jeffrey Wilcke
bf6ea2919d web3: updated 2015-08-11 17:17:20 +02:00
Jeffrey Wilcke
c32d6fdf74 Merge pull request #1640 from obscuren/trace-flag-ethtest
cmd/ethtest: added trace flag for debugging
2015-08-11 02:53:02 -07:00
Jeffrey Wilcke
67c8ccc309 cmd/ethtest: added trace flag for debugging 2015-08-11 11:46:52 +02:00
Felix Lange
590c99a98f p2p/discover: fix UDP reply packet timeout handling
If the timeout fired (even just nanoseconds) before the deadline of the
next pending reply, the timer was not rescheduled. The timer would've
been rescheduled anyway once the next packet was sent, but there were
cases where no next packet could ever be sent due to the locking issue
fixed in the previous commit.

As timing-related bugs go, this issue had been present for a long time
and I could never reproduce it. The test added in this commit did
reproduce the issue on about one out of 15 runs.
2015-08-11 11:42:17 +02:00
Felix Lange
01ed3fa1a9 p2p/discover: unlock the table during ping replacement
Table.mutex was being held while waiting for a reply packet, which
effectively made many parts of the whole stack block on that packet,
including the net_peerCount RPC call.
2015-08-11 11:42:17 +02:00
Jeffrey Wilcke
32395ddb89 core/vm: fixed jit error & added inline docs
opNumber did not create a new big int which could lead to the block's
number being modified.
2015-08-11 00:16:38 +02:00
Jeffrey Wilcke
2fcf7f1241 Merge pull request #1604 from obscuren/db-merge
core, eth, trie, xeth: merged state, chain, extra databases in one
2015-08-09 05:16:37 -07:00
Jeffrey Wilcke
07cb8092e7 Merge pull request #1611 from obscuren/expdiff-olympic-fix
cmd/utils, core: disable exp diff for olympic net
2015-08-09 05:15:13 -07:00
Jeffrey Wilcke
1cbd53add8 Merge pull request #1626 from obscuren/defaults-fix
cmd/geth, core/vm: setup vm settings and defaulted JIT disabled
2015-08-08 17:11:28 -07:00
Jeffrey Wilcke
eec38c5853 cmd/geth, core/vm: setup vm settings and defaulted JIT disabled 2015-08-09 02:06:16 +02:00
Jeffrey Wilcke
c93f0b9f4b Merge pull request #1490 from obscuren/jit-vm
core/vm: jit vm
2015-08-08 06:36:26 -07:00
Jeffrey Wilcke
a23478c0be core, eth, trie, xeth: merged state, chain, extra databases in one 2015-08-07 22:29:02 +02:00
Jeffrey Wilcke
312128384b Merge pull request #1620 from caktux/develop
string version for build server
2015-08-07 11:41:41 -07:00
caktux
3ccab5a1e8 string version for build server 2015-08-07 14:13:33 -04:00
Jeffrey Wilcke
dcb23bc3ab Merge pull request #1615 from obscuren/contract-addr-fix
xeth: fixed contract addr check
2015-08-07 05:38:02 -07:00
Jeffrey Wilcke
b6c5b3b4a7 xeth: fixed contract addr check 2015-08-07 14:32:06 +02:00
Jeffrey Wilcke
d7580f21f6 Merge pull request #1595 from obscuren/extra-data
cmd/geth, eth: added canonical extra data
2015-08-07 05:00:36 -07:00
Jeffrey Wilcke
b1fac4270d Merge pull request #1614 from obscuren/web3-finite-fix
web3: regression. Fixes #1613
2015-08-07 04:59:15 -07:00
Jeffrey Wilcke
ac697326a6 core/vm: reduced big int allocations
Reduced big int allocation by making stack items modifiable. Instead of
adding items such as `common.Big0` to the stack, `new(big.Int)` is
added instead. One must expect that any item that is added to the stack
might change.
2015-08-07 12:52:23 +02:00
Jeffrey Wilcke
184e9ae9a8 core, tests: reduced state copy by N calls
Reduced the amount of state copied that are required by N calls by doing
a balance check prior to any state modifications.
2015-08-07 12:52:23 +02:00
Jeffrey Wilcke
846f34f78b core/vm, tests: implemented semi-jit vm
* changed stack and removed stack ptr. Let go decide on slice reuse.
2015-08-07 12:52:17 +02:00
Jeffrey Wilcke
a33726b7db web3: regression. Fixes #1613 2015-08-07 12:33:12 +02:00
Jeffrey Wilcke
132df860d9 miner, rpc: added length check for extra data 2015-08-07 12:24:44 +02:00
Jeffrey Wilcke
785b3e7a57 cmd/geth, eth: added canonical extra data
Implemented canonical extra data according to
https://github.com/ethereum/wiki/wiki/Extra-Data
2015-08-07 12:24:32 +02:00
Jeffrey Wilcke
e89536ca0b Merge pull request #1596 from obscuren/submit-hashrate
miner, rpc: added submit hashrate for remote agents
2015-08-07 03:08:48 -07:00
Jeffrey Wilcke
ac10c9352e Merge pull request #1610 from obscuren/address-check
xeth: added address hex check and length check
2015-08-07 02:05:54 -07:00
Jeffrey Wilcke
cf7cef4293 xeth: added address hex check and length check 2015-08-07 09:52:12 +02:00
Jeffrey Wilcke
698e98d981 Merge pull request #1600 from ethereum/fix-tests-windows
Fix tests on windows
2015-08-06 12:39:29 -07:00
Jeffrey Wilcke
a3b8169938 Merge pull request #1603 from ebuchman/trie_hex_fix
trie: hex fix
2015-08-06 12:02:55 -07:00
Ethan Buchman
46c9594081 trie: run codec tests, add benchmarks, faster 2015-08-06 14:04:16 -04:00
Jeffrey Wilcke
7baa5977c8 Merge pull request #1594 from ebuchman/trie_hex_fix
faster hex-prefix codec and string -> []byte
2015-08-06 08:44:19 -07:00
Felix Lange
803096ca0f .gitattributes: add 2015-08-06 17:18:59 +02:00
Felix Lange
6ee908848c p2p/nat: disable UPnP test on windows 2015-08-06 17:18:59 +02:00
Felix Lange
3832019964 common/compiler, common/docserver, jsre: fix tests on windows 2015-08-06 17:18:59 +02:00
Felix Lange
eae1191904 cmd/utils: fix path expansion on windows 2015-08-06 17:18:59 +02:00
Felix Lange
78b101e15d common: remove windows path functions
They were unused and their tests failed on Windows.
2015-08-06 16:43:43 +02:00
Jeffrey Wilcke
74f6d90153 cmd/utils, core: disable exp diff for olympic net 2015-08-06 13:29:06 +02:00
Jeffrey Wilcke
c32073b11f miner, rpc: added submit hashrate for remote agents 2015-08-06 12:58:54 +02:00
Felix Lange
b23b4dbd79 p2p/discover: close Table during testing
Not closing the table used to be fine, but now the table has a database.
2015-08-06 12:27:59 +02:00
Ethan Buchman
c1d516546d faster hex-prefix codec and string -> []byte 2015-08-06 03:17:59 -04:00
Jeffrey Wilcke
82ef26f600 Merge branch 'develop' 2015-08-05 18:41:08 +02:00
Jeffrey Wilcke
ee5728ec03 fake commit for build server :( 2015-08-05 18:41:00 +02:00
Jeffrey Wilcke
9a02f53726 Merge branch 'develop' 2015-08-05 18:35:28 +02:00
Jeffrey Wilcke
98100f472c cmd/geth: bumped version number 2015-08-05 18:35:23 +02:00
Jeffrey Wilcke
80e5f50713 Merge branch 'develop' 2015-08-05 18:08:52 +02:00
Jeffrey Wilcke
26f838796b Merge pull request #1583 from obscuren/miner-price-order
miner, core: sort txs by price, nonce
2015-08-05 09:03:18 -07:00
Jeffrey Wilcke
35f271b264 miner, core: sort txs by price, nonce 2015-08-05 17:44:19 +02:00
Jeffrey Wilcke
f12e0161ca Merge pull request #1588 from obscuren/diff-bomb
core, miner: added difficulty bomb
2015-08-05 04:26:57 -07:00
Jeffrey Wilcke
71d32f54f7 core, miner: added difficulty bomb 2015-08-05 13:09:09 +02:00
Jeffrey Wilcke
1f4ac6b05a Merge pull request #1587 from obscuren/miner-race
miner: fixed worker race condition
2015-08-05 01:50:49 -07:00
Jeffrey Wilcke
d8590d9790 miner: fixed worker race condition 2015-08-04 20:54:21 +02:00
Jeffrey Wilcke
56219a5e7a Merge pull request #1578 from Gustav-Simonsson/frontier_thawing
miner: gas limit strategy, target 3141592 & def gas price 50 Shannon
2015-08-04 11:53:39 -07:00
Gustav Simonsson
26c6e3b206 miner: gas limit strategy, target 3141592 & def gas price 50 Shannon 2015-08-04 15:20:28 +02:00
Jeffrey Wilcke
b01f2c29ae Merge pull request #1574 from fjl/fdtrack
fdtrack: hack to track file descriptor usage
2015-08-04 03:51:16 -07:00
Jeffrey Wilcke
ff66e8fa29 Merge pull request #1562 from ethersphere/blankpasswd
jsre: leave out lines from history possibly containing passwords
2015-08-04 03:10:59 -07:00
Jeffrey Wilcke
17b481e3c3 Merge pull request #1581 from obscuren/olympic
cmd, core, eth: support for the olympic network
2015-08-04 00:54:07 -07:00
Felix Lange
5c949d3b3b fdtrack: temporary hack for tracking file descriptor usage
Package fdtrack logs statistics about open file descriptors.
This should help identify the source of #1549.
2015-08-04 03:10:27 +02:00
Jeffrey Wilcke
dcdb7059cc cmd, core, eth: support for the olympic network
Added a --olympic flag which initialiser the olympic protocol settings
2015-08-03 18:15:48 +02:00
Felix Lange
bf48ed32dd metrics: fix file descriptor leak when reading disk stats on linux
The disk stats file was not closed after reading.
2015-08-03 16:27:36 +02:00
Felix Lange
ba14957cf3 rpc/comms: use ConnState to track HTTP connections
The JSON-RPC server wraps TCP connections in order to be able to shut
down them down when RPC is stopped. This is rather scary code. Go 1.3
introduced the http.Server.ConnState hook for such purposes. We can use
this facility now that we depend on Go 1.4.

There are multiple reasons for the switch apart from making the code
less scary:

* the TCP listener no longer ticks every second to check a channel
* pending requests are allowed to finish after stopping the server
* we can time out idle keep-alive connections
2015-08-03 16:27:36 +02:00
Jeffrey Wilcke
97cdf84899 Merge pull request #1479 from tgerring/ethtest
Update ethtest default path for BlockTests
2015-08-03 07:18:48 -07:00
Jeffrey Wilcke
98db08c42f Merge pull request #1548 from fjl/accounts-test-deflake
accounts: bump timeout in TestSignRace
2015-08-03 07:16:36 -07:00
Jeffrey Wilcke
cc6c5846e5 Merge pull request #1568 from obscuren/issue-1559
core: added a running flag to prevent panics in the chainmanager
2015-08-03 07:15:19 -07:00
Jeffrey Wilcke
db988a46dd Merge pull request #1569 from obscuren/default-genesis
core: added default genesis block
2015-08-03 04:49:30 -07:00
Jeffrey Wilcke
7a75da63c6 core: added default genesis block
When a user runs a freshly setup geth w/o a database initialised the
default genesis block is decoded and inserted in to the database.
2015-08-02 01:23:02 +02:00
Jeffrey Wilcke
33efb3381c Merge pull request #1461 from bas-vk/eth_resend
Old transaction after resend was not removed from pool
2015-08-01 16:18:54 -07:00
Felix Lange
5aec1d94ad accounts: bump timeout and spin less in TestSignRace
This should fix the flakeyness.
2015-08-02 00:49:53 +02:00
Jeffrey Wilcke
a8b39b5cc0 Merge pull request #1541 from bas-vk/issue1518
Improved error handling for NewTransactionFromBytes
2015-08-01 08:47:32 -07:00
Jeffrey Wilcke
acd2c4e520 core: added a running flag to prevent panics in the chainmanager
The running flag will determine whether the chain manager is still
running or not. This will prevent the quit channel from being closed
twice resulting in a panic. This PR should fix this issue.

Closes #1559
2015-08-01 12:32:28 +02:00
Jeffrey Wilcke
ab85a3593a Merge pull request #1545 from obscuren/log-index
core/state: Set log index. Closes #1226
2015-07-31 10:36:42 -07:00
Jeffrey Wilcke
c1c06fffcb Merge pull request #1561 from karalabe/add-missing-autocompletes
rpc/api: add missing autocomplete commands
2015-07-31 03:09:08 -07:00
zelig
6628eeb6ca jsre: leave out lines from history containing methods of the personal module 2015-07-31 11:51:18 +02:00
Péter Szilágyi
0d3a8ad6dd rpc/api: add missing autocomplete commands 2015-07-31 12:46:16 +03:00
Jeffrey Wilcke
4231de3914 Merge pull request #1553 from prusnak/develop
remove elliptic.P224 usage
2015-07-30 03:59:25 -07:00
Pavol Rusnak
3f07afbbd2 remove elliptic.P224 usage
Fedora/RedHat distros comply with US patent law and remove this curve,
which makes it impossible to run ethereum with distro provided Golang.

File crypto/ecies/README claims it is unsupported anyway.
2015-07-30 12:47:45 +02:00
Jeffrey Wilcke
64e2f52c2e Merge pull request #1534 from obscuren/issue-1040
rpc: to in eth_call no longer required. Fixed eth_estimateGas
2015-07-30 03:25:47 -07:00
Jeffrey Wilcke
d261c3f455 rpc: to in Call no longer required. Fixed eth_estimateGas 2015-07-29 15:12:12 +02:00
Jeffrey Wilcke
e7f4232b10 Merge pull request #1544 from karalabe/fix-stall-detector
eth, eth/downloader: don't report stall if fetcher filled the block
2015-07-29 06:11:43 -07:00
Jeffrey Wilcke
f715547fc7 core/state: Set log index. Closes #1226 2015-07-29 15:08:59 +02:00
Jeffrey Wilcke
fa286688ab Merge pull request #1546 from obscuren/tests-update
tests: updated
2015-07-29 06:07:19 -07:00
Jeffrey Wilcke
03c39d4fc0 tests: updated 2015-07-29 15:01:42 +02:00
Péter Szilágyi
6adbaabc65 eth, eth/downloader: don't report stall if fetcher filled the block 2015-07-29 15:39:08 +03:00
Bas van Kervel
81e2124ea2 improved error detection and handling for NewTransactionFromBytes
integrated review comments
2015-07-29 10:30:00 +02:00
Jeffrey Wilcke
cc27be9d44 Merge pull request #1543 from enriquefynn/develop
FreeBSD support
2015-07-28 16:20:13 -07:00
Fynn
7065ebd2ed FreeBSD support 2015-07-28 19:16:16 -03:00
Jeffrey Wilcke
a281df783d Merge pull request #1533 from ethersphere/frontier/etherbase
Etherbase defaults to first account even if it is created during the session
2015-07-28 05:11:43 -07:00
Jeffrey Wilcke
1fad8798ec Merge pull request #1515 from fjl/license-fixes
all: fix license headers one more time
2015-07-28 04:29:42 -07:00
Bas van Kervel
7e31df3987 bugfix, pending transaction was resend with new gas price/limit but not removed from transaction pool 2015-07-28 10:42:31 +02:00
Felix Lange
572e78cee0 Merge pull request #1536 from fjl/fix-go1.5-build
crypto: fix build with Go 1.5
2015-07-28 00:59:52 +02:00
Felix Lange
453d2c9ce1 crypto: fix build with Go 1.5 2015-07-27 19:13:45 +02:00
zelig
1356daad27 etherbase defaults to first account even if created during the session 2015-07-27 10:50:29 +02:00
Jeffrey Wilcke
d18d256442 Merge pull request #1529 from obscuren/extra-data-fix
core: genesis extra data field fix
2015-07-26 15:15:36 -07:00
Jeffrey Wilcke
3530acb9e2 core: genesis extra data field fix 2015-07-26 14:44:54 +02:00
Jeffrey Wilcke
8a5ea466e4 Merge pull request #1528 from obscuren/reduce-extra-data
params: reduce extra data to 32 bytes & target block time
2015-07-26 04:04:10 -07:00
Jeffrey Wilcke
1e241e84f7 params: reduce extra data to 32 bytes 2015-07-26 12:47:57 +02:00
Jeffrey Wilcke
e86233abc9 Merge pull request #1525 from obscuren/genesis-write-fix
core: fixed genesis write out to write only canon number
2015-07-25 13:13:27 -07:00
Jeffrey Wilcke
c1c895a36b core: fixed genesis write out to write only canon number 2015-07-25 21:48:53 +02:00
Jeffrey Wilcke
73a576c9af Merge pull request #1524 from obscuren/default-extra
eth: set default miner extra to client name
2015-07-25 08:58:08 -07:00
Jeffrey Wilcke
665eaff9b9 Merge pull request #1520 from obscuren/reward-5eth
core: 5 ether block reward
2015-07-25 08:57:33 -07:00
Jeffrey Wilcke
9afda6ab8c core: 5 ether block reward 2015-07-25 17:47:20 +02:00
Jeffrey Wilcke
3adaeb1dbc eth: set default miner extra to client name 2015-07-25 17:36:56 +02:00
Jeffrey Wilcke
0efcd7ed05 Merge pull request #1521 from obscuren/client-update
cmd/geth, core, eth: Version 1.0.0
2015-07-25 08:36:04 -07:00
Jeffrey Wilcke
4019e2a6f2 Merge pull request #1497 from obscuren/remove-rle
ethdb, trie: removed RLE compression
2015-07-25 08:35:40 -07:00
Jeffrey Wilcke
f6097f4a0a Merge pull request #1522 from obscuren/genesis-block-check
core: check genesis block before writeout
2015-07-25 08:10:08 -07:00
Jeffrey Wilcke
d4428cc77f Merge pull request #1523 from obscuren/lower-gasprice
cmd/util: lowered default gas price
2015-07-25 08:09:55 -07:00
Jeffrey Wilcke
ba15f9d282 cmd/util: lowered default gas price 2015-07-25 17:03:10 +02:00
Jeffrey Wilcke
0c718afe90 core: check genesis block before writeout 2015-07-25 16:53:35 +02:00
Jeffrey Wilcke
036e6301af cmd/geth, core, eth: Version 1.0.0
Genesis release. Closes #1402

Conflicts:
	cmd/geth/main.go
2015-07-25 13:55:56 +02:00
Jeffrey Wilcke
6cffa743ee Merge pull request #1519 from obscuren/develop
web3: updated 0.9.1
2015-07-25 04:06:43 -07:00
Jeffrey Wilcke
5001f778aa web3: updated 0.9.1 2015-07-25 12:22:39 +02:00
Felix Lange
cd657b9878 Godeps: use BSD-licensed version of gopkg.in/karalabe/cookiejar.v2 2015-07-24 14:23:02 +02:00
Felix Lange
67598d9d08 crypto/sha3: add full license headers 2015-07-24 12:32:58 +02:00
Felix Lange
fd2356c620 common: remove config.go
The code in config.go is unused. The main reason for removing it is to
get rid github.com/rakyll/goini in Godeps (it has no license).
2015-07-24 11:43:32 +02:00
Felix Lange
bfbcfbe4a9 all: fix license headers one more time
I forgot to update one instance of "go-ethereum" in commit 3f047be5a.
2015-07-23 18:35:11 +02:00
Jeffrey Wilcke
adc7ab0dd6 Merge pull request #1507 from obscuren/batch-write
cmd/core,xeth: removed unneeded states & added batch writes
2015-07-23 07:50:07 -07:00
Jeffrey Wilcke
8f56eea77d ethdb, trie: removed RLE compression 2015-07-23 12:57:33 +02:00
Jeffrey Wilcke
8fc9830971 cmd/core,xeth: removed unneeded states & added batch writes 2015-07-23 10:45:31 +02:00
Jeffrey Wilcke
0cff61beda Merge pull request #1510 from fjl/license-fixes
all: license fixes
2015-07-23 01:43:11 -07:00
Jeffrey Wilcke
b403b9e4c3 Merge pull request #1508 from karalabe/database-caching
cmd, core, eth, ethdb: cache flag to allocate memory for db internal use
2015-07-23 01:17:18 -07:00
Felix Lange
26a269ea09 Merge pull request #1511 from karalabe/rlp-data-race
core: fix an RLP encoding data race due to deep struct copy
2015-07-22 20:10:41 +02:00
Péter Szilágyi
04bb89604e core: fix an RLP encoding data race due to deep struct copy 2015-07-22 20:54:53 +03:00
Felix Lange
0428cae226 remove LICENSE files 2015-07-22 18:54:45 +02:00
Felix Lange
3f047be5aa all: update license headers to distiguish GPL/LGPL
All code outside of cmd/ is licensed as LGPL. The headers
now reflect this by calling the whole work "the go-ethereum library".
2015-07-22 18:51:45 +02:00
Felix Lange
f4acdea402 crypto: fix license of curve.go
crypto/curve.go is not our code and has its own license. This commit
excludes it in update-license.go and removes our GPL header.
2015-07-22 18:50:31 +02:00
Péter Szilágyi
c7e7778f2a cmd, core, eth, ethdb: cache flag to allocate memory for db internal use 2015-07-22 14:00:52 +03:00
Felix Lange
d1d45aa839 Merge pull request #1503 from fjl/fix-accounts-race
accounts: fix data race when key is locked after the unlock timeout
2015-07-22 13:00:09 +02:00
Taylor Gerring
d103af5dd4 Disassociate test directory from test name 2015-07-22 11:39:36 +01:00
Jeffrey Wilcke
ed1d2f858e Merge pull request #1481 from tgerring/legalese
Legalese updates
2015-07-22 03:35:33 -07:00
Jeffrey Wilcke
482cc4957d Merge pull request #1500 from karalabe/fix-miner-race
miner: fix current work data race
2015-07-22 03:16:13 -07:00
Jeffrey Wilcke
f1daed65b1 Merge pull request #1502 from ethereum/canaryFix
Fixed canary to require 2+ nonzero, not sum 2+
2015-07-20 16:17:48 -07:00
Taylor Gerring
cf5313f13e Update disclaimer 2015-07-20 18:49:25 +02:00
Felix Lange
06d5898d6a crypto: remove debug print call after decrypting a key from disk 2015-07-20 18:04:23 +02:00
Felix Lange
7662dd9bbb accounts: fix data race when key is locked after the unlock timeout
While here, also improve the docs and speed up the tests.
The tests used the scrypt keystore with ridiculous settins and took 20s
each.
2015-07-20 18:04:23 +02:00
Vitalik Buterin
8160b8618d Fixed canary to require 2+ nonzero, not sum 2+ 2015-07-20 16:28:28 +02:00
Péter Szilágyi
3029349761 miner: fix current work data race 2015-07-20 14:37:43 +03:00
Jeffrey Wilcke
02c5022742 Merge pull request #1496 from karalabe/fix-xeth-races
xeth: fix #1485, data race in fiilter creation and event firing
2015-07-20 04:27:10 -07:00
Péter Szilágyi
3642441ca3 xeth: fix #1485, data race in fiilter creation and event firing 2015-07-20 14:02:02 +03:00
Jeffrey Wilcke
12bb743b35 Merge pull request #1484 from fjl/rlp-json-tests
cmd/ethtest, tests: add support for RLP JSON tests
2015-07-19 05:05:16 -07:00
Jeffrey Wilcke
26c0fa1cb0 Merge pull request #1480 from obscuren/miner-state-sync
miner: moved state sync
2015-07-19 05:03:59 -07:00
Jeffrey Wilcke
a38f3740d6 Merge pull request #1488 from ethereum/travis
Travis container support
2015-07-18 09:05:29 -07:00
Felix Lange
345590f27f rlp: fix check for canonical byte array size
Decoding did not reject byte arrays of length one with a single element
b where 55 < b < 128. Such byte arrays must be rejected because
they must be encoded as the single byte b instead.
2015-07-18 16:23:35 +02:00
Taylor Gerring
5a41326521 Travis container support 2015-07-18 16:12:48 +02:00
Felix Lange
cefd948267 rlp: reject trailing data when using DecodeBytes 2015-07-18 01:47:17 +02:00
Felix Lange
593b1b65e7 tests: document RLP tests 2015-07-17 15:42:23 +02:00
Felix Lange
5da82077d1 cmd/ethtest, tests: add support for RLP JSON tests 2015-07-17 15:13:24 +02:00
Jeffrey Wilcke
1b9ef0e52d miner: moved state sync
Moved the state sync so it only syncs the state when the block mining yield a possitive result
2015-07-16 14:19:27 +02:00
Jeffrey Wilcke
a75b95b876 Merge pull request #1477 from tgerring/legalese
Prompt user to accept legalese when datadir doesn't exist
2015-07-16 04:40:15 -07:00
Jeffrey Wilcke
e954375109 Merge pull request #1469 from obscuren/smart-mining
miner: smart mining
2015-07-16 04:39:07 -07:00
Taylor Gerring
618991f136 Move text to separate file 2015-07-16 13:34:34 +02:00
Jeffrey Wilcke
bc6b6932d0 Merge pull request #1476 from obscuren/deadlock-logs
xeth: removed mutex lock
2015-07-16 03:35:43 -07:00
Taylor Gerring
1909d26fe2 Prompt user to accept legalese when datadir doesn't exist 2015-07-16 12:27:42 +02:00
Jeffrey Wilcke
b1d0d3c0ed xeth: removed unneeded mutex lock 2015-07-16 11:04:53 +02:00
Jeffrey Wilcke
9addb3df3a Merge pull request #1475 from obscuren/issue1473
core: during chain reorg rewrite receipts and transactions
2015-07-15 13:17:07 -07:00
Jeffrey Wilcke
e870e61bc9 miner: smart mining
Work is now handled and carried over multiple sessions. Previously one
session only was assumed, potentially resulting in invalid (outdated)
work

* Larger work / result queue
* Full validation option
2015-07-15 20:37:12 +02:00
Jeffrey Wilcke
cecc9cdd2f Merge pull request #1468 from Gustav-Simonsson/xeth_transact_logging
xeth: log signed tx hash
2015-07-15 11:35:51 -07:00
Jeffrey Wilcke
e17d8ddbeb core: during chain reorg rewrite receipts and transactions
Added PutBlockReceipts; storing receipts by blocks. Eventually this will
require pruning during some cleanup cycle. During forks the receipts by
block are used to get the new canonical receipts and transactions.

This PR fixes #1473 by rewriting transactions and receipts from the point
of where the fork occured.
2015-07-14 18:40:03 +02:00
Ethan Buchman
37efd08b42 p2p: validate recovered ephemeral pubkey against checksum in decodeAuthMsg 2015-07-14 03:06:44 +00:00
Gustav Simonsson
afba798357 xeth: log signed tx hash 2015-07-13 03:09:02 +02:00
Jeffrey Wilcke
796c18db93 Merge pull request #1462 from obscuren/genesis
core: genesis preparation
2015-07-12 03:45:45 -07:00
Jeffrey Wilcke
a32c51effd cmd, core, eth, common: genesis preparation
Implemented the --genesis flag thru which we can set a custom genesis
block, including the official Ethereum genesis block.
2015-07-10 17:37:41 +02:00
Jeffrey Wilcke
5a810758db cmd/geth: bump version 0.9.39 2015-07-09 18:07:52 +02:00
Jeffrey Wilcke
6f9377475c Merge branch 'release/0.9.38' into develop 2015-07-09 18:06:49 +02:00
Jeffrey Wilcke
98f4c936f2 Merge branch 'release/0.9.38' 2015-07-09 18:06:39 +02:00
Jeffrey Wilcke
344277d026 cmd/geth: version bump 0.9.38 2015-07-09 17:43:45 +02:00
Jeffrey Wilcke
3add8cfdb0 Merge pull request #1452 from obscuren/develop
core/vm: added str to op
2015-07-09 08:42:38 -07:00
Jeffrey Wilcke
8b5a65c14a core/vm: added str to op 2015-07-09 17:08:33 +02:00
Jeffrey Wilcke
0646cc8d14 Merge pull request #1453 from ethersphere/frozen-accounts
accounts, crypto: fixed file naming for windows
2015-07-09 08:08:09 -07:00
Jeffrey Wilcke
97d22be318 Merge pull request #1441 from obscuren/logs-return-fix
miner, xeth: fire log event during mining. Fix return raw tx
2015-07-09 07:24:35 -07:00
Jeffrey Wilcke
4c62ce831b Merge pull request #1451 from karalabe/handle-potential-TD-forge-attack
eth/downloader: drop peer if advertised TD but won't delvier
2015-07-09 07:23:50 -07:00
Jeffrey Wilcke
b041aed660 Merge pull request #1450 from karalabe/fix-propagation-td
eth: calculate the correct TD, only update if better
2015-07-09 07:23:16 -07:00
Jeffrey Wilcke
cd6d703e94 Merge pull request #1447 from karalabe/fix-database-metrics-race-3
eth, ethdb: fix a data race during startup/shutdown
2015-07-09 07:22:54 -07:00
Jeffrey Wilcke
dd140beb73 Merge pull request #1443 from Gustav-Simonsson/core_uint64_ts
Core uint64 ts
2015-07-09 07:22:38 -07:00
Jeffrey Wilcke
06afabb631 Merge pull request #1436 from bas-vk/net_version
added net.version
2015-07-09 07:22:20 -07:00
Jeffrey Wilcke
505b77a0d5 Merge pull request #1432 from tgerring/develop
Adjust .mailmap
2015-07-09 07:21:41 -07:00
zelig
c3f5403b64 fix wallet key duplicate write - how did it get there? mystery. fixes #1411 2015-07-09 14:07:35 +01:00
zelig
589f1c85b9 : colon => dash - in keyfile name - slight deviation from ISO8601 for WIN FS compatibility 2015-07-09 13:55:09 +01:00
Péter Szilágyi
492d5454b1 eth/downloader: drop peer if advertised TD but won't delvier 2015-07-09 14:40:18 +03:00
Péter Szilágyi
4f95e2f9ec eth: calculate the correct TD, only update if better 2015-07-09 13:55:06 +03:00
Péter Szilágyi
eb2d168710 eth, ethdb: fix a data race during startup/shutdown 2015-07-09 12:44:07 +03:00
Jeffrey Wilcke
d25634662b web3: updated 2015-07-08 15:47:33 +02:00
Jeffrey Wilcke
819ecd4508 miner, xeth: fire log event during mining. Fix return raw tx 2015-07-08 15:34:11 +02:00
Gustav Simonsson
5d6d40f329 Use uint64 on ts in chain_manager, block_processor 2015-07-08 13:21:06 +02:00
Gustav Simonsson
b08abe64e4 Unskip SimpleTx3, check err in pre/post state validations 2015-07-08 13:09:22 +02:00
Gustav Simonsson
0b53a5c673 Update Ethereum JSON test files and wrappers 2015-07-08 13:08:42 +02:00
Bas van Kervel
e84f3ec1d4 added net.version 2015-07-08 08:03:20 +02:00
Taylor Gerring
b1af5af30e Adjust .mailmap 2015-07-07 11:50:49 -05:00
Jeffrey Wilcke
423c2f499c Merge branch 'release/0.9.36' 2015-07-07 15:33:55 +02:00
Jeffrey Wilcke
a2333bcbb4 Merge pull request #1430 from obscuren/web3-0.8.0
web3 update
2015-07-07 06:33:38 -07:00
Jeffrey Wilcke
c6578d2336 Merge branch 'release/0.9.36' 2015-07-07 15:32:04 +02:00
Jeffrey Wilcke
c5972b4ac7 web3 update 2015-07-07 15:21:24 +02:00
Jeffrey Wilcke
0c9c5439d4 Merge branch 'release/0.9.36' into develop 2015-07-07 15:13:11 +02:00
Jeffrey Wilcke
193c62fdba Merge branch 'release/0.9.36' 2015-07-07 15:12:56 +02:00
Jeffrey Wilcke
d673c34c8d Merge branch 'release/0.9.36' of github.com-obscure:ethereum/go-ethereum into release/0.9.36 2015-07-07 14:55:39 +02:00
Jeffrey Wilcke
df54510e3e common/natspec: fixed test 2015-07-07 14:55:27 +02:00
Jeffrey Wilcke
ee04b71887 cmd/geth, cmd/utils: changed ParamsToAddress to return error
ParamsToAddress no longer aborts the process, it now returns an error
instead so that the caller can handle the error properly.
2015-07-07 14:55:27 +02:00
Jeffrey Wilcke
4b5c99d97f cmd/geth: version number 0.9.36 2015-07-07 14:55:27 +02:00
Jeffrey Wilcke
9e7d5d9d3b Merge pull request #1426 from fjl/license
all: update license information and godoc comments
2015-07-07 05:55:06 -07:00
Felix Lange
b2d18393c4 README.md: update copyright 2015-07-07 14:12:45 +02:00
Felix Lange
335d7f4855 LICENSE, cmd/LICENSE: the go-ethereum authors have copyright 2015-07-07 14:12:45 +02:00
Felix Lange
4fb28e0dab all: goimports -w 2015-07-07 14:12:45 +02:00
Felix Lange
bdae4fd573 all: add some godoc synopsis comments 2015-07-07 14:12:45 +02:00
Felix Lange
e813626ee1 all: remove @author comments 2015-07-07 14:12:44 +02:00
Felix Lange
7bb77c02da build: change license regexp for // comments 2015-07-07 14:12:44 +02:00
Felix Lange
ea54283b30 all: update license information 2015-07-07 14:12:44 +02:00
Felix Lange
46fbd34c70 .mailmap: update 2015-07-07 14:01:33 +02:00
Felix Lange
3ff5cfd028 build: new update-license.go
This version is less clever. All names are listed in a single file,
AUTHORS. All source files have the same header. This is an improvement
over the previous version, which attempted to list copyright holders in
each source file.
2015-07-07 14:01:33 +02:00
Jeffrey Wilcke
922f881c3d common/natspec: fixed test 2015-07-07 13:01:39 +02:00
Jeffrey Wilcke
bfcac89881 cmd/geth, cmd/utils: changed ParamsToAddress to return error
ParamsToAddress no longer aborts the process, it now returns an error
instead so that the caller can handle the error properly.
2015-07-07 12:53:36 +02:00
Jeffrey Wilcke
db06906c4f cmd/geth: version number 0.9.36 2015-07-07 12:21:36 +02:00
Jeffrey Wilcke
3016f23864 cmd/geth: fixed test 2015-07-07 12:18:05 +02:00
Jeffrey Wilcke
e5fba8fd70 Merge pull request #1428 from obscuren/coinbase-fixes
cmd,eth,rpc,tests: default coinbase
2015-07-07 02:55:33 -07:00
Jeffrey Wilcke
916d155467 Merge pull request #1429 from obscuren/rebase-registrar
Rebase registrar
2015-07-07 02:55:23 -07:00
zelig
c5cb6e8e70 fix/skip tests, adapt registrar to no contract address
registry initialisers now return the txhash which caller can use to retrieve receipt
2015-07-07 11:30:55 +02:00
Bas van Kervel
3791831081 rebase with zelig/frontier/registrar 2015-07-07 11:30:45 +02:00
Bas van Kervel
7e6c1f8024 corrected input formatters as suggested during review 2015-07-07 11:30:23 +02:00
Bas van Kervel
ceb0739ba1 fixed web3 formatters mismatch 2015-07-07 11:30:11 +02:00
Jeffrey Wilcke
37c1a8f69d eth,miner,rpc: set coinbase 2015-07-07 10:58:47 +02:00
Bas van Kervel
6ea28f93b9 output BigNumbers objects in console as strings 2015-07-07 10:43:49 +02:00
zelig
1208ac83d5 fix natspec test
* registar url string retrieval chop leading zeros now
* rewrite test using test mining
* remove temporary applyTxs from xeth
2015-07-07 10:43:49 +02:00
zelig
aa22cf323e fix js arguments and TestContract passes 2015-07-07 10:43:49 +02:00
zelig
492e5049d7 rename js methods in js_test for new console API
+ rebase fixes
2015-07-07 10:43:49 +02:00
zelig
042c3290b3 fix GPO missing flags 2015-07-07 10:43:49 +02:00
zelig
518dc87db3 fix sleepBlocks, implement sleep 2015-07-07 10:43:49 +02:00
zelig
6391ec0c8f add missing method to api/admin 2015-07-07 10:43:31 +02:00
zelig
2739233719 Registrar and contractInfo handling
* resolver -> common/registrar
  * global registrar name registry interface
  * add Call to resolver backend interface
  * the hashReg and UrlHing contracts now initialised from global registry
  * initialization of contracts uniform
  * improve errors and more econsistent method names
* common/registrar/ethreg: versioned registrar
* integrate new naming and registrar in natspec
* js console api: setGlobalRegistrar, setHashReg, setUrlHint
* js test TestContract uses mining - tests fixed all pass
* eth/backend: allow PoW test mode (small ethash DAG)
* console jsre refers to resolver.abi/addr,
* cmd/geth/contracts.go moved to common/registrar
2015-07-07 10:43:31 +02:00
zelig
83ee39448e Registrar and contractInfo handling
* resolver -> common/registrar
  * global registrar name registry interface
  * add Call to resolver backend interface
  * the hashReg and UrlHing contracts now initialised from global registry
  * initialization of contracts uniform
  * improve errors and more econsistent method names
* common/registrar/ethreg: versioned registrar
* integrate new naming and registrar in natspec
* js console api: setGlobalRegistrar, setHashReg, setUrlHint
* js test TestContract uses mining - tests fixed all pass
* eth/backend: allow PoW test mode (small ethash DAG)
* console jsre refers to resolver.abi/addr,
* cmd/geth/contracts.go moved to common/registrar
2015-07-07 10:43:31 +02:00
Jeffrey Wilcke
35cd355c14 cmd,eth,rpc,tests: default coinbase 2015-07-07 10:32:05 +02:00
Jeffrey Wilcke
d764bd0584 Merge pull request #1423 from obscuren/gasused-receipt-fix
core, eth, rpc: proper gas used. Closes #1422
2015-07-06 12:41:55 -07:00
Jeffrey Wilcke
666a7dda36 core, eth, rpc: proper gas used. Closes #1417
Added some additional backward compatibility code for old receipts
2015-07-06 21:18:24 +02:00
Jeffrey Wilcke
45618d5f6b Merge pull request #1418 from fjl/one-interrupt
cmd/utils: fix interrupt handling to actually see subsequent interrupts
2015-07-06 11:05:54 -07:00
Felix Lange
d4c2e9de32 cmd/utils: fix interrupt handling to actually see subsequent interrupts 2015-07-06 16:48:34 +02:00
Jeffrey Wilcke
6220707e03 Merge pull request #1414 from Gustav-Simonsson/update_tests
Add TestBcGasPricer, comments and unskip tests
2015-07-06 06:39:19 -07:00
Jeffrey Wilcke
4c30f0f9ac Merge pull request #1416 from fjl/one-interrupt
cmd/geth, cmd/utils: improve interrupt handling
2015-07-06 06:32:24 -07:00
Felix Lange
5615fc4714 cmd/geth, cmd/utils: improve interrupt handling
The new strategy for interrupts is to handle them explicitly.
Ethereum.Stop is now only called once, even if multiple interrupts
are sent. Interrupting ten times in a row forces a panic.

Fixes #869
Fixes #1359
2015-07-06 15:06:11 +02:00
Jeffrey Wilcke
fa7b3b7276 Merge pull request #1415 from obscuren/web3-update
web3: updated
2015-07-06 05:01:39 -07:00
Jeffrey Wilcke
b0aec6402a web3: updated 2015-07-06 14:01:03 +02:00
Jeffrey Wilcke
cc29b4bc27 Merge pull request #1413 from obscuren/receipt-fix
rpc, xeth: fixed returned tx hash & receipt logs
2015-07-06 05:00:17 -07:00
Gustav Simonsson
b7e8d954ef Add TestBcGasPricer, comments and unskip tests 2015-07-06 13:56:56 +02:00
Jeffrey Wilcke
4f7fc7b23f rpc, xeth: fixed returned tx hash & receipt logs 2015-07-06 13:43:02 +02:00
Jeffrey Wilcke
457a3c8f76 Merge pull request #1410 from obscuren/newerrors-fix
core, miner: adopted new style errors
2015-07-06 04:00:37 -07:00
Jeffrey Wilcke
e6bb9c1cad core, miner: removed vm errors from consensus err checking
Removed VM errors from the consensus errors. They now used for output
only.
2015-07-06 12:43:05 +02:00
Jeffrey Wilcke
aa4502060b Merge pull request #1400 from obscuren/badblock-reporting
core, miner, tests: added test, implemented bad block reporting
2015-07-06 02:03:50 -07:00
Jeffrey Wilcke
b533aaa765 Merge pull request #1409 from fjl/fix-tx-hash
core/types, xeth: separate tx hash and tx signature hash
2015-07-06 01:59:41 -07:00
Jeffrey Wilcke
35add89c87 Merge pull request #1397 from tgerring/rpcreceipt
getTransactionReceipt RPC support
2015-07-06 01:53:21 -07:00
Jeffrey Wilcke
46e7c8512e Merge pull request #1395 from Gustav-Simonsson/fix_core_errors_in_apply_txs
Fix core errors in apply txs
2015-07-06 01:51:14 -07:00
Felix Lange
ec9620fb2f core/types, xeth: separate tx hash and tx signature hash 2015-07-06 10:45:45 +02:00
Taylor Gerring
6c7f5e3d0e Add autocomplete support for console 2015-07-05 15:42:04 -05:00
Taylor Gerring
dd521ece3f Always return transaction hash 2015-07-05 12:25:44 -05:00
Jeffrey Wilcke
bcc1660abc core, miner, tests: added test, implemented bad block reporting 2015-07-05 15:14:31 +02:00
Taylor Gerring
62559ac330 Cleanup 2015-07-04 12:14:06 -05:00
Taylor Gerring
30afd37604 Compose additional fields 2015-07-04 12:03:37 -05:00
Taylor Gerring
cd4cc309ae Remove redundant function 2015-07-04 11:28:30 -05:00
Taylor Gerring
3be9046c21 Rename local variable for clarity 2015-07-04 10:24:52 -05:00
Jeffrey Wilcke
9c3db1be1d Merge pull request #1369 from obscuren/statedb-update-cleanup
core, core/state: throw out intermediate state
2015-07-04 03:42:13 -07:00
Jeffrey Wilcke
9bb575be7d Merge pull request #1283 from ethersphere/frontier/accounts
Account management improvements
2015-07-04 03:40:23 -07:00
Gustav Simonsson
0f04af5916 Fix core error forwarding, unify OOG VM err 2015-07-04 09:27:42 +02:00
Taylor Gerring
481b221279 Decode full receipt storage 2015-07-04 00:00:23 -05:00
Taylor Gerring
80eb8f46b7 Fix hex conversion 2015-07-03 23:46:59 -05:00
Taylor Gerring
3a983d2419 Initial getTransactionReceipt support 2015-07-03 23:03:11 -05:00
Jeffrey Wilcke
47460b3b4a trie: removed shallow copies (thanks to @fjl) 2015-07-04 02:51:37 +02:00
Jeffrey Wilcke
0a1ff68c11 trie: dirty tracking 2015-07-04 02:51:36 +02:00
Jeffrey Wilcke
ab16ce70fc core, miner, tests: renamed state methods
* Update => SyncIntermediate
* Added SyncObjects

SyncIntermediate only updates whatever has changed, but, as a side
effect, requires much more disk space.

SyncObjects will only sync whatever is required for a block and will not
save intermediate state to disk. As drawback this requires more time
when more txs come in.
2015-07-04 02:51:36 +02:00
Jeffrey Wilcke
08caeedd84 core, core/state: only write necessary state. Skip intermediate 2015-07-04 02:51:36 +02:00
Jeffrey Wilcke
6f69b4d61f Merge pull request #1399 from obscuren/receipts-storing-fix
core, eth, miner, xeth: receipt storage fix
2015-07-03 17:50:46 -07:00
Jeffrey Wilcke
2feb23c1da core, eth, miner, xeth: receipt storage fix
* Added GetReceiptsFromBlock, GetReceipt, PutReceipts
* Added ContractAddress to receipt. See #1042
2015-07-04 02:32:10 +02:00
Jeffrey Wilcke
efd7da0ce8 Merge pull request #1385 from Gustav-Simonsson/update_tests
Update Ethereum JSON test files, skip failing tests
2015-07-03 09:20:21 -07:00
Jeffrey Wilcke
acd85fe95f Merge pull request #1393 from bas-vk/issue1377
Upgrade web3 to version 0.7.1
2015-07-03 08:27:04 -07:00
Jeffrey Wilcke
4dfcd6012b Merge pull request #1392 from bas-vk/ipcpipelining
Several bugfixes to IPC channel
2015-07-03 08:26:57 -07:00
Jeffrey Wilcke
546c0f631c Merge pull request #1394 from obscuren/develop
miner: ignore future errors
2015-07-03 08:22:30 -07:00
Jeffrey Wilcke
0e33fbdcb9 miner: ignore future errors 2015-07-03 17:21:23 +02:00
Bas van Kervel
8150c0a726 upgrade web3 to version 0.7.1 2015-07-03 17:08:41 +02:00
Bas van Kervel
e8c1399bbf fixed unittest after new implementation 2015-07-03 16:57:40 +02:00
Jeffrey Wilcke
1cbab291a9 Merge pull request #1389 from obscuren/txpool-issues
core, miner: miner header validation, transaction & receipt writing
2015-07-03 07:50:30 -07:00
Jeffrey Wilcke
8181929c9a Merge pull request #1391 from tgerring/consolefalse
Prevent false from printing on console
2015-07-03 07:46:49 -07:00
Bas van Kervel
d9efaf754c simplified implementation and improved performance 2015-07-03 15:44:35 +02:00
Taylor Gerring
6afdc52483 Prevent debug value from printing on console 2015-07-03 07:40:47 -05:00
Jeffrey Wilcke
29e2fb38f8 core, miner: miner header validation, transaction & receipt writing
* Miners do now verify their own header, not their state.
* Changed old putTx and putReceipts to be exported
* Moved writing of transactions and receipts out of the block processer
  in to the chain manager. Closes #1386
* Miner post ChainHeadEvent & ChainEvent. Closes #1388
2015-07-03 13:56:50 +02:00
Jeffrey Wilcke
03129e7c93 Merge pull request #1390 from karalabe/fix-downloader-test-race
eth/downloader: fix a rare test race on the OSX CI
2015-07-03 04:22:14 -07:00
Bas van Kervel
f0e94b4d71 display rpc error in console 2015-07-03 12:22:20 +02:00
Péter Szilágyi
f857fb7600 eth/downloader: fix a rare test race on the OSX CI 2015-07-03 13:01:22 +03:00
Gustav Simonsson
ff97059a99 Update Ethereum JSON tests, skip failing 2015-07-03 09:40:07 +02:00
zelig
1959346793 account update: migrate or change password
* account.Update
* KeyStore.Cleanup
* fix dir rm for old format deleteKey
2015-07-03 07:52:37 +01:00
zelig
fc17a527bc fix account ordering
* chronological order of creation
* new naming scheme keystore/UTC--<created_at UTC ISO8601>-<address hex>
* KeyStore2 -> KeyStore
* backward compatibility
* refactor keyStore methods
2015-07-03 03:19:32 +01:00
zelig
a4df9d74ea accounts order by keyfile ctime 2015-07-02 23:29:07 +01:00
zelig
eb82ca4563 rpc/js coinbase returns null if no etherbase set 2015-07-02 23:28:12 +01:00
zelig
09b6983175 no primary when listing accounts 2015-07-02 23:28:12 +01:00
zelig
65a26e40a8 require explicit etherbase address for mining. Falling back to primary is risky given it is inconsistent if keys are imported/merged/created or copied/transfered 2015-07-02 23:28:12 +01:00
zelig
fc2e33c594 unlock multiple passes and obsolete primary
* multiple passwords allowed in password file
* split on "\n", sideeffect: chop trailing slashes. fixes common mistake <(echo 'pass')
* remove accounts.Primary method
* do not fall back to primary account for mining
2015-07-02 23:28:11 +01:00
zelig
1d72aaa0cd simplify account unlocking 2015-07-02 23:28:11 +01:00
Bas van Kervel
cf66826223 merge conflict 2015-07-02 17:33:21 +02:00
Bas van Kervel
56ed408436 ipcpath issue fix 2015-07-02 17:25:11 +02:00
Bas van Kervel
6be527dd52 prevent discarding requests when parsing fails 2015-07-02 17:25:11 +02:00
Bas van Kervel
effe9cc2cf added pipelining support 2015-07-02 17:25:11 +02:00
Bas van Kervel
89525fcb4e ipcpath issue fix 2015-07-02 17:20:58 +02:00
Bas van Kervel
c2590af7fd prevent discarding requests when parsing fails 2015-07-02 15:26:55 +02:00
Vitalik Buterin
9f6016e877 Merge branch 'develop' of github.com:ethereum/go-ethereum into develop 2015-07-02 05:27:31 -04:00
Jeffrey Wilcke
75f41dedca Merge pull request #1378 from obscuren/issue1367
core, xeth: core.AddressFromMessage removed => crypto.CreateAddress
2015-07-02 02:27:20 -07:00
Vitalik Buterin
744af9f497 Switched canary addresses 2015-07-02 05:27:19 -04:00
Jeffrey Wilcke
529fb7a7d7 core, xeth: core.AddressFromMessage removed => crypto.CreateAddress 2015-07-02 11:19:10 +02:00
Jeffrey Wilcke
5caff3bc24 Merge pull request #1351 from karalabe/eth61
Implement eth/61
2015-07-01 08:16:44 -07:00
Jeffrey Wilcke
507869bff1 Merge pull request #1373 from obscuren/recovery-tools
core, cmd/geth: improved recover functionality
2015-07-01 08:09:33 -07:00
Jeffrey Wilcke
70d5d791cc core, cmd/geth: improved recover functionality
`geth recover` now accepts both hashes and numbers using "#" and no
longer requires the ethereum instance.
2015-07-01 16:34:35 +02:00
Péter Szilágyi
d6f2c0a76f eth, eth/downloader: fix #1231, DOS vulnerability in hash queueing 2015-07-01 15:21:35 +03:00
Jeffrey Wilcke
bb418a43c1 Merge pull request #1370 from obscuren/force-checkpoint
core, cmd/geth: recover by number
2015-07-01 03:57:13 -07:00
Jeffrey Wilcke
2e5242f9bb Merge pull request #1355 from Gustav-Simonsson/block_header_ts_uint64
Use uint64 for block header timestamp
2015-07-01 03:57:02 -07:00
Péter Szilágyi
1ae80aaf64 eth: fix #1371, double lock during block/txn known set limitation 2015-07-01 11:12:05 +03:00
Bas van Kervel
41de1cb723 added pipelining support 2015-07-01 08:23:17 +02:00
Jeffrey Wilcke
29ab1fa8a5 core, cmd/geth: recover by number 2015-07-01 00:52:44 +02:00
Péter Szilágyi
60454da650 eth/downloader: reduce hash fetches in prep for eth/61 2015-07-01 01:20:49 +03:00
Jeffrey Wilcke
cb2c10d862 Merge pull request #1366 from ethers/rpcRequest
fix logging jsonrpc request #1365
2015-06-30 12:17:59 -07:00
ethers
d05305473e fix logging jsonrpc request #1365 2015-06-30 12:14:16 -07:00
Jeffrey Wilcke
be935bff84 Merge pull request #1363 from obscuren/safeguard
core: added checkpoint for last block
2015-06-30 09:25:10 -07:00
Péter Szilágyi
f43c07cb3c eth, eth/downloader: transition to eth 61 2015-06-30 19:05:06 +03:00
Péter Szilágyi
af51dc4d63 eth, eth/downloader: pass the eth protocol version through 2015-06-30 19:00:01 +03:00
Péter Szilágyi
aac2b6ae4c eth: add the blocks from numbers protocol message 2015-06-30 19:00:01 +03:00
Péter Szilágyi
5db8f447d5 eth: fix #1319, put an upper limit on the known txns and blocks 2015-06-30 19:00:01 +03:00
Péter Szilágyi
6fc85f1ec2 eth: clean up peer struct a bit, fix double txn bcast 2015-06-30 19:00:01 +03:00
Péter Szilágyi
2c8ed76e01 eth: start cleaning up old protocol implementation, add metrics 2015-06-30 19:00:00 +03:00
Péter Szilágyi
393d675690 cmd/geth, cmd/utils, eth: advertise both eth/60 and eth/61 2015-06-30 19:00:00 +03:00
Jeffrey Wilcke
a748afce03 core: txpool listen for ChainHeadEvent instead of ChainEvent
Changed the transaction pool to listen for ChainHeadEvent when resetting
the state instead of ChainEvent. It makes very little sense to burst
through transactions while we are catching up (e.g., have more than one
block to process)
2015-06-30 17:27:47 +02:00
Jeffrey Wilcke
c14f0a4471 core: added checkpoint for last block
* Add a checkpoint every X blocks
* Removed queued write
2015-06-30 17:27:47 +02:00
Jeffrey Wilcke
ba95e445e1 Merge pull request #1328 from bas-vk/issue1327
Add pendingTransactions and resend
2015-06-30 08:27:03 -07:00
Bas van Kervel
8c4d493c66 solved merge conflicts 2015-06-30 15:32:02 +02:00
Bas van Kervel
a5d5387dee rebase with develop 2015-06-30 15:27:27 +02:00
Jeffrey Wilcke
130f3b270a Merge pull request #1362 from obscuren/txpool-cleanup
core: reduce CPU load by reducing calls to checkQueue
2015-06-30 05:18:51 -07:00
Jeffrey Wilcke
61ca780f3b core: reduce CPU load by reducing calls to checkQueue
* Reduced maxQueue count
* Added proper deletion past maxQueue limit
* Added cheap stats method to txpool

queueCheck was called for **every** transaction instead of:
1. add all txs
2. check queue

previously

1. add txs[i]
2. check queue
3. if i < len(txs) goto 1.
2015-06-30 14:01:12 +02:00
Bas van Kervel
57dff6f1d7 initialize fields to prevent nil pointer exception 2015-06-30 11:20:31 +02:00
Bas van Kervel
7ffabf1d39 add json parsing method for resend transaction 2015-06-30 11:20:31 +02:00
Bas van Kervel
6fdddc5ac9 improved error handling in parsing request 2015-06-30 11:20:31 +02:00
Bas van Kervel
02c6af66bf fixed unittest compilation issue 2015-06-30 11:20:31 +02:00
Bas van Kervel
ec866b066a added eth.resend 2015-06-30 11:20:31 +02:00
Bas van Kervel
056e9dd393 added eth.pendingTransactions 2015-06-30 11:20:31 +02:00
Jeffrey Wilcke
9226369b5d Merge branch 'hotfix/0.9.34-1' into develop 2015-06-30 11:15:08 +02:00
Jeffrey Wilcke
a2ce7b9950 Merge branch 'hotfix/0.9.34-1' 2015-06-30 11:14:59 +02:00
Jeffrey Wilcke
d8fe64acaa core, miner: added queued write to WriteBlock
This fixes an issue with the lru cache not being available when calling
WriteBlock. WriteBlock previously always assumed to be called from the
InsertChain where the lru cache was always created prior to calling
WriteBlock. When being called from the worker this could lead in to a
nil pointer exception being thrown and causing database corruption.
2015-06-30 11:14:43 +02:00
Gustav Simonsson
4c490db6af Use uint64 for block header timestamp 2015-06-30 10:52:11 +02:00
Jeffrey Wilcke
b047f05e7e cmd/geth: version bump 0.9.35 2015-06-30 02:30:26 +02:00
Jeffrey Wilcke
8d016ced6b Merge branch 'release/0.9.34' into develop 2015-06-30 02:22:40 +02:00
Jeffrey Wilcke
7625b07dd9 Merge branch 'release/0.9.34' 2015-06-30 02:22:19 +02:00
Jeffrey Wilcke
8f504063f4 cmd/geth: version bump 0.9.34 2015-06-30 02:11:54 +02:00
Jeffrey Wilcke
e896cab82c Merge pull request #1360 from obscuren/peter-metrics
Rebased peter's PR
2015-06-29 16:58:49 -07:00
Péter Szilágyi
5f3792c2a7 cmd/geth: decent error message if metrics are disabled 2015-06-30 00:57:55 +02:00
Péter Szilágyi
01fe972113 cmd, core, eth, metrics, p2p: require enabling metrics 2015-06-30 00:51:46 +02:00
Péter Szilágyi
ccbb56b4f2 cmd/geth, eth, ethdb: monitor database compactions 2015-06-30 00:51:29 +02:00
Péter Szilágyi
2aeeb72fa5 cmd/geth, metrics: separate process metric collection, add disk 2015-06-30 00:51:02 +02:00
Jeffrey Wilcke
7c4ed8055c Merge pull request #1357 from obscuren/core-optimisations-2
core: optimisations
2015-06-29 15:44:23 -07:00
Jeffrey Wilcke
992e4f83cb core: replaced BlockCache with lru.Cache 2015-06-30 00:36:25 +02:00
Jeffrey Wilcke
a8ebf756c7 Merge branch 'miner-broadcast' into core-optimisations-2
Conflicts:
	core/chain_manager.go
	miner/worker.go
2015-06-29 18:55:49 +02:00
zsfelfoldi
5d9df7348d gpo non-existent block checks 2015-06-29 18:53:04 +02:00
Jeffrey Wilcke
ac80ec59dc miner: update root only when mining 2015-06-29 18:51:49 +02:00
Jeffrey Wilcke
e349fac97d core: fixed tests 2015-06-29 18:51:49 +02:00
Jeffrey Wilcke
aba901e13c core: removed write's go routine 2015-06-29 18:51:49 +02:00
obscuren
07db098ccf core: renamed next to pending & fixed tests 2015-06-29 18:51:49 +02:00
obscuren
855e76fddd core: reduced cache limit to 256 2015-06-29 18:51:49 +02:00
obscuren
4d11747836 deps: Added golang-lru 2015-06-29 18:51:49 +02:00
obscuren
6ca3a44638 core: switched to proper LRU 2015-06-29 18:51:49 +02:00
obscuren
4460dc9d1a core: added LRU caching and added batch writing when LDB is used 2015-06-29 18:51:49 +02:00
obscuren
2a5a55efaf ethdb: accessor for LDB. TODO remove this interface 2015-06-29 18:51:48 +02:00
obscuren
c850c41ec1 trie: Implemented a batch write approach for flushing 2015-06-29 18:51:48 +02:00
Felix Lange
76821d167a core, eth, rpc: avoid unnecessary block header copying 2015-06-29 18:51:48 +02:00
Felix Lange
fccc7d71eb core: remove superfluous big.Int allocations
With blocks now being immutable, use big.Int values from
accessor functions instead of copying their results.
2015-06-29 18:51:48 +02:00
Felix Lange
d0bb90c69e core: generate benchmark keys only once 2015-06-29 18:51:48 +02:00
Felix Lange
992dc74efd core: avoid duplicate calls to Transaction.Data 2015-06-29 18:51:48 +02:00
Felix Lange
0b22ad99c1 core: optimize IntrinsicGas 2015-06-29 18:51:48 +02:00
Felix Lange
a8889b092b core/types: cache computed block values 2015-06-29 18:51:48 +02:00
Felix Lange
11b8d1df59 core/types: cache computed transaction values 2015-06-29 18:51:48 +02:00
Felix Lange
8743cc1c1c rlp: add ListSize 2015-06-29 18:51:48 +02:00
Felix Lange
a0566c1058 rlp: remove Flat 2015-06-29 18:51:47 +02:00
Felix Lange
3d0c6a8345 rlp: pool encoder allocations 2015-06-29 18:51:47 +02:00
Felix Lange
c3d6228023 core: add InsertChain benchmarks 2015-06-29 18:51:47 +02:00
Felix Lange
7098ec691c rpc: unmask pending block fields
This pleases the RPC tests.
2015-06-29 18:51:47 +02:00
Felix Lange
e0e5f74776 eth/downloader, eth/fetcher: use core.GenerateChain in tests
TestMadeupParentBlockChainAttack has been deleted because it was too
hard to port and the attack that it checks the prevention of is being
averted in a different way (through a protocol change).
2015-06-29 18:51:47 +02:00
Felix Lange
ceaf1c080b core: add GenerateChain, GenesisBlockForTesting 2015-06-29 18:51:47 +02:00
Felix Lange
1d42888d30 core/types: make blocks immutable 2015-06-29 18:51:47 +02:00
Felix Lange
654564e164 core/types: make transactions immutable 2015-06-29 18:51:47 +02:00
Jeffrey Wilcke
9d8b512b27 Merge pull request #1356 from Gustav-Simonsson/debug_develop
Debug develop
2015-06-29 09:33:19 -07:00
Jeffrey Wilcke
b39042db56 core, miner: implemented canary 2015-06-29 13:31:49 +02:00
Jeffrey Wilcke
d1e93db3eb core, miner: added write block method & changed mining propagation 2015-06-29 13:31:49 +02:00
Jeffrey Wilcke
059a1e9e4e miner: broadcast block before insertion/validation 2015-06-29 13:31:49 +02:00
Jeffrey Wilcke
5e7db8f5cd Merge pull request #1353 from karalabe/fix-double-fetch
eth/fetcher: don't double filter/fetch the same block
2015-06-29 04:31:13 -07:00
Péter Szilágyi
a7d22658ad eth/fetcher: don't drop on future blocks, just not propagate 2015-06-29 14:20:13 +03:00
Péter Szilágyi
29d53b2073 eth/fetcher: don't double filter/fetch the same block 2015-06-29 13:49:04 +03:00
Bas van Kervel
61ccc39b56 initialize fields to prevent nil pointer exception 2015-06-29 12:42:47 +02:00
Bas van Kervel
f9264e87ec add json parsing method for resend transaction 2015-06-29 12:32:01 +02:00
Bas van Kervel
a355777ff8 improved error handling in parsing request 2015-06-29 11:13:28 +02:00
Felix Lange
a0191910fc Merge pull request #1341 from karalabe/proto-version-negotiation
p2p: support protocol version negotiation
2015-06-28 13:52:37 +02:00
Jeffrey Wilcke
b9ebdffd83 Merge pull request #1335 from tgerring/mistcleanup
Travis and README cleanup
2015-06-27 02:17:35 -07:00
Jeffrey Wilcke
1169ec7681 Merge pull request #1344 from karalabe/monitor-fixes
Monitor fixes
2015-06-27 02:16:12 -07:00
Péter Szilágyi
d099a42c85 cmd/geth: fix monitor panic, don't pre-fill with dummy data 2015-06-26 22:05:49 +03:00
Péter Szilágyi
7e69392249 cmd/geth: re-scale charts when changing unit magnitudes 2015-06-26 21:48:21 +03:00
Péter Szilágyi
216fc267fa p2p: fix local/remote cap/protocol mixup 2015-06-26 20:45:13 +03:00
Péter Szilágyi
d84638bd31 p2p: support protocol version negotiation 2015-06-26 15:48:50 +03:00
Jeffrey Wilcke
b0a5be4495 Merge pull request #1321 from karalabe/cut-it-open-3000
Metrics collecting and reporting support
2015-06-25 08:18:42 -07:00
Jeffrey Wilcke
e64625aa82 Merge pull request #1332 from bas-vk/ipcbatch
IPC interface improvements
2015-06-25 08:06:19 -07:00
Taylor Gerring
c6dbe9dc07 Travis and README cleanup 2015-06-25 16:46:54 +02:00
Bas van Kervel
662285074e improved logging for IPC connection lifetime management 2015-06-25 15:54:16 +02:00
Péter Szilágyi
e9c0b5431c cmd/geth: finalize mem stats 2015-06-25 16:19:42 +03:00
Péter Szilágyi
fdbf8be735 cmd/geth, rpc/api: fix reported metrics issues 2015-06-25 15:33:26 +03:00
Bas van Kervel
5757a0edb5 added IPC timeout support 2015-06-25 14:32:22 +02:00
unknown
04910c902a support for large request/response on windows 2015-06-25 04:53:41 -07:00
Bas van Kervel
ffbe5656ff support for large requests/responses 2015-06-25 13:18:10 +02:00
Péter Szilágyi
c0343c8f17 cmd/geth: add memory stat collection too 2015-06-25 13:47:06 +03:00
Bas van Kervel
6d92fdc0df added support for batch requests 2015-06-25 12:01:28 +02:00
Jeffrey Wilcke
6b2a03faa2 Merge pull request #1085 from Gustav-Simonsson/key_store_v3
crypto: key store v3
2015-06-25 02:16:54 -07:00
Péter Szilágyi
c6e2af14c0 cmd/geth: limit the maximum chart colums to 6 2015-06-25 12:12:11 +03:00
Jeffrey Wilcke
8774fdcd64 Merge pull request #1329 from Gustav-Simonsson/ethash_input_validations
Update Ethash Godeps
2015-06-25 02:06:06 -07:00
Péter Szilágyi
3ea6b5ae32 cmd/geth: list the available metrics if none specified 2015-06-25 11:42:45 +03:00
Péter Szilágyi
d02f07a983 cmd/geth: polish monitor visuals, add footer, refresh flag 2015-06-25 11:32:21 +03:00
Péter Szilágyi
b98b444179 cmd/geth: add attach and rows flags to the monitor command 2015-06-25 10:36:47 +03:00
Péter Szilágyi
1ce40d7581 Godeps: remove mist remnants, add termui deps 2015-06-24 18:40:18 +03:00
Péter Szilágyi
92ef33d97a rpc/api, cmd/geth: retrievel all percentiles, add time units 2015-06-24 18:34:05 +03:00
Péter Szilágyi
302187ae39 cmd/geth: allow branching metric patterns 2015-06-24 18:34:05 +03:00
Péter Szilágyi
bf99d5b33c cmd/geth: polish the monitoring charts a bit 2015-06-24 18:34:05 +03:00
Péter Szilágyi
e5b820c47b cmd/geth, rpc/api: extend metrics API, add a basic monitor command 2015-06-24 18:34:05 +03:00
Péter Szilágyi
bde2ff0343 cmd/geth, rpc/api: move the metrics into the new console 2015-06-24 18:34:05 +03:00
Péter Szilágyi
803b3c4a82 eth, ethdb: measure database operation latencies too 2015-06-24 18:34:05 +03:00
Péter Szilágyi
0609fcf030 eth: make sure dbs are lvldb before instrumenting 2015-06-24 18:34:04 +03:00
Péter Szilágyi
792b0ddccd core, eth, eth/fetcher, ethdb: polish metrics gathering a bit 2015-06-24 18:34:04 +03:00
Péter Szilágyi
6260b86c15 eth/fetcher: fix failed merge 2015-06-24 18:34:04 +03:00
Péter Szilágyi
43e4a6501b core, ethdb: instrument the block and state db
Conflicts:
	ethdb/database.go
2015-06-24 18:34:04 +03:00
Péter Szilágyi
7bd71fa800 godeps: pull in go-metrics 2015-06-24 18:34:04 +03:00
Péter Szilágyi
7f92e708c5 cmd/geth, core: impl. percentile reporting, instrument insertions 2015-06-24 18:34:04 +03:00
Péter Szilágyi
b426301467 cmd/geth, eth/fetcher: polish metrics reporting, add some more 2015-06-24 18:34:04 +03:00
Péter Szilágyi
6994a3daaa p2p: instrument P2P networking layer 2015-06-24 18:33:33 +03:00
Péter Szilágyi
821e01b013 cmd/geth, eth/fetcher: initial metrics support
Conflicts:
	cmd/geth/admin.go
2015-06-24 18:33:33 +03:00
Bas van Kervel
ee73f09727 fixed unittest compilation issue 2015-06-24 16:07:44 +02:00
Bas van Kervel
dc58568a25 added eth.resend 2015-06-24 14:56:53 +02:00
Bas van Kervel
f1a4a6e563 added eth.pendingTransactions 2015-06-24 13:53:37 +02:00
Gustav Simonsson
8363aba7ac Update Ethash Godeps 2015-06-24 07:17:21 +02:00
Gustav Simonsson
d23ec6c419 Change keystore to version 3
* Change password protection crypto in keystore to version 3
* Update KeyStoreTests/basic_tests.json
* Add support for PBKDF2 with HMAC-SHA256
* Change MAC and encryption key to avoid unnecessary hashing
* Add tests for test vectors in new wiki page defining version 3
* Add tests for new keystore tests in ethereum/tests repo
* Move JSON loading util to common for use in both tests and
  crypto packages
* Add backwards compatibility with key store version 1
2015-06-24 06:03:23 +02:00
Jeffrey Wilcke
22c7ce0162 cmd/geth: version bump 0.9.33 2015-06-23 19:20:20 +02:00
Jeffrey Wilcke
983a33cf11 Merge branch 'release/0.9.32' into develop 2015-06-23 19:19:49 +02:00
Jeffrey Wilcke
72e2613a9f Merge branch 'release/0.9.32' 2015-06-23 19:19:33 +02:00
Jeffrey Wilcke
67e6f74e9a cmd/geth: bump 2015-06-23 19:11:20 +02:00
Jeffrey Wilcke
d21c2bfb68 Merge pull request #1314 from karalabe/handle-fetcher-attacks-2
eth/fetcher: handle and test various DOS attacks
2015-06-23 10:04:44 -07:00
Jeffrey Wilcke
6b5532ab0d Merge pull request #1279 from bas-vk/rpc-http
Integrate console and remove old rpc package structure
2015-06-23 07:44:03 -07:00
Jeffrey Wilcke
139439dcdc Merge pull request #1309 from fjl/p2p-fix-lookup-spin
p2p: throttle all discovery lookups
2015-06-23 05:36:58 -07:00
Bas van Kervel
2b3957f373 fixed relative path issue with javascript files 2015-06-23 09:38:30 +02:00
Bas van Kervel
55424a11af improved action description 2015-06-23 09:11:57 +02:00
Bas van Kervel
57c911c398 bugfix in startRPC error handling 2015-06-23 08:26:17 +02:00
Péter Szilágyi
3ce17d2862 eth/fetcher: fix a closure data race 2015-06-22 20:13:18 +03:00
Péter Szilágyi
99ca4b619b eth/fetcher: clean up test assertions 2015-06-22 18:28:38 +03:00
Péter Szilágyi
b53f701c27 eth/fetcher: remove test sleeps (15s -> 2.8s) 2015-06-22 18:08:28 +03:00
Péter Szilágyi
1989d1491a eth/fetcher: handle and (crude) test block memory DOS 2015-06-22 16:49:47 +03:00
Bas van Kervel
4ee7f6fc88 added missing change for sign test 2015-06-22 13:54:13 +02:00
Bas van Kervel
6d596b1ad1 fixed eth sign unittest 2015-06-22 13:19:59 +02:00
Péter Szilágyi
d36c25bcbc eth/fetcher: handle and test block announce DOS attacks 2015-06-22 14:07:08 +03:00
Bas van Kervel
2e0b56a72b added RPC start/stop support 2015-06-22 12:47:32 +02:00
Bas van Kervel
2737baa657 fixed unittests 2015-06-22 09:17:09 +02:00
Bas van Kervel
f87501b1c5 added batch support to console and attach actions 2015-06-22 09:17:09 +02:00
Bas van Kervel
3ff272b618 moved solidity test to new rpc structure 2015-06-22 09:17:09 +02:00
Bas van Kervel
29297d3b82 fixed bug where history file was create in cwd 2015-06-22 09:17:09 +02:00
Bas van Kervel
ce5c94e471 added attach over http/rpc support 2015-06-22 09:17:09 +02:00
Bas van Kervel
f202563777 added attach over ipc command 2015-06-22 09:17:09 +02:00
Bas van Kervel
36a6b16a3b removed console command 2015-06-22 09:17:09 +02:00
Bas van Kervel
603192cfa7 cleanup comments/code 2015-06-22 09:17:09 +02:00
Bas van Kervel
a4a4e9fcf8 removed old rpc structure and added new inproc api client 2015-06-22 09:17:09 +02:00
Bas van Kervel
3e1d635f8d fixed rpc test failure in eth.blockNumber 2015-06-22 08:54:21 +02:00
Bas van Kervel
9ac1b4e59e fixed rpc test failure in net_peerCount 2015-06-22 08:54:21 +02:00
Bas van Kervel
5fdf72b1ab fixed web3 rpc test failures 2015-06-22 08:54:21 +02:00
Bas van Kervel
c3f6c322c0 added DB api 2015-06-22 08:54:21 +02:00
Bas van Kervel
5c25403b13 refactored old rpc structure to new 2015-06-22 08:54:21 +02:00
Bas van Kervel
fd764d4ff7 added comms http 2015-06-22 08:54:21 +02:00
Bas van Kervel
60c2ccd99c made ipc handler generic and reusable 2015-06-22 08:54:21 +02:00
Jeffrey Wilcke
9cf7913c61 Merge pull request #1304 from obscuren/state-renames
core, miner, xeth: renamed gas methods
2015-06-21 16:49:47 -07:00
Jeffrey Wilcke
7633dfdc08 Merge pull request #1305 from obscuren/database-error-check
core, ethdb, trie: validate database errors
2015-06-21 16:49:14 -07:00
Felix Lange
6fb810adaa p2p: throttle all discovery lookups
Lookup calls would spin out of control when network connectivity was
lost. The throttling that was in place only took effect when the table
returned zero results, which doesn't happen very often.

The new throttling should not have a negative impact when the host is
online. Lookups against the network take some time and dials for all
results must complete or hit the cache before a new one is started. This
usually takes longer than four seconds, leaving online lookups
unaffected.

Fixes #1296
2015-06-22 01:07:58 +02:00
obscuren
398d08a8dd tests: SetGasLimit 2015-06-21 17:09:19 +02:00
obscuren
07c3de3f75 core, miner, xeth: renamed gas methods
* BuyGas => SubGas
* RefundGas => AddGas
* SetGasPool => SetGasLimit
2015-06-21 17:09:19 +02:00
obscuren
a40a91d60f trie: fixed tests 2015-06-21 17:08:47 +02:00
obscuren
c590b505ed core, ethdb, trie: validate database errors 2015-06-21 16:59:15 +02:00
Jeffrey Wilcke
3deded28a5 Merge pull request #1302 from obscuren/mist-removal
mist: R.I.P.
2015-06-21 07:58:08 -07:00
obscuren
46bd6c43db travis: removed qt deps 2015-06-20 20:33:25 +02:00
obscuren
42a14b8a09 mist: R.I.P.
/"""""/""""""".
    /     /         \             __
   /     /           \            ||
  /____ /             \           ||
 |     |  In Loving    |          ||
 |     |   Memory      |          ||
 |     |               |          ||
 |     |   2014-2015   |          ||
 |     |     * *   * * |         _||_
 |     |     *\/* *\/* |        | TT |
 |     |     *_\_  /   ...""""""| || |.""...."""""""".""
 |     |         \/.."""""..."""\ || /.""".......""""...
 |     |...."""""""........""""""^^^^"......."""""""".."
 |......"""""""""""""""........"""""...."""""..""-Jeff W.
2015-06-20 14:37:00 +02:00
Jeffrey Wilcke
9c69c051ba Merge pull request #1236 from tgerring/ethtest
ethtest improvements
2015-06-20 05:32:33 -07:00
Taylor Gerring
53e042f0c4 Added link to ARM develop build 2015-06-19 18:49:15 +02:00
Jeffrey Wilcke
4c2ba1af1d Merge pull request #1298 from karalabe/slack-n-bound
eth/fetcher: lower max cache size, add timeout slack
2015-06-19 07:46:45 -07:00
Jeffrey Wilcke
0fa2750fc9 Merge pull request #1290 from tgerring/dataargs
unit test coverage for NewDataArgs
2015-06-19 07:44:39 -07:00
Péter Szilágyi
8c4c7ea192 eth/fetcher: lower max cache size, add timeout slack 2015-06-19 16:46:16 +03:00
Taylor Gerring
d1e589289c Expand --test switch 2015-06-19 15:08:53 +02:00
Taylor Gerring
0743243dce Add --skip option to CLI
Disassociates hardcoded tests to skip when running via CLI. Tests still
skipped when running `go test`
2015-06-19 11:38:23 +02:00
Péter Szilágyi
d5871fc200 Merge pull request #1295 from karalabe/fix-broadcast-order
eth: fix the propagation/announce order for mined blocks
2015-06-19 10:15:20 +03:00
Péter Szilágyi
4180ca7fe4 eth: fix the propagation/announce order for mined blocks 2015-06-19 10:07:37 +03:00
Taylor Gerring
a9659e6dcf recover test logic 2015-06-18 23:46:42 +02:00
Taylor Gerring
8d3faf69d0 Build error fixes 2015-06-18 22:38:17 +02:00
Taylor Gerring
baea8e87e5 Rebase cleanup 2015-06-18 22:27:44 +02:00
Taylor Gerring
01ec4dbb12 Add stdin option 2015-06-18 22:24:07 +02:00
Taylor Gerring
a86452d22c Minor cleanup 2015-06-18 22:20:45 +02:00
Taylor Gerring
49336675f3 Expand CLI options to allow running all tests 2015-06-18 22:20:45 +02:00
Taylor Gerring
516362bcad Allow specifying single depth directory 2015-06-18 22:20:45 +02:00
Taylor Gerring
30444db020 Add lost rebase changes 2015-06-18 22:20:45 +02:00
Taylor Gerring
c941a39b75 Cleanup logging 2015-06-18 22:20:45 +02:00
Taylor Gerring
8507c867b9 Fix geth blocktest command 2015-06-18 22:20:45 +02:00
Taylor Gerring
6931267324 Wire ethtest to new tests structure 2015-06-18 22:20:45 +02:00
Taylor Gerring
6ff956394a DRY file loading 2015-06-18 22:20:45 +02:00
Taylor Gerring
ac0637c413 More consistent test interfaces + test skipping 2015-06-18 22:20:44 +02:00
Taylor Gerring
b6d40a9312 Cleanup/reorg 2015-06-18 22:20:44 +02:00
Taylor Gerring
c5d6fcbaba Return error up stack instead of passing testing var down 2015-06-18 22:20:44 +02:00
Taylor Gerring
24554629b1 DRY log check 2015-06-18 22:15:08 +02:00
Taylor Gerring
7c6ef0ddac Separate and identify tests runners 2015-06-18 22:15:07 +02:00
Taylor Gerring
1b26d4f220 Flatten helper directory 2015-06-18 22:15:07 +02:00
Taylor Gerring
e82100367f Fix paths 2015-06-18 22:13:42 +02:00
Taylor Gerring
a67a15528a Split tests from helper code 2015-06-18 22:13:42 +02:00
Taylor Gerring
7b9fbb088a Flatten vm directory 2015-06-18 22:13:41 +02:00
Taylor Gerring
6415ed0730 Require a first argument of test type 2015-06-18 22:13:41 +02:00
Jeffrey Wilcke
e4f9ec886b Merge pull request #1267 from SilentCicero/develop
eth_sendRawTransaction JSON RPC
2015-06-18 11:33:50 -07:00
Jeffrey Wilcke
8eaaf24b1e Merge pull request #1275 from karalabe/optimise-fetcher
eth/fetcher: separate the announce based sync into its own package
2015-06-18 11:14:26 -07:00
Péter Szilágyi
13c25036ea eth/fetcher: since uncles are allowed, drop phase test 2015-06-18 20:10:07 +03:00
Péter Szilágyi
ecd19919c5 eth/fetcher: allow backward uncle imports too 2015-06-18 19:43:47 +03:00
Péter Szilágyi
90d45f0397 eth: fix test breakage from the previous commit 2015-06-18 18:25:27 +03:00
Péter Szilágyi
b91b581b80 eth, eth/fetcher: propagate after header verify, announce only on insert 2015-06-18 18:00:19 +03:00
Péter Szilágyi
629705ad53 eth: clean the block request packet handling a bit 2015-06-18 16:09:34 +03:00
Péter Szilágyi
5ec6ecc511 eth, eth/fetcher: move propagated block import into fetcher 2015-06-18 15:56:08 +03:00
Péter Szilágyi
a9ada0b5ba eth/fetcher: make tests thread safe 2015-06-18 15:56:08 +03:00
Péter Szilágyi
37c5ff392f eth/fetcher: build longest chain until proven otherwise 2015-06-18 15:56:08 +03:00
Péter Szilágyi
2a7411bc96 eth/fetcher: fix premature queue cleanup, general polishes 2015-06-18 15:56:08 +03:00
Péter Szilágyi
497a7f1717 eth, eth/fetcher: define and enforce propagation boundaries 2015-06-18 15:56:08 +03:00
Péter Szilágyi
026ee40650 eth/fetcher: deduplicate future blocks 2015-06-18 15:56:08 +03:00
Péter Szilágyi
11c8f83a58 eth, eth/fetcher: cache future propagated blocks too 2015-06-18 15:56:08 +03:00
Péter Szilágyi
057bc237ad eth, eth/fetcher: use an import queue to store out of order blocks 2015-06-18 15:56:07 +03:00
Péter Szilágyi
8b64e041d6 eth/fetcher: add test to check for duplicate downloads 2015-06-18 15:56:07 +03:00
Péter Szilágyi
2a1b722d04 eth/fetcher: fix timer reset bug, add initial tests 2015-06-18 15:56:07 +03:00
Péter Szilágyi
7c2af1c117 eth, eth/fetcher: separate notification sync mechanism 2015-06-18 15:56:07 +03:00
Jeffrey Wilcke
2cea410656 Merge pull request #1282 from obscuren/state-cleanup
core/state: cleanup & optimisations
2015-06-18 05:29:53 -07:00
obscuren
430bcdb219 core/vm: clarified SSTORE 2015-06-18 12:25:02 +02:00
Jeffrey Wilcke
53a6145a2b Merge pull request #1287 from karalabe/fix-downloader-cancel-interrupt
eth, eth/downloader: fix processing interrupt caused by temp cancel
2015-06-18 02:50:19 -07:00
obscuren
15e169e5b6 core: ValidatedHeader (method => function)
Changed header validation method to function in preparation of
@karalabe's PR.
2015-06-18 11:47:50 +02:00
Péter Szilágyi
4365668462 eth/downloader: extend slow test to fix even slower CI server... 2015-06-18 00:42:02 +03:00
Péter Szilágyi
55dd8fd621 eth/downloader: always reenter processing if not exiting 2015-06-18 00:26:54 +03:00
Péter Szilágyi
2f4cbe22f5 eth, eth/downloader: fix processing interrupt caused by temp cancel 2015-06-18 00:04:57 +03:00
Taylor Gerring
5afebc2a4b unit test coverage for NewDataArgs 2015-06-17 18:07:45 +02:00
obscuren
f5abc9f188 core, core/vm: state improvements and tx pool speed up
Removed full tx validation during state transitions
2015-06-17 17:10:22 +02:00
obscuren
753d62a4dd core: TMP testing code 2015-06-17 17:10:13 +02:00
Jeffrey Wilcke
ae36beb38f Merge pull request #1269 from bas-vk/console-batch
added batch mode to console
2015-06-17 07:56:09 -07:00
obscuren
bdd63837ea core/state: removed trie copy 2015-06-17 13:39:19 +02:00
obscuren
aa699a1283 core/state: removed state from state object 2015-06-17 13:27:51 +02:00
obscuren
aaddc99c35 core/state: fixed state tests 2015-06-17 12:53:22 +02:00
Jeffrey Wilcke
e4b54f18c6 Merge pull request #1281 from karalabe/fix-overlapping-delivery-hang
eth/downloader: fix #1280, overlapping (good/bad) delivery hang
2015-06-17 03:24:46 -07:00
Jeffrey Wilcke
a3fdef7529 Merge pull request #1274 from Gustav-Simonsson/update_ethash_godep
Update ethash godep
2015-06-17 03:05:51 -07:00
obscuren
a977f3c0dc xeth, tests: fixed api 2015-06-17 11:44:40 +02:00
obscuren
30b27336ea core/state: remove the need for common.Value 2015-06-17 11:30:42 +02:00
obscuren
787a61bb27 core/state, core/vm: reworked storage get / set to use common.Hash 2015-06-17 11:24:40 +02:00
Péter Szilágyi
4a1e82cf3f eth/downloader: fix #1280, overlapping (good/bad) delivery hang 2015-06-17 12:03:16 +03:00
obscuren
5721fcf668 core/state, core/vm: cleanup refunds 2015-06-17 10:20:33 +02:00
Gustav Simonsson
be303ba186 Update ethash Godep (again) 2015-06-17 00:56:25 +02:00
SilentCicero
1f34daccc3 Added glog messages like Transaction 2015-06-16 12:47:34 -04:00
SilentCicero
6add45cd10 Remove Extra Loggers 2015-06-16 12:30:07 -04:00
SilentCicero
7ec8c257ff New DataArgs and eth_sendRawTransaction 2015-06-16 12:28:10 -04:00
Gustav Simonsson
a9d6846f92 Update ethash Godep 2015-06-16 12:09:39 +02:00
Gustav Simonsson
8f372c867d Update Ethereum JSON test files 2015-06-16 12:09:25 +02:00
Nick Dodson
e952bb65e7 thanks subtly :) 2015-06-16 00:06:28 -04:00
Nick Dodson
2642e091e9 NewSigArgs arg change. 2015-06-15 16:01:01 -04:00
obscuren
dfd18d245a cmd/geth: bump 0.9.31 2015-06-15 19:29:22 +02:00
obscuren
4699ebf534 Merge branch 'release/0.9.30' into develop 2015-06-15 19:29:06 +02:00
obscuren
5daf8729be Merge branch 'release/0.9.30' 2015-06-15 19:28:48 +02:00
obscuren
4673b04503 cmd/geth: bump version number 0.9.30 2015-06-15 19:14:34 +02:00
Jeffrey Wilcke
cc0b451119 Merge pull request #1260 from obscuren/tx-drop-low-tx
core: drop low gas tx
2015-06-15 09:09:44 -07:00
Jeffrey Wilcke
f2a2164184 Merge pull request #990 from zsfelfoldi/gasprice
eth: add GasPriceOracle
2015-06-15 08:44:25 -07:00
Jeffrey Wilcke
f475a01326 Merge pull request #1261 from fjl/p2p-no-writes-at-shutdown
p2p: prevent writes at shutdown time
2015-06-15 08:21:30 -07:00
obscuren
2628103f1d rpc/api: fixed default gas-(price) issue. 2015-06-15 17:21:08 +02:00
Nick Dodson
ad56aef5d2 Update utils.go 2015-06-15 11:10:40 -04:00
Nick Dodson
c3b80123e3 Update eth.go 2015-06-15 11:10:24 -04:00
Nick Dodson
f9f9352ceb Change eth_pushTx case to eth_sendRawTransaction 2015-06-15 10:50:07 -04:00
zsfelfoldi
1e3f4877c0 Changed miner and gpo min gas price to 1 szabo 2015-06-15 16:48:59 +02:00
obscuren
e79cc42dfe core: moved check for max queue to checkQueue
Moved the queue to check to the checkQueue method so no undeeded loops
need to be initiated or sorting needs to happen twice.
2015-06-15 16:46:45 +02:00
Jeffrey Wilcke
263903378b Merge pull request #1243 from karalabe/instrument-downloader-sync
eth, eth/downloader: separate concerns, clean up test suite
2015-06-15 07:43:37 -07:00
Bas van Kervel
f06f220c7c added printing support for objects 2015-06-15 16:33:36 +02:00
SilentCicero
d6233c7d2d Changed variable names 2015-06-15 10:07:32 -04:00
zsfelfoldi
b42b70eb5f fixed rpc/api.GasPrice 2015-06-15 15:55:39 +02:00
zsfelfoldi
610adfd83f fixed xeth.gpo = nil bug 2015-06-15 15:55:39 +02:00
zsfelfoldi
3c7b64ce20 removed duplicate function after rebase 2015-06-15 15:55:39 +02:00
zsfelfoldi
a977cecbe4 fixed gas price corr. factor 2015-06-15 15:55:38 +02:00
zsfelfoldi
6e212bdc6d fallback for uninitialized GPO config values 2015-06-15 15:55:38 +02:00
zsfelfoldi
2e8016c80d fixed initial base price bug 2015-06-15 15:55:38 +02:00
zsfelfoldi
0930e190a7 added missing source 2015-06-15 15:55:38 +02:00
zsfelfoldi
3f94d09c1f fixed saving receipts 2015-06-15 15:55:38 +02:00
Felix Lange
70da79f04c p2p: improve disconnect logging 2015-06-15 15:03:46 +02:00
Felix Lange
8dcbdcad0a p2p: track write errors and prevent writes during shutdown
As of this commit, we no longer rely on the protocol handler to report
write errors in a timely fashion. When a write fails, shutdown is
initiated immediately and no new writes can start. This will also
prevent new writes from starting after Server.Stop has been called.
2015-06-15 15:03:46 +02:00
Péter Szilágyi
aa250e228a eth: don't refetch non fitting blocks to avoid duplicates 2015-06-15 15:18:31 +03:00
Péter Szilágyi
cf7c44a7f6 eth/downloader: detailed comment for the race corner case 2015-06-15 15:18:04 +03:00
obscuren
21fa29111b core: reduce max allowed queued txs per address
Transactions in the queue are now capped to a maximum of 200
transactions. This number is completely arbitrary.
2015-06-15 12:16:29 +02:00
Péter Szilágyi
9c03c374e3 eth/downloader: fix import statistic reset, fetch hashes async 2015-06-15 13:05:01 +03:00
obscuren
6d817e16c1 core, miner: tx pool drops txs below ask price 2015-06-15 11:33:08 +02:00
Péter Szilágyi
b240983e2b eth, eth/downloader: do async block fetches, add dl tests 2015-06-15 12:26:05 +03:00
Péter Szilágyi
30a9939388 eth/downloader: sanity test for multi peer syncs 2015-06-15 09:22:37 +03:00
Péter Szilágyi
fc7abd9886 eth, eth/downloader: move block processing into the downlaoder 2015-06-15 09:22:37 +03:00
Péter Szilágyi
0fc71877a7 eth/downloader: add valid peer during attacks (check interference) 2015-06-15 09:22:37 +03:00
Péter Szilágyi
80833f8137 eth/downloader: instreument and test the sync peer drop 2015-06-15 09:22:37 +03:00
Péter Szilágyi
faae8b7dd8 eth: fix an accidental test compile error 2015-06-15 09:22:37 +03:00
Péter Szilágyi
2dd6a62f67 eth/downloader: support individual peers in the test suite 2015-06-15 09:22:36 +03:00
Péter Szilágyi
2937903299 eth/downloader: remove uneeded testing functions 2015-06-15 09:22:36 +03:00
Péter Szilágyi
66d3dc8690 eth, eth/downloader: move peer removal into downloader 2015-06-15 09:22:36 +03:00
SilentCicero
f9a0a13fa9 eth_pushTx send raw signed encoded TX data to the chain through RPC 2015-06-14 18:07:03 -04:00
Bas van Kervel
2a0528303f added batch mode to console 2015-06-13 19:02:46 +02:00
Jeffrey Wilcke
6f5c6150b7 Merge pull request #1255 from obscuren/chain-proc-interupt
eth, core: interrupt the chain processing on stop
2015-06-12 08:04:02 -07:00
obscuren
645dfd9693 core: changed interrupt strategy
Removed chain manager's select/channel approach when checking for
interrupts. Now using an atomic int32 instead which checked for every
block processed.
2015-06-12 16:52:54 +02:00
Jeffrey Wilcke
1bca2f6ec4 Merge pull request #1256 from obscuren/fix-printable-chars
core/vm: fixed strange output for trace logging & error reporting
2015-06-12 07:46:59 -07:00
obscuren
90c4493a10 eth, core: interupt the chain processing on stop
Added an additional channel which is used to interupt the chain manager
when it's processing blocks.
2015-06-12 13:41:34 +02:00
Jeffrey Wilcke
aaac1f0cdd Merge pull request #1254 from bas-vk/ipcwindowspathfix
Invalid named pipe name
2015-06-12 04:39:38 -07:00
obscuren
287f990891 core/vm: Improved error reporting for trace logging 2015-06-12 13:35:14 +02:00
obscuren
02d629af8f core/vm: fixed printable characters using unicode instead 2015-06-12 11:18:17 +02:00
Bas van Kervel
55a796b7c3 removed obsolete console flag 2015-06-12 09:42:57 +02:00
Bas van Kervel
359e6414e5 fixed windows ipc path issue 2015-06-12 09:32:37 +02:00
Jeffrey Wilcke
4bb9a61049 Merge pull request #1245 from bas-vk/ipcdatadirfix
ipc socket always uses default path
2015-06-11 12:01:07 -07:00
Bas van Kervel
22080e1fdd ipc socket always used default path 2015-06-11 20:35:19 +02:00
Jeffrey Wilcke
e2c2d8e15e Merge pull request #1239 from bas-vk/rpc-apis
RPC refactoring
2015-06-11 07:41:43 -07:00
Bas van Kervel
b3c07f167f fixed incomplete merge action 2015-06-11 15:06:12 +02:00
Bas van Kervel
ec6a7b35f6 removed obsolete print statement 2015-06-11 15:00:33 +02:00
Bas van Kervel
ebaa9b9feb removed binary files 2015-06-11 14:54:03 +02:00
Bas van Kervel
7584e68c21 upgrade web3.js with _extend support 2015-06-11 14:43:05 +02:00
Bas van Kervel
1fe617fa57 added net API 2015-06-11 14:40:38 +02:00
Bas van Kervel
87dace1fa9 added miner API 2015-06-11 14:20:50 +02:00
Bas van Kervel
aa258dcc5f added console binary 2015-06-11 14:18:54 +02:00
Bas van Kervel
3c93034a32 fixed windows build problem 2015-06-11 14:18:08 +02:00
Bas van Kervel
594a34a88d changed send methods for backwards compatability in geth console 2015-06-11 14:17:28 +02:00
Bas van Kervel
1b59f89095 added console command 2015-06-11 14:17:27 +02:00
Bas van Kervel
bbfa0a3dcb added API/IPC commandline flags 2015-06-11 14:15:33 +02:00
Bas van Kervel
348f1562e2 restructured eth rpc API 2015-06-11 14:13:57 +02:00
Bas van Kervel
7e41d7ac51 added shh API 2015-06-11 14:01:41 +02:00
Bas van Kervel
bd38428f33 cleanup of javascript API 2015-06-11 14:01:41 +02:00
Bas van Kervel
87b62f75a7 added txpool API 2015-06-11 14:01:41 +02:00
Bas van Kervel
c6c443385b changed console welcome message 2015-06-11 14:01:41 +02:00
Bas van Kervel
5f8e5a4875 upgrade web3.js with _extend support 2015-06-11 14:01:41 +02:00
Bas van Kervel
cc9ae39933 added admin API 2015-06-11 14:01:41 +02:00
Bas van Kervel
08d72a9245 added personal API 2015-06-11 14:01:41 +02:00
Bas van Kervel
09d0d55fc5 added debug API 2015-06-11 14:01:41 +02:00
Bas van Kervel
faab931ce1 only load supported api's 2015-06-11 14:01:40 +02:00
Bas van Kervel
d2a87f6f72 added net API 2015-06-11 14:01:40 +02:00
Bas van Kervel
4b9b633dfe added miner API 2015-06-11 14:01:40 +02:00
Bas van Kervel
cb7f2d43b6 added console binary 2015-06-11 14:01:40 +02:00
Bas van Kervel
8aea85e374 fixed windows build problem 2015-06-11 14:01:39 +02:00
Bas van Kervel
0a600a03ee fixed unittest build problem 2015-06-11 14:01:39 +02:00
Bas van Kervel
862117e4bd changed send methods for backwards compatability in geth console 2015-06-11 14:01:39 +02:00
Bas van Kervel
a1a475fb92 added console command 2015-06-11 14:01:39 +02:00
Bas van Kervel
2a0d888326 added API/IPC commandline flags 2015-06-11 14:01:39 +02:00
Bas van Kervel
8ebf2d8fad added RPC/IPC support 2015-06-11 14:01:39 +02:00
Bas van Kervel
2f55a1d798 restructured eth rpc API 2015-06-11 14:01:39 +02:00
Jeffrey Wilcke
6609d45ef4 Merge pull request #1228 from obscuren/vm-optimisations
core/vm: optimisations
2015-06-11 03:32:39 -07:00
Jeffrey Wilcke
13bd452faf Merge pull request #1227 from karalabe/block-fetcher-optimisations
eth: optimize the notification/explicit fetch mechanism
2015-06-11 03:31:41 -07:00
obscuren
37111aa4bd core: retry block now also parellise nonce checks 2015-06-11 12:06:05 +02:00
obscuren
f599a1b5f1 core/vm: added a comment regarding the uint64 vs *big.Int 2015-06-11 11:59:30 +02:00
obscuren
9e9bd35557 cmd/geth: Added optional debug flag for reprocess block 2015-06-11 11:44:39 +02:00
Jeffrey Wilcke
979ebfc126 Merge pull request #1224 from karalabe/report-import-progress
cmd/geth, eth/downloader: collect and report import progress too
2015-06-10 15:30:20 -07:00
Jeffrey Wilcke
8482855bc7 Merge pull request #1218 from tgerring/rpcsign
Updated RPC sign test
2015-06-10 15:11:19 -07:00
Jeffrey Wilcke
acb59f3243 Merge pull request #1223 from obscuren/tx-pool-vroooooom
core: fixed race condition in the transaction pool
2015-06-10 12:10:18 -07:00
obscuren
5cfae0536f cmd/evm: print trace when running programs 2015-06-10 21:09:12 +02:00
obscuren
e7627623b9 core/vm: reverse loop stack 2015-06-10 21:08:54 +02:00
obscuren
f94c5473ad core/vm: fixed a bug where Data ignored the stack ptr 2015-06-10 21:08:04 +02:00
obscuren
10af69b57c core, core/vm: moved logger and added gas cost to struct logging 2015-06-10 19:56:40 +02:00
Péter Szilágyi
3c1cccc801 eth/downloader: fetch the block hashes on the fly, when needed 2015-06-10 20:12:22 +03:00
Péter Szilágyi
e61db7145a eth: dedup fetches to ensure no blocks are pulled twice 2015-06-10 19:47:59 +03:00
Péter Szilágyi
355b1e3bb1 eth: randomly fetch announced block (don't hammer origin) 2015-06-10 19:47:59 +03:00
Péter Szilágyi
b9affbf9fe eth: discard fetched blocks that don't fit (no goroutine) 2015-06-10 19:47:59 +03:00
Taylor Gerring
2e0694b606 Updated test 2015-06-10 12:35:35 -04:00
obscuren
fc2a061d51 core/vm: unexported stack again. No longer required 2015-06-10 17:47:36 +02:00
obscuren
065aff9ffa core/vm: documentation and name changes 2015-06-10 17:47:36 +02:00
obscuren
4407524d13 core: fixed race condition for subscriptions 2015-06-10 17:13:32 +02:00
obscuren
29f7902fee core: fixed test 2015-06-10 17:13:32 +02:00
obscuren
65a48f9cd8 core: fixed race condition in the transaction pool
Removed `Stop/Start` mechanism from the transaction pool.
2015-06-10 17:13:32 +02:00
Péter Szilágyi
c4af70d0cc cmd/geth: round the import ETA before converting to string 2015-06-10 18:07:23 +03:00
Péter Szilágyi
271fb20ecb cmd/geth, eth/downloader: rough guess at the import eta 2015-06-10 18:01:05 +03:00
Jeffrey Wilcke
858a6f0be9 Merge pull request #1230 from fjl/p2p-discover-fix-ping-test
p2p/discover: deflake TestUDP_successfulPing
2015-06-10 07:51:48 -07:00
obscuren
f249ccaa89 cmd/evm: implements vm.Environment 2015-06-10 16:46:43 +02:00
Felix Lange
a8e4cb6dfe p2p/discover: use separate rand.Source instances in tests
rand.Source isn't safe for concurrent use.
2015-06-10 15:18:01 +02:00
obscuren
cf3aabb9d3 miner: update gas used after tx proc for pending block 2015-06-10 13:52:38 +02:00
Felix Lange
261a8077c4 p2p/discover: deflake TestUDP_successfulPing 2015-06-10 13:08:21 +02:00
obscuren
1774c49456 core: log tx count for each set of blocks we're importing 2015-06-10 12:57:58 +02:00
obscuren
6fb6e6679e core/vm, core/state: added storage to structured vm logging 2015-06-10 12:57:37 +02:00
obscuren
38c61f6f25 core, core/vm: added structure logging
This also reduces the time required spend in the VM
2015-06-10 12:23:49 +02:00
obscuren
ff5b3ef087 core/vm: added structured logging 2015-06-10 10:59:44 +02:00
obscuren
468501cb86 core/vm: changed program counter to uint64 2015-06-10 10:44:46 +02:00
Péter Szilágyi
b3d5ce7d48 cmd/geth, eth/downloader: collect and report import progress too 2015-06-10 01:20:35 +03:00
Jeffrey Wilcke
dffe6d32d6 Merge pull request #1222 from obscuren/state-vm-test-suit-fix
tests: check gas limit error
2015-06-09 14:20:41 -07:00
obscuren
6a5c9aff3b tests: check gas limit error 2015-06-09 22:49:33 +02:00
Felix Lange
e972a116ac Merge pull request #1221 from karalabe/fix-p2p-dial-test
p2p: fix a close race in the dial test
2015-06-09 22:00:49 +02:00
Péter Szilágyi
1cbbfbe7fa p2p: fix a close race in the dial test 2015-06-09 22:26:26 +03:00
obscuren
7e58949c3f cmd/geth: develop version bump 0.9.29 2015-06-09 21:14:11 +02:00
obscuren
667f5a09c3 Merge branch 'release/0.9.28' into develop 2015-06-09 21:12:44 +02:00
obscuren
bac9a94ddf Merge branch 'release/0.9.28' 2015-06-09 21:12:25 +02:00
obscuren
14994fa21b rpc: skip test if solc version doesn't match 2015-06-09 21:02:24 +02:00
obscuren
bc6031e7bb core, xeth: moved nonce management burden from xeth to txpool 2015-06-09 21:01:02 +02:00
obscuren
93f4852844 cmd/geth: bumped version number 0.9.28 2015-06-09 21:01:02 +02:00
Jeffrey Wilcke
5950755b12 Merge pull request #1220 from karalabe/fix-chain-deadlock2
core: fix a lock annoyance and potential deadlock
2015-06-09 12:00:47 -07:00
Péter Szilágyi
4541c22964 event/filter: hack around data race in the test 2015-06-09 21:33:39 +03:00
Péter Szilágyi
d652a58ada core: fix a race condition accessing the gas limit 2015-06-09 21:13:21 +03:00
Péter Szilágyi
fecf214175 core: fix a lock annoyance and potential deadlock 2015-06-09 21:02:26 +03:00
Jeffrey Wilcke
5f341e5db5 Merge pull request #1212 from fjl/p2p-eth-block-timeout
eth, p2p: improve write timeouts and behaviour under load
2015-06-09 09:51:09 -07:00
Felix Lange
73c355591f core, eth: document that result of GetTransactions is modifiable 2015-06-09 17:07:10 +02:00
Felix Lange
8dc3048f65 eth/downloader: fix hash fetch timeout handling
Fixes #1206
2015-06-09 17:07:10 +02:00
Felix Lange
3239aca69b p2p: bump global write timeout to 20s
The previous value of 5 seconds causes timeouts for legitimate messages
if large messages are sent.
2015-06-09 17:07:10 +02:00
Felix Lange
2c24a73e25 eth: add protocol tests
The protocol tests were commented out when eth/downloader was introduced.
2015-06-09 17:07:10 +02:00
Felix Lange
6c73a59806 eth: limit number of sent transactions based on message size
Nodes that are out of sync will queue many transactions, which causes
the initial transactions message to grow very large. Larger transactions
messages can make communication impossible if the message is too big to
send. Big transactions messages also exhaust egress bandwidth, which
degrades other peer connections.

The new approach to combat these issues is to send transactions in
smaller batches. This commit introduces a new goroutine that handles
delivery of all initial transaction transfers. Size-limited packs of
transactions are sent to one peer at a time, conserving precious egress
bandwidth.
2015-06-09 17:07:10 +02:00
Felix Lange
41b2008a66 eth: limit number of sent blocks based on message size
If blocks get larger, sending 256 at once can make messages large
enough to exceed the low-level write timeout.
2015-06-09 17:06:31 +02:00
Felix Lange
7aefe123e9 core/types: add Transaction.Size 2015-06-09 17:06:31 +02:00
Jeffrey Wilcke
fda49f2b52 Merge pull request #1213 from karalabe/polish-console-prettyprinter
jsre: patch up the pretty printer to have a decent look
2015-06-09 07:29:32 -07:00
Péter Szilágyi
d6f4c515f5 jsre: print function arguments too 2015-06-09 17:23:44 +03:00
Jeffrey Wilcke
c71ab2a6a3 Merge pull request #1219 from Gustav-Simonsson/precompiled_ec_recover_padding
Precompiled ec recover padding
2015-06-09 07:21:23 -07:00
Péter Szilágyi
7842559353 jsre: sort pretty print output, fields before funcs 2015-06-09 17:19:56 +03:00
Gustav Simonsson
6e3b58e491 Remove unneeded if check on EC recover padding 2015-06-09 16:03:05 +02:00
Jeffrey Wilcke
365576620a Merge pull request #1216 from karalabe/fix-eth-dataraces
Fix various data races in eth and core
2015-06-09 06:53:49 -07:00
Gustav Simonsson
15166f880b Skip BlockTests/bcValidBlockTests SimpleTx3 2015-06-09 15:53:31 +02:00
Gustav Simonsson
ad5b5a4895 Pad precompiled EC recover input and add validations 2015-06-09 15:41:15 +02:00
Gustav Simonsson
d8e55a5cc3 Skip VMTests RandomTests temporarily until they are fixed 2015-06-09 15:40:43 +02:00
Gustav Simonsson
e885a2912b Update Ethereum JSON test files 2015-06-09 15:39:24 +02:00
Péter Szilágyi
ebf2aabd25 core: fix up a deadlock caused by double locking 2015-06-09 16:26:44 +03:00
Jeffrey Wilcke
60b780c21b Merge pull request #1217 from tgerring/rpcsign
Fix RPC sign
2015-06-09 06:19:39 -07:00
obscuren
76148515fa skip sol on new compiler 2015-06-09 15:19:20 +02:00
Péter Szilágyi
ff84352fb7 p2p: fix close data race 2015-06-09 16:12:24 +03:00
Jeffrey Wilcke
f371e6c81a Merge pull request #1156 from tgerring/issue1145
Differentiate between 0 and unspecified gas/gasprice
2015-06-09 05:49:55 -07:00
Taylor Gerring
046411866b Fixed signing + tests 2015-06-09 08:47:20 -04:00
Péter Szilágyi
ca8cb65b73 core: fix data race accessing ChainManager.currentBlock 2015-06-09 15:30:46 +03:00
Péter Szilágyi
07baf66200 core: fix data race in accessing ChainManager.td 2015-06-09 15:23:20 +03:00
Taylor Gerring
1a96798642 gas -> gasprice 2015-06-09 08:13:26 -04:00
Taylor Gerring
1c364b6beb gas -> gasprice 2015-06-09 08:13:25 -04:00
Taylor Gerring
c8a9a4e76d Differentiate between 0 and unspecified gas/gasprice 2015-06-09 08:13:25 -04:00
Péter Szilágyi
d09ead546c eth: fix a data race in the hash announcement processing 2015-06-09 15:09:15 +03:00
Péter Szilágyi
f86707713c eth: fix data race accessing peer.td 2015-06-09 14:56:27 +03:00
Jeffrey Wilcke
3054fd4811 Merge pull request #1215 from obscuren/issue1202
core: skip genesis block for reprocess. Closes #1202
2015-06-09 04:46:13 -07:00
obscuren
7da8ebdfd0 Fixed readme links and description 2015-06-09 13:45:35 +02:00
Péter Szilágyi
44147d057d eth: fix data race accessing peer.recentHash 2015-06-09 14:27:44 +03:00
obscuren
190c1b688a core: skip genesis block for reprocess. Closes #1202 2015-06-09 13:24:32 +02:00
Jeffrey Wilcke
05cae69d72 Merge pull request #1188 from karalabe/newblockhashes-proposal
eth: implement the NewBlockHashes protocol proposal
2015-06-09 04:07:46 -07:00
Jeffrey Wilcke
087949227c Merge pull request #1153 from karalabe/downloader-banned-starvation-attack
eth/downloader: gather and ban hashes from invalid chains
2015-06-09 03:45:41 -07:00
Péter Szilágyi
3f4ce70d92 jsre: fix wrong separator comma placing due to non consistent field orders 2015-06-09 13:27:45 +03:00
Jeffrey Wilcke
11f65cf885 Merge pull request #1211 from obscuren/genesis_writout_fix
core: write accounts to statedb. Closes #1210
2015-06-09 02:55:47 -07:00
obscuren
a5b977aa90 core: write accounts to statedb. Closes #1210 2015-06-09 11:37:01 +02:00
Jeffrey Wilcke
0f1cdfa53a Merge pull request #1193 from tgerring/hotbackup
Improve export command
2015-06-08 16:32:38 -07:00
Jeffrey Wilcke
81ceac1b96 Merge pull request #1209 from obscuren/txpool_test_and_pending_fix
core: added a test for missing nonces
2015-06-08 16:04:30 -07:00
obscuren
5245bd7b20 core: added a test for missing nonces
This test showed the logic in the queue was slightly flawed sending out
transactions to its peer it couldn't even resolve itself.
2015-06-09 00:41:47 +02:00
Péter Szilágyi
8216bb901c eth: clean up pending announce download map, polish logs 2015-06-09 00:37:10 +03:00
Jeffrey Wilcke
55b7c14554 Merge pull request #1199 from obscuren/settable_genesis_nonce
core: settable genesis nonce
2015-06-08 13:43:41 -07:00
Jeffrey Wilcke
75522f95ce Merge pull request #1204 from carver/deep-log-crashfix
crash fix: skip deep log if self.chain is not caught up
2015-06-08 13:35:11 -07:00
Jason Carver
a9c058dfe0 crash fix: skip deep log if self.chain is not caught up
@see trace https://gist.github.com/eupraxic/87fdfefe702c51d5944d
2015-06-08 11:49:59 -07:00
Péter Szilágyi
9ed166c196 eth: split and handle explicitly vs. download requested blocks 2015-06-08 20:38:39 +03:00
Taylor Gerring
44e5ff7d15 Fix blocktest 2015-06-08 12:55:15 -04:00
obscuren
6244b10a8f core: settable genesis nonce
You can set the nonce of the block with `--genesisnonce`. When the
genesis nonce changes and it doesn't match with the first block in your
database it will fail. A new `datadir` must be given if the nonce of the
genesis block changes.
2015-06-08 18:33:43 +02:00
Péter Szilágyi
fdccce781e eth: fetch announced hashes from origin, periodically 2015-06-08 19:24:56 +03:00
Péter Szilágyi
8c012e103f eth: mark blocks as known when broadcasting hashes too 2015-06-08 18:44:02 +03:00
Péter Szilágyi
6f415b96b3 eth: implement the NewBlockHashes protocol proposal 2015-06-08 18:44:02 +03:00
Péter Szilágyi
4ed3509a02 eth/downloader: test registration rejection on head ban 2015-06-08 15:02:52 +03:00
Péter Szilágyi
c4f224932f eth/downloader: reject peer registration if head is banned 2015-06-08 14:46:31 +03:00
Péter Szilágyi
63c6cedb14 eth/downloader: cap the hash ban set, add test for it 2015-06-08 14:12:00 +03:00
Péter Szilágyi
4b2dd44711 eth/downloader: fix throttling test to be less timing dependent 2015-06-08 13:23:58 +03:00
Péter Szilágyi
2d627995cf eth/downloader: fix another rebase error 2015-06-08 13:23:58 +03:00
Péter Szilágyi
b40c796ff7 eth/downloader: preallocate the block cache 2015-06-08 13:23:58 +03:00
Péter Szilágyi
1d7bf3d39f eth/downloader: fix merge compile error 2015-06-08 13:23:58 +03:00
Péter Szilágyi
6d497f61c6 eth/downloader: don't block hash deliveries while pulling blocks 2015-06-08 13:23:58 +03:00
Péter Szilágyi
9da0232eef eth/downloader: update test for shitty travis 2015-06-08 13:23:58 +03:00
Péter Szilágyi
0275fcb3d3 eth/downloader: clean up and simplify the code a bit 2015-06-08 13:23:58 +03:00
Péter Szilágyi
abdfcda4dd eth/downloader: short circuit sync if head hash is banned 2015-06-08 13:23:58 +03:00
Péter Szilágyi
84bc93d8cb eth/downloader: accumulating hash bans for reconnecting attackers 2015-06-08 13:23:58 +03:00
Péter Szilágyi
eedb25b22a eth/downloader: clean up tests and unused variables 2015-06-08 13:23:57 +03:00
Jeffrey Wilcke
c6faa18ec9 Merge pull request #1198 from fjl/core-fix-nonce-check
core: fix nonce verification one more time
2015-06-08 01:31:34 -07:00
Felix Lange
6c27e2aaf6 core: add bad block for the 'missing nonce check' fork 2015-06-08 02:54:10 +02:00
Felix Lange
0b493910d3 core: fix the nonce check one more time
The block nonce verification was effectively disabled by a typo.
This time, there is an actual test for it.
2015-06-08 02:19:39 +02:00
Taylor Gerring
4ab0cedf42 Export should start with block 0 2015-06-06 10:59:56 -04:00
Taylor Gerring
2729e6294a Improved error checking 2015-06-06 10:04:13 -04:00
Taylor Gerring
ed621aae33 Cleanup 2015-06-06 09:50:23 -04:00
Jeffrey Wilcke
e822f440b0 added ARM builds 2015-06-06 14:33:08 +02:00
Taylor Gerring
d65b64c884 Allow export command to take first and last args 2015-06-06 00:02:32 -04:00
Taylor Gerring
89c9320d80 Allow exporting subset of chain 2015-06-05 23:01:54 -04:00
obscuren
43ceb0f5c7 cmd/geth: version bump 0.9.27 2015-06-05 17:36:42 +02:00
obscuren
7ab87f9f6e wip 2015-06-05 17:33:30 +02:00
Jeffrey Wilcke
b94a76d17e Merge pull request #1189 from karalabe/downloader-polishes
eth/downloader: handle timeouts more gracefully
2015-06-05 08:31:57 -07:00
Jeffrey Wilcke
8c28126984 Merge pull request #1100 from karalabe/drop-sync-peer-on-empty-hash
eth, eth/downloader: fix #1098, elevate empty hash errors to peer drops
2015-06-05 08:28:08 -07:00
Péter Szilágyi
94e525ae12 eth, eth/downloader: fix #1098, elevate empty hash errors to peer drops 2015-06-05 12:52:48 +03:00
Péter Szilágyi
328ef60b85 eth/downloader: differentiate stale and nonexistent deliveries 2015-06-05 12:37:48 +03:00
Péter Szilágyi
94e4aa6ea9 eth/downloader: log hard timeouts and reset capacity 2015-06-05 11:53:46 +03:00
Jeffrey Wilcke
067e66b348 Merge pull request #1185 from fjl/p2p-nat-timeouts
p2p/nat: request timeouts for UPnP discovery
2015-06-04 15:55:39 -07:00
Felix Lange
fc6a5ae3ec p2p/nat: add timeout for UPnP SOAP requests 2015-06-04 22:25:43 +02:00
Felix Lange
6a831ca015 Godeps: update github.com/huin/goupnp to 5cff77a69fb22f5
This includes a fix adding a timeout to router discovery requests.
2015-06-04 22:25:43 +02:00
Jeffrey Wilcke
8b4605c336 Merge pull request #1186 from obscuren/log_fixes
tests: log coalescing fixes
2015-06-04 10:49:00 -07:00
obscuren
246db4250b tests: use state logs instead own kept logs 2015-06-04 19:48:23 +02:00
Jeffrey Wilcke
45152dead5 Merge pull request #1181 from obscuren/txpool_fixes
cmd: transaction pool fixes and improvements
2015-06-04 10:47:23 -07:00
Jeffrey Wilcke
10fc733767 Merge pull request #1184 from karalabe/nonstop-block-fetches
eth/downloader: fix #1178, don't request blocks beyond the cache bounds
2015-06-04 10:42:34 -07:00
obscuren
912cf7ba04 core: added fork test & double nonce test 2015-06-04 19:28:39 +02:00
obscuren
0f51ee6c88 crypto: return common.Address rather than raw bytes 2015-06-04 19:28:39 +02:00
obscuren
dcdb4554d7 core: documented changes in tx pool 2015-06-04 16:19:22 +02:00
obscuren
cf5ad266f6 core: only change the nonce if the account nonce is lower 2015-06-04 15:44:42 +02:00
Péter Szilágyi
d754c25cc8 eth/downloader: drop log entry from peer, it's covered already 2015-06-04 16:22:55 +03:00
Péter Szilágyi
24cca2f18d eth/downloader: log after state updates, easier to debug 2015-06-04 15:10:43 +03:00
Péter Szilágyi
28c32d1b1b eth/downloader: fix #1178, don't request blocks beyond the cache bounds 2015-06-04 14:51:14 +03:00
obscuren
2bb0e48a7b skipped failing natspec tests 2015-06-04 13:17:47 +02:00
obscuren
9dd12a64a7 core: renamed txs to pending 2015-06-04 13:16:31 +02:00
obscuren
9b27fb91c0 cmd/geth, common/natspec: updating tests (still failing?) 2015-06-04 11:41:20 +02:00
obscuren
36c0db2ac9 xeth: use the correct nonce for creating transactions 2015-06-04 11:35:37 +02:00
obscuren
140d883901 core: test updates 2015-06-03 22:53:33 +02:00
obscuren
d09a6e5421 core, eth, miner: moved nonce management to tx pool.
Removed the managed tx state from the chain manager to the transaction
pool where it's much easier to keep track of nonces (and manage them).
The transaction pool now also uses the queue and pending txs differently
where queued txs are now moved over to the pending queue (i.e. txs ready
for processing and propagation).
2015-06-03 22:43:23 +02:00
Felix Lange
5197aed7db cmd/utils, eth: core.NewBlockProcessor no longer needs TxPool 2015-06-03 22:43:23 +02:00
Felix Lange
ec7a2c3442 core: don't remove transactions after block processing
The transaction pool drops processed transactions on its own
during pool maintenance.
2015-06-03 22:43:23 +02:00
Felix Lange
5721c43585 core: update documentation comments for TxPool 2015-06-03 22:43:23 +02:00
Felix Lange
ca31d71107 core: remove unused code from TxPool 2015-06-03 22:43:23 +02:00
Felix Lange
08befff8f1 core: compute less transaction hashes in TxPool 2015-06-03 22:43:23 +02:00
obscuren
770a0e7839 wip 2015-06-03 22:39:17 +02:00
obscuren
b26f5e0bb7 types: block json unmarshal method added 2015-06-03 22:39:17 +02:00
obscuren
fa4aefee44 core/vm: cleanup and renames 2015-06-03 22:39:17 +02:00
Jeffrey Wilcke
8610314918 Merge pull request #1167 from Gustav-Simonsson/check_ec_recover_err
Add missing err checks on From()
2015-06-03 10:29:47 -07:00
Jeffrey Wilcke
71d9367edc Merge pull request #1151 from fjl/parallel-nonce-2
core: re-add parallel nonce checks
2015-06-03 09:12:06 -07:00
Jeffrey Wilcke
122d2db095 Merge pull request #1150 from fjl/fix-jumpdest
core/vm: improve JUMPDEST analysis
2015-06-03 09:11:56 -07:00
Jeffrey Wilcke
0cd72369f7 Merge pull request #1176 from karalabe/congestion-control
eth/downloader: add a basic block download congestion control
2015-06-03 08:24:52 -07:00
Jeffrey Wilcke
02f785af70 Merge pull request #1166 from Gustav-Simonsson/add_ec_sig_validations
Add EC signature validations before call to libsecp256k1
2015-06-03 08:11:24 -07:00
Felix Lange
c9ed9d253a tests/files: update tests to d309b4679a58d2 2015-06-03 16:25:06 +02:00
Felix Lange
48fb0c3213 core/vm: check for 'no code' before doing any work 2015-06-03 16:25:06 +02:00
Felix Lange
ea2718c946 core/vm: improve JUMPDEST analysis
* JUMPDEST analysis is faster because less type conversions are performed.
* The map of JUMPDEST locations is now created lazily at the first JUMP.
* The result of the analysis is kept around for recursive invocations
  through CALL/CALLCODE.

Fixes #1147
2015-06-03 16:25:05 +02:00
Gustav Simonsson
edbd902a1b Initialise curve N value in package init 2015-06-03 14:44:29 +02:00
Péter Szilágyi
3ec159ab6b eth/downloader: demote peers if they exceed the soft limits at 1 blocks already 2015-06-03 15:43:12 +03:00
Péter Szilágyi
c9a546c310 eth/downloader: add a basic block download congestion control 2015-06-03 14:40:11 +03:00
Jeffrey Wilcke
827bccb64b Merge pull request #1175 from karalabe/keccak-update
crypto/sha3: pull in latest keccak from go crypto (45% speed increase)
2015-06-03 04:13:31 -07:00
Péter Szilágyi
14e7192d9c crypto/sha3: pull in latest keccak from go crypto (45% speed increase) 2015-06-03 12:00:39 +03:00
Jeffrey Wilcke
9085b10508 Merge pull request #1169 from Gustav-Simonsson/unsupport_bruncles
Unsupport bruncles
2015-06-03 01:20:59 -07:00
Gustav Simonsson
0fa9d2431f Add new 0th gen uncle test 2015-06-02 14:47:23 +02:00
Gustav Simonsson
8a76b45253 Use older version of stSpecialTest until JUMPDEST fix is merged 2015-06-02 12:25:43 +02:00
Gustav Simonsson
8962af2e42 Update Ethereum JSON test files 2015-06-02 12:15:25 +02:00
Gustav Simonsson
55bf5051ad Unsupport bruncles 2015-06-01 22:43:05 +02:00
Gustav Simonsson
5a692ba4f6 Update Ethereum JSON test files 2015-06-01 22:34:44 +02:00
Gustav Simonsson
147a699c65 Add missing err checks on From() (skip RPC for now) 2015-06-01 22:12:03 +02:00
Gustav Simonsson
32e1b104f8 Add EC signature validations before call to libsecp256k1 2015-06-01 21:06:52 +02:00
Felix Lange
55b60e699b core: insert less length zero chains
This reduces the amount of queueEvents that are sent internally.
2015-06-01 12:48:12 +02:00
Felix Lange
e7e2cbfc01 core: re-add parallel nonce checks
In this incancation, the processor waits until the nonce
has been verified before handling the block.
2015-06-01 12:47:13 +02:00
Felix Lange
5b14fdb94b Merge pull request #1161 from tgerring/bootnode
Updated SA boot node
2015-06-01 09:51:24 +02:00
Taylor Gerring
057d36b049 Update bootnode 2015-05-31 13:48:27 -05:00
Felix Lange
a906a84950 Merge pull request #1155 from karalabe/fix-chainmanager-datarace
core: fix #1154, sort out data race accessing the future blocks
2015-05-30 01:21:09 +02:00
Péter Szilágyi
b7fc85d68e core: fix #1154, sort out data race accessing the future blocks 2015-05-29 23:46:10 +03:00
Gustav Simonsson
b4818a003a Update Ethereum JSON test files 2015-05-29 13:12:54 +02:00
obscuren
0e703d92ac Merge branch 'release/0.9.26' 2015-05-28 18:21:14 +02:00
obscuren
12b90600eb core: moved guards 2015-05-28 18:18:23 +02:00
obscuren
2587b0ea62 Merge branch 'release/0.9.26' into develop 2015-05-28 18:01:54 +02:00
obscuren
f082c1b895 Merge branch 'release/0.9.26' 2015-05-28 18:01:40 +02:00
obscuren
d51d74eb55 cmd/geth: bump version v0.9.26 2015-05-28 17:43:05 +02:00
obscuren
35806ccc1c build server fix 2015-05-28 17:18:13 +02:00
Jeffrey Wilcke
b25e8b7079 Merge pull request #1142 from obscuren/100-pct-block-prop
eth: 100% block propogation
2015-05-28 08:07:11 -07:00
obscuren
e5d7627427 eth: 100% block propogation 2015-05-28 17:01:44 +02:00
Jeffrey Wilcke
a225ef9c13 Merge pull request #1140 from Gustav-Simonsson/fix_account_unlock_logging
Validate account length and avoid slicing in logging
2015-05-28 07:39:13 -07:00
Jeffrey Wilcke
b6e137b2b4 Merge pull request #1141 from obscuren/parallelisation-issue
Parallelisation issue
2015-05-28 07:37:37 -07:00
Jeffrey Wilcke
03178a77b6 Merge pull request #1132 from obscuren/log_optimisations
core: log optimisations
2015-05-28 07:35:07 -07:00
obscuren
16038b4e67 core: added bad block 2015-05-28 16:26:19 +02:00
obscuren
109f995684 core: log block hash during nonce error 2015-05-28 15:46:36 +02:00
obscuren
75f5ae80fd core: partially removed nonce parallelisation and added merge error chk
Invalid forks are now detected

Current setup of parellelisation actually inserts bad blocks. This fix
is tmp until a better one is found
2015-05-28 15:35:50 +02:00
Gustav Simonsson
9138955ba5 Validate account length and avoid slicing in logging 2015-05-28 15:20:05 +02:00
Jeffrey Wilcke
4baa5ca963 Merge pull request #1137 from obscuren/web3_update
cmd/geth: updated web3
2015-05-28 04:40:14 -07:00
obscuren
598e454d46 cmd/geth: updated web3 2015-05-28 13:24:09 +02:00
Jeffrey Wilcke
9f467c387a Merge pull request #1123 from fjl/lean-blockchain-commands
cmd/geth: leaner blockchain commands
2015-05-28 04:17:47 -07:00
Jeffrey Wilcke
8add3bb009 Merge pull request #1135 from karalabe/tempban-invalid-hashes
core, eth/downloader: expose the bad hashes, check in downloader
2015-05-28 04:13:08 -07:00
Péter Szilágyi
29b0480cfb core, eth/downloader: expose the bad hashes, check in downloader 2015-05-28 14:03:10 +03:00
Felix Lange
e84bbcce3c cmd/geth: don't flush databases after import 2015-05-28 01:20:58 +02:00
Felix Lange
e1fe75e3b6 cmd/utils: use constant for import batch size 2015-05-28 01:20:58 +02:00
Felix Lange
a8bc2181c9 cmd/utils: skip batches with known blocks during import
This makes block importing restartable.
2015-05-28 01:20:58 +02:00
Felix Lange
67effb94b6 cmd/geth, cmd/utils: make chain importing interruptible
Interrupting import with Ctrl-C could cause database corruption
because the signal wasn't handled. utils.ImportChain now checks
for a queued interrupt on every batch.
2015-05-28 01:09:26 +02:00
Felix Lange
705beb4c25 cmd/utils: print errors only once if stdout and stderr are the same file 2015-05-28 01:09:26 +02:00
Felix Lange
74706a0f02 cmd/geth, cmd/utils: rename utils.Get* -> utils.Make*
The renaming should make it clearer that these functions create a new
instance for every call. @obscuren suggested this renaming a while ago.
2015-05-28 01:09:26 +02:00
Felix Lange
8e4512a5e7 p2p/nat: bump timeout in TestAutoDiscRace 2015-05-28 01:09:26 +02:00
Felix Lange
651030c98d cmd/geth: move blockchain commands to chaincmd.go 2015-05-28 01:09:26 +02:00
Felix Lange
62671c93c4 cmd/mist: use utils.SetupLogger 2015-05-28 01:09:26 +02:00
Felix Lange
3b9808f23c cmd/geth, cmd/utils: don't use Ethereum for import, export and upgradedb
The blockchain commands don't need the full stack. With this change,
p2p, miner, downloader, etc are no longer started for blockchain
operations.
2015-05-28 01:09:26 +02:00
obscuren
e3253b5d5e core: fixed an issue with storing receipts 2015-05-28 01:00:23 +02:00
Jeffrey Wilcke
27e0d2a973 Merge pull request #1128 from karalabe/hard-disconnect-trial
eth: hard disconnect if a peer is flaky
2015-05-27 15:28:39 -07:00
Jeffrey Wilcke
5479be9f64 Merge pull request #1129 from obscuren/database_cache_removal
ethdb, common: cache removal
2015-05-27 10:00:08 -07:00
Jeffrey Wilcke
903b95fffa Merge pull request #1124 from karalabe/detaied-download-progress
cmd/geth: expand admin.progress() to something meaningful
2015-05-27 09:05:46 -07:00
obscuren
020006a8ed common, ethdb: removed caching and LastTD 2015-05-27 18:03:16 +02:00
Péter Szilágyi
5235e01b8d eth: hard disconnect if a peer is flaky 2015-05-27 18:58:51 +03:00
obscuren
7595716816 core: adjust gas calculation 2015-05-27 17:01:28 +02:00
Péter Szilágyi
3f91ee4ff8 cmd/geth: expand admin.progress() to something meaningful 2015-05-27 16:46:46 +03:00
Jeffrey Wilcke
8951a03db3 Merge pull request #1121 from obscuren/miner_time_fix
Miner time fix
2015-05-27 04:51:42 -07:00
Jeffrey Wilcke
e13f413ef5 Merge pull request #1112 from fjl/fix-console-exit
cmd/geth: exit the console cleanly when interrupted
2015-05-27 04:40:29 -07:00
Jeffrey Wilcke
69f7a1da5a Merge pull request #1122 from Gustav-Simonsson/improve_validate_header_comments
Update ValidateHeader comments
2015-05-27 04:34:34 -07:00
obscuren
912ae80350 miner: Added 5 blocks wait in prep for #1067 2015-05-27 13:33:52 +02:00
obscuren
12650e16d3 core, miner: fixed miner time issue and removed future blocks
* Miner should no longer generate blocks with a time stamp less or equal
than it's parent.
* Future blocks are no longer processed and queued directly.
  Closes #1118
2015-05-27 13:30:52 +02:00
Jeffrey Wilcke
34729c365b Merge pull request #1067 from carver/deep-mining-log
miner: log locally mined blocks after they are 5-deep in the chain
2015-05-27 04:30:31 -07:00
Gustav Simonsson
bf5f0b1d0c Update ValidateHeader comments 2015-05-27 13:30:24 +02:00
Jeffrey Wilcke
4b29e5ba85 Merge pull request #1120 from Gustav-Simonsson/revert_gas_limit_change
Revert "core: block.gasLimit - parent.gasLimit <= parent.gasLimit / G…
2015-05-27 04:23:55 -07:00
Gustav Simonsson
14955bd454 Revert "core: block.gasLimit - parent.gasLimit <= parent.gasLimit / GasLimitBoundDivisor"
This reverts commit be2b0501b5.
2015-05-27 13:01:06 +02:00
Jason Carver
de12183d38 deep-mining-log: need ring buffer to be one bigger for all-blocks-mined case 2015-05-26 18:55:52 -07:00
Jason Carver
6019f1bb0a deep-mining-log: only track non-stale blocks
if you track stale blocks, then you quickly overflow your ring buffer in the local network case where you're mining every block and generating a lot of stales.
2015-05-26 18:54:56 -07:00
obscuren
f5ce848cfe Merge branch 'release/0.9.25' into develop 2015-05-27 02:07:13 +02:00
obscuren
70867904a0 Merge branch 'release/0.9.25' 2015-05-27 02:07:03 +02:00
obscuren
2c532a7255 cmd/geth: bump version 0.9.25 2015-05-27 02:06:52 +02:00
Jeffrey Wilcke
aada35af9b Merge pull request #1114 from obscuren/develop
core: block.gasLimit - parent.gasLimit <= parent.gasLimit / GasLimitB…
2015-05-26 17:04:42 -07:00
obscuren
be2b0501b5 core: block.gasLimit - parent.gasLimit <= parent.gasLimit / GasLimitBoundDivisor 2015-05-27 01:52:03 +02:00
Jeffrey Wilcke
3590591e67 Merge pull request #1113 from obscuren/develop
core: block database version update
2015-05-26 16:47:10 -07:00
obscuren
222249e622 cmd/geth: Flush instead of close. This solves a nil ptr error 2015-05-27 01:38:41 +02:00
obscuren
b2f2806055 cmd/geth, core: Updated DB version & seedhash debug method 2015-05-27 01:38:41 +02:00
Felix Lange
9253fc337e cmd/geth: exit the console cleanly when interrupted
This fix applies mostly to unsupported terminals that do not trigger the
special interrupt handling in liner. Supported terminals were covered
because liner.Prompt returns an error if Ctrl-C is pressed.
2015-05-27 00:54:48 +02:00
Péter Szilágyi
612f01400f p2p/discover: bond with seed nodes too (runs only if findnode failed) 2015-05-26 23:30:41 +02:00
Péter Szilágyi
3630432dfb p2p/discovery: fix a cornercase loop if no seeds or bootnodes are known 2015-05-26 23:30:40 +02:00
Péter Szilágyi
f539ed1e66 p2p/discover: force refresh if the table is empty 2015-05-26 23:30:40 +02:00
Péter Szilágyi
5076170f34 p2p/discover: permit temporary bond failures for previously known nodes 2015-05-26 23:30:40 +02:00
Péter Szilágyi
6078aa08eb p2p/discover: watch find failures, evacuate on too many, rebond if failed 2015-05-26 23:30:40 +02:00
Péter Szilágyi
64174f196f p2p/discover: add support for counting findnode failures 2015-05-26 23:30:40 +02:00
Felix Lange
6a674ffea5 Merge pull request #1108 from karalabe/fine-seeding
Fine tune seeder and p2p peer handling
2015-05-26 22:03:11 +02:00
Jeffrey Wilcke
b1f7b5d1f6 Merge pull request #1111 from obscuren/neg_tx_check
core: check negative value transactions. Closes #1109
2015-05-26 11:45:23 -07:00
obscuren
c37389f19c core: check negative value transactions. Closes #1109 2015-05-26 20:38:26 +02:00
Jeffrey Wilcke
a55f408c10 Merge pull request #1090 from fjl/jsre-fixes
jsre: fixes for concurrent use, improved timer handling
2015-05-26 11:06:54 -07:00
Jeffrey Wilcke
39b1fe8e44 Merge pull request #1086 from debris/solidity_std
common/compiler: compile solidity contracts with std library
2015-05-26 10:58:09 -07:00
Jeffrey Wilcke
365eea9fba Merge pull request #1106 from karalabe/silence-useless-downloader-log
eth/downloader: silence "Added N blocks from..." if N == 0
2015-05-26 09:45:44 -07:00
Péter Szilágyi
4de8213887 cmd/geth: fix js console test for p2p server update 2015-05-26 19:35:31 +03:00
Péter Szilágyi
68898a4d6b p2p: fix Self() panic if listening is disabled 2015-05-26 19:16:05 +03:00
Péter Szilágyi
e1a0ee8fc5 cmd/geth, cmd/utils, eth, p2p: pass and honor a no discovery flag 2015-05-26 19:07:24 +03:00
Péter Szilágyi
278183c7e7 eth, p2p: start the p2p server even if maxpeers == 0 2015-05-26 17:49:37 +03:00
obscuren
ceea1a7051 Merge branch 'develop' 2015-05-26 15:35:57 +02:00
obscuren
eae0927597 core: prevent crash when last block fails 2015-05-26 15:35:51 +02:00
Péter Szilágyi
3083ec5e32 eth/downloader: silence "Added N blocks from..." if N == 0 2015-05-26 16:10:28 +03:00
obscuren
2f2dd80e48 Merge branch 'develop' 2015-05-26 14:51:41 +02:00
obscuren
d74ee40c86 cmd/geth: bumped version to 0.9.24 2015-05-26 14:51:28 +02:00
obscuren
e6b143b00d Merge branch 'develop' 2015-05-26 14:50:37 +02:00
obscuren
3386ecb59a Merge branch 'release/0.9.24' into develop 2015-05-26 14:49:06 +02:00
obscuren
52b4e51366 Merge branch 'release/0.9.24' 2015-05-26 14:48:39 +02:00
obscuren
0a85260bcd cmd/geth: bumped version to 0.9.24 2015-05-26 14:08:51 +02:00
Jeffrey Wilcke
245f30c59b Merge pull request #1014 from fjl/p2p-dialer-3000
p2p: new dialer, peer management without locks
2015-05-26 05:06:00 -07:00
Jeffrey Wilcke
fd38ea4149 Merge pull request #1099 from obscuren/fork_fix
Fork fix
2015-05-26 04:50:04 -07:00
obscuren
6c2f6f5b03 tests: removed missing block test 2015-05-26 13:48:10 +02:00
obscuren
a6b46420d0 core: ban hash 38f5bb...a714bc
Hash 38f5bbbffd74804820ffa4bab0cd540e9de229725afb98c1a7e57936f4a714bc
ignored.
2015-05-26 13:48:10 +02:00
obscuren
f6f81169fe core/vm: Fork fix. Removal of appending 0 bytes in memset 2015-05-26 13:48:10 +02:00
obscuren
03faccfb08 tests: updated 2015-05-26 13:48:10 +02:00
Jeffrey Wilcke
0de13b0bba Merge pull request #1102 from karalabe/maintain-block-origins
eth, eth/downloader: surface downloaded block origin, drop on error
2015-05-26 04:31:29 -07:00
Péter Szilágyi
eafdc1f8e3 eth, eth/downloader: surface downloaded block origin, drop on error 2015-05-26 14:00:21 +03:00
Jeffrey Wilcke
5044eb4b26 Merge pull request #1101 from obscuren/issue-1096
core/vm: Cleanups & SUB output fix. Closes #1096
2015-05-26 03:50:27 -07:00
obscuren
b419e2631a core/vm: Cleanups & SUB output fix. Closes #1096 2015-05-26 12:42:33 +02:00
Felix Lange
cc318ff8db Merge pull request #1078 from carver/patch-1
eth: expand acronym in log message from TD
2015-05-25 02:49:53 +02:00
Felix Lange
e221a449e0 cmd/geth, jsre, rpc: run all JS code on the event loop
Some JSRE methods (PrettyPrint, ToVal) bypassed the event loop. All
calls to the JS VM are now wrapped. In order to make this somewhat more
foolproof, the otto VM is now a local variable inside the event loop.
2015-05-25 02:27:37 +02:00
Felix Lange
9e1fd70b50 p2p: decrease frameReadTimeout to 30s
This detects hanging connections sooner. We send a ping every 15s and
other implementation have similar limits.
2015-05-25 01:17:14 +02:00
Felix Lange
1440f9a37a p2p: new dialer, peer management without locks
The most visible change is event-based dialing, which should be an
improvement over the timer-based system that we have at the moment.
The dialer gets a chance to compute new tasks whenever peers change or
dials complete. This is better than checking peers on a timer because
dials happen faster. The dialer can now make more precise decisions
about whom to dial based on the peer set and we can test those
decisions without actually opening any sockets.

Peer management is easier to test because the tests can inject
connections at checkpoints (after enc handshake, after protocol
handshake).

Most of the handshake stuff is now part of the RLPx code. It could be
exported or move to its own package because it is no longer entangled
with Server logic.
2015-05-25 01:17:14 +02:00
Felix Lange
9f38ef5d97 p2p/discover: add ReadRandomNodes 2015-05-25 01:17:14 +02:00
Felix Lange
64564da20b p2p: decrease maximum message size for devp2p to 1kB
The previous limit was 10MB which is unacceptable for all kinds
of reasons, the most important one being that we don't want to
allow the remote side to make us allocate 10MB at handshake time.
2015-05-25 01:17:14 +02:00
Felix Lange
7b93341836 Godeps: add github.com/davecgh/go-spew 2015-05-25 01:17:14 +02:00
Felix Lange
dbdc5fd4b3 p2p: delete Server.Broadcast 2015-05-25 01:17:14 +02:00
Felix Lange
2f249fea44 eth: stop p2p.Server on shutdown 2015-05-25 01:17:14 +02:00
Felix Lange
394826f520 Merge pull request #1066 from karalabe/peer-db-polishes
p2p/discover: evacuate self from node database during iterations
2015-05-25 01:16:23 +02:00
Marek Kotewicz
c31f8e2bd7 compile solidity contracts with std library 2015-05-24 19:12:18 +02:00
Jason Carver
f1ce5877ba do not export ring buffer struct 2015-05-23 12:09:59 -07:00
Jason Carver
8a7fb5fd34 do not export constant for when to log a deep block you mined 2015-05-23 12:09:52 -07:00
Jason Carver
97433f5ef1 expand acronym in log message from TD
to total difficulty
2015-05-22 19:12:59 -07:00
Jason Carver
ba295ec6fe Log locally mined blocks, after they are 5-deep in the chain
This helps determine which blocks are unlikely to end up as uncles

 * Store the 5 most recent locally mined block numbers
 * On every imported block, check if the 5-deep block num is in that store
 * Also confirm that the block is signed with miner's coinbase

Why not just check the coinbase? This log is useful if you're running
multiple miners and want to know if *this* miner is performing well.
2015-05-22 12:53:32 -07:00
Jeffrey Wilcke
b2b9b3b567 Merge pull request #1077 from obscuren/disasm
core/vm, rpc: added disasm to `ext_` RPC
2015-05-22 06:51:38 -07:00
obscuren
7381be8edb core/vm, rpc: added disasm to ext_ RPC 2015-05-22 15:38:46 +02:00
Jeffrey Wilcke
f7415c0bbc Merge pull request #1076 from obscuren/rpc_sign
core: added RPC sign back in
2015-05-22 04:08:51 -07:00
obscuren
6539ccae7c core: added RPC sign back in 2015-05-22 13:00:04 +02:00
Jeffrey Wilcke
01ddaf5670 Merge pull request #1072 from Gustav-Simonsson/add_random_tests
Add StateTests/RandomTests and VMTests/RandomTests
2015-05-22 02:34:48 -07:00
Jeffrey Wilcke
f5e112ae5a Merge pull request #1074 from bas-vk/issue1068
make registrar available in console
2015-05-22 02:22:49 -07:00
Bas van Kervel
821b578f7e make registrar available in console 2015-05-22 09:13:45 +02:00
Gustav Simonsson
6ad817e17b Add StateTests/RandomTests and VMTests/RandomTests 2015-05-21 23:04:46 +02:00
obscuren
13e662f6de Merge branch 'develop' 2015-05-21 19:53:35 +02:00
obscuren
054abe20b8 miner: moved break INSIDE the switch ... 2015-05-21 19:53:27 +02:00
obscuren
8c25a83708 Merge branch 'release/0.9.23' into develop 2015-05-21 18:59:26 +02:00
obscuren
2c1c78a6d9 Merge branch 'release/0.9.23' 2015-05-21 18:58:57 +02:00
Péter Szilágyi
cbd3ae6906 p2p/discover: fix #838, evacuate self entries from the node db 2015-05-21 19:41:46 +03:00
Péter Szilágyi
af24c271c7 p2p/discover: fix database presistency test folder 2015-05-21 19:28:10 +03:00
obscuren
3ea9868b65 miner: on downloader.Done/Fail stop immediately. Ignore pending evs 2015-05-21 18:14:32 +02:00
obscuren
4600ecb5c7 cmd/geth: bump version 0.9.23 2015-05-21 18:02:15 +02:00
Jeffrey Wilcke
f1cc3619f5 Merge pull request #1055 from ethersphere/autodag
automatic DAG pregeneration for smooth epoch transitions
2015-05-21 09:01:57 -07:00
Jeffrey Wilcke
af28736bd0 Merge pull request #1064 from karalabe/downloader-attacks
Fix two additional download vulnerabilities
2015-05-21 09:00:12 -07:00
Péter Szilágyi
06a041589f eth, eth/downloader: remove duplicate consts, bump hash fetch to 2K 2015-05-21 18:16:04 +03:00
zelig
bed80133e0 automatic DAG pregeneration for smooth epoch transitions
- backend: AutoDAG bool flag passed from cli/eth.Config to ethereum, autoDAG loop started if true
- backend: autoDAG loop start/stop, remove previous DAG
- cli: AutoDAG bool flag, off by default, but automatically ON if mining
- admin jsre: add startAutoDAG stopAutoDAG and makeDAG in miner section
- switch on/off DAG autogeneration when miner started/stopped on console
2015-05-21 15:53:42 +01:00
Jeffrey Wilcke
1da145675d Merge pull request #1063 from bas-vk/issue1053
prefix dapp key/value entries in extradb
2015-05-21 06:43:17 -07:00
Bas van Kervel
a61e6788db prefix dapp key/value entries in extradb 2015-05-21 15:20:38 +02:00
Jeffrey Wilcke
90b672f1af Merge pull request #1062 from Gustav-Simonsson/tests_updates
Tests updates
2015-05-21 04:49:23 -07:00
Jeffrey Wilcke
bf7dcfce36 Merge pull request #1059 from obscuren/cleanup
Cleanup
2015-05-21 04:11:36 -07:00
obscuren
907848997b miner: one-shot update loop 2015-05-21 11:57:00 +02:00
obscuren
207bd55751 eth: reduced max open files for LevelDB 2015-05-21 11:45:35 +02:00
obscuren
84cd618585 ethdb: documentation and corruption recovery 2015-05-21 11:43:05 +02:00
obscuren
ef8744d9fc core: switched back to set.Set for uncle verification 2015-05-21 11:36:39 +02:00
obscuren
ff1630834c xeth: removed Value 2015-05-21 11:36:05 +02:00
Péter Szilágyi
52db6d8be5 eth/downloader: circumvent a forged block chain with known parent attack 2015-05-21 08:37:27 +03:00
Péter Szilágyi
e8b22b9253 eth/downloader: prevent a peer from dripping bad hashes 2015-05-21 08:07:58 +03:00
Jeffrey Wilcke
9bde7fd72e Merge pull request #1043 from obscuren/test_fixes
core/vm: optimisation on RETURN and updated tests
2015-05-20 03:06:04 -07:00
Jeffrey Wilcke
8fe8ec84f6 Merge pull request #1049 from zsfelfoldi/receipts
Storing tx receipts in extraDb
2015-05-20 03:00:36 -07:00
Jeffrey Wilcke
0300eef94d Merge pull request #1048 from ethersphere/cli-fixes
CLI, JSRE admin and  Solc improvements
2015-05-20 02:31:52 -07:00
Jeffrey Wilcke
6b83a0a589 Merge pull request #1050 from karalabe/handle-slow-download-tester
eth/downloader: fix test to it doesn't time out on a slow machine
2015-05-20 02:29:23 -07:00
Jeffrey Wilcke
adaa49d2cc Merge pull request #1051 from karalabe/fix-odd-naming
eth: fix odd method names in peer set
2015-05-20 02:29:07 -07:00
Péter Szilágyi
3c8227b935 eth: fix odd method names in peer set 2015-05-20 10:34:45 +03:00
Péter Szilágyi
6f54eb6d9a eth/downloader: fix test to it doesn't time out on a slow machine 2015-05-20 10:15:42 +03:00
zsfelfoldi
00ec4132f8 Storing tx receipts in extraDb 2015-05-20 06:41:50 +02:00
zelig
e1d1417729 rpc: NewNotAvailableError instead of NewNotImplementedError if no solc 2015-05-20 05:29:28 +01:00
zelig
00f59f5014 fix eth.sign. now implemented in admin jsre until web3.js has it . 2015-05-20 04:38:20 +01:00
zelig
b0ae84aa0d multiple contract source for solidity compiler: returns contract array if multiple contracts. fixes #1023 2015-05-20 04:11:48 +01:00
zelig
ea893aca8f update web3.js to 0.4.2 2015-05-20 02:58:49 +01:00
zelig
d92172f3d4 add usage doc to wallet import 2015-05-20 02:47:13 +01:00
zelig
4201a18117 remove solc flair 2015-05-20 02:47:13 +01:00
zelig
22b694ee1e solc now in ethereum, fixes solc path setting; setSolc() didnt work 2015-05-20 02:47:13 +01:00
zelig
f9abcee0f9 fix solc tests unskip 2015-05-20 02:47:13 +01:00
obscuren
9617aa8e19 tests: added conditional skip on long running VM tests
Set the TEST_VM_COMPLEX env var to test complex vm tests which require a
lot of ram and quite some time.
2015-05-20 00:21:24 +02:00
obscuren
f5af1fdca8 core/vm: RETURN op code returns pointer to memory rather than copy 2015-05-20 00:21:23 +02:00
obscuren
648b352424 tests/vm: updated tests and skipped output for specific tests
Skipped tests due to large return value
2015-05-20 00:21:23 +02:00
Jeffrey Wilcke
79042223dc Merge pull request #1044 from obscuren/thread_safe_block_cache
core: block cache Has method thread safe
2015-05-19 15:11:41 -07:00
Jeffrey Wilcke
b14ee6ce16 Merge pull request #1046 from tgerring/issue1045
Allow unlocking multiple accounts
2015-05-19 15:11:20 -07:00
obscuren
8dac28f2e3 core: block cache Has method thread safe 2015-05-19 21:50:56 +02:00
obscuren
87a05c8f38 core: skipped tests while cache disabled 2015-05-19 21:50:26 +02:00
Taylor Gerring
32b8565022 Support multiple account unlock attempts 2015-05-19 14:46:32 -05:00
Taylor Gerring
af8ada45e7 Allow unlocking multiple accounts #1045
Separate accounts with spaces when using --unlock
2015-05-19 13:40:41 -05:00
Jeffrey Wilcke
46d6470c43 Merge pull request #1035 from karalabe/eth-threadsafe-peers
eth: make the peer-set thread safe
2015-05-19 08:50:38 -07:00
Jeffrey Wilcke
9b825e2728 Merge pull request #1036 from tgerring/issue884
JSON RPC null field updates
2015-05-19 06:44:31 -07:00
Taylor Gerring
748263d2f0 Use bytes.Repeat() instead of 32-byte literal 2015-05-19 08:14:48 -05:00
obscuren
7d9a13e0d5 core: disable cash tmp 2015-05-19 12:59:58 +02:00
Jeffrey Wilcke
6c2ad7b72e Merge pull request #1034 from obscuren/tx_pool_fix
Nonce fix for failing transactions
2015-05-18 12:28:51 -07:00
obscuren
b7baceefda xeth: remove nonce on error. Fixes #1026 2015-05-18 20:52:25 +02:00
Péter Szilágyi
4755caeb2d eth: remote a superfluous peerSet method 2015-05-18 21:35:42 +03:00
Péter Szilágyi
5422fe5125 eth: make the peer set thread safe 2015-05-18 21:33:37 +03:00
Jeffrey Wilcke
bd0c0a633b Merge pull request #1022 from obscuren/parallel_nonce_checks
Parallelise nonce checks
2015-05-18 11:13:53 -07:00
Jeffrey Wilcke
d6adadc5e3 Merge pull request #1033 from tgerring/issue1010
Add "removedb" command to Geth
2015-05-18 11:12:58 -07:00
Taylor Gerring
0864f1fc8e Remove unused confirm() method 2015-05-18 12:25:33 -05:00
Taylor Gerring
f14feea436 Refactor user prompts into utils 2015-05-18 12:24:30 -05:00
Taylor Gerring
36a4ba3248 Add user confirmation for removedb 2015-05-18 12:04:35 -05:00
obscuren
40717465bc core: fixed tests 2015-05-18 18:16:53 +02:00
obscuren
59c0d01418 core: chain manager no longer exports genesis block 2015-05-18 18:16:53 +02:00
obscuren
bc5e60cd63 miner: stale block notification 2015-05-18 18:16:53 +02:00
Taylor Gerring
fe41bd6fe8 Add "removedb" command to Geth
Removes the state and blockchain databases
2015-05-18 10:54:15 -05:00
Jeffrey Wilcke
a3a5f8b593 Merge pull request #1032 from tgerring/issue1025
Multiple CORS domains support
2015-05-18 08:49:35 -07:00
Taylor Gerring
54b5c8273d XEth comment clarification 2015-05-18 10:41:56 -05:00
Taylor Gerring
a2598e649d Permit multiple CORS domains
Separated by spaces
2015-05-18 10:31:03 -05:00
Taylor Gerring
62d76b8e1f Cleanup 2015-05-18 10:11:27 -05:00
Taylor Gerring
a528bd04db Return nil for certain fields on eth_getTransactionByHash when not part of a block 2015-05-18 10:09:00 -05:00
Jeffrey Wilcke
677796b351 Merge pull request #1031 from bas-vk/issue1012
fixed race condition in miner
2015-05-18 07:33:06 -07:00
Gustav Simonsson
6a72cd45e2 Add wrapper for BlockTests/bcWalletTest.json 2015-05-18 16:28:54 +02:00
Gustav Simonsson
1d51cada3c Handle call depth exception for CREATE 2015-05-18 16:23:20 +02:00
Taylor Gerring
d381d9a74c Return nil for certain fields on eth_getBlockByNumber pending 2015-05-18 09:16:10 -05:00
Bas van Kervel
60561cdca2 fixed issue when miner is not stopping af stop command 2015-05-18 16:09:01 +02:00
Bas van Kervel
7778740315 fixed race condition in miner 2015-05-18 15:13:58 +02:00
obscuren
c67424ecc8 core: parallelise nonce checking when processing blocks
ChainManager now uses a parallel approach to block processing where all
nonces are checked seperatly from the block processing process. This
speeds up the process by about 3 times on my i7
2015-05-18 13:59:22 +02:00
Gustav Simonsson
36419defd1 Update Ethereum JSON test files 2015-05-18 12:45:24 +02:00
obscuren
67d44519ce core: bugfix test 2. set => hash map 2015-05-18 10:49:09 +02:00
obscuren
54f0f82dd1 ret 2015-05-18 10:14:48 +02:00
obscuren
e323f0e831 core: tmp diagnostic logs 2015-05-18 10:13:50 +02:00
obscuren
280b7f23af Merge branch 'hotfix/0.9.22' into develop 2015-05-17 21:35:29 +02:00
obscuren
915fc0e581 Merge branch 'hotfix/0.9.22' 2015-05-17 21:35:15 +02:00
obscuren
3a51d5e80c cmd/geth: fixed ver num 2015-05-17 21:34:28 +02:00
Jeffrey Wilcke
443d024843 Merge pull request #1021 from obscuren/global_chain_lock
core: global chain insert lock
2015-05-17 08:54:16 -07:00
obscuren
27782bbade core: global chain insert lock 2015-05-17 00:55:02 +02:00
Jeffrey Wilcke
426c70ac0b Merge pull request #1011 from obscuren/upgradedb_fix
cmd/geth: delete state db on upgradedb command
2015-05-16 08:48:49 -07:00
obscuren
28ba374f27 cmd/geth: delete state db on upgradedb command 2015-05-16 17:43:19 +02:00
obscuren
ad99089567 Merge branch 'hotfix/0.9.21.1' into develop 2015-05-16 13:04:43 +02:00
obscuren
69f8a1b01a Merge branch 'hotfix/0.9.21-1' 2015-05-16 13:03:30 +02:00
obscuren
ad7b0efbd3 cmd/geth: hotfix bump 2015-05-16 13:02:30 +02:00
obscuren
d98a6f85fc core: further improved uncle error messages 2015-05-16 13:02:30 +02:00
obscuren
c2ef8682fe eth/downloader: moved start event
Start event has moved because it could possibly could stall the miner
2015-05-16 13:02:30 +02:00
Vitalik Buterin
fe64a13cea Adjust miner coinbase and not just miner worker coinbase 2015-05-16 12:56:06 +02:00
obscuren
741fa8ca9c miner: mutex locks on cpu agent. Closes #1007 2015-05-16 12:55:56 +02:00
Vitalik Buterin
61e8296bd8 Adjust miner coinbase and not just miner worker coinbase 2015-05-15 21:23:09 -04:00
obscuren
4b2ee6c30c Merge branch 'release/0.9.21' into develop 2015-05-16 00:27:35 +02:00
obscuren
1564f1a020 Merge branch 'release/0.9.21' 2015-05-16 00:27:13 +02:00
obscuren
7ea76fcf99 core, cmd/geth, cmd/mist: cleanup. bump version 0.9.21 2015-05-16 00:26:36 +02:00
obscuren
79fa05867f xeth: set balance max balance to from in call. Closes #951 2015-05-16 00:03:08 +02:00
Jeffrey Wilcke
d116b9595c Merge pull request #989 from obscuren/develop
core, miner: fork resolving and restart miner after sync op
2015-05-15 15:02:22 -07:00
obscuren
55d85d60fd eth, cmd/geth: start mining from console respects CLI flag 2015-05-15 20:26:15 +02:00
obscuren
d3e84cc8b4 miner: properly check for mining operation on Register 2015-05-15 20:26:15 +02:00
obscuren
5cec1aad15 core, miner: fork resolving and restart miner after sync op
Fork resolving fixes #940
2015-05-15 20:26:15 +02:00
Jeffrey Wilcke
82c0780f81 Merge pull request #996 from karalabe/fix-potential-crosscheck-race
eth/downloader: circumvent download race between crosscheck and hashes
2015-05-15 11:23:44 -07:00
Jeffrey Wilcke
cea1723c68 Merge pull request #997 from karalabe/fix-shitty-test-server-issue
eth/downloader: fix #992, where tests may time out on a slow machine
2015-05-15 11:22:51 -07:00
Péter Szilágyi
412cf98bbc eth/downloader: fix #992, where tests may time out on a slow machine 2015-05-15 21:16:42 +03:00
Péter Szilágyi
f3ae8f50a5 eth/downloader: circumvent download race between crosscheck and hashes 2015-05-15 20:54:10 +03:00
Jeffrey Wilcke
98998534cb Merge pull request #995 from Gustav-Simonsson/update_state_tests_and_vm_create_return
Update state tests and vm create return
2015-05-15 10:31:41 -07:00
Gustav Simonsson
619e8a4f03 Add StateTests/RandomTests but skip for now 2015-05-15 19:17:40 +02:00
Jeffrey Wilcke
164ba56a60 Merge pull request #994 from karalabe/fix-cancel-double-close
eth/downloader: fix cancel channel double close
2015-05-15 10:15:35 -07:00
Gustav Simonsson
32276e8b01 Update StateTests and nil create return on failed code deposit 2015-05-15 18:49:31 +02:00
Péter Szilágyi
4f0d88cb02 eth/downloader: fix cancel channel double close 2015-05-15 19:43:42 +03:00
Gustav Simonsson
830bdb1cfd Update Ethereum JSON tests 2015-05-15 16:08:00 +02:00
Gustav Simonsson
dadf01de60 unskip StateTests/stTransactionTest and use test tx nonce 2015-05-15 16:05:11 +02:00
Jeffrey Wilcke
7d71a75d77 Merge pull request #988 from karalabe/fix-downloader-vulnerabilities
Fix downloader vulnerabilities
2015-05-15 06:38:12 -07:00
Péter Szilágyi
5c1a7b965c eth/downloader: circumvent a fake blockchain attack 2015-05-15 15:04:15 +03:00
Péter Szilágyi
b517967f86 eth/downloader: don't penalize for stale cross checks 2015-05-15 15:03:08 +03:00
Péter Szilágyi
83226762c2 eth, eth/downloader: detect and handle madeup hash attacks 2015-05-15 15:01:58 +03:00
Péter Szilágyi
9ad515d2dc eth: drop a sync peer if it sends an invalid hash chain 2015-05-15 15:01:58 +03:00
Péter Szilágyi
72411eb24c eth/downloader: circumvent hash reordering attacks 2015-05-15 15:01:58 +03:00
Péter Szilágyi
bcc2980179 eth/downloader: check sync after failed attacks 2015-05-15 15:01:58 +03:00
Péter Szilágyi
366e9627e8 eth/downloader: add a test for detecting missing blocks 2015-05-15 15:01:58 +03:00
Péter Szilágyi
cd2fb09051 eth, eth/downloader: prevent hash repeater attack 2015-05-15 15:01:58 +03:00
Jeffrey Wilcke
c1f0d40e34 Merge pull request #987 from obscuren/develop
Miner updates and downloader events
2015-05-15 04:12:46 -07:00
Jeffrey Wilcke
158efbaa45 Merge pull request #984 from tgerring/issue924
Omit replies for RPC notification requests
2015-05-15 04:12:40 -07:00
obscuren
cfb2b51b74 eth/downloader: fixed test 2015-05-15 12:47:32 +02:00
obscuren
f6669db001 core: fixed mining strategy 2015-05-15 12:24:29 +02:00
obscuren
b71091e337 eth, eth/downloader, miner: use download events to check miner start 2015-05-15 00:43:10 +02:00
obscuren
0f76a1c6df core: changed how head events are checked 2015-05-15 00:42:06 +02:00
obscuren
580bae0a86 core: improved uncle messages 2015-05-15 00:40:07 +02:00
Taylor Gerring
44a7f997c3 Unreverse ordering 2015-05-14 15:50:39 -05:00
Taylor Gerring
5c6540452a Omit replies for notification requests
When Id is missing, the client does not want a response
2015-05-14 12:39:57 -05:00
Jeffrey Wilcke
3ac34ee3c4 Merge pull request #975 from obscuren/develop
core: changed log message for forks. closes #952
2015-05-14 10:38:10 -07:00
Jeffrey Wilcke
69c78ddbb4 Merge pull request #983 from tgerring/issue958
Format contract code as hexdata
2015-05-14 10:38:01 -07:00
Jeffrey Wilcke
007bced276 Merge pull request #982 from tgerring/issue962
Check for error on DB fetch of tx
2015-05-14 10:37:30 -07:00
Jeffrey Wilcke
6bc8dec7ac Merge pull request #980 from fjl/geth-test-no-scrypt
cmd/geth: use plain keystore for JS tests
2015-05-14 10:36:56 -07:00
Taylor Gerring
4ad8f1035b Format contract code as hexdata 2015-05-14 12:17:19 -05:00
Taylor Gerring
12f82ab2ff Check for error on DB fetch of tx 2015-05-14 11:57:29 -05:00
Felix Lange
559cc02313 cmd/geth: use plain keystore for JS tests
This reduces the time it takes to run the tests back to 3 seconds.
2015-05-14 17:51:05 +02:00
obscuren
b19bf3ec78 core: changed log message for forks. closes #952 2015-05-14 17:16:46 +02:00
Jeffrey Wilcke
060a07cf69 Merge pull request #974 from karalabe/downloader-fix-unknown-parent-attack
eth, eth/downloader: handle a potential unknown parent attack
2015-05-14 08:16:30 -07:00
Jeffrey Wilcke
90b94e64fc Merge pull request #971 from fjl/p2p-limit-tweaks
p2p: tweak connection limits
2015-05-14 08:15:51 -07:00
Felix Lange
d2f119cf9b p2p/discover: limit open files for node database 2015-05-14 15:01:13 +02:00
Felix Lange
206fe25971 p2p: remove testlog 2015-05-14 14:56:34 +02:00
Felix Lange
7fa2607bd1 p2p/discover: bump maxBondingPingPongs to 16
This should increase the speed a bit because all findnode
results (up to 16) can be verified at the same time.
2015-05-14 14:53:29 +02:00
Felix Lange
691cb90284 p2p: log remote reason when disconnect is requested
The returned reason is currently not used except for the log
message. This change makes the log messages a bit more useful.
The handshake code also returns the remote reason.
2015-05-14 14:53:29 +02:00
Jeffrey Wilcke
ff87c241a7 Merge pull request #973 from bas-vk/issue972
Introduced default unlock duration when an account is unlocked from t…
2015-05-14 05:48:31 -07:00
Péter Szilágyi
fe87feccb1 eth/downloader: add a small additional check to the test 2015-05-14 15:44:54 +03:00
Péter Szilágyi
ebf1eb9359 eth/downloader: remove a previous leftover 2015-05-14 15:40:28 +03:00
Péter Szilágyi
3eda70c64c eth, eth/downloader: remove parent verification from the downlaoder 2015-05-14 15:38:49 +03:00
Bas van Kervel
1fa48bc5e7 Introduced default unlock duration when an account is unlocked from the console 2015-05-14 14:25:48 +02:00
Péter Szilágyi
a4246c2da6 eth, eth/downloader: handle a potential unknown parent attack 2015-05-14 15:24:18 +03:00
Jeffrey Wilcke
7fa740996c Merge pull request #960 from fjl/nat-fixes
p2p/nat: fix UPnP auto discovery
2015-05-14 04:06:13 -07:00
Jeffrey Wilcke
c7a13c9be8 Merge pull request #969 from Gustav-Simonsson/ethash_improve_hashrate_update2
Make read of ethash hashrate atomic and update ethash godep
2015-05-14 04:05:27 -07:00
Jeffrey Wilcke
2b06fe3eff Merge pull request #950 from karalabe/downloader-cancel-sync
eth/downloader: fix deliveries to check for sync cancels
2015-05-14 04:05:13 -07:00
Jeffrey Wilcke
cdeae22356 Merge pull request #949 from bas-vk/issue944
removed invalid filename characters
2015-05-14 04:04:43 -07:00
Felix Lange
5f706cd7f5 cmd/utils: print messages from package log through glog
Some of the dependencies use package log. This change ensures that the
log output looks uniform and respects glog flags.
2015-05-14 12:56:37 +02:00
Felix Lange
c14de2e973 p2p/nat: tweak port mapping log messages and levels
People stil get confused about the messages. This commit changes
the levels so that the only thing printed at the default level (info)
is a successful mapping.
2015-05-14 12:54:59 +02:00
Jeffrey Wilcke
e4aa011d23 Merge pull request #970 from ethereum/vitalik_quick_test
Created separate family and ancestors environment objects
2015-05-14 03:53:04 -07:00
Felix Lange
e7c7b54b82 Godeps: bump github.com/huin/goupnp to c57ae84 2015-05-14 12:29:41 +02:00
Felix Lange
663d4e0aff p2p/nat: add test for UPnP auto discovery via SSDP
The test listens for multicast UDP packets on the default interface
because I couldn't get it to work reliably on loopback without massive
changes to goupnp. This means that the test might fail when there is a
UPnP-enabled router attached on that interface. I checked that locally
by looping the test and it passes reliably because the local SSDP server
always responds faster.
2015-05-14 12:13:19 +02:00
Vitalik Buterin
bdec8c3e41 Combined two loops 2015-05-14 05:02:15 -04:00
Gustav Simonsson
b24f16fa53 Make read of ethash hashrate atomic and update ethash godep 2015-05-14 04:05:49 +02:00
Felix Lange
983f5a717a p2p/nat: fix concurrent access to autodisc Interface
Concurrent calls to Interface methods on autodisc could return a "not
discovered" error if the discovery did not finish before the call.
autodisc.wait expected the done channel to carry the found Interface
but it was closed instead.

The fix is to use sync.Once for now, which is easier to get right.
And there is a test. Finally.

This will have to change again when we introduce re-discovery.
2015-05-14 03:53:11 +02:00
Felix Lange
7efeb4bd96 p2p: bump maxAcceptConns and defaultDialTimout
On the test network, we've seen that it becomes harder to connect
if the queues are so short.
2015-05-14 03:48:28 +02:00
Vitalik Buterin
fca3333f7f Created separate family and ancestors environment objects 2015-05-13 20:46:23 -04:00
Vitalik Buterin
bc83761996 Fixed max uncle count error message 2015-05-13 20:29:57 -04:00
Felix Lange
f7fdb4dfbe Merge pull request #966 from fjl/fixup-discover-chunked-neighbors
p2p/discover: fix out-of-bounds slicing for chunked neighbors packets
2015-05-13 21:52:58 +02:00
Felix Lange
251846d65a p2p/discover: fix out-of-bounds slicing for chunked neighbors packets
The code assumed that Table.closest always returns at least 13 nodes.
This is not true for small tables (e.g. during bootstrap).
2015-05-13 21:49:04 +02:00
Jeffrey Wilcke
fad21fb4a5 Merge pull request #963 from Gustav-Simonsson/fix_keystore_crypto_comments
Update keystore code comments
2015-05-13 11:51:02 -07:00
Felix Lange
b2119d8931 Merge pull request #965 from subtly/patch-1
Better UDP & interop. Limit all received datagrams to 1280bytes.
2015-05-13 20:34:10 +02:00
subtly
8eef2b765a fix test. 2015-05-13 20:15:01 +02:00
subtly
a32693770c Manual send of multiple neighbours packets. Test receiving multiple neighbours packets. 2015-05-13 20:03:17 +02:00
subtly
7473c93668 UDP Interop. Limit datagrams to 1280bytes.
We don't have a UDP which specifies any messages that will be 4KB. Aside from being implemented for months and a necessity for encryption and piggy-backing packets, 1280bytes is ideal, and, means this TODO can be completed!

Why 1280 bytes?
* It's less than the default MTU for most WAN/LAN networks. That means fewer fragmented datagrams (esp on well-connected networks).
* Fragmented datagrams and dropped packets suck and add latency while OS waits for a dropped fragment to never arrive (blocking readLoop())
* Most of our packets are < 1280 bytes.
* 1280 bytes is minimum datagram size and MTU for IPv6 -- on IPv6, a datagram < 1280bytes will *never* be fragmented.

UDP datagrams are dropped. A lot! And fragmented datagrams are worse. If a datagram has a 30% chance of being dropped, then a fragmented datagram has a 60% chance of being dropped. More importantly, we have signed packets and can't do anything with a packet unless we receive the entire datagram because the signature can't be verified. The same is true when we have encrypted packets.

So the solution here to picking an ideal buffer size for receiving datagrams is a number under 1400bytes. And the lower-bound value for IPv6 of 1280 bytes make's it a non-decision. On IPv4 most ISPs and 3g/4g/let networks have an MTU just over 1400 -- and *never* over 1500. Never -- that means packets over 1500 (in reality: ~1450) bytes are fragmented. And probably dropped a lot.

Just to prove the point, here are pings sending non-fragmented packets over wifi/ISP, and a second set of pings via cell-phone tethering. It's important to note that, if *any* router between my system and the EC2 node has a lower MTU, the message would not go through:

On wifi w/normal ISP:
localhost:Debug $ ping -D -s 1450 52.6.250.242
PING 52.6.250.242 (52.6.250.242): 1450 data bytes
1458 bytes from 52.6.250.242: icmp_seq=0 ttl=42 time=104.831 ms
1458 bytes from 52.6.250.242: icmp_seq=1 ttl=42 time=119.004 ms
^C
--- 52.6.250.242 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 104.831/111.918/119.004/7.087 ms
localhost:Debug $ ping -D -s 1480 52.6.250.242
PING 52.6.250.242 (52.6.250.242): 1480 data bytes
ping: sendto: Message too long
ping: sendto: Message too long
Request timeout for icmp_seq 0
ping: sendto: Message too long
Request timeout for icmp_seq 1


Tethering to O2:
localhost:Debug $ ping -D -s 1480 52.6.250.242
PING 52.6.250.242 (52.6.250.242): 1480 data bytes
ping: sendto: Message too long
ping: sendto: Message too long
Request timeout for icmp_seq 0
^C
--- 52.6.250.242 ping statistics ---
2 packets transmitted, 0 packets received, 100.0% packet loss
localhost:Debug $ ping -D -s 1450 52.6.250.242
PING 52.6.250.242 (52.6.250.242): 1450 data bytes
1458 bytes from 52.6.250.242: icmp_seq=0 ttl=42 time=107.844 ms
1458 bytes from 52.6.250.242: icmp_seq=1 ttl=42 time=105.127 ms
1458 bytes from 52.6.250.242: icmp_seq=2 ttl=42 time=120.483 ms
1458 bytes from 52.6.250.242: icmp_seq=3 ttl=42 time=102.136 ms
2015-05-13 19:03:00 +02:00
Gustav Simonsson
56a5592ea0 Update keystore code comments 2015-05-13 18:33:31 +02:00
Péter Szilágyi
3edc4698fe Merge pull request #954 from karalabe/fix-downloader-nil-panic
eth/downloader: fix nil panic caused by wrong variable use
2015-05-13 18:15:18 +02:00
Péter Szilágyi
910a6d4e46 eth/downloader: fix nil panic caused by wrong variable use 2015-05-13 17:25:01 +03:00
Péter Szilágyi
de3a71cafd eth/downloader: remove a redundant sync progress check 2015-05-13 16:56:01 +03:00
Péter Szilágyi
48ee0777a5 eth/downloader: add a user sync notificaton 2015-05-13 16:03:05 +03:00
Péter Szilágyi
ec57aa64cd eth/downloader: sync the cancel channel during cancel too 2015-05-13 14:01:08 +03:00
Péter Szilágyi
ee0c892303 eth/downloader: fix deliveries to check for sync cancels 2015-05-13 13:47:21 +03:00
Jeffrey Wilcke
7cb0e24245 Merge pull request #948 from karalabe/fix-downlaoder-activepeer-shadow
eth/downloader: fix active peer shadowing, polish func names
2015-05-13 03:46:29 -07:00
Bas van Kervel
e30e9fe979 removed invalid filename characters 2015-05-13 12:38:12 +02:00
Péter Szilágyi
d2d5dbc6fb eth/downloader: fix active peer shadowing, polish func names 2015-05-13 13:13:43 +03:00
Jeffrey Wilcke
6dec90464d Merge pull request #946 from Gustav-Simonsson/fix_geth_unlock_account
Fix hex conversion in --unlock and log when successful
2015-05-13 01:58:32 -07:00
Gustav Simonsson
b5b53d8b32 Fix hex conversion in --unlock and log when successful 2015-05-13 01:11:17 +02:00
obscuren
28d6b30c0f Merge branch 'release/0.9.20' into develop 2015-05-12 19:05:51 +02:00
obscuren
8e24378cc1 Merge branch 'release/0.9.20' 2015-05-12 19:05:33 +02:00
obscuren
8fe01b4bfa eth: 100% tx propagation 2015-05-12 19:01:01 +02:00
obscuren
36ce54e5dc cmd/geth: bump version to 0.9.20 2015-05-12 19:01:01 +02:00
Jeffrey Wilcke
d6357aa616 Merge pull request #631 from Gustav-Simonsson/improve_key_store_crypto
Improve key store crypto
2015-05-12 10:00:35 -07:00
Gustav Simonsson
e389585f1f Change default keystore dir 2015-05-12 18:33:04 +02:00
Gustav Simonsson
231fe04f03 Fix address type in js test 2015-05-12 17:48:21 +02:00
Jeffrey Wilcke
58d6ec689f Merge pull request #933 from bas-vk/issue928
replaced path with platform aware filepath module
2015-05-12 08:23:46 -07:00
Gustav Simonsson
037772fc07 fix hex conversion bug in RPC for byte slices 2015-05-12 17:22:17 +02:00
Gustav Simonsson
8001e48115 Fix natspec test (again x2) types 2015-05-12 17:22:17 +02:00
Gustav Simonsson
2c1b0ff17e Update key store to new spec but keep address field for now
* Also fix address types post-rebase
2015-05-12 17:22:17 +02:00
Gustav Simonsson
fe9e95a3fd Fix natspec e2e test accounts type (again) 2015-05-12 17:22:17 +02:00
Gustav Simonsson
940952f757 Fix HEX hack in xeth accounts() 2015-05-12 17:22:17 +02:00
Gustav Simonsson
f98e002d98 Address pull request comments; key header and hex encoding
* Remove key header from unencrypted key file format and replace
  it with a version field
* Change encoding of bytes in key files from base64 to hex
2015-05-12 17:22:17 +02:00
Gustav Simonsson
313eec33ad Revert "Add key header to unencrypted key file"
This reverts commit a94d4ba0b53c4558ab838aaed635a2ff66ddfa53.
2015-05-12 17:19:39 +02:00
Gustav Simonsson
8754f2b768 Fix common.Address / []byte type conversions 2015-05-12 17:19:39 +02:00
Gustav Simonsson
cd88295f5a Add key header to unencrypted key file 2015-05-12 17:19:39 +02:00
Gustav Simonsson
29a5a92d13 Add key header to encrypted keys
* Add key header containing key version, kdf and kdf params
* Store key header as JSON in the key file
* Read in KDF params from key header
* Include key header in MAC calculation and MAC verification
2015-05-12 17:19:39 +02:00
Gustav Simonsson
ac3371bcb6 Correct accounts hex in XETH API 2015-05-12 17:19:39 +02:00
Gustav Simonsson
da9fe951da Use common.Address type for accounts.Address 2015-05-12 17:19:39 +02:00
Gustav Simonsson
6b23094cff Improve key store passphrase crypto
* Change MAC-then-Encrypt to Encrypt-then-MAC
* Change AES256 to AES128
* Use first 16 bytes of KDF derived key for AES and
  remaining 16 for MAC
2015-05-12 17:18:30 +02:00
Gustav Simonsson
9918b6c84e Remove the awesome, ever misunderstood entropy mixing 2015-05-12 17:18:30 +02:00
Jeffrey Wilcke
f87094b660 Merge pull request #932 from obscuren/develop
xeth, rpc: implement eth_estimateGas. Closes #930
2015-05-12 07:26:38 -07:00
obscuren
dca290d525 sol: skipped source checking step 2015-05-12 16:19:14 +02:00
obscuren
ff99752ddd xeth: use same semantics as block processer for transient calls 2015-05-12 15:53:00 +02:00
Bas van Kervel
899df30c24 fixed identing 2015-05-12 15:23:19 +02:00
Bas van Kervel
95773b9673 removed redundant newlines in import block 2015-05-12 15:20:53 +02:00
obscuren
260536a729 rpc: hexData => hexNum 2015-05-12 15:02:44 +02:00
Bas van Kervel
b79dd188d9 replaced several path.* with filepath.* which is platform independent 2015-05-12 14:24:11 +02:00
obscuren
66de3f0aa8 xeth, rpc: implement eth_estimateGas. Closes #930 2015-05-12 14:21:43 +02:00
obscuren
96d4a7d087 eth, ethdb: lower the amount of open files & improve err messages for db
Closes #880
2015-05-12 14:14:56 +02:00
Jeffrey Wilcke
d82caa5ce3 Merge pull request #899 from ethersphere/solc-test-fix
compiler, cli/js: fix solidity compiler tests
2015-05-12 04:16:49 -07:00
zelig
03bf902b92 compiler, cli/js: fix solidity compiler tests failing when a different version of solc installed 2015-05-12 12:36:54 +02:00
Jeffrey Wilcke
e8d701a3b2 Merge pull request #929 from obscuren/develop
eth, ethdb: lower the amount of open files & improve err messages for db
2015-05-12 03:29:07 -07:00
obscuren
13f8f65a58 eth, ethdb: lower the amount of open files & improve err messages for db
Closes #880
2015-05-12 11:28:55 +02:00
Jeffrey Wilcke
76215ca9f3 Merge pull request #925 from obscuren/worker_owned_accounts
miner, cmd/geth: miner will not ignored owned account transactions
2015-05-11 14:23:51 -07:00
obscuren
97dd4551ef miner, cmd/geth: miner will not ignored owned account transactions
Miner does not ignore low gas txs from accounts that are owned.
2015-05-11 21:47:34 +02:00
Jeffrey Wilcke
0bedf1c376 Merge pull request #918 from obscuren/cpu_miner_fixes
cmd/geth, miner, backend, xeth: Fixed miner threads to be settable
2015-05-11 12:11:27 -07:00
obscuren
48bd48876c eth, eth/downloader: moved pending queue error message to debug 2015-05-11 17:27:34 +02:00
obscuren
21e52efdfe 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)
2015-05-11 17:21:22 +02:00
Péter Szilágyi
064cf16099 eth/downloader: use count instead of peers, clearer 2015-05-11 17:21:22 +02:00
Péter Szilágyi
d37a2559b9 eth/downloader: revert to demotion, use harsher penalty 2015-05-11 17:21:22 +02:00
Péter Szilágyi
70c65835f4 eth/downloader: fix #910, thread safe peers & polishes 2015-05-11 17:21:22 +02:00
Jeffrey Wilcke
59bc541232 Merge pull request #915 from karalabe/downloader-threading-fixes
eth/downloader: fix #910, thread safe peers & polishes
2015-05-11 08:16:37 -07:00
Jeffrey Wilcke
fe7e284709 Merge pull request #920 from tgerring/issue917
Return 32-byte hashes from GetWork
2015-05-11 07:43:56 -07:00
Jeffrey Wilcke
0329e05823 Merge pull request #914 from ethersphere/develop
Signature on arbitrary data using the private keys of an account
2015-05-11 07:43:43 -07:00
Taylor Gerring
8e77f81586 Return 32-byte hashes from GetWork
Ensures that the Get Work results are a consistent length. Closes #917
2015-05-11 10:11:33 -04:00
Péter Szilágyi
fa53c5e074 eth/downloader: use count instead of peers, clearer 2015-05-11 17:10:00 +03:00
Daniel A. Nagy
51d4566cbf Only allow doSign to sign hashes, enforced by using the type common.Hash 2015-05-11 15:54:19 +02:00
Péter Szilágyi
ebbd8b0743 eth/downloader: revert to demotion, use harsher penalty 2015-05-11 16:47:58 +03:00
Daniel A. Nagy
49559e6d5e Interactive signature creation refactored into separate doSign function. 2015-05-11 15:46:18 +02:00
Péter Szilágyi
685862d2ce eth/downloader: fix #910, thread safe peers & polishes 2015-05-11 14:26:20 +03:00
Daniel A. Nagy
a9e1d38612 Merge branch 'develop' of github.com:ethereum/go-ethereum into develop
Conflicts:
	rpc/jeth.go
2015-05-11 12:47:14 +02:00
Jeffrey Wilcke
5176fbc6fa Merge pull request #908 from obscuren/develop
core, eth, miner: improved tx removal & fatal error on db sync err
2015-05-11 02:59:35 -07:00
obscuren
6ecba12650 miner: added log message for mining operation. #912 2015-05-11 11:39:33 +02:00
obscuren
3c6c891680 core: optimise pending transaction processing 2015-05-11 11:39:33 +02:00
obscuren
df323cdb4e rpc: display error message to stdout 2015-05-11 11:39:33 +02:00
obscuren
a2919b5e17 core, eth, miner: improved tx removal & fatal error on db sync err
* core: Added GasPriceChange event
* eth: When one of the DB flush methods error a fatal error log message
  is given. Hopefully this will prevent corrupted databases from
  occuring.
* miner: remove transactions with low gas price. Closes #906, #903
2015-05-11 11:39:33 +02:00
Jeffrey Wilcke
6674ea8d67 Merge pull request #911 from karalabe/whisper-graceful-fail
rpc, xeth: fix #881, gracefully handle offline whisper
2015-05-11 02:29:27 -07:00
Péter Szilágyi
0ad5898c0f rpc, xeth: fix #881, gracefully handle offline whisper 2015-05-11 11:53:53 +03:00
obscuren
00280e62e3 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-05-10 03:39:47 +02:00
obscuren
7d69679935 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum 2015-05-10 03:39:23 +02:00
obscuren
7551264fa6 cmd/geth, cmd/mist: version 0.9.19 2015-05-10 03:38:46 +02:00
Jeffrey Wilcke
3874f02f1b Merge pull request #894 from obscuren/develop
ethdb: set open file limit to 128 for all leveldbs
2015-05-09 18:36:50 -07:00
obscuren
0e211ae203 ethdb: set open file limit to 128 for all leveldbs 2015-05-10 01:55:39 +02:00
Jeffrey Wilcke
bd95871a89 Merge pull request #893 from obscuren/develop
eth: added a cancel method for the downloader
2015-05-09 16:54:06 -07:00
obscuren
05715f27cf eth: added a cancel method for the downloader
Added a cancel method to the downloader which gracefully shuts down any
active syncing process (hash fetching or block downloading) and resets
the queue and remove any pending blocks.

Issue with the downloader which would stall because of an active ongoing
process when an invalid block was found.
2015-05-10 00:34:07 +02:00
obscuren
45dc690947 cmd/mist: version bump 2015-05-09 13:37:22 +02:00
Jeffrey Wilcke
e289b0a1c1 Merge pull request #888 from obscuren/develop
miner, flags: Configurable gas price & log flag change
2015-05-09 04:13:16 -07:00
obscuren
658ac3c257 cmd/geth: bump version 0.9.18 2015-05-09 12:54:27 +02:00
obscuren
7eed47fad5 miner, tests: fixed block test 2015-05-09 12:51:40 +02:00
obscuren
e3a08875f6 miner: start/stop mutex locked. Closes #887 2015-05-09 12:32:36 +02:00
obscuren
a7705fc203 miner: moved gasprice to non-method 2015-05-09 12:13:46 +02:00
obscuren
13ddf20bd2 miner, cmd/geth: settable gas price from flags and console
* --gasprice "<num>" flag
* admin.miner.setGasPrice( <num> )
2015-05-09 12:04:00 +02:00
obscuren
cb1fa523e4 cmd/geth, cmd/mist, eth, flags: renamed loglevel to verbosity 2015-05-09 12:00:51 +02:00
Daniel A. Nagy
1fe70a66ba Signature test. 2015-05-08 19:37:35 +02:00
Daniel A. Nagy
62dd9833ec Merge branch 'develop' of github.com:ethereum/go-ethereum into develop 2015-05-08 17:55:53 +02:00
Daniel A. Nagy
3a01e3e39b Signing (almost) works. 2015-05-08 17:52:44 +02:00
obscuren
c8fc4cebe6 version 0.9.17 2015-05-08 17:24:41 +02:00
Jeffrey Wilcke
0214cbe0fb Merge pull request #863 from karalabe/ordered-block-download
eth/downloader: prioritize block fetch based on chain position, cap memo...
2015-05-08 08:19:53 -07:00
Jeffrey Wilcke
7c678554b5 Merge pull request #885 from fjl/p2p-fixes
p2p: more last-minute fixes
2015-05-08 07:47:56 -07:00
Péter Szilágyi
edad47bf0e eth/downloader: fix leftover state between syncs 2015-05-08 17:39:03 +03:00
Daniel A. Nagy
a487396b76 eth_sign added to API for signing arbitrary data. 2015-05-08 16:36:13 +02:00
Daniel A. Nagy
e94aa421c6 New API call for signatures. 2015-05-08 16:17:19 +02:00
Felix Lange
d4f0a67323 p2p: drop connections with no matching protocols 2015-05-08 16:09:55 +02:00
Felix Lange
e45d9bb29d cmd/utils: bump default maxpeers to 25
This should improve ethereum block propagation times since
we're not not broadcasting blocks to 100% of peers.
2015-05-08 16:09:55 +02:00
Felix Lange
9c0f36c46d p2p: use maxDialingConns instead of maxAcceptConns as dial limit 2015-05-08 16:09:55 +02:00
Felix Lange
914e57e49b p2p: fix disconnect at capacity
With the introduction of static/trusted nodes, the peer count
can go above MaxPeers. Update the capacity check to handle this.
While here, decouple the trusted nodes check from the handshake
by passing a function instead.
2015-05-08 16:09:54 +02:00
Jeffrey Wilcke
23454dcfcb Merge pull request #840 from karalabe/throttled-dialing
p2p: throttled handshakes
2015-05-08 06:53:40 -07:00
Péter Szilágyi
bd5720f480 eth, eth/downloader: handle sync errors a bit more gracefully 2015-05-08 15:22:48 +03:00
Jeffrey Wilcke
f819ac7158 Merge pull request #882 from zsfelfoldi/develop
Otto.ToValue concurrency error fixed
2015-05-08 04:54:22 -07:00
Jeffrey Wilcke
15bfae52d2 Merge pull request #876 from obscuren/jsre_fixes
jsre, cmd/geth: updated web3.js and altered settimeout
2015-05-08 04:39:33 -07:00
zsfelfoldi
d7dabce732 ToVal serialization fix 2015-05-08 13:29:48 +02:00
obscuren
f6e71b5749 updated ethereum.js 2015-05-08 13:05:20 +02:00
obscuren
351d6b0d44 jsre, cmd/geth: updated web3.js and altered settimeout 2015-05-08 13:05:20 +02:00
Jeffrey Wilcke
03473d48c1 Merge pull request #875 from Gustav-Simonsson/test_updates
Test updates
2015-05-08 03:50:14 -07:00
Jeffrey Wilcke
45c070fc8b Merge pull request #833 from ethersphere/frontier/solidity
solidity compiler and contract metadocs integration
2015-05-08 03:43:31 -07:00
zsfelfoldi
1de1359e3b Otto.ToValue concurrency error fixed 2015-05-08 12:27:35 +02:00
Jeffrey Wilcke
637b2415d9 Merge pull request #864 from obscuren/filter_changes
xeth, core, event/filter, rpc: new block and transaction filters
2015-05-08 02:56:55 -07:00
Jeffrey Wilcke
69aac4d531 Merge pull request #877 from Gustav-Simonsson/update_ethash_godep
Update ethash deps (more build fixes, tests)
2015-05-08 02:19:50 -07:00
Péter Szilágyi
9d188f73b5 eth, eth/downloader: make synchronize thread safe 2015-05-07 21:07:20 +03:00
Gustav Simonsson
3593662b0c Update ethash deps (more build fixes, tests) 2015-05-07 19:39:55 +02:00
obscuren
60b5a94428 xeth: getTransactionByHash, try pool if db fails 2015-05-07 18:23:24 +02:00
obscuren
dcfecebe1f core: get transaction by hash from transaction pool 2015-05-07 18:22:57 +02:00
obscuren
258a7b9a93 xeth: check proper queue for pending transaction filter 2015-05-07 17:20:57 +02:00
obscuren
b3c9b66f29 rpc: eth_transactionFilter => eth_newPendingTransactionFilter 2015-05-07 14:44:32 +02:00
obscuren
7e160a677d xeth, core, event/filter, rpc: new block and transaction filters 2015-05-07 14:44:32 +02:00
Péter Szilágyi
8735e5addd p2p: increase the handshake timeout in the tests 2015-05-07 15:30:56 +03:00
Péter Szilágyi
4d5a719f25 cmd, eth, p2p: introduce pending peer cli arg, add tests 2015-05-07 15:30:56 +03:00
Péter Szilágyi
af93217775 p2p: reduce the concurrent handshakes to 10/10 in/out 2015-05-07 15:22:09 +03:00
Péter Szilágyi
2060bc8bac p2p: fix dial throttling race condition 2015-05-07 15:22:08 +03:00
Péter Szilágyi
29fef349ef p2p: fix a dialing race in the throttler 2015-05-07 15:22:08 +03:00
Péter Szilágyi
3953bf0031 p2p: limit the outbound dialing too 2015-05-07 15:22:08 +03:00
Péter Szilágyi
43901c9282 eth/downloader: fix priority queue reset, add throttling test 2015-05-07 14:40:50 +03:00
Gustav Simonsson
79eb40fc9f Add bcTotalDifficultyTest and unskip now working tx tests 2015-05-07 13:03:22 +02:00
zelig
009b221692 solidity compiler and contract metadocs integration
* common/compiler: solidity compiler + tests
* rpc: eth_compilers, eth_compileSolidity + tests
* fix natspec test using keystore API, notice exp dynamically changes addr, cleanup
* resolver implements registrars and needs to create reg contract (temp)
* xeth: solidity compiler. expose getter Solc() and paths setter SetSolc(solcPath)
* ethereumApi: implement compiler related RPC calls using XEth - json struct tests
* admin: make use of XEth.SetSolc to allow runtime setting of compiler paths
* cli: command line flags solc to set custom solc bin path
* js admin api with new features debug and contractInfo modules
* wiki is the doc https://github.com/ethereum/go-ethereum/wiki/Contracts-and-Transactions
2015-05-07 12:58:21 +02:00
Gustav Simonsson
2b716aec54 Update JSON test files 2015-05-07 12:44:29 +02:00
Péter Szilágyi
45f8304f3c eth/downloader: fix expiration not running while fetching 2015-05-07 12:59:19 +03:00
Péter Szilágyi
4800c94392 eth/downloader: prioritize block fetch based on chain position, cap memory use 2015-05-07 10:57:34 +03:00
obscuren
97c37356fd updated ignore 2015-05-07 00:03:11 +02:00
Jeffrey Wilcke
82ac4712f1 Merge pull request #867 from Gustav-Simonsson/fix_block_tests_genesis_block_total_difficulty
Fix block tests genesis block total difficulty
2015-05-06 14:52:55 -07:00
Jeffrey Wilcke
a0cb1945ae Merge pull request #866 from fjl/p2p-last-minute
Last minute p2p fixes
2015-05-06 14:49:52 -07:00
Felix Lange
3e2a928caa p2p: stop dialing at half the maximum peer count 2015-05-06 23:44:51 +02:00
Gustav Simonsson
7bc1f487b8 Unskip now working tests, remove debug print 2015-05-06 23:25:44 +02:00
Gustav Simonsson
2808409fbd Add genesis block total difficulty in tests 2015-05-06 23:22:49 +02:00
Felix Lange
6a2fec5309 p2p, whisper: use glog for peer-level logging 2015-05-06 23:19:14 +02:00
obscuren
b719801db0 cmd/geth: gofmt screwup fix 2015-05-06 23:10:46 +02:00
obscuren
458d891c63 cmd/geth: version bump 2015-05-06 23:04:49 +02:00
Felix Lange
bcfd788661 p2p/discover: bump packet timeouts to 500ms 2015-05-06 22:59:00 +02:00
Felix Lange
fd4b75cfa8 p2p/nat: less confusing error logging 2015-05-06 22:58:03 +02:00
obscuren
090f593bc0 Merge branch 'karalabe-cherry-trusted-peers' into develop 2015-05-06 22:54:33 +02:00
obscuren
062fa049d0 fixed merge issue 2015-05-06 22:54:21 +02:00
Jeffrey Wilcke
24d44f35f2 Merge pull request #791 from fjl/discover-sha3-distance
p2p/discover: sha3-based node distance
2015-05-06 13:48:57 -07:00
Jeffrey Wilcke
323216ed85 Merge pull request #861 from obscuren/transaction_pool_fixes
core: transaction pool fixes & resending transactions
2015-05-06 11:23:58 -07:00
Jeffrey Wilcke
1f26a1b863 Merge pull request #859 from Gustav-Simonsson/ethash_reloaded
Ethash reloaded
2015-05-06 11:20:54 -07:00
obscuren
05ac1209c7 cmd/geth: limit pendingTransactions to owned accounts. 2015-05-06 18:30:56 +02:00
obscuren
eb4029257a cmd/mist: updated xeth transact 2015-05-06 18:30:56 +02:00
obscuren
5ebc22807c cmd/geth: admin, switched price with limit in arguments 2015-05-06 18:30:56 +02:00
obscuren
7fed424435 cmd/geth: implemented resending transaction with different gas settings 2015-05-06 18:30:55 +02:00
obscuren
92f998c7ef core: use removeTx instead of delete 2015-05-06 18:30:55 +02:00
obscuren
03bb88dec0 xeth, rpc: added nonce setting through RPC and xeth transact 2015-05-06 18:30:55 +02:00
Gustav Simonsson
054947def7 Add ethash linux & windows build fixes 2015-05-06 17:38:28 +02:00
Jeffrey Wilcke
aa884c052d Merge pull request #771 from zsfelfoldi/develop
jsre: support for setTimeout, sendAsync
2015-05-06 07:27:24 -07:00
Felix Lange
2adcc31bb4 p2p/discover: new distance metric based on sha3(id)
The previous metric was pubkey1^pubkey2, as specified in the Kademlia
paper. We missed that EC public keys are not uniformly distributed.
Using the hash of the public keys addresses that. It also makes it
a bit harder to generate node IDs that are close to a particular node.
2015-05-06 16:10:41 +02:00
zsfelfoldi
c54d123b31 setTimeout and sendAsync implemented
added and eval queue for serializing JSRE vm execution
2015-05-06 15:58:27 +02:00
Jeffrey Wilcke
2e9ed6f7aa Merge pull request #856 from karalabe/windows-console-color-fix
cmd/geth: colorize console output in windows
2015-05-05 04:50:48 -07:00
Péter Szilágyi
c750ef09e1 cmd/geth: fix #853 colorize console output in windows 2015-05-05 14:44:39 +03:00
Gustav Simonsson
f4341c7b7f Unskip working blocktests following ethash cache reusage 2015-05-05 08:34:29 +02:00
Gustav Simonsson
b1cc9cdc74 Integrate new ethash API and change geth makedag cmd 2015-05-05 08:24:15 +02:00
Gustav Simonsson
50659f4b48 Update ethash Godeps files 2015-05-05 07:50:04 +02:00
Péter Szilágyi
4accc187d5 eth, p2p: add trusted node list beside static list 2015-05-04 13:59:51 +03:00
Péter Szilágyi
2382da4179 cmd/mist: fix a stale error message 2015-05-04 13:11:43 +03:00
Péter Szilágyi
54db54931e p2p: add static node dialing test 2015-05-04 13:08:42 +03:00
Jeffrey Wilcke
ac85fdc75e Merge pull request #835 from obscuren/handler_errors
eth, eth/downloader: error handlers and td checks
2015-05-04 02:00:54 -07:00
obscuren
37770ed0d3 core: added unix timestamp to debug output for block proc 2015-05-03 21:49:19 +02:00
obscuren
1470b22e90 downloader: hash downloading recovery
If a peer fails to respond (disconnect, etc) during hash downloading
switch to a different peer which has it's current_hash in the queue's
peer set.
2015-05-03 16:27:03 +02:00
obscuren
ba2236fa51 cmd/geth, eth: bump version & tmp fix for incorrect TD peers 2015-05-03 14:11:47 +02:00
obscuren
f2a2b2ac70 eth/downloader: put back hashes on block overflow error 2015-05-03 14:11:00 +02:00
obscuren
493181ea09 eth/downloader: changed has to blockHashes for chain linking 2015-05-03 14:10:31 +02:00
obscuren
c5b8acbaf0 core: print ignored blocks 2015-05-03 14:09:50 +02:00
obscuren
25bc88113f eth/downloader: added additional tests 2015-05-03 14:09:33 +02:00
obscuren
c6ad3aec05 eth,core: changed NewTicker to Tick 2015-05-03 13:27:37 +02:00
obscuren
b298928c49 core: added 'ignored' status 2015-05-01 16:00:30 +02:00
obscuren
016f152b36 eth, eth/downloader: Moved block processing & graceful shutdown
The downloader is no longer responsible for processing blocks. The
eth-protocol handler now takes care of this instead.

Added graceful shutdown during block processing. Closes #846
2015-05-01 15:58:44 +02:00
Péter Szilágyi
e82ddd9198 p2p: correct a leftover trusted -> static 2015-04-30 19:34:33 +03:00
Péter Szilágyi
413ace37d3 eth, p2p: rename trusted nodes to static, drop inbound extra slots 2015-04-30 19:32:48 +03:00
obscuren
8595198c1b eth/downloader: delete blocks from queue 2015-04-30 17:51:47 +02:00
obscuren
15873fafc0 core: added a wait group to chain manager for graceful shutdown 2015-04-30 17:50:47 +02:00
Péter Szilágyi
701591b403 cmd, eth, p2p: fix review issues enumerated by Felix 2015-04-30 16:15:29 +03:00
Péter Szilágyi
1528dbc171 p2p: add trust check to handshake, test privileged connectivity
Conflicts:
	p2p/server_test.go
2015-04-30 16:06:47 +03:00
Péter Szilágyi
14f32a0c3a p2p: reduce the severity of a debug log 2015-04-30 16:04:09 +03:00
Péter Szilágyi
679c90b873 cmd/geth, cmd/utils, eth: internalize trusted node config file 2015-04-30 16:03:47 +03:00
Péter Szilágyi
de0549fabb cmd/geth, cmd/mist, cmd/utils, eth, p2p: support trusted peers 2015-04-30 16:03:10 +03:00
Felix Lange
d457a1187d common: add Hash.Generate 2015-04-30 15:02:23 +02:00
Felix Lange
72ab6d3255 p2p/discover: track sha3(ID) in Node 2015-04-30 15:02:23 +02:00
Felix Lange
b34a8ef624 p2p, p2p/discover: protocol version 4 2015-04-30 14:57:34 +02:00
Felix Lange
fc747ef4a6 p2p/discover: new endpoint format
This commit changes the discovery protocol to use the new "v4" endpoint
format, which allows for separate UDP and TCP ports and makes it
possible to discover the UDP address after NAT.
2015-04-30 14:57:33 +02:00
obscuren
e4dba36892 core: check for parent in calc TD. TD = (N != 0 == parent.TD) || (== D) 2015-04-30 14:55:21 +02:00
obscuren
28b39267d9 core, eth: verify td of received blocks 2015-04-30 13:50:59 +02:00
obscuren
9b6e8f6195 eth, eth/downloader: remove bad peers from peer set
Peers in the eth protocol handler are now being ignored for catch up.
2015-04-30 12:38:16 +02:00
Jeffrey Wilcke
3fef601903 Merge pull request #830 from obscuren/downloader-missing-parent
eth/downloader: missing parent improvement
2015-04-29 15:52:25 -07:00
obscuren
30b921ef46 cmd/geth: bump version to 0.9.14 2015-04-30 00:40:14 +02:00
obscuren
88292f35db core: remove txs from queue in addition to removal of pending 2015-04-30 00:20:59 +02:00
obscuren
2590a7dabb core: added some additional chain tests for shortest chain 2015-04-30 00:14:41 +02:00
obscuren
04c209980b eth: rely on p2p to determine block propagation 2015-04-29 22:50:58 +02:00
obscuren
01e3d694a6 p2p: added received at to peer message
p2p.Msg.ReceivedAt can be used for determining block propagation from
begining to end.
2015-04-29 22:49:58 +02:00
obscuren
9e63798d03 core/types, eth: meassure and display propagation times 2015-04-29 19:55:30 +02:00
obscuren
f8c27d7159 eth/downloader: drop block 2015-04-29 19:55:04 +02:00
obscuren
c930045834 core: fixed tetst to reflect (int, error) return by insertChain 2015-04-29 15:27:04 +02:00
obscuren
dfbf580354 eth/downloader: ignore orphan blocks in the downloader.
When blocks have been sorted and are being processed, orphan blocks
should be ignored and thrown out. The protocol handler is responsible
for downloading blocks which have missing parents.
2015-04-29 14:49:37 +02:00
obscuren
735b029db9 core: return the index of the block that failed when inserting a chain 2015-04-29 14:00:24 +02:00
Jeffrey Wilcke
764e81bf12 Merge pull request #825 from obscuren/develop
core: chain fork fix
2015-04-29 04:47:26 -07:00
Jeffrey Wilcke
bac4440e17 Merge pull request #822 from fjl/makefile-improvements
Makefile improvements
2015-04-29 04:43:38 -07:00
obscuren
13364a2dcf eth/downloader: reset the chain when parent is missing during processing 2015-04-29 13:40:39 +02:00
obscuren
745c368987 cmd/geth: bump version number 2015-04-29 12:54:41 +02:00
obscuren
4e07967711 core: fixed chain reorg during splits
Chain reorgs weren't properly handled when a chain was further ahead.
Previously we'd end up with mixed chains in our canonical numbering
sequence. Added test for this type of forking.

```
     /-o-o-o   A
o-C-+
     \-o-o-o-o B
```

Ends up with with C A1, A2, A3, B4
2015-04-29 12:51:05 +02:00
obscuren
af73d1d682 core/types: added fake parent hash / hash to String() output 2015-04-29 12:51:05 +02:00
obscuren
4b7bdc3766 eth: check if downloader is busy before showing log message 2015-04-29 12:51:05 +02:00
obscuren
7ac24d551b core: seperated proccing mutex and getting mutex 2015-04-29 12:51:04 +02:00
obscuren
9f32117457 core: bump database version 2015-04-29 12:51:04 +02:00
obscuren
a4b79f1dac core: moved mutex locks in insert blocks to start of function
Insert blocks will no longer allow processing of multiple chains at the
same time. The block lock has been moved to start of the function.
2015-04-29 12:51:04 +02:00
obscuren
04a09b7e2d core: set min gas price at startup 2015-04-29 12:51:04 +02:00
Jeffrey Wilcke
32373e3837 Merge pull request #828 from tgerring/pathfixes
Remove path separator literals
2015-04-29 01:54:47 -07:00
Taylor Gerring
f8cdff9a5d Remove path separator literals 2015-04-29 00:30:25 -05:00
Felix Lange
aa03e53ca8 Use Makefile for Travis tests 2015-04-29 02:13:37 +02:00
Felix Lange
c6b983e449 Makefile: add test target 2015-04-29 02:13:37 +02:00
Felix Lange
72d8878084 cmd/mist: always enable whisper
The default value of the Shh option is true, but cli can't
see it because it is not part of the mist options.
2015-04-29 02:13:36 +02:00
Felix Lange
eb5e43022e cmd/geth, cmd/mist: use gitCommit in node name 2015-04-29 02:13:36 +02:00
Felix Lange
71c28cfb0c Makefile: set main.gitCommit when building 2015-04-29 02:13:36 +02:00
Felix Lange
f4e5675303 cmd/mist: add blockchain version flag
This is necessary because cli doesn't see the default
value unless the flag is included.
2015-04-29 02:13:35 +02:00
Felix Lange
26fbea5cb7 README: simplify build instructions 2015-04-29 02:13:35 +02:00
Felix Lange
8fcd71920a Makefile: clean should also delete Godeps/_workspace/pkg 2015-04-29 01:28:35 +02:00
Felix Lange
12df8565cf build: run build commands from the fake workspace root
This ensures that compiler error messages contain the correct path.
2015-04-29 01:28:35 +02:00
Jeffrey Wilcke
a6a49ccbf7 Merge pull request #821 from karalabe/nodedb-fix
p2p/discover: fix api issues caused by leveldb update
2015-04-28 04:07:14 -07:00
Jeffrey Wilcke
a7d894611e Merge pull request #820 from fjl/rlp-readkind-overflow
rlp: fix list bounds check overflow (found by go-fuzz)
2015-04-28 04:04:32 -07:00
Péter Szilágyi
b569550a39 p2p/discover: fix api issues caused by leveldb update 2015-04-28 13:57:57 +03:00
Jeffrey Wilcke
91cb8cdd2a Merge pull request #793 from karalabe/discovery-node-cache
p2p/discover: persistent node database
2015-04-28 03:40:10 -07:00
Jeffrey Wilcke
e88b410b4d Merge pull request #819 from karalabe/leveldb-update
godeps: refresh leveldb, clean up stale dependencies
2015-04-28 02:40:49 -07:00
Péter Szilágyi
7e3b080f85 godeps: update leveldb and snappy, dump serpent-go 2015-04-28 12:18:01 +03:00
obscuren
99027c79fe Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop
Conflicts:
	rpc/api.go
2015-04-28 11:17:41 +02:00
obscuren
bac455c011 Merge branch 'kobigurk-develop' into develop 2015-04-28 11:16:22 +02:00
obscuren
459d898705 eth, rpc, xeth: ext_hanhrate => eth_hashrate 2015-04-28 11:16:03 +02:00
obscuren
46f63ef04f Merge branch 'develop' of https://github.com/kobigurk/go-ethereum into kobigurk-develop 2015-04-28 11:10:44 +02:00
Jeffrey Wilcke
a05c420371 Merge pull request #738 from karalabe/whisper-cleanup
Whisper cleanup, part 3
2015-04-28 01:54:05 -07:00
Felix Lange
dd49c8e43d rlp: fix list bounds check overflow (found by go-fuzz)
The list size checking overflowed if the size information
for a value was bigger than the list. This is resolved by
always performing the check before reading.
2015-04-28 10:28:15 +02:00
Péter Szilágyi
978ffd3097 rpc, xeth: finish cleaning up xeth 2015-04-28 10:49:05 +03:00
Péter Szilágyi
2b9fd6b40a whisper: add full filter test suite 2015-04-28 10:49:05 +03:00
Péter Szilágyi
406e74e2af whisper: fix a small data race duirng peer connection 2015-04-28 10:49:05 +03:00
Péter Szilágyi
70ded4cbf0 xeth: fix un-decoded whisper RPC topic string bug 2015-04-28 10:49:04 +03:00
Péter Szilágyi
e252dae499 rpc: use nil topic wildcards instead of "" 2015-04-28 10:49:04 +03:00
Péter Szilágyi
db615a85ec ui/qt/qwhisper, whisper, xeth: polish topic filter, fix wildcards 2015-04-28 10:49:04 +03:00
Péter Szilágyi
ae4bfc3cfb rpc, ui/qt/qwhisper, whisper, xeth: introduce complex topic filters 2015-04-28 10:49:04 +03:00
Péter Szilágyi
15586368e5 whisper: fix spurious From identity with untargeted messages 2015-04-28 10:49:04 +03:00
Péter Szilágyi
87447f9f3f whisper: fix payload loss in case of plaintext decrypt 2015-04-28 10:49:04 +03:00
Péter Szilágyi
7f48eb8737 whisper, xeth/whisper: surface TTL and hash to the API 2015-04-28 10:49:04 +03:00
Péter Szilágyi
19bc4624ea eth: pull in a lost merge change
Ref: 21c4c155ee
2015-04-28 10:49:04 +03:00
Péter Szilágyi
7948cc0029 rpc, whisper, xeth: fix RPC message retrieval data race 2015-04-28 10:47:35 +03:00
Péter Szilágyi
5aa523e32b whisper: fix send timestamp omission during envelope opening 2015-04-28 10:47:35 +03:00
Péter Szilágyi
3563c59b12 rpc, whisper, xeth: polish whisper RPC interface 2015-04-28 10:47:35 +03:00
Péter Szilágyi
4992765032 p2p/discover: fix goroutine leak due to blocking on sync.Once 2015-04-28 10:28:04 +03:00
Jeffrey Wilcke
182d484aa7 Merge pull request #817 from tgerring/rpcglog
Remove old logger from RPC pkg
2015-04-27 14:51:00 -07:00
Jeffrey Wilcke
f54c2e75c8 Merge pull request #818 from Gustav-Simonsson/add_privkey_loading_to_block_tests
Add privkey loading to block tests
2015-04-27 14:48:49 -07:00
Taylor Gerring
3ad5243b18 Return Gas Price not Gas
And output as quantity, not data
2015-04-27 13:58:32 -05:00
Gustav Simonsson
34c94d5fcd Add loading of block test privkey if present 2015-04-27 20:30:26 +02:00
Gustav Simonsson
2a61611c4f Update JSON tests 2015-04-27 19:09:20 +02:00
Péter Szilágyi
437cf4b3ac p2p/discover: add node expirer and related tests 2015-04-27 17:38:28 +03:00
Taylor Gerring
9a17dd91a4 Add link to Windows 64-bit geth dev build 2015-04-27 09:24:25 -05:00
Taylor Gerring
b071e7f4db Remove old logger from RPC pkg 2015-04-27 09:18:55 -05:00
Péter Szilágyi
a136e2bb22 p2p/discover: parametrize nodedb version, add persistency tests 2015-04-27 15:28:17 +03:00
Péter Szilágyi
75fd738dea p2p/discover: drop a superfluous warning 2015-04-27 15:06:31 +03:00
Péter Szilágyi
706da56f75 p2p/discover: wrap the pinger to update the node db too 2015-04-27 14:56:42 +03:00
Péter Szilágyi
85b4b44235 p2p/discover: use iterator based seeding, drop old protocol test 2015-04-27 14:45:35 +03:00
Péter Szilágyi
8de8f61d36 p2p/discover: write the basic tests, catch RLP bug 2015-04-27 12:33:06 +03:00
Péter Szilágyi
0201c04b95 p2p/discovery: fix issues raised in the nodeDb PR 2015-04-27 10:19:16 +03:00
Jeffrey Wilcke
aa4c25778f Merge pull request #813 from obscuren/general_fixes
General fixes
2015-04-26 03:12:30 -07:00
obscuren
7fd368c586 geth/main: removed crazy welcome message :-( 2015-04-26 11:30:33 +02:00
obscuren
a237ff65ea web3: updated 2015-04-26 11:21:15 +02:00
obscuren
145e02fc54 core, miner: added value check on tx validation
* Changed CalcGasLimit to no longer need current block
* Added a gas * price + value on tx validation
* Transactions in the pool are now re-validated once every X
2015-04-26 11:19:40 +02:00
Jeffrey Wilcke
8d09f95bc7 Merge pull request #805 from obscuren/download_improvements
eth, eth/downloader: improve downloader and remove asynchronousness
2015-04-24 15:56:17 -07:00
obscuren
ed036a2ce7 cmd/geth: bump version number 0.9.12 2015-04-24 23:57:05 +02:00
Jeffrey Wilcke
7afbd0f20d Merge pull request #796 from Gustav-Simonsson/fix_ignoring_of_unexpected_files_in_key_dir
Fix ignore of unexpected files in key dir
2015-04-24 14:37:42 -07:00
Gustav Simonsson
b0bf12ec87 Remove unneeded allocation 2015-04-24 19:40:28 +02:00
obscuren
7ce3d06402 eth/downloader: removed update loop and synch channel 2015-04-24 18:28:46 +02:00
obscuren
405720b218 xeth, core, cmd/utils: Transaction can not be over block gas limit
Transactions will be invalidated when the tx.gas_limit > block.gas_limit
2015-04-24 17:48:13 +02:00
obscuren
3bb6da9bd3 natspec: disabled natspec test 2015-04-24 17:44:22 +02:00
Gustav Simonsson
4d1887093d Use make instead of new for allocation 2015-04-24 17:41:38 +02:00
Péter Szilágyi
8646365b42 cmd/bootnode, eth, p2p, p2p/discover: use a fancier db design 2015-04-24 18:04:41 +03:00
obscuren
1681ee9883 eth: added a few informative messages regarding downloading 2015-04-24 17:03:09 +02:00
Jeffrey Wilcke
c8e21a4d17 Merge pull request #803 from obscuren/log_filter_fixes
core: fixed wildcard topic filters. Closes #725
2015-04-24 07:43:01 -07:00
Jeffrey Wilcke
168ff36676 Merge pull request #773 from ethersphere/frontier/cli
CLI and JS admin changes
2015-04-24 06:58:31 -07:00
obscuren
a9e4b96573 eth/downloader: fixed tests 2015-04-24 15:56:18 +02:00
obscuren
d84c2202e7 eth, eth/downloader: simplified synchronisation process 2015-04-24 15:38:10 +02:00
obscuren
bd9c76097d eth/downloader: removed peer td management and best peer selection 2015-04-24 15:37:07 +02:00
obscuren
31f82eb334 eth, eth/downloader: don't require td on downloader. Fixed tests 2015-04-24 15:04:58 +02:00
obscuren
b86e7526e1 eth, eth/downloader: moved peer selection to protocol handler 2015-04-24 14:40:32 +02:00
Jeffrey Wilcke
81379cbc7b Merge pull request #804 from alexvandesande/avsa-geth
Simpler "welcome"
2015-04-24 04:57:05 -07:00
Alexandre Van de Sande
f229dc8f42 Merge branch 'avsa-geth' of https://github.com/alexvandesande/go-ethereum into avsa-geth 2015-04-24 13:51:29 +02:00
Alexandre Van de Sande
8716278ca8 Smaller frontier cover art 2015-04-24 13:50:23 +02:00
zelig
c5e9a0a71c cli: correct bootnodes flag usage help line 2015-04-24 12:46:53 +01:00
Alexandre Van de Sande
f1126dbb87 Smaller frontier cover art 2015-04-24 13:46:41 +02:00
obscuren
cd2782f59c core: fixed wildcard topic filters. Closes #725 2015-04-24 13:45:21 +02:00
zelig
6b1b5a4a2a cli/js console: if corsDomain is not given to startRpc, we fall back to value set on command line with -corsDomain 2015-04-24 12:45:11 +01:00
zelig
1b7c017076 cli: fatal error if no etherbase for mining 2015-04-24 12:45:11 +01:00
zelig
be843959cb backend: start miner in its go routine (no wait to generate DAG) 2015-04-24 12:45:11 +01:00
zelig
6512b23b98 cli: fatal error if rpc could not be started 2015-04-24 12:45:11 +01:00
zelig
7b2f25b578 cli: clean up flag descriptions, usage docs, account list uses primary and indexes, add help line to account subcnd usage 2015-04-24 12:45:11 +01:00
zelig
22450c069b js console: add cors domain optional argument to startRpc 2015-04-24 12:45:11 +01:00
zelig
a3fb41981e cmd/admin: rename debug.block to debug.processBlock; move backtrace under debug 2015-04-24 12:45:11 +01:00
Jeffrey Wilcke
9caf880ff9 Update README.md 2015-04-24 13:40:20 +02:00
Jeffrey Wilcke
31811365e0 Merge pull request #800 from obscuren/ethereum_js_update
Ethereum js update
2015-04-24 04:34:51 -07:00
obscuren
dc62fb2ee9 web3: updated 2015-04-24 11:39:43 +02:00
obscuren
92c6327593 cmd/geth, jsre: updated ethereum.js => web3.js 2015-04-24 11:37:58 +02:00
Péter Szilágyi
6def110c37 cmd/bootnode, eth, p2p, p2p/discover: clean up the seeder and mesh into eth. 2015-04-24 11:33:55 +03:00
Péter Szilágyi
971702e7a1 p2p/discovery: fix broken tests due to API update 2015-04-24 11:23:20 +03:00
Péter Szilágyi
af923c965f p2p/discovery: use the seed table for finding nodes, auto drop stale ones 2015-04-24 11:23:20 +03:00
Péter Szilágyi
5f735d6fce cmd, eth, p2p, p2p/discover: init and clean up the seed cache 2015-04-24 11:23:20 +03:00
Felix Lange
936c8e19ff p2p/discover: store nodes in leveldb 2015-04-24 11:23:20 +03:00
obscuren
516f49c812 eth: cleanup 2015-04-23 23:30:25 +02:00
Jeffrey Wilcke
b6ec1c720f Merge pull request #797 from tgerring/bootnodes
Bootnodes update
2015-04-23 11:53:18 -07:00
Jeffrey Wilcke
f5e0388f62 Merge pull request #778 from bas-vk/issue764
Moved database update loop to eth/backend
2015-04-23 11:46:27 -07:00
Jeffrey Wilcke
abe08d7be3 Merge pull request #794 from Gustav-Simonsson/block_tests_more_validations
Add block header validations for block tests
2015-04-23 11:41:57 -07:00
Taylor Gerring
24995f9ab7 Updated bootnodes
Update pub key for EU node and add new SA node
2015-04-23 13:06:07 -05:00
Taylor Gerring
154570ebd3 Cleanup README developer info 2015-04-23 13:05:37 -05:00
Bas van Kervel
c12180d005 Merge branch 'issue764' of https://github.com/bas-vk/go-ethereum into issue764 2015-04-23 18:01:15 +02:00
Bas van Kervel
c273ed7d82 Moved leveldb update loop to eth/backend
change order of block insert and update LastBlock

bugfix, wrong hash stored in blockDb
2015-04-23 17:58:58 +02:00
Bas van Kervel
5cfa0e9187 bugfix, wrong hash stored in blockDb 2015-04-23 17:35:05 +02:00
Jeffrey Wilcke
94f2adb80a Merge pull request #792 from veox/doc-crypto-secp256k1
doc: crypto/secp256k1 GMP dependency package name.
2015-04-23 08:11:11 -07:00
Noel Maersk
958c04e79a doc: crypto/secp256k1 GMP dependency package name.
Linux build documentation is mostly geared towards Ubuntu 14.04 (LTS).
Appropriate package is called `libgmp-dev` there.

Note that on pristine installations building `geth` with godep will
fail because this header is missing. This is not documented in the
top-level README, but is on the wiki:

https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu#building-geth-command-line-client

That page recommends `libgmp3-dev`, which ATM provides same version
as `libgmp-dev`.
2015-04-23 17:33:48 +03:00
Jeffrey Wilcke
2f8809df40 Merge pull request #769 from obscuren/develop
core: transaction queue
2015-04-23 02:59:56 -07:00
obscuren
7f14fbd579 core: pending txs now re-validated once every second 2015-04-23 11:50:12 +02:00
obscuren
48135657c4 miner: show error message for gas limit per account 2015-04-23 11:50:12 +02:00
obscuren
d7bab21681 natspec: fixed test to work with new queued transactions 2015-04-23 11:50:12 +02:00
obscuren
fba40e18d9 core: added accessor for queued transactions 2015-04-23 11:50:12 +02:00
obscuren
d3be1a2719 eth: moved mined, tx events to protocol-hnd and improved tx propagation
Transactions are now propagated to peers from which we have not yet
received the transaction. This will significantly reduce the chatter on
the network.

Moved new mined block handler to the protocol handler and moved
transaction handling to protocol handler.
2015-04-23 11:50:12 +02:00
obscuren
888ece0cb2 core: fixed test 2015-04-23 11:50:12 +02:00
obscuren
7edbb0110f core: set the state for the managed tx state
Set the state for the managed tx state instead of creating a new
managed state.
2015-04-23 11:50:12 +02:00
obscuren
1506e00a23 core: improved error message for invalid nonce txs 2015-04-23 11:50:11 +02:00
obscuren
7138404cb0 core: only post event once per tx & fixed test 2015-04-23 11:50:11 +02:00
obscuren
4feb5f6f9c xeth, miner: updated some logging 2015-04-23 11:50:11 +02:00
obscuren
5cb5df003d eth: start tx pool in a goroutine 2015-04-23 11:50:11 +02:00
obscuren
498b24270a core: implemented a queued approach processing transactions
Implemented a new transaction queue. Transactions with a holes in their
nonce sequence are also not propagated over the network.

N: 0,1,2,5,6,7 = propagate 0..2 -- 5..N is kept in the tx pool
2015-04-23 11:50:11 +02:00
Jeffrey Wilcke
2fe54ab233 Merge pull request #779 from Gustav-Simonsson/block_tests_reloaded
Block tests reloaded
2015-04-23 02:49:51 -07:00
Jeffrey Wilcke
0071fbed8c Merge pull request #780 from maran/arm_build
Adding flags to facilitate cross compiling to ARM
2015-04-23 02:22:39 -07:00
Jeffrey Wilcke
67cc80ba66 Merge pull request #786 from tgerring/issue739
Empty Call response should return 0x instead of 0x00. Closes #739
2015-04-23 02:22:35 -07:00
Jeffrey Wilcke
8eefcb8493 Merge pull request #782 from alexvandesande/develop
Changed "Welcome to the Frontier" to something more geeky
2015-04-23 02:11:32 -07:00
Jeffrey Wilcke
359a9773a1 Merge pull request #783 from tgerring/issue777
Issue 777
2015-04-23 02:11:20 -07:00
Jeffrey Wilcke
69788cb973 Merge pull request #784 from tgerring/issue737
Rename eth_Version to eth_protocolVersion. Closes #737
2015-04-23 02:05:20 -07:00
Gustav Simonsson
9d2a156453 Fix ignore of unexpected files in key dir 2015-04-23 05:52:41 +02:00
Gustav Simonsson
7a223721a5 Add block header validations for block tests 2015-04-23 05:32:56 +02:00
Gustav Simonsson
49da462e92 Include ZeroByteAtTheEnd and RandomByteAtTheEnd tests 2015-04-22 23:16:19 +02:00
Gustav Simonsson
4e0a2c8e8c Validate block header UncleHash against calculated hash 2015-04-22 23:16:19 +02:00
Gustav Simonsson
ec6acacc53 Unskip BlockTests/bcInvalidHeaderTest.json wrongUncleHash 2015-04-22 23:16:19 +02:00
Gustav Simonsson
9834f855fa Finally, glorious HEX 2015-04-22 23:16:19 +02:00
Gustav Simonsson
24de35ef09 Add StateTests/stMemoryStressTest.json but skip for now 2015-04-22 23:16:19 +02:00
Gustav Simonsson
5c70333a12 Exclude TransactionWithSvalue0 as it expects invalid s value to be valid 2015-04-22 23:16:18 +02:00
Gustav Simonsson
8ec8bff11c Update github.com/ethereum/tests files 2015-04-22 23:16:18 +02:00
Gustav Simonsson
573bc3e05e Explicitly skip TransactionTests/tt10mbDataField.json 2015-04-22 23:16:17 +02:00
Gustav Simonsson
7254278c09 Add test wrapper for VMTests/vmInputLimits1.json 2015-04-22 23:16:17 +02:00
Felix Lange
c745831118 Merge pull request #787 from ethereum/revert-785-revert-781-develop
Revert "Revert "refactor Dockerfile""
2015-04-22 21:36:01 +02:00
Felix Lange
33083e6f6c Revert "Revert "refactor Dockerfile"" 2015-04-22 21:35:46 +02:00
Taylor Gerring
73b3f2837f Handle bug in parent call response 2015-04-22 14:14:10 -05:00
Felix Lange
95f172d4dc Merge pull request #785 from ethereum/revert-781-develop
Revert "refactor Dockerfile"
2015-04-22 20:52:47 +02:00
Felix Lange
1a0b3d8c84 Revert "refactor Dockerfile" 2015-04-22 20:52:21 +02:00
Taylor Gerring
41e3d01e63 Rename eth_Version to eth_protocolVersion. Closes #737 2015-04-22 13:42:09 -05:00
Taylor Gerring
20bae2b8f6 Tests for magic words 2015-04-22 13:24:29 -05:00
Taylor Gerring
2ea2261156 Accept num or hex as index 2015-04-22 13:24:10 -05:00
Taylor Gerring
35ad9febce Update eth_getBlockByNumber to accept words 2015-04-22 13:14:10 -05:00
caktux
5f6c8832af Merge pull request #781 from caktux/develop
refactor Dockerfile
2015-04-22 13:46:04 -04:00
Alexandre Van de Sande
d2fab43abc Changed "Welcome to the Frontier" to something more geeky 2015-04-22 18:33:33 +02:00
caktux
39047d7d8b refactor Dockerfile 2015-04-22 11:38:54 -04:00
Maran
04e216319e Adding flags to facilitate cross compiling to ARM 2015-04-22 17:04:46 +02:00
Jeffrey Wilcke
35595560f0 Merge pull request #776 from fjl/win32-build-fixes
Win32 build fixes
2015-04-22 06:50:50 -07:00
Bas van Kervel
c9e22976f5 change order of block insert and update LastBlock 2015-04-22 12:50:33 +02:00
Bas van Kervel
07e85d8e14 Moved leveldb update loop to eth/backend 2015-04-22 12:46:41 +02:00
Felix Lange
e1f616fadf cmd/geth: improve the JS tests
These changes ensure that the JS tests run without networking
and fixes the block chain export and its associated test.
2015-04-22 12:31:19 +02:00
Felix Lange
635b66acdc p2p: return zero node from Self if the server is not running
This helps with fixing the tests for cmd/geth to run without networking.
2015-04-22 12:31:19 +02:00
Felix Lange
96e2b6bc07 miner: use 32bit atomic operations
64bit atomic operations are not available on all 32bit platforms.
2015-04-22 12:31:19 +02:00
Felix Lange
9d152d6191 common: delete BinaryLength
The test is failing the 32bit build and the function
is not used anywhere.
2015-04-22 12:31:19 +02:00
Felix Lange
2f4cc72119 Merge pull request #765 from Gustav-Simonsson/more_block_test_improvements
Further fixes to block test wrapper
2015-04-22 11:53:02 +02:00
Jeffrey Wilcke
15550dc8c5 Merge pull request #766 from tgerring/issue762
Treat hexnums as big.Int instead of int64. Closes #762
2015-04-22 02:42:16 -07:00
Taylor Gerring
13dc8627b5 Treat hexnums as big.Int instead of int64 2015-04-21 08:48:57 -05:00
Kobi Gurkan
9e03c48d43 move eth_hashrate to ext 2015-04-21 16:44:08 +03:00
Kobi Gurkan
63c5c7fb2d uses newHexNum for eth_hashrate 2015-04-21 16:44:08 +03:00
Kobi Gurkan
41b83fe1cd adds eth_hashrate RPC method 2015-04-21 16:44:08 +03:00
Jeffrey Wilcke
4ddbf81e74 Updated README to include windows builds 2015-04-21 12:38:01 +02:00
Jeffrey Wilcke
4ad8b28794 Merge pull request #760 from obscuren/develop
core: transaction fixes
2015-04-21 03:14:38 -07:00
obscuren
6c2b703c58 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-21 12:14:07 +02:00
Jeffrey Wilcke
1dc91975ad Merge pull request #756 from Gustav-Simonsson/block_test_improvements
Block test improvements
2015-04-21 03:09:35 -07:00
obscuren
f4cd66dc00 blockpool: deleted 2015-04-21 12:03:02 +02:00
obscuren
ed0817c55d core/rpc: fix for null entries in log filters. Closes #725
You can now specify `null` as a way of saying "not interested in this
topic, match all". core.Filter assumes the zero'd address to be the
wildcard. JSON rpc assumes empty strings to be wildcards.
2015-04-21 12:00:57 +02:00
Jeffrey Wilcke
8fce55b4c2 Merge pull request #763 from aboreum/develop
Remove "minGasPrice" field from JSON responses. Closes. #754
2015-04-21 02:30:40 -07:00
obscuren
093d6d5074 core: removed nonce resetting from the block processor.
All nonce error handling has been moved to the worker
2015-04-21 11:27:12 +02:00
obscuren
1d6d42919e miner: ignore a tx's transactor after a gas limit has been returned
When worker encounters a gas limit error, subsequent txs should be
ignored from that particular account. This will prevent:

1. Nonce errors been thrown all around
2. The "Known tx" error. Closes #719
3. Repeated contract address. Closes #731
2015-04-21 11:26:04 +02:00
Andy
64e8aa6260 syncing to mainline ethereum 2015-04-20 22:19:49 -06:00
Andy
3ef1cd43f6 fix for: Please remove the "minGasPrice" from block returns #754 2015-04-20 22:08:50 -06:00
Gustav Simonsson
b448390889 Further fixes to block test wrapper
* Move go test wrapper for block tests from cmd/geth to tests
* Fix logic for when tests are valid or not, by adding correct
  validations for expected valid/invalid blocks
* Change block insertion helper to work on single blocks
* Add one test case for each file in BlockTests and comment out
  the tests which are currently failing
* Add Skip call in all block tests in lieu of performance fixes
  around ethash cache which are needed before it will be fast enough
  to start / stop the node between each test
2015-04-21 05:23:10 +02:00
Jeffrey Wilcke
4a240608d4 Merge pull request #761 from aboreum/develop
trivial fix for: Broken link for detailed go build instructions #661
2015-04-20 16:04:44 -07:00
Andy
8d85e45c7d syncing to develop 2015-04-20 15:05:13 -06:00
Andy
59a7405a80 Broken link for detailed go build instructions #661 2015-04-20 14:47:12 -06:00
Andy
4494cba489 Merge branch 'develop' of https://github.com/aboreum/go-ethereum into develop
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
2015-04-20 14:43:12 -06:00
Andy
859187931b fix for: Broken link for detailed go build instructions #661 2015-04-20 14:31:26 -06:00
obscuren
79bef9eb16 Merge branch 'develop' of github.com-obscure:obscuren/go-ethereum into develop 2015-04-20 21:57:00 +02:00
obscuren
b8160cc6d4 core: shuffled some code 2015-04-20 20:37:40 +02:00
Jeffrey Wilcke
99e825ad96 Merge pull request #734 from bas-vk/issue-729
admin.StopRPC added to console
2015-04-20 10:34:50 -07:00
Jeffrey Wilcke
3d7c1b8194 Merge pull request #755 from karalabe/command-flags-cleanup
cmd/geth, cmd/utils: add cli flags for pprof and whisper
2015-04-20 09:17:04 -07:00
Péter Szilágyi
3b008723db cmd/geth, cmd/utils: invert --pprof once more 2015-04-20 19:14:49 +03:00
obscuren
f28b2bb6ed core: upgraded block chain version 2015-04-20 18:12:05 +02:00
obscuren
3b45fedb81 Merge branch 'ethersphere-frontier/natspec' into develop 2015-04-20 18:09:10 +02:00
obscuren
36ec42e50c Merge branch 'frontier/natspec' of https://github.com/ethersphere/go-ethereum into ethersphere-frontier/natspec 2015-04-20 18:08:14 +02:00
Péter Szilágyi
c8e2b3710c cmd/geth, cmd/utils: use pprof disable flag, start globally 2015-04-20 18:59:41 +03:00
Gustav Simonsson
805345d135 Add block tests wrapper and fixes for tx tests
* Add fixes to parsing and converting of fields in tx tests
* Correct logic in tx tests; validation of fields and correct
  logic for when RLP decoding works/fails and when this is
  expected or not
* Rename files for consistency
* Add block tests wrapper to run block tests with go test
2015-04-20 17:46:35 +02:00
Péter Szilágyi
8830403acf cmd/geth, cmd/utils: add cli flags for pprof and whisper. 2015-04-20 18:45:37 +03:00
obscuren
76025cc424 geth: added a admin.debug.block command which reprocess the block 2015-04-20 16:03:19 +02:00
obscuren
72d065d491 core: force block process & fixed chain manager test 2015-04-20 16:02:50 +02:00
obscuren
97a9753f87 core: added chain reset mechanism on bad blocks 2015-04-20 12:58:17 +02:00
obscuren
45da3e17e2 core: added chain head reset to known block 2015-04-20 12:29:02 +02:00
obscuren
52584596d4 geth: bump version number 2015-04-20 12:01:39 +02:00
obscuren
97b0c4b697 core: moved TD calculation from proc to chain 2015-04-20 12:01:20 +02:00
obscuren
fa729a0c55 miner: go fmt 2015-04-20 00:41:50 +02:00
Vitalik Buterin
5caf1aa1a9 Switched getWork third output from difficulty to target 2015-04-19 17:42:21 -04:00
zelig
093a9106b0 contract addresses include hex prefix
- simplify resolver and tests
- added missing test for KeyToUrl
- fix notice error message and its test with !%x(MISSING)
- natspec test: insertTx modified - does not prepend 0x to contract address
- disable networking in e2e test
2015-04-19 21:09:30 +01:00
obscuren
2cc9211269 miner: fixed remote miner current work 2015-04-19 21:58:58 +02:00
zelig
71c974f3eb fix end to end test import cycle 2015-04-19 20:57:50 +01:00
zsfelfoldi
e9874cbcc1 fixed resolver test 2015-04-19 20:57:50 +01:00
zsfelfoldi
929428d602 URLhint support for URLs longer than 32 bytes 2015-04-19 20:57:49 +01:00
zsfelfoldi
b6fe9e0c83 added missing source file 2015-04-19 20:57:49 +01:00
zsfelfoldi
bb793c829f fixed incomplete merge 2015-04-19 20:57:49 +01:00
zsfelfoldi
d8fb834386 test account is no longer permanently in genesis block, only put there when testing 2015-04-19 20:57:49 +01:00
zsfelfoldi
dba2367157 NatSpec contracts are now not in the genesis block but added by the test 2015-04-19 20:57:49 +01:00
zsfelfoldi
f255336c2c utils linked to natspec notice eval, test notice now using utils.toHex() 2015-04-19 20:57:49 +01:00
zsfelfoldi
c4b7d4d3f7 NatSpec cli option, resolver tests passing 2015-04-19 20:57:49 +01:00
zsfelfoldi
b46e152171 default fallback NatSpec messages 2015-04-19 20:57:49 +01:00
zsfelfoldi
8e6a068d2d natspec test bugfix 2015-04-19 20:57:49 +01:00
zsfelfoldi
b635cad9fe NatSpec passing end to end test 2015-04-19 20:57:49 +01:00
zsfelfoldi
94489b2269 s 2015-04-19 20:57:49 +01:00
zsfelfoldi
e2d333d209 NatSpec contracts in genesis block, end to end test (unfinished) 2015-04-19 20:57:49 +01:00
zelig
ac0e5e8b6d resolver tests
- add resolver tests and fix resolver to pass
- statereg constructor fixed
- comments added to natspec plus docserver integration for natspec userdoc fetching
2015-04-19 20:57:49 +01:00
zelig
3a540425a3 reorg:
- statereg methods move to natspec/resolver/docserver
- fix failing test on invalid js input
2015-04-19 20:57:48 +01:00
zelig
5b0ea1044a add docserver using net/http Transport/Roundtrip 2015-04-19 20:57:48 +01:00
zsfelfoldi
3136bae4a5 NatSpec, URL register storage retrieval
fixed 2/3 tests
2015-04-19 20:57:48 +01:00
zelig
97a602864a add common/resolver skeleton 2015-04-19 20:57:48 +01:00
zelig
45676382b6 natspec integrated to console frontend confirmTransaction 2015-04-19 20:57:48 +01:00
zelig
d0b3536593 new natspec
- constructor takes abidoc, userdoc
- json parsing of userdoc
- method found by abi data
- notice found from method
2015-04-19 20:57:48 +01:00
obscuren
ea11dba00b Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-19 21:46:41 +02:00
obscuren
5dd56bb474 geth: admin download status 2015-04-19 21:46:19 +02:00
obscuren
2c1a6a349b miner: removed default timer & update dag when threads > 0 2015-04-19 21:45:40 +02:00
Jeffrey Wilcke
e6d36fe356 Merge pull request #748 from fjl/build-script-unix
Makefile: for non-gophers
2015-04-19 17:58:42 +02:00
obscuren
ed07ffcde5 downloader: fixed tests with low ttl 2015-04-19 17:37:01 +02:00
obscuren
dcf1a1988a moved 2015-04-19 17:14:15 +02:00
obscuren
8eff550e8b Merge branch 'fjl-rlp-size-validation' into develop 2015-04-19 17:07:59 +02:00
obscuren
8f3a7e41de Merge branch 'rlp-size-validation' of https://github.com/fjl/go-ethereum into fjl-rlp-size-validation
Conflicts:
	eth/protocol.go
2015-04-19 17:07:40 +02:00
obscuren
4683f9c0a7 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-19 13:33:39 +02:00
obscuren
cce4158cfc Removed debug println 2015-04-19 13:33:14 +02:00
obscuren
3d497be9bd eth: drop blocks with low TD 2015-04-19 13:31:37 +02:00
obscuren
6e1aa91aaf geth: added getBlockRlp for dumping block in rlp format 2015-04-19 13:30:55 +02:00
obscuren
c58918c84a downloader: moved chunk ignoring. Fixes issue with catching up 2015-04-19 13:30:34 +02:00
Bas van Kervel
61885aa965 Don't export types/functions 2015-04-19 10:01:50 +02:00
Bas van Kervel
2c229bac00 Replaced channel pointer field with non pointer channel 2015-04-19 09:55:41 +02:00
Jeffrey Wilcke
9ec56637f9 Merge pull request #749 from fjl/fix-nodekey-persistence
Fix p2p node key persistence
2015-04-19 01:56:56 +02:00
obscuren
4340996572 eth: temp 100% block propagation because of the current state of the net 2015-04-19 01:40:01 +02:00
obscuren
5c59d95532 downloader: defer peer reset after download 2015-04-19 01:39:37 +02:00
Felix Lange
4907d28967 crypto: update {Load,Save}ECDSA comments to mention hex encoding 2015-04-19 01:33:00 +02:00
Felix Lange
da4a0e0555 eth: fix node key persistence
crypto.LoadECDSA has been modified to expect hex data.
The key was being saved as raw bytes, causing the file
to be rewritten on every start.
2015-04-19 01:28:41 +02:00
Felix Lange
48f23746f0 Makefile: for non-gophers
Many people need or want to build go-ethereum from the git repository,
mostly to stay up to date with recent changes. We cannot expect that
people without Go experience grok the Go workspace concept.

With the Makefile, building from github requires only
three steps (provided that a Go toolchain is installed):

    - git clone https://github.com/ethereum/go-ethereum
    - ... install C libraries (libgmp, etc.) ...
    - make
2015-04-19 00:42:34 +02:00
obscuren
86ecdcd5ff downloader: reset hashTtl on receive 2015-04-19 00:15:05 +02:00
obscuren
71aa5fe8a3 Merge branch 'downloader-proto' into develop 2015-04-19 00:09:12 +02:00
obscuren
164b878854 cleanup 2015-04-19 00:08:57 +02:00
Felix Lange
c453f1f370 tests: hopefully improve test conversion helpers
(cherry picked from commit 035a30acbefb5eeadc1fc8dbd567775d5688f8a9)
2015-04-19 00:07:09 +02:00
Felix Lange
235ed7ecb9 cmd/geth, tests: enable running multiple tests from a single file
This commit also changes the block test loading so tests containing
invalid RLP blocks can be loaded and return an error only when they are
run.

(cherry picked from commit 898ba87984791249586b97c9ce340dd087b79d67)
2015-04-19 00:06:52 +02:00
obscuren
434dea3caf eth: removed debug messages to stdout 2015-04-19 00:03:26 +02:00
Felix Lange
2ce21cefdc eth: use NewDB hook also for extra DB
(cherry picked from commit d5083033f15bb815a6212eddae16a7125db58738)
2015-04-18 23:59:31 +02:00
obscuren
50e096e627 downloader: don't remove peers. keep them around 2015-04-18 23:56:08 +02:00
obscuren
03b4cf74a2 geth: added identity flag which allows to set a custom node name 2015-04-18 23:53:30 +02:00
obscuren
d34e4dc5ac Merge branch 'develop' into downloader-proto 2015-04-18 21:26:43 +02:00
obscuren
84f1af6413 core: merge using equal block numbers rather than the current block 2015-04-18 21:23:42 +02:00
obscuren
c8cc523d4d miner: reverted back to old event 2015-04-18 20:51:05 +02:00
obscuren
a1d97ea4db typo 2015-04-18 20:35:49 +02:00
obscuren
c6c22301fa miner: changed listener 2015-04-18 20:26:17 +02:00
obscuren
6830ddb659 downloader: free up peers from work when the downloader resets 2015-04-18 20:25:55 +02:00
obscuren
7c5d50f627 downloader: throw an error if there are no peers available for download
If all peers have been tried during the block download process and some
hashes are unfetchable (available peers > 0 and fetching == 0) throw an
error so the process can be aborted.
2015-04-18 19:30:29 +02:00
obscuren
78e37e98e7 downloader: fixed a race condition for download status 2015-04-18 19:14:25 +02:00
obscuren
0d536734fe eth: adapted to new synchronous api of downloader's AddBlock 2015-04-18 18:57:59 +02:00
obscuren
c2c24b3bb4 downloader: improved downloading and synchronisation
* Downloader's peers keeps track of peer's previously requested hashes
  so that we don't have to re-request
* Changed `AddBlock` to be fully synchronous
2015-04-18 18:55:13 +02:00
obscuren
60613b57d1 downloader: make sure that hashes are only accepted from the active peer 2015-04-18 17:35:03 +02:00
obscuren
ff67fbf964 Merge branch 'develop' into downloader-proto 2015-04-18 15:14:56 +02:00
obscuren
525cefa37a updated ethash 2015-04-18 15:14:44 +02:00
obscuren
8244825bbf downloader: reset the queue if a peer response with an empty hash set 2015-04-18 15:14:12 +02:00
obscuren
eef4776b5b eth: ignore NewBlockMsg with lower td 2015-04-18 14:25:22 +02:00
obscuren
1bc2d83b6f core: improved uncle validation error message 2015-04-18 14:24:44 +02:00
obscuren
8f873b762b downloader: all handlers check for isBusy 2015-04-18 03:15:26 +02:00
obscuren
a6c0a75f9a eth: fixed proper BroadcastBlock for mined blocks 2015-04-18 02:38:13 +02:00
obscuren
c39a7b5c0d Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-18 02:33:04 +02:00
obscuren
89fd752659 rpc: set from. Closes #742 2015-04-18 02:32:55 +02:00
obscuren
f1ae3dc4aa geth: bump version number 2015-04-18 02:27:50 +02:00
obscuren
12e8d9c4dd eth: listen for mined blocks and propagate using the protocol manager 2015-04-18 02:27:37 +02:00
obscuren
ecc74d76cc eth: drop blocks that are known 2015-04-18 02:24:24 +02:00
obscuren
cc436c4b28 eth: additional cleanups to the subprotocol, improved block propagation
* Improved block propagation by sending blocks only to peers to which, as
  far as we know, the peer does not know about.
* Made sub protocol its own manager
* SubProtocol now contains the p2p.Protocol which is used instead of
  a function-returning-protocol thing.
2015-04-18 02:21:07 +02:00
obscuren
c2f410214c eth: began split up of peers and protocol manager 2015-04-18 01:11:09 +02:00
obscuren
2339ee9910 Merge branch 'develop' into downloader-proto
Conflicts:
	eth/downloader/downloader.go
2015-04-18 01:10:32 +02:00
Felix Lange
7dc6c33873 Merge pull request #736 from frozeman/develop
add extra space to miner icon
2015-04-17 22:17:50 +02:00
Fabian Vogelsteller
576393550d add extra space to miner icon 2015-04-17 15:00:37 +02:00
Felix Lange
7180699d40 rlp: require declared number of input elements for array types 2015-04-17 14:45:10 +02:00
Felix Lange
9c7281c17e p2p: make DiscReason bigger than byte
We decode into [1]DiscReason in a few places. That doesn't work anymore
because package rlp no longer accepts RLP lists for byte arrays.
2015-04-17 14:45:10 +02:00
Felix Lange
4d5a518a0b rlp: stop accepting lists for byte slices and byte arrays 2015-04-17 14:45:10 +02:00
Felix Lange
574d5d6ae6 core/types: add rlp tag "nil" for Transaction.Recipient 2015-04-17 14:45:10 +02:00
Felix Lange
cad64fb911 rlp: stricter rules for structs and pointers
The rules have changed as follows:

* When decoding into pointers, empty values no longer produce
  a nil pointer. This can be overriden for struct fields using the
  struct tag "nil".
* When decoding into structs, the input list must contain an element
  for each field.
2015-04-17 14:45:09 +02:00
Felix Lange
1e2c93aa2d rlp: reject non-minimal input strings
Input strings of length 1 containing a byte < 56 are non-minimal and
should be encoded as a single byte instead. Reject such strings.
2015-04-17 14:45:09 +02:00
Felix Lange
6e9f8035a1 rlp: stricter validation of canonical integer format
All integers (including size information in type tags) need to be
encoded using the smallest possible encoding. This commit expands the
stricter validation introduced for *big.Int in commit 59597d23a5
to all integer types and size tags.
2015-04-17 14:45:09 +02:00
Felix Lange
6788f955c2 rlp: fix handling of single byte zero when decoding into a pointer
A single zero byte carries information and should not set the pointer
to nil. This is arguably a corner case. While here, fix the comment
to explain pointer reuse.
2015-04-17 14:45:09 +02:00
Felix Lange
509d0a8d78 whisper: fix comment for rlpenv 2015-04-17 14:45:09 +02:00
Felix Lange
eedbb1ee9a p2p/discover: use rlp.DecodeBytes 2015-04-17 14:45:09 +02:00
Felix Lange
2750ec47b7 rlp: fix integer overflow in list element size validation
It is not safe to add anything to s.size.
2015-04-17 14:45:09 +02:00
Felix Lange
56a48101dc cmd/rlpdump, cmd/utils, eth, p2p, whisper: use rlp input limit 2015-04-17 14:45:09 +02:00
Felix Lange
c35f4fd0bd rlp: check top-level value sizes against input limit
This is a preliminary fix for #420 (SEC-18 RLP decoder unsafe
allocation). If a sane input limit is set on the rlp.Stream,
it should no longer be possible to cause huge []byte allocations.
2015-04-17 14:42:41 +02:00
Felix Lange
4020258801 Merge pull request #718 from karalabe/whisper-cleanup
Whisper cleanup, part 2
2015-04-17 14:10:55 +02:00
obscuren
73eb8e8c20 eth: basic implementation of the downloader 2015-04-17 13:54:18 +02:00
Péter Szilágyi
4afc22ba6e whisper: cleanup lefover scoping 2015-04-17 14:11:46 +03:00
Péter Szilágyi
bd14bd6c5b whisper: hide some internal types 2015-04-17 13:25:18 +03:00
Jeffrey Wilcke
d3ed3285e9 Merge pull request #733 from fjl/p2p-dial-timer
p2p: fix the dial timer
2015-04-17 11:32:55 +02:00
Felix Lange
5528abc795 p2p: fix the dial timer
The dial timer was not reset properly when the peer count reached
MaxPeers.
2015-04-17 08:17:01 +02:00
Jeffrey Wilcke
545ff1e3f3 Merge pull request #728 from tgerring/issue727
Fix RPC Call output when empty
2015-04-17 00:17:40 +02:00
obscuren
2c2ddcbf88 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-17 00:11:58 +02:00
obscuren
eac2df02d1 downloader: fixed a typo 2015-04-17 00:11:45 +02:00
Jeffrey Wilcke
b6d1724dd9 Merge pull request #730 from Gustav-Simonsson/update_transaction_tests
Update transaction tests
2015-04-17 00:09:10 +02:00
Bas van Kervel
ead3dd9759 Stop accepted and alive connections (http keep-alive) when the rpc service is stopped 2015-04-16 19:23:57 +02:00
Péter Szilágyi
e5a03eb066 whisper: don't issue signature warning if none present 2015-04-16 18:24:39 +03:00
Bas van Kervel
57f93d25bd admin.stopRPC support added which stops the RPC HTTP listener 2015-04-16 12:56:51 +02:00
Péter Szilágyi
e5e91e9eb3 whisper: track active peers, add peer cache expiry test 2015-04-16 13:05:35 +03:00
Péter Szilágyi
ee6531c5ff whisper: remove dead code, rename a few constants 2015-04-16 11:20:01 +03:00
obscuren
205378016f downloader: added demotion / promotion in prep. for rep. system 2015-04-16 02:16:33 +02:00
obscuren
eda10c7317 downloader: updated downloader and fixed issues with catch up
Properly ignore blocks coming from peers not in our peer list (blocked)
and do never request anything from bad peers. Added some checks to
account for blocks known when requesting hashes (missing parents).
2015-04-16 01:29:32 +02:00
obscuren
3a51c3b584 Merge branch 'develop' into downloader-proto 2015-04-16 01:28:24 +02:00
obscuren
c4678ffd77 downloader: updated downloader and fixed issues with catch up
Properly ignore blocks coming from peers not in our peer list (blocked)
and do never request anything from bad peers. Added some checks to
account for blocks known when requesting hashes (missing parents).
2015-04-16 00:14:31 +02:00
obscuren
dff39553d4 core: changed split detection to also account for number less than 2015-04-16 00:11:40 +02:00
Gustav Simonsson
c617a6ec79 Fixes for TransactionTests
* Include tests which now has consistent HEX encodings
* Comment out two failing tests: "
  "TransactionWithHihghNonce" due to wrong nonce size
  "TransactionWithSvalueHigh" due to wrong ECDSA s range
* Cleanup conversion functions and fix expected encodings for
  tests validation fields
2015-04-15 22:37:16 +02:00
Gustav Simonsson
2d8a2d0c99 Update JSON tests 2015-04-15 22:36:33 +02:00
Taylor Gerring
6388767df0 Fix call output when empty 2015-04-15 12:45:20 -05:00
obscuren
ec6cbb914b miner: start a newly registered agent if the miner is running. Closes #681 2015-04-15 17:04:22 +02:00
obscuren
52c874a609 common: Added debug reporter
NOTE: For known, non-consensus, hard to reproduce bugs consider the
following method `common.Report("extra", stuff, "you need logged")` will
give you a stack trace and a friendly request to submit it as an issue
on our issue tracker.
2015-04-15 16:39:44 +02:00
obscuren
eaf73b55bc miner: moved bad uncle logging to ridiculous log level. Closes #720 2015-04-15 12:12:20 +02:00
Péter Szilágyi
6ceb253f74 whisper: use async handshakes to handle blocking peers 2015-04-15 13:01:22 +03:00
obscuren
5d2138a2b2 core: fixed issue for logs filter. Closes #629
Log filter `Address` field was cast to a Hash which causes it to always
fail.
2015-04-15 11:59:41 +02:00
obscuren
ccb4722a59 core/types: Changed bloom lookup to take anything bytes backed 2015-04-15 11:58:45 +02:00
Péter Szilágyi
46ea193a49 whisper: remove some unneeded testing complexity 2015-04-15 12:50:10 +03:00
Péter Szilágyi
bcf41797ca whisper: global message expiration tests, polishes 2015-04-15 10:50:31 +03:00
obscuren
d82aaf617c rpc: changed logging to use glog 2015-04-15 00:09:13 +02:00
obscuren
f46af4508b geth: fixed failing cli tests 2015-04-14 21:26:28 +02:00
obscuren
8db7b2374c rpc: change eth_protocolVersion to eth_version. Closes #714 2015-04-14 20:47:21 +02:00
Péter Szilágyi
4fb7ab5d09 whisper: mock tests to use simulated peers 2015-04-14 19:00:57 +03:00
Péter Szilágyi
86372b20c0 whisper: add basic tests for the whiper peers 2015-04-14 18:21:56 +03:00
Péter Szilágyi
f6efdd8aad whisper: shorten constants to TTL and PoW 2015-04-14 15:16:02 +03:00
Péter Szilágyi
1a4cfc173e whisper, xeth/whisper, ui/qt/qwhispe: fix API polish breakages 2015-04-14 15:02:31 +03:00
Péter Szilágyi
e2b7498c9d whisper: add known message expiration to peers, cleanup 2015-04-14 14:28:59 +03:00
obscuren
13eb46ea94 geth: added print block to admin 2015-04-14 12:49:30 +02:00
obscuren
9800c84348 eth: limit the amount of peers that will receive Block/Tx messages
All transaction and block messages are now limited using `sqrt(peers)`
2015-04-14 12:49:15 +02:00
obscuren
8310bcda61 state: fixed mutex lockes 2015-04-14 12:47:54 +02:00
obscuren
474aa924ca p2p: added limiter function to limit package broadcasting 2015-04-14 12:47:31 +02:00
Péter Szilágyi
59bff46505 whisper: general cleanups, documentation 2015-04-14 13:24:43 +03:00
Péter Szilágyi
5205b2f19b whisper: fix anonymous broadcast drop, add broadcast tests 2015-04-14 12:12:47 +03:00
Péter Szilágyi
4af7743663 whisper: add utility functions for creating topics 2015-04-14 11:12:09 +03:00
obscuren
b7e1b686aa Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-14 00:38:53 +02:00
Jeffrey Wilcke
2ea98d9b74 Merge pull request #704 from fjl/p2p-concurrency-fixups
p2p: more concurrency fixups
2015-04-14 00:38:47 +02:00
obscuren
07eebc38b2 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-14 00:38:11 +02:00
obscuren
333d4e0f27 core: during split properly insert parent blocks
During a split parent and grand parent were included in the database but
not in the canonical chain (numbered chain). Added a `merge` function
which finds the common ancestor of the chains and reinserts the missing
blocks.
2015-04-14 00:20:29 +02:00
Felix Lange
f6f9a0d515 Merge pull request #709 from ligi/patch-1
Fix links
2015-04-13 23:46:17 +02:00
ligi
3a33428578 Fix links
Where 404s before - now linking to the path that they stay valid a little longer ;-)
2015-04-13 23:09:23 +02:00
obscuren
4f3c169b4e miner: don't break loop when encountering gas limit reach err
Processing transactions should continue when a transaction throws a gas
limit reached error. Other transactions may actually succeed.
2015-04-13 22:58:53 +02:00
obscuren
d423305f07 state: fixed nonce issue in managed state
Rlock => Lock when creating a new nonce
2015-04-13 22:57:03 +02:00
obscuren
d61ec9ca76 rpc: removed hash from LogRes. Closes #701 2015-04-13 21:28:05 +02:00
Felix Lange
0217652d1b p2p/discover: improve timer handling for reply timeouts 2015-04-13 18:08:11 +02:00
Felix Lange
b8aeb04f6f p2p/discover: remove unused field Node.activeStamp 2015-04-13 17:44:14 +02:00
Felix Lange
b9929d289d p2p: fix unsynchronized map access during Server shutdown
removePeer can be called even after listenLoop and dialLoop have returned.
2015-04-13 17:37:32 +02:00
obscuren
333e539ce2 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-13 17:35:46 +02:00
Jeffrey Wilcke
1fa844aaf5 Merge pull request #702 from ethersphere/frontier/blockpool
blockpool stability fixes:
2015-04-13 17:35:25 +02:00
Jeffrey Wilcke
5f9346bc7a Merge pull request #700 from bas-vk/issue_650
Added blockchain DB versioning support, closes #650
2015-04-13 17:34:34 +02:00
Felix Lange
995fab2ebc p2p: fix yet another disconnect hang
Peer.readLoop will only terminate if the connection is closed. Fix the
hang by closing the connection before waiting for readLoop to terminate.

This also removes the british disconnect procedure where we're waiting
for the remote end to close the connection. I have confirmed with
@subtly that cpp-ethereum doesn't adhere to it either.
2015-04-13 17:34:08 +02:00
obscuren
97d2954e22 eth: added downloader for syncing up the chain 2015-04-13 17:22:32 +02:00
Felix Lange
79a6782c1c p2p: fix goroutine leak when handshake read fails
This regression was introduced in b3c058a9e4.
2015-04-13 17:06:19 +02:00
Jeffrey Wilcke
ad4891a09a Merge pull request #689 from Gustav-Simonsson/add_transaction_tests
Add transaction tests
2015-04-13 16:55:21 +02:00
obscuren
a8a2b2a488 downloader: added missing blocks catchup functionality
When a parent is missing in the block list an attempt should be made to
fetch the missing parent and grandparents.
2015-04-13 16:38:32 +02:00
Péter Szilágyi
cb707ba50c whisper: push work in progress for bug report 2015-04-13 16:19:34 +03:00
zelig
3d57e377a4 blockpool stability fixes:
- follow up locks and fix them
- chainManager: call SetQueued for parentErr future blocks, uncomment TD checks, unskip test
- make ErrIncorrectTD non-fatal to be forgiving to genuine mistaken nodes (temp) but demote them to guard against stuck best peers.
- add purging to bounded nodeCache (config nodeCacheSize)
- use nodeCache when creating blockpool entries and let non-best peers add blocks (performance boost)
- minor error in addError
- reduce idleBestPeerTimeout to 1 minute
- correct status counts and unskip status passing status test
- glogified logging
2015-04-13 13:13:55 +01:00
Felix Lange
faa2747809 Merge pull request #690 from karalabe/whisper-cleanup
Whisper cleanup, part 1
2015-04-13 13:39:59 +02:00
Péter Szilágyi
89358d25a4 whisper: start adding integration tests 2015-04-13 13:15:01 +03:00
Péter Szilágyi
9a53390f49 whisper: clean up and integrate topics 2015-04-13 12:16:51 +03:00
Péter Szilágyi
7b501906db whisper: separate out magic number from the code 2015-04-13 11:31:51 +03:00
Bas van Kervel
49a513bdeb Added blockchain DB versioning support, closes #650 2015-04-13 10:13:52 +02:00
obscuren
7dcb9825c3 downloader: return an error for peer.fetch and return chunk to queue
If a peer was somehow already fetching and somehow managed to end up in
the `available` pool it should return it's work.
2015-04-12 13:36:01 +02:00
Péter Szilágyi
5467e7b312 whisper: fix comment entity capitalizations 2015-04-12 14:34:53 +03:00
obscuren
6efa8db888 downloader: renamed chunks to queue 2015-04-12 13:24:38 +02:00
obscuren
acf8452c33 downloader: implemented new downloader 2015-04-12 12:38:25 +02:00
Jeffrey Wilcke
61db7a71dd Merge pull request #695 from ethersphere/frontier/blockpool
bugfixes for headsection deadlocks
2015-04-11 10:46:34 +02:00
zelig
406feee570 bugfixes for headsection deadlocks
- switchC initialised as closed
- move select in setChainInfoFromBlock out of peer lock
2015-04-11 04:58:53 +01:00
obscuren
f047699afb Updated glog 2015-04-10 19:59:07 +02:00
obscuren
3aa5437a10 Set input to nil for create 2015-04-10 19:59:01 +02:00
obscuren
36fe11378c Bump 2015-04-10 18:21:27 +02:00
obscuren
eb75a77151 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-10 18:21:09 +02:00
Jeffrey Wilcke
6107b53de0 Merge pull request #692 from ethersphere/frontier/blockpool
td update from node + bugfix
2015-04-10 18:20:23 +02:00
obscuren
5d4f69f483 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-10 17:59:38 +02:00
Jeffrey Wilcke
92fbb61625 Merge pull request #691 from fjl/discovery-fixes
p2p: a bunch of fixes
2015-04-10 17:59:32 +02:00
obscuren
3d29805322 Added pprof 2015-04-10 17:38:06 +02:00
zelig
da7332a731 td update from node
- reorg and simplify AddBlock
- introduce nodeCache
- TestPeerPromotionByTdOnBlock unskipped and passes
- move switchC/idleC channel creation around: solves deadlock (now respects the contract with section process: either can activate or complete at any one time)
2015-04-10 16:36:40 +01:00
Felix Lange
c5332537f5 p2p: limit number of lingering inbound pre-handshake connections
This is supposed to apply some back pressure so Server is not accepting
more connections than it can actually handle. The current limit is 50.
This doesn't really need to be configurable, but we'll see how it
behaves in our test nodes and adjust accordingly.
2015-04-10 17:24:41 +02:00
Felix Lange
56977c225e p2p: use RLock instead of Lock for pre-dial checks 2015-04-10 17:23:09 +02:00
Felix Lange
b3c058a9e4 p2p: improve disconnect signaling at handshake time
As of this commit, p2p will disconnect nodes directly after the
encryption handshake if too many peer connections are active.
Errors in the protocol handshake packet are now handled more politely
by sending a disconnect packet before closing the connection.
2015-04-10 16:57:56 +02:00
Péter Szilágyi
f8a4cd7ec1 xeth/whisper, ui/qt/qwhisper: fix API update breaks. 2015-04-10 17:03:08 +03:00
Péter Szilágyi
0e4f21fc37 whisper: polish the Envelope a bit, prep for tests. 2015-04-10 16:52:01 +03:00
Péter Szilágyi
7d8ce53eca whisper: polish the messages, fix some bugs, tests
Bugs fixed:
  - Use randomly generated flags as the spec required.
  - During envelope opening check the first bit only for signature.
2015-04-10 15:53:21 +03:00
Felix Lange
99a1db2d40 p2p: don't mess with the socket deadline in Peer.readLoop
netWrapper already sets a read deadline in ReadMsg.
2015-04-10 13:26:28 +02:00
Felix Lange
145330fdf2 p2p: properly decrement peer wait group counter for setup errors 2015-04-10 13:26:27 +02:00
Felix Lange
f1d710af00 p2p: fix Peer shutdown deadlocks
There were multiple synchronization issues in the disconnect handling,
all caused by the odd special-casing of Peer.readLoop errors. Remove the
special handling of read errors and make readLoop part of the Peer
WaitGroup.

Thanks to @Gustav-Simonsson for pointing at arrows in a diagram
and playing rubber-duck.
2015-04-10 13:26:27 +02:00
Felix Lange
22d1f0faf1 p2p: improve peer selection logic
This commit introduces a new (temporary) peer selection
strategy based on random lookups.

While we're here, also implement the TODOs in dialLoop.
2015-04-10 13:26:27 +02:00
Felix Lange
7be05b4b9d p2p/discover: don't log packet content 2015-04-10 13:26:27 +02:00
Felix Lange
9cd8c96157 p2p/discover: make packet processing less concurrent 2015-04-10 13:26:27 +02:00
Péter Szilágyi
7e54a9c07f whisper: rename test file according to Go style 2015-04-10 13:46:08 +03:00
Péter Szilágyi
a4c8e947b0 whisper: make the test app runnable & do something inside 2015-04-10 13:42:49 +03:00
Gustav Simonsson
6d20d634ca Enable more tx tests by expecting most common encoding of values 2015-04-10 12:34:55 +02:00
Gustav Simonsson
6dc2146ed7 Remove unneeded map assignments for working tx RLP tests 2015-04-10 12:03:46 +02:00
Gustav Simonsson
9ac5671c18 Add TransactionTests wrapped as Go tests
* Add initial go wrapping for TransactionTests with some tests
  disabled in lieu of consistent HEX encodings and a few other
  pending bugfixes
* TODO: Consider better way of perhaps modelling each test in
  the JSON files as a single Go test, instead of one Go test per
  JSON file
2015-04-10 11:55:31 +02:00
Gustav Simonsson
1e18f4544b Update JSON test files 2015-04-10 11:52:31 +02:00
obscuren
fc1d1f9afd Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-10 11:03:46 +02:00
obscuren
3755cfccb3 Skipped td test 2015-04-10 11:03:36 +02:00
Jeffrey Wilcke
20fd60902b Merge pull request #687 from karalabe/develop
xeth: fix #640, panic converting nil recipient to hex.
2015-04-10 11:02:25 +02:00
Péter Szilágyi
d1729acd2b cmd/mist: fix another nil recipient address panic. 2015-04-10 11:43:08 +03:00
Péter Szilágyi
b2b1241dd7 cmd/mist: fix #640, panic converting nil recipient to hex.
Fetching the recipient address from a transaction was changed to return nil
instead of a zero-address, but this code path was not updated, so whenever
a contract was created, a nil panic occured.
2015-04-10 11:20:04 +03:00
Jeffrey Wilcke
4de1e1609a Merge pull request #682 from bas-vk/issue_567
bugfix as a result of PR 671
2015-04-09 23:42:17 +02:00
Bas van Kervel
dc2b9fd458 bugfix as a result of PR 671 2015-04-09 20:06:27 +02:00
obscuren
ec9fbf09aa Added some quotes .... 2015-04-09 18:24:22 +02:00
obscuren
9f5d24be31 glog 2015-04-09 18:16:22 +02:00
obscuren
b0f40beea6 Added proper contract for registrar 2015-04-09 17:59:05 +02:00
obscuren
ab015959e1 bump 2015-04-09 17:54:20 +02:00
obscuren
2747df3df1 added contracts 2015-04-09 17:42:43 +02:00
obscuren
01ee012197 Merge branch 'ethersphere-frontier/blockpool' into develop 2015-04-09 17:40:28 +02:00
obscuren
764a802eaa Disabled TD check
@zelig: Temporarily commented out TD check untill the rest of the network has
been fixed.
2015-04-09 17:39:02 +02:00
obscuren
663fd8f849 Moved log to debug 2015-04-09 17:19:05 +02:00
obscuren
46898f1e55 Merge branch 'frontier/blockpool' of https://github.com/ethersphere/go-ethereum into ethersphere-frontier/blockpool 2015-04-09 16:54:32 +02:00
obscuren
0636e17dbe Added default registrar 2015-04-09 16:37:04 +02:00
zelig
be25396340 separate lock for blacklist 2015-04-09 13:58:35 +01:00
zelig
a009132c24 oops peer unlocked before return - fixes deadlock 2015-04-09 13:58:35 +01:00
zelig
0e2bc23148 uncomment future block TD check, add test for skipping TD check on future block 2015-04-09 13:58:35 +01:00
zelig
e55747a074 fix deadlock issue in AddBlock
- add peer switch channel arg to activateChain - no peer locking within
- proper locking in AddBlock - fixes deadlock issue
- comment out TD check and skip incorrect TD test again for hotfix
2015-04-09 13:58:35 +01:00
zelig
262714fc6c future queued block support
- queued       bool // flag for blockpool to skip TD check
- set to true when future block queued
- in checkTD: skip check if queued
- TODO: add test (insertchain sets future block)
2015-04-09 13:58:35 +01:00
zelig
cbd0b42060 put back checkTD and unskip incorrectTD test 2015-04-09 13:58:35 +01:00
zelig
f546b486bf introduce peers registry on nodes
- TestPeerPromotionByTdOnBlock renamed and skipped for now test should pass iff
  if TD is updated based on an agreement
- senders register in AddBlock, flag records if they are coming from newblock
  message (and therefore advertise their TD with the block) or block message
  (TODO: latter are stored on the cache and updated by checkTD call;
  protocol should also call AddBlock on newblock messages by non-best peers)
- remove TD update from optional TD field in addBlock: this is no longer part of
  the eth protocol spec -> TODO: reflect in wiki
- only initialise peer map if at least two
2015-04-09 13:58:35 +01:00
zelig
42fb9652f5 fix blockpool deadlock
- do not break from headsection on error
[remove peer after protocol quit will close switchC, until then head block can arrive and block on channel while keeping peers lock causing a deadlock.]
- more careful locking in AddBlock
2015-04-09 13:58:35 +01:00
zelig
30830652ae fix TestPoolStatus test crashing, skip tests failing (due to @obscuren hotfixes) 2015-04-09 13:58:35 +01:00
obscuren
c6b25a4046 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-09 13:24:08 +02:00
obscuren
8d059e54f1 Updated xeth logger 2015-04-09 11:49:14 +02:00
Jeffrey Wilcke
558683d10c Merge pull request #678 from bas-vk/feature_635
Support for import/export hex encoded keys
2015-04-09 11:31:44 +02:00
Jeffrey Wilcke
79cc3cc98e Merge pull request #671 from bas-vk/issue_567
Add path expansion support for command line arguments, closes 567
2015-04-09 11:31:04 +02:00
Bas van Kervel
ef393da933 removed utility function and implemented hex conversation in crypto functions 2015-04-09 10:59:37 +02:00
Bas van Kervel
6da5b2fc5f reformat code with goimports 2015-04-09 10:26:26 +02:00
obscuren
a9959805e5 Removed from as a requirement and changed
Removed the from as a requiremet from the RPC eth_call. Xeth#Call now
also default values to:

1. Supplied account
2. First account if any
3. No managed account => 000000..00
2015-04-09 00:44:20 +02:00
obscuren
204ac81188 Moved handling of nonces to the managed state 2015-04-08 23:30:07 +02:00
Bas van Kervel
b3a3fdf9a4 Support for import/export hex encoded keys, closes #635 2015-04-08 23:03:47 +02:00
obscuren
6e2f78ebdd Default log to stderr 2015-04-08 22:18:16 +02:00
obscuren
2e2860e4df Make sure mist runs ... :-) 2015-04-08 22:17:49 +02:00
obscuren
6184781b49 Improved transaction pool
The transaction pool will now some easily be able to pre determine the
validity of a transaction by checking the following:

* Account existst
* gas limit higher than the instrinsic gas
* enough funds to pay upfront costs
* nonce check
2015-04-08 20:47:32 +02:00
obscuren
a7750c929b Fixed tests to reflect log changes 2015-04-08 20:45:39 +02:00
obscuren
f08e9cbe42 ignore invalid txs right after being added if they prove incorrect 2015-04-08 18:08:21 +02:00
obscuren
1c872ddf4b Changed how logs are being recorded
Logs are now recorded per transactions instead of tossing them out after
each transaction. This should also fix an issue with
`eth_getFilterLogs` (#629) Also now implemented are the `transactionHash,
blockHash, transactionIndex, logIndex` on logs. Closes #654.
2015-04-08 17:15:45 +02:00
Bas van Kervel
5304f43067 Add path expansion support for command line arguments, closes 567 2015-04-08 15:43:55 +02:00
obscuren
6284604b52 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-08 13:07:30 +02:00
obscuren
a953f3ec97 Sync managed accounts to the network 2015-04-08 13:07:21 +02:00
obscuren
31b086f511 Added additional methods to the managed state
* GetNonce Returns the canonical nonce
* SetNonce Set the managed account's nonce
2015-04-08 13:06:56 +02:00
Jeffrey Wilcke
7c0a18edb5 Merge pull request #658 from Gustav-Simonsson/add_ec_point_on_curve_check
Add IsOnCurve check to EC unmarshalling in ECIES decryption
2015-04-08 00:51:12 +02:00
obscuren
09147a50ed Improved tx pool to ignore invalid transactions
Transaction pool will attempt to ignore invalid transactions it had
previously encountered.
2015-04-08 00:31:23 +02:00
obscuren
d09d2b96fc fixed stop of miner 2015-04-08 00:30:23 +02:00
Gustav Simonsson
aa4ff52d84 Add IsOnCurve check to EC unmarshalling in ECIES decryption 2015-04-07 23:50:04 +02:00
obscuren
7f32a08b60 Queued level db writes and batch writes. Closes #647 2015-04-07 22:19:01 +02:00
Jeffrey Wilcke
758205b187 Merge pull request #648 from Gustav-Simonsson/forward_ecrecover_err_and_remove_dup_checks
Forward and log EC recover err and remove dup pubkey len check
2015-04-07 20:48:56 +02:00
Jeffrey Wilcke
f597863927 Merge pull request #657 from Gustav-Simonsson/disable_libsecp256k1_debug_check
libsecp256k1 #define NDEBUG
2015-04-07 20:39:05 +02:00
Gustav Simonsson
941f051358 libsecp256k1 #define NDEBUG 2015-04-07 18:09:58 +02:00
obscuren
3ddc109778 Merge branch 'Gustav-Simonsson-update_bitcoin_secp256k1_lib2' into develop 2015-04-07 15:20:51 +02:00
obscuren
50bbdfe582 Link GMP 2015-04-07 15:20:24 +02:00
obscuren
ce9a28d7bb Merge branch 'update_bitcoin_secp256k1_lib2' of https://github.com/Gustav-Simonsson/go-ethereum into Gustav-Simonsson-update_bitcoin_secp256k1_lib2 2015-04-07 15:10:31 +02:00
obscuren
0196a97319 Merge branch 'tgerring-rpcfabian' into develop 2015-04-07 15:04:45 +02:00
obscuren
3063aad7db merge conflict 2015-04-07 15:04:29 +02:00
obscuren
50aa1f178c updated logging 2015-04-07 14:57:16 +02:00
obscuren
688d118c7e Updated logging 2015-04-07 14:57:04 +02:00
Taylor Gerring
d0c3f127ee More type fixes 2015-04-07 06:49:31 -05:00
obscuren
01b2c90179 Updated ethash 2015-04-07 13:17:27 +02:00
obscuren
c756633fb7 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-07 13:10:21 +02:00
obscuren
43454053b0 Fixed tests 2015-04-07 13:10:12 +02:00
Taylor Gerring
1aaeae292d Output format and nil fixes 2015-04-07 06:10:00 -05:00
Gustav Simonsson
2591883a18 Use logger.Error instead of 0 with glog 2015-04-07 12:48:19 +02:00
Gustav Simonsson
3f306f63d4 Forward and log EC recover err and remove dup pubkey len check 2015-04-07 12:48:19 +02:00
Gustav Simonsson
d9b37b6da7 Update Go wrapper around libbsecp256k1 2015-04-07 12:40:31 +02:00
Jeffrey Wilcke
7c583f8222 Merge pull request #653 from debris/circular_structure
fixed printing circular structures
2015-04-07 12:36:11 +02:00
obscuren
99907f94dc Updated ethereum.js 2015-04-07 12:33:05 +02:00
obscuren
7b6a8cc9ae Fixed pending states 2015-04-07 12:32:55 +02:00
Gustav Simonsson
f4d4f1ccb2 Update bitcoin secp256k1 lib 2015-04-07 12:14:05 +02:00
Marek Kotewicz
b09d62bac7 fixed printing circular structures 2015-04-07 05:27:47 +02:00
obscuren
9c55576c7b Block header changed & console miner control
* miner control moved to `admin.miner`
* miner option to set extra data
* block extra now bytes
2015-04-05 18:59:18 +02:00
obscuren
3040296beb updated ethash. closes 646 2015-04-05 18:00:22 +02:00
obscuren
736aefe9b5 time lapse 2015-04-05 17:59:38 +02:00
obscuren
69ece747d3 v bump 2015-04-05 15:15:19 +02:00
obscuren
01e1b49831 reflect ethash changes 2015-04-05 15:15:05 +02:00
obscuren
09d3f2cf2a Update ethash 2015-04-05 15:14:55 +02:00
obscuren
5b9a0e7118 Disabled PoW check
@zelig we need to discuss this
2015-04-05 15:14:06 +02:00
obscuren
50edd4243e removed hash rate from info log. Added hashrate js func 2015-04-05 13:05:10 +02:00
obscuren
ac473a8623 Remove debug log 2015-04-04 23:27:23 +02:00
obscuren
053d5552ab Updated logging 2015-04-04 23:04:19 +02:00
obscuren
5dc5e66986 set backtrace during runtime 2015-04-04 22:16:29 +02:00
obscuren
d651ff968a Temp removed unrequested block error
@zelig look in to this please
2015-04-04 22:06:50 +02:00
obscuren
f4af9e95c2 Skipping test
@zelig this will need updating with the TD checking
2015-04-04 21:41:42 +02:00
obscuren
eb1c26746d Changed R S to big int and fixed tests 2015-04-04 21:41:24 +02:00
obscuren
eb8f0b85f7 Changed R & S to *big.Int 2015-04-04 21:32:24 +02:00
obscuren
59597d23a5 Reject integers w/ appended zero's 2015-04-04 21:29:23 +02:00
obscuren
c39484bc4b Added thread safe each 2015-04-04 20:34:10 +02:00
Taylor Gerring
5c988c8ea0 Increased test coverage for args 2015-04-04 11:58:23 -05:00
obscuren
eff6a43419 Removed debugging 2015-04-04 18:29:11 +02:00
obscuren
7a18a39351 prevent deadlock 2015-04-04 18:23:51 +02:00
obscuren
f9488cb763 bumped version number 2015-04-04 16:41:12 +02:00
obscuren
e1ed8c33bd Improved chain manager, improved block processor, fixed tests
* ChainManager allows cached future blocks for later processing
* BlockProcessor allows a 4 second window on future blocks
* Fixed tests
2015-04-04 16:35:23 +02:00
obscuren
29f120206e Added block cache delete method 2015-04-04 16:33:12 +02:00
obscuren
0d1a9ce648 Disabled peer TD check to support suspended blocks (Future blocks)
@zelig When blocks are in the future they'll be cached and processed at
a later time. Because of this the returned TD will be much lower than
the broadcasted TD.
2015-04-04 16:24:44 +02:00
Taylor Gerring
435378e953 Improved test coverage for rpc types 2015-04-04 15:09:30 +02:00
Taylor Gerring
71e62eb620 More test coverage for responses 2015-04-04 14:08:35 +02:00
obscuren
c985ce4d78 Changed log to new logging 2015-04-04 13:41:58 +02:00
obscuren
2683aac9b0 Make sure we're not mining on an invalid TS 2015-04-04 13:27:17 +02:00
Taylor Gerring
2b9b9e7704 Allow "earliest" block height 2015-04-04 13:25:47 +02:00
Taylor Gerring
4729826466 Merge branch 'develop' into rpcfabian 2015-04-04 13:24:21 +02:00
obscuren
c20d04ca67 added verbosity to js admin 2015-04-04 13:24:19 +02:00
obscuren
1889727144 Moved logging to logger.Core 2015-04-04 13:24:01 +02:00
obscuren
218bfeb60e check for nil block (tmp).
@zelig this needs to be addressed in the block pool.
2015-04-04 12:40:48 +02:00
obscuren
a0e44e3281 basic glog 2015-04-04 12:40:11 +02:00
obscuren
60e097a5f4 Merge branch 'develop' into glog 2015-04-04 12:24:59 +02:00
obscuren
bc5528b165 version bump 2015-04-03 17:49:33 +02:00
obscuren
ec8a6e0a2b Merge branch 'develop' into glog 2015-04-03 17:19:22 +02:00
obscuren
f9d94c7462 do not include BlockEqualTS as valid uncles 2015-04-03 17:19:09 +02:00
obscuren
11d90d9b22 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-03 17:09:21 +02:00
obscuren
36452afd4e glog wip 2015-04-03 17:09:11 +02:00
Jeffrey Wilcke
47feff3611 Merge pull request #627 from ethersphere/frontier/blockpool
Frontier/blockpool BUGFIX
2015-04-03 13:56:39 +02:00
obscuren
4558e04c0d Merge commit 'f6bd4b16e38f9cacd57b57befdeeaed789a473c4' into develop 2015-04-03 12:29:13 +02:00
obscuren
f6bd4b16e3 Squashed 'tests/files/' changes from d6fe94a..3ebf646
3ebf646 Merge remote-tracking branch 'origin/develop' into develop
0ecbe27 uncle with same block number as current block

git-subtree-dir: tests/files
git-subtree-split: 3ebf64619911a7cbdec3b70491284c4cd5f4c3a3
2015-04-03 12:29:13 +02:00
obscuren
f49e398ebe bool => int 2015-04-03 12:28:55 +02:00
Jeffrey Wilcke
a6ca3d0261 Merge pull request #626 from tgerring/rpcfabian
RPC Tests updates
2015-04-03 11:58:18 +02:00
obscuren
29a9c6bedd Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-03 11:28:32 +02:00
obscuren
c59c826ab4 fixed stack level 2015-04-03 11:27:56 +02:00
obscuren
812cbff1a2 Squashed 'tests/files/' changes from ab81bf2..d6fe94a
d6fe94a Merge branch 'develop' of https://github.com/ethereum/tests into develop
cae0693 more fuzz test failures
2110806 fix mem test
049c4d3 Merge remote-tracking branch 'origin' into develop
6025e7b stack size 1024 fix
97655c7 add JS fails
90fe120 JS fails
e8a6964 JS fail

git-subtree-dir: tests/files
git-subtree-split: d6fe94ad047557531c83b551eb78a7a5838feaa4
2015-04-03 10:50:18 +02:00
obscuren
fd5c5b2969 Merge commit '812cbff1a28d89b44a0c8c5a210ac61c7e19da35' into develop 2015-04-03 10:50:18 +02:00
obscuren
4415a5bc68 updated coin 2015-04-03 10:50:07 +02:00
Jeffrey Wilcke
ea606733eb Merge pull request #636 from debris/prototype_functions
do not print Plain Object prototype fields in geth console
2015-04-03 01:53:55 +02:00
Marek Kotewicz
24c8fdc1d0 do not print Plain Object prototype fields in geth console 2015-04-03 01:47:05 +02:00
Jeffrey Wilcke
97d6b0bab8 Merge pull request #633 from debris/prototype_functions
printing object prototype functions in geth console
2015-04-03 01:29:53 +02:00
Marek Kotewicz
1f122626be printing object prototype functions in geth console 2015-04-03 00:49:18 +02:00
Taylor Gerring
3e042317ad Return nil if block does not exist 2015-04-02 20:37:51 +02:00
Taylor Gerring
1d74086b42 New UncleRes type 2015-04-02 17:55:42 +02:00
zelig
5cb1b41440 proper locking to prevent "parent unknown" INVALID blocks due to race in peer head info update 2015-04-02 16:30:48 +01:00
zelig
dd1791c9fd proper locking to prevent close of closed channel crash when multiple mining peers compete 2015-04-02 15:32:41 +01:00
Taylor Gerring
9bdf0b655d Fix RLP decoding of tx metadata 2015-04-02 16:28:42 +02:00
Taylor Gerring
537e2cfeb6 Return nil when requested uncle index is not valid 2015-04-02 16:12:19 +02:00
Taylor Gerring
e882ba0c29 Return nil when requested index does not exist
Instead of error
2015-04-02 16:11:00 +02:00
Taylor Gerring
aa71e27a3b Detect non-valid strings for blockheight 2015-04-02 15:53:04 +02:00
Taylor Gerring
3908590578 Make "To" field optional in whisper filter 2015-04-02 15:37:35 +02:00
Jeffrey Wilcke
607fc788e3 Merge pull request #619 from tgerring/rpcfabian
RPC Fabian fixes
2015-04-02 15:13:30 +02:00
Taylor Gerring
876ce0fb12 More nil checks 2015-04-02 14:54:28 +02:00
Taylor Gerring
172b34351a HashArgs fix + tests 2015-04-02 14:49:33 +02:00
Taylor Gerring
b9c9d6d798 Use HashArgs for eth_getTransactionByHash 2015-04-02 14:37:11 +02:00
Taylor Gerring
b4eef59b6f No longer require gas & gas price in transactions
Defaults to 0, which is then set to default values in XEth
2015-04-02 14:05:14 +02:00
obscuren
1e28b424e7 Default gas 2015-04-02 14:00:49 +02:00
Taylor Gerring
015453f5b3 Default Value to 0 for NewTxArgs 2015-04-02 13:55:53 +02:00
obscuren
55b1c1546b Moved to function 2015-04-02 13:55:35 +02:00
Taylor Gerring
118ad22ee5 Merge branch 'develop' into rpcfabian 2015-04-02 13:39:46 +02:00
Taylor Gerring
81de8ed091 Format code as hexdata 2015-04-02 13:38:12 +02:00
Taylor Gerring
b86450aaae Guard from nil pointers 2015-04-02 13:27:58 +02:00
Taylor Gerring
e402e1dc2e New args types with stricter checking 2015-04-02 13:17:55 +02:00
obscuren
79828531b1 updated ethereum.js 2015-04-02 13:13:11 +02:00
Taylor Gerring
14c14fd61f Output empty block as nil 2015-04-02 13:05:13 +02:00
Taylor Gerring
2efb89d544 Guard for nil *big.Int 2015-04-02 13:04:58 +02:00
obscuren
60da9a1289 Put the old hammer back in <3 2015-04-02 13:03:33 +02:00
obscuren
3f4c1aaf01 info => debug 2015-04-02 12:58:17 +02:00
obscuren
0f3bf7ef4d Fixes for balance 2015-04-02 12:57:04 +02:00
Taylor Gerring
585aec127c Don't ignore user-specified "include tx" param 2015-04-02 12:56:36 +02:00
Taylor Gerring
edfd2757d9 Better decoding of uint* 2015-04-02 12:52:25 +02:00
Taylor Gerring
b10e33c040 More types supported 2015-04-02 12:31:10 +02:00
Taylor Gerring
cc45b4d8b5 Trim left only, not right 2015-04-02 12:30:42 +02:00
Taylor Gerring
f89baa73e5 transactionRoot -> transactionsRoot 2015-04-02 12:30:22 +02:00
Taylor Gerring
85ebbc9aa5 Default BlockNumber to -1 when missing 2015-04-02 11:57:26 +02:00
Jeffrey Wilcke
7e13ee602e Merge pull request #625 from debris/nonenumerable
print nonenumerable properties of object in geth console && proper printing BigNumbers
2015-04-02 11:35:01 +02:00
Taylor Gerring
c71ca1a089 Better nil handling 2015-04-02 11:32:50 +02:00
Marek Kotewicz
f960fc066e fixed printing BigNumbers 2015-04-02 11:02:39 +02:00
Marek Kotewicz
bb3ae3026e print nonenumerable properties of object in geth console 2015-04-02 01:53:33 +02:00
obscuren
b8124ec791 Removed old (unused) argument 2015-04-01 23:58:26 +02:00
Jeffrey Wilcke
219d94c1dd Merge pull request #623 from Gustav-Simonsson/read_protocol_values_from_common_params
Read most protocol params from common/params.json
2015-04-01 23:37:17 +02:00
Gustav Simonsson
c26c8d3a44 Read most protocol params from common/params.json
* Add params package with exported variables generated from
  github.com/ethereum/common/blob/master/params.json
* Use params package variables in applicable places
* Add check for minimum gas limit in validation of block's gas limit
* Remove common/params.json from go-ethereum to avoid
  outdated version of it
2015-04-02 06:22:32 +02:00
obscuren
ab5c007376 Updated ethereum.js 2015-04-01 23:28:45 +02:00
obscuren
4391c38215 Changed getters on account objects. Closes #610
* GetCode
* GetNonce
* GetStorage
* GetBalance
2015-04-01 23:22:16 +02:00
Taylor Gerring
5d8be9c30d Fixed decoding for uint64 into bytes 2015-04-01 23:08:00 +02:00
obscuren
344b3556eb Fixed uncle rewards in miner
The uncle rewards were changed in the block processor. This change will
reflect those changes in the miner as well.
2015-04-01 21:18:41 +02:00
obscuren
516ec28544 sha3 stack check 2015-04-01 17:51:22 +02:00
obscuren
4e3ffbcf9b Squashed 'tests/files/' changes from 5f8a010..ab81bf2
ab81bf2 go fail

git-subtree-dir: tests/files
git-subtree-split: ab81bf28d6157657b0a1c0d598785f1ed23fdbb1
2015-04-01 17:50:19 +02:00
obscuren
109b27b552 Merge commit '4e3ffbcf9bae7e44e45fd1b6e504b3645040d73c' into develop 2015-04-01 17:50:19 +02:00
Taylor Gerring
eac4d582d7 Patches 2015-04-01 17:49:22 +02:00
Taylor Gerring
1045015a3c Update nonce field 2015-04-01 17:48:53 +02:00
obscuren
96cf776f81 Check stack for BALANCE. Closes #622 2015-04-01 17:45:38 +02:00
obscuren
f801183b8b Squashed 'tests/files/' changes from 29da5ea..5f8a010
5f8a010 go fials
6f7924a add cppjit fail
c21f368 update genesis test
de7266b update js example test

git-subtree-dir: tests/files
git-subtree-split: 5f8a0103c0456f9467b402fde3db4bcde345d53b
2015-04-01 17:41:58 +02:00
obscuren
516423cdac Merge commit 'f801183b8bea24ce9988fbd06c2f17fedfc3587f' into develop 2015-04-01 17:41:58 +02:00
obscuren
216ea425e4 corrected 2015-04-01 17:36:56 +02:00
obscuren
8e961df283 bumped network protocol 2015-04-01 17:10:42 +02:00
Jeffrey Wilcke
fd171eff7f Merge pull request #592 from fjl/disco-ping-pong
Discovery bonding protocol
2015-04-01 17:10:10 +02:00
Felix Lange
76218959ab eth: update cpp bootnode address 2015-04-01 17:00:12 +02:00
Felix Lange
a77c431e37 p2p/discover: fix off by one error causing buckets to contain duplicates 2015-04-01 17:00:12 +02:00
Felix Lange
de7af720d6 p2p/discover: implement node bonding
This a fix for an attack vector where the discovery protocol could be
used to amplify traffic in a DDOS attack. A malicious actor would send a
findnode request with the IP address and UDP port of the target as the
source address. The recipient of the findnode packet would then send a
neighbors packet (which is 16x the size of findnode) to the victim.

Our solution is to require a 'bond' with the sender of findnode. If no
bond exists, the findnode packet is not processed. A bond between nodes
α and β is created when α replies to a ping from β.

This (initial) version of the bonding implementation might still be
vulnerable against replay attacks during the expiration time window.
We will add stricter source address validation later.
2015-04-01 17:00:12 +02:00
Taylor Gerring
b6f0b40037 Respect fullTx option #614 2015-04-01 16:49:07 +02:00
Taylor Gerring
55b9689950 rename messages to types 2015-04-01 15:53:48 +02:00
Felix Lange
92928309b2 p2p/discover: add version number to ping packet
The primary motivation for doing this right now is that old PoC 8
nodes and newer PoC 9 nodes keep discovering each other, causing
handshake failures.
2015-04-01 15:53:04 +02:00
Taylor Gerring
bea3879d6f If nil, type doesn't matter 2015-04-01 15:45:56 +02:00
Taylor Gerring
ac03ff6f05 Fix block size output #613 2015-04-01 15:44:09 +02:00
Taylor Gerring
6e8ff578f1 Block nonce as data 2015-04-01 15:28:06 +02:00
Taylor Gerring
93f832a1a7 Make block context optional nulls 2015-04-01 15:27:37 +02:00
Taylor Gerring
0ce971d9d3 Add new formatting regex 2015-04-01 15:27:14 +02:00
Taylor Gerring
101ea1a1e8 Make inner size before assinging. Closes #615 2015-04-01 14:15:20 +02:00
Jeffrey Wilcke
c8e5d53a39 Merge pull request #618 from tgerring/issue613
Issue #613
2015-04-01 13:57:35 +02:00
Jeffrey Wilcke
4a4da9a24e Merge pull request #588 from ethersphere/frontier/SEC-29
Frontier/sec 29
2015-04-01 13:55:42 +02:00
zelig
f56fc9cd9d change StatusMsgData.TD back to pointer type *big.Int 2015-04-01 12:36:49 +01:00
zelig
6ffea34d8b check TxMsg
- add validation on TxMsg checking for nil
- add test for nil transaction
- add test for zero value transaction (no extra validation needed)
2015-04-01 12:32:42 +01:00
zelig
82da6bf4d2 test for invalid rlp encoding of block in BlocksMsg
- rename Validate -> ValidateFields not to confure consensus block validation
- add nil transaction and nil uncle header validation
- remove bigint field checks: rlp already decodes *big.Int to big.NewInt(0)
- add test for nil header, nil transaction
2015-04-01 12:32:42 +01:00
zelig
d677190f39 add tests for valid blocks msg handling 2015-04-01 12:32:42 +01:00
zelig
e1be34bce1 eth: SEC-29 eth wire protocol decoding invalid message data crashes client
- add validate method to types.Block
- validate after Decode -> error
- add tests for NewBlockMsg
2015-04-01 12:32:42 +01:00
Jeffrey Wilcke
936ddf2ad1 Merge pull request #616 from bas-vk/develop
Frontier/513
2015-04-01 13:25:15 +02:00
Taylor Gerring
dbf17105f6 Build transaction context in BlockRes 2015-04-01 13:18:51 +02:00
Taylor Gerring
88f2a96ca3 Set fullTx option in constructor 2015-04-01 13:18:30 +02:00
Bas van Kervel
1559bd9e1b changed big.Int instantiation 2015-04-01 13:15:21 +02:00
obscuren
dba9b83aa0 Merge branch 'tgerring-hexify' into develop 2015-04-01 12:51:44 +02:00
obscuren
b0e09ec827 merge conflict 2015-04-01 12:51:39 +02:00
obscuren
6afc5e762a Merge branch 'hexify' of https://github.com/tgerring/go-ethereum into tgerring-hexify 2015-04-01 12:49:10 +02:00
Jeffrey Wilcke
720d978e35 Merge pull request #589 from tgerring/corssetting
Configurable CORS domain
2015-04-01 12:38:29 +02:00
Bas van Kervel
6605d00d92 Frontier/513 2015-04-01 12:33:12 +02:00
Taylor Gerring
02fb83782e #612 rename eth_protocol method 2015-04-01 12:28:48 +02:00
Taylor Gerring
86ba7432a9 txMeta storage as struct 2015-04-01 12:14:35 +02:00
obscuren
4e8f8cfab7 ethereum.js update 2015-04-01 11:51:05 +02:00
obscuren
f2c6a937f3 Protocol bump 2015-04-01 11:50:19 +02:00
Taylor Gerring
b860b67693 Remove extra type assetion 2015-04-01 11:45:29 +02:00
obscuren
f468364e4d fixed tests 2015-04-01 11:42:02 +02:00
Taylor Gerring
7b7392826d Improved response tests
Actually verifies output as by regex
2015-04-01 11:38:06 +02:00
obscuren
0a554a1f27 Blocktest fixed, Execution fixed
* Added new CreateAccount method which properly overwrites previous
  accounts (excluding balance)
* Fixed block tests (100% success)
2015-04-01 10:53:32 +02:00
obscuren
d3e86f9208 Added gas generator defaults 2015-04-01 10:51:46 +02:00
Taylor Gerring
25998cfc45 Re-enabled response tests (needs improvement) 2015-04-01 09:11:23 +02:00
Taylor Gerring
bbca6250ff Merge branch 'rpccall' into hexify 2015-03-31 22:40:52 +02:00
Taylor Gerring
40ea466200 Store and retrieve tx context metadata #608
Improving this in the future will allow for cleaning up a bit of legacy
code.
2015-03-31 22:40:12 +02:00
Taylor Gerring
7e3875b527 Remove custom MarshalJSON methods
Now formats based on underlying hexdata or hexnum type. Fields directly
with respective constructors that cover from native types
2015-03-31 19:04:02 +02:00
Taylor Gerring
a2501ecfcd Make new types Stringers 2015-03-31 19:02:46 +02:00
Taylor Gerring
8f0e095f4c Index is zero-based #607 2015-03-31 17:56:06 +02:00
Taylor Gerring
81aeb78976 Update output types to use hexnum or hexdata
Benefits from automatic output formatting differences between
quantities and data
2015-03-31 17:40:35 +02:00
Taylor Gerring
3a948b2dba Add hexdata and hexnum types 2015-03-31 17:39:58 +02:00
obscuren
ec181b308a Squashed 'tests/files/' changes from c6d9629..29da5ea
29da5ea add JS block test example as state test
04108e0 Merge remote-tracking branch 'origin' into develop
6da7f35 JS failures
22b5dfc stQuadraticComplexity Refill with latest develop
c97bf26 Memory / Solidity Test Update

git-subtree-dir: tests/files
git-subtree-split: 29da5ea53ab36d74bd3c0712337168086cabfb8d
2015-03-31 16:25:22 +02:00
obscuren
2ef0bc03ec Merge commit 'ec181b308addc30c04973e9058960d579c84eef5' into develop 2015-03-31 16:25:22 +02:00
obscuren
8b51582b53 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-31 15:31:32 +02:00
obscuren
3453f8c5d2 Added Code field 2015-03-31 15:30:55 +02:00
Felix Lange
653c3deaa5 Merge pull request #606 from tgerring/bootnode
Update Go bootnode address
2015-03-31 14:41:17 +02:00
Taylor Gerring
6daa455243 Update Go bootnode address 2015-03-31 14:14:29 +02:00
Jeffrey Wilcke
485dcf90cd Merge pull request #594 from Gustav-Simonsson/fix_block_header_gas_limit_validation
Correct gas limit validation according to new algorithm
2015-03-31 12:41:05 +02:00
Taylor Gerring
2f3a968136 New CallArgs
Requirements for calls differ from transactions
2015-03-30 16:20:30 +02:00
Gustav Simonsson
9feed3f61e Correct gas limit validation according to new algorithm
* Use absolute value of (block's gas limit) - (parent's gas limit)
  in comparison with diff limit.
* Ensure the diff is strictly smaller than the allowed size.
2015-03-30 16:07:24 +02:00
Taylor Gerring
f23529c5cd General repo cleanup 2015-03-30 09:18:22 +02:00
Taylor Gerring
35d00e00c5 Update Godeps 2015-03-29 22:19:38 +02:00
Taylor Gerring
b6fde73ef1 Add settable domain to CORS handler #331 2015-03-29 21:56:04 +02:00
Taylor Gerring
04a7c4ae1e Abstract http into rpc package
New RpcConfig object to pass growing config
2015-03-29 21:26:47 +02:00
Taylor Gerring
24fc1f073d Add flag to control CORS header #394
* Disabled on CLI
* http://localhost on Mist
2015-03-29 21:21:14 +02:00
obscuren
e1c6c01b4d Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-29 15:03:39 +02:00
obscuren
b7a0bc7031 Merge branch 'ebuchman-fix_ecrecover' into develop 2015-03-29 15:03:30 +02:00
obscuren
61c5edcb57 Cleanup. 2015-03-29 15:02:49 +02:00
obscuren
af153e7884 Merge branch 'fix_ecrecover' of https://github.com/ebuchman/go-ethereum into ebuchman-fix_ecrecover 2015-03-29 13:34:41 +02:00
Taylor Gerring
391d79ef44 Add ExtraData field to RPC output 2015-03-29 12:08:52 +02:00
Taylor Gerring
eb79938060 Docker rename ethereum to geth 2015-03-28 22:17:08 +01:00
Taylor Gerring
2ca6a800ad Remove old go cover location 2015-03-28 22:16:04 +01:00
Taylor Gerring
82eeb5e02a Added Coveralls badges 2015-03-28 22:04:36 +01:00
Taylor Gerring
129fabddb2 Prefer hex prefixed with 0x 2015-03-28 21:47:16 +01:00
Taylor Gerring
d9f8b1e0c1 Report InvalidTypeError as -32602 to JSON RPC 2015-03-28 21:42:44 +01:00
Taylor Gerring
e80ef9ff34 Cleanup 2015-03-28 21:41:34 +01:00
Taylor Gerring
29930da522 eth_getStorageAt output hex should begin with 0x 2015-03-28 21:27:50 +01:00
Taylor Gerring
3b20603eb1 Merge branch 'kobigurk-develop' into develop 2015-03-28 21:06:39 +01:00
Taylor Gerring
779a51c047 Merge branch 'develop' of https://github.com/kobigurk/go-ethereum into kobigurk-develop
Conflicts:
	rpc/api.go
2015-03-28 21:05:32 +01:00
Jeffrey Wilcke
b9ca5eef58 Merge pull request #579 from tgerring/rpcargs
RPC Args
2015-03-28 20:42:45 +01:00
obscuren
696ff43db3 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-28 20:34:12 +01:00
obscuren
368ebe63a9 Cleanup VM.
* CALLDATA use getData
* removed old context get range value
* removed casting big => int for some cases
* pc now big int #457
2015-03-28 20:30:38 +01:00
obscuren
3b7e4173ce Cleanup VM 2015-03-28 20:03:25 +01:00
Jeffrey Wilcke
2455e0bd18 Merge pull request #585 from aperseghin/patch-2
Minor fix
2015-03-28 11:54:20 +01:00
Jeffrey Wilcke
ed6ca5d007 Merge pull request #586 from aperseghin/patch-3
Update README.md
2015-03-28 11:54:10 +01:00
Taylor Gerring
a4cbd1c7be ethereum -> geth 2015-03-28 00:32:23 +01:00
Kobi Gurkan
47af2f02cb eth_getTransactionCount now returns a hex string 2015-03-27 22:22:13 +03:00
obscuren
3ea8c7301e PUSH gas fix 2015-03-27 16:53:05 +01:00
Taylor Gerring
43d521e90e Decouple core from rpc 2015-03-27 16:36:01 +01:00
obscuren
df648cbc60 Removed comments 2015-03-27 16:11:19 +01:00
obscuren
8a22cd5e6c Removed defer/panic. #503 2015-03-27 16:09:57 +01:00
Taylor Gerring
0ac346f707 Merge branch 'develop' into rpcargs 2015-03-27 16:03:49 +01:00
Taylor Gerring
9f84c78eb5 BlockFilterArgs 2015-03-27 15:54:54 +01:00
aperseghin
db1c52918f Update README.md 2015-03-27 09:29:35 -04:00
obscuren
00f8319faf Explicitly check memory's data store. #515 2015-03-27 14:22:38 +01:00
aperseghin
8e7549db0b Minor fix 2015-03-27 08:38:20 -04:00
obscuren
eb102bf4bb Etherbase => etherbase 2015-03-27 12:14:00 +01:00
Jeffrey Wilcke
86c43d97bc Merge pull request #581 from aperseghin/patch-1
Update README.md
2015-03-27 12:12:38 +01:00
Jeffrey Wilcke
0b4b2b81f9 Merge pull request #580 from ethersphere/frontier/cli-key
settable etherbase
2015-03-27 12:12:05 +01:00
Jeffrey Wilcke
54a14d5c9d Merge pull request #584 from tgerring/issue577
Use ExtraDB for RPC storage. Fixes #577
2015-03-27 11:48:03 +01:00
Jeffrey Wilcke
09280c5f11 Merge pull request #565 from tgerring/responsetypes
Update response types + tests
2015-03-27 11:44:13 +01:00
Taylor Gerring
2788fb4ce5 More explicit formatting for protocol version 2015-03-27 11:43:14 +01:00
Taylor Gerring
e29396b691 Use ExtraDB for storage. Fixes #577 2015-03-27 09:36:18 +01:00
Taylor Gerring
c38630af23 Test blockHeightFromJsonInvalid 2015-03-27 00:13:03 +01:00
Taylor Gerring
e0781c2548 NewTxArgs accept numbers or strings for value/gas/gasprice 2015-03-27 00:07:28 +01:00
Taylor Gerring
3fcef54f9b tidy 2015-03-26 22:58:12 +01:00
zelig
b375bbee5f settable etherbase
- etherbase flag for block reward destination
- coinbase => etherbase
- CLI- eth Config -> eth, xeth -> RPC / Miner
- use primary instead of coinbase as the unlock magic wildcard
- accounts: firstAddr/Coinbase -> Primary
2015-03-26 21:52:22 +00:00
aperseghin
5838847a9a Update README.md
Rename ethereum executable to geth
2015-03-26 17:48:24 -04:00
Taylor Gerring
6bd1f6cc49 Merge remote-tracking branch 'origin' into rpcargs
Conflicts:
	rpc/args.go
2015-03-26 22:42:46 +01:00
Taylor Gerring
bb12dbe233 Prefer args as strings not objects 2015-03-26 22:35:42 +01:00
Taylor Gerring
7eed7e1d96 Merge branch 'rpcargs' of github.com:tgerring/go-ethereum into rpcargs 2015-03-26 22:27:06 +01:00
Taylor Gerring
2c5a32ebbc Undo XEth changes 2015-03-26 22:24:48 +01:00
Taylor Gerring
49a912ce33 Undo xeth changes 2015-03-26 22:14:31 +01:00
obscuren
b0b0939879 renamed ethereum => geth 2015-03-26 21:27:52 +01:00
Jeffrey Wilcke
829240c325 Merge pull request #550 from ethersphere/frontier/cli-key
import/export accounts
2015-03-26 21:08:15 +01:00
Taylor Gerring
1f3814141b WhisperMessageArgs 2015-03-26 21:07:50 +01:00
Taylor Gerring
9ca87afd0b WhisperFilterArgs 2015-03-26 20:52:09 +01:00
Taylor Gerring
81f36df910 CompileArgs 2015-03-26 20:31:00 +01:00
Taylor Gerring
ddcc8e1673 SubmitWorkArgs tests 2015-03-26 20:25:30 +01:00
Taylor Gerring
b414a1303f WhisperIdentityArgs 2015-03-26 20:20:43 +01:00
Taylor Gerring
1f1e98f96b FilterIdArgs 2015-03-26 20:10:31 +01:00
Taylor Gerring
62ebf999bf FilterStringArgs tests 2015-03-26 20:04:03 +01:00
zelig
7577d12614 max paranoia mode to UNsupport unencrypted keys entirely
- remove account export functionality from CLI
- remove accountExport method,
- remove unencrypted-keys flag from everywhere
- improve documentation
2015-03-26 19:00:18 +00:00
zelig
abbdf41560 output error message if unlock address is invalid (fixes the wierd "read /path: is a directory") msg 2015-03-26 19:00:18 +00:00
zelig
11d2ebc06f unlocking coinbase without knowing address
- accounts: remove Manager.getKey
- cli: for -unlock coinbase, use account manager Coinbase()
2015-03-26 19:00:18 +00:00
zelig
4ec38e3932 common: remove WriteFile and ReadAllFile (use ioutil instead) 2015-03-26 19:00:18 +00:00
zelig
23e41a57ad Applying: fix adming js test regression (maybe otto update?) 2015-03-26 19:00:18 +00:00
zelig
fee224f075 cli test: fix test newJSRE interactive argument 2015-03-26 19:00:18 +00:00
zelig
d1b52efdb5 cli: implement ethereum presale wallet import via cli 2015-03-26 19:00:18 +00:00
zelig
34d5a6c156 cli: help formatting 2015-03-26 19:00:18 +00:00
zelig
1c4c71dcff cli: fix liner not closing (spuriously opened) in noninteractive jsre 2015-03-26 19:00:18 +00:00
zelig
fd8d18ec28 unlocking coinbase
- extract accounts.getKey method - if given empty address it retrieves coinbase (first account)
- cli -unlock coinbase will unlock coinbase
2015-03-26 19:00:18 +00:00
zelig
859f1f08ca blockpool: wrap intermittent status test in a loop 2015-03-26 19:00:18 +00:00
zelig
c4ea921876 import/export accounts
- cli: add passwordfile flag
- cli: change unlock flag only takes account
- cli: with unlock you are prompted for password or use passfile with password flag
- cli: unlockAccount used in normal client start (run) and accountExport
- cli: getPassword used in accountCreate and accountImport
- accounts: Manager.Import, Manager.Export
- crypto: SaveECDSA (to complement LoadECDSA) to save to file
- crypto: NewKeyFromECDSA added (used in accountImport and New = generated constructor)
2015-03-26 19:00:18 +00:00
Taylor Gerring
e21ce9a9b4 DbHexArgs tests 2015-03-26 19:39:40 +01:00
Taylor Gerring
f68ca2b6e6 DbArgs tests 2015-03-26 19:34:32 +01:00
Taylor Gerring
3ab9f26943 Accept number or string for BlockFilterArgs limit/offset 2015-03-26 19:17:25 +01:00
obscuren
658204bafc bump 2015-03-26 17:55:30 +01:00
obscuren
c32bca45ad Stack limit 2015-03-26 17:45:09 +01:00
obscuren
d36501a6e5 Fixed miner
* Miners could stall because the worker wasn't aware the miner was done
2015-03-26 17:45:03 +01:00
Taylor Gerring
6661bc35ef Accept number or string for BlockFilterArgs to/fromBlock 2015-03-26 17:27:29 +01:00
Taylor Gerring
745dd5b7a5 Sha3Args 2015-03-26 16:19:33 +01:00
Taylor Gerring
f695d01354 Convert error checks to Expect functions 2015-03-26 16:16:17 +01:00
Taylor Gerring
3472823be9 HashIndexArgs 2015-03-26 14:17:32 +01:00
Taylor Gerring
cb103c089a BlockNumIndexArgs 2015-03-26 13:57:41 +01:00
Taylor Gerring
cd6b3fd28a GetDataArgs 2015-03-26 13:50:22 +01:00
Taylor Gerring
a49c81547c DecodeParamError -> InvalidTypeError for unexpected input type 2015-03-26 13:45:06 +01:00
Taylor Gerring
ca03e97697 Add InvalidTypeError 2015-03-26 13:33:44 +01:00
obscuren
a718515b3d Squashed 'tests/files/' changes from a7081bc..c6d9629
c6d9629 added another test

git-subtree-dir: tests/files
git-subtree-split: c6d96293710a37489fa3b074a9fc228e0393f152
2015-03-26 13:14:24 +01:00
obscuren
d0fa0a234d Merge commit 'a718515b3d43f00497231f981b5ea757b71d55ff' into develop 2015-03-26 13:14:24 +01:00
Taylor Gerring
c139af5826 GetBalanceArgs 2015-03-26 13:10:31 +01:00
Taylor Gerring
4523a00b91 GetTxCountArgs 2015-03-26 12:47:00 +01:00
obscuren
c33dc3e328 moved helper 2015-03-26 12:40:09 +01:00
obscuren
83b0cad766 fixed block filter args 2015-03-26 12:34:59 +01:00
obscuren
b8a667deed debug log 2015-03-26 12:15:25 +01:00
obscuren
4ba850639e updated web3.js light for console 2015-03-26 12:15:12 +01:00
Taylor Gerring
9c4504dc41 GetStorageAtArgs 2015-03-26 12:11:28 +01:00
obscuren
ace5b5a1bf updated web3.js 2015-03-26 12:06:45 +01:00
obscuren
507830eb81 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-26 12:06:23 +01:00
obscuren
eb433731aa Fixed filter and refactored code 2015-03-26 12:06:14 +01:00
Taylor Gerring
300d36b864 improved NewTxArgs tests 2015-03-26 11:59:35 +01:00
Taylor Gerring
ad2089b0a3 Add blockHeightFromJson convenience function 2015-03-26 11:59:16 +01:00
Taylor Gerring
493e0d7be8 improved GetBlockByNumber tests 2015-03-26 11:07:14 +01:00
Taylor Gerring
93af30a6f6 improved GetBlockByHashArgs tests 2015-03-26 11:06:45 +01:00
Taylor Gerring
bd1a54f076 GetStorageArgs 2015-03-26 10:52:32 +01:00
Taylor Gerring
966cfa4bdd NewTxArgs 2015-03-26 10:34:21 +01:00
Taylor Gerring
c7dc379da5 GetBlockByHashArgs 2015-03-26 10:14:52 +01:00
Taylor Gerring
7e1e264375 Don't return empty block for "pending" #568 2015-03-26 09:24:07 +01:00
obscuren
98f970ba59 Updated example for new ethereum.js 2015-03-26 01:03:14 +01:00
obscuren
88b9bc40d7 Godep issue? 2015-03-26 01:03:03 +01:00
obscuren
e5a0a0ef48 Moved output to debug 2015-03-26 01:02:51 +01:00
obscuren
7e4c488717 Fixed storage. Closes #516 2015-03-26 00:42:35 +01:00
obscuren
505f1fbcbb added tx tests and fixed block tests 2015-03-25 17:05:29 +01:00
Jeffrey Wilcke
65ea55bccd Merge pull request #564 from fjl/rlp-nil-array
rlp: encode nil array pointers as empty list or string
2015-03-25 17:00:25 +01:00
Taylor Gerring
e22bcb78a5 Update response types + tests
To coincide with recent type conversion
2015-03-25 16:50:30 +01:00
Felix Lange
181a21c67c rlp: encode nil array pointers as empty list or string 2015-03-25 16:46:29 +01:00
obscuren
ff5578fc71 updated ethash 2015-03-25 14:58:12 +01:00
obscuren
a2e3bf6f30 removed big num from pp 2015-03-25 14:51:10 +01:00
Jeffrey Wilcke
aa1eae67ec Merge pull request #560 from tgerring/xethcleanup
XEth cleanup
2015-03-25 13:55:46 +01:00
Felix Lange
7f0c2545a9 Merge pull request #561 from ethersphere/frontier/blockpool
bugfix with idle too long triggered after peer switch
2015-03-25 13:55:05 +01:00
obscuren
221f30c3aa updated ethereum.js 2015-03-25 13:52:45 +01:00
obscuren
8b32f79445 Removed full path 2015-03-25 13:52:23 +01:00
obscuren
950b4a68c8 Improved miner recovery
* In case of uncle mining (e.g. same TS) the miner would stop if all
  threads happened to mine a potential uncle
2015-03-25 13:51:12 +01:00
zelig
18d1569ce5 header check for test 2015-03-25 12:11:29 +00:00
zelig
9d592c0445 bugfix with idle too long triggered after peer switch
- reset bestIdleTimer when launching head section process
- log chain head events
- common.Hash key in activateChain map
2015-03-25 12:11:29 +00:00
obscuren
a1cae93d78 Improved pretty printer for console 2015-03-25 12:44:41 +01:00
Taylor Gerring
2b93843d86 Improve protocol version reporting 2015-03-25 12:09:55 +01:00
Taylor Gerring
c956bcb13c Move version to const and expose via Version() 2015-03-25 12:08:48 +01:00
obscuren
6431d088ad bump 2015-03-25 11:54:11 +01:00
obscuren
ff44347ea1 fixed test 2015-03-25 10:31:58 +01:00
obscuren
dda1d60556 Store protocol version in the block db **NOT** extra db 2015-03-25 09:58:46 +01:00
obscuren
3301f6ecef back to debug log 2015-03-24 23:55:48 +01:00
obscuren
97bf9f1521 Temp fix for console output 2015-03-24 23:50:27 +01:00
obscuren
3d5f48a160 updated deps 2015-03-24 21:25:11 +01:00
obscuren
a6e659f74b Merge branch 'master' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-24 19:22:32 +01:00
Jeffrey Wilcke
a33a325ac1 Merge pull request #559 from Gustav-Simonsson/blocktests_update_ethash
Update ethash lib
2015-03-24 19:14:20 +01:00
Taylor Gerring
d41341f77d WithState -> withState 2015-03-24 17:58:16 +01:00
Taylor Gerring
82b5a8af49 DRY up height logic 2015-03-24 17:49:37 +01:00
obscuren
c38a3b4cc7 Better error reporting in the console. Updated ethereum.js 2015-03-24 17:49:28 +01:00
Taylor Gerring
865f31018b Shuffle 2015-03-24 17:45:31 +01:00
Taylor Gerring
2106a63d60 Move Frontend interface to separate file 2015-03-24 16:42:33 +01:00
Taylor Gerring
65d553d367 Update internal calls to use CurrentBlock() 2015-03-24 16:34:28 +01:00
Taylor Gerring
59b6b619a2 Don't expose backend directly 2015-03-24 16:33:37 +01:00
Taylor Gerring
b9b7442b74 Remove redundant fields 2015-03-24 16:08:18 +01:00
Taylor Gerring
ad420d099a rename eth to backend 2015-03-24 16:01:44 +01:00
Gustav Simonsson
b0c4dc8df8 Update ethash lib 2015-03-24 15:51:51 +01:00
Taylor Gerring
6d41402dce Backend no longer needed to resolve import cycle 2015-03-24 15:36:39 +01:00
obscuren
9de1ad6546 fixed tests 2015-03-24 15:27:05 +01:00
obscuren
ff9d66e096 Cleaned up changes 2015-03-24 15:23:16 +01:00
obscuren
23bccbbc58 Modified according to poc 9 changes
* Refund of value
2015-03-24 15:15:17 +01:00
obscuren
bbe795455a Secure trie shakey / key matching 2015-03-24 15:14:03 +01:00
obscuren
24066dca46 Squashed 'tests/files/' changes from 8f3fbe6..a7081bc
a7081bc update tests
d2678cb update random tests
ca0401b update tests

git-subtree-dir: tests/files
git-subtree-split: a7081bc54e9d72cc480218cb4b218dbb04c7cde7
2015-03-24 13:39:49 +01:00
obscuren
d6da533345 Merge commit '24066dca4646c8a376aa5dfbceec0a4b3f872c11' into develop 2015-03-24 13:39:49 +01:00
obscuren
0ec171ccdf Copy fix 2015-03-24 13:38:16 +01:00
obscuren
eab8f7355d Event fixes for miner 2015-03-24 13:37:38 +01:00
obscuren
576df064e5 Updated for PV59
* Value XFER are refunded back to the sender if the execution fails
2015-03-24 11:49:30 +01:00
obscuren
58c6cc8fd7 Squashed 'tests/files/' changes from 559268b..8f3fbe6
8f3fbe6 Pv59 changes
2633cce JS fails
748f803 Merge remote-tracking branch 'origin' into develop
2e60a20 JS failure
2673f14 Incorrect Test deletion
345261d More Transaction Tests
300998f add blockchain tests - uncle gen 0 - in-chain-uncle
7e8585a gas counter overflow
5af1002 check overflow of v value in tx tests
53ee775 memory stress tests 28
46045b7 add 1024 stack size tests
4678ee8 add 1024 stack size limit tests
3b870f6 rm test
7c51854 fix test
74f1e91 cpp fail
ce9535a add cppjit fail
2e17a2e SDIV tests
cd38e05 first JS failures
d5e80d5 Delete st201503181858GO.json

git-subtree-dir: tests/files
git-subtree-split: 8f3fbe63f92c413fda1fc68cf27a9dbb69681168
2015-03-24 11:22:58 +01:00
obscuren
4877e52c15 Merge commit '58c6cc8fd7ff8a27004ed62d912e0a61ae1b73bb' into develop 2015-03-24 11:22:58 +01:00
obscuren
118b79eca7 Added gitter integration for travis 2015-03-24 10:41:04 +01:00
obscuren
a59ea7ce29 Changed miner
* Instead of delivering `Work` to the `Worker`, push a complete Block to
  the `Worker` so that each agent can work on their own block.
2015-03-24 10:34:06 +01:00
obscuren
d8e21b39b3 Added copy function 2015-03-24 10:33:00 +01:00
obscuren
0ee0094cc0 better block propagation 2015-03-23 22:59:19 +01:00
obscuren
7b8a47f484 removed legacy code 2015-03-23 22:05:12 +01:00
obscuren
0eaa023ffa Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-23 21:48:50 +01:00
obscuren
bfb9ed881d Gas validation and clean up of legacy code 2015-03-23 21:48:45 +01:00
obscuren
ebf4408d73 Decrement depth 2015-03-23 21:48:31 +01:00
Taylor Gerring
e88a29ad02 Merge pull request #553 from ethersphere/jsonlog
natspec: minor fix in test
2015-03-23 18:57:57 +01:00
zelig
53af810851 natspec: minor fix in test 2015-03-23 17:36:04 +00:00
obscuren
f2f65c1a65 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-23 18:30:11 +01:00
Taylor Gerring
90c710fd26 Merge pull request #552 from ethersphere/jsonlog
Jsonlog
2015-03-23 18:27:06 +01:00
obscuren
c8e9ca0483 fixed bad uncles 2015-03-23 18:27:05 +01:00
zelig
a983a215dc fix ethtest logging 2015-03-23 17:08:49 +00:00
Taylor Gerring
e954c24af0 Implement RPC net_version 2015-03-23 18:06:05 +01:00
Taylor Gerring
60020add74 Merge pull request #551 from ethersphere/frontier/eth-version-exports
eth: fix protocol version/network id copied from config to Ethereum field
2015-03-23 18:00:54 +01:00
Taylor Gerring
1cf6ca8f10 Add Close() method to EthereumApi
To close the handler for LDB
2015-03-23 17:41:50 +01:00
zelig
9880f99ccb fix p2p/testlog_test 2015-03-23 16:41:41 +00:00
Taylor Gerring
1e61b75cbf tests + fixes 2015-03-23 17:33:01 +01:00
zelig
03cc5df9b7 eth: fix protocol version/network id copied from config to Ethereum field 2015-03-23 16:23:06 +00:00
obscuren
0330077d76 moved state and vm to core 2015-03-23 16:59:09 +01:00
obscuren
d7eaa97a29 moved to error 2015-03-23 16:55:40 +01:00
obscuren
211cb03f83 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-23 16:47:05 +01:00
Jeffrey Wilcke
9562a9840f Merge pull request #537 from Gustav-Simonsson/blocktests2
Add post state validation to block tests and disable network, add RPC
2015-03-23 16:39:26 +01:00
Taylor Gerring
5707912e2f "pending" convention should be -2 instead of 0 2015-03-23 16:36:12 +01:00
obscuren
253ecdc8bb Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-23 16:35:49 +01:00
obscuren
9be7853e34 Fixed issues with stalled remote miner 2015-03-23 16:35:44 +01:00
Taylor Gerring
2f8601ef38 Rename blockAge to blockHeight 2015-03-23 16:34:50 +01:00
Gustav Simonsson
becc503230 Correct difficulty calculation to use new difficulty minimum 2015-03-23 16:32:20 +01:00
Gustav Simonsson
5d31a475e9 Fix new types for blocktests and comment out non-working log level setter 2015-03-23 16:32:20 +01:00
Gustav Simonsson
60de4d6dd1 gofmt 2015-03-23 16:32:20 +01:00
Gustav Simonsson
08bb472c91 Add validation of post state accounts to block tests 2015-03-23 16:32:20 +01:00
Gustav Simonsson
33c5186fd0 In blocktest cmd, disable network and add RPC flag 2015-03-23 16:32:20 +01:00
obscuren
dc3a9379f5 logging for possible uncles 2015-03-23 16:14:33 +01:00
Taylor Gerring
3f6e1b2fd3 db_putHex/db_getHex + tests 2015-03-23 16:04:21 +01:00
obscuren
524f8199bf added some nil checks for cache (testing specific) 2015-03-23 12:22:58 +01:00
obscuren
6657d544db Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-23 12:12:53 +01:00
obscuren
0be6d34048 finally merged *the missing* 2015-03-23 12:12:49 +01:00
Jeffrey Wilcke
dbb2af6016 Merge pull request #548 from tgerring/typescleanup
Fix Mist types build errors
2015-03-23 12:12:29 +01:00
Taylor Gerring
91a2275ad3 Move RemoteAgent to miner pkg 2015-03-23 11:21:41 +01:00
Taylor Gerring
439481d177 Rename Agent to RemoteAgent 2015-03-23 11:14:42 +01:00
Taylor Gerring
01c0ba22ae Add DAG seed hash and difficulty to GetWork 2015-03-23 11:09:48 +01:00
Taylor Gerring
0846e15667 go away! 2015-03-23 09:36:28 +01:00
Taylor Gerring
ab6311c1bd Move remote mining agent to XEth 2015-03-23 09:35:42 +01:00
Taylor Gerring
d76e8cb1f1 Consistent var names 2015-03-23 09:24:52 +01:00
Taylor Gerring
16a58f8f2a Always return 3 strings 2015-03-23 08:55:06 +01:00
Taylor Gerring
31879eca8c Stub corrected getWork response 2015-03-23 08:45:09 +01:00
Taylor Gerring
3772f02569 Rename for filename typo 2015-03-23 08:29:41 +01:00
Taylor Gerring
372e1cad5b Cleanup get/submitWork
getWork needs to return additional values
2015-03-23 08:28:54 +01:00
Ethan Buchman
d2fa6e7753 vm: explicit error checks in ecrecover. closes #505 2015-03-22 14:54:40 -07:00
Jeffrey Wilcke
8affdf96e2 Merge pull request #547 from tgerring/commoncleanup
common/common.go cleanup
2015-03-22 21:46:46 +01:00
Jeffrey Wilcke
3133372a6a Merge pull request #536 from zsfelfoldi/develop
using robertkrimen/otto, godeps updated
2015-03-22 21:45:56 +01:00
obscuren
59eab49cb8 Merge branch 'ethersphere-jsonlog' into develop 2015-03-22 21:43:58 +01:00
obscuren
8b1b9fc99d Merge branch 'jsonlog' of https://github.com/ethersphere/go-ethereum into ethersphere-jsonlog
Conflicts:
	eth/backend.go
2015-03-22 21:43:36 +01:00
obscuren
8ed4f226d1 check for nil ptrs 2015-03-22 15:44:00 +01:00
obscuren
82956df523 Get work / submit work partially implemented.
* WIP missing arguments for submitting new work
* GetWork **done**
2015-03-22 15:38:01 +01:00
Taylor Gerring
d186bf0dfe Fix Mist types build errors 2015-03-22 14:25:33 +01:00
Taylor Gerring
bf73f02fe0 Remove common.go 2015-03-22 13:48:07 +01:00
Taylor Gerring
360c66c65d Move Big* vars to big.go 2015-03-22 13:46:38 +01:00
Taylor Gerring
2477d10aa0 Move MakeName to path 2015-03-22 13:46:21 +01:00
Taylor Gerring
c0741edc34 Move OS-specific funcs to path.go 2015-03-22 13:44:17 +01:00
Taylor Gerring
82a41a198e Move CurrencyToString to size 2015-03-22 13:35:13 +01:00
Taylor Gerring
08b21acff1 Move ToHex/FromHex into bytes 2015-03-22 13:32:52 +01:00
Jeffrey Wilcke
9682a3ef3e Merge pull request #526 from ethersphere/frontier/blockpool
Frontier/blockpool
2015-03-22 13:11:16 +01:00
obscuren
e349fb9350 bump 2015-03-22 12:20:27 +01:00
obscuren
13781b922a converted to proper types 2015-03-22 12:12:29 +01:00
zelig
0edb33566f fix blockpool test logger 2015-03-22 02:18:07 +00:00
zelig
78cff9e3a4 independent flag for json structured logging
- logjson flag remove logformat flag
- passed to eth Config
- logsystem not a field of Ethereum
- LogSystem does not need to expose GetLogLevel/SetLogLevel
- message struct just implements more generic LogMsg interface
- LogMsg is a fmt.Stringer with Level()
- jsonMsg ([]byte) implements LogMsg
- remove "raw" systems
- move level logic inside StdLogSystem
- logsystems only print their kind of msg: jsonLogSystem prints jsonMsg, StdLogSystem prints stdMsg
2015-03-22 02:16:54 +00:00
zelig
95038fc62d Idle too long error incorrectly triggered even when peer sending new blocks
- fix status chain map uses common.Hash as key
- add badPeers increment to IncorrectTD errors (forgotten)
- signal head info update to head section process even if parent hash is not in pool (inserted), so that idle timer can be set to nil
- suicideC -> peer.headInfoTimer
- quit -> peer.bestIdleTimer
- and they are properly set from within getBlockHashes and handleSection
2015-03-22 02:02:24 +00:00
obscuren
7f85608f30 Merge branch 'conversion' into develop 2015-03-21 18:18:19 +01:00
Jeffrey Wilcke
09766d1729 Merge pull request #535 from maran/fixReadmeLink
Fix link to build instructions in the readme
2015-03-21 18:16:55 +01:00
obscuren
fcacfabe19 Added new ethereum.js 2015-03-21 15:09:03 +01:00
obscuren
83728e4b64 Merge branch 'develop' into conversion
Conflicts:
	rpc/responses.go
2015-03-21 14:54:25 +01:00
obscuren
004f5008ff Merge branch 'rpcfrontier' into develop 2015-03-21 14:53:12 +01:00
obscuren
a7ad9c309b Merge branch 'develop' into conversion 2015-03-21 14:52:42 +01:00
obscuren
38c7c589e4 Merge branch 'rpcfrontier' into develop 2015-03-21 14:52:31 +01:00
obscuren
ce862ee758 Removed some comments 2015-03-21 14:51:45 +01:00
obscuren
4300f2a0fa Fixed state tests 2015-03-21 14:47:50 +01:00
obscuren
c28116cb3b Fixed incorrect recipient derived 2015-03-21 14:46:50 +01:00
obscuren
06697775d1 Merge branch 'conversion' of github.com-obscure:ethereum/go-ethereum into conversion 2015-03-21 14:36:20 +01:00
Taylor Gerring
9edb9a21bc Add json LogSystem #538 2015-03-21 07:26:44 +01:00
Taylor Gerring
670021da15 Rename topic to topics #544 2015-03-21 07:08:33 +01:00
Felix Lange
069c87b960 whisper: use common.Hash 2015-03-21 00:57:18 +01:00
Felix Lange
7c4ff3abb4 eth: enable whisper again 2015-03-21 00:50:20 +01:00
Felix Lange
483d43a15a whisper: use package rlp 2015-03-21 00:49:58 +01:00
Felix Lange
a829a56587 rlp: add Stream.Raw 2015-03-21 00:49:31 +01:00
Felix Lange
81800ca39e Merge remote-tracking branch 'ethereum/conversion' into conversion 2015-03-20 22:47:27 +01:00
Felix Lange
b95ff54632 cmd/blocktest: delete package
Blocktests are now integrated in cmd/ethereum.
2015-03-20 22:46:41 +01:00
Felix Lange
b41185a68f rlp: fix nil pointer decoding
The generic pointer decoder did not advance the input position
for empty values. This can lead to strange issues and even
infinite loops.
2015-03-20 22:33:40 +01:00
obscuren
abce6804a0 Right pad bytes to prevent future programmers making bugs 2015-03-20 20:37:56 +01:00
obscuren
f4e9638867 Merge branch 'ethersphere-frontier/blockpool' into conversion 2015-03-20 18:01:05 +01:00
obscuren
ecd10d2cf7 iterator returned wrong value 2015-03-20 18:00:54 +01:00
obscuren
1821d1af48 Merge branch 'frontier/blockpool' of https://github.com/ethersphere/go-ethereum into ethersphere-frontier/blockpool 2015-03-20 17:42:25 +01:00
obscuren
54dac59285 wip 2015-03-20 17:42:09 +01:00
obscuren
a59bb053f4 merge 2015-03-20 16:02:01 +01:00
obscuren
deee9cb170 Added caching for block chain. Currently set to 10k 2015-03-20 15:54:42 +01:00
Taylor Gerring
28e1971272 Merge branch 'rpcxeth' into rpcfrontier
Conflicts:
	rpc/api.go
2015-03-20 15:25:43 +01:00
Taylor Gerring
0cde7a4d46 Add xethAtStateNum convenience method 2015-03-20 14:56:55 +01:00
Taylor Gerring
efcc93e7da Move Account register to xeth 2015-03-20 14:12:07 +01:00
Felix Lange
28ddc16a9b Merge remote-tracking branch 'ethereum/conversion' into conversion 2015-03-20 14:01:35 +01:00
Felix Lange
c161d73d42 common: drop accessors for Value.Val
I don't see why we would need two different accessors for a public field.
2015-03-20 14:00:26 +01:00
Felix Lange
dcb9614dfe common: drop unused kind field from Value
This makes Value 24 bytes smaller on 64bit systems.
2015-03-20 14:00:26 +01:00
Felix Lange
f7d1d601e9 common: make Value encodable with package rlp
Value.{Encode,Decode} are gone. It implements rlp.Encoder and rlp.Decoder
instead, so Value can be decoded into directly.
2015-03-20 14:00:26 +01:00
Felix Lange
c388e7eac0 crypto: remove use of common.Value.Encode
This seems to be the last remaining use of it.
2015-03-20 14:00:26 +01:00
zsfelfoldi
85acdadcfa fixed jsre test 2015-03-20 13:48:23 +01:00
Taylor Gerring
739c36ad4d inline GetStorageAt 2015-03-20 13:45:07 +01:00
Taylor Gerring
28e5fc8352 Make pretty 2015-03-20 13:37:56 +01:00
zsfelfoldi
8324b683b4 using robertkrimen/otto, godeps updated 2015-03-20 13:22:01 +01:00
Maran
7690285cbe Fix link to build instructions in the readme 2015-03-20 13:19:26 +01:00
zelig
66b29899c4 use common.Hash as pool key, no string conversion needed 2015-03-20 11:57:47 +00:00
obscuren
4f5b362bda %#x => %x 2015-03-20 12:52:03 +01:00
obscuren
91f9f355b2 test 2015-03-20 12:17:57 +01:00
obscuren
41c493ace9 Merge branch 'rpcfrontier' of github.com-obscure:ethereum/go-ethereum into rpcfrontier 2015-03-20 12:07:19 +01:00
obscuren
55fdf3e462 Listen to tx pre event and trigger 'pending' 2015-03-20 12:07:06 +01:00
zelig
d7564a9a25 fix common.Hash conversion 2015-03-20 10:41:41 +00:00
zelig
8987750a36 fix import in reorganised test 2015-03-20 10:41:41 +00:00
zelig
0578df9467 remove eth/wallet.go (only commented out content) 2015-03-20 10:41:41 +00:00
zelig
a578db5dae improve documentation and move one test 2015-03-20 10:41:41 +00:00
zelig
8767179d74 reduce logging output 2015-03-20 10:41:41 +00:00
zelig
63cae9b9ac uncomment status test, hack: skip the 2 unreliable fields 2015-03-20 10:41:41 +00:00
zelig
137a9c9365 check and penalise td misreporting
- add ErrIncorrectTD
- checkTD called after insertChain successful
- fix tests, use blockPoolTester.tds to map block index to TD
2015-03-20 10:41:41 +00:00
zelig
a9926a289d fix missing hexification on IdleTooLong error log 2015-03-20 10:41:40 +00:00
zelig
391e89d70a use own total difficulty to limit best peer
- update blockpool td by subscribing to ChainHeadEvent
- if ahead of best peer, demote it
- addPeer now take own td as current td
- removePeer now take own td as current td
- add relevant tests to peers_test
- eth: backend now calls blockpool with eth.eventMux and chainManager.Td
2015-03-20 10:41:40 +00:00
zelig
50661f0e68 peer suspension to disallow reconnect after disconnect on fatal error for set period (PeerSuspensionInterval) 2015-03-20 10:41:40 +00:00
obscuren
01ff0b3176 fixed ethash 2015-03-20 11:40:46 +01:00
obscuren
d8fe8f60e8 updated ethash 2015-03-20 11:19:12 +01:00
Taylor Gerring
b3329bc698 inline Transact 2015-03-20 07:15:34 +01:00
Taylor Gerring
aa3918efa7 Move transact gas check to XEth 2015-03-20 07:13:29 +01:00
Taylor Gerring
e038a42d7a inline Call 2015-03-20 06:58:53 +01:00
Taylor Gerring
1d6451f5c3 inline GetBlockByNumber 2015-03-20 06:57:23 +01:00
Taylor Gerring
bde161382a inline GetBlockByHash 2015-03-20 06:53:24 +01:00
Taylor Gerring
eb45211501 Merge branch 'rpcfrontier' of github.com:ethereum/go-ethereum into rpcfrontier 2015-03-20 06:45:44 +01:00
Taylor Gerring
b56e20be27 Reorg for clarity 2015-03-20 00:24:23 -04:00
Taylor Gerring
754160afea Move gas defaults to XEth 2015-03-20 00:23:48 -04:00
Taylor Gerring
c3a3d38735 Add tests for errors 2015-03-20 00:08:29 -04:00
Taylor Gerring
3cea7d87c1 Rename FilterOptions to BlockFilterArgs 2015-03-19 23:55:17 -04:00
Taylor Gerring
d791fe4975 Remove unnecessary event mux 2015-03-19 23:34:35 -04:00
Taylor Gerring
19360c0079 Move stateAt func to XEth 2015-03-19 23:28:45 -04:00
Taylor Gerring
6669ef5b70 Rename for clarity 2015-03-19 23:20:54 -04:00
Taylor Gerring
7b45f3377f inline MessagesChanged 2015-03-19 23:14:55 -04:00
Taylor Gerring
2ef2b9f2e0 inline UninstallWhisperFilter 2015-03-19 23:13:52 -04:00
Taylor Gerring
1f9b93647b inline NewWhisperFilter 2015-03-19 23:11:52 -04:00
Taylor Gerring
4b5e592656 inline AllLogs 2015-03-19 23:10:23 -04:00
Taylor Gerring
0bda63eb76 inline Logs 2015-03-19 23:08:26 -04:00
Taylor Gerring
d2e7414230 inline FilterChanged 2015-03-19 23:07:25 -04:00
Taylor Gerring
3e9632e256 inline NewFilterString 2015-03-19 23:06:32 -04:00
Taylor Gerring
84b19971fa inline UninstallFilter 2015-03-19 23:05:23 -04:00
Taylor Gerring
4663a55f12 inline NewFilter 2015-03-19 23:03:53 -04:00
Taylor Gerring
7c30716828 Merge branch 'rpcinline' into rpcxeth
Conflicts:
	rpc/api.go
2015-03-19 23:01:10 -04:00
Taylor Gerring
6c04c19eb4 Reorg filter logic to XEth 2015-03-19 22:58:07 -04:00
Taylor Gerring
12d87226a7 Merge branch 'rpcutil' into rpcfrontier 2015-03-19 20:52:36 -04:00
Taylor Gerring
cdfc03dc8e inline WhisperPost 2015-03-19 20:40:50 -04:00
Taylor Gerring
0895190b64 inline GetBlockTransactionCountByHash 2015-03-19 20:31:40 -04:00
Taylor Gerring
ff657edbb6 inline GetBlockTransactionCountByNumber 2015-03-19 20:30:42 -04:00
Taylor Gerring
c57eb286d6 inline GetBlockUncleCountByHash 2015-03-19 20:29:46 -04:00
Taylor Gerring
216175c265 inline GetBlockUncleCountByNumber 2015-03-19 20:28:25 -04:00
Taylor Gerring
7e6c8a411d fixes 2015-03-19 20:26:09 -04:00
Taylor Gerring
22546dcb55 inline UninstallWhisperFilter 2015-03-19 20:14:27 -04:00
Taylor Gerring
b28e6d8306 inline WhisperMessages 2015-03-19 20:12:52 -04:00
Taylor Gerring
cc91ba0add inline GetTransactionByHash 2015-03-19 20:12:12 -04:00
Taylor Gerring
0eb9572d64 inline RemoveWhisperIdentity 2015-03-19 20:10:05 -04:00
Taylor Gerring
85e03217de inline NewWhisperIdentity 2015-03-19 20:09:54 -04:00
Taylor Gerring
57f6a3b5c0 inline DbGet 2015-03-19 20:06:35 -04:00
Taylor Gerring
6fef616870 inline DbPut 2015-03-19 20:05:48 -04:00
Taylor Gerring
d28cd0f040 inline GetCompilers 2015-03-19 20:04:40 -04:00
Taylor Gerring
152b37ee11 inline GetData 2015-03-19 20:04:02 -04:00
Taylor Gerring
e530c960a4 inline GetTxCountAt 2015-03-19 20:03:27 -04:00
Taylor Gerring
3aea645106 inline GetStorage 2015-03-19 20:02:31 -04:00
Taylor Gerring
7562bc1dbc inline GetBalance 2015-03-19 20:00:41 -04:00
Taylor Gerring
b7745c6835 inline HasWhisperIdentity 2015-03-19 20:00:18 -04:00
Taylor Gerring
6cc02aadbf Inline getStateWithNum 2015-03-19 19:58:59 -04:00
obscuren
62236dd95e copy over loop 2015-03-19 23:20:41 +01:00
Taylor Gerring
abc3d8d50a Make send internal 2015-03-19 18:06:26 -04:00
obscuren
df5901fdc5 Removed more casts 2015-03-19 22:45:03 +01:00
obscuren
013427bde2 Merge branch 'develop' into conversion 2015-03-19 21:18:29 +01:00
obscuren
f144a95940 Squashed 'tests/files/' changes from e558aa4..559268b
559268b go failure
473f67f BlockTests More Invalid RLPs updated to latest develop
296c653 Fixed test to 15 header items
d011a67 Merge branch 'develop' of git://github.com/ethereum/tests into develop
44a3664 Updated to 16mb size

git-subtree-dir: tests/files
git-subtree-split: 559268ba4b454152c17b343db33d617877f30a3a
2015-03-19 21:14:51 +01:00
obscuren
b4a51de602 Merge commit 'f144a95940a5df0809bb028eef7b337125423602' into develop 2015-03-19 21:14:51 +01:00
Taylor Gerring
c7b616ac14 Remove util 2015-03-19 14:28:31 -04:00
Taylor Gerring
1f2de6ecd5 Remove extra logger 2015-03-19 14:21:42 -04:00
Taylor Gerring
d670c861d7 Move Log to LogRes 2015-03-19 14:19:52 -04:00
obscuren
29eb220910 :-) 2015-03-19 17:18:55 +01:00
obscuren
e861bbe0c1 Merge branch 'rpcfrontier' into develop 2015-03-19 17:00:01 +01:00
obscuren
463491f8cd moved back to debug 2015-03-19 16:59:54 +01:00
obscuren
b5a71d955c merge 2015-03-19 16:59:13 +01:00
obscuren
e540a75030 re-enabled json logging 2015-03-19 16:30:01 +01:00
obscuren
03b8ddd19c Merge branch 'rpcfrontier' into develop 2015-03-19 16:29:32 +01:00
obscuren
14a2f42f37 fixed chain event. Closes #529 2015-03-19 16:19:54 +01:00
obscuren
93ba3df4ff Removed frontier from version :-( 2015-03-19 15:36:38 +01:00
obscuren
b52807f0c0 Removed frontier in version :-( 2015-03-19 15:36:00 +01:00
Felix Lange
ce063e8d9c Merge remote-tracking branch 'ethereum/conversion' into conversion 2015-03-19 15:21:49 +01:00
Felix Lange
e80dda6051 eth, whisper: adapt for RLP encoder switch in package p2p
I have rewritten the protocol test to use p2p.MsgPipe because
p2p.NewMsg is gone.
2015-03-19 15:18:31 +01:00
Felix Lange
b9e0b11e7d p2p: interrupt MsgPipe payload read/write
This is better because protocols might not actually read the payload for
some errors (msg too big, etc.) which can be a pain to test with the old
behaviour.
2015-03-19 15:16:06 +01:00
Felix Lange
a7bced779a p2p: log disconnect requests
This helps a lot with debugging.
2015-03-19 15:15:07 +01:00
Felix Lange
5ba51594c7 p2p: use package rlp to encode messages
Message encoding functions have been renamed to catch any uses.
The switch to the new encoder can cause subtle incompatibilities.
If there are any users outside of our tree, they will at least be
alerted that there was a change.

NewMsg no longer exists. The replacements for EncodeMsg are called
Send and SendItems.
2015-03-19 15:11:02 +01:00
Felix Lange
4811f460e7 p2p: export ExpectMsg (for eth protocol testing) 2015-03-19 15:08:04 +01:00
obscuren
797bbce15e Merge branch 'develop' into conversion 2015-03-19 15:07:47 +01:00
obscuren
554f20930a Merge branch 'develop' into rpcfrontier 2015-03-19 15:07:33 +01:00
obscuren
a756dbeb7b Removed uint casts 2015-03-19 15:06:56 +01:00
obscuren
ad7e491214 improved test output 2015-03-19 15:04:29 +01:00
obscuren
d4e5747d04 Merge branch 'develop' into conversion 2015-03-19 14:31:41 +01:00
obscuren
cf45b939a0 fixed tests 2015-03-19 14:31:14 +01:00
Felix Lange
e13c673980 Merge remote-tracking branch 'ethereum/conversion' into conversion 2015-03-19 12:17:43 +01:00
Felix Lange
965c9babe3 rlp: fix encoding of one element strings and byte slices
The encoder was missing a special case for one element strings whose
element is below 0x7f. Such strings must be encoded as a single byte
without a string header.
2015-03-19 12:15:43 +01:00
obscuren
d7ab716eea Fixed mkdnode & added some tests 2015-03-19 10:57:02 +01:00
Taylor Gerring
8b20c3cc97 Validate NewTx From field is not blank 2015-03-18 20:30:09 -04:00
obscuren
85fa3790ac Squashed 'tests/files/' changes from 641ebaa..e558aa4
e558aa4 clean up
47096f8 remove corrupted files
47e73ea even more failures
18506ee add tests
a9729da merge
bc09d2e merge
3c89576 new tests
650ac93 Merge remote-tracking branch 'origin/develop' into develop
ee7ea6a update blockChainTests
46484ae fuzz tests
eb8f8fb fuzz testing
1c74972 fuzz testing results
8f06b8f Block Tests +make RLP header larger than rlp +all block fields  +1)Prefixed000  +2)Larger size  +3)Less Size  +4)rlp element list when shouldnt  +5)given as array +random byte at the end +transaction fields +random byte in RLP
fdf6c3e BlokTests Invalid Block Header RLPs (0000prefix, tooLarge, tooShort)
c81751d update gasLimit

git-subtree-dir: tests/files
git-subtree-split: e558aa49d425eb43b8ee2f71f52b6312ab092520
2015-03-18 22:13:08 +01:00
obscuren
e67d32b467 Merge commit '85fa3790ac9f67232f0e31e7f861c66ef0e0047e' into develop 2015-03-18 22:13:08 +01:00
Taylor Gerring
da427e8843 Merge branch 'rpcutil' into rpcfrontier 2015-03-18 15:57:06 -04:00
Taylor Gerring
0685810ec6 Tests 2015-03-18 15:48:40 -04:00
Taylor Gerring
e02eedb43e BlockNumber as int fix 2015-03-18 15:48:34 -04:00
Taylor Gerring
7cbcd81ddc Remove UnmarshalRawMessages 2015-03-18 15:42:57 -04:00
obscuren
5f35e6778f Merge branch 'rpcfrontier' into conversion 2015-03-18 18:42:30 +01:00
obscuren
af9da83ce2 Merge branch 'develop' into rpcfrontier 2015-03-18 18:42:21 +01:00
obscuren
f0bb136099 Merge branch 'develop' into conversion 2015-03-18 18:42:01 +01:00
obscuren
c12046d6bf Merge branch 'ethersphere-frontier/cli-private-network' into develop 2015-03-18 18:39:56 +01:00
obscuren
79f90bf7c1 added frontier to version 2015-03-18 18:39:24 +01:00
obscuren
bc5ae94384 Merge branch 'frontier/cli-private-network' of https://github.com/ethersphere/go-ethereum into ethersphere-frontier/cli-private-network 2015-03-18 18:37:20 +01:00
obscuren
f9a6038f5b merge 2015-03-18 18:23:37 +01:00
Taylor Gerring
baca0c2251 Merge pull request #523 from fjl/docker-fast
Dockerfile: use fast™ build steps
2015-03-18 12:09:20 -04:00
Felix Lange
3e52c9439a Merge pull request #522 from fjl/makedag
cmd/ethereum: add makedag command for testing
2015-03-18 16:40:50 +01:00
Taylor Gerring
60c43d1952 Remove i2hex 2015-03-18 11:10:08 -04:00
Taylor Gerring
7c9bc8517d Remove RpcServer 2015-03-18 11:08:49 -04:00
obscuren
4d0ae8b0cb Merge branch 'conversion' of github.com-obscure:ethereum/go-ethereum into conversion 2015-03-18 14:16:07 +01:00
obscuren
48dd601de0 prep template for fixed size hashes 2015-03-18 14:15:58 +01:00
Felix Lange
064279c0ec cmd/ethereum, cmd/utils: partial fix for chain import 2015-03-18 14:04:44 +01:00
Taylor Gerring
e30c323391 merge develop 2015-03-18 08:46:55 -04:00
Felix Lange
d15f90645d Merge remote-tracking branch 'ethereum/conversion' into conversion 2015-03-18 13:39:01 +01:00
Felix Lange
a59dd393e7 core: fix tests 2015-03-18 13:38:47 +01:00
Felix Lange
b5b83db450 core: use package rlp to encode blocks
This also changes the chain export format so there is no
enclosing list around the blocks, which enables streaming export.
2015-03-18 13:36:48 +01:00
Felix Lange
c298148a7f core/types: use package rlp instead of common.Decode 2015-03-18 13:24:34 +01:00
Felix Lange
b94a6a0193 rlp: add DecodeBytes
Über-convenience.
2015-03-18 13:17:39 +01:00
obscuren
0a1eeca41e conversions. -compilable- 2015-03-18 13:00:01 +01:00
obscuren
942980609f conversions 2015-03-18 11:44:25 +01:00
obscuren
cd52ef315c Added Hex methods 2015-03-18 11:44:17 +01:00
zelig
ca8d184173 fix eth tests 2015-03-18 16:31:49 +07:00
zelig
b6aa88c099 private network support
- protocolversion, networkid global int flags to cli and mist
- fix bug with protocolversion check using wrong db
- log protocolversion & networkid in backend
2015-03-18 14:44:58 +07:00
Taylor Gerring
67c9d9c2fa Remove JsonWrapper 2015-03-17 20:14:19 -04:00
Felix Lange
cb009a5c4d rlp: don't panic for nil *big.Int
All other pointer types can handle nil just fine.
2015-03-17 23:49:49 +01:00
Taylor Gerring
c6f84325b1 Support JSON RPC batch requests 2015-03-17 17:46:22 -04:00
Taylor Gerring
8fd243ee23 Add JSON RPC batch support
http://www.jsonrpc.org/specification#batch
2015-03-17 17:38:05 -04:00
zelig
7dbbe1bedc eth/backend: remove spurious and incorrent PeerInfo() 2015-03-18 04:01:47 +07:00
zelig
1872418316 eth: remove disused peer_util.go 2015-03-18 03:59:21 +07:00
obscuren
142e81258c Merge branch 'develop' into conversion 2015-03-17 21:40:05 +01:00
Jeffrey Wilcke
3ea99f989f Merge pull request #498 from maran/feature/drytoHex
DRY up the use of toHex in the project and move it to common
2015-03-17 21:31:42 +01:00
obscuren
048d4ec5be Merge branch 'rpcfrontier' into develop 2015-03-17 21:30:29 +01:00
obscuren
917050dc30 Merge branch 'develop' into rpcfrontier 2015-03-17 21:27:34 +01:00
obscuren
53104b09fa bump 2015-03-17 21:23:05 +01:00
Felix Lange
786a58d8b0 Merge pull request #485 from ethersphere/frontier/nodeadmin.js
Frontier console node admin interface
2015-03-17 21:15:23 +01:00
obscuren
86661de077 Fixed tests and bloom 2015-03-17 18:00:03 +01:00
obscuren
c21293cd91 bloom 2015-03-17 16:05:17 +01:00
Felix Lange
1513413412 Dockerfile: use fast™ build steps 2015-03-17 14:49:37 +01:00
Felix Lange
b422835a59 cmd/ethereum: add makedag command for testing 2015-03-17 14:12:34 +01:00
Taylor Gerring
fe819f3b9f Comment out whisper remove identity stubs 2015-03-17 09:11:01 -04:00
obscuren
0fa7859b94 Fixed VM & Tests w/ conversion 2015-03-17 13:24:25 +01:00
obscuren
ff55c6f5ba Merge branch 'develop' into conversion
Conflicts:
	common/types.go
2015-03-17 13:09:22 +01:00
obscuren
b0ebccb31e fixed to 2015-03-17 12:56:29 +01:00
Felix Lange
17c5ba2b6b core: actually convert transaction pool 2015-03-17 12:16:21 +01:00
obscuren
9663493ba0 Merge commit 'dffaa678f966f87dcd011671a16b554b29a37549' into develop 2015-03-17 12:02:50 +01:00
obscuren
dffaa678f9 Squashed 'tests/files/' changes from 0749546..641ebaa
641ebaa Merge branch 'develop' of https://github.com/ethereum/tests into develop
8e44fd4 possibility to launch more than one machine
5498fd5 2 more python fails
99268f3 update random test simulation files
170485e Merge remote-tracking branch 'origin/develop' into develop
4fcdf8f new python fails
e67b68a Merge branch 'develop' of https://github.com/ethereum/tests into develop
3f45f18 BlockRLPTests block fields prefixed with 0000
9fa9bbd Merge pull request #78 from wanderer/develop
222c2b4 update block tests
9d844dd python fails
05233a4 update blockchaintests
7dc0aa2 update JS_API_Test blockchain
6daf1cc added JS_API_test blockchain
e878f7e consitant address format
0e246ce python fail
57ea9a0 random failures
95934e0 add test for callcode to 0
13b8cd2 new python failures
9e60453 remove empty tests
ca6dfa9 uncle older than 6 generation test
cf7e950 some random failures
282090e update gas limits + uncle generation test
bb4c1f4 cppjit failure
cda9d4c more random failures
31ac17a add calldataload big offset test
f6b8e28 remove seedhash and update blockchain tests
ad69f9d add addmod test in order toc check that nothing get downcasted inbetween
38b7db2 a failing test
b9149b5 Merge remote-tracking branch 'origin/develop' into develop
5bea708 more failing tests
478a07d fix missing comma
6d82797 Merge remote-tracking branch 'origin/develop' into develop
2f380e2 random fails
3cd0ce7 Merge pull request #75 from romanman/develop
afa0a43 Update crypto.json
1b9b7b8 Introduce ECIES crypto test

git-subtree-dir: tests/files
git-subtree-split: 641ebaa3cf257c08838c707bebb481d61e708f95
2015-03-17 12:02:49 +01:00
Felix Lange
ee7202fa00 Merge remote-tracking branch 'ethereum/conversion' into conversion 2015-03-17 12:01:40 +01:00
Felix Lange
65eee2006d pow/ezp: use common.Hash 2015-03-17 12:01:21 +01:00
Felix Lange
27f7aa0163 core: adapt Message for new Transaction.From signature 2015-03-17 12:00:29 +01:00
Felix Lange
b95387a0dc core: convert transaction pool to common.{Address,Hash} 2015-03-17 11:59:26 +01:00
Felix Lange
e91ab84dbe core/types: don't use Address zero value for invalid addresses 2015-03-17 11:58:31 +01:00
obscuren
515d9432fc converted vm 2015-03-17 11:19:23 +01:00
Felix Lange
d5de6489d7 core/types: fix Transaction.Hash and add support for encoding with package rlp 2015-03-17 01:34:18 +01:00
Felix Lange
ad78db4d62 crypto: fix Sha3Hash and add a test for it 2015-03-17 01:32:35 +01:00
obscuren
8ce6a36478 converted chain manager 2015-03-16 23:48:18 +01:00
obscuren
94505146a2 updated vm env 2015-03-16 23:17:28 +01:00
obscuren
843db4978e updated blockpool 2015-03-16 23:10:26 +01:00
Taylor Gerring
176115e22e More empty param tests 2015-03-16 16:49:51 -04:00
obscuren
4e181c5764 Moved gas 2015-03-16 21:46:47 +01:00
Taylor Gerring
0339a13862 RPC empty args tests 2015-03-16 16:21:51 -04:00
Taylor Gerring
719effa7ec Return error when filter params are not strings 2015-03-16 15:30:31 -04:00
Taylor Gerring
03ac0f18ae Initial support to remove Whisper identities per #491 2015-03-16 14:46:46 -04:00
obscuren
6aa390abfb Merge branch 'conversion' of github.com-obscure:ethereum/go-ethereum into conversion 2015-03-16 18:43:09 +01:00
obscuren
91b0b14845 converted vm 2015-03-16 18:42:18 +01:00
Taylor Gerring
e5e265d024 Merge branch 'develop' into rpcfrontier 2015-03-16 13:02:41 -04:00
Felix Lange
16df850af2 core/types: use common.{Hash,Address} in for transactions 2015-03-16 17:43:42 +01:00
Felix Lange
13ade2ed60 Merge branch 'conversion' of https://github.com/ethereum/go-ethereum 2015-03-16 17:29:08 +01:00
Felix Lange
64490897f3 crypto: add Sha3Hash 2015-03-16 17:27:24 +01:00
obscuren
bfcd2cf132 block conversion 2015-03-16 17:27:23 +01:00
obscuren
e620bde405 conversion state 2015-03-16 17:09:08 +01:00
Maran
7330c97b5b DRY up the use of toHex in the project and move it to common 2015-03-16 16:56:11 +01:00
zelig
17cd7a5817 remove long-running mining test, ethutil -> common 2015-03-16 22:56:05 +07:00
zelig
b3e133dd15 Merge branch 'frontier/js' into frontier/nodeadmin.js 2015-03-16 22:50:29 +07:00
zelig
73af0302be we do not use the name Frontier Console 2015-03-16 22:49:39 +07:00
zelig
b4060da9eb ethutil -> common 2015-03-16 22:48:54 +07:00
zelig
5e7702fd05 Merge remote-tracking branch 'upstream/develop' into frontier/js
Conflicts:
	cmd/ethereum/js.go
	javascript/types.go
2015-03-16 22:46:29 +07:00
obscuren
76f215b0fe Getters shouldn't need to be pointer receiver 2015-03-16 16:44:27 +01:00
obscuren
0dd9ac375b undo 2015-03-16 16:36:58 +01:00
obscuren
22893b7ac9 removed compile 2015-03-16 16:31:16 +01:00
obscuren
d338650089 compilable trie (tests fail) 2015-03-16 16:28:16 +01:00
Taylor Gerring
5757f547a6 Allow latest/pending in filter options 2015-03-16 10:38:57 -04:00
obscuren
20b7162a62 Added functions to Hash & Address
* Set, SetString, SetBytes
* StringTo*, BytesTo*
2015-03-16 13:23:06 +01:00
obscuren
dc864ee3a5 Added ToString methods 2015-03-16 12:20:17 +01:00
obscuren
3cf51d5479 tmp 2015-03-16 12:03:52 +01:00
obscuren
f486c0ae56 new type + additional methods 2015-03-16 11:59:52 +01:00
obscuren
b523441361 Moved ethutil => common 2015-03-16 11:27:38 +01:00
zelig
8139d444f8 Merge remote-tracking branch 'upstream/develop' into frontier/nodeadmin.js 2015-03-16 15:19:09 +07:00
obscuren
0b8f66ed9e updated godep ethash 2015-03-15 21:47:59 +01:00
obscuren
22fa59f131 moved to detail 2015-03-15 21:47:35 +01:00
zelig
ece5c2aade Merge branch 'frontier/js' into frontier/nodeadmin.js 2015-03-15 22:29:50 +07:00
zelig
8393dab470 menubar back to mist main.qml 2015-03-15 22:29:10 +07:00
obscuren
d2e75cc957 cleaning up unused code 2015-03-15 15:25:09 +01:00
zelig
ff86d7d52a Merge branch 'frontier/js' into frontier/nodeadmin.js 2015-03-15 18:43:03 +07:00
zelig
7bc40aa963 jsre: remove assetpath using GOPATH from test 2015-03-15 18:42:17 +07:00
obscuren
c87cc59bdf Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop
Conflicts:
	README.md
2015-03-15 12:20:58 +01:00
obscuren
8f84ddbbec Linux build links 2015-03-15 12:20:07 +01:00
obscuren
0f26a62334 Linux build links 2015-03-15 12:19:26 +01:00
zelig
132e87a707 node admin interface for Frontier Console, see spec https://github.com/ethereum/go-ethereum/wiki/Frontier-Console 2015-03-15 13:43:48 +07:00
zelig
8ad0f1b8a3 eth:
- NodeInfo, PeerInfo types, PeersInfo(), NodeInfo() in eth/backend to support node admin IF
- start net only if MaxPeers > 0, close extraDb in Stop()
- defer s.extraDb.Close()
2015-03-15 13:39:52 +07:00
zelig
e150832734 p2p: server>discover table Self=Node exported 2015-03-15 13:38:41 +07:00
zelig
7279a485c2 CLI:
- js subcommand for vm
- console for Frontier console interactive REPL
- jspath in cli
- integrate jeth apiBindings
2015-03-15 13:31:40 +07:00
zelig
16ecb1e2ea rpc
- camelcase fields dont play nice with otto value magic: JsonRpc -> Jsonrpc, ID -> Id
- jeth: ethereum.js rpc transport provider direct bridge between js and ethereumApi via otto jsre
2015-03-15 13:21:54 +07:00
zelig
31ffca6d8a remove jsre from mist 2015-03-15 13:18:58 +07:00
zelig
da44097800 jsre:
- require became loadScript(), no require is supplied
- bignumber_js.go: heredoc v2.0.3 minified fixed for otto Regexp incompatibility https://github.com/robertkrimen/otto#regular-expression-incompatibility
- bignumber.min.js also updated in mist/assets/ext
- ethereum_js.go: latest master minified
- assetPath in constructor
- Eval/Exec/Handle/ToVal nice API
- jsre tests
2015-03-15 13:13:39 +07:00
obscuren
2a5fbced7f removed seed hash 2015-03-14 23:39:45 +01:00
obscuren
282d8c20fd Merge branch 'fjl-block-tests' into develop 2015-03-14 23:37:37 +01:00
obscuren
d9966d6158 merge 2015-03-14 23:37:21 +01:00
obscuren
12cee1377f Increased filter ticker time to 5 minutes 2015-03-14 18:57:12 +01:00
obscuren
95711bc2dd Updated ethash 2015-03-14 16:42:05 +01:00
obscuren
387f6bba3e POW fixes 2015-03-14 16:37:57 +01:00
obscuren
44636e5b82 typo 2015-03-14 13:21:20 +01:00
obscuren
35bc7b0d8a Merge branch 'rpcfrontier' into develop 2015-03-14 12:44:24 +01:00
obscuren
532a74f50e Improved errors. Closes #475 2015-03-14 12:43:10 +01:00
Jeffrey Wilcke
51df765e38 Merge pull request #481 from maran/feature/fromHexDry
DRY-up the use of fromHex in the project
2015-03-14 11:46:32 +01:00
Maran
9754e7aca7 Support for addresses with or without 0x. Fixes #472 2015-03-14 11:40:13 +01:00
Maran
991993357c DRY up the use of fromHex and put it in ethutil 2015-03-14 11:39:35 +01:00
Taylor Gerring
f49e17eb39 Return null coinbase when accounts not created
Was previously returning nonsensical “0x”
2015-03-13 14:32:11 -04:00
Felix Lange
67f8f83a1b cmd/ethereum: add blocktest command 2015-03-13 18:41:09 +01:00
Felix Lange
e463479b6c eth: add ResetWithGenesisBlock
This depends on a change in ethash which exposes UpdateCache.
2015-03-13 18:41:09 +01:00
Felix Lange
6f8a2d6b84 eth: add hook for database creation 2015-03-13 18:41:09 +01:00
Felix Lange
58d9d98daf cmd/utils: GetEthereum -> MakeEthConfig
This allows changing the config before starting Ethereum
with it.
2015-03-13 18:41:09 +01:00
Felix Lange
a80be98f31 tests: add helper functions for block tests 2015-03-13 18:41:09 +01:00
Felix Lange
9326541820 core/types: make Block.{ParentHash,SeedHash,MixDigest} []byte
There is no reason to keep them as ethutil.Bytes.
2015-03-13 18:41:09 +01:00
obscuren
b927c29469 GetBlockByNumber now properly looks for a number in the database 2015-03-13 18:29:42 +01:00
obscuren
fee9aecfb2 more tests for remote update 2015-03-13 17:53:53 +01:00
obscuren
ccda1aacb4 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-13 17:49:05 +01:00
obscuren
03403399fc Return proper error 2015-03-13 17:47:11 +01:00
obscuren
a0266489b4 Make remote dominant 2015-03-13 17:47:00 +01:00
Jeffrey Wilcke
a76d55c83a Merge pull request #467 from ethersphere/frontier/natspec
NatSpec integration
2015-03-13 16:47:16 +01:00
obscuren
b663e8b29a Merge branch 'rpcfrontier' into develop 2015-03-13 16:36:27 +01:00
obscuren
f1fcda4f2f Implemented managed state
* Reimplemented nonce management for known accounts.
2015-03-13 16:29:04 +01:00
Taylor Gerring
e3b64d70c2 Rename db_put db_get 2015-03-13 10:56:41 -04:00
Taylor Gerring
d3f96dc720 Consolidate error type switch 2015-03-13 10:03:48 -04:00
Taylor Gerring
0932f84383 Fix eth_newBlockFilter 2015-03-13 10:03:19 -04:00
obscuren
cda88ce31a Implemented a manage state for keeping track of nonces 2015-03-13 14:37:54 +01:00
obscuren
aa9f981d5f Bump protocol version 58 2015-03-13 13:52:57 +01:00
obscuren
e69d5b32e8 Increased genesis gas & gas floor limit to 3141592 2015-03-13 13:52:23 +01:00
obscuren
f76cc6699e Changed context and ADDMOD, MULMOD
* Cleaned up VM execution. VM run now takes a context
* ADDMOD/MULMOD - removed incorrect cast
2015-03-13 13:44:15 +01:00
Taylor Gerring
d4ed66c83d Add web3_clientVersion 2015-03-12 19:20:46 -05:00
Taylor Gerring
094f921e50 Convert to proper errors
Allow returning different JSON RPC error codes depending on error type
2015-03-12 19:07:03 -05:00
obscuren
80592f244d more obvious failure for ethtest 2015-03-12 23:26:58 +01:00
obscuren
6051345bc9 Squashed 'tests/files/' changes from d6c987f..0749546
0749546 random fails
a153865 random fails

git-subtree-dir: tests/files
git-subtree-split: 074954630f43e97f0769997d175511a00a47cc9d
2015-03-12 22:32:05 +01:00
obscuren
3a88da578f Merge commit '6051345bc9ab8ccf74a49c43342771e0c2cba588' into develop 2015-03-12 22:32:05 +01:00
obscuren
fa917387e4 Merge branch 'rpcfrontier' into develop 2015-03-12 22:31:13 +01:00
obscuren
310ca62285 Removed some of that gas pre pay magic 2015-03-12 22:29:10 +01:00
obscuren
3ff7a627d1 Squashed 'tests/files/' changes from 9e19ff9..d6c987f
d6c987f go failure

git-subtree-dir: tests/files
git-subtree-split: d6c987feed635976ce26b14b9be88289d0ef50d4
2015-03-12 20:01:46 +01:00
obscuren
2ae90e1eba Merge commit '3ff7a627d1921be0aeacdd8eb2853ba4537487eb' into develop 2015-03-12 20:01:46 +01:00
obscuren
11390a986a run all test 2015-03-12 19:43:20 +01:00
obscuren
347cb272be fixed ethtest 2015-03-12 19:41:56 +01:00
obscuren
412e8b0e37 Squashed 'tests/files/' changes from dbdd0f8..9e19ff9
9e19ff9 random state tests failures
7060dc7 dejavu issues
5a89a4b python fail
2470051 python fails - may be just wrong return value

git-subtree-dir: tests/files
git-subtree-split: 9e19ff93918597bbf53a2f127202a70704646d82
2015-03-12 19:15:12 +01:00
obscuren
d1c872bace Merge commit '412e8b0e377bd89fc8fc858bd09c89deee805c1e' into develop 2015-03-12 19:15:12 +01:00
obscuren
fb71c9f6ee Return 1 on fail 2015-03-12 18:22:56 +01:00
obscuren
83cc08f670 Changed to big.Int.Not 2015-03-12 18:22:35 +01:00
Taylor Gerring
14bdcd2c05 Fix arg names in tests 2015-03-12 11:50:03 -05:00
Taylor Gerring
7235e84c75 #469 2015-03-12 11:09:25 -05:00
Taylor Gerring
d11fabd2ef Update path to web3 library 2015-03-12 10:08:01 -05:00
Taylor Gerring
f7c3c7eda4 Update ethereum.js
Added to git modules
2015-03-12 10:03:35 -05:00
obscuren
b97c17f4ee Merge branch 'rpcfrontier' of github.com-obscure:ethereum/go-ethereum into rpcfrontier 2015-03-12 15:59:16 +01:00
obscuren
2273155e7e Get transaction implemented
* Added a GetTransaction to XEth
* Implemented the `eth_getTransactionByHash` RPC method
2015-03-12 15:59:07 +01:00
Taylor Gerring
b006b67768 Merge branch 'develop' into rpcfrontier 2015-03-12 09:24:34 -05:00
obscuren
26a5636424 Merge branch 'develop' into rpcfrontier 2015-03-12 14:51:05 +01:00
obscuren
3b3843e158 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-12 14:50:48 +01:00
obscuren
ef6706696c Add additional extra database for non-protocol related data
* Add transaction to extra database after a successful block process
2015-03-12 14:50:35 +01:00
Felix Lange
2a0e5888fd Merge pull request #460 from tgerring/ethutil
Move MakeName to ethutil
2015-03-12 14:45:31 +01:00
Taylor Gerring
4418e4ea6a Should on empty params #466 2015-03-12 08:42:31 -05:00
Taylor Gerring
21fca93852 Output filter ID as hex 2015-03-12 08:20:07 -05:00
zelig
4342fe0f22 include new minified natspec with RE fix; fix test for the improved error messages 2015-03-12 19:08:30 +07:00
Taylor Gerring
704914be08 Check for existance of key before delete 2015-03-12 00:01:18 -05:00
obscuren
31a95151c9 updated rnd vm test => state test 2015-03-12 01:12:28 +01:00
obscuren
92c6150199 Squashed 'tests/files/' changes from e390be4..dbdd0f8
dbdd0f8 update test script for python
29dced2 add failing python test
5b7ebb9 OOG or 1024 depth level fail
3f58fd8 run OOG at tx level with to high value for call
39d8595 run OOG and too high value for call/callcode
55fbf95 run OOG and too high value for call/callcode
8856bfb add callCreateCallCode test file
d2da29e check value when doing callcode
129a464 suicide and storage refund tests with and without storage
6aa5e29 suicide and storage refund tests
fff323d python fails
963648b python callcode fail
31ce83a python big memory fail
531bc36 add memory stress test using return
b7021c7 renaming
959ff59 vm input limit tests
1c3741f update blockchain tests with new uncle reward rule

git-subtree-dir: tests/files
git-subtree-split: dbdd0f829dea8aa053159707caf353d83bf5be0f
2015-03-12 00:57:28 +01:00
obscuren
96496888ed Merge commit '92c6150199395eea6c9893b631cc990e3ff72a33' into develop 2015-03-12 00:57:28 +01:00
obscuren
7ee5cb0a81 Merge branch 'develop' into rpcfrontier 2015-03-12 00:26:40 +01:00
obscuren
9fb52c517b Changed V to byte. Closes #456 2015-03-12 00:18:03 +01:00
Jeffrey Wilcke
6af078bd8c Merge pull request #462 from fjl/miner-coinbase
miner: provide coinbase when starting the miner
2015-03-11 23:56:48 +01:00
Felix Lange
d5aaf413e0 cmd/ethereum: remove extra check for 'no accounts' error
This error can no longer be returned from eth.New.
2015-03-11 23:43:27 +01:00
Felix Lange
d7b5a87b3b miner: provide coinbase when starting the miner
This avoids having to query the coinbase when creating the miner, which
in turn eliminates the dreaded startup error when no accounts are set
up. Later, this will also allow us to simply restart the miner when the
user picks a different coinbase.

This causes a lot of changes in other packages. These are included in
this commit because they're impossible to separate.
2015-03-11 23:43:27 +01:00
Taylor Gerring
70f6f2af07 shh_uninstallFilter 2015-03-11 15:49:21 -05:00
Taylor Gerring
c2181fdbf2 block&index args unmarshal plus test 2015-03-11 15:26:28 -05:00
Taylor Gerring
5a9f712144 Comment out broken test (return type does not exist) 2015-03-11 14:43:39 -05:00
Taylor Gerring
485e37e889 Move MakeName to ethutil 2015-03-11 14:29:07 -05:00
obscuren
587f748d92 Merge branch 'fjl-unencrypted-keys' into develop 2015-03-11 17:47:17 +01:00
obscuren
629f4b1d3c merge 2015-03-11 17:46:58 +01:00
obscuren
239e17de12 Merge branch 'rpcfrontier' into develop 2015-03-11 17:37:17 +01:00
obscuren
c01d4c2f4c Lowered default gas price and increased default gas limit 2015-03-11 17:36:35 +01:00
obscuren
2da7af4ba0 Merge branch 'rpcfrontier' of github.com-obscure:ethereum/go-ethereum into rpcfrontier 2015-03-11 17:00:30 +01:00
obscuren
e8d1b622d9 Default block number changes 2015-03-11 17:00:20 +01:00
Taylor Gerring
90f34ed40a Rename Topic to Topics 2015-03-11 10:56:44 -05:00
Taylor Gerring
61bf29be36 Check length of timestring before taking slice 2015-03-11 10:43:52 -05:00
obscuren
08b1154033 Changed logging to use internal logger 2015-03-11 16:36:10 +01:00
obscuren
477815c044 Improved error reporting and removed commented code 2015-03-11 16:33:39 +01:00
obscuren
6b63759ded Reverted global 2015-03-11 16:33:04 +01:00
obscuren
7add66c8bb Use the state to up the balance of the coinbase 2015-03-11 16:32:37 +01:00
Taylor Gerring
9e89c803f1 Get Uncles 2015-03-11 10:27:32 -05:00
Taylor Gerring
53ac85cfd3 BlockHash must be a string 2015-03-11 10:27:24 -05:00
Taylor Gerring
d465e410ef TxIndex -> Index 2015-03-11 10:25:15 -05:00
Felix Lange
99bc44cf52 cmd/ethereum: add a flag to switch to unencrytped keystore
This is mostly for automated tests. The tests can use the following
commands to start the node:

    ethereum --unencrypted-keys account new
    ...
    ethereum --unencrypted-keys
2015-03-11 13:58:01 +01:00
Taylor Gerring
6bca40274f Merge branch 'rpcfrontier' of github.com:ethereum/go-ethereum into rpcfrontier 2015-03-10 22:25:32 -05:00
Taylor Gerring
9ce5229ddf Get transaction via block & index 2015-03-10 22:25:07 -05:00
Taylor Gerring
ece29c5d8d Nil check block 2015-03-10 19:34:07 -05:00
obscuren
074ee19fe5 Merge branch 'develop' into rpcfrontier 2015-03-11 01:11:20 +01:00
obscuren
64933321fb Merge branch 'rpcfrontier' of github.com-obscure:ethereum/go-ethereum into rpcfrontier 2015-03-11 01:10:58 +01:00
obscuren
58909117be Use ECDSA instead of elliptic 2015-03-11 01:10:25 +01:00
Taylor Gerring
499f816e30 Output hex should be prepended with 0x 2015-03-10 19:10:02 -05:00
obscuren
7e0ccc9de5 Merge branch 'develop' into rpcfrontier
Conflicts:
	rpc/api.go
	rpc/args.go
2015-03-11 01:08:42 +01:00
Taylor Gerring
fda4d02f94 Left-pad odd length hex inputs and tests 2015-03-10 18:08:31 -05:00
obscuren
eba4f389a6 don't log whisper start ups 2015-03-10 22:43:07 +01:00
obscuren
7d77a2ffc3 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-10 22:42:24 +01:00
Jeffrey Wilcke
73171d18b9 Merge pull request #447 from fjl/accounts-integration
Accounts integration
2015-03-10 22:42:03 +01:00
obscuren
eb1b4c8ffe Merge branch 'fjl-accounts-integration' into develop 2015-03-10 20:37:23 +01:00
obscuren
ce595b9266 fallback 2015-03-10 20:28:20 +01:00
obscuren
35841e5190 id to hex 2015-03-10 20:16:53 +01:00
obscuren
d9f96293be Merge branch 'rpcfrontier' of github.com-obscure:ethereum/go-ethereum into rpcfrontier
Conflicts:
	rpc/args.go
2015-03-10 20:16:08 +01:00
obscuren
f22684439a Updated RPC
* Added a generic RawMessage deserialiser
* Updated ethereum.js
* Updated coin test app
2015-03-10 20:14:38 +01:00
Taylor Gerring
3d6519e45b Update response types 2015-03-10 12:52:45 -05:00
Taylor Gerring
617804c327 Merge branch 'rpcfrontier' of github.com:ethereum/go-ethereum into rpcfrontier 2015-03-10 12:50:13 -05:00
Felix Lange
269cfbb8ac Merge branch origin/develop into accounts-integration
Conflicts:
	cmd/blocktest/main.go
	cmd/mist/debugger.go
	cmd/utils/cmd.go
2015-03-10 17:14:31 +01:00
Felix Lange
972e2c1e31 cmd/utils: improve CLI help templates
Help for a specific command now shows available subcommands.
2015-03-10 16:44:48 +01:00
Felix Lange
221fae4112 cmd/ethereum: show some help before prompting for encryption passphrase 2015-03-10 16:44:22 +01:00
Felix Lange
2407f006ad Godeps: bump github.com/codegangsta/cli 2015-03-10 16:41:33 +01:00
Felix Lange
0bb7377ebe cmd/ethereum: show more helpful message if no accounts exist 2015-03-10 15:44:05 +01:00
Felix Lange
9d4e1e8f8b eth: return account errors directly 2015-03-10 15:42:58 +01:00
Felix Lange
c3f94a4341 cmd/utils: remove extra space in fatal error message 2015-03-10 15:42:25 +01:00
Felix Lange
4ba7871374 accounts: return ErrNoKeys if key directory does not exist 2015-03-10 15:41:08 +01:00
Felix Lange
0f67f1e9de xeth: fix signing transaction after unlock 2015-03-10 14:55:00 +01:00
Felix Lange
0395c174ca cmd/ethereum: fix line editing setup and history 2015-03-10 14:31:54 +01:00
obscuren
bbe8b18660 Added unmarshalState 2015-03-10 13:40:49 +01:00
obscuren
53f8f29744 Merge branch 'develop' into rpcfrontier 2015-03-10 12:39:59 +01:00
Jeffrey Wilcke
0542df941f Merge pull request #449 from Gustav-Simonsson/add_blockchain_tests2
Add empty total difficulty to test blocks and clean up stopping the node
2015-03-10 12:07:34 +01:00
obscuren
56524d13b5 removed debugger 2015-03-10 12:06:16 +01:00
obscuren
b87442a9f7 Fixed error message. Closes #448 2015-03-10 11:29:22 +01:00
obscuren
c0a8e3cd34 Merge branch 'poc-9' into develop 2015-03-10 11:25:32 +01:00
Jeffrey Wilcke
c9b6d268b4 Merge pull request #438 from ethersphere/poc9/cli
Poc9/cli (exportchain)
2015-03-10 11:24:47 +01:00
Jeffrey Wilcke
08d396fdba Merge pull request #437 from ethersphere/poc9/natspec
[WIP] Poc9/natspec
2015-03-10 11:24:30 +01:00
obscuren
05c9351659 Merge branch 'accounts-integration' of https://github.com/fjl/go-ethereum into fjl-accounts-integration 2015-03-10 11:04:11 +01:00
Felix Lange
80985f97da cmd/evm, core, ethdb, state, tests/helper: remove ReadConfig calls 2015-03-10 02:39:53 +01:00
Taylor Gerring
3de51f76ee Allow integers for BlockNumber
If parsing fails, fall back to hex decoding
2015-03-09 20:38:37 -05:00
Felix Lange
e6118f2d79 state: fix tests 2015-03-10 02:35:21 +01:00
Felix Lange
9b3ae1fdb7 eth: fix tests 2015-03-10 02:34:52 +01:00
Felix Lange
ae38871a54 cmd/ethereum: remove "prompter" in identifiers 2015-03-10 02:33:59 +01:00
Felix Lange
62ebce304e crypto: delete old key management stuff 2015-03-10 02:12:55 +01:00
Felix Lange
9f0e3bd286 cmd/ethereum: unlock accounts on JS REPL 2015-03-10 02:00:57 +01:00
Felix Lange
395da0e7c1 xeth: use Frontend interface to unlock accounts
The interface has moved to package xeth because that's where it is
actually used.
2015-03-10 02:00:06 +01:00
obscuren
0db4a0e898 Merge branch 'poc-9' into develop 2015-03-10 01:22:38 +01:00
obscuren
0d64163fea Right pad zeros. Closes #446 2015-03-10 01:13:06 +01:00
obscuren
9007f2bbdc reworked stack 2015-03-10 00:25:27 +01:00
Felix Lange
d1e04f7388 cmd/ethereum: allow multiple js files 2015-03-10 00:24:11 +01:00
Felix Lange
487f68ec48 accounts: add {Timed,}Unlock, remove SignLocked 2015-03-10 00:19:01 +01:00
obscuren
0795fd2701 wip 2015-03-09 23:34:31 +01:00
Felix Lange
9bf513e993 Merge ethereum/poc-9 into accounts-integration
Conflicts:
	cmd/utils/cmd.go
	cmd/utils/flags.go
	core/manager.go
	eth/backend.go
	rpc/http/server.go
	xeth/xeth.go
2015-03-09 23:25:46 +01:00
Felix Lange
cd51860bf0 cmd/utils: delete InitConfig, KeyTasks 2015-03-09 23:08:47 +01:00
Felix Lange
697f6748b8 cmd/mist: use cli library and package accounts 2015-03-09 23:08:47 +01:00
Felix Lange
c2e5dacf55 accounts: add Manager.HasAccount, delete Manager.Default 2015-03-09 23:08:46 +01:00
Felix Lange
63758db379 eth: delete unused RpcServer field 2015-03-09 23:08:46 +01:00
Felix Lange
6a7e02fc9f rpc/http: delete package 2015-03-09 23:08:46 +01:00
Felix Lange
a11f1d6a7e rpc: add dataDir parameter and JSON-RPC handler 2015-03-09 23:08:46 +01:00
Felix Lange
73d1ebe244 cmd/utils: add NewApp 2015-03-09 23:08:46 +01:00
Felix Lange
b4fa94c4b1 xeth: don't sign transactions for tx call
This should make calls faster and removes interaction
with account manager.
2015-03-09 23:08:46 +01:00
Felix Lange
2ee88a220a core: remove Hash method from Message interface
This will simplify the next commmit. Hash was only used for logging.
2015-03-09 23:08:41 +01:00
Felix Lange
2dacb51fb0 cmd/blocktest: simplify to fix build
block tests only need the chain, not all of ethereum.
2015-03-09 23:07:24 +01:00
obscuren
a7538d0020 merge 2015-03-09 18:19:35 +01:00
Gustav Simonsson
27c42ea934 Add empty total difficulty to test blocks and clean up stopping the node 2015-03-09 18:03:35 +01:00
obscuren
8560004f38 wip 2015-03-09 17:55:01 +01:00
obscuren
676a0de58d Max size JSON data. Closes #418 2015-03-09 17:28:12 +01:00
Taylor Gerring
9723191b19 Undo client_version changes 2015-03-09 11:04:38 -05:00
Taylor Gerring
fb23a0cfe0 Remove support for compiling serpent 2015-03-09 10:55:18 -05:00
obscuren
20741a96ac Updated xeth instances to take extra param for ui.Interface
Please be aware that if any of the instances on xeth.frontend are called
the program will crash due to the default, temporarily, frontend
interface.
2015-03-09 13:50:05 +01:00
obscuren
738d6e20f2 Added ui.Interface to xeth 2015-03-09 13:49:14 +01:00
obscuren
3deb470b2d Squashed 'tests/files/' changes from b9e4e74..e390be4
e390be4 remove deprecated tests
e9e8e7b update blockchain tests - correct genesis hash
a70dd35 fix genesis hash
35964c9 update uncle tests
82c108f update blocktests - fix LLL in pre state
66f0003 update transactionTests

git-subtree-dir: tests/files
git-subtree-split: e390be4fb8421fdabea041b7bdaea3b582224f7d
2015-03-09 11:43:46 +01:00
obscuren
21fd722abc Merge commit '3deb470b2d07d28040a381722022cdf8867a829a' into poc-9 2015-03-09 11:43:46 +01:00
obscuren
19efebe91e Updated tests and fixed suicide 2015-03-09 11:28:35 +01:00
obscuren
c1cafb56d5 Squashed 'tests/files/' changes from 05fe945..b9e4e74
b9e4e74 adjust gas prices
6a41300 add dajavi memory tests - OOG because of quadratic memory costs
71d80bd update genesis
72b1b52 add randomTest
4b2a090 Merge branch 'PoC9' into develop
fdf7ce0 updated basic blochain test
25c065a Merge pull request #70 from faizkhan00/patch-1
c7e1dac Rename 201501150842LARGE_DATA_IN_CALLCREATE_GOjson to 201501150842LARGE_DATA_IN_CALLCREATE_GO.json
REVERT: 05fe945 Added another pow test

git-subtree-dir: tests/files
git-subtree-split: b9e4e747f01a7b91863ffaa45fd377c251de45aa
2015-03-09 01:02:12 +01:00
obscuren
93cdffca3a Merge commit 'c1cafb56d5da57a44f1d766c5299f11664b93921' into poc-9 2015-03-09 01:02:12 +01:00
zelig
41a89e18f6 version output
- make version output more verbose
- include NetworkId
- go version and os not displayed like env vars (confusing)
2015-03-08 22:50:27 +07:00
zelig
51eed7964e add export blockchain subcommand, remove BlockDo 2015-03-08 22:44:48 +07:00
obscuren
e2c75b0fa1 Squashed 'tests/files/' changes from 15ce2ab..05fe945
05fe945 Added another pow test
7cf2f6b uncle header with block number = 1
d65c7a3 Merge remote-tracking branch 'origin/PoC9' into PoC9
8e05ce5 uncle tests
7c8f2b4 Merge branch 'PoC9' of github.com:ethereum/tests into PoC9
83d1f4d fixed

git-subtree-dir: tests/files
git-subtree-split: 05fe94507b92dbfbfe8c198df33160eaaf9e87fc
2015-03-08 15:29:27 +01:00
obscuren
30584c7cfb Merge commit 'e2c75b0fa17394553b93fe7ddd62c0f6a6441119' into poc-9 2015-03-08 15:29:27 +01:00
obscuren
5dfc67efbd ignore 2015-03-08 15:29:23 +01:00
zelig
0743d68d4c rename constructor New 2015-03-08 20:17:20 +07:00
zelig
97dc4edb45 natspec for poc-9
- put natspec.js in a heredoc string (to help binary)
- constructor takes no args, just sets up js vm
- API: only exports Notice(transaction, abi, method, expression string) (string, error)
- effort to turn natspec.js error strings to proper go errors
- test errors
2015-03-08 20:09:13 +07:00
Felix Lange
6684ef201a accounts: don't store address in unlocked and add commentary
This was suggested during review.
2015-03-08 02:47:05 +01:00
Felix Lange
fb53a9362e accounts: AccountManager -> Manager 2015-03-08 01:58:35 +01:00
Felix Lange
3750ec7b7d accounts: prevent early drops and zero keys in memory when dropping
Private keys would be locked early if SignLocked was called more than
once because the unlockLater was still running. Terminate it properly.
2015-03-08 01:44:15 +01:00
obscuren
f6df3740a8 ignore 2015-03-08 01:31:19 +01:00
obscuren
07955b3041 merge 2015-03-08 01:09:34 +01:00
obscuren
405c0ca4b0 removed 2015-03-08 01:06:59 +01:00
obscuren
e189758d55 Merge branch 'poc-9' of github.com-obscure:ethereum/go-ethereum into poc-9 2015-03-08 01:02:46 +01:00
obscuren
8ea0444655 updated ethash 2015-03-08 01:02:39 +01:00
obscuren
69920c735a Bump v 2015-03-08 00:59:26 +01:00
obscuren
e26ebc3110 Updated ethereum.js 2015-03-08 00:54:18 +01:00
Felix Lange
d6a7332993 accounts: fix uses of sync.RWMutex
RWMutexes must be write-locked when writing in order
to actually protect the writes.
2015-03-08 00:36:06 +01:00
Felix Lange
afc530ea41 accounts: use time.Duration correctly
There is no point to using time.Duration if the value is interpreted as
milliseconds. Callers should use the standard multiplication idiom to
choose the unit. In fact, the only caller outside of the tests already
does so.
2015-03-08 00:35:23 +01:00
Felix Lange
fda7b4c79d accounts: use pointers consistently
Account is now always a non-pointer. This will be important once
the manager starts remembering accounts.

AccountManager is now always a pointer because it contains locks
and locks cannot be copied.
2015-03-08 00:18:13 +01:00
Taylor Gerring
fca652eeea Fix logger import path 2015-03-07 10:48:38 -06:00
obscuren
70cbfb199d Added deploy scripts from go-build 2015-03-07 13:16:13 +01:00
Felix Lange
a2810c06d7 cmd/ethereum: add account commands 2015-03-07 12:39:52 +01:00
Felix Lange
d66f93cecd accounts, core, eth, xeth: use account manager for everything
The account manager is now responsible for picking the
default account and the coinbase.
2015-03-07 12:38:33 +01:00
Jeffrey Wilcke
c27c2be584 Merge pull request #435 from zsfelfoldi/poc-9
Natspec + test
2015-03-06 20:11:43 +01:00
obscuren
22b493a6ff Fixed tests 2015-03-06 20:10:59 +01:00
Fefe
e157147253 Now using github.com/obscuren/otto, no need for an Ethereum object
(got rid of some messy code in test)
2015-03-06 18:54:26 +01:00
obscuren
cd856cb213 Separated block db from state db. Partial fix for #416 2015-03-06 18:26:16 +01:00
obscuren
ed84b58af5 Debug option for VM & command line flag 2015-03-06 16:58:52 +01:00
Taylor Gerring
dc7022cd61 Increased args test coverage 2015-03-06 09:54:08 -06:00
obscuren
548e104171 Merge branch 'poc-9' of github.com-obscure:ethereum/go-ethereum into poc-9 2015-03-06 16:40:21 +01:00
obscuren
8d9be18b29 Queued approach to delivering chain events 2015-03-06 15:50:44 +01:00
Gustav Simonsson
bc45e5c6de Integrate eth_accounts and eth_transact to use new account manager
* Add from to eth_transact / xeth.Transact and add static pass in lieu
  of integrating with native Mist window for user passphrase entry
* Make eth_accounts return AccountManager.Accounts()
* Add a Generate Key menu item in Mist
2015-03-06 13:10:42 +00:00
Felix Lange
e64f727529 Merge pull request #433 from fjl/newcli
Improved CLI
2015-03-06 14:02:16 +01:00
Felix Lange
a91bf01429 Merge pull request #434 from fjl/poc-9
Godeps: bump github.com/ethereum/ethash
2015-03-06 13:31:41 +01:00
Felix Lange
71e510540e Godeps: bump github.com/ethereum/ethash
This fixes the build.
2015-03-06 12:28:00 +00:00
Felix Lange
de86403f33 cmd/ethereum: fix JS REPL exit and add support for dumb terminals
It is now possible to exit the REPL using Ctrl-C, Ctrl-D or by typing "exit".
2015-03-06 13:08:11 +01:00
obscuren
b72ca57775 Merge branch 'ethersphere-blockpool3' into poc-9 2015-03-06 12:10:23 +01:00
Felix Lange
2393de5d6b Godeps: add github.com/peterh/liner 2015-03-06 10:39:31 +01:00
obscuren
23ad2f02c0 debug comments & pow handling 2015-03-06 10:22:40 +01:00
Taylor Gerring
5da3d911cf Initial args tests 2015-03-06 00:03:22 -06:00
Taylor Gerring
18b076861e Add web3_sha3 test 2015-03-05 22:41:55 -06:00
Taylor Gerring
03dc760ca0 Tidy 2015-03-05 21:48:03 -06:00
Taylor Gerring
ef9d825cfa Refactor & cleanup 2015-03-05 21:37:45 -06:00
Felix Lange
38f6d60e6e cmd/ethereum: new JS repl with cross-platform line editing 2015-03-06 03:57:13 +01:00
Felix Lange
bae7e93a9c cmd/ethereum: improve command line interface
The ethereum command line interface is now structured using subcommands.
These separate the different tasks it can perform.

Almost all flag names are backwards compatible.

The key tasks have not been ported to subcommands since they will be
replaced by the new accounts infrastructure very soon.
2015-03-06 03:57:13 +01:00
Fefe
b67ded9f27 Natspec + test 2015-03-06 03:43:34 +01:00
Felix Lange
f9c6bc63df Godeps: delete golang.org/x/net/websocket
It is no longer imported by any package in our tree.
2015-03-06 02:54:57 +01:00
Felix Lange
bdba044a80 ethutil: remove Config variable
Various functions throughout the codebase used it to grab settings. This
has to stop because I want to use them without reading the config file.

These functions can now be used without reading the config first:

* ethdb.NewLDBDatabase
* ethrepl.NewJSRepl
* vm.New
2015-03-06 02:46:56 +01:00
obscuren
5f4a6069c5 Merge branch 'blockpool3' of https://github.com/ethersphere/go-ethereum into ethersphere-blockpool3 2015-03-05 21:53:42 +01:00
Taylor Gerring
94e543bc39 Merge pull request #431 from tgerring/jsonlogs
Structured logging updates
2015-03-05 14:32:41 -06:00
obscuren
580d09084d Merge branch 'ethersphere-blockpool2' into poc-9 2015-03-05 20:38:36 +01:00
obscuren
e089478a1c Merge branch 'blockpool2' of https://github.com/ethersphere/go-ethereum into ethersphere-blockpool2 2015-03-05 20:38:19 +01:00
obscuren
88ff13c241 Spec changes.
* All errors during state transition result in an invalid tx
2015-03-05 19:51:25 +01:00
zelig
9067b2848a fix wonky head section loop; correct status counts 2015-03-06 01:33:57 +07:00
Taylor Gerring
9f5e9eb38d Resolve storage/storageat 2015-03-05 12:26:21 -06:00
Taylor Gerring
a6599404e4 Revert to hex response 2015-03-05 11:14:47 -06:00
Taylor Gerring
0d8d51084f Final name changes 2015-03-05 11:07:05 -06:00
Taylor Gerring
5948adfa10 Added eth.chain.received.new_block 2015-03-05 10:58:36 -06:00
Taylor Gerring
fbb307cca0 Added eth.chain.new_head 2015-03-05 10:58:13 -06:00
obscuren
4e8a9a1cd4 Squashed 'tests/files/' changes from 9e3fe72..15ce2ab
15ce2ab Merge remote-tracking branch 'origin/PoC9' into PoC9
5970b09 add quadratic complexity and performance test
163fa03 more info
560b844 more info
a885549 more change
5fed708 one more tiny change
213a2b8 changed test format
c20e88b Merge branch 'PoC9' of github.com:ethereum/tests into PoC9
715ed17 Added first ethash test
e26a39f update blockchain tests to latest protocol changes
34baee5 poc9 vm tests
20550d9 update block chain test due to difficulty change
597b2b3 increase gasLimit on stateTests
8f573d3 update blockchain tests - 2048 bit logs bloom
06c90e6 typo
ef935fc extra data is hex now, for real
81ab5ad extra data is hex now
b0aeba8 update blockchain tests
f862faf add tx tests
618d724 update state tests
4a989f0 update blockchainII tests
ed56e82 add more vm tests
0417655 Merge remote-tracking branch 'origin/PoC9' into PoC9
1f1cf5d update block tests
76b5a8b Fix trie formats.
325dd6d Merge branch 'PoC9' of git://github.com/ethereum/tests into PoC9
a261c5b test3
1d3ab36 again

git-subtree-dir: tests/files
git-subtree-split: 15ce2ab8e22275e7aa93742cb5f8bc63e4e50db5
2015-03-05 17:51:26 +01:00
obscuren
ca1093f848 Merge commit '4e8a9a1cd4a10370fc4a888af0fb2def6f1b961b' into poc-9 2015-03-05 17:51:26 +01:00
obscuren
a7181bd304 merge 2015-03-05 17:49:29 +01:00
obscuren
76e4e233ad Merge branch 'poc-9' of github.com-obscure:ethereum/go-ethereum into poc-9 2015-03-05 17:48:46 +01:00
Jeffrey Wilcke
f01d745d70 Merge pull request #429 from chfast/pr/fix_vm_tests
Fix VM tests
2015-03-05 17:46:57 +01:00
obscuren
d44fe4ec62 Merge branch 'develop' into poc-9 2015-03-05 17:46:40 +01:00
obscuren
72bf02bf15 Merge branch 'tendermint-develop_pull_request' into develop 2015-03-05 17:46:11 +01:00
obscuren
357d17ae58 Start at 0 2015-03-05 17:46:00 +01:00
obscuren
1d1ba40965 Merge branch 'develop_pull_request' of https://github.com/tendermint/ethermint into tendermint-develop_pull_request 2015-03-05 17:44:18 +01:00
Jeffrey Wilcke
3b30765378 Merge pull request #426 from Gustav-Simonsson/add_blockchain_tests
Add initial implementation of block tests
2015-03-05 17:43:56 +01:00
obscuren
377c8a13de Merge branch 'develop' into poc-9 2015-03-05 17:37:18 +01:00
obscuren
201b09f99a Merge branch 'alexvandesande-ui' into develop 2015-03-05 17:37:09 +01:00
obscuren
44b83c6ea6 Removed unused variables 2015-03-05 17:37:00 +01:00
obscuren
12ca70537f Merge branch 'fjl-p2p-handshake-2' into poc-9 2015-03-05 17:26:41 +01:00
obscuren
ba0c41436c Merge branch 'p2p-handshake-2' of https://github.com/fjl/go-ethereum into fjl-p2p-handshake-2 2015-03-05 17:21:32 +01:00
obscuren
fabaf4f1f0 wip math 2015-03-05 17:21:16 +01:00
Taylor Gerring
90ceb5218c Update RPC methods
Re-order to match spec and explicitly list unimplemented methods
2015-03-05 08:58:46 -06:00
zelig
9329e175d8 fix wonky head section loop; correct status counts 2015-03-05 20:38:23 +07:00
Paweł Bylica
0af08eca1f Fix VM tests not checked 2015-03-05 14:35:27 +01:00
zelig
45afbe5d9c Merge remote-tracking branch 'upstream/poc-9' into blockpool3 2015-03-05 16:55:11 +07:00
obscuren
c47866d251 Miner fixes and updates (including miner) 2015-03-05 09:14:58 +01:00
zelig
7315962880 use ethash.Verify in blockpool 2015-03-05 11:22:36 +07:00
=
a6fe92194f Fixed iterator bug which skips the 0x000...000 key 2015-03-05 01:47:49 +00:00
Taylor Gerring
1576551741 Output 0x0 instead of 0x 2015-03-04 14:13:31 -06:00
Alexandre Van de Sande
178798ef87 network back to local files 2015-03-04 16:31:48 -03:00
Gustav Simonsson
871dfd399b Add initial implementation of block tests
* Add blocktest cmd and support for block tests files in
  tests/BlockTests , the launched node does not connect to
  network, resets state with a genesis block from the test file
  and starts the RPC API
2015-03-04 20:27:09 +01:00
Alexandre Van de Sande
671e38fb65 Fixed Average Return calculation 2015-03-04 15:13:57 -03:00
Alexandre Van de Sande
e1bae3771e updated network app to latest build 2015-03-04 12:59:17 -03:00
Felix Lange
215c763d53 eth, p2p: delete p2p.Blacklist
It is unused and untested right now. We can
bring it back later if required.
2015-03-04 16:54:36 +01:00
Felix Lange
429828cd92 p2p: reject messages that cannot be written as simple RLPx frames
Until chunked frames are implemented we cannot send messages
with a size overflowing uint24.
2015-03-04 16:42:01 +01:00
Felix Lange
22659a7fea p2p: restore read/write timeouts
They got lost in the transition to rlpxFrameRW.
2015-03-04 16:42:00 +01:00
Taylor Gerring
9b0f00baf3 Output net_peerCount as hex 2015-03-04 08:41:13 -06:00
Taylor Gerring
93141f4b6d Return block number as hex 2015-03-04 08:27:34 -06:00
Taylor Gerring
c3deafabda Update NewTXArgs to accept hex 2015-03-04 08:22:59 -06:00
Taylor Gerring
c92e48ce3f Add client_version RPC message 2015-03-04 07:54:10 -06:00
Alexandre Van de Sande
5f25c117eb Merge branch 'develop' into ui 2015-03-04 10:04:07 -03:00
Alexandre Van de Sande
cf880f78d5 network dashboard is now a local file 2015-03-04 10:02:11 -03:00
Felix Lange
6e7e5d5fd5 eth, whisper: fix msg.Payload reads 2015-03-04 13:25:01 +01:00
Felix Lange
7964f30dcb p2p: msg.Payload contains list data
With RLPx frames, the message code is contained in the
frame and is no longer part of the encoded data.

EncodeMsg, Msg.Decode have been updated to match.
Code that decodes RLP directly from Msg.Payload will need
to change.
2015-03-04 12:27:24 +01:00
Felix Lange
21649100b1 p2p: verify protocol handshake node ID 2015-03-04 12:27:24 +01:00
Felix Lange
7d39fd6678 p2p: make encryption handshake code easier to follow
This mostly changes how information is passed around.
Instead of using many function parameters and return values,
put the entire state in a struct and pass that.

This also adds back derivation of ecdhe-shared-secret. I deleted
it by accident in a previous refactoring.
2015-03-04 12:27:24 +01:00
Felix Lange
2c505efd1e p2p/discover: add NodeID.Pubkey 2015-03-04 12:27:24 +01:00
Felix Lange
d344054e5a p2p: make RLPx frame MAC 16 bytes as defined in the spec 2015-03-04 12:27:24 +01:00
Felix Lange
d084aed5e9 p2p: delete frameRW 2015-03-04 12:27:24 +01:00
Felix Lange
736e632215 p2p: use RLPx frames for messaging 2015-03-04 12:27:23 +01:00
Felix Lange
51e01cceca p2p: encrypted and authenticated RLPx frame I/O 2015-03-04 12:27:23 +01:00
Felix Lange
936dd0f3bc p2p: add basic RLPx frame I/O 2015-03-04 12:27:23 +01:00
obscuren
15f491e500 Clean up REPL 2015-03-04 12:18:26 +01:00
obscuren
5817dab89e Merge branch 'develop' into poc-9 2015-03-04 10:51:44 +01:00
obscuren
a56243075a removed double flag. Closes #421 2015-03-04 10:51:17 +01:00
obscuren
84a4f761f3 uncle validation 2015-03-04 10:49:56 +01:00
obscuren
d4d505c868 Fixed genesis 2015-03-03 21:48:05 +01:00
obscuren
08fd0715f9 updated genesis 2015-03-03 21:09:29 +01:00
obscuren
26de12d9bf Changed nonce to a uint64 2015-03-03 21:04:31 +01:00
Jeffrey Wilcke
2b3c55f20d Merge pull request #413 from chfast/pr/jit_build_fixes
JIT build fixes
2015-03-03 20:39:51 +01:00
obscuren
e9f1e868e2 Merge branch 'develop' into poc-9 2015-03-03 20:38:46 +01:00
obscuren
827ea43478 removed all old filters 2015-03-03 20:38:28 +01:00
obscuren
bb152612e0 Merge branch 'develop' into poc-9
Conflicts:
	cmd/utils/cmd.go
2015-03-03 20:34:48 +01:00
obscuren
cfe3af099c Merge branch 'ethersphere-jsonlogs' into poc-9 2015-03-03 20:31:12 +01:00
obscuren
f0b2ea64fc Merge branch 'jsonlogs' of https://github.com/ethersphere/go-ethereum into ethersphere-jsonlogs
Conflicts:
	eth/block_pool.go
	eth/block_pool_test.go
	eth/protocol_test.go
	miner/worker.go
2015-03-03 20:30:05 +01:00
obscuren
2707891966 Merge branch 'ethersphere-blockpool2' into poc-9 2015-03-03 20:27:15 +01:00
obscuren
d8a68dc0f1 Merge branch 'blockpool2' of https://github.com/ethersphere/go-ethereum into ethersphere-blockpool2 2015-03-03 20:26:59 +01:00
Jeffrey Wilcke
253eb778d1 Merge pull request #411 from ethersphere/readme
[WIP] Update Readme
2015-03-03 20:17:51 +01:00
Jeffrey Wilcke
988391fc37 Merge pull request #409 from tgerring/jsonlogs
Updated JSON log events
2015-03-03 20:16:55 +01:00
Jeffrey Wilcke
b1603f166e Merge pull request #408 from tgerring/removews
Remove Websockets RPC transport
2015-03-03 20:16:16 +01:00
obscuren
8e995b97cc Fixes and debug added 2015-03-03 20:13:11 +01:00
zelig
2c616bd279 partial fix to idle best peer issue
- best peer cannot be idle for more than idleBestPeerTimeout
- introduce ErrIdleTooLong fatal error
- modify default values
2015-03-04 02:06:15 +07:00
Alexandre Van de Sande
8c2940a98b updating to new network health page 2015-03-03 15:00:34 -03:00
obscuren
40ff3cac39 merge 2015-03-03 17:56:36 +01:00
obscuren
53b5a45856 Merge branch 'xcthulhu-publictests' into poc-9 2015-03-03 17:55:29 +01:00
obscuren
313fe3861b fixed pow stuff 2015-03-03 17:55:23 +01:00
obscuren
22b132e28f Merge branch 'publictests' of https://github.com/xcthulhu/go-ethereum into xcthulhu-publictests 2015-03-03 17:20:34 +01:00
obscuren
b0aaa77f02 changed message 2015-03-03 17:20:10 +01:00
obscuren
ee0a1bec6c GasLimit check updated 2015-03-03 17:05:51 +01:00
obscuren
c74c07eed1 Fixed error for invalid transaction 2015-03-03 16:20:38 +01:00
obscuren
6518da7c01 Merge commit 'a6e04ab05150d1b5aa4adb297f3e5146b1559b02' into poc-9 2015-03-03 15:39:34 +01:00
obscuren
a6e04ab051 Squashed 'tests/files/' changes from 13be3e3..9e3fe72
9e3fe72 update state root hash

git-subtree-dir: tests/files
git-subtree-split: 9e3fe720e3d46f046e06a91e45c881e79557f721
2015-03-03 15:39:33 +01:00
obscuren
651b2158ba Merge commit '42a210b571b9358df16da148d9724c2ef9abbca5' into poc-9 2015-03-03 15:16:52 +01:00
obscuren
42a210b571 Squashed 'tests/files/' changes from 402e748..13be3e3
13be3e3 update

git-subtree-dir: tests/files
git-subtree-split: 13be3e33afa8d708786f82b63bf874138f05bb02
2015-03-03 15:16:52 +01:00
obscuren
9f359dfffa Merge commit 'd9d40888ce9498b25925ccbf1447b1f62597aa2f' into poc-9 2015-03-03 13:56:59 +01:00
obscuren
d9d40888ce Squashed 'tests/files/' changes from 2bfb7db..402e748
402e748 Merge branch 'PoC9' of github.com:/ethereum/tests into PoC9
13b6a99 State test refill.

git-subtree-dir: tests/files
git-subtree-split: 402e7482f9283e08869b3412329e24ef6287d8c7
2015-03-03 13:56:59 +01:00
obscuren
2a50931684 Merge commit '0867e4fae96c0b0d234f1710119a129f8b0d96f7' into poc-9 2015-03-03 13:29:59 +01:00
obscuren
0867e4fae9 Squashed 'tests/files/' changes from 6f75ca3..2bfb7db
2bfb7db update memory test
88f32fa Merge remote-tracking branch 'origin/PoC9' into PoC9
a1f73f9 update gas costs
e16b5d3 Move over to key value rather than array of arrays since they're unordered and no duplicates.
ac11bbc Merge branch 'PoC9' of github.com:/ethereum/tests into PoC9
93ae304 Move to non-repeated.
fd9e406 Added test 2

git-subtree-dir: tests/files
git-subtree-split: 2bfb7dbe09c62319b28a2c2873caf7e7e99bf32a
2015-03-03 13:29:59 +01:00
obscuren
fa831206c6 Updated gast costs 2015-03-03 13:29:52 +01:00
Paweł Bylica
e72173dc43 Fix JitVm build 2015-03-03 12:31:26 +01:00
obscuren
4659b51b50 Squashed 'tests/files/' changes from 998e275..6f75ca3
6f75ca3 Merge remote-tracking branch 'origin/PoC9' into PoC9
8d22687 update state root - DEBUG

git-subtree-dir: tests/files
git-subtree-split: 6f75ca354f239fa30f4e07754ede575aed24bbc2
2015-03-03 12:31:09 +01:00
obscuren
ffa6b99ab6 Merge commit '4659b51b50394c596f0548eb53390c80ba96e392' into poc-9 2015-03-03 12:31:09 +01:00
obscuren
524bf9e858 wup 2015-03-03 12:30:57 +01:00
obscuren
b7ec9fbb0e Squashed 'tests/files/' changes from a3d44ca..998e275
998e275 renamed
089e346 Added hex encoded securetrie test
cdefad8 Update VM tests.
ec0a309 update state root
b3d223e update state root hash
171a945 update memory teste

git-subtree-dir: tests/files
git-subtree-split: 998e2756b5491c760f6624c62ebc09e86197c31f
2015-03-03 12:26:24 +01:00
obscuren
e73d7725df Merge commit 'b7ec9fbb0e49e345a8a2566226a76d50b48266a7' into poc-9 2015-03-03 12:26:24 +01:00
obscuren
b909a5ec18 Trie => SecureTrie 2015-03-03 12:25:44 +01:00
obscuren
1650b59cd9 Delet => Delete 2015-03-03 12:21:27 +01:00
obscuren
bf5365b317 Delet => Delete 2015-03-03 12:15:58 +01:00
obscuren
ba0a758d8c Quad mem & log changes 2015-03-03 11:56:43 +01:00
obscuren
49da6a8d80 Fixed test helper 2015-03-03 11:56:28 +01:00
obscuren
34ee5ab9a8 Bloom expanded by 4 2015-03-03 11:56:12 +01:00
obscuren
fa910966ed Redone rlp 2015-03-03 11:18:50 +01:00
obscuren
d0354b8440 Squashed 'tests/files/' changes from c6111e6..a3d44ca
a3d44ca update state tests to PoC9
709d6a7 update stSystemOperationsTest.json
3188f77 fix jumpdest requirements
202b69a remove memory test
41b4e1d add memory tests
2597bdf Merge remote-tracking branch 'origin/PoC9' into PoC9
0de34b2 add stateRoot to state tests
10b4ced Remove unneeded tests.
88eb6bf Fix for tests.
9010f17 Test updates.

git-subtree-dir: tests/files
git-subtree-split: a3d44caae83dd48db7df176dc784c529945e90a1
2015-03-03 11:11:24 +01:00
obscuren
2f647c443a Merge commit 'd0354b844028220b31f55c2cdbe9d4cc546d4b52' into poc-9 2015-03-03 11:11:24 +01:00
obscuren
c1ef19bef9 quad mem 2015-03-03 11:11:11 +01:00
zelig
6c2856df23 add eth.chain.new_head log to core/chain_manager 2015-03-03 15:44:41 +07:00
zelig
fc47f0f27b add eth.chain.received.new_block log to eth protocol 2015-03-03 15:43:05 +07:00
zelig
76af536d0d block number is *big.Int, remoteID is string 2015-03-03 15:37:20 +07:00
zelig
34be795bc1 Merge remote-tracking branch 'tgerring/jsonlogs' into jsonlogs 2015-03-03 13:52:20 +07:00
zelig
7e224b6834 db name database -> blockchain in backend error message 2015-03-03 13:22:19 +07:00
Matthew Wampler-Doty
de9f79133f Introducing ethash 2015-03-02 22:29:34 -05:00
Matthew Wampler-Doty
080823bdee Only one uncle 2015-03-02 18:56:11 -05:00
Alexandre Van de Sande
21c373b55d Network Health Panel with mining 2015-03-02 18:39:07 -03:00
zelig
47278a6e4e log when added peer is behind (hash found in blockchain) 2015-03-03 03:39:21 +07:00
Taylor Gerring
e7b33e9ae7 Move p2p.MakeName to ethutil.MakeVersion 2015-03-02 13:21:57 -06:00
zelig
af6971f823 Merge remote-tracking branch 'upstream/develop' into blockpool2 2015-03-03 02:13:41 +07:00
zelig
2dc1b7282a remove threatening coding standards section from README 2015-03-03 01:51:00 +07:00
zelig
1d8a427753 remove obsolete install script 2015-03-03 01:46:25 +07:00
zelig
deb2e50296 minor cleanup 2015-03-03 01:45:50 +07:00
zelig
c1bae04203 update README
- TLDR for godep install
- update executable section
- cleanup
- add several links to wiki
2015-03-03 01:44:29 +07:00
Paweł Bylica
24003c76d1 Merge remote-tracking branch 'upstream/develop' into evmjit 2015-03-02 18:46:55 +01:00
zelig
a60a18b080 - fix peer disconnect by adding severity function to errs
- improve logging
- suicide -> removeChain
- improved status BlocksInPool calculation
2015-03-03 00:43:12 +07:00
Paweł Bylica
9c6d9dfc5c Add required block number 2015-03-02 18:43:01 +01:00
obscuren
41c9dc973d Squashed 'tests/files/' changes from ce7204f..c6111e6
c6111e6 New tests.

git-subtree-dir: tests/files
git-subtree-split: c6111e6b5d23766743d004707475e84848ff0ddb
2015-03-02 18:00:10 +01:00
obscuren
fe7ab662f0 Merge commit '41c9dc973d2dc8614db6c1e3dbb2ec5564935368' into poc-9 2015-03-02 18:00:10 +01:00
obscuren
200f66537c updated tests 2015-03-02 17:55:45 +01:00
obscuren
0823254c3b Add 'tests/files/' from commit 'ce7204fa17560f6a76c7592bf5f23d29f22042d6'
git-subtree-dir: tests/files
git-subtree-mainline: 4f3f881c9b
git-subtree-split: ce7204fa17
2015-03-02 16:43:12 +01:00
Taylor Gerring
fb2488235a Remove defunct calls 2015-03-02 09:36:48 -06:00
obscuren
4f3f881c9b removed tests 2015-03-02 16:36:34 +01:00
Taylor Gerring
540c79e6ad Rename "net" methods 2015-03-02 09:36:14 -06:00
obscuren
b13735b400 updated tests 2015-03-02 16:34:03 +01:00
obscuren
b383ff0b96 New gas prices model 2015-03-02 16:32:02 +01:00
CJentzsch
ce7204fa17 rm failing tests 2015-03-02 16:20:38 +01:00
CJentzsch
d9ea240122 rm failing random tests 2015-03-02 15:59:39 +01:00
CJentzsch
67f3f4c1d8 vmGasCostchanges 2015-03-02 15:50:12 +01:00
Taylor Gerring
a75af474f7 Fix logger import in tests 2015-03-02 08:27:26 -06:00
Taylor Gerring
e31ec57f88 Add event eth.tx.received 2015-03-02 08:17:09 -06:00
Taylor Gerring
0976c3024f Don't import logger as ethlogger 2015-03-02 08:15:28 -06:00
CJentzsch
cb868a604c add secure trie tests 2015-03-02 14:32:29 +01:00
Taylor Gerring
4cb0bfe939 Merge branch 'develop' of github.com:ethereum/go-ethereum into removews
Conflicts:
	cmd/ethereum/flags.go
	cmd/mist/flags.go
2015-03-02 07:06:08 -06:00
CJentzsch
bc1d97b2a7 refine memory stress test 2015-03-02 11:45:29 +01:00
obscuren
6e50a1e9f5 Filter accepts multiple topics per entry. Fixes #403 2015-03-01 19:08:26 +01:00
obscuren
ac88ae86a3 GetOrNew for accessors. Fixes #404 2015-03-01 19:07:38 +01:00
Taylor Gerring
cfe0370280 Remove Websockets RPC transport 2015-03-01 16:19:06 +01:00
Taylor Gerring
60a2704b04 Implement eth.miner.new_block event 2015-03-01 16:09:59 +01:00
obscuren
65cad14f9b Report debug hash rate 2015-02-28 23:09:49 +01:00
obscuren
fdf939a6f9 Fixed miner threads for ethereum CLI 2015-02-28 23:01:41 +01:00
CJentzsch
2dbdcf3636 move extrem memory test to stMemoryStressTest.json 2015-02-28 22:03:38 +01:00
Christoph Jentzsch
5375dd6756 Merge pull request #69 from winsvega/develop
Fork block tests
2015-02-28 21:19:48 +01:00
Jeffrey Wilcke
cdb77f0ecd Merge pull request #402 from tgerring/rpcupdates
Set RPC listening address via param
2015-02-28 21:07:46 +01:00
Jeffrey Wilcke
43b5777709 Merge pull request #398 from tgerring/assetpath
Check source directory for assets as last resort
2015-02-28 21:06:57 +01:00
CJentzsch
35f53abc78 more memmory hard quadratic complexity tests 2015-02-28 20:57:55 +01:00
obscuren
73c52d1677 Merge branch 'ethersphere-blockpool2' into poc-9 2015-02-28 20:52:57 +01:00
obscuren
ae45a39dc1 Secure trie 2015-02-28 20:52:29 +01:00
obscuren
7ab13e0f17 Unused variable 2015-02-28 20:24:20 +01:00
obscuren
6c0b194382 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-28 20:14:10 +01:00
obscuren
7adf065b10 Simple effective VM optimisation
Added a debug flag to the VM which determines if VM output is shown
regardless of the log level set.
2015-02-28 20:14:01 +01:00
obscuren
6ea7aae29c Removed some methods from the JS REPL 2015-02-28 19:15:57 +01:00
winsvega
11fbc41e4b Fork block tests 2015-02-28 20:54:09 +03:00
Matthew Wampler-Doty
ba1f4bbe91 Exposing stuff for ethash 2015-02-27 20:56:24 -05:00
Taylor Gerring
ea0517b539 Report RPC listening address in logs 2015-02-28 01:04:54 +01:00
Taylor Gerring
f6e821fd33 Add flag to set RPC port 2015-02-28 01:00:42 +01:00
Matthew Wampler-Doty
3820a65299 Merge branch 'publictests' of github.com:ebuchman/go-ethereum into ethash_pow 2015-02-27 16:13:31 -05:00
Ethan Buchman
0efd6a881a public functions for making chains on the fly 2015-02-27 16:05:03 -05:00
Matthew Wampler-Doty
8653db6df0 Introducign MixDigest and SeedHash 2015-02-27 15:59:33 -05:00
CJentzsch
cb8d0fa874 more jump tests 2015-02-27 14:16:25 +01:00
CJentzsch
fc3c7760a5 add more addmod mulmod overflow tests 2015-02-27 13:28:44 +01:00
CJentzsch
b6155375ae add refund tests with CALL 2015-02-27 12:41:58 +01:00
Taylor Gerring
ad3a21f260 Bump to latest versions for Docker 2015-02-27 00:52:01 +01:00
Ethan Buchman
5a827417d9 Merge branch 'develop' of https://github.com/ethereum/go-ethereum into develop 2015-02-26 17:54:57 -05:00
Taylor Gerring
a39c73672e bump last resort check out of ifelse 2015-02-26 21:04:26 +01:00
Taylor Gerring
d90b71bc55 Check source directroy for assets as last resort 2015-02-26 21:01:40 +01:00
obscuren
cc5c8a444d Report proper database directory. Closes #397 2015-02-26 20:36:54 +01:00
obscuren
3a7c8d7ae4 Merge branch 'hotfix/0.8.5-2' into develop 2015-02-26 20:27:16 +01:00
obscuren
0fd6a22a86 Merge branch 'hotfix/0.8.5-2' 2015-02-26 20:26:49 +01:00
obscuren
3ab05ddd25 Bump 2015-02-26 20:26:37 +01:00
obscuren
76f6d75ef8 Merge branch 'master' into hotfix/0.8.5-2 2015-02-26 20:21:41 +01:00
obscuren
fa7deb10f6 Merge branch 'develop' 2015-02-26 20:21:16 +01:00
obscuren
e235b57234 Fixed consensus issue for refunding
* Refund should _always_ go to the origin
2015-02-26 20:08:35 +01:00
obscuren
c18ea4de14 Merge branch 'blockpool2' of https://github.com/ethersphere/go-ethereum into ethersphere-blockpool2 2015-02-26 18:39:38 +01:00
obscuren
37e6870f64 wip 2015-02-26 18:39:05 +01:00
CJentzsch
a622eccecb more mem tests - calldatacopy and return 2015-02-26 17:33:34 +01:00
CJentzsch
a3b3d19d80 adjust test for new mem rule 2015-02-26 14:22:16 +01:00
CJentzsch
d09cbfcf84 update to new quadratic memory cost rule 2015-02-26 13:52:05 +01:00
CJentzsch
88913ec89b Merge remote-tracking branch 'origin' into develop 2015-02-26 12:38:57 +01:00
CJentzsch
8058f2fdf0 low limit for difficulty is 1024 2015-02-26 12:38:32 +01:00
Christoph Jentzsch
48276be277 Merge pull request #68 from winsvega/develop
Transaction WrongRLP tests
2015-02-26 12:26:59 +01:00
winsvega
1e07358ac2 Transaction WrongRLP tests
more rlps with first zeros
2015-02-26 14:25:13 +03:00
obscuren
a1c830cd3c Defautl block 2015-02-26 12:06:10 +01:00
obscuren
49ded3aa77 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop
Conflicts:
	accounts/account_manager.go
2015-02-26 12:06:01 +01:00
obscuren
5ab0eaa06d wip 2015-02-26 11:14:54 +01:00
Jeffrey Wilcke
9884eed0cf Merge pull request #392 from tgerring/rpcdefaultblock
Stub defaultBlock RPC methods
2015-02-26 11:14:33 +01:00
Jeffrey Wilcke
5b202a158a Merge pull request #391 from tgerring/osext
Cleanup DefaultAssetPath
2015-02-26 10:59:07 +01:00
CJentzsch
a0cfe0d123 tests for mem at 32,64 KB +- 1, 31,32,33 for mstore and mstore8 2015-02-26 08:46:13 +01:00
Taylor Gerring
57cea0c623 Update godeps 2015-02-26 02:48:55 +01:00
Taylor Gerring
739b7cc2ac Cleanup imports 2015-02-26 02:36:06 +01:00
Taylor Gerring
d5aed82b11 DRY DefaultAssetPath() 2015-02-26 02:32:27 +01:00
Taylor Gerring
8eeab7ea3f Update osext import path 2015-02-26 02:24:20 +01:00
Jeffrey Wilcke
46ce66a829 Merge pull request #385 from Gustav-Simonsson/account_manager_key_locking
Add automatic locking / unlocking of accounts
2015-02-25 23:58:30 +01:00
Jeffrey Wilcke
b155b9d80b Merge pull request #388 from Gustav-Simonsson/validate_block_header_gas_limit
Validate block header gas limit
2015-02-25 23:58:01 +01:00
Gustav Simonsson
260ab73969 Validate block header gas limit
* Add block header gas limit validation in ValidateBlock function,
  see eq 39 and 45 in yellow paper. Before it was calculated _for_
  the block instead of validated.
* Use the block header gas limit when setting the gas pool instead
  of calculating the value for the block.
2015-02-25 20:00:32 +01:00
Gustav Simonsson
23f2658091 Remove unneeded initialisation of mutex 2015-02-25 19:30:57 +01:00
Gustav Simonsson
d1311c53ee Address pull request comments
* Use RWMutex instead of Mutex
* Use time.Duration instead of int for unlock time
* Use time.After with select instead of time.Sleep
2015-02-25 18:40:59 +01:00
Christoph Jentzsch
a431c4a665 Merge pull request #67 from winsvega/develop
Transaction RLP Tests
2015-02-25 18:26:21 +01:00
Gustav Simonsson
b296b36d2b Add automatic locking / unlocking of accounts
* Change account signing API to two sign functions;
  Sign without passphrase - works if account is unlocked
  Sign with passphrase - always works and unlocks the account
* Account stays unlocked for X ms and is then automatically locked
2015-02-25 17:37:12 +01:00
winsvega
667cafc13e Transaction RLP Tests
wrong transaction RLPs correction
2015-02-25 19:28:22 +03:00
Christoph Jentzsch
9f3cee021e Merge pull request #66 from winsvega/develop
Block Tests
2015-02-25 15:44:19 +01:00
winsvega
6016b942d6 Block Tests
Encoded transaction comment
2015-02-25 17:37:25 +03:00
winsvega
afb72dc795 Block Tests
Block Rlps with invalid transactions
2015-02-25 16:53:57 +03:00
zelig
16ecda951b integrate blockpool into eth
- remove blockpool code
- remove blockpool integration test (kinda embarrassing)
- remove errors.go
2015-02-25 20:38:37 +07:00
zelig
cdc86965cb export Sendln/Sendf in logger 2015-02-25 20:04:51 +07:00
zelig
422490d75c major rewrite, reorg of blockpool + new features
- blockpool moves to its own package
- uses errs pkg for its own coded errors
- publicly settable config of params (time intervals and batchsizes)
- test helpers in subpackage
- optional TD in blocks used now to update peers chain info
- major improvement in algorithm
- fix fragility and sync/parallelisation bugs
- implement status for reporting on sync status (peers/hashes/blocks etc)
- several tests added and further corner cases covered
2015-02-25 19:34:12 +07:00
zelig
d46c7bcaf9 errs pkg for error code based errors 2015-02-25 19:21:59 +07:00
CJentzsch
cfb120d179 more Pawel tests 2015-02-25 13:08:47 +01:00
Taylor Gerring
fe73023940 Merge pull request #382 from ethereum/travis
Update Go and Qt versions in Travis
2015-02-25 13:00:35 +01:00
CJentzsch
86b14058fd add memory tests 2015-02-25 12:50:24 +01:00
Taylor Gerring
ce2b2422d6 Update Go and Qt versions 2015-02-25 11:40:52 +01:00
Taylor Gerring
9e0ab22dd0 Stub defaultBlock methods 2015-02-25 09:57:49 +01:00
CJentzsch
978a29ab72 use 50000 bytes for CALLDATACOPY 2015-02-24 23:05:39 +01:00
CJentzsch
36e862c989 add Pawels tests 2015-02-24 22:48:19 +01:00
CJentzsch
33c8c2bd7e add quadratic complexity tests 2015-02-24 22:46:56 +01:00
Jeffrey Wilcke
52ccaa605e Merge pull request #379 from tgerring/rpcupdates
RPC cleanup
2015-02-24 22:00:39 +01:00
Jeffrey Wilcke
ed90efb05b Merge pull request #378 from Gustav-Simonsson/fix_account_manager_tests
Fix key store address hex decoding and accounts test
2015-02-24 21:58:42 +01:00
Taylor Gerring
2e3a6e2559 Consolidate related items 2015-02-24 19:54:18 +01:00
Taylor Gerring
c8e9abff53 Remove errParseRequest 2015-02-24 19:22:08 +01:00
Taylor Gerring
43acad81b3 Rename files 2015-02-24 19:11:01 +01:00
Taylor Gerring
21becb0feb Cleanup RPC packcage 2015-02-24 19:05:03 +01:00
Gustav Simonsson
923950ccaa Fix key store address hex decoding and accounts test
Thanks to https://github.com/jaekwon for original fix!
2015-02-24 18:05:10 +01:00
Taylor Gerring
5a43173e55 Merge pull request #373 from tgerring/issue370
Convert gas values to integers
2015-02-24 17:49:14 +01:00
Taylor Gerring
1e919a5e97 Move amounts to global vars 2015-02-24 17:32:11 +01:00
Jeffrey Wilcke
91a8c08f03 Merge pull request #368 from maran/feature/changeDataDir
Implement OS sensitive dataDirs
2015-02-24 17:30:44 +01:00
Jeffrey Wilcke
0b757ad12f Merge pull request #369 from tgerring/issue367
Allow zero and negative block numbers
2015-02-24 17:29:08 +01:00
Jeffrey Wilcke
0adff214c3 Merge pull request #376 from frozeman/topicsFix
topics fix
2015-02-24 17:27:14 +01:00
Taylor Gerring
2a7ca69a82 Fix duplicate leading 0x 2015-02-24 16:46:43 +01:00
Fabian Vogelsteller
3fcdafebc2 topics fix 2015-02-24 16:18:27 +01:00
Paweł Bylica
85f765a533 Merge remote-tracking branch 'upstream/develop' into evmjit 2015-02-24 11:27:22 +01:00
CJentzsch
e8c84bdf56 Merge remote-tracking branch 'origin/develop' into develop 2015-02-24 10:15:10 +01:00
CJentzsch
e48576ada3 remove impossible tests, add create hash collision test 2015-02-24 10:14:36 +01:00
Taylor Gerring
4142708d9d Convert gas values to integers
Fixes #370
2015-02-24 08:51:58 +01:00
wanderer
6e2d856d85 spelling error 2015-02-24 01:52:33 -05:00
wanderer
9315ad3d2c spelling error 2015-02-24 01:46:06 -05:00
wanderer
13b4ab10ae added genesis info 2015-02-24 01:36:54 -05:00
martin becze
c72e2588f3 Update crypto.json 2015-02-23 18:40:06 -05:00
obscuren
7c510109cd skipping test 2015-02-23 20:27:00 +01:00
obscuren
359677b673 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-23 19:25:59 +01:00
obscuren
747647e02a Merge branch 'master' into develop 2015-02-23 19:25:50 +01:00
obscuren
0b57bad2de removed log 2015-02-23 19:25:41 +01:00
Paweł Bylica
114c3b4efe Merge remote-tracking branch 'upstream/develop' into evmjit 2015-02-23 18:39:05 +01:00
Christoph Jentzsch
e4f44139a1 Merge pull request #65 from romanman/develop
Introduce cryptography testing
2015-02-23 16:25:06 +01:00
romanman
f23aeb44e2 Introduce cryptography testing
+ First test case will check the interoperability
   for all clients to decrypt the cipher with AES in
   CTR mode.
2015-02-23 17:14:00 +02:00
obscuren
b2a225a52e Properly uninstall filters. Mining issue fixed #closes #365
* Added an additional tx state which is used to get the current nonce
* Refresh transient state each time a new canonical block is found
* Properly uninstall filters. Fixes a possible crash in RPC
2015-02-23 15:43:41 +01:00
Alexandre Van de Sande
dea6584018 Merge branch 'develop' into ui 2015-02-23 09:05:15 -03:00
Alexandre Van de Sande
bb3338df63 changes to sidebar sizes 2015-02-23 08:52:50 -03:00
Taylor Gerring
6fd894aae0 Allow zero and negative block numbers
0 is genesis block. Xeth recognises -1 as current
2015-02-23 11:54:23 +01:00
CJentzsch
cb52754e6c Merge remote-tracking branch 'origin/develop' into develop 2015-02-23 11:31:29 +01:00
Maran
40adb7feb6 Implement OS sensitive dataDirs 2015-02-23 11:28:20 +01:00
CJentzsch
48606e05c1 fix transaction tests 2015-02-23 11:28:06 +01:00
Christoph Jentzsch
8b79ae6695 Update trieanyorder.json
In correct anyorder trie tests, where all permuations should have the same root, one can not have 2 keys with the same value.
2015-02-23 09:51:44 +01:00
martin becze
94f1ca2e09 Format clean up 2015-02-22 14:10:28 -05:00
Jeffrey Wilcke
dd086791ac Merge pull request #360 from Gustav-Simonsson/add_stack_size_checks
Correct stack size validation for MUL, CALLDATACOPY, EXTCODESIZE, BLOCKH...
2015-02-22 13:28:50 +01:00
obscuren
20aa6dde06 Merge branch 'develop' 2015-02-22 13:28:24 +01:00
obscuren
eec4345a7c Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-22 13:27:57 +01:00
Jeffrey Wilcke
59a86d3171 Merge pull request #359 from fjl/p2p-identity
Persistent Node Key
2015-02-22 13:27:53 +01:00
obscuren
98202e626c Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-22 13:27:13 +01:00
obscuren
1be7e5048c Merge branch 'release/0.8.5' into develop 2015-02-22 13:27:03 +01:00
obscuren
8cc6647ebf Merge branch 'release/0.8.5' 2015-02-22 13:26:18 +01:00
obscuren
321dce1f47 Bump 2015-02-22 13:26:10 +01:00
obscuren
bba85a2074 Added Number to logs 2015-02-22 13:24:26 +01:00
obscuren
483d96a89d Added eth_logs & fixed issue with manual log filtering
* Implemented `eth_logs`
* Fixed issue with `filter.Find()` where logs were appended to an
  incorrect, non-returned slice resulting in no logs found
2015-02-22 13:12:01 +01:00
martin becze
168ab2b065 consistent values please 2015-02-21 17:33:44 -05:00
wanderer
b131b37451 added unpaded R value test 2015-02-21 14:43:06 -05:00
Taylor Gerring
8620dc05de Merge pull request #364 from ethereum/travis
Don't print per-function testing results
2015-02-21 13:59:34 +01:00
Taylor Gerring
d8f7cb2f55 Don't print per-function testing results 2015-02-21 13:48:09 +01:00
Gustav Simonsson
fd3793b8cf Correct stack size validation for MUL, CALLDATACOPY, EXTCODESIZE, BLOCKHASH 2015-02-21 05:34:02 +01:00
obscuren
bba7ccb07f Merge branch 'hotfix/0.8.4-1' into develop 2015-02-21 00:53:47 +01:00
obscuren
5912f0a849 Merge branch 'hotfix/0.8.4-1' 2015-02-21 00:53:39 +01:00
obscuren
cb7cd03919 unlock mutex 2015-02-21 00:53:27 +01:00
obscuren
bc541b918c Merge branch 'release/0.8.4' into develop 2015-02-21 00:43:31 +01:00
obscuren
3c14902649 Merge branch 'release/0.8.4' 2015-02-21 00:43:04 +01:00
obscuren
92337baa5a reverted back to proper version number 2015-02-21 00:42:57 +01:00
Taylor Gerring
f9663b8f4f Fix test for Finney 2015-02-20 20:57:45 +01:00
Taylor Gerring
113cf4208b Update build status links to https 2015-02-20 20:52:03 +01:00
CJentzsch
18216a6e33 undo gasMemCostChange, add some state tests 2015-02-20 20:50:32 +01:00
obscuren
703dc8299c Merge branch 'release/0.9.0' into develop 2015-02-20 18:14:53 +01:00
obscuren
bd7ebbcd5b Merge branch 'release/0.9.0' 2015-02-20 18:13:46 +01:00
obscuren
d586a633ff Updated readme 2015-02-20 18:13:39 +01:00
obscuren
9feb657763 Turbo off 2015-02-20 18:06:45 +01:00
obscuren
cc43ab9a81 Minor updates for release 2015-02-20 18:05:46 +01:00
obscuren
66d5559866 Fixed chain event issue 2015-02-20 16:59:08 +01:00
Felix Lange
e968928613 eth: persist node key between sessions (#304) 2015-02-20 15:26:50 +01:00
Felix Lange
e282ad25a8 eth: add poc-8.ethdev.com as second default bootstrap node 2015-02-20 15:24:43 +01:00
obscuren
82cae27737 Merge branch 'tgerring-rpcupdates' into develop 2015-02-20 15:18:32 +01:00
obscuren
75625801f5 fixed merge 2015-02-20 15:18:07 +01:00
CJentzsch
b392afac3c memGasCost checks 2015-02-20 15:05:11 +01:00
Gav Wood
672f6c44b8 Remove initial allocs - it tests nothing additional and is difficult to maintain, especially with genesis contracts. See https://github.com/ethereum/tests/blob/develop/BasicTests/genesishashestest.json for that information. 2015-02-20 14:46:35 +01:00
obscuren
ea9a549bbd Removed exported fields from state object and added proper set/getters 2015-02-20 14:19:34 +01:00
obscuren
5c975dd4ed Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-20 14:01:34 +01:00
obscuren
d8ac267f41 dirty tracking for state objects fixed 2015-02-20 14:01:30 +01:00
Jeffrey Wilcke
63031f571a Merge pull request #355 from fjl/test-fixes
Fix failing tests and speed up Travis builds
2015-02-20 13:00:10 +01:00
obscuren
982f73fa6d Added timeout for filter & removed clipboard. Closes #350 2015-02-20 12:59:54 +01:00
Felix Lange
3b12a9293c .travis.yml: don't run gofmt, goimports, golint
This should yield another 30-second speed up. Nobody looks
at the output of those anyway. We might want bring back gofmt later
and actually fail the build if source is not formatted.
2015-02-20 12:21:05 +01:00
Felix Lange
654f7f707c .travis.yml: speed up tests on Travis
This should decrease test runtime to about 30 seconds.
2015-02-20 12:18:29 +01:00
Felix Lange
66abe2e3d4 gocoverage.sh: skip .
This is an attempt to get Travis working again.
2015-02-20 11:55:26 +01:00
Felix Lange
b3b6210886 tests/vm: add non-test Go file
This removes the annoying warning printed by "go install ./...".
2015-02-20 11:40:58 +01:00
Felix Lange
01ce066d43 state: improve TestDump 2015-02-20 11:40:58 +01:00
Felix Lange
4ab7a290cd accounts: use crypto/randentropy in test 2015-02-20 11:40:58 +01:00
Felix Lange
81dea2d8e7 update-license.go: add blank line after build tag
This silences "go install ./...". For some reason it started
complaining with go 1.4.2.
2015-02-20 11:40:20 +01:00
obscuren
0006585391 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-19 22:46:15 +01:00
Jeffrey Wilcke
639ac5c3da Merge pull request #352 from fjl/no-enc-handshake
p2p: disable encryption handshake, enable log events
2015-02-19 22:46:07 +01:00
Jeffrey Wilcke
765740b829 Merge pull request #345 from maran/feature/minerthreads
Implement command line argument to set the amount miner threads
2015-02-19 22:37:13 +01:00
Jeffrey Wilcke
07c34751da Merge pull request #335 from alexvandesande/ui
Cut, Copy, Undo and Redo working in webview
2015-02-19 22:36:35 +01:00
obscuren
fa4cbad315 Optimisations and fixed a couple of DDOS issues in the miner 2015-02-19 22:33:22 +01:00
Taylor Gerring
a59cd94625 Add setMining RPC method 2015-02-19 18:58:15 +01:00
Taylor Gerring
605dd3a982 Add serpent compilation to RPC 2015-02-19 18:41:50 +01:00
Felix Lange
3719db352a p2p: emit JSON connect/disconnect events 2015-02-19 17:09:33 +01:00
Felix Lange
fa15854a54 logger: add P2P disconnected event 2015-02-19 17:09:13 +01:00
Felix Lange
dd871e791c p2p: initialize Server.ourHandshake before accepting connections 2015-02-19 17:08:18 +01:00
Felix Lange
3dbd32093c p2p: enable devp2p ping
This should prevent connection drops.
2015-02-19 16:54:54 +01:00
Felix Lange
1ec6190e86 cmd/mist: show peer names in peers window 2015-02-19 16:54:53 +01:00
Felix Lange
73f94f3755 p2p: disable encryption handshake
The diff is a bit bigger than expected because the protocol handshake
logic has moved out of Peer. This is necessary because the protocol
handshake will have custom framing in the final protocol.
2015-02-19 16:54:53 +01:00
obscuren
c14071df9d Reset storage cache after sync 2015-02-19 13:34:27 +01:00
Taylor Gerring
dba4f3122e Added uninstall filter methods 2015-02-19 13:21:37 +01:00
Taylor Gerring
4322632c59 Merge pull request #339 from tgerring/jsonlog
JSON log updates
2015-02-19 12:25:45 +01:00
obscuren
0057bb4ef6 WIP QT Clipboard 2015-02-19 11:51:38 +01:00
obscuren
03b8c6841b Topics => Topic. Closes #343 2015-02-19 11:49:58 +01:00
obscuren
fdecc11128 Temp fix for #342 2015-02-19 11:09:46 +01:00
Maran
5aff8bfb59 Implement command line argument to set the amount of agents created by the miner
Defaults to the amount of cores available on the CPU
2015-02-19 10:38:36 +01:00
obscuren
487c5cc294 Added WIP number package 2015-02-18 17:18:07 +01:00
obscuren
ee9df32dba Added errors 2015-02-18 16:08:51 +01:00
obscuren
655e942597 Added GetBlock GetUncle with OOB guard 2015-02-18 13:14:21 +01:00
obscuren
be90ad89a8 Disable turbo 2015-02-18 12:01:20 +01:00
obscuren
05b1ec008b Disabled ability to disable whisper. Closes #334 2015-02-18 11:42:01 +01:00
Taylor Gerring
07bdba687f Re-add LogFormat to Config 2015-02-18 10:52:36 +01:00
Taylor Gerring
f499f343ba Update JSON Log types 2015-02-18 10:52:23 +01:00
Alexandre Van de Sande
acd93c2971 Removed console logs from mist.js
also fixed an issue where it would force reloads unnecessarily
2015-02-18 10:25:40 +01:00
Ethan Buchman
9446489cf3 core: chain manager forking tests 2015-02-17 22:02:15 -05:00
Ethan Buchman
2ba65f4fba Merge branch 'develop' of https://github.com/ethereum/go-ethereum into develop 2015-02-17 19:25:18 -05:00
obscuren
60318c96d0 removed old wallet 2015-02-17 23:22:42 +01:00
Jeffrey Wilcke
c1d0693cb1 Merge pull request #325 from fjl/deps-cleanup
Cleanup imports
2015-02-17 23:19:45 +01:00
obscuren
5ec8c5f71b added bootnode back in 2015-02-17 23:14:10 +01:00
obscuren
c1474e1877 Removed mined transactions from pending view. Closes #321 2015-02-17 23:10:37 +01:00
obscuren
26d58e0446 Forgot to add the case for logs. Closes #336 2015-02-17 22:46:30 +01:00
obscuren
7fc9b5b3f9 Changed to ChainEvent and fixed a nil pointer in transact 2015-02-17 22:20:47 +01:00
Alexandre Van de Sande
0e2f6691bf Cut, Copy, Undo and Redo working in webview 2015-02-17 17:37:26 +01:00
obscuren
11e12680eb Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-17 16:55:20 +01:00
obscuren
13c00afc68 Implement register and watchTx 2015-02-17 16:54:52 +01:00
Jeffrey Wilcke
5022b618aa Merge pull request #327 from fjl/udp-out-of-range
p2p/discover: fix pending replies iteration
2015-02-17 16:22:41 +01:00
obscuren
5238b9439e Merge branch 'alexvandesande-ui' into develop 2015-02-17 16:18:40 +01:00
obscuren
9a2be227a6 commented peer count out 2015-02-17 16:18:29 +01:00
obscuren
fe94622ea3 Merge branch 'ui' of https://github.com/alexvandesande/go-ethereum into develop 2015-02-17 16:13:06 +01:00
obscuren
567428fb34 Filter and mutex locks added 2015-02-17 16:12:55 +01:00
obscuren
815ead7107 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-17 16:09:25 +01:00
Felix Lange
7ea131d4ff p2p/discover: fix pending replies iteration
Range expressions capture the length of the slice once before the first
iteration. A range expression cannot be used here since the loop
modifies the slice variable (including length changes).
2015-02-17 15:21:39 +01:00
obscuren
547788b1b0 Added optional address slice. Closes #326 2015-02-17 14:19:05 +01:00
Taylor Gerring
417f018498 Updated P2PConnected log fields 2015-02-17 13:30:25 +01:00
obscuren
2c454863f2 Use new rlp (TODO requires some refactoring) 2015-02-17 13:26:21 +01:00
Felix Lange
f965f41b6e p2p/nat: switch to github.com/huin/goupnp
My temporary fix was merged upstream.
2015-02-17 13:10:11 +01:00
Felix Lange
119bea22aa crypto: switch to golang.org/x/crypto
code.google.com/p/go.crypto is deprecated and will cause
problems in future versions of Go.
2015-02-17 13:05:58 +01:00
Felix Lange
bb346a3ae1 rpc/ws: switch to golang.org/x/net
code.google.com/p/go.net is deprecated and will cause
problems in future versions of Go.
2015-02-17 12:37:09 +01:00
Alexandre Van de Sande
abb9b7f46f Merge branch 'develop' into ui 2015-02-17 12:29:10 +01:00
obscuren
c934222a80 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-17 12:25:25 +01:00
obscuren
8135752a32 "centralised" mining to backend. Closes #323 2015-02-17 12:24:58 +01:00
Felix Lange
34d0e1b2c3 p2p: fix ecies dependency in tests
We forgot to update this reference when moving ecies into the
go-ethereum repo.
2015-02-17 12:04:20 +01:00
Alexandre Van de Sande
fbd5e4d5af Updated icons 2015-02-17 11:52:22 +01:00
Alexandre Van de Sande
0de1d1dd58 removed status bar code 2015-02-17 11:23:28 +01:00
Alexandre Van de Sande
a22711a7b5 badge support 2015-02-17 11:22:52 +01:00
Alexandre Van de Sande
c4b8c11529 side icons 2015-02-17 00:52:40 +01:00
Alexandre Van de Sande
666ef48239 SideIcons work. Copy paste still doesn't. 2015-02-16 20:55:14 +01:00
CJentzsch
7ec1b7e90a Merge remote-tracking branch 'origin/develop' into develop 2015-02-16 20:20:50 +01:00
CJentzsch
a8c4de17da python fail 2015-02-16 20:20:15 +01:00
Taylor Gerring
643eda5c2d Update obscuren/qml revision 2015-02-16 19:43:27 +01:00
winsvega
4b81a98e4a Merge pull request #60 from winsvega/develop
ttWrongRLPTransaction
2015-02-16 20:11:33 +03:00
winsvega
beff83ecd2 Merge branch 'develop' of https://github.com/ethereum/tests into develop 2015-02-16 20:09:49 +03:00
winsvega
5797752572 new transaction wrong rlp test 2015-02-16 20:08:44 +03:00
Taylor Gerring
cb34502728 Add godep usage information 2015-02-16 17:59:54 +01:00
Taylor Gerring
9796feccb7 Add Docker Hub link to automated builds 2015-02-16 17:51:33 +01:00
Taylor Gerring
c0ce323092 Use explicit branch and godep 2015-02-16 17:00:57 +01:00
Paweł Bylica
b9894c1d09 Update JIT interface to ABI 0.2: code hash added to input data, gas counter passed as int64 2015-02-16 16:27:11 +01:00
CJentzsch
5718f96934 cppjit fails 2015-02-16 15:56:10 +01:00
CJentzsch
ea509a6d72 more performance tests 2015-02-16 15:47:52 +01:00
Alexandre Van de Sande
3068e2688d merge conflicts 2015-02-16 14:43:30 +01:00
Taylor Gerring
68f6ddc5aa Update Travis to use godep 2015-02-16 14:34:50 +01:00
Alexandre Van de Sande
1878630b59 Solved Issue #318 and added states to back button 2015-02-16 14:34:47 +01:00
Taylor Gerring
702218008e Add versioned dependencies from godep 2015-02-16 14:28:33 +01:00
Taylor Gerring
202362d925 Merge branch 'develop' of github.com:ethereum/go-ethereum into develop 2015-02-16 14:20:54 +01:00
Taylor Gerring
393267489c Use Go binary instead of building from source 2015-02-16 13:40:51 +01:00
Taylor Gerring
a92bcbb795 Use latest Trusty version 2015-02-16 13:37:29 +01:00
obscuren
164de5e22b Changed default denominators 2015-02-16 13:20:16 +01:00
obscuren
8f69b5c7a2 Added invalid sec key test 2015-02-16 13:19:57 +01:00
CJentzsch
dda2eb84f7 add creation txs in block tests 2015-02-16 13:02:57 +01:00
CJentzsch
957f334012 more transaction tests 2015-02-16 13:00:21 +01:00
CJentzsch
94af56789a first block tests 2015-02-16 12:59:44 +01:00
Taylor Gerring
d68e607aa5 Group Qt dependencies together 2015-02-16 12:12:14 +01:00
obscuren
d2a4bc4d73 Removed reference to lastBlockNumber & LastBlockNumber 2015-02-16 12:03:27 +01:00
Taylor Gerring
f63c4a9bcb Ignore locally built binaries 2015-02-16 11:42:33 +01:00
Alexandre Van de Sande
05f2808849 Add http when not present on browser 2015-02-16 11:17:31 +01:00
obscuren
2c3a014f03 Resolved some bugs in the miner
* TODO nonce error sometimes persists
* Fixed mining on wrong blocks
* Fixed state error & receipt fail
2015-02-15 16:16:27 +01:00
obscuren
c924a841c7 Merge branch 'develop' into bounty 2015-02-15 02:29:52 +01:00
obscuren
7299eb72e0 HTTP RPC only listen on localhost 2015-02-15 02:26:30 +01:00
obscuren
238f39a42e Validate seckey when generating pub key 2015-02-15 02:20:31 +01:00
obscuren
09e53367a2 Use a mutex write-lock for a write operation 2015-02-15 02:13:24 +01:00
obscuren
b143dad596 Reference pointer to block instead of pointer to function 2015-02-15 02:09:57 +01:00
obscuren
16ae675107 Unmarshal in to pointer to string 2015-02-15 02:08:08 +01:00
obscuren
12fc590b34 removed some old menu items 2015-02-15 01:58:15 +01:00
obscuren
c29b01ce75 Reset URL bar 2015-02-14 17:18:28 +01:00
obscuren
befb4bc1c1 Fixed a few errors in the browser special meta tags objects 2015-02-14 17:13:21 +01:00
obscuren
32c7ebc51d Fixed mining & limited hash power 2015-02-14 16:52:14 +01:00
obscuren
65159d65c8 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-14 00:27:46 +01:00
Jeffrey Wilcke
3ff6c9bb79 Merge pull request #309 from fjl/peer-window
Fix Mist Peers Window
2015-02-14 00:27:40 +01:00
obscuren
84f7c966f7 Moved ECIES to repo & added secondary title for webview
* ECIES moved from obscuren to ethereum
* Added html META[name=badge] to reflect menuItem.secondaryTitle
2015-02-14 00:25:47 +01:00
Felix Lange
8464e43eaf cmd/mist: fix peer window 2015-02-14 00:12:37 +01:00
Felix Lange
4bef3ce284 p2p: print Cap as name/version 2015-02-13 23:54:34 +01:00
obscuren
396f1a0a33 Add 'crypto/ecies/' from commit '7c0f4a9b18d992166452d8cd32caaefd92b26386'
git-subtree-dir: crypto/ecies
git-subtree-mainline: 49a739c8d6
git-subtree-split: 7c0f4a9b18
2015-02-13 23:45:38 +01:00
Jeffrey Wilcke
7c0f4a9b18 Merge pull request #3 from Gustav-Simonsson/fix_ecies_params_init_bug
Fix ECIES params nil bug
2015-02-13 23:42:33 +01:00
obscuren
49a739c8d6 Merge branch 'Gustav-Simonsson-align_key_and_ecdsa_nonce_entropy' into develop 2015-02-13 23:35:21 +01:00
obscuren
12b2d57629 Merge branch 'align_key_and_ecdsa_nonce_entropy' of https://github.com/Gustav-Simonsson/go-ethereum into Gustav-Simonsson-align_key_and_ecdsa_nonce_entropy 2015-02-13 23:31:20 +01:00
obscuren
95cfaa1b37 disabled test 2015-02-13 23:26:41 +01:00
Jeffrey Wilcke
acc7c0f706 Merge pull request #308 from fjl/default-bootnodes
eth: add default bootnode
2015-02-13 21:51:51 +01:00
Felix Lange
1c1a3033be eth: add default bootnode 2015-02-13 21:41:13 +01:00
obscuren
384305f4aa Fixed QML errors 2015-02-13 18:33:08 +01:00
Alexandre Van de Sande
7aef0fed29 changed url bar behaviour. Failed attempt at icon 2015-02-13 18:32:15 +01:00
obscuren
4d49d7b5a6 Reset hash rate to 0 when mining is stopped 2015-02-13 18:30:06 +01:00
Gustav Simonsson
f35d62b759 Remove secp256_rand.go and update tests 2015-02-13 18:25:25 +01:00
obscuren
6a7b0ef904 Updated coin.js abi 2015-02-13 18:17:17 +01:00
obscuren
ce239333d5 Update balance label when mining 2015-02-13 18:15:23 +01:00
obscuren
0f3c25b265 Propagate blocks 2015-02-13 18:03:16 +01:00
obscuren
790de35e7f Fixed issue in peer window
* Fixed issues where new peer window could cause a crash when entering
  an empty string
2015-02-13 17:57:46 +01:00
obscuren
218f437b0c Updated window 2015-02-13 17:30:37 +01:00
obscuren
7336dfad02 Merge branch 'develop' into poc8 2015-02-13 17:23:48 +01:00
obscuren
00fca40939 Merge branch 'miner' into develop 2015-02-13 17:23:18 +01:00
obscuren
8a0f23915e Fixed a few issues in the miner and updated hash rate title
* Sometimes old nonces were set by "old" agents
* Added the hash rate to the miner
2015-02-13 17:23:09 +01:00
obscuren
8305d409d2 Merge branch 'develop' into miner 2015-02-13 17:00:15 +01:00
obscuren
5c251b6928 Merge branch 'fjl-poc8-net-integration' into develop 2015-02-13 16:08:30 +01:00
obscuren
bde3ff16ad merge 2015-02-13 16:02:37 +01:00
Gustav Simonsson
39434e383b Unexport randEntropy type and use exported Reader instead 2015-02-13 15:38:26 +01:00
obscuren
76fa75b394 wip 2015-02-13 15:35:54 +01:00
Felix Lange
32a9c0ca80 p2p: bump devp2p protcol version to 3
For compatibility with cpp-ethereum
2015-02-13 15:08:40 +01:00
Felix Lange
fd3e1061e0 p2p: handle disconnect before protocol handshake 2015-02-13 15:06:47 +01:00
Felix Lange
cf754b9483 p2p/discover: fix race in ListenUDP
udp.Table was assigned after the readLoop started, so
packets could arrive and be processed before the Table was there.
2015-02-13 15:06:47 +01:00
Felix Lange
5cc1256fd6 p2p: ensure we don't dial ourself
addPeer doesn't allow self connects, but we can avoid opening
connections in the first place.
2015-02-13 15:06:47 +01:00
Felix Lange
7101f44998 p2p: add I/O timeout for encrytion handshake 2015-02-13 15:06:47 +01:00
Felix Lange
22ee366ed6 p2p: fix goroutine leak for invalid peers
The deflect logic called Disconnect on the peer, but the peer never ran
and wouldn't process the disconnect request.
2015-02-13 15:06:46 +01:00
obscuren
75d164037f Merge branch 'logjson' into develop 2015-02-13 15:06:32 +01:00
obscuren
a5ea21cd85 merge 2015-02-13 15:05:56 +01:00
Felix Lange
5110f80bba p2p: improve read deadlines
There are now two deadlines, frameReadTimeout and payloadReadTimeout.

The frame timeout is longer and allows for connections that are idle.
The message timeout is still short and ensures that we don't get stuck
in the middle of a message.
2015-02-13 14:44:00 +01:00
Christoph Jentzsch
4ee0f90b46 Merge pull request #59 from winsvega/develop
new solidity tests, manual altered transaction tests
2015-02-13 12:47:02 +01:00
winsvega
ddc830be5c new tests
solidity test
wrong transaction rlp (manual)
2015-02-13 14:20:47 +03:00
Felix Lange
170eb3ac68 p2p/discover: map listening port using configured mechanism 2015-02-13 11:39:32 +01:00
Felix Lange
82f0bd9009 p2p/discover: code review fixes 2015-02-13 11:39:31 +01:00
Felix Lange
d0a2e655c9 cmd/ethereum, cmd/mist, eth, p2p: use package p2p/nat
This deletes the old NAT implementation.
2015-02-13 11:39:31 +01:00
Felix Lange
1543833ca0 p2p/nat: new package for port mapping stuff
I have verified that UPnP and NAT-PMP work against an older version of
the MiniUPnP daemon running on pfSense. This code is kind of hard to
test automatically.
2015-02-13 11:39:31 +01:00
CJentzsch
4e3377333f Merge remote-tracking branch 'origin/develop' into develop 2015-02-13 09:10:27 +01:00
CJentzsch
a681d1ec02 performance test 2015-02-13 09:09:11 +01:00
obscuren
38faf2c51a removed messages 2015-02-12 17:06:15 +01:00
obscuren
31fdc645ed cmd + t switches to new dapp window 2015-02-12 15:03:53 +01:00
wanderer
1000b02b18 bump 2015-02-12 00:56:22 -05:00
Gustav Simonsson
5136fc9ab7 Fix ECIES params nil bug
* Change ECIES params init function to static var as it does not have
  state; fixes TestMarshalencryption.
2015-02-12 02:35:35 +01:00
Jeffrey Wilcke
04c1a81509 Merge pull request #2 from Gustav-Simonsson/correct_ecies_shared_key_generation
Correct ECIES shared key length check
2015-02-12 00:10:00 +01:00
obscuren
b64ad7a2a6 Merge branch 'develop' into miner 2015-02-11 23:46:54 +01:00
obscuren
3f6baa45a7 Documented methods & removed old manifest 2015-02-11 23:46:45 +01:00
Gustav Simonsson
52a46e61f9 Correct ECIES shared key length check
* Ensure the ECIES shared key is padded with zero bytes if it's
  smaller than the requested key length.
* Split the ECIES shared key error into two;
  one for when the generated key is too big for the params
  and one for when it's nil (point of infinity returned by the
  curve scalar multiplication).
2015-02-11 20:28:42 +01:00
obscuren
558c67d392 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-11 20:22:19 +01:00
Jeffrey Wilcke
d73dff4d5b Merge pull request #303 from fjl/rlp-flat
rlp: add Flat
2015-02-11 20:22:04 +01:00
Felix Lange
b94f85de22 rlp: add Flat 2015-02-11 19:28:56 +01:00
obscuren
1fc3524e40 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-11 19:22:38 +01:00
Jeffrey Wilcke
ebc506dae8 Merge pull request #302 from alexvandesande/UI
Catalog Page Behaviour
2015-02-11 19:22:23 +01:00
Alexandre Van de Sande
6221b282d4 Catalog Page Behaviour 2015-02-11 19:16:35 +01:00
Taylor Gerring
db24fb792c Move standard fields to LogEvent 2015-02-11 18:49:00 +01:00
Taylor Gerring
d311b1b9b7 Merge pull request #301 from ethereum/travis
Updates to Travis config
2015-02-11 14:25:44 +01:00
Taylor Gerring
3c40eb9e5a Temporarily skip broken TestVerifyPoW 2015-02-11 13:47:03 +01:00
obscuren
df49c609a0 updated coin 2015-02-11 13:26:44 +01:00
Taylor Gerring
3d6fd601c5 Move event names within each object 2015-02-11 12:45:41 +01:00
Taylor Gerring
ef6c7bd726 Merge pull request #300 from tgerring/jsonrpc
Allow RPC ID to be string or null
2015-02-11 11:59:51 +01:00
Taylor Gerring
d613bf69bf #295 Allow RPC ID to be string 2015-02-11 11:56:29 +01:00
Taylor Gerring
cfddb7f3cd Merge branch 'develop' into jsonrpc
Conflicts:
	rpc/ws/server.go
2015-02-11 11:40:12 +01:00
Taylor Gerring
c6af5f0a27 No longer switch branches for go-qml dep 2015-02-11 11:30:36 +01:00
Taylor Gerring
e433525f51 Merge branch 'sveneh-origin_develop' into develop 2015-02-11 11:28:39 +01:00
Taylor Gerring
ab66a3d0d3 Merge branch 'origin_develop' of https://github.com/sveneh/go-ethereum into sveneh-origin_develop 2015-02-11 11:03:40 +01:00
CJentzsch
d0a2eca19b add more transaction tests 2015-02-11 09:00:25 +01:00
CJentzsch
ec8404c375 Merge remote-tracking branch 'origin/develop' into develop 2015-02-11 08:40:42 +01:00
CJentzsch
766ee65328 cppjit fails 2015-02-11 08:39:55 +01:00
martin becze
bf2abc3b68 Update ttTransactionTest.json 2015-02-10 21:04:04 -05:00
martin becze
5a89c6f803 Update ttTransactionTest.json
updated signature
2015-02-10 20:53:43 -05:00
martin becze
74e1320a0b Update ttTransactionTest.json
updated RLP
2015-02-10 20:36:27 -05:00
martin becze
eaec21f199 Update ttTransactionTest.json 2015-02-10 20:29:08 -05:00
Gustav Simonsson
8c056aebe1 Set both key generation and ECDSA nonce to use mixed entropy
* Move random entropy functions to new package randentropy
* Add function to get n bytes entropy where up to first 32
  bytes are mixed with OS entropy sources
2015-02-10 22:49:28 +01:00
wanderer
d1a31850ce added transaction tests to index.js 2015-02-10 14:38:48 -05:00
Taylor Gerring
d53e5646ec Use strongly-typed objects 2015-02-10 19:21:13 +01:00
Jeffrey Wilcke
5fe2916ee1 Merge pull request #298 from alexvandesande/UI
UI changes to Mist
2015-02-10 17:21:29 +01:00
Felix Lange
acc667fbef Merge pull request #296 from frewsxcv/patch-1
Fix broken link in README
2015-02-10 16:41:32 +01:00
Alexandre Van de Sande
80890cd9dd removed icomoon 2015-02-10 16:16:17 +01:00
Alexandre Van de Sande
6b5f4ed244 Recreated the changes on a new branch 2015-02-10 16:14:07 +01:00
Felix Lange
4242b05462 cmd/bootnode: new command (replaces cmd/peerserver) 2015-02-10 14:26:54 +01:00
Felix Lange
a21b30c901 eth: remove unused Ethereum sync fields 2015-02-10 13:30:07 +01:00
obscuren
ddccea75e8 Fixed "to" field 2015-02-10 13:20:06 +01:00
obscuren
da2fae0e43 Basic structure miner 2015-02-10 13:04:38 +01:00
Felix Lange
a3cd218719 cmd/mist, cmd/ethereum: add CLI arguments for node key 2015-02-10 12:30:09 +01:00
Felix Lange
0c7df37351 crypto: add key loading functions 2015-02-10 12:29:50 +01:00
CJentzsch
cf002a4611 undo changed due to memory gas cost rule 2015-02-10 11:22:50 +01:00
CJentzsch
be4f40741f cppjit fail 2015-02-10 10:43:36 +01:00
sveneh
70e2df3904 Dockerfile creation speed-up by not running go tests, added a workaround
so that docker's cache is invalidated whenever th git repo is updated.
2015-02-09 16:27:49 +01:00
Felix Lange
f1ebad2508 eth: don't warn if no BootNodes are specified 2015-02-09 16:17:07 +01:00
CJentzsch
348d3af0fc more memory cost tests 2015-02-09 11:20:14 +01:00
Felix Lange
9915d3c3be p2p/discover: deflake UDP tests 2015-02-09 11:02:32 +01:00
CJentzsch
907f229757 update memory rule 2015-02-09 10:29:47 +01:00
obscuren
58ba290a9f moved manager 2015-02-09 00:08:28 +01:00
obscuren
b22f0f2ef5 merged 2015-02-09 00:06:24 +01:00
CJentzsch
bcc5c51630 gas failure cppjit 2015-02-07 18:09:22 +01:00
obscuren
16a04e64f2 Updated coin 2015-02-07 17:04:19 +01:00
obscuren
c8147fb7b9 Compare regardless of length 2015-02-07 17:04:04 +01:00
obscuren
0fa6927171 Moved log message to detail output 2015-02-07 17:03:33 +01:00
obscuren
99ebb869bf Fixed iterator 2015-02-07 17:03:22 +01:00
obscuren
44eafb15e0 Renamed filter 2015-02-07 17:03:12 +01:00
CJentzsch
cb877734f0 cppjit fails 2015-02-07 09:56:24 +01:00
Corey Farwell
792cd0aa10 Fix broken link in README 2015-02-06 22:36:22 -05:00
Felix Lange
028775a086 cmd/ethereum, cmd/mist: add flag for discovery bootstrap nodes 2015-02-07 00:52:49 +01:00
Felix Lange
2cf4fed11b cmd/mist, eth, javascript, p2p: use Node URLs for peer suggestions 2015-02-07 00:46:56 +01:00
Felix Lange
e34d134102 p2p: fixes for actual connections
The unit test hooks were turned on 'in production'.
2015-02-07 00:43:52 +01:00
Felix Lange
8564eb9f7e p2p/discover: add node URL functions, distinguish TCP/UDP ports
The discovery RPC protocol does not yet distinguish TCP and UDP ports.
But it can't hurt to do so in our internal model.
2015-02-07 00:12:23 +01:00
CJentzsch
9f52408e70 sha3 performance test 2015-02-06 17:43:35 +01:00
CJentzsch
a3780032bf failing tests from random simulation as state tests and transaction tests 2015-02-06 15:38:55 +01:00
Taylor Gerring
e4bb419707 Add go check to prefetched test dependencies 2015-02-05 18:11:31 -06:00
Taylor Gerring
5e0b2b260c Updated go list command 2015-02-05 17:49:44 -06:00
Taylor Gerring
b58b6b9bac Use after_success build step 2015-02-05 17:23:22 -06:00
Taylor Gerring
f3ac378ca4 No long use v1 branch of qml repo 2015-02-05 17:13:51 -06:00
Felix Lange
56f777b2fc cmd/ethereum, cmd/mist, core, eth, javascript, xeth: fixes for new p2p API 2015-02-06 00:03:59 +01:00
obscuren
e40c1c62ce API changed to use Pubkey only. Reflected that change in the rest of the api 2015-02-05 15:00:59 -08:00
Felix Lange
8e8ec8f5f8 cmd/peerserver: is gone
Will be back soon. Maybe.
2015-02-06 00:00:36 +01:00
Felix Lange
5bdc115943 p2p: integrate p2p/discover
Overview of changes:

- ClientIdentity has been removed, use discover.NodeID
- Server now requires a private key to be set (instead of public key)
- Server performs the encryption handshake before launching Peer
- Dial logic takes peers from discover table
- Encryption handshake code has been cleaned up a bit
- baseProtocol is gone because we don't exchange peers anymore
- Some parts of baseProtocol have moved into Peer instead
2015-02-06 00:00:36 +01:00
Felix Lange
739066ec56 p2p/discover: add some helper functions 2015-02-06 00:00:36 +01:00
Felix Lange
12224c7f59 p2p/discover: new package implementing the Node Discovery Protocol 2015-02-06 00:00:36 +01:00
Felix Lange
8c3095faf0 rlp: fix encoding of arrays with byte element type 2015-02-06 00:00:36 +01:00
Felix Lange
410b35e913 crypto: make it easier to run Sha3 on multiple inputs
crypto.Sha3(append(foo, bar)) --> crypto.Sha3(foo, bar)
crypto.Sha3([]byte{}) --> crypto.Sha3()
2015-02-06 00:00:36 +01:00
zelig
2e48d39fc7 key generation abstracted out, for testing with deterministic keys 2015-02-06 00:00:36 +01:00
zelig
488a042736 fix clientidentity test after privkey removed 2015-02-06 00:00:36 +01:00
zelig
71765957e4 get rid of Private Key in ClientIdentity 2015-02-06 00:00:36 +01:00
zelig
68205dec9f make crypto handshake calls package level, store privateKey on peer + tests ok 2015-02-06 00:00:36 +01:00
zelig
4499743522 apply handshake related improvements from p2p.crypto branch 2015-02-06 00:00:35 +01:00
zelig
54252ede31 add temporary forced session token generation 2015-02-06 00:00:35 +01:00
zelig
faa069a126 peer-level integration test for crypto handshake
- add const length params for handshake messages
- add length check to fail early
- add debug logs to help interop testing (!ABSOLUTELY SHOULD BE DELETED LATER)
- wrap connection read/writes in error check
- add cryptoReady channel in peer to signal when secure session setup is finished
- wait for cryptoReady or timeout in TestPeersHandshake
2015-02-06 00:00:35 +01:00
zelig
20aade56c3 chop first byte when cryptoid.PubKeyS is set from identity.Pubkey() since this is directly copied in the auth message 2015-02-06 00:00:35 +01:00
zelig
1f2adb05b5 add initial peer level test (failing) 2015-02-06 00:00:35 +01:00
zelig
4afde4e738 add code documentation 2015-02-06 00:00:35 +01:00
zelig
364b783281 changes that fix it all:
- set proper public key serialisation length in pubLen = 64
- reset all sizes and offsets
- rename from DER to S (we are not using DER encoding)
- add remoteInitRandomPubKey as return value to respondToHandshake
- add ImportPublicKey with error return to read both EC golang.elliptic style 65 byte encoding and 64 byte one
- add ExportPublicKey falling back to go-ethereum/crypto.FromECDSAPub() chopping off the first byte
- add Import - Export tests
- all tests pass
2015-02-06 00:00:35 +01:00
zelig
58fc2c679b important fix for peer pubkey. when taken from identity, chop first format byte! 2015-02-06 00:00:35 +01:00
zelig
923504ce3d add equality check for nonce and remote nonce 2015-02-06 00:00:35 +01:00
zelig
2e868566d7 add minor comments to the test 2015-02-06 00:00:35 +01:00
zelig
e252c634cb first stab at integrating crypto in our p2p
- abstract the entire handshake logic in cryptoId.Run() taking session-relevant parameters
- changes in peer to accomodate how the encryption layer would be switched on
- modify arguments of handshake components
- fixed test getting the wrong pubkey but it till crashes on DH in newSession()
2015-02-06 00:00:35 +01:00
zelig
1803c65e40 integrate cryptoId into peer and connection lifecycle 2015-02-06 00:00:35 +01:00
zelig
489d956283 completed the test. FAIL now. it crashes at diffie-hellman. ECIES -> secp256k1-go panics 2015-02-06 00:00:35 +01:00
zelig
076c382a74 handshake test to crypto 2015-02-06 00:00:35 +01:00
zelig
3b6385b146 handshake test to crypto 2015-02-06 00:00:34 +01:00
zelig
714b955d6e fix crash
- add session token check and fallback to shared secret in responder call too
- use explicit length for the types of new messages
- fix typo resp[resLen-1] = tokenFlag
2015-02-06 00:00:34 +01:00
zelig
b855f671a5 rewrite to comply with latest spec
- correct sizes for the blocks : sec signature 65, ecies sklen 16, keylength 32
- added allocation to Xor (should be optimized later)
- no pubkey reader needed, just do with copy
- restructuring now into INITIATE, RESPOND, COMPLETE -> newSession initialises the encryption/authentication layer
- crypto identity can be part of client identity, some initialisation when server created
2015-02-06 00:00:34 +01:00
zelig
4e52adb84a add crypto auth logic to p2p 2015-02-06 00:00:34 +01:00
zelig
d227f6184e fix protocol to accomodate privkey 2015-02-06 00:00:34 +01:00
zelig
88167f39a6 add privkey to clientIdentity + tests 2015-02-06 00:00:34 +01:00
zelig
c8a8aa0d43 initial hook for crypto handshake (void, off by default) 2015-02-06 00:00:34 +01:00
obscuren
6b5f25802e Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-05 14:42:22 -08:00
obscuren
f8c1eb157d Undone fix. Will re-enable once chain resets 2015-02-05 14:42:12 -08:00
Taylor Gerring
59665ade85 Pin Travis go version to 1.4.1 2015-02-05 16:27:54 -06:00
Taylor Gerring
c1f6e259a9 Only submit on coverage report success 2015-02-05 16:04:42 -06:00
Taylor Gerring
03b89ab712 Only download missing deps, not build 2015-02-05 16:03:29 -06:00
Taylor Gerring
ae3e9d4881 Don't reference by $GOROOT 2015-02-05 16:02:15 -06:00
obscuren
cad53fa191 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop
Conflicts:
	README.md
2015-02-05 12:36:30 -08:00
obscuren
0e682d936d Updated readme 2015-02-05 12:35:46 -08:00
obscuren
cec30e23b2 Updated readme 2015-02-05 12:34:47 -08:00
Jeffrey Wilcke
47129428fe Merge pull request #290 from Gustav-Simonsson/correct_block_parent_timestamp_check
Correct block parent timestamp check and typos
2015-02-05 12:23:56 -08:00
obscuren
2f30a27b2b Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-05 12:22:44 -08:00
obscuren
8be1d134aa updated home 2015-02-05 12:22:35 -08:00
obscuren
7e0799ff21 Merge commit '9d84609b3faf797f4a611587abdda3d6b3b07917' into develop 2015-02-05 12:07:36 -08:00
Marek Kotewicz
9d84609b3f Merge branch 'master' of https://github.com/ethereum/ethereum.js 2015-02-05 21:06:50 +01:00
obscuren
c64852dbcc pending / chain event 2015-02-05 11:55:03 -08:00
obscuren
bcacaaa4f4 Merge branch 'tgerring-develop' into develop 2015-02-05 11:44:45 -08:00
obscuren
d00e2731e5 Merge branch 'develop' of https://github.com/tgerring/go-ethereum into tgerring-develop
Conflicts:
	rpc/http/server.go
2015-02-05 11:44:30 -08:00
Jeffrey Wilcke
99a1551b20 Merge pull request #287 from ethereum/system-testing
Seednode CLI param updates
2015-02-05 11:09:13 -08:00
obscuren
ac69538707 Merge branch 'develop' into miner 2015-02-05 10:58:43 -08:00
CJentzsch
16ab949110 cppjit wrong cmake config fail 2015-02-05 18:40:37 +01:00
Marek Kotewicz
82cc5f63ae bring back jsonrpc single method calls in polling 2015-02-05 18:20:43 +01:00
obscuren
9d2166a964 wip 2015-02-05 09:13:02 -08:00
CJentzsch
0c29650bfa debug version for cppjit in dockerfile 2015-02-05 17:01:24 +01:00
sveneh
af21a32cef enabled tests 2015-02-05 12:31:49 +01:00
sveneh
5235124460 enabled python in tests 2015-02-05 12:09:35 +01:00
sveneh
2e2e36cc72 updated python and go to new build requirement. added script to create
dockers locally
2015-02-05 12:07:12 +01:00
obscuren
db7c34a9df Default gas price and default gas for rpc 2015-02-04 18:34:29 -08:00
obscuren
a1b4547a53 set uncles regardless of empty uncle list. Fixes invalid blocks being mined 2015-02-04 18:26:23 -08:00
obscuren
57f95c1dc7 fixed test 2015-02-04 17:35:49 -08:00
obscuren
1d519854e2 Propagate known transactions to new peers on connect 2015-02-04 17:28:54 -08:00
obscuren
292f7ada8e Merge branch 'develop' into miner 2015-02-04 15:05:49 -08:00
obscuren
65158d39b0 Filtering 2015-02-04 15:05:47 -08:00
obscuren
7c278d6ac2 updated tests 2015-02-04 12:52:34 -08:00
Taylor Gerring
429077a5a0 Merge branch 'develop' of github.com:tgerring/go-ethereum into develop 2015-02-04 10:58:18 -06:00
Taylor Gerring
2656a2d038 Use different default RPC port per #186 2015-02-04 10:57:47 -06:00
obscuren
3f03197dae Updated tests 2015-02-04 07:39:02 -08:00
CJentzsch
83258456d3 remove false tests 2015-02-04 16:23:54 +01:00
CJentzsch
936a8c0e3b python fail 2015-02-04 16:21:06 +01:00
obscuren
b1870631a4 WIP miner 2015-02-04 05:53:22 -08:00
Marek Kotewicz
859a1999cb Merge pull request #55 from ethereum/develop
fixed jsonrpc result field 0 not handled properly
2015-02-04 11:26:19 +01:00
Marek Kotewicz
f3e1797153 fixed jsonrpc response 0 not handled properly 2015-02-04 11:23:23 +01:00
CJentzsch
7bfa609f38 Merge remote-tracking branch 'origin' into develop 2015-02-04 09:48:31 +01:00
CJentzsch
822b05106d goFail 2015-02-04 09:48:16 +01:00
Taylor Gerring
55ed0ff07c Update RPC message format 2015-02-03 17:29:29 -06:00
Taylor Gerring
07590196a5 Merge branch 'develop' of github.com:tgerring/go-ethereum into develop 2015-02-03 17:18:20 -06:00
wanderer
c37ea26dc7 updated blockchain require 2015-02-03 17:35:36 -05:00
Gustav Simonsson
697c2b5dc1 Correct block parent timestamp check and typos 2015-02-03 23:09:39 +01:00
Marek Kotewicz
a0cfa3ca21 version upgrade 2015-02-03 23:02:24 +01:00
Marek Kotewicz
e58e2f5ee4 jsonrpc.js tests && jsonrpc response validation is more strict 2015-02-03 23:00:02 +01:00
Marek Kotewicz
45134de740 jsonrpc.js file && batch polling 2015-02-03 22:24:17 +01:00
Marek Kotewicz
f3ce1f07c4 simplified polling && jsonrpc payload creation 2015-02-03 21:43:39 +01:00
Marek Kotewicz
ddc17196da tests && fixes for utils methods 2015-02-03 20:12:56 +01:00
Marek Kotewicz
fdcc1af4e2 clearing tests 2015-02-03 19:48:51 +01:00
wanderer
901ddf7737 moved blockchain tests 2015-02-03 12:45:23 -05:00
Marek Kotewicz
4a54b8c451 version upgrade 0.0.12 2015-02-03 16:58:49 +01:00
obscuren
4dc283c0fb Removed minimum height. Closes #282 2015-02-03 07:54:50 -08:00
Marek Kotewicz
f1a5cf9128 Merge branch 'develop' into cpp
Conflicts:
	dist/ethereum.js.map
	dist/ethereum.min.js
2015-02-03 16:20:26 +01:00
Marek Kotewicz
a5909d82eb parsing events output 2015-02-03 16:16:38 +01:00
obscuren
59b7386abb Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-03 07:16:14 -08:00
obscuren
7bd2fbe2b1 Fixed whisper "to" filtering. Closes #283 2015-02-03 07:16:05 -08:00
obscuren
623469cb6c Added missing whisper timestamp. Closes #284 2015-02-03 06:56:19 -08:00
obscuren
663d725026 Added a different default home page 2015-02-03 06:54:41 -08:00
Marek Kotewicz
1860b3dff9 gulp 2015-02-03 15:08:36 +01:00
Marek Kotewicz
03faec9d41 event outputParser && tests 2015-02-03 15:08:19 +01:00
CJentzsch
2b3ea9770b cppjit fail 2015-02-03 13:13:10 +01:00
obscuren
30fa30bd4a Docs & old code removed 2015-02-02 20:02:00 -08:00
obscuren
faa54e59c1 Make sure that CALL addr is always 20 bytes 2015-02-02 20:01:10 -08:00
obscuren
93ae7bb0d2 Raw data for existing blocks 2015-02-02 19:58:58 -08:00
obscuren
3c7181d28f Fixed a copy issue in the trie which could cause a consensus failure 2015-02-02 19:58:34 -08:00
obscuren
6fecb150d6 Updated tests 2015-02-02 19:55:38 -08:00
CJentzsch
56559162d3 RefundOverflowTest 2015-02-03 01:00:32 +01:00
Taylor Gerring
1f4ed49b4c Move hardcoded seed node address to app flag
Replaces functionality `-seed=true` with `-seed="ip:port"`
2015-02-02 13:04:00 -06:00
Taylor Gerring
57c6caf146 Separate Coveralls submission from coverage script 2015-02-02 12:14:04 -06:00
arkpar
4bb5ba78b0 reverted ethereum.js 2015-02-02 18:20:43 +01:00
Marek Kotewicz
9d9c23e315 common cleanup 2015-02-02 17:40:05 +01:00
arkpar
1a6b7de0af removed splitter.qml 2015-02-02 16:47:18 +01:00
Taylor Gerring
b2b42f759c Update signature for rpc websockets 2015-02-02 07:37:44 -06:00
Taylor Gerring
7139c1aff7 Decrease log level for Sending RPC payload 2015-02-02 07:30:22 -06:00
Taylor Gerring
1e60919d47 Merge pull request #3 from ethereum/develop
Update to develop
2015-02-02 07:22:20 -06:00
Marek Kotewicz
011fdd91df event_inc example 2015-02-02 11:52:56 +01:00
Gav Wood
0994efa66f Better HTML template in Mix.
Use happened in JS.
Debugging QML enabled.
2015-02-01 22:51:14 -08:00
obscuren
8ccde784f9 Added (disabled) Jit validation 2015-02-01 15:30:29 +01:00
obscuren
d52878c744 Removed some VMEnv & Added VmType() to vm.Environment 2015-02-01 15:29:57 +01:00
martin becze
ca19e52266 Create badBlockChain.json 2015-01-31 18:40:02 -05:00
wanderer
e76af886bf updated test loader 2015-01-31 18:26:29 -05:00
wanderer
b4b280c4ff removed old folder 2015-01-31 17:51:22 -05:00
wanderer
764ed01688 move folder 2015-01-31 17:48:45 -05:00
martin becze
d1c8fa6bbd Rename basicBlockChain.js to basicBlockChain.json 2015-01-31 17:47:39 -05:00
martin becze
8ce498ee53 Create basicBlockChain.js 2015-01-31 17:46:24 -05:00
Marek Kotewicz
d5166918e9 fixed event signatures 2015-01-31 19:07:59 +01:00
obscuren
0d97c3ce13 Merge branch 'bounty' into develop 2015-01-31 17:50:43 +01:00
obscuren
19cff8ecca Fixed n 2015-01-31 17:50:28 +01:00
obscuren
bb2e847363 Merge branch 'bounty' into develop 2015-01-31 17:44:42 +01:00
obscuren
a008c21cf0 Fixed Sign nonce 2015-01-31 17:44:34 +01:00
obscuren
9016ce8dd8 Merge branch 'bounty' into develop 2015-01-31 17:23:50 +01:00
obscuren
79cd58bdf3 removed old code 2015-01-31 17:23:46 +01:00
obscuren
d1e5d92191 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-01-31 17:23:37 +01:00
obscuren
cb382fa76b Validate transactions sender before adding to pool. Closes #272 2015-01-31 17:22:17 +01:00
Marek Kotewicz
e6c0ec7278 version upgrade 2015-01-31 16:02:51 +01:00
Marek Kotewicz
3cdf108057 Merge branch 'develop' 2015-01-31 16:02:16 +01:00
Marek Kotewicz
688030ecb6 eth.filter next param optional 2015-01-31 16:01:41 +01:00
Marek Kotewicz
589c4fb30f formatInput && formatOutput simplified 2015-01-31 15:48:49 +01:00
Marek Kotewicz
b20e972bec few methods moved to utils 2015-01-31 15:22:05 +01:00
Marek Kotewicz
a8a2e3231c constants separated to const.js file 2015-01-31 14:05:48 +01:00
Marek Kotewicz
4bdf52fc1e toAscii && fromAscii moved to utils 2015-01-31 13:54:39 +01:00
Marek Kotewicz
0b82a05a75 events 2015-01-31 04:09:48 +01:00
Marek Kotewicz
80c97ca21b events 2015-01-31 03:42:13 +01:00
Marek Kotewicz
2491c99b37 abi.js cleanup && new types.js, utils.js 2015-01-31 02:54:17 +01:00
Marek Kotewicz
cf534d4726 gulp 2015-01-31 01:54:46 +01:00
Marek Kotewicz
5689086202 formatters separated 2015-01-31 01:52:36 +01:00
Taylor Gerring
bd64ed1e93 Update coveralls badge to develop branch 2015-01-30 18:47:25 -06:00
Marek Kotewicz
995861de4d event options 2015-01-31 01:30:19 +01:00
Taylor Gerring
56a0131778 Travis fixes for Qt5.4 2015-01-30 17:24:51 -06:00
wanderer
e125e70fa0 bump 2015-01-30 16:07:55 -05:00
martin becze
5f10d982ac Update genesishashestest.json
fixed initial_alloc
2015-01-30 16:09:25 -05:00
Taylor Gerring
0bb3943698 Updated for Qt5.4 2015-01-30 11:49:52 -06:00
obscuren
2d9b3aa537 Removed debug log 2015-01-30 17:00:33 +01:00
obscuren
8e14545282 added new default favicon 2015-01-30 15:54:43 +01:00
Marek Kotewicz
2eedc330bf contract with array example 2015-01-30 15:45:00 +01:00
obscuren
0ed3edc99e "fixed" transaction view 2015-01-30 14:49:45 +01:00
obscuren
0c0708076e added disasm 2015-01-30 14:41:14 +01:00
obscuren
3847e248df Bumped version number 2015-01-30 14:37:07 +01:00
obscuren
af927ffdaf Added whisper messages
* have identity & get messages
2015-01-30 13:47:18 +01:00
obscuren
c03d403437 Added whisper interface for xeth, added examples, updated RPC
* Added RPC methods for whisper
* Added whisper example
2015-01-30 13:25:12 +01:00
obscuren
c48644490f Fixed whisper pub key bug
* Unrecoverable messages would cause segfault when recovering invalid
  pub key
2015-01-30 13:24:20 +01:00
obscuren
54927dc0e0 Fixed issue with Storage()
* Storage() returned encoded values. They are now decode prior to hexing
* Removed old code from state object
* Updated coin
2015-01-29 23:58:43 +01:00
obscuren
705cf6113d debug err removed 2015-01-29 23:18:46 +01:00
obscuren
9022f5034f default values removed 2015-01-29 23:17:43 +01:00
CJentzsch
e8e8d12168 update genesis block 2015-01-29 23:05:42 +01:00
CJentzsch
fad4ddbcaf delete wrong tests 2015-01-29 22:50:38 +01:00
obscuren
bd992e7baf Merge branch 'qt5.4' of github.com-obscure:ethereum/go-ethereum into qt5.4
Conflicts:
	rpc/message.go
2015-01-29 20:41:10 +01:00
obscuren
0031f388ac More dapp samples
* Info DApp, coin DApp
* Additional rpc methods
2015-01-29 20:39:26 +01:00
Taylor Gerring
447bad9dbd Travis fix
Satisfy dependency for obscuren/qml fork
2015-01-29 12:12:19 -06:00
Taylor Gerring
89a48e365c Cleanup 2015-01-29 11:39:59 -06:00
Taylor Gerring
1cfea1113a Merge branch 'qt5.4' of github.com:ethereum/go-ethereum into qt5.4 2015-01-29 11:28:55 -06:00
obscuren
6488a392a3 Reimplemented message filters for rpc calls 2015-01-29 16:52:00 +01:00
Marek Kotewicz
600c9dd27d topics are deprecated 2015-01-29 15:45:04 +01:00
Marek Kotewicz
e380462532 topic for backwards compatibility 2015-01-29 15:36:13 +01:00
Marek Kotewicz
94e0e5ab7d Merge branch 'cpp' into cpp2
Conflicts:
	example/balance.html
2015-01-29 15:22:55 +01:00
Marek Kotewicz
8613382869 moved comment 2015-01-29 15:17:32 +01:00
Marek Kotewicz
df17c33898 event example 2015-01-29 15:05:43 +01:00
obscuren
ddf17d93ac Samples and disams cmd for evm code 2015-01-29 14:46:59 +01:00
Marek Kotewicz
c8ee08c24b contract.js simplified 2015-01-29 13:32:32 +01:00
obscuren
84adf77bf3 Added RPC "Call" for JS calls to contracts 2015-01-29 13:10:34 +01:00
obscuren
f75dcc7f4c Added abi example 2015-01-29 13:10:04 +01:00
Marek Kotewicz
842b8cf323 event.js 2015-01-29 12:35:21 +01:00
obscuren
b5918a1faa removed create 2015-01-29 12:06:47 +01:00
obscuren
d0c6559204 Merge branch 'develop' into qt5.4 2015-01-29 12:02:45 +01:00
obscuren
6d012f628b implement transact 2015-01-29 12:01:51 +01:00
Taylor Gerring
726852e3d3 Remove old websocket implementation 2015-01-28 21:39:49 -06:00
Taylor Gerring
83b385a290 Separate golang source dir from GOPATH dir 2015-01-28 21:28:32 -06:00
obscuren
ec85458612 updated ethereum.js and moved to subfolder
* Previous subtree caused a lot of trouble
* Implemented sha3 in our shiny new http JSON RPC
2015-01-29 00:24:18 +01:00
obscuren
73dcbf7ba2 Add 'cmd/mist/assets/ext/ethereum.js/' from commit '63d9c070ef7637a3d570a5a45ea931c1680ebc02'
git-subtree-dir: cmd/mist/assets/ext/ethereum.js
git-subtree-mainline: f80fe97763
git-subtree-split: 63d9c070ef
2015-01-28 23:33:24 +01:00
obscuren
f80fe97763 removed old js yet again 2015-01-28 23:33:20 +01:00
obscuren
cbf1d07073 default http rpc on 2015-01-28 23:23:33 +01:00
obscuren
8284bef072 Merge branch 'develop' into qt5.4 2015-01-28 22:21:26 +01:00
obscuren
fd5d061d49 Merge branch 'develop' into Gustav-Simonsson-key_store_and_accounts_integration 2015-01-28 21:50:10 +01:00
obscuren
32fbc0d334 Merge branch 'develop' into qt5.4 2015-01-28 21:36:53 +01:00
obscuren
1337a8dfb1 upped pv 2015-01-28 21:34:08 +01:00
obscuren
3440a8a0bf changed lost key 2015-01-28 21:12:26 +01:00
obscuren
5e891ea981 Merge branch 'key_store_and_accounts_integration' of https://github.com/Gustav-Simonsson/go-ethereum into Gustav-Simonsson-key_store_and_accounts_integration 2015-01-28 20:55:55 +01:00
obscuren
adda54ac55 Added webengine initializer 2015-01-28 20:50:20 +01:00
obscuren
cebb149f5c removed key while in the process of moving to the new key storage 2015-01-28 20:50:09 +01:00
Gav Wood
e1c0862658 Fix for API. 2015-01-28 10:19:49 -08:00
Taylor Gerring
21fd31dad8 Merge branch 'jsonrpc' of github.com:ethereum/go-ethereum into jsonrpc 2015-01-28 12:01:15 -06:00
obscuren
957f80c623 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-01-28 18:37:04 +01:00
obscuren
1c51e12c18 Merge branch 'jsonrpc' into qt5.4 2015-01-28 18:36:41 +01:00
obscuren
872b249711 further cleaned up xeth interface 2015-01-28 18:36:23 +01:00
obscuren
1146f25015 clean up of xeth 2015-01-28 18:25:50 +01:00
obscuren
45e15f62f5 merge jsonrpc 2015-01-28 18:22:53 +01:00
obscuren
7f638f0b2d moving to a better xeth 2015-01-28 18:14:28 +01:00
Taylor Gerring
5a52e86546 Update go to latest version
Now using git instead of mercurial
2015-01-28 11:10:16 -06:00
Taylor Gerring
a88f609b8a Use custom Send methods 2015-01-28 10:22:37 -06:00
Marek Kotewicz
61e8ae2f7b events init 2015-01-28 14:55:39 +01:00
obscuren
b46e1ca97e Merge branch 'jsonrpc' of github.com-obscure:ethereum/go-ethereum into jsonrpc 2015-01-28 14:52:09 +01:00
obscuren
fb7c03ff4d switched to obscuren/qml 2015-01-28 14:51:54 +01:00
Marek Kotewicz
2544d2c952 tests for abi.filters 2015-01-28 14:39:10 +01:00
Marek Kotewicz
ea7c2fc673 abi function type 2015-01-28 14:20:36 +01:00
obscuren
9a11a94894 Updated assets & moved messages 2015-01-28 14:02:36 +01:00
obscuren
cbf162ca64 Allow CORS * 2015-01-28 14:02:18 +01:00
obscuren
85d20cd61b Added big numbers 2015-01-28 14:02:03 +01:00
obscuren
94976d63ca Merge branch 'develop' into qt5.4 2015-01-28 10:58:56 +01:00
obscuren
cb47a9e97f new ethereum.js 2015-01-28 10:58:43 +01:00
obscuren
ad5894e486 removed old ethereum.js 2015-01-28 10:54:06 +01:00
Marek Kotewicz
63d9c070ef fixed incoming messages 2015-01-28 10:50:24 +01:00
obscuren
f15d23b496 updated messages 2015-01-28 10:47:17 +01:00
obscuren
4c5968097d Merge branch 'jsonrpc' into qt5.4 2015-01-28 10:29:29 +01:00
obscuren
159c4d56cd Merge branch 'develop' into jsonrpc 2015-01-28 10:23:58 +01:00
obscuren
f3e78c8f3c reworking messages => log 2015-01-28 10:23:18 +01:00
Christoph Jentzsch
a20a5b437d Merge pull request #50 from winsvega/develop
Transaction Tests
2015-01-28 06:28:45 +01:00
Gustav Simonsson
8d9752a557 Address pull request comments
* Use crypto.Sign instead of directly calling secp256k1 lib
* Rename UserAccount to Account and Addr to Address (for consistency)
* Change AccountManager.Sign to take ptr to Account instead of
  address byte array
* Simplify copying of Accounts in Accounts()
* PubkeyToAddress and GetEntropyCSPRNG now exported
2015-01-28 05:12:57 +01:00
Marek Kotewicz
1345a8c67c log error on console, if api returns an error 2015-01-28 00:07:03 +01:00
Marek Kotewicz
83fad0fb59 removed fromFixed, toFixed && offset from tests 2015-01-27 23:03:57 +01:00
Taylor Gerring
e9d017ba08 Rename api var for clarity 2015-01-27 14:34:01 -06:00
Taylor Gerring
d8c6168d11 Return a websocker.Handler of the function 2015-01-27 14:26:42 -06:00
Taylor Gerring
dd3f38fe5b Rename transport to ws
Cleanup object naming for clarity
2015-01-27 14:16:34 -06:00
Taylor Gerring
a38bca3438 Add wsport flag to Mist 2015-01-27 12:40:52 -06:00
Taylor Gerring
5f50fe7a4a Update CLI to use new Websocket RPC
Use “wsport” flag to change default port
2015-01-27 12:29:08 -06:00
Taylor Gerring
b8e7b8e2e1 New simplified Websocket transport
Uses rpc.EthereumApi abstraction
2015-01-27 12:29:08 -06:00
Taylor Gerring
2f0166b945 Indicate port in startup log message 2015-01-27 12:29:08 -06:00
Taylor Gerring
d790229a33 Move HTTP transport to sub package of RPC 2015-01-27 12:29:07 -06:00
obscuren
8c99a87aa8 Merge branch 'chfast-pr/evmjit' into develop 2015-01-27 16:31:29 +01:00
obscuren
fe14b0b82e Merge branch 'pr/evmjit' of https://github.com/chfast/go-ethereum into chfast-pr/evmjit 2015-01-27 16:30:38 +01:00
obscuren
aa5b29e2f2 Implemented contract ABI 2015-01-27 16:19:21 +01:00
obscuren
382726fde4 Merge branch 'key_store_and_accounts_integration' of https://github.com/Gustav-Simonsson/go-ethereum into Gustav-Simonsson-key_store_and_accounts_integration 2015-01-27 16:18:40 +01:00
Marek Kotewicz
c2cb2bef96 removed web3.eth.account, fixed #37 2015-01-27 16:02:42 +01:00
Marek Kotewicz
09f633596d fixed #23 2015-01-27 15:20:22 +01:00
Marek Kotewicz
42a25f2f26 evaluating solidity method input params 2015-01-27 14:31:50 +01:00
Marek Kotewicz
6d59047c5f contract method name 2015-01-27 14:14:02 +01:00
Marek Kotewicz
ad7c05778f getMethodWithName 2015-01-27 14:05:30 +01:00
Marek Kotewicz
f02368141f fixed contract example 2015-01-27 11:53:34 +01:00
Marek Kotewicz
649b9cc195 fixed natspec example 2015-01-27 09:40:31 +01:00
Marek Kotewicz
1f5a6f1341 Merge branch 'develop' into cpp
Conflicts:
	dist/ethereum.js.map
	dist/ethereum.min.js
2015-01-27 09:36:39 +01:00
Marek Kotewicz
da4c2d530d removed promise dependency, updated readme, fixed node.js version of lib 2015-01-27 00:54:21 +01:00
Ethan Buchman
2da367a2be fix unchecked slice index on tx.From() 2015-01-26 10:57:23 -08:00
Paweł Bylica
079c59b929 Update JitVm to new EVM JIT ABI (C interface) 2015-01-26 18:02:09 +01:00
Marek Kotewicz
5b701962dc upgraded version to 0.0.9 2015-01-26 16:47:05 +01:00
Marek Kotewicz
c595632b92 gulp 2015-01-26 16:45:35 +01:00
Marek Kotewicz
c5610398d5 Merge branch 'master' into sync
Conflicts:
	lib/websocket.js
2015-01-26 16:45:12 +01:00
Marek Kotewicz
a7f4448f34 Merge branch 'develop' into sync 2015-01-26 16:43:21 +01:00
Marek Kotewicz
7807a4f738 polling every second 2015-01-26 16:42:43 +01:00
Marek Kotewicz
e5d294df32 return null instead of undefined, if not provider is set 2015-01-26 16:41:00 +01:00
Marek Kotewicz
d0b6f3663b watches are calling callback with a single result object, not a full jsonrpc response 2015-01-26 16:22:40 +01:00
Paweł Bylica
c71aff99db Update EVM JIT runtime data layout 2015-01-26 16:13:55 +01:00
Paweł Bylica
5d33d5a7d9 Merge remote-tracking branch 'upstream/develop' into evmjit 2015-01-26 15:46:10 +01:00
Gustav Simonsson
512ffa2bf4 Add accounts package and refactor key stores
* Add initial UserAccount and AccountManager structs
* Add NewAccount, Sign and Accounts functions
* Refactor key stores to use key address as main identifier
  while keeping the UUID.
* Use key address as file/dir names instead of UUID
2015-01-26 04:30:17 +01:00
sveneh
d0440eef25 fixes 2015-01-25 23:28:47 +01:00
sveneh
5deca66a7d fixes 2015-01-25 23:15:41 +01:00
sveneh
58ec49a34d added EC2 provisioning, optimised docker for EC2, added python and
cppjit client (python not yet working)
2015-01-25 22:52:38 +01:00
Gav Wood
d223ac0379 Additional work on the JS stuff to make it more similar to Solidity. 2015-01-25 13:43:36 -08:00
Gav Wood
113a3809ab Fix string outputs.
Auto collapse for < 2 returns.
2015-01-24 18:23:39 -08:00
Gav Wood
fb34c6c7b9 Auto select call or transact depending on constness. 2015-01-24 18:09:35 -08:00
Gav Wood
7869294a26 Fixes to ethereum.js and standard.js. 2015-01-24 17:42:49 -08:00
Gav Wood
61a0158877 Vanity addresses in AZ.
Fixes to ethereum.js
eth.flush()
2015-01-24 16:46:46 -08:00
wanderer
fa93480d9a added addressbook 2015-01-24 19:45:53 -05:00
wanderer
063f69d51d added local 2015-01-24 19:32:26 -05:00
obscuren
c54a85ee64 Reworking browser 2015-01-25 00:55:33 +01:00
obscuren
48083608b5 Updated readme with badges 2015-01-24 19:09:29 +01:00
obscuren
393a6c5edf Gitter link 2015-01-24 18:48:19 +01:00
obscuren
0d96528d2f Skip for travis 2015-01-24 18:46:35 +01:00
obscuren
2ba54a69be skipping for travis 2015-01-24 18:40:03 +01:00
winsvega
382694f593 Transaction Tests
New State Tests
2015-01-23 20:27:51 +03:00
Paweł Bylica
94106cc41f JitVm code cleanups & refactoring. Some memory copies eliminated (i.e. in SHA3 calculation) 2015-01-23 16:45:22 +01:00
Paweł Bylica
3aa0410f6e Merge remote-tracking branch 'upstream/develop' into pr/evmjit 2015-01-23 15:37:37 +01:00
CJentzsch
52e174b1f7 make money with transaction gas overflow 2015-01-23 15:23:56 +01:00
obscuren
7a894e3738 Merge branch 'develop' into jsonrpc 2015-01-23 14:29:01 +01:00
CJentzsch
fd450b7f9a python fail 2015-01-23 12:04:39 +01:00
CJentzsch
04b611df1c python fails 2015-01-23 09:57:49 +01:00
CJentzsch
64fc464e03 add python fail 2015-01-22 23:14:12 +01:00
obscuren
d792e95c21 Merge branch 'Gustav-Simonsson-import_presale_keys' into develop 2015-01-22 22:42:52 +01:00
obscuren
a125b0fbc3 Merge branch 'import_presale_keys' of https://github.com/Gustav-Simonsson/go-ethereum into Gustav-Simonsson-import_presale_keys
Conflicts:
	crypto/crypto.go
2015-01-22 22:42:39 +01:00
obscuren
a216225827 Merge branch 'pr/evmjit' of https://github.com/chfast/go-ethereum into chfast-pr/evmjit 2015-01-22 21:47:36 +01:00
obscuren
0dfe511370 Use curve params instead of hardcoded 32 bytes 2015-01-22 18:15:11 +01:00
obscuren
d4cc2d3503 Pad private key when signing & length check for hashes in sign 2015-01-22 18:12:05 +01:00
Paweł Bylica
d5f38f5690 JitVM: the EVM JIT bridge 2015-01-22 18:00:15 +01:00
Marek Kotewicz
c01f0ae825 Merge commit 'b1971f46cce7d21be5f6277c9f8c406a0d195f78' into natspec 2015-01-22 17:57:53 +01:00
Marek Kotewicz
81bbe8c93b simplified synchronous polling 2015-01-22 17:57:26 +01:00
CJentzsch
26e84de180 cppjit fail 2015-01-22 17:27:02 +01:00
CJentzsch
b4e7a5b1c6 python fail 2015-01-22 17:14:50 +01:00
CJentzsch
7f1d2b28c1 cppjit failure 2015-01-22 16:36:43 +01:00
Marek Kotewicz
29fa57e9b3 natspec.js updated to use sync api 2015-01-22 15:38:48 +01:00
Marek Kotewicz
13f39afbdd Merge commit '93fa6855afad7a7eb86e49efe384372a6060da35' into natspec 2015-01-22 15:33:47 +01:00
Marek Kotewicz
3073511e30 not parsing transaction output 2015-01-22 15:32:52 +01:00
Marek Kotewicz
6c4432d417 Merge commit 'b32dedc5b54f853cf63bb2663c8bca6aa4272b0b' into natspec 2015-01-22 15:18:59 +01:00
Marek Kotewicz
e45db42e94 fixed contract.js 2015-01-22 15:18:21 +01:00
Marek Kotewicz
375ca542ab Merge commit '8e3ba3a4285cc7e902a018196b3849df56944dd0' into natspec 2015-01-22 14:38:04 +01:00
Marek Kotewicz
0202b05a5d implicit solidity method call 2015-01-22 14:37:34 +01:00
CJentzsch
ab0473ef93 failing python test 2015-01-22 14:12:46 +01:00
Marek Kotewicz
d6a92b18d4 fixed natspec example 2015-01-22 13:39:32 +01:00
Marek Kotewicz
5e623f14f3 Merge commit 'cdd7af2a6e87363d0ff7d2528f9d9b521bf2ef20' into natspec 2015-01-22 13:06:11 +01:00
Marek Kotewicz
22c77c607e qt sync provider 2015-01-22 13:04:28 +01:00
obscuren
b777d6aa3f UI Updates
* Browser now has tabs
* Fixed a callback issue
2015-01-22 12:35:31 +01:00
CJentzsch
4b3e56ec23 failing python test 2015-01-22 12:17:52 +01:00
obscuren
4df2e1ef5c updated tests 2015-01-22 00:37:58 +01:00
obscuren
67f9783e6a Moved obscuren secp256k1-go 2015-01-22 00:35:00 +01:00
obscuren
6eaa404187 Moved sha3 from obscuren 2015-01-22 00:25:00 +01:00
obscuren
0045ce4cde Future blocks not allowed 2015-01-22 00:24:30 +01:00
obscuren
465b0a79d8 Updated browser & pass view to callback function 2015-01-22 00:24:20 +01:00
Marek Kotewicz
ad8e92e9c6 Merge commit 'eb4984c0d036c1420e782ca136810e851e33fb37' into natspec 2015-01-21 21:54:51 +01:00
Marek Kotewicz
edfb874527 changes in filter.js (not yet working) 2015-01-21 21:54:03 +01:00
Marek Kotewicz
c2d9c1a6f1 toDecimal/fromDecimal is using bignumber.js now 2015-01-21 21:35:15 +01:00
Marek Kotewicz
81a5813270 removed unused pieces of code 2015-01-21 21:24:40 +01:00
Marek Kotewicz
08e2696627 removed send queues from providermanager 2015-01-21 21:22:05 +01:00
Marek Kotewicz
c9693b4746 contract.html example is working with sync api 2015-01-21 21:12:07 +01:00
Marek Kotewicz
ceb4357a8d sync api tests running, removed unused pieces of code 2015-01-21 20:43:20 +01:00
Marek Kotewicz
fc986a3fbe removed unused providers 2015-01-21 20:30:32 +01:00
Marek Kotewicz
0d2cccc2ce http sync api 2015-01-21 20:29:02 +01:00
Gustav Simonsson
8af42d42da CamelCase aesCBCDecrypt 2015-01-21 19:08:05 +01:00
Marek Kotewicz
81ff253e68 Merge commit 'c4638ba3edbd14677da5441d61f7845668df2b22' into natspec 2015-01-21 18:58:33 +01:00
Marek Kotewicz
e68f8e79ea natspec changes 2015-01-21 18:58:13 +01:00
Marek Kotewicz
e1fcffcc81 gulp 2015-01-21 18:58:01 +01:00
Marek Kotewicz
f3e78e50ff changes to for natspec 2015-01-21 18:56:30 +01:00
Taylor Gerring
c14900dbb0 Add initial P2P json logs 2015-01-21 11:47:21 -06:00
Taylor Gerring
0aa76d3e5b Rename jsonlogger method 2015-01-21 11:45:30 -06:00
Taylor Gerring
622bfd4f08 Check LogSystem type 2015-01-21 10:58:09 -06:00
Taylor Gerring
1077109e11 Add JsonLogger type 2015-01-21 10:57:29 -06:00
Taylor Gerring
ed7d7b405e Split file cleanup 2015-01-21 10:26:54 -06:00
Taylor Gerring
41d80ba17b Add JsonLevel log level 2015-01-21 10:18:46 -06:00
Taylor Gerring
bdf99e0981 Add LogFormat flag 2015-01-21 10:17:07 -06:00
Taylor Gerring
acdc19d1b7 Add rawLogSystem 2015-01-21 10:16:15 -06:00
Taylor Gerring
7f9c335487 Split into multiple files 2015-01-21 10:04:11 -06:00
Gustav Simonsson
1f8290ca44 Add ImportPreSaleKey
* ImportPreSaleKey takes a KeyStore, a presale key JSON (e.g. file content)
  and a password string. It stores the key in the given key store.
* Refactored common AES decryption and moved some functions to crypto.go
2015-01-21 16:35:43 +01:00
Taylor Gerring
215780ab56 Move GetRequestReply to EthereumApi
Off of jsonWrapper
2015-01-20 13:58:51 -06:00
Taylor Gerring
a6d4ce2630 Move argument types to separate file 2015-01-20 13:57:51 -06:00
Taylor Gerring
0c77a96249 Move websockets out of cmd/util 2015-01-20 13:40:24 -06:00
Taylor Gerring
d92fde6980 Merge branch 'develop' into jsonrpc 2015-01-20 13:22:38 -06:00
obscuren
87f50659db fixed url bug in browser 2015-01-20 18:42:29 +01:00
Marek Kotewicz
689630d261 Merge commit '53b4fda16d0b191be8ab986379a328aa38aaf916' into natspec 2015-01-20 17:48:08 +01:00
Marek Kotewicz
848c54dc47 _currentAbi object 2015-01-20 17:46:37 +01:00
obscuren
9845029a75 StdVm by default 2015-01-20 15:49:12 +01:00
obscuren
375cc67ba6 Hide browser bar when coming from a DApp url 2015-01-20 15:48:38 +01:00
Marek Kotewicz
380c1522ac solidity methods "overloading" 2015-01-20 15:06:05 +01:00
obscuren
4dd7be7ed0 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-01-20 15:04:30 +01:00
Jeffrey Wilcke
12fad65991 Merge pull request #259 from Gustav-Simonsson/develop
KeyStore (Low level key functionality)
2015-01-20 15:04:21 +01:00
CJentzsch
be58138100 more SHA3 tests, and random failing tests for python 2015-01-20 10:33:26 +01:00
Marek Kotewicz
5c79ee4446 fixed natspec_contract.html example 2015-01-20 09:22:32 +01:00
Gustav Simonsson
d48140cab3 Address pull request comments
* Further simplify "constructor" function's allocation of structs
* Fix formatting
2015-01-19 22:12:22 +01:00
Gustav Simonsson
3cf038f300 Address pull request comments
* Allocate with composite literal instead of new
* Remove check of number of bytes read from rand
2015-01-19 20:24:30 +01:00
CJentzsch
dabbb6df65 Merge branch 'develop' of https://github.com/ethereum/tests into develop 2015-01-19 15:17:20 +01:00
CJentzsch
8871fb4e0e add python fail 2015-01-19 15:15:41 +01:00
sveneh
eecee75336 fixed sudo access 2015-01-19 15:10:08 +01:00
Marek Kotewicz
83505e61f3 Merge commit '2b4d38b9bf059014596e1ab00c99dc2ad4ab3761' into ethereumjs 2015-01-19 13:53:44 +01:00
Marek Kotewicz
6a58db66f7 parsing real, ureal values on output 2015-01-19 13:22:58 +01:00
Marek Kotewicz
af54832d24 encoding real on input 2015-01-19 12:59:29 +01:00
Marek Kotewicz
86b417e83f fixes for autoprovider 2015-01-19 11:36:41 +01:00
obscuren
f34838688e Minor browser improvements 2015-01-19 11:23:17 +01:00
obscuren
bcb1166e52 Added 0 key proof error
Private key \x00\x00...\x00 returns the _exact_ same public key as \x11
\x11...\x11. Currently investigating.
2015-01-19 11:22:56 +01:00
obscuren
8d1637f567 Moved connection errors to DebugDetail level 2015-01-19 11:21:46 +01:00
obscuren
b03614527b VmDebug => StdVm 2015-01-19 11:20:55 +01:00
obscuren
9b509f6478 Print error instead of returning for seed node err
Returning an error would indicate a complete failure initialising the
Ethereum backend. Instead we should print the message and continue.
2015-01-19 11:20:12 +01:00
obscuren
89c69a1d25 VmDebug => StdVm 2015-01-19 11:18:34 +01:00
Jeffrey Wilcke
06bfe19f05 Merge pull request #260 from fjl/rlp-encoder
rlp: allow encoding non-empty interface values
2015-01-19 10:59:35 +01:00
wanderer
6e8085b839 remove old requires 2015-01-18 22:14:53 -05:00
wanderer
f5ec2470db use require-all 2015-01-18 21:54:29 -05:00
obscuren
7394ee7c72 Fixed difficulty
Difficulty was broken when refactored.
2015-01-18 15:45:54 +01:00
Marek Kotewicz
b2d23b91e7 Merge pull request #32 from kumavis/patch-1
WebsocketProvider - fixed incorrect variable name
2015-01-18 00:30:08 +01:00
Marek Kotewicz
2ce109eb53 Merge commit '6a383d6ed3fb37cf6739f6ac441652adfdb70463' into ethereumjs 2015-01-17 15:45:11 +01:00
Marek Kotewicz
823fb2995b tests for parsing output array 2015-01-17 13:50:07 +01:00
Marek Kotewicz
1e2c1ae98a output parser string support 2015-01-17 13:39:19 +01:00
Marek Kotewicz
b457e88cd0 support for int array types[] 2015-01-17 02:14:40 +01:00
aaron
e97478cc1e WebsocketProvider - fixed incorrect variable name 2015-01-16 16:03:13 -08:00
Marek Kotewicz
2d8383d3c8 removed unused functions 2015-01-16 23:55:32 +01:00
Marek Kotewicz
1c4d8f36e4 Merge commit '29333fc213b62b27ef826616cf77430947fb6eab' into ethereumjs 2015-01-16 16:49:50 +01:00
Marek Kotewicz
e94da808cb default padding set to 32, separated to one variable 2015-01-16 16:46:14 +01:00
Marek Kotewicz
a1c0bb68dd fixed checking first bit for parsing int output 2015-01-16 16:40:26 +01:00
Marek Kotewicz
774e9d24a1 abi.js rounds down floating point input 2015-01-16 16:26:58 +01:00
Marek Kotewicz
9a264a4284 updated bower.json && package.json version, added bignumber.js to bower dependencies 2015-01-16 16:04:41 +01:00
Marek Kotewicz
0172939490 fixed #28 and other small node.js issues 2015-01-16 15:49:36 +01:00
obscuren
24613a60dc Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-01-16 14:51:47 +01:00
obscuren
acc8f7fadc Add defer rescued back in 2015-01-16 14:51:38 +01:00
Christoph Jentzsch
df335682e4 Merge pull request #48 from sveneh/develop
Testrunner deployment
2015-01-16 14:07:37 +01:00
Marek Kotewicz
de4ea8e6f4 Merge commit 'd876522bc0614fea3180a54be57bcb61784b352e' into ethereumjs 2015-01-16 12:07:48 +01:00
Marek Kotewicz
2c36d5ff45 big integers on abi.js output, tests 2015-01-16 11:58:26 +01:00
Marek Kotewicz
f1295b506d tests for bigintegers on input 2015-01-16 11:28:46 +01:00
Marek Kotewicz
fbcc6d0d25 BigNumber support 2015-01-16 10:47:43 +01:00
Felix Lange
fc92abec2c rlp: allow encoding non-empty interface values
This needs to be supported because []someInterface does occur sometimes.

Funny enough, the fix involves changes to the decoder. makeDecoder
cannot return an error for non-empty interfaces anymore because the type
cache builds both decoder and writer. Do the check at 'runtime' instead.
2015-01-15 23:35:26 +01:00
Jeffrey Wilcke
52bb149541 Merge pull request #257 from fjl/rlp-encoder
rlp: add functions for encoding
2015-01-15 22:28:48 +01:00
Gustav Simonsson
9caf32befe Update code comments 2015-01-15 19:58:38 +01:00
Gustav Simonsson
47d3b3dd58 Address pull request comments
* Remove flags field from key struct
* Change JSON struct fields from string to []byte
* Change GenerateNewKey API to take io.Reader for random source
* Remove mixing entropy source function
* Use testing Fatal in tests
2015-01-15 19:40:10 +01:00
Gustav Simonsson
a1c2749380 Address pull request comments
* Simplify scrypt constants with const block
* Add key store constructors and make their types private
* Simplify key store and file namings to be less Java Enterprise™
* Change test error logging to use t.Error(err)
* Reduce number of naked returns (just like my ex-gf)
* Simplify file reading path code
2015-01-15 19:40:10 +01:00
Gustav Simonsson
945798f913 Add new key_store interface and two new key stores
* Add new generic key_store interface
* Add new plaintext key store storing unprotected keys on disk
* Add new encrypted key store storing encrypted keys on disk
* Add new entropy mixing function using OS and go runtime sources
2015-01-15 19:40:10 +01:00
Marek Kotewicz
6d02c0d392 Merge commit '1a6dbeff6e86d65cae6d7db366cbaa4182eaff7f' into ethereumjs
Conflicts:
	libjsqrc/ethereumjs/dist/ethereum.js
	libjsqrc/ethereumjs/dist/ethereum.js.map
	libjsqrc/ethereumjs/dist/ethereum.min.js
	libjsqrc/ethereumjs/lib/abi.js
2015-01-15 17:27:07 +01:00
Marek Kotewicz
ec74fc05d4 gulp 2015-01-15 16:01:58 +01:00
Marek Kotewicz
46b932ccc0 negative integers support 2015-01-15 15:51:25 +01:00
Marek Kotewicz
f85f77f6cc fixed typos 2015-01-15 14:37:18 +01:00
Marek Kotewicz
6a4b4f3449 fixed readme 2015-01-15 14:30:34 +01:00
Marek Kotewicz
d0473d6d83 gulp 2015-01-15 11:40:04 +01:00
Marek Kotewicz
70bf1a5711 fixed typos 2015-01-15 11:39:02 +01:00
Marek Kotewicz
bacc5aa6d3 methodExists and propertyExists are now separated tests 2015-01-15 11:38:21 +01:00
CJentzsch
44a12cd070 python fail callcode (insufficient balance) 2015-01-15 11:13:20 +01:00
Felix Lange
29c46cdf34 rlp: fix Decode benchmarks 2015-01-15 11:12:39 +01:00
Felix Lange
552f5b2693 rlp: add functions for encoding
I'm reasonably confident that the encoding matches the output of
ethutil.Encode for values that it supports. Some of the tests have been
adpated from the Ethereum testing repository.

There are still TODOs in the code.
2015-01-15 11:00:19 +01:00
obscuren
d5d9746ca3 updated tests 2015-01-15 10:46:42 +01:00
CJentzsch
1287fc3266 add test with large data in callcreate 2015-01-15 09:47:55 +01:00
Lefteris Karapetsas
508f116738 Merge pull request #798 from LefterisJP/natspec_OnContractCreation
Natspec Popup Authentication on transaction
2015-01-15 01:37:52 +01:00
CJentzsch
a5946a969f update vmSystemOperationsTest 2015-01-14 22:38:33 +01:00
Marek Kotewicz
472ad43211 more comments 2015-01-14 20:36:26 +01:00
Marek Kotewicz
603c790213 next part of abi.js parsers tests and fixes 2015-01-14 20:29:20 +01:00
obscuren
62e0e18030 Changed public whisper api not to reveal temporary private keys 2015-01-14 18:12:18 +01:00
sveneh
6bb10ccc3b fixed testrunner 2015-01-14 18:06:28 +01:00
CJentzsch
d30ca5aa8c added a inputLimits tests (46725 test cases) 2015-01-14 17:55:49 +01:00
CJentzsch
489994054a re-add vmSystemOperationsTest 2015-01-14 17:53:26 +01:00
sveneh
fffd981058 uses docker in tesrunner 2015-01-14 17:53:13 +01:00
sveneh
9326d0a6dd Dockers for go, cpp 2015-01-14 17:03:37 +01:00
sveneh
74faa30af6 first version of automatic testrunner deployment. Uses ansible, vagrant
and virtualbox
2015-01-14 16:10:33 +01:00
Marek Kotewicz
b0a9bbf33a next part of abi.js docs 2015-01-14 14:19:54 +01:00
Marek Kotewicz
6b2ec23132 formatting bool tests and fixes 2015-01-14 14:06:29 +01:00
Marek Kotewicz
ed1cb9edca simplifid abi.js methods 2015-01-14 13:53:40 +01:00
Marek Kotewicz
17f2f12ce6 gulp 2015-01-14 12:01:24 +01:00
Marek Kotewicz
12bdb5f550 providers documentation 2015-01-14 12:01:11 +01:00
Marek Kotewicz
8d1f96cc0a few comments 2015-01-14 10:50:34 +01:00
Lefteris Karapetsas
a4049fb85c Cleaned up some unused functions 2015-01-14 09:28:52 +01:00
CJentzsch
762a93fec8 python fail 2015-01-14 09:21:49 +01:00
CJentzsch
f9e891909d cppjit failing on byte? 2015-01-14 09:15:47 +01:00
CJentzsch
a6e9bab298 python fail 2015-01-13 23:07:09 +01:00
CJentzsch
3f5a075280 python fail 2015-01-13 22:45:12 +01:00
obscuren
bb55307a9d Updated tests 2015-01-13 20:31:31 +01:00
Marek Kotewicz
422dc05bb0 ProviderManager separated to providermanager.js file 2015-01-13 18:40:01 +01:00
CJentzsch
ebf4686858 go create return different address 2015-01-13 18:30:26 +01:00
Marek Kotewicz
9a8f45ee30 Filter separated to filter.js file 2015-01-13 18:28:49 +01:00
CJentzsch
aca3181b7e more cpp-jit fails 2015-01-13 18:28:18 +01:00
CJentzsch
fd0230e5be cppjit fail 2015-01-13 18:20:08 +01:00
CJentzsch
0d25bb85d9 cpp-jit fail 2015-01-13 18:13:52 +01:00
Lefteris Karapetsas
dac93ed616 Natspechandler: Get function hash from transaction data 2015-01-13 17:54:09 +01:00
Marek Kotewicz
8b7d4b0c9e beginning of comments in web3 2015-01-13 17:05:05 +01:00
Taylor Gerring
499bc404e8 Stub missing UnmarshalJSON methods 2015-01-13 09:37:30 -06:00
Taylor Gerring
a81d835e4d cleanup 2015-01-13 09:37:08 -06:00
CJentzsch
54eaf239ac more failing tests 2015-01-13 16:29:04 +01:00
Taylor Gerring
961e4da7d8 Add support for CodeAt 2015-01-13 09:27:36 -06:00
Taylor Gerring
b178414a47 Added license headers 2015-01-13 09:13:43 -06:00
Lefteris Karapetsas
f54c90a0ba A first version of Natspec warning popup
- Runtime Contract code hash can now be retrieved from the Compiler

- Using the hash the Natspec handler stores and later retrieves Natspec
  JSON for a given contract.
2015-01-13 15:59:42 +01:00
Marek Kotewicz
ee167e53d1 test for parsing multiple methods description 2015-01-13 15:42:56 +01:00
obscuren
8f733461b3 Default datadir for mist is now shared with CLI (.ethereum) 2015-01-13 14:58:12 +01:00
obscuren
82beaabf6a Fixed consensus issue 2015-01-13 14:57:51 +01:00
CJentzsch
8d7ddf5299 new cppjit failures 2015-01-13 14:54:39 +01:00
CJentzsch
6fd011a3b6 cppjit fail 2015-01-13 14:16:47 +01:00
Marek Kotewicz
4056c046a7 tests... 2015-01-13 13:47:31 +01:00
obscuren
e3cad04dec Fixed whisper messages
* Whisper protocol wasn't properly suppling envelope slices
* Message history wasn't properly propagated
* Added 'Messages' method, filtering any current envelope with the
  supplied filter.
2015-01-13 13:36:44 +01:00
CJentzsch
a9930bfd87 first failing cppjit tests 2015-01-13 13:32:26 +01:00
Marek Kotewicz
1428dcee21 web3.contract -> web3.eth.contract 2015-01-13 13:03:40 +01:00
Marek Kotewicz
f3b71a73e3 removed unused line 2015-01-13 12:51:23 +01:00
Marek Kotewicz
380d9862c3 tests in progress, fixed utf characters conversion in toAscii 2015-01-13 12:49:10 +01:00
Gav Wood
b6c0e53d69 Auto-generated commits, too. 2015-01-13 11:06:43 +00:00
Gav Wood
e95bb34ea0 Fix for JS API formatting. 2015-01-13 11:04:31 +00:00
Marek Kotewicz
9e0de57a82 mocha test reporter 2015-01-13 11:29:19 +01:00
Marek Kotewicz
f6ff1f18b8 mocha reporter name starts with lower case letter 2015-01-13 11:21:58 +01:00
Marek Kotewicz
7595a5dfcb removed padding calculation from ethereum.js, padding is always 32 2015-01-13 11:15:44 +01:00
obscuren
1e5353824a updated tests 2015-01-13 10:32:02 +01:00
obscuren
4704a0a288 remove pre compiled for tests 2015-01-13 10:30:52 +01:00
CJentzsch
6a2e82a23d python failures, blockhash, invalid jump, invalid opcode 2015-01-13 09:17:56 +01:00
CJentzsch
1818dffaec call to precompiled contract and balance 2015-01-13 08:44:44 +01:00
Taylor Gerring
b2112729fa cleanup 2015-01-12 23:44:56 -06:00
Taylor Gerring
32bed50ba1 begin conversion to rpc over http
Per specification at
https://github.com/ethereum/wiki/wiki/Generic-JSON-RPC
2015-01-12 23:25:29 -06:00
Jeffrey Wilcke
5b561f434d Merge pull request #254 from chfast/pr/jitvm_stub
JitVm struct stub. Forwards calls to DebugVm.
2015-01-13 00:29:41 +01:00
obscuren
750d70c202 updated tests 2015-01-13 00:25:45 +01:00
obscuren
34689cb3f3 Added manual triggering of filters 2015-01-12 20:36:45 +01:00
Paweł Bylica
ba225017c4 JitVm struct stub. Forwards calls to DebugVm. 2015-01-12 19:40:14 +01:00
Jeffrey Wilcke
507241f73c shh getMessage => getMessages 2015-01-12 18:34:37 +01:00
CJentzsch
55c689722a addmod mulmod div by zero tests 2015-01-12 16:25:37 +01:00
obscuren
8a1b51c716 updated tests 2015-01-12 16:13:30 +01:00
CJentzsch
dfe77eac84 remove wrong mulmod/addmod tests 2015-01-12 16:09:51 +01:00
obscuren
75cd9cd2de updated tests 2015-01-12 14:40:40 +01:00
CJentzsch
1aebe33a34 ADDMOD and MULMOD divison by zero 2015-01-12 14:27:08 +01:00
CJentzsch
d70a30c056 MULMOD with modul 0 gives division by zero error 2015-01-12 13:55:00 +01:00
obscuren
00348756bc updated tests 2015-01-12 13:49:47 +01:00
CJentzsch
2577b803f6 create should return 0 2015-01-12 13:22:18 +01:00
CJentzsch
928dde590c create with high value should fail and return 0 2015-01-12 13:08:43 +01:00
CJentzsch
5fbb24353a include invalid opcode 0x0c 2015-01-12 12:00:02 +01:00
obscuren
35fe4313d5 pre-pow 2015-01-12 10:19:27 +01:00
CJentzsch
9f0c292144 jump outside code 2015-01-12 09:36:56 +01:00
CJentzsch
d812c685c9 CODECOPY with size larger than codesize 2015-01-12 09:10:11 +01:00
Gav Wood
9a9987aeed Merge commit 'a1023a5dffee7c06e8b75a21f5c9b8826e820942' into develop
Conflicts:
	libjsqrc/ethereumjs/dist/ethereum.js.map
2015-01-11 18:18:05 +01:00
Gav Wood
5582901ca5 Various fixes to ethereum.js and client web API stuff. 2015-01-11 18:15:35 +01:00
Gav Wood
ded221fba2 Merge commit 'ab745d3b0eb89d67db1ed953020c665be3d072ed' into develop
Conflicts:
	libjsqrc/ethereumjs/.travis.yml
	libjsqrc/ethereumjs/README.md
	libjsqrc/ethereumjs/dist/ethereum.js
	libjsqrc/ethereumjs/dist/ethereum.js.map
	libjsqrc/ethereumjs/lib/abi.js
	libjsqrc/ethereumjs/package.json
2015-01-11 17:54:36 +01:00
Marek Kotewicz
ab745d3b0e updated readme 2015-01-11 17:23:03 +01:00
Marek Kotewicz
b915c7a870 updated readme 2015-01-11 17:13:32 +01:00
Marek Kotewicz
6c26255979 Merge branch 'tests' into develop 2015-01-11 17:12:37 +01:00
Marek Kotewicz
e2c4525da7 Merge branch 'master' into develop 2015-01-11 17:12:29 +01:00
Marek Kotewicz
e778e127d6 spec reporter instead of nyan 2015-01-11 17:04:30 +01:00
Marek Kotewicz
a4e6f0b3c6 fixed travis.yml && added nmp test script 2015-01-11 16:40:09 +01:00
Marek Kotewicz
048e7771fb Merge branch 'master' into tests 2015-01-11 16:36:38 +01:00
Marek Kotewicz
15c229300c updated package json 2015-01-11 16:36:07 +01:00
Marek Kotewicz
24814a4f0f Merge branch 'master' of https://github.com/ethereum/ethereum.js 2015-01-11 16:33:08 +01:00
Marek Kotewicz
6188e64473 Update README.md 2015-01-11 16:25:41 +01:00
Marek Kotewicz
c34b0c67a1 Update README.md 2015-01-11 16:23:06 +01:00
CJentzsch
a0008c3508 correct CREATE with zero sized init code 2015-01-10 23:51:54 +01:00
obscuren
7e6b72cb5c removed accidental qt dep 2015-01-10 18:09:57 +01:00
obscuren
e3da85faed Implemented filter for ws + fixes
* proper 0xhex
* filters fixed
* start of filter manager
* accounts for ws. Closes #246
2015-01-10 00:51:56 +01:00
obscuren
491c23a728 Moved the TD method from block processor. 2015-01-09 22:42:36 +01:00
obscuren
351516c57c Cast to string for hashable type 2015-01-09 22:23:33 +01:00
CJentzsch
e8a131e05c remove wrong tests 2015-01-09 21:38:57 +01:00
obscuren
8c7b764d47 updated tests 2015-01-09 21:18:34 +01:00
CJentzsch
bf798c8dec wrong memmory needed calculation for CREATE in cpp 2015-01-09 20:39:00 +01:00
CJentzsch
53dbdf3dd2 return input offset 2015-01-09 19:16:52 +01:00
obscuren
905b8cc82f mem fixes for vm. Changed uncle inclusion tests 2015-01-09 17:38:35 +01:00
CJentzsch
c674306973 big offset zero size for create 2015-01-09 17:33:41 +01:00
Marek Kotewicz
47687cf085 default padding changed to 0 2015-01-09 17:27:56 +01:00
CJentzsch
314220a00d big offset zero size for sha3 and return 2015-01-09 17:06:53 +01:00
Marek Kotewicz
29c60c000a Merge branch 'develop' into tests 2015-01-09 16:48:44 +01:00
obscuren
35f4bb96f3 Limit hashes. Closes #249 2015-01-09 16:44:09 +01:00
Marek Kotewicz
92f171ec99 rerun gulp 2015-01-09 16:40:55 +01:00
Marek Kotewicz
0933a79ab8 missing fromAscii 2015-01-09 16:38:26 +01:00
obscuren
b136b387a7 Merge branch 'ethersphere-develop' into develop 2015-01-09 16:34:49 +01:00
CJentzsch
dd866afc2e LOG0 no mem expansion despite large offset 2015-01-09 15:46:00 +01:00
obscuren
6eb455032c recover 2015-01-09 15:32:14 +01:00
obscuren
5c8c0ae04e Fixed size 0 bug 2015-01-09 15:30:46 +01:00
obscuren
a35be3a12a Merge branch 'develop' of https://github.com/ethersphere/go-ethereum into ethersphere-develop 2015-01-09 13:37:15 +01:00
obscuren
f9b0d1a8e7 Updated to new ethereum.js api 2015-01-09 13:36:47 +01:00
Marek Kotewicz
543a87c63f method signature length defined 2015-01-09 13:30:14 +01:00
obscuren
c9f566269b merged 2015-01-09 13:28:48 +01:00
obscuren
bfa12d75f8 new switch 2015-01-09 13:26:49 +01:00
Marek Kotewicz
b3eda29f41 Merge branch 'master' into tests 2015-01-09 13:07:34 +01:00
obscuren
18d8bf4b9c updated ethereum.js 2015-01-09 13:01:21 +01:00
obscuren
aee82d3196 removed 2015-01-09 13:00:37 +01:00
Marek Kotewicz
a5907a8239 Merge branch 'master' of https://github.com/ethereum/ethereum.js 2015-01-09 12:57:03 +01:00
Marek Kotewicz
2a6c84984a version upgraded 2015-01-09 12:55:46 +01:00
Marek Kotewicz
0538c11576 sha3 method signature 2015-01-09 12:55:04 +01:00
obscuren
012a1c2533 Updated ethereum.js 2015-01-09 12:45:09 +01:00
Jeffrey Wilcke
c9015e2e04 module var fix 2015-01-09 12:44:11 +01:00
Jeffrey Wilcke
07fba274b1 module var fix 2015-01-09 12:43:45 +01:00
obscuren
585f259b63 Support input from args 2015-01-09 12:04:54 +01:00
CJentzsch
b227000f19 add blockhash vm tests 2015-01-09 10:56:40 +01:00
zelig
b3161f5803 Merge remote-tracking branch 'upstream/develop' into develop 2015-01-09 06:21:47 +00:00
zelig
5a9952c7b4 major blockpool change
- the spec says response to getBlockHashes(from, max) should return all hashes starting from PARENT of from. This required major changes and results in much hackier code.
- Introduced a first round block request after peer introduces with current head, so that hashes can be linked to the head
- peerInfo records currentBlockHash, currentBlock, parentHash and headSection
- AddBlockHashes checks header section and creates the top node from the peerInfo of the best peer
- AddBlock checks peerInfo and updates the block there rather than in a node
- request further hashes once a section is created but then no more until the root block is found (so that we know when to stop asking)
- in processSection, when root node is checked and receives a block, we need to check if the section has a parent known to blockchain or blockPool
- when peers are switched, new peer launches a new requestHeadSection loop or activates its actual head section, i.e., the section for it currentBlockHash
- all tests pass
2015-01-09 06:03:45 +00:00
zelig
8ecc9509b3 add ErrInsufficientChainInfo error 2015-01-09 06:03:32 +00:00
zelig
f72cb28b0f adapt unit tests to spec
- AddBlockHashes ignores the first hash (just used to match getBlockHashes query) sends the rest as blocksMsg
- new test TestPeerWithKnownParentBlock
- new test TestChainConnectingWithParentHash
- adapt all other tests to the new scheme
2015-01-09 05:57:09 +00:00
zelig
43ed0ed1ae no need to call AddBlockHashes when receiving new block 2015-01-09 05:06:04 +00:00
zelig
69dfca2feb minor changes in integration tests 2015-01-09 05:04:32 +00:00
zelig
3bdf28c1fe GetBlockHashesFromHash(hash, max) gives back max hashes starting from PARENT of hash 2015-01-09 05:03:26 +00:00
obscuren
c8a4c04b36 err 2015-01-08 23:15:46 +01:00
CJentzsch
ac2ce00e28 add random test which fail on go 2015-01-08 22:41:40 +01:00
obscuren
26f066f0c7 just enable by default 2015-01-08 22:18:23 +01:00
CJentzsch
f73731d5a4 failing python tests 2015-01-08 22:10:55 +01:00
obscuren
4a0ade4788 Fixed some whisper issues 2015-01-08 21:41:32 +01:00
Marek Kotewicz
c397e350f4 mocha opts file && init of parser tests 2015-01-08 20:24:30 +01:00
Marek Kotewicz
b6058a837f methods existance tests in progress 2015-01-08 19:59:03 +01:00
Marek Kotewicz
5518022a5d mocha test init 2015-01-08 19:35:32 +01:00
obscuren
5f958a582d fixed other tests to use hashes as well 2015-01-08 16:48:39 +01:00
obscuren
e27237a03a Changed to use hash for comparison
DeepReflect would fail on TD since TD isn't included in the original
block and thus the test would fail.
2015-01-08 16:45:51 +01:00
CJentzsch
9b9f7cffde long jumpdest list 2015-01-08 16:39:57 +01:00
obscuren
ee84b20247 Reworking GUI interaction. Fixed javascript inject. Closes #132 2015-01-08 16:38:24 +01:00
obscuren
b25126a277 Minor fixed and additions for block proc
* Path check length
* Genesis include TD
* Output TD on last block
2015-01-08 16:37:06 +01:00
Marek Kotewicz
807ec60e63 missing jshint ignore 2015-01-08 15:43:22 +01:00
Marek Kotewicz
f9cc090473 fixed example 2015-01-08 15:31:46 +01:00
CJentzsch
eb3451142e sdiv int256.min -1 2015-01-08 15:29:07 +01:00
CJentzsch
73ba8a48ab sdiv with negative fractional result 2015-01-08 15:14:20 +01:00
Marek Kotewicz
2f3384947b version upgrade 2015-01-08 15:13:43 +01:00
Marek Kotewicz
a8dde17146 fixes for node.js 2015-01-08 15:11:20 +01:00
CJentzsch
1ad28d0494 add valid jumpdest with jumpdest at beginning 2015-01-08 13:04:29 +01:00
obscuren
db4aaedcbd Moved ptrie => trie. Removed old trie 2015-01-08 11:47:04 +01:00
CJentzsch
08a72727cd more dynamic jump tests 2015-01-08 11:23:39 +01:00
CJentzsch
0aa66f02ef jump into push data is forbidden 2015-01-07 22:33:25 +01:00
CJentzsch
b94c610e49 jumpdests tests, OOG at max call depth, ... 2015-01-07 15:54:14 +01:00
Marek Kotewicz
5208bb32f1 gulpfile modifications, default build set to dev 2015-01-07 14:13:29 +01:00
obscuren
982c812e81 Read directly from stdin 2015-01-07 13:38:28 +01:00
obscuren
c1908c7d91 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-01-07 13:22:29 +01:00
Jeffrey Wilcke
59c5a2f519 Merge pull request #244 from fjl/license-tool
Generated License Headers
2015-01-07 13:22:22 +01:00
Felix Lange
1d05027ba2 a few fixes for the license tool 2015-01-07 13:17:50 +01:00
obscuren
fed3e6a808 Refactored ethutil.Config.Db out 2015-01-07 13:17:48 +01:00
Felix Lange
ec7cb9981c add license tool and initial mailmap 2015-01-07 12:56:46 +01:00
CJentzsch
99e6e00c34 check address input greater then 2**160 2015-01-07 11:17:09 +01:00
Marek Kotewicz
df4d7846e5 Merge pull request #22 from debris/strings
strings, real, ureal paddings and implicit paddings for uint, int and hash
2015-01-07 11:16:46 +01:00
Marek Kotewicz
6c160adab3 Merge pull request #21 from debris/master
fixed gulp build
2015-01-07 11:16:27 +01:00
CJentzsch
55f6fe4f7b check address input greater then 2**160 2015-01-07 11:16:09 +01:00
obscuren
032ab66529 Added version flag 2015-01-07 01:21:55 +01:00
obscuren
60d9611c23 Fixed tests where txs weren't properly removed 2015-01-07 01:21:45 +01:00
Marek Kotewicz
210682b734 real, ureal paddings and implicit paddings for uint, int and hash 2015-01-06 21:50:09 +01:00
obscuren
f0ec751237 Updated tests 2015-01-06 20:22:31 +01:00
CJentzsch
6ce9799370 added BlockHash tests 2015-01-06 20:21:11 +01:00
Marek Kotewicz
1d139f7a0b solidity string support 2015-01-06 18:29:38 +01:00
CJentzsch
93bf0d6f4e zeroMemExpansionTests 2015-01-06 16:33:47 +01:00
CJentzsch
dc087ffa97 more jumpdest test 2015-01-06 14:48:57 +01:00
obscuren
25e6c4eff8 Adjusted difficulty and skip get tx messages 2015-01-06 14:02:47 +01:00
obscuren
a76b7dadae Don't auto push jeff ... 2015-01-06 13:39:01 +01:00
Marek Kotewicz
b6232cfdd1 fixed tabs 2015-01-06 13:37:02 +01:00
Marek Kotewicz
a2a77172a6 bring back todos 2015-01-06 13:32:04 +01:00
obscuren
1b903767e0 Fixed port num 2015-01-06 13:31:52 +01:00
obscuren
4e7f53adf0 Changed to poc-8 & removed GetTxs 2015-01-06 13:31:08 +01:00
Marek Kotewicz
8c1b26889a renamed example/index.html -> example/balance.html 2015-01-06 13:27:43 +01:00
Marek Kotewicz
af9242f4cc fixed gulp build 2015-01-06 13:26:51 +01:00
obscuren
564f02aa2b Fixed tests 2015-01-06 13:18:09 +01:00
Jeffrey Wilcke
3b8725e0f5 Merge pull request #239 from fjl/grab-bag
Grab bag of fixes
2015-01-06 13:13:16 +01:00
Felix Lange
3caa4ad1ba p2p: improve test for peers message
The test now checks that the number of of addresses is correct
and terminates cleanly.
2015-01-06 12:23:38 +01:00
Felix Lange
b0ff946b55 p2p: move peerList back into baseProtocol
It had been moved to Peer, probably for debugging.
2015-01-06 12:23:38 +01:00
Felix Lange
eb0e7b1b81 eth, p2p: remove EncodeMsg from p2p.MsgWriter
...and make it a top-level function instead.

The original idea behind having EncodeMsg in the interface was that
implementations might be able to encode RLP data to their underlying
writer directly instead of buffering the encoded data. The encoder
will buffer anyway, so that doesn't matter anymore.

Given the recent problems with EncodeMsg (copy-pasted implementation
bug) I'd rather implement once, correctly.
2015-01-06 12:23:38 +01:00
Felix Lange
36e1e5f151 cmd/peerserver: add some command line switches 2015-01-06 12:23:37 +01:00
Felix Lange
4c8c115a76 cmd/peerserver: use NoDial, don't use seed peers 2015-01-06 12:23:37 +01:00
Felix Lange
545e14691b cmd/peerserver: fix for new client identity type 2015-01-06 12:23:37 +01:00
Felix Lange
be97785856 cmd/evm: add dummy implementation for GetHash
Fixes the build. AFAIK evm does not bother keeping a chain and
cannot provide a real implementation.
2015-01-06 12:23:37 +01:00
Felix Lange
fde0ddb324 cmd/rlpdump: remove stray return 2015-01-06 12:23:36 +01:00
obscuren
117f66e823 Added license headers 2015-01-06 12:13:57 +01:00
CJentzsch
63d61cb380 added blockhash tests which return 0 2015-01-06 11:50:57 +01:00
obscuren
a26aecdfdb Updated WS API. Fixes #219. Closes #220 2015-01-06 11:44:22 +01:00
obscuren
47e6b2cef8 Allow extra to be set for mined blocks 2015-01-06 00:19:07 +01:00
obscuren
cc7f8f58e8 Limit block extra to 1024 2015-01-06 00:17:05 +01:00
obscuren
c9985bf563 Fixed peer window. Minor tweaks and fixes 2015-01-05 19:53:53 +01:00
Jeffrey Wilcke
22c0c5465a Merge pull request #235 from fjl/rlpdump
fixes for rlpdump
2015-01-05 17:48:04 +01:00
Jeffrey Wilcke
2cfbf76db8 Merge pull request #233 from fjl/rlpdump
cmd/rlpdump: new helper command
2015-01-05 17:42:52 +01:00
Felix Lange
ec4dee0fcd cmd/rlpdump: remove extra buffer 2015-01-05 17:42:20 +01:00
obscuren
952287db29 Updated tests 2015-01-05 17:40:23 +01:00
obscuren
b99b2c446c Precompiled contract & Depth change
* Added pre-compiled contract 0x04 (mem cpy)
* Changed depth error to return the gas instead of consuming
2015-01-05 17:39:42 +01:00
Felix Lange
04c0f7e15c cmd/rlpdump: add license header and synopsis 2015-01-05 17:38:39 +01:00
CJentzsch
128d417f47 protocol update about call depth 2015-01-05 17:26:11 +01:00
obscuren
d001479a47 unclean shutdown for now 2015-01-05 17:15:25 +01:00
obscuren
f16810c48e added shh back in 2015-01-05 17:12:52 +01:00
obscuren
66b05433b6 Merge branch 'ethersphere-eth.blockpool' into poc8 2015-01-05 17:12:19 +01:00
obscuren
6abf8ef78f Merge 2015-01-05 17:10:42 +01:00
Felix Lange
b907a5d765 cmd/rlpdump: new helper command 2015-01-05 13:45:38 +01:00
CJentzsch
0ace267c4f clear random tests due to protocol changes 2015-01-05 13:37:01 +01:00
obscuren
b0854fbff5 BlockManager => BlockProcessor 2015-01-05 11:22:02 +01:00
obscuren
c1dee15144 BlockManager => BlockProcessor 2015-01-05 00:18:44 +01:00
obscuren
987119cd4a Merge branch 'poc8' into docbranch 2015-01-04 14:39:15 +01:00
obscuren
08b03afa4b Version bump 2015-01-04 14:34:04 +01:00
obscuren
09841b1c9b Cleaned up some of that util 2015-01-04 14:20:16 +01:00
obscuren
bd0c267cbe Cleanup old code 2015-01-03 17:29:08 +01:00
obscuren
ca1b2a1a91 Changed prev_hash to block_hash, state transition now uses vm env
* PREVHASH => BLOCKHASH( N )
* State transition object uses VMEnv as it's query interface
* Updated vm.Enviroment has GetHash( n ) for BLOCKHASH instruction
* Added GetHash to xeth, core, utils & test environments
2015-01-03 17:18:43 +01:00
obscuren
1b90567546 Merge branch 'docbranch' of github.com-obscure:ethereum/go-ethereum into docbranch 2015-01-03 12:41:19 +01:00
obscuren
16f417f5af Fixed bug where logging could crash client during tx adding 2015-01-02 22:19:58 +01:00
obscuren
5c82fdc243 Make sure that the object exists 2015-01-02 22:18:23 +01:00
obscuren
55e55826ee Changed JUMP(I) behaviour.
* All jumps must land on a JUMPDEST instruction byte.
* The byte may not be part of a PUSH*
2015-01-02 17:35:55 +01:00
obscuren
530953050a Updated protocol version 2015-01-02 17:35:00 +01:00
obscuren
24f89f8bd9 Squashed commit of the following:
commit 2e75a216c7
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Fri Jan 2 17:05:20 2015 +0100

    new jumpdest interpretation

commit 7aab71f656
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Fri Jan 2 16:55:59 2015 +0100

    added complete exp tests

commit 3340f4dbfc
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Fri Jan 2 14:26:55 2015 +0100

    retuning gas prices of recursive bombs to test limits

commit 456b5791bb
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Fri Jan 2 14:08:55 2015 +0100

    more init code, systemoperations and transaction tests

commit 1f5552feb4
Author: wanderer <mjbecze@gmail.com>
Date:   Mon Dec 29 20:11:41 2014 -0500

    added balance tests

commit 4d37c1cea2
Author: wanderer <mjbecze@gmail.com>
Date:   Sat Dec 27 20:30:42 2014 -0500

    added trie tests for branches on
    detel

commit 2fdc7bfbd1
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Sat Dec 27 22:46:21 2014 +0100

    more random tests

commit 98fe404e6a
Merge: aafb5f7 8c34e93
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Tue Dec 23 16:36:13 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit aafb5f768b
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Tue Dec 23 16:35:35 2014 +0100

    first failing random tests

commit 8c34e93b51
Author: wanderer <mjbecze@gmail.com>
Date:   Tue Dec 23 10:01:20 2014 -0500

    added stackOverFlow test to initCode

commit 8a285d258a
Merge: a4ccc6e 6567f9d
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Sat Dec 20 13:08:18 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit a4ccc6e72e
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Sat Dec 20 13:07:54 2014 +0100

    CALLCODE <-> RETURN

commit 6567f9d0b2
Author: wanderer <mjbecze@gmail.com>
Date:   Thu Dec 18 23:39:30 2014 -0500

    add refund tests

commit 07cfec33f8
Author: wanderer <mjbecze@gmail.com>
Date:   Thu Dec 18 18:30:46 2014 -0500

    added trieTest anyorder

commit 86c3b8cfad
Merge: b227b10 71b5d6e
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 18 21:43:06 2014 +0100

    Merge branch 'develop' of https://github.com/ethereum/tests into develop

commit b227b10f5d
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 18 21:42:41 2014 +0100

    more refund tests

commit 71b5d6e0a3
Author: wanderer <mjbecze@gmail.com>
Date:   Thu Dec 18 12:13:55 2014 -0500

    updated index.js

commit aefcb9716e
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 18 09:31:43 2014 +0100

    transaction tests and refund tests

commit ccbf120c36
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Sat Dec 13 23:03:21 2014 +0100

    added stInitCodeTest.json

commit cbf5afdef8
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Fri Dec 12 22:03:54 2014 +0100

    update recursive create

commit a70c4b51a4
Author: Gav Wood <i@gavwood.com>
Date:   Fri Dec 12 17:22:41 2014 +0100

    Fix return tests.

commit f146467607
Author: Gav Wood <i@gavwood.com>
Date:   Fri Dec 12 16:33:51 2014 +0100

    Add test file.

commit c2bd8d1d7a
Author: Gav Wood <i@gavwood.com>
Date:   Fri Dec 12 14:27:38 2014 +0100

    Alter "" to null.

commit ce6344b770
Author: Gav Wood <i@gavwood.com>
Date:   Fri Dec 12 14:22:19 2014 +0100

    Trie testing.

commit 779f25d36c
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 11 22:59:56 2014 +0100

    first random test

commit 68175386c0
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 11 21:34:50 2014 +0100

    update gas prices

commit ad322fbb58
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Mon Dec 8 06:01:17 2014 +0100

    Log as array

commit f989f42618
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Fri Dec 5 15:12:12 2014 +0100

    state log tests

commit 4bc65d1129
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 4 18:18:49 2014 +0100

    add calldataload, codecopy, extcodecopy tests

commit 12cfae18e3
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 4 15:57:56 2014 +0100

    add calldataload test

commit 086caf3701
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Wed Dec 3 08:31:03 2014 +0100

    protocol update (CALLCODE <-> RETURN), topics in log are arrays not sets

commit e6c92673b9
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Mon Dec 1 21:14:08 2014 +0100

    update state tests with logs

commit 4089b809fb
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Mon Dec 1 18:19:40 2014 +0100

    update gas costs

commit cfdca62277
Merge: 2e5175e f59f89d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Dec 1 18:04:51 2014 +0100

    Merge pull request #42 from negedzuregal/fix

    vmTest fix

commit f59f89d876
Author: alon muroch <alonmuroch@gmail.com>
Date:   Mon Dec 1 16:18:12 2014 +0100

    vmEnvironmentalInfoTest CALLDATACOPY, CODECOPY, EXTCODECOPY fix

commit 68da13fe3e
Author: alon muroch <alonmuroch@gmail.com>
Date:   Mon Dec 1 11:10:57 2014 +0100

    vmArithmeticTest exp fix

commit 2e5175e818
Author: ethers <ethereum@outlook.com>
Date:   Sun Nov 30 19:55:51 2014 +0100

    add vmLogTest

commit b5b9408e64
Author: Heiko Heiko <heiko@heiko.org>
Date:   Sun Nov 30 16:27:27 2014 +0100

    updated genesis to new header w/o min_gas_price

commit 8e69fbfa98
Author: ethers <ethereum@outlook.com>
Date:   Fri Nov 21 17:42:05 2014 -0800

    add special tests

commit 90f4f942e6
Author: ethers <ethereum@outlook.com>
Date:   Thu Nov 20 19:01:09 2014 -0800

    typo

commit c5e5228e0d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 20 17:04:06 2014 +0100

    Removed log,post,out,gas,callcreates if exception occured

commit 9c0232a2b9
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 19 18:19:05 2014 +0100

    MakeMoney test

commit 3ba0007e86
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 19 16:23:04 2014 +0100

    Added log sections in all vmtests + log tests

commit d84be4fe07
Merge: c8497ab 76d2542
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 19 10:00:24 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit c8497ab257
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 19 10:00:02 2014 +0100

    new push32 test and renaming

commit 76d25420e1
Author: ethers <ethereum@outlook.com>
Date:   Mon Nov 17 18:59:30 2014 -0800

    adding test

commit 0be275e757
Merge: 1d42d1d d90868c
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 17 22:47:34 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 1d42d1d7c6
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 17 22:46:51 2014 +0100

    fix ecrecover2

commit d90868c307
Merge: 1f38c8c 6dbcf6b
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 17 20:26:59 2014 +0100

    Merge pull request #39 from wanderer/develop

    added test for max call depth on creation

commit 6dbcf6b0d6
Author: wanderer <mjbecze@gmail.com>
Date:   Mon Nov 17 14:06:43 2014 -0500

    spelling fix

commit 6fc07a7f81
Author: wanderer <mjbecze@gmail.com>
Date:   Sat Nov 15 21:39:16 2014 -0500

    added test for max call depth on creation

commit 1f38c8c0a2
Merge: 279b284 cd85ca1
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Fri Nov 14 20:10:21 2014 -0500

    Merge pull request #38 from wanderer/develop

    updated test  'jeff' in trietest.json

commit cd85ca17ed
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Fri Nov 14 19:59:34 2014 -0500

    Update trietest.json

commit 279b284c0d
Merge: 89675a7 6cae937
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Fri Nov 14 17:43:49 2014 -0500

    Merge pull request #37 from wanderer/develop

    Update trietest.json

commit 6cae937e5e
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Fri Nov 14 17:20:03 2014 -0500

    Update trietest.json

    'emptyValues' should have the same root as 'puppy'

commit 89675a7153
Merge: f1de1cc 32f0c47
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 13 23:17:49 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit f1de1cc97a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 13 23:17:13 2014 +0100

    Fix CallRecursiveBomb2

commit 32f0c47c68
Merge: ab50e76 3da90d0
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Thu Nov 13 15:26:49 2014 -0500

    Merge pull request #36 from wanderer/develop

    converted back to arrary format

commit ab50e76652
Merge: d06b792 78f1e4a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 13 07:52:35 2014 +0100

    Merge pull request #35 from ethers/delOld

    rename tests since they are valid opcodes that exist

commit 3da90d01f6
Author: wanderer <mjbecze@gmail.com>
Date:   Wed Nov 12 22:22:47 2014 -0500

    converted back to arrary format

commit 78f1e4a945
Author: ethers <ethereum@outlook.com>
Date:   Wed Nov 12 19:11:06 2014 -0800

    rename tests since they are valid opcodes that exist

commit d06b792cd0
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 12 07:00:17 2014 +0100

    minor change in CallSha256_1_nonzeroValue test

commit d434ecdcc3
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 12 06:56:31 2014 +0100

    Added CallSha256_1_nonzeroValue test

commit 2c06f34cc0
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 11 18:10:26 2014 +0100

    Store return value of call to precompiled contracts

commit 4b0c3b29ae
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 11 17:51:14 2014 +0100

    Fix gas cost for OOG calls

commit 63bcca7604
Author: Heiko Heiko <heiko@heiko.org>
Date:   Tue Nov 11 08:59:19 2014 +0100

    fix: genesis test

commit 6e0310c1ea
Merge: 30c266c 2927763
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 11 08:34:36 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 30c266caff
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 11 08:33:59 2014 +0100

    jump to position outside code stops execution

commit 2927763d68
Author: ethers <ethereum@outlook.com>
Date:   Mon Nov 10 14:10:22 2014 -0800

    RandomTests were removed

commit a0fa91b2b8
Merge: 6092484 fcba866
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 10 22:22:05 2014 +0100

    Merge branch 'develop' of https://github.com/ethereum/tests into develop

commit 60924843f0
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 10 22:21:37 2014 +0100

    Unintended Exceptions work like OOG

commit fcba866721
Author: ethers <TODO>
Date:   Thu Nov 6 14:19:59 2014 -0800

    add StateTests

commit a441074ba4
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 17:54:36 2014 +0100

    Updated precompiled contracts test

commit 0afa72c82b
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 15:27:45 2014 +0100

    Added precompiledContracts tests

commit 6be83dd5a1
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 13:31:34 2014 +0100

    Update gas cost for PoC7

commit c18b8ab2d3
Merge: 66c2e1f 9a93258
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 09:19:53 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 66c2e1f642
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 09:19:22 2014 +0100

    Updated SIGNEXTEND tests

commit 9a9325822e
Author: ethers <TODO>
Date:   Wed Nov 5 16:20:26 2014 -0800

    part of 9b4e768 - Delete vmNamecoin.json

commit e229374f46
Merge: 189527e 9b4e768
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 20:59:49 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 189527e563
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 20:59:20 2014 +0100

    added dynamic jump out of code

commit 9b4e768995
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 20:41:54 2014 +0100

    Delete vmNamecoin.json

commit 4669b5694b
Merge: a567fed aaba185
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 15:00:12 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit a567fedaa7
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 14:59:08 2014 +0100

    added state systemOperationsTest

commit aaba185ceb
Merge: 79d7cbf fa782ae
Author: ethers <ethereum@outlook.com>
Date:   Tue Nov 4 12:15:40 2014 -0800

    Merge pull request #32 from ethers/indexjs

    updates needed per restructure

commit fa782aed93
Author: ethers <TODO>
Date:   Tue Nov 4 11:28:56 2014 -0800

    updates needed per restructure

commit 79d7cbfc4a
Merge: 9120274 1c1ba8d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 4 13:32:11 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 9120274a46
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 4 13:31:27 2014 +0100

    Update tests to latest protocol changes (PoC7)

commit 1c1ba8d161
Merge: 014d370 3aebe53
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 4 13:30:52 2014 +0100

    Merge pull request #31 from CJentzsch/develop

    Restructered tests in folders in accordance to test suites

commit 3aebe532e5
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:58:21 2014 +0100

    Updated vmNamecoin.json to new sstore prices

commit 8a0be21839
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:53:00 2014 +0100

    Added example state test

commit 83643addbc
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:36:25 2014 +0100

    removed systemoperationstests

commit 3930ca3a9a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:22:15 2014 +0100

    Restructered tests in folders in accordance to test suites

commit 014d370b5d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 29 21:23:56 2014 +0100

    New SIGNEXTEND tets

commit 155d449be2
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 29 20:59:05 2014 +0100

    New tests for BNOT and SIGNEXTEND

commit c9eae764b8
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 28 12:58:27 2014 +0100

    Update SSTORE gas cost and BNOT instead of NEG

commit ad2a75ac58
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Oct 23 16:05:49 2014 +0200

    Added new recursive bombs

commit 834c52af64
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Oct 23 12:01:05 2014 +0200

    Changing gas cost to zero at stackunderflow

commit c73a8a89d2
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Wed Oct 22 13:04:45 2014 +0200

    Reverted back to original value.

commit b9a8c92422
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Tue Oct 21 17:02:52 2014 -0400

    fix spelling error

commit b48ae74af4
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 21 17:26:26 2014 +0200

    Added failing random tests

commit bee0a4100c
Merge: 5050d20 b315da6
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 21 17:15:05 2014 +0200

    Merge remote-tracking branch 'origin/master' into develop

commit 5050d20b4d
Merge: 7516685 ba35362
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 20 20:18:20 2014 +0200

    Merge pull request #26 from wanderer/develop

    Add a package.json for node.js

commit ba35362876
Author: wanderer <mjbecze@gmail.com>
Date:   Sun Oct 19 23:59:47 2014 -0400

    turned tests into a node module

commit 751668571e
Author: ethers <ethereum@outlook.com>
Date:   Thu Oct 16 17:08:20 2014 -0700

    json was invalid and missing quotes

commit 0e687cee47
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Thu Oct 16 17:13:24 2014 +0200

    Update vmEnvironmentalInfoTest.json

commit 78a78e2e6c
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 15 14:19:11 2014 +0200

    updated genesis_hash

commit b315da618b
Merge: 7a7e198 0a76a3a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 14 10:33:26 2014 +0200

    Merge pull request #23 from ethers/fix22

    numbers should be strings #22

commit 0a76a3a312
Author: ethers <ethereum@outlook.com>
Date:   Mon Oct 13 14:45:30 2014 -0700

    numbers should be strings #22

commit 1f67385f13
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Oct 11 13:18:00 2014 +0200

    Added some MUL tests

commit 7a7e198395
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Oct 11 13:11:59 2014 +0200

    Added some MUL tests

commit 46eb6283ae
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Oct 11 12:18:13 2014 +0200

    tested new opcodes (JUMPDEST,CALLCODE) and created test for CALL/CREATE depth

commit 8d38d62d10
Author: Nick Savers <nicksavers@gmail.com>
Date:   Fri Oct 10 18:09:41 2014 +0200

    INVALID stops the operation and doesn't cost gas

commit ed6eba7c8e
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 8 19:08:48 2014 +0200

    Update + ABA recursive bomb which needs maximum recursion limit of 1024

commit 2d72050db1
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 8 14:37:18 2014 +0200

    Applied recent protocol changes (PoC7) to existin tests

commit dfe66cab3f
Merge: 4513623 1a67a96
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 8 11:05:51 2014 +0200

    Merge remote-tracking branch 'origin/develop'

    Conflicts:
    	genesishashestest.json

commit 1a67a96cff
Merge: a4f5f45 ffd6bc9
Author: vbuterin <v@buterin.com>
Date:   Tue Oct 7 15:10:23 2014 +0100

    Merge pull request #18 from CJentzsch/develop

    CallToNameRegistratorOutOfGas balance correction

commit ffd6bc97ad
Merge: a4f5f45 9779d67
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:47:34 2014 +0200

    Merge remote-tracking branch 'origin/develop' into develop

commit 9779d67b8c
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:45:53 2014 +0200

    CallToNameRegistratorOutOfGas balance correction

    Even if execution fails, the value gets transferred.

commit a4f5f45228
Merge: 49a9f47 b6d7cba
Author: vbuterin <v@buterin.com>
Date:   Tue Oct 7 14:13:12 2014 +0100

    Merge pull request #17 from CJentzsch/develop

    Added A calls B calls A contracts

commit b6d7cba499
Merge: 865cb40 49a9f47
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:02:51 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit 865cb4083d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:02:36 2014 +0200

    Added A calls B calls A contracts

commit 49a9f47aec
Merge: 3b0ec43 94a493b
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Tue Oct 7 10:56:17 2014 +0200

    Merge pull request #16 from CJentzsch/develop

    corrected amount of used gas for CallToNameRegistratorOutOfGas

commit 94a493b0d9
Merge: 72853c4 3b0ec43
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 10:51:32 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit 72853c4382
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 10:51:07 2014 +0200

    corrected amount of used gas for CallToNameRegistratorOutOfGas

commit 3b0ec436e4
Merge: aec3252 222068b
Author: vbuterin <v@buterin.com>
Date:   Tue Oct 7 05:52:43 2014 +0100

    Merge pull request #15 from CJentzsch/develop

    corrected tests and different style for storage

commit 222068b9ba
Merge: c169653 aec3252
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 21:17:28 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit c1696531a6
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 21:17:09 2014 +0200

    corrected tests and different style for storage

commit aec3252b8e
Merge: 25f9fd5 e17a909
Author: vbuterin <v@buterin.com>
Date:   Mon Oct 6 09:39:46 2014 +0100

    Merge pull request #14 from CJentzsch/develop

    corrected gas limit in vmSystemOperationsTest

commit e17a909f70
Merge: 33fcab5 25f9fd5
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 10:31:51 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit 33fcab5727
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 10:30:04 2014 +0200

    Bug fix, corrected gasLimit in vmSystemOperationsTest

commit 25f9fd542a
Author: Vitalik Buterin <v@buterin.com>
Date:   Sat Oct 4 15:47:00 2014 -0400

    one more vm test

commit 2d561a5373
Author: Vitalik Buterin <v@buterin.com>
Date:   Sat Oct 4 15:15:37 2014 -0400

    separated out vmtests

commit b0c48fa8d6
Merge: cb8261a 6cae166
Author: vbuterin <v@buterin.com>
Date:   Sat Oct 4 17:18:02 2014 +0100

    Merge pull request #13 from CJentzsch/develop

    Added comprehensive EVM test suite. All commands are tested.

commit 6cae166f6f
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 1 15:34:23 2014 +0200

    Delete tmp.json

commit 4ff906fbc2
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 1 14:06:32 2014 +0200

    corrected CALLSTATELESS tests

commit 5b3fee6806
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Sep 29 13:08:44 2014 +0200

    Completed vm tests. Added ADDMOD, MULMOD, POST, CALLSTATELESS

commit 9cdd218083
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Sep 27 21:48:09 2014 +0200

    Added IOandFlowOperation-, PushDupSwap- and SystemOperations- tests. Removed empty storage from adresses.

commit 28ed968b46
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Sep 23 15:49:22 2014 +0200

    Added blockInfoTest

commit ffbd5a35b5
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Sep 23 15:37:52 2014 +0200

    Added environmentalInfo- and sha3- test

commit 54c14f1ff3
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Sep 22 13:06:57 2014 +0200

    Added bitwise logic operation test

commit d0af113aab
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Sep 20 01:42:51 2014 +0200

    Added vm arithmetic test

commit cb8261a78b
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Fri Sep 19 13:15:44 2014 +0200

    Update genesishashestest.json

commit 4513623da1
Author: Maran <maran.hidskes@gmail.com>
Date:   Tue Jul 22 12:24:46 2014 +0200

    Update keyaddrtest to be valid JSON

commit e8cb5c221d
Author: Vitalik Buterin <v@buterin.com>
Date:   Mon Jul 21 23:30:33 2014 -0400

    Added next/prev trie test

commit 98823c04b3
Author: Vitalik Buterin <v@buterin.com>
Date:   Mon Jul 14 02:51:31 2014 -0400

    Replaced with deterministic test

commit 357eb21e4d
Author: Vitalik Buterin <v@buterin.com>
Date:   Sun Jul 13 16:12:56 2014 -0400

    Added my own random and namecoin tests (pyethereum)

commit 00cd0cce8f
Author: Gav Wood <i@gavwood.com>
Date:   Sat Jul 12 21:20:04 2014 +0200

    Output hex strings.

commit ddfa3af45d
Author: Gav Wood <i@gavwood.com>
Date:   Thu Jul 10 11:28:35 2014 +0100

    Everything a string.

commit d659f469a9
Author: Gav Wood <i@gavwood.com>
Date:   Thu Jul 10 10:16:25 2014 +0100

    Code fixes.

commit 5e83ea8228
Author: Gav Wood <i@gavwood.com>
Date:   Sun Jul 6 16:17:12 2014 +0200

    Prettier VM tests.

commit a09aae0efe
Author: Gav Wood <i@gavwood.com>
Date:   Sun Jul 6 15:46:01 2014 +0200

    Fix VM tests.

commit ec9a044a17
Merge: 4bb6461 5e0123f
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Fri Jul 4 15:56:52 2014 +0200

    Merge pull request #10 from romanman/patch-1

    Update vmtests.json

commit 5e0123fbe1
Author: romanman <roman.mandeleil@gmail.com>
Date:   Fri Jul 4 10:23:04 2014 +0100

    Update vmtests.json

commit 2b6da2f5f2
Author: romanman <roman.mandeleil@gmail.com>
Date:   Thu Jul 3 17:45:04 2014 +0100

    Update vmtests.json

    arith testcase updated

commit 4bb646117d
Merge: bba3898 a33b309
Author: Gav Wood <i@gavwood.com>
Date:   Wed Jul 2 19:43:22 2014 +0200

    Merge branch 'develop' of github.com:/ethereum/tests into develop

commit bba38980bd
Author: Gav Wood <i@gavwood.com>
Date:   Wed Jul 2 19:43:06 2014 +0200

    New tests.

commit a33b309d99
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jul 2 10:14:05 2014 -0400

    Testing submodules

commit 50318217ca
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jul 2 10:10:46 2014 -0400

    Testing submodules

commit 57fa655522
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jul 2 10:09:08 2014 -0400

    Testing submodules

commit ea0eb0a8c8
Author: Gav Wood <i@gavwood.com>
Date:   Tue Jul 1 15:19:34 2014 +0200

    Latest genesis block.

commit 25bb76b69c
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Mon Jun 30 13:25:04 2014 +0200

    Reset

commit 74c6d8424e
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Mon Jun 30 12:10:06 2014 +0200

    Updated wrong test

commit 9ea3a60291
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Sat Jun 28 18:48:28 2014 +0200

    Fixed roots

commit 5fc3ac0e92
Author: Gav Wood <i@gavwood.com>
Date:   Sat Jun 28 18:40:06 2014 +0200

    Simple hex test.

commit edd3a00c2a
Author: Gav Wood <i@gavwood.com>
Date:   Sat Jun 28 18:22:18 2014 +0200

    Additional test for jeff. Now use the 0x... notation.

commit 5021e0dd83
Author: Gav Wood <i@gavwood.com>
Date:   Fri Jun 27 21:35:26 2014 +0200

    VM test framework updated.

commit c818d13202
Author: Gav Wood <i@gavwood.com>
Date:   Fri Jun 27 18:18:24 2014 +0200

    Removed arrays from Trie tests JSON as per conformance guide and changed
    vocabulary to match other tests.
    VM test updates.

commit 714770ffb3
Author: Gav Wood <i@gavwood.com>
Date:   Wed Jun 11 11:32:42 2014 +0100

    Added Gav's new address.

commit 9345bc13d4
Merge: a2257f3 78576dd
Author: Gav Wood <i@gavwood.com>
Date:   Fri May 30 17:50:38 2014 +0200

    Merge branch 'master' of github.com:ethereum/tests into develop

commit a2257f3471
Author: Gav Wood <i@gavwood.com>
Date:   Fri May 30 17:50:18 2014 +0200

    VM tests.

commit 78576dd3d3
Author: Heiko Heiko <heiko@heiko.org>
Date:   Fri May 30 17:19:09 2014 +0200

    changes based on new account structure nonce, balance, storage, code

commit 125839e848
Merge: 42e14ec 356a329
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Thu May 22 09:58:45 2014 +0200

    Merge pull request #5 from bkirwi/master

    Fix invalid JSON (removed trailing comma) and add test names

commit 356a3296bc
Author: Ben Kirwin <ben@kirw.in>
Date:   Thu May 22 00:20:48 2014 -0400

    Add some arbitrary test names

    This should now conform to the format specified in the README.

commit 42e14ec54f
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Wed May 21 23:27:40 2014 +0800

    revert to correct data

commit 4300197a74
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Wed May 21 22:42:23 2014 +0800

    fix: wrong sha3 hash because of the wrong rlp hex

commit a0d01b1a0b
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Wed May 21 22:29:53 2014 +0800

    fix: wrong rlp hex

commit 6bc2fc7405
Merge: 66bc366 c31a93c
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Wed May 21 14:11:37 2014 +0200

    Merge pull request #4 from ethers/master

    fix file name that seems to have been a typo

commit c31a93c27a
Author: ethers <ethereum@outlook.com>
Date:   Tue May 20 15:42:39 2014 -0700

    fix file name that seems to have been a typo

commit 66bc3665c1
Author: Heiko Heiko <heiko@heiko.org>
Date:   Tue May 20 17:36:35 2014 +0200

    fix: represent integers as strings

commit ede5499da6
Author: Heiko Heiko <heiko@heiko.org>
Date:   Tue May 20 17:21:09 2014 +0200

    add: current initial alloc and genesis hashes

commit 5131429abb
Author: Ben Kirwin <ben@kirw.in>
Date:   Mon May 19 11:18:31 2014 -0400

    Delete a comma

    This should now be parseable as JSON.

commit f44a859331
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Sun May 18 15:04:42 2014 +0800

    add: case when value is long, ensure it's not get rlp encoded as node

commit e1ae4ad449
Author: Gav Wood <i@gavwood.com>
Date:   Mon May 12 14:40:47 2014 +0100

    PoC-5 VM tests.

commit 2b6c136dda
Author: Vitalik Buterin <v@buterin.com>
Date:   Sun May 11 21:42:41 2014 -0400

    Moved txt to json

commit cbccbf977c
Merge: edbb8d4 45a0974
Author: Vitalik Buterin <v@buterin.com>
Date:   Thu May 8 21:54:48 2014 -0400

    New commit

commit edbb8d407e
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue May 6 16:53:43 2014 -0400

    Removed unneeded test, added new tests

commit 45a0974f6f
Merge: 15dd8fd 5fd2a98
Author: Gav Wood <i@gavwood.com>
Date:   Sun Apr 27 12:53:47 2014 +0100

    Merge pull request #3 from autolycus/develop

    Fixed formatting and added test cases

commit 5fd2a98fcb
Author: Carl Allendorph <callendorph@gmail.com>
Date:   Sat Apr 19 13:26:14 2014 -0700

    Added some new test cases for the rlp encoding.

commit 4ba150954e
Author: Carl Allendorph <callendorph@gmail.com>
Date:   Sat Apr 19 12:48:42 2014 -0700

    Converted spaces to tabs to be compliant with the coding standards defined in cpp-ethereum

commit 15dd8fd794
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 28 12:54:47 2014 +0000

    RLP tests and Trie updates.

commit 33f80fef21
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 28 11:39:35 2014 +0000

    Hex encode tests done.

commit e1f5e12abb
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 28 11:22:49 2014 +0000

    Fix RLP tests.

commit f87ce15ad2
Author: Gav Wood <i@gavwood.com>
Date:   Thu Feb 27 13:28:11 2014 +0000

    Fix empty string.

commit c006ed4ffd
Author: Gav Wood <i@gavwood.com>
Date:   Mon Feb 24 10:24:39 2014 +0000

    Tests fix.

commit 510ff56363
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:54:08 2014 +0000

    Updated the tests.

commit a0ec843832
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:49:24 2014 +0000

    Moved over to new format, but RLP tests still need updating.

commit 660cd26f31
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:35:51 2014 +0000

    More docs.

commit 6ad14c1a15
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:33:39 2014 +0000

    Added VM test suite.
    Added TODO.
    Renamed old files.

commit f91ad7b385
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jan 8 11:26:58 2014 -0500

    update trie algorithm

commit 6da2954462
Merge: cc42246 131c610
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jan 8 08:15:38 2014 -0500

    merge

commit cc4224675f
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue Jan 7 14:35:26 2014 -0500

    Updated trie test

commit 131c610da6
Merge: 121632b 7613302
Author: vbuterin <v@buterin.com>
Date:   Wed Jan 1 06:40:54 2014 -0800

    Merge pull request #1 from obscuren/master

    Update trietest.txt

commit 7613302b49
Author: obscuren <obscuren@users.noreply.github.com>
Date:   Wed Jan 1 15:25:21 2014 +0100

    Update trietest.txt

    New proposed explanatory format

commit 121632bedd
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jan 1 08:26:18 2014 -0500

    Added obscure's tests

commit ef6c5506c3
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue Dec 31 19:04:48 2013 -0500

    Fixed tests a bit

commit 345e4bcfef
Merge: 2c81698 e4bbea4
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue Dec 31 15:52:46 2013 -0500

    Merge branch 'master' of github.com:ethereum/tests

commit 2c81698f31
Author: Vitalik Buterin <v@buterin.com>
Date:   Mon Dec 30 21:09:40 2013 -0500

    Added first three tests

commit e4bbea400f
Author: vbuterin <v@buterin.com>
Date:   Mon Dec 30 18:09:03 2013 -0800

    Initial commit
2015-01-02 17:33:14 +01:00
CJentzsch
2e75a216c7 new jumpdest interpretation 2015-01-02 17:05:20 +01:00
CJentzsch
7aab71f656 added complete exp tests 2015-01-02 16:55:59 +01:00
obscuren
4dc7ee9087 Closure => Context 2015-01-02 16:14:12 +01:00
CJentzsch
3340f4dbfc retuning gas prices of recursive bombs to test limits 2015-01-02 14:26:55 +01:00
CJentzsch
456b5791bb more init code, systemoperations and transaction tests 2015-01-02 14:08:55 +01:00
obscuren
e2d1d832ef added nil check 2015-01-02 13:00:25 +01:00
obscuren
d336e24dce Removed the need of having a backend for the tx pool 2015-01-02 12:26:55 +01:00
obscuren
ae2c90cc28 Removed value check from tx validation 2015-01-02 12:24:36 +01:00
obscuren
6cf61039cf Added tests for valid transactions 2015-01-02 12:18:23 +01:00
obscuren
48d2a8b8ee Refactored tx pool and added extra fields to block
* chain manager sets td on block + td output w/ String
* added tx pool tests for removing/adding/validating
* tx pool now uses a set for txs instead of list.List
2015-01-02 12:09:38 +01:00
obscuren
477a6d426c Added a query interface for world state 2015-01-02 12:07:54 +01:00
obscuren
0972bdeda2 Fixed using new trie iterator API 2015-01-02 12:07:26 +01:00
obscuren
1cc86c07a0 Deleted 2015-01-02 11:16:52 +01:00
obscuren
1c7e8e9093 Set TD to block once processed 2015-01-02 11:16:42 +01:00
obscuren
b619b244c7 Fixed tests 2015-01-02 11:16:30 +01:00
obscuren
0fb1bcd321 Merge branch 'poc8' into docbranch 2015-01-02 10:30:27 +01:00
obscuren
a4dc12f12c Additional comments and added name to error output 2014-12-31 11:21:39 +01:00
obscuren
4547a05a68 Minor improvements
* Moved gas and mem size to its own function
2014-12-31 11:12:40 +01:00
obscuren
4b4e082102 JUMPI never 'require' checked. 2014-12-31 10:32:53 +01:00
caktux
1954b87819 bring back toHex 2014-12-30 11:59:33 -05:00
obscuren
77924757a8 Merge branch 'develop' into poc8 2014-12-30 17:16:35 +01:00
obscuren
16460b0048 Fixed gas check for vm test 2014-12-30 17:16:28 +01:00
obscuren
a9068aa8ff Merge branch 'develop' into poc8 2014-12-30 17:10:02 +01:00
obscuren
89244981a8 Additional checking on gas 2014-12-30 17:09:54 +01:00
obscuren
138ab26b8c SIGNEXTEND missing from stack check 2014-12-30 17:09:43 +01:00
obscuren
51a97c031f Merge branch 'develop' into poc8 2014-12-30 16:22:56 +01:00
obscuren
cc5e621fc4 updated tests 2014-12-30 16:18:46 +01:00
obscuren
2ebf33ac1c removed variable 2014-12-30 16:17:56 +01:00
obscuren
788d812a72 Merge branch 'develop' into poc8 2014-12-30 16:16:11 +01:00
obscuren
29c887ef2c Removed incorrect range check for push 2014-12-30 16:16:02 +01:00
obscuren
1085960ed8 fixed trie 2014-12-30 15:58:40 +01:00
obscuren
8df689bd44 Chain tests 2014-12-30 15:42:26 +01:00
obscuren
2f8a45cd8b Fixed chain test & added new chain 2014-12-30 13:32:01 +01:00
obscuren
ce68ac6959 Updated miner to new block api 2014-12-30 13:18:19 +01:00
wanderer
1f5552feb4 added balance tests 2014-12-29 20:12:29 -05:00
wanderer
4d37c1cea2 added trie tests for branches on
detel
2014-12-27 20:30:42 -05:00
CJentzsch
2fdc7bfbd1 more random tests 2014-12-27 22:46:21 +01:00
obscuren
dc7c584a4d export => import 2014-12-24 14:54:06 +01:00
obscuren
58d477f7a6 Fixed a bug where keys where serialised twice 2014-12-24 14:47:50 +01:00
obscuren
804af9658a merge 2014-12-24 11:31:45 +01:00
obscuren
9d429180f9 Merge branch 'hotfix/0.7.11' into develop 2014-12-24 11:31:08 +01:00
obscuren
771bfe9e78 Merge branch 'hotfix/0.7.11' 2014-12-24 11:30:13 +01:00
obscuren
c9f963a77e Bump 2014-12-24 11:30:04 +01:00
obscuren
7ba9fe4d5d Reset peer during download on disc 2014-12-24 11:29:58 +01:00
obscuren
fb1edd05f4 Removed the deferred reset 2014-12-24 11:20:43 +01:00
obscuren
780abaec98 Switched to new trie 2014-12-23 18:35:36 +01:00
CJentzsch
98fe404e6a Merge remote-tracking branch 'origin/develop' into develop 2014-12-23 16:36:13 +01:00
CJentzsch
aafb5f768b first failing random tests 2014-12-23 16:35:35 +01:00
wanderer
8c34e93b51 added stackOverFlow test to initCode 2014-12-23 10:01:20 -05:00
obscuren
f468a9a0e2 Enable websockets for mist. Closes #218 2014-12-23 15:47:08 +01:00
obscuren
1054c155db Moved import to utils 2014-12-23 15:37:03 +01:00
obscuren
7d2353f24d Close the file 2014-12-23 15:31:03 +01:00
obscuren
34f72ddb3d Decode from stream directly 2014-12-23 15:18:48 +01:00
obscuren
1382e8d84b Delete current chain for reset 2014-12-23 14:50:04 +01:00
obscuren
e2e3fa3d11 Updated Mist to use new blocks 2014-12-23 14:44:45 +01:00
obscuren
9e5257b83b Chain importer 2014-12-23 14:33:15 +01:00
obscuren
4cd79d8ddd Refactored block & Transaction
* Includes new rlp decoder
2014-12-23 13:48:44 +01:00
obscuren
4b52cd512d Removal of "debug" url :) 2014-12-22 15:01:52 +01:00
obscuren
e32f7baa0d Concat and pad data 2014-12-22 14:59:52 +01:00
obscuren
60b1f9629c Merge branch 'develop' into poc8 2014-12-22 14:46:32 +01:00
obscuren
4051c0333f Added whisper js api 2014-12-22 13:23:11 +01:00
obscuren
e42517754a updated ethereum.js 2014-12-22 11:57:13 +01:00
obscuren
a153b47c2b moved 2014-12-22 11:56:34 +01:00
Jeffrey Wilcke
e531c6fc6c Merge pull request #217 from ethereum/tests
Updated code coverage support & cleanup
2014-12-22 11:42:28 +01:00
obscuren
ed7e05fb2a Merge branch 'develop' into poc8 2014-12-22 10:58:30 +01:00
obscuren
8130df63ca updated whisper ui 2014-12-22 10:58:28 +01:00
Gav Wood
123098ce79 Lots of fixes. 2014-12-22 01:13:49 +01:00
Taylor Gerring
4fd4facf35 Remove old file 2014-12-21 14:54:51 -06:00
Taylor Gerring
43bf3b4a78 Move goveralls call to script 2014-12-21 14:46:32 -06:00
Taylor Gerring
05da381c15 Add coveralls coverage badge 2014-12-21 14:36:13 -06:00
Taylor Gerring
26bf95731b Use repo default branches 2014-12-21 14:31:19 -06:00
Taylor Gerring
03dc6ec0d4 Update travis go version to tip 2014-12-21 13:46:06 -06:00
Taylor Gerring
f7ec759ef0 inline dependency installation script 2014-12-21 13:34:48 -06:00
Taylor Gerring
7ddebd7a75 Exclude VM tests 2014-12-21 13:21:24 -06:00
Taylor Gerring
bab78bbeb6 Merge branch 'tests' of github.com:ethereum/go-ethereum into tests 2014-12-21 12:06:24 -06:00
Taylor Gerring
7a79428278 Update cover command installation 2014-12-21 12:05:59 -06:00
Taylor Gerring
1360f027d9 Merge pull request #216 from ethereum/develop
Update tests branch from develop
2014-12-21 11:42:32 -06:00
Taylor Gerring
b3629c6f62 remove temp coverage file 2014-12-21 11:19:33 -06:00
Taylor Gerring
176c98eb66 Updated tool import paths 2014-12-21 11:18:43 -06:00
obscuren
25d16f358a Merge branch 'develop' 2014-12-21 15:13:45 +01:00
obscuren
795b14330a Fixed EVM environment. Closes #215 2014-12-21 15:13:06 +01:00
obscuren
0e5aed63dd Updated QWhisper
* changed api
* general whisper debug interface
2014-12-21 15:06:35 +01:00
CJentzsch
8a285d258a Merge remote-tracking branch 'origin/develop' into develop 2014-12-20 13:08:18 +01:00
CJentzsch
a4ccc6e72e CALLCODE <-> RETURN 2014-12-20 13:07:54 +01:00
obscuren
125bdc3253 Merge branch 'develop' into poc8
Conflicts:
	cmd/ethereum/flags.go
2014-12-20 02:45:05 +01:00
obscuren
6cff6dd8b8 Merge branch 'release/v0.7.10' into develop 2014-12-20 02:34:29 +01:00
obscuren
3983dd2428 Merge branch 'release/v0.7.10' 2014-12-20 02:34:12 +01:00
obscuren
0a9dc1536c Increased peer from 10 to 30 2014-12-20 02:33:45 +01:00
obscuren
1508a23a6f Minor updates on gas and removed/refactored old code. 2014-12-20 02:21:13 +01:00
obscuren
f5b8f3d41b Removed OOG check. Revert should always happen. 2014-12-19 13:59:49 +01:00
obscuren
0e93b98533 Transaction was generating incorrect hash because of var changes 2014-12-19 13:34:53 +01:00
obscuren
5da5db5a0a Added authors 2014-12-19 13:34:21 +01:00
wanderer
6567f9d0b2 add refund tests 2014-12-18 23:39:30 -05:00
obscuren
88af879f7a version bump 2014-12-19 01:18:22 +01:00
obscuren
75f0412f9d Merge branch 'ebuchman-badsig' into poc8 2014-12-19 00:33:32 +01:00
obscuren
207b6c50fb Merge branch 'badsig' of https://github.com/ebuchman/go-ethereum into ebuchman-badsig
Conflicts:
	core/transaction_pool.go
2014-12-19 00:33:05 +01:00
wanderer
07cfec33f8 added trieTest anyorder 2014-12-18 18:31:19 -05:00
obscuren
12671c82ea Moved VM to execution 2014-12-19 00:23:00 +01:00
obscuren
6e24b1587d Merge branch 'develop' into poc8 2014-12-19 00:19:02 +01:00
obscuren
59ef6e3693 Cleaned up objects 2014-12-19 00:18:52 +01:00
obscuren
22d29a6d52 merge 2014-12-19 00:02:55 +01:00
obscuren
a7f4ade711 Fixed tests 2014-12-18 23:59:53 +01:00
obscuren
1e985f9865 Fixed casting error
* big(bytes) == 0 when len(bytes) > 0
2014-12-18 23:59:40 +01:00
obscuren
4789084998 updated tests 2014-12-18 23:32:58 +01:00
obscuren
3325683794 Fixed refund model 2014-12-18 22:38:51 +01:00
obscuren
f7287c626e updated tests 2014-12-18 21:58:53 +01:00
obscuren
198cc69357 Gas corrections and vm fixes 2014-12-18 21:58:26 +01:00
CJentzsch
86c3b8cfad Merge branch 'develop' of https://github.com/ethereum/tests into develop 2014-12-18 21:43:06 +01:00
CJentzsch
b227b10f5d more refund tests 2014-12-18 21:42:41 +01:00
wanderer
71b5d6e0a3 updated index.js 2014-12-18 12:13:55 -05:00
obscuren
5ad473d758 Moved methods to messages 2014-12-18 15:33:22 +01:00
obscuren
db494170dc Created generic message (easy for testing) 2014-12-18 15:18:13 +01:00
obscuren
9e286e1c33 updated tests 2014-12-18 13:32:47 +01:00
obscuren
0dc566124a Merge fixes 2014-12-18 13:22:59 +01:00
obscuren
721e8ae93f Merged develop 2014-12-18 13:19:41 +01:00
obscuren
2d09e67713 Updated to new methods 2014-12-18 13:17:24 +01:00
obscuren
49e0267fe7 Locks, refactor, tests
* Added additional chain tests
* Added proper mutex' on chain
* Removed ethereum dependencies
2014-12-18 13:12:54 +01:00
obscuren
590aace88d Removed ethereum as dependency 2014-12-18 12:18:19 +01:00
obscuren
4b2f1f7628 idx should return -1 2014-12-18 11:55:46 +01:00
obscuren
df3366d910 Rlp shouldn't write null bytes 2014-12-18 11:39:24 +01:00
CJentzsch
aefcb9716e transaction tests and refund tests 2014-12-18 09:31:43 +01:00
obscuren
e6fdf0c9f7 Merge branch 'develop' into poc8 2014-12-18 00:12:51 +01:00
obscuren
4dbdcaecb1 Moved pre-compiled, moved depth check
* Depth check has been moved to the execution
* Pre compiled execution has been moved to the VM
* PrecompiledAddress has been renamed to PrecompiledAccount
2014-12-17 23:58:52 +01:00
Jeffrey Wilcke
8da07e91e4 Merge pull request #213 from ethereum/develop
moved err check
2014-12-17 13:00:05 +01:00
obscuren
b1c58b76a9 moved err check 2014-12-17 12:57:35 +01:00
obscuren
52b54631a4 Whisper watches fixes 2014-12-16 19:55:57 +01:00
Jeffrey Wilcke
e9db2d1b18 Merge pull request #15 from debris/master
changes from cpp-ethereum
2014-12-16 11:10:28 +01:00
obscuren
93edae280d doc desc 2014-12-15 22:50:38 +01:00
Jeffrey Wilcke
bb17591959 Merge pull request #211 from fjl/fix-server-disc
p2p: fix call to Server.removePeer
2014-12-15 22:50:05 +01:00
Felix Lange
aa3b91b802 p2p: fix call to Server.removePeer (might help with #209) 2014-12-15 22:36:59 +01:00
obscuren
b55fabc7be Removed debug message 2014-12-15 22:18:58 +01:00
obscuren
54605d8c8e During env open check for pub error which indicated unencrypted payload. 2014-12-15 21:55:00 +01:00
obscuren
52ca80bdd2 Fixed deref ptr
The gui already waits and shuts down ethereum. There was no need to wait
for an additional shutdown.
2014-12-15 21:53:50 +01:00
obscuren
0291eff99a Identity test 2014-12-15 21:52:50 +01:00
obscuren
c96e504adb Typo 2014-12-15 17:28:51 +01:00
obscuren
01a6db9324 Added whisper debug interface + whisper fixes 2014-12-15 17:14:02 +01:00
obscuren
993280ec03 Added whisper test 2014-12-15 17:09:27 +01:00
obscuren
6ff9d5770b Added whisper handler 2014-12-15 17:09:14 +01:00
obscuren
455241debb Removed goroutine from "Run" 2014-12-15 17:09:06 +01:00
obscuren
db89c3e1a3 Merge branch 'develop' into poc8 2014-12-15 16:13:08 +01:00
obscuren
ef4135eabe Added topic utility functions to whisper 2014-12-15 16:12:34 +01:00
obscuren
56dac74f71 made mist in a compilable, workable state using the new refactored packages 2014-12-15 13:00:29 +01:00
obscuren
c7bc684909 Moved peer helper metheds 2014-12-15 12:35:21 +01:00
obscuren
96272e19a6 removed filter manager from base 2014-12-15 12:34:06 +01:00
obscuren
bd9088792b Merge branch 'develop' into ethersphere-ethp2p 2014-12-15 12:22:03 +01:00
obscuren
cdb2ebbdfa Added old filter. Needs some refactoring 2014-12-15 12:17:33 +01:00
obscuren
4b5ad31b3a WIP 2014-12-15 12:07:46 +01:00
obscuren
6c168c8f22 added protocol handler 2014-12-15 12:02:48 +01:00
obscuren
afc8b887ab added whisper 2014-12-15 12:01:55 +01:00
obscuren
f111fc0608 WIP 2014-12-15 11:38:09 +01:00
zelig
1d959cb0ca WIP 2014-12-15 11:37:01 +01:00
obscuren
c3ba4ace64 Merge branch 'poc8' into develop 2014-12-15 10:22:57 +01:00
Jeffrey Wilcke
15e46b97b4 Merge pull request #204 from fjl/fix-p2p-disconnect
p2p: fix decoding of disconnect reason
2014-12-15 10:22:35 +01:00
Felix Lange
da900f9435 p2p: add test for base protocol disconnect 2014-12-15 00:28:20 +01:00
Felix Lange
f0f6727778 p2p: use an error type for disconnect requests
Test-tastic.
2014-12-15 00:28:20 +01:00
Felix Lange
65e39bf20e p2p: add MsgPipe for protocol testing 2014-12-15 00:28:20 +01:00
zelig
72290f67fe resolve merge conflict hell 2014-12-14 20:57:29 +00:00
zelig
4c89d5331f adapt blockpool/backend to use pow/ezp with pow.Block for VerifyPoW func 2014-12-14 20:53:20 +00:00
zelig
61940b2275 adapt cmd/cli to new backend
- new flag nat for nat support UPNP|PMP
- new flag pmp for PMP gateway IP
- add NatType to utils/cmd to get p2p.NAT from nat type string
- obsolete usepnp flag
- get rid of IsUpToDate and sleep in miner start
- ethereum constructor takes nat type, port, maxpeer
- add pubkey arg to client identity
2014-12-14 20:52:28 +00:00
zelig
e77b720ead blockmanager start/stop obsolete 2014-12-14 20:45:12 +00:00
zelig
7b39cc83cc adapt chain_manager to eth protocol interface
- add Status() to return td, currentblock hash, genesis hash
- GetChainHashesFromHash -> GetBlockHashesFromHash
2014-12-14 20:45:12 +00:00
zelig
01dc1c1394 blockpool rewritten , tests broken FIXME 2014-12-14 20:42:08 +00:00
zelig
4dfce4624d protocol
- new interface explicit backend components txPool, chainManager, blockPool
- added protoErrorDisconnect for blockpool callback (FIXME: handling peer disconnects)
2014-12-14 20:40:08 +00:00
zelig
5e4d77b2b8 initial commit for eth blockpool + test 2014-12-14 20:39:34 +00:00
zelig
2dd8f41147 eth protocol changes
- changed backend interface
- using callbacks for blockPool
- use rlp stream for lazy decoding
- use peer as logger
- add id (peer pubkey) to ethProtocol fields
- add testPeer to protocol test (temporary)
2014-12-14 20:37:07 +00:00
zelig
0add0c400f initial commit for eth-p2p integration 2014-12-14 20:34:28 +00:00
zelig
e847aaca3e remove wire package 2014-12-14 20:31:43 +00:00
zelig
7d02c4fdb7 remove old ethereum/p2p related top level files 2014-12-14 20:31:43 +00:00
zelig
d9b16c1197 new cli options
- nat UPNP|PMP
- gateway for PMP NAT
- obsolete usepnp
- add pubkey to client identity
2014-12-14 20:30:56 +00:00
zelig
ae7c1e3e55 adapt to new backend
- eth p2p pkgs
- new Ethereum initialiser
- no caps param
- use nat type
- add NatType func to map nat type string to p2p.NAT
- add pubkey to client identity
2014-12-14 20:30:56 +00:00
zelig
50e1dcc43a import eth pkg 2014-12-14 20:30:56 +00:00
zelig
d84810d89d add Status to retrieve TD, currentBlock, genesis for easy interface with eth/protocol 2014-12-14 20:30:56 +00:00
zelig
39d86a28e7 adapt to new eth pkg and p2p 2014-12-14 20:30:56 +00:00
zelig
5022a31889 add NewMinedBlockEvent 2014-12-14 20:27:06 +00:00
zelig
c2af10d256 transaction pool changes
- use eventer events to broadcast transactions
- CurrentTransactions -> GetTransactions
- add AddTransactions
2014-12-14 20:27:06 +00:00
zelig
b89ed8eb7b adapt javascript pkg to new backend, use SuggestPeer 2014-12-14 20:27:06 +00:00
zelig
118862f1ba adapt miner to new backend. use events to broadcast new mined blocks 2014-12-14 20:27:06 +00:00
zelig
148de1c875 adapt xeth pkg to new backend. FIXME JSPeer peer info 2014-12-14 20:27:06 +00:00
zelig
76070b4674 blockpool rewritten , tests broken FIXME 2014-12-14 20:27:06 +00:00
zelig
3308d82b23 add protocol error types specific to blockpool 2014-12-14 20:27:06 +00:00
zelig
c44e025898 protocol
- new interface explicit backend components txPool, chainManager, blockPool
- added protoErrorDisconnect for blockpool callback (FIXME: handling peer disconnects)
2014-12-14 20:27:06 +00:00
zelig
02017ed0e0 initial commit for new backend (eth.Ethereum) 2014-12-14 20:27:06 +00:00
zelig
4366fdfc13 initial commit for eth blockpool + test 2014-12-14 20:27:06 +00:00
zelig
d957dd2c9f eth protocol changes
- changed backend interface
- using callbacks for blockPool
- use rlp stream for lazy decoding
- use peer as logger
- add id (peer pubkey) to ethProtocol fields
- add testPeer to protocol test (temporary)
2014-12-14 20:27:06 +00:00
zelig
eb5cb04aa9 no logging in error (to be refactored into p2p) 2014-12-14 20:27:05 +00:00
zelig
e5aa38cb0f initial commit for eth-p2p integration 2014-12-14 20:27:05 +00:00
CJentzsch
ccbf120c36 added stInitCodeTest.json 2014-12-13 23:03:21 +01:00
obscuren
f8061fcba8 fixed tests 2014-12-12 22:38:54 +01:00
obscuren
4c84db85c5 eth-go packages ended up in whisper 2014-12-12 22:29:29 +01:00
obscuren
0122989808 Merge branch 'poc8' into develop 2014-12-12 22:27:12 +01:00
Jeffrey Wilcke
ccb4fc8d03 Merge pull request #206 from ethereum/tests
Added Dockerfile to build from source
2014-12-12 22:26:54 +01:00
obscuren
aec0c0efcb updated tests 2014-12-12 22:25:29 +01:00
obscuren
bf566a657c Implemented Qt whisper interface 2014-12-12 22:24:41 +01:00
obscuren
8577e4171a Panic for "Vm" 2014-12-12 22:24:27 +01:00
obscuren
06e76422b5 Added length checkes 2014-12-12 22:24:04 +01:00
obscuren
1c7fd62e57 Moved 2014-12-12 22:23:52 +01:00
obscuren
a17a1f9208 Implemented watching using filter package
* Added filters / watches
* Removed event dep
2014-12-12 22:23:42 +01:00
obscuren
ed1538248f Moved filter to events 2014-12-12 22:19:39 +01:00
CJentzsch
cbf5afdef8 update recursive create 2014-12-12 22:03:54 +01:00
obscuren
9e1689df9c Generic filter interface 2014-12-12 21:42:21 +01:00
Taylor Gerring
ca7f385294 Fix variable name 2014-12-12 10:54:32 -06:00
Taylor Gerring
a92ccfc5c6 Added Dockerfile to build from source 2014-12-12 10:50:07 -06:00
Gav Wood
a70c4b51a4 Fix return tests. 2014-12-12 17:22:41 +01:00
Gav Wood
f146467607 Add test file. 2014-12-12 16:33:51 +01:00
obscuren
25cf0c440c Accidentally changed max depth during testing & committed 2014-12-12 15:25:21 +01:00
Gav Wood
c2bd8d1d7a Alter "" to null. 2014-12-12 14:27:38 +01:00
Gav Wood
ce6344b770 Trie testing. 2014-12-12 14:22:19 +01:00
obscuren
05fd1dafe2 additional log 2014-12-12 13:26:01 +01:00
Felix Lange
e28c60caf9 p2p: improve and test eofSignal 2014-12-12 11:40:02 +01:00
Felix Lange
9423401d73 p2p: fix decoding of disconnect reason (fixes #200) 2014-12-12 11:40:02 +01:00
obscuren
0d57ca486a Squashed commit of the following:
commit 779f25d36c
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 11 22:59:56 2014 +0100

    first random test

commit 68175386c0
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 11 21:34:50 2014 +0100

    update gas prices

commit ad322fbb58
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Mon Dec 8 06:01:17 2014 +0100

    Log as array

commit f989f42618
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Fri Dec 5 15:12:12 2014 +0100

    state log tests

commit 4bc65d1129
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 4 18:18:49 2014 +0100

    add calldataload, codecopy, extcodecopy tests

commit 12cfae18e3
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 4 15:57:56 2014 +0100

    add calldataload test

commit 086caf3701
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Wed Dec 3 08:31:03 2014 +0100

    protocol update (CALLCODE <-> RETURN), topics in log are arrays not sets

commit e6c92673b9
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Mon Dec 1 21:14:08 2014 +0100

    update state tests with logs

commit 4089b809fb
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Mon Dec 1 18:19:40 2014 +0100

    update gas costs

commit cfdca62277
Merge: 2e5175e f59f89d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Dec 1 18:04:51 2014 +0100

    Merge pull request #42 from negedzuregal/fix

    vmTest fix

commit f59f89d876
Author: alon muroch <alonmuroch@gmail.com>
Date:   Mon Dec 1 16:18:12 2014 +0100

    vmEnvironmentalInfoTest CALLDATACOPY, CODECOPY, EXTCODECOPY fix

commit 68da13fe3e
Author: alon muroch <alonmuroch@gmail.com>
Date:   Mon Dec 1 11:10:57 2014 +0100

    vmArithmeticTest exp fix

commit 2e5175e818
Author: ethers <ethereum@outlook.com>
Date:   Sun Nov 30 19:55:51 2014 +0100

    add vmLogTest

commit b5b9408e64
Author: Heiko Heiko <heiko@heiko.org>
Date:   Sun Nov 30 16:27:27 2014 +0100

    updated genesis to new header w/o min_gas_price

commit 8e69fbfa98
Author: ethers <ethereum@outlook.com>
Date:   Fri Nov 21 17:42:05 2014 -0800

    add special tests

commit 90f4f942e6
Author: ethers <ethereum@outlook.com>
Date:   Thu Nov 20 19:01:09 2014 -0800

    typo

commit c5e5228e0d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 20 17:04:06 2014 +0100

    Removed log,post,out,gas,callcreates if exception occured

commit 9c0232a2b9
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 19 18:19:05 2014 +0100

    MakeMoney test

commit 3ba0007e86
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 19 16:23:04 2014 +0100

    Added log sections in all vmtests + log tests

commit d84be4fe07
Merge: c8497ab 76d2542
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 19 10:00:24 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit c8497ab257
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 19 10:00:02 2014 +0100

    new push32 test and renaming

commit 76d25420e1
Author: ethers <ethereum@outlook.com>
Date:   Mon Nov 17 18:59:30 2014 -0800

    adding test

commit 0be275e757
Merge: 1d42d1d d90868c
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 17 22:47:34 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 1d42d1d7c6
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 17 22:46:51 2014 +0100

    fix ecrecover2

commit d90868c307
Merge: 1f38c8c 6dbcf6b
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 17 20:26:59 2014 +0100

    Merge pull request #39 from wanderer/develop

    added test for max call depth on creation

commit 6dbcf6b0d6
Author: wanderer <mjbecze@gmail.com>
Date:   Mon Nov 17 14:06:43 2014 -0500

    spelling fix

commit 6fc07a7f81
Author: wanderer <mjbecze@gmail.com>
Date:   Sat Nov 15 21:39:16 2014 -0500

    added test for max call depth on creation

commit 1f38c8c0a2
Merge: 279b284 cd85ca1
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Fri Nov 14 20:10:21 2014 -0500

    Merge pull request #38 from wanderer/develop

    updated test  'jeff' in trietest.json

commit cd85ca17ed
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Fri Nov 14 19:59:34 2014 -0500

    Update trietest.json

commit 279b284c0d
Merge: 89675a7 6cae937
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Fri Nov 14 17:43:49 2014 -0500

    Merge pull request #37 from wanderer/develop

    Update trietest.json

commit 6cae937e5e
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Fri Nov 14 17:20:03 2014 -0500

    Update trietest.json

    'emptyValues' should have the same root as 'puppy'

commit 89675a7153
Merge: f1de1cc 32f0c47
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 13 23:17:49 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit f1de1cc97a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 13 23:17:13 2014 +0100

    Fix CallRecursiveBomb2

commit 32f0c47c68
Merge: ab50e76 3da90d0
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Thu Nov 13 15:26:49 2014 -0500

    Merge pull request #36 from wanderer/develop

    converted back to arrary format

commit ab50e76652
Merge: d06b792 78f1e4a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 13 07:52:35 2014 +0100

    Merge pull request #35 from ethers/delOld

    rename tests since they are valid opcodes that exist

commit 3da90d01f6
Author: wanderer <mjbecze@gmail.com>
Date:   Wed Nov 12 22:22:47 2014 -0500

    converted back to arrary format

commit 78f1e4a945
Author: ethers <ethereum@outlook.com>
Date:   Wed Nov 12 19:11:06 2014 -0800

    rename tests since they are valid opcodes that exist

commit d06b792cd0
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 12 07:00:17 2014 +0100

    minor change in CallSha256_1_nonzeroValue test

commit d434ecdcc3
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 12 06:56:31 2014 +0100

    Added CallSha256_1_nonzeroValue test

commit 2c06f34cc0
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 11 18:10:26 2014 +0100

    Store return value of call to precompiled contracts

commit 4b0c3b29ae
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 11 17:51:14 2014 +0100

    Fix gas cost for OOG calls

commit 63bcca7604
Author: Heiko Heiko <heiko@heiko.org>
Date:   Tue Nov 11 08:59:19 2014 +0100

    fix: genesis test

commit 6e0310c1ea
Merge: 30c266c 2927763
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 11 08:34:36 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 30c266caff
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 11 08:33:59 2014 +0100

    jump to position outside code stops execution

commit 2927763d68
Author: ethers <ethereum@outlook.com>
Date:   Mon Nov 10 14:10:22 2014 -0800

    RandomTests were removed

commit a0fa91b2b8
Merge: 6092484 fcba866
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 10 22:22:05 2014 +0100

    Merge branch 'develop' of https://github.com/ethereum/tests into develop

commit 60924843f0
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 10 22:21:37 2014 +0100

    Unintended Exceptions work like OOG

commit fcba866721
Author: ethers <TODO>
Date:   Thu Nov 6 14:19:59 2014 -0800

    add StateTests

commit a441074ba4
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 17:54:36 2014 +0100

    Updated precompiled contracts test

commit 0afa72c82b
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 15:27:45 2014 +0100

    Added precompiledContracts tests

commit 6be83dd5a1
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 13:31:34 2014 +0100

    Update gas cost for PoC7

commit c18b8ab2d3
Merge: 66c2e1f 9a93258
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 09:19:53 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 66c2e1f642
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 09:19:22 2014 +0100

    Updated SIGNEXTEND tests

commit 9a9325822e
Author: ethers <TODO>
Date:   Wed Nov 5 16:20:26 2014 -0800

    part of 9b4e768 - Delete vmNamecoin.json

commit e229374f46
Merge: 189527e 9b4e768
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 20:59:49 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 189527e563
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 20:59:20 2014 +0100

    added dynamic jump out of code

commit 9b4e768995
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 20:41:54 2014 +0100

    Delete vmNamecoin.json

commit 4669b5694b
Merge: a567fed aaba185
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 15:00:12 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit a567fedaa7
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 14:59:08 2014 +0100

    added state systemOperationsTest

commit aaba185ceb
Merge: 79d7cbf fa782ae
Author: ethers <ethereum@outlook.com>
Date:   Tue Nov 4 12:15:40 2014 -0800

    Merge pull request #32 from ethers/indexjs

    updates needed per restructure

commit fa782aed93
Author: ethers <TODO>
Date:   Tue Nov 4 11:28:56 2014 -0800

    updates needed per restructure

commit 79d7cbfc4a
Merge: 9120274 1c1ba8d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 4 13:32:11 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 9120274a46
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 4 13:31:27 2014 +0100

    Update tests to latest protocol changes (PoC7)

commit 1c1ba8d161
Merge: 014d370 3aebe53
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 4 13:30:52 2014 +0100

    Merge pull request #31 from CJentzsch/develop

    Restructered tests in folders in accordance to test suites

commit 3aebe532e5
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:58:21 2014 +0100

    Updated vmNamecoin.json to new sstore prices

commit 8a0be21839
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:53:00 2014 +0100

    Added example state test

commit 83643addbc
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:36:25 2014 +0100

    removed systemoperationstests

commit 3930ca3a9a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:22:15 2014 +0100

    Restructered tests in folders in accordance to test suites

commit 014d370b5d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 29 21:23:56 2014 +0100

    New SIGNEXTEND tets

commit 155d449be2
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 29 20:59:05 2014 +0100

    New tests for BNOT and SIGNEXTEND

commit c9eae764b8
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 28 12:58:27 2014 +0100

    Update SSTORE gas cost and BNOT instead of NEG

commit ad2a75ac58
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Oct 23 16:05:49 2014 +0200

    Added new recursive bombs

commit 834c52af64
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Oct 23 12:01:05 2014 +0200

    Changing gas cost to zero at stackunderflow

commit c73a8a89d2
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Wed Oct 22 13:04:45 2014 +0200

    Reverted back to original value.

commit b9a8c92422
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Tue Oct 21 17:02:52 2014 -0400

    fix spelling error

commit b48ae74af4
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 21 17:26:26 2014 +0200

    Added failing random tests

commit bee0a4100c
Merge: 5050d20 b315da6
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 21 17:15:05 2014 +0200

    Merge remote-tracking branch 'origin/master' into develop

commit 5050d20b4d
Merge: 7516685 ba35362
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 20 20:18:20 2014 +0200

    Merge pull request #26 from wanderer/develop

    Add a package.json for node.js

commit ba35362876
Author: wanderer <mjbecze@gmail.com>
Date:   Sun Oct 19 23:59:47 2014 -0400

    turned tests into a node module

commit 751668571e
Author: ethers <ethereum@outlook.com>
Date:   Thu Oct 16 17:08:20 2014 -0700

    json was invalid and missing quotes

commit 0e687cee47
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Thu Oct 16 17:13:24 2014 +0200

    Update vmEnvironmentalInfoTest.json

commit 78a78e2e6c
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 15 14:19:11 2014 +0200

    updated genesis_hash

commit b315da618b
Merge: 7a7e198 0a76a3a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 14 10:33:26 2014 +0200

    Merge pull request #23 from ethers/fix22

    numbers should be strings #22

commit 0a76a3a312
Author: ethers <ethereum@outlook.com>
Date:   Mon Oct 13 14:45:30 2014 -0700

    numbers should be strings #22

commit 1f67385f13
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Oct 11 13:18:00 2014 +0200

    Added some MUL tests

commit 7a7e198395
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Oct 11 13:11:59 2014 +0200

    Added some MUL tests

commit 46eb6283ae
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Oct 11 12:18:13 2014 +0200

    tested new opcodes (JUMPDEST,CALLCODE) and created test for CALL/CREATE depth

commit 8d38d62d10
Author: Nick Savers <nicksavers@gmail.com>
Date:   Fri Oct 10 18:09:41 2014 +0200

    INVALID stops the operation and doesn't cost gas

commit ed6eba7c8e
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 8 19:08:48 2014 +0200

    Update + ABA recursive bomb which needs maximum recursion limit of 1024

commit 2d72050db1
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 8 14:37:18 2014 +0200

    Applied recent protocol changes (PoC7) to existin tests

commit dfe66cab3f
Merge: 4513623 1a67a96
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 8 11:05:51 2014 +0200

    Merge remote-tracking branch 'origin/develop'

    Conflicts:
    	genesishashestest.json

commit 1a67a96cff
Merge: a4f5f45 ffd6bc9
Author: vbuterin <v@buterin.com>
Date:   Tue Oct 7 15:10:23 2014 +0100

    Merge pull request #18 from CJentzsch/develop

    CallToNameRegistratorOutOfGas balance correction

commit ffd6bc97ad
Merge: a4f5f45 9779d67
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:47:34 2014 +0200

    Merge remote-tracking branch 'origin/develop' into develop

commit 9779d67b8c
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:45:53 2014 +0200

    CallToNameRegistratorOutOfGas balance correction

    Even if execution fails, the value gets transferred.

commit a4f5f45228
Merge: 49a9f47 b6d7cba
Author: vbuterin <v@buterin.com>
Date:   Tue Oct 7 14:13:12 2014 +0100

    Merge pull request #17 from CJentzsch/develop

    Added A calls B calls A contracts

commit b6d7cba499
Merge: 865cb40 49a9f47
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:02:51 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit 865cb4083d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:02:36 2014 +0200

    Added A calls B calls A contracts

commit 49a9f47aec
Merge: 3b0ec43 94a493b
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Tue Oct 7 10:56:17 2014 +0200

    Merge pull request #16 from CJentzsch/develop

    corrected amount of used gas for CallToNameRegistratorOutOfGas

commit 94a493b0d9
Merge: 72853c4 3b0ec43
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 10:51:32 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit 72853c4382
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 10:51:07 2014 +0200

    corrected amount of used gas for CallToNameRegistratorOutOfGas

commit 3b0ec436e4
Merge: aec3252 222068b
Author: vbuterin <v@buterin.com>
Date:   Tue Oct 7 05:52:43 2014 +0100

    Merge pull request #15 from CJentzsch/develop

    corrected tests and different style for storage

commit 222068b9ba
Merge: c169653 aec3252
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 21:17:28 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit c1696531a6
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 21:17:09 2014 +0200

    corrected tests and different style for storage

commit aec3252b8e
Merge: 25f9fd5 e17a909
Author: vbuterin <v@buterin.com>
Date:   Mon Oct 6 09:39:46 2014 +0100

    Merge pull request #14 from CJentzsch/develop

    corrected gas limit in vmSystemOperationsTest

commit e17a909f70
Merge: 33fcab5 25f9fd5
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 10:31:51 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit 33fcab5727
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 10:30:04 2014 +0200

    Bug fix, corrected gasLimit in vmSystemOperationsTest

commit 25f9fd542a
Author: Vitalik Buterin <v@buterin.com>
Date:   Sat Oct 4 15:47:00 2014 -0400

    one more vm test

commit 2d561a5373
Author: Vitalik Buterin <v@buterin.com>
Date:   Sat Oct 4 15:15:37 2014 -0400

    separated out vmtests

commit b0c48fa8d6
Merge: cb8261a 6cae166
Author: vbuterin <v@buterin.com>
Date:   Sat Oct 4 17:18:02 2014 +0100

    Merge pull request #13 from CJentzsch/develop

    Added comprehensive EVM test suite. All commands are tested.

commit 6cae166f6f
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 1 15:34:23 2014 +0200

    Delete tmp.json

commit 4ff906fbc2
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 1 14:06:32 2014 +0200

    corrected CALLSTATELESS tests

commit 5b3fee6806
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Sep 29 13:08:44 2014 +0200

    Completed vm tests. Added ADDMOD, MULMOD, POST, CALLSTATELESS

commit 9cdd218083
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Sep 27 21:48:09 2014 +0200

    Added IOandFlowOperation-, PushDupSwap- and SystemOperations- tests. Removed empty storage from adresses.

commit 28ed968b46
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Sep 23 15:49:22 2014 +0200

    Added blockInfoTest

commit ffbd5a35b5
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Sep 23 15:37:52 2014 +0200

    Added environmentalInfo- and sha3- test

commit 54c14f1ff3
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Sep 22 13:06:57 2014 +0200

    Added bitwise logic operation test

commit d0af113aab
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Sep 20 01:42:51 2014 +0200

    Added vm arithmetic test

commit cb8261a78b
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Fri Sep 19 13:15:44 2014 +0200

    Update genesishashestest.json

commit 4513623da1
Author: Maran <maran.hidskes@gmail.com>
Date:   Tue Jul 22 12:24:46 2014 +0200

    Update keyaddrtest to be valid JSON

commit e8cb5c221d
Author: Vitalik Buterin <v@buterin.com>
Date:   Mon Jul 21 23:30:33 2014 -0400

    Added next/prev trie test

commit 98823c04b3
Author: Vitalik Buterin <v@buterin.com>
Date:   Mon Jul 14 02:51:31 2014 -0400

    Replaced with deterministic test

commit 357eb21e4d
Author: Vitalik Buterin <v@buterin.com>
Date:   Sun Jul 13 16:12:56 2014 -0400

    Added my own random and namecoin tests (pyethereum)

commit 00cd0cce8f
Author: Gav Wood <i@gavwood.com>
Date:   Sat Jul 12 21:20:04 2014 +0200

    Output hex strings.

commit ddfa3af45d
Author: Gav Wood <i@gavwood.com>
Date:   Thu Jul 10 11:28:35 2014 +0100

    Everything a string.

commit d659f469a9
Author: Gav Wood <i@gavwood.com>
Date:   Thu Jul 10 10:16:25 2014 +0100

    Code fixes.

commit 5e83ea8228
Author: Gav Wood <i@gavwood.com>
Date:   Sun Jul 6 16:17:12 2014 +0200

    Prettier VM tests.

commit a09aae0efe
Author: Gav Wood <i@gavwood.com>
Date:   Sun Jul 6 15:46:01 2014 +0200

    Fix VM tests.

commit ec9a044a17
Merge: 4bb6461 5e0123f
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Fri Jul 4 15:56:52 2014 +0200

    Merge pull request #10 from romanman/patch-1

    Update vmtests.json

commit 5e0123fbe1
Author: romanman <roman.mandeleil@gmail.com>
Date:   Fri Jul 4 10:23:04 2014 +0100

    Update vmtests.json

commit 2b6da2f5f2
Author: romanman <roman.mandeleil@gmail.com>
Date:   Thu Jul 3 17:45:04 2014 +0100

    Update vmtests.json

    arith testcase updated

commit 4bb646117d
Merge: bba3898 a33b309
Author: Gav Wood <i@gavwood.com>
Date:   Wed Jul 2 19:43:22 2014 +0200

    Merge branch 'develop' of github.com:/ethereum/tests into develop

commit bba38980bd
Author: Gav Wood <i@gavwood.com>
Date:   Wed Jul 2 19:43:06 2014 +0200

    New tests.

commit a33b309d99
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jul 2 10:14:05 2014 -0400

    Testing submodules

commit 50318217ca
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jul 2 10:10:46 2014 -0400

    Testing submodules

commit 57fa655522
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jul 2 10:09:08 2014 -0400

    Testing submodules

commit ea0eb0a8c8
Author: Gav Wood <i@gavwood.com>
Date:   Tue Jul 1 15:19:34 2014 +0200

    Latest genesis block.

commit 25bb76b69c
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Mon Jun 30 13:25:04 2014 +0200

    Reset

commit 74c6d8424e
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Mon Jun 30 12:10:06 2014 +0200

    Updated wrong test

commit 9ea3a60291
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Sat Jun 28 18:48:28 2014 +0200

    Fixed roots

commit 5fc3ac0e92
Author: Gav Wood <i@gavwood.com>
Date:   Sat Jun 28 18:40:06 2014 +0200

    Simple hex test.

commit edd3a00c2a
Author: Gav Wood <i@gavwood.com>
Date:   Sat Jun 28 18:22:18 2014 +0200

    Additional test for jeff. Now use the 0x... notation.

commit 5021e0dd83
Author: Gav Wood <i@gavwood.com>
Date:   Fri Jun 27 21:35:26 2014 +0200

    VM test framework updated.

commit c818d13202
Author: Gav Wood <i@gavwood.com>
Date:   Fri Jun 27 18:18:24 2014 +0200

    Removed arrays from Trie tests JSON as per conformance guide and changed
    vocabulary to match other tests.
    VM test updates.

commit 714770ffb3
Author: Gav Wood <i@gavwood.com>
Date:   Wed Jun 11 11:32:42 2014 +0100

    Added Gav's new address.

commit 9345bc13d4
Merge: a2257f3 78576dd
Author: Gav Wood <i@gavwood.com>
Date:   Fri May 30 17:50:38 2014 +0200

    Merge branch 'master' of github.com:ethereum/tests into develop

commit a2257f3471
Author: Gav Wood <i@gavwood.com>
Date:   Fri May 30 17:50:18 2014 +0200

    VM tests.

commit 78576dd3d3
Author: Heiko Heiko <heiko@heiko.org>
Date:   Fri May 30 17:19:09 2014 +0200

    changes based on new account structure nonce, balance, storage, code

commit 125839e848
Merge: 42e14ec 356a329
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Thu May 22 09:58:45 2014 +0200

    Merge pull request #5 from bkirwi/master

    Fix invalid JSON (removed trailing comma) and add test names

commit 356a3296bc
Author: Ben Kirwin <ben@kirw.in>
Date:   Thu May 22 00:20:48 2014 -0400

    Add some arbitrary test names

    This should now conform to the format specified in the README.

commit 42e14ec54f
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Wed May 21 23:27:40 2014 +0800

    revert to correct data

commit 4300197a74
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Wed May 21 22:42:23 2014 +0800

    fix: wrong sha3 hash because of the wrong rlp hex

commit a0d01b1a0b
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Wed May 21 22:29:53 2014 +0800

    fix: wrong rlp hex

commit 6bc2fc7405
Merge: 66bc366 c31a93c
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Wed May 21 14:11:37 2014 +0200

    Merge pull request #4 from ethers/master

    fix file name that seems to have been a typo

commit c31a93c27a
Author: ethers <ethereum@outlook.com>
Date:   Tue May 20 15:42:39 2014 -0700

    fix file name that seems to have been a typo

commit 66bc3665c1
Author: Heiko Heiko <heiko@heiko.org>
Date:   Tue May 20 17:36:35 2014 +0200

    fix: represent integers as strings

commit ede5499da6
Author: Heiko Heiko <heiko@heiko.org>
Date:   Tue May 20 17:21:09 2014 +0200

    add: current initial alloc and genesis hashes

commit 5131429abb
Author: Ben Kirwin <ben@kirw.in>
Date:   Mon May 19 11:18:31 2014 -0400

    Delete a comma

    This should now be parseable as JSON.

commit f44a859331
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Sun May 18 15:04:42 2014 +0800

    add: case when value is long, ensure it's not get rlp encoded as node

commit e1ae4ad449
Author: Gav Wood <i@gavwood.com>
Date:   Mon May 12 14:40:47 2014 +0100

    PoC-5 VM tests.

commit 2b6c136dda
Author: Vitalik Buterin <v@buterin.com>
Date:   Sun May 11 21:42:41 2014 -0400

    Moved txt to json

commit cbccbf977c
Merge: edbb8d4 45a0974
Author: Vitalik Buterin <v@buterin.com>
Date:   Thu May 8 21:54:48 2014 -0400

    New commit

commit edbb8d407e
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue May 6 16:53:43 2014 -0400

    Removed unneeded test, added new tests

commit 45a0974f6f
Merge: 15dd8fd 5fd2a98
Author: Gav Wood <i@gavwood.com>
Date:   Sun Apr 27 12:53:47 2014 +0100

    Merge pull request #3 from autolycus/develop

    Fixed formatting and added test cases

commit 5fd2a98fcb
Author: Carl Allendorph <callendorph@gmail.com>
Date:   Sat Apr 19 13:26:14 2014 -0700

    Added some new test cases for the rlp encoding.

commit 4ba150954e
Author: Carl Allendorph <callendorph@gmail.com>
Date:   Sat Apr 19 12:48:42 2014 -0700

    Converted spaces to tabs to be compliant with the coding standards defined in cpp-ethereum

commit 15dd8fd794
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 28 12:54:47 2014 +0000

    RLP tests and Trie updates.

commit 33f80fef21
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 28 11:39:35 2014 +0000

    Hex encode tests done.

commit e1f5e12abb
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 28 11:22:49 2014 +0000

    Fix RLP tests.

commit f87ce15ad2
Author: Gav Wood <i@gavwood.com>
Date:   Thu Feb 27 13:28:11 2014 +0000

    Fix empty string.

commit c006ed4ffd
Author: Gav Wood <i@gavwood.com>
Date:   Mon Feb 24 10:24:39 2014 +0000

    Tests fix.

commit 510ff56363
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:54:08 2014 +0000

    Updated the tests.

commit a0ec843832
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:49:24 2014 +0000

    Moved over to new format, but RLP tests still need updating.

commit 660cd26f31
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:35:51 2014 +0000

    More docs.

commit 6ad14c1a15
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:33:39 2014 +0000

    Added VM test suite.
    Added TODO.
    Renamed old files.

commit f91ad7b385
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jan 8 11:26:58 2014 -0500

    update trie algorithm

commit 6da2954462
Merge: cc42246 131c610
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jan 8 08:15:38 2014 -0500

    merge

commit cc4224675f
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue Jan 7 14:35:26 2014 -0500

    Updated trie test

commit 131c610da6
Merge: 121632b 7613302
Author: vbuterin <v@buterin.com>
Date:   Wed Jan 1 06:40:54 2014 -0800

    Merge pull request #1 from obscuren/master

    Update trietest.txt

commit 7613302b49
Author: obscuren <obscuren@users.noreply.github.com>
Date:   Wed Jan 1 15:25:21 2014 +0100

    Update trietest.txt

    New proposed explanatory format

commit 121632bedd
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jan 1 08:26:18 2014 -0500

    Added obscure's tests

commit ef6c5506c3
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue Dec 31 19:04:48 2013 -0500

    Fixed tests a bit

commit 345e4bcfef
Merge: 2c81698 e4bbea4
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue Dec 31 15:52:46 2013 -0500

    Merge branch 'master' of github.com:ethereum/tests

commit 2c81698f31
Author: Vitalik Buterin <v@buterin.com>
Date:   Mon Dec 30 21:09:40 2013 -0500

    Added first three tests

commit e4bbea400f
Author: vbuterin <v@buterin.com>
Date:   Mon Dec 30 18:09:03 2013 -0800

    Initial commit
2014-12-12 11:34:27 +01:00
Jeffrey Wilcke
d899334bba Merge pull request #1 from Gustav-Simonsson/fix_reference_links
Update reference pdf links
2014-12-11 23:30:45 +01:00
CJentzsch
779f25d36c first random test 2014-12-11 22:59:56 +01:00
CJentzsch
68175386c0 update gas prices 2014-12-11 21:34:50 +01:00
Gustav Simonsson
ce796dcdbf Update reference pdf links 2014-12-11 13:25:01 +01:00
obscuren
2b5fcb4642 moved interfaces 2014-12-10 20:26:55 +01:00
obscuren
5553e5aaed states moved to chain 2014-12-10 19:59:12 +01:00
obscuren
af6afbaa56 Removed start/stop methods 2014-12-10 16:48:39 +01:00
obscuren
1b98cbbfa4 Moved pow 2014-12-10 16:45:16 +01:00
zelig
3e38f8af23 initial commit for eth blockpool + test 2014-12-10 14:51:47 +00:00
zelig
e74f9f27db eth protocol changes
- changed backend interface
- using callbacks for blockPool
- use rlp stream for lazy decoding
- use peer as logger
- add id (peer pubkey) to ethProtocol fields
- add testPeer to protocol test (temporary)
2014-12-10 14:51:47 +00:00
zelig
31a9fdced8 no logging in error (to be refactored into p2p) 2014-12-10 14:51:47 +00:00
zelig
47793b606c initial commit for eth-p2p integration 2014-12-10 14:51:47 +00:00
obscuren
4082c8b61d added simple peer server 2014-12-10 15:29:22 +01:00
obscuren
dda778eda7 Updated whisper messages to new crypto api + added tests 2014-12-10 14:17:32 +01:00
obscuren
0f5c6c5e2d Changed new methods to use ecdsa package for pub prv keys 2014-12-10 14:17:10 +01:00
obscuren
186948da22 changed to unsigned integers 2014-12-10 11:27:10 +01:00
obscuren
4f1ef89cb2 updated tests 2014-12-10 11:04:21 +01:00
obscuren
1fb84d3c5f Fixed tests 2014-12-10 10:57:19 +01:00
obscuren
3308491c92 Removed tests because they've become obsolete 2014-12-10 00:09:32 +01:00
obscuren
9ff7be68fb Merge branch 'poc8' into develop 2014-12-10 00:06:38 +01:00
Jeffrey Wilcke
ce0c4e5d86 Merge pull request #203 from fjl/rlp-fixes
RLP: remove signed integer support and other fixes
2014-12-10 00:06:17 +01:00
obscuren
984c7e6689 Added encryption for messages better API for sealing messages 2014-12-10 00:03:50 +01:00
obscuren
87adff7e18 Added Encrypt & Decrypt using the ECIES w/ tests 2014-12-10 00:03:21 +01:00
obscuren
c24018e273 Added S256 curve 2014-12-10 00:02:43 +01:00
obscuren
6cf6981ed0 init 2014-12-10 00:00:52 +01:00
Felix Lange
6cf4e0329c rlp: display decoder target type in more error messages
Decode error messages now say "expected input list for foo.MyStruct"
instead of just "expected List".
2014-12-09 22:28:49 +01:00
obscuren
df5157c0b0 PV49 2014-12-09 20:28:36 +01:00
obscuren
acf4b5753f Core changes
* Code = '' if gas < len(D) * 5
* Sha3 gas   10 + 10 * len(D), rounding up 32 bytes
* Sha256 gas 50 + 50 * len(D), rounding up 32 bytes
* Ripmed gas 50 + 50 * len(D), rounding up 32 bytes
* Accounts and value transfers no longer reverted
2014-12-09 20:27:57 +01:00
Felix Lange
829730dec4 rlp: remove dead code 2014-12-09 12:49:20 +01:00
Felix Lange
c084a7daa5 rlp: fix panic in decodeList on go 1.4+
The documentation for reflect.Value.Index states that it will
panic for out-of-bounds indices. Since go 1.4, it actually panics.
2014-12-09 10:58:46 +01:00
Felix Lange
93e858f88e rlp: remove support for signed integer types
There is no agreement on how to encode negative integers
across implementations. cpp-ethereum doesn't support them either.
2014-12-09 10:58:46 +01:00
Felix Lange
4f12f0697e rlp: move decoder type switch to decode.go 2014-12-09 10:52:05 +01:00
obscuren
76842b0df8 Additional checks and debug output 2014-12-08 14:25:52 +01:00
obscuren
e3a8412df3 Proper start/stoping wpeers 2014-12-08 13:16:50 +01:00
obscuren
ebe2d9d872 First draft of Whisper messages relaying 2014-12-08 12:43:33 +01:00
CJentzsch
ad322fbb58 Log as array 2014-12-08 06:01:17 +01:00
obscuren
f06543fd06 Merge branch 'poc8' into develop 2014-12-05 16:27:48 +01:00
obscuren
195b2d2ebd Merge branch 'fjl-feature/p2p-protocol-interface' into poc8 2014-12-05 16:27:37 +01:00
obscuren
384b8c75f0 Merge branch 'feature/p2p-protocol-interface' of https://github.com/fjl/go-ethereum into fjl-feature/p2p-protocol-interface 2014-12-05 16:27:11 +01:00
obscuren
9925916851 upped proto version and modified block pool 2014-12-05 16:26:39 +01:00
CJentzsch
f989f42618 state log tests 2014-12-05 15:12:12 +01:00
obscuren
095cb97675 EXP simplified 2014-12-05 14:52:36 +01:00
obscuren
d80f8bda94 Fixed issue in VM where LOG didn't pop anything of the stack 2014-12-05 12:32:47 +01:00
obscuren
3cf0477c21 Merge branch 'poc8' into develop 2014-12-04 23:54:40 +01:00
obscuren
8dbca75d85 Skip mining on transactions that don't meet the min accepted gas price 2014-12-04 23:54:07 +01:00
Jeffrey Wilcke
710360bab6 Merge pull request #199 from ethereum/tests
Submit code coverage to coveralls only on travis build success
2014-12-04 23:00:12 +01:00
CJentzsch
4bc65d1129 add calldataload, codecopy, extcodecopy tests 2014-12-04 18:18:49 +01:00
obscuren
3db9c80070 Removed mutan. Closes #183 2014-12-04 17:13:23 +01:00
obscuren
085f604b27 Show newly created private key during startup. Closes #126 2014-12-04 17:09:47 +01:00
obscuren
a5b27bbc10 Improved and simplified wallet functions and behaviour 2014-12-04 16:44:43 +01:00
obscuren
8c7e4b290f Added pre processing of transaction on the transient state 2014-12-04 16:44:14 +01:00
CJentzsch
12cfae18e3 add calldataload test 2014-12-04 15:57:56 +01:00
obscuren
5653898150 vim error :S 2014-12-04 15:38:41 +01:00
obscuren
73123bf257 Only set TD if it's actually higher 2014-12-04 15:35:21 +01:00
obscuren
73c4ca3a6f Upped protocol version 2014-12-04 15:31:48 +01:00
obscuren
296112848c Moved block validation as first step 2014-12-04 15:13:29 +01:00
obscuren
008e91db6a null ptr fix 2014-12-04 12:43:12 +01:00
obscuren
3043b233ea Log is now interface 2014-12-04 12:35:23 +01:00
obscuren
bff5999efa sort tests for evm 2014-12-04 12:09:22 +01:00
obscuren
f298ffdbb8 Renamed State => StateDB 2014-12-04 11:40:20 +01:00
obscuren
3664cd58e3 Updated testing tools 2014-12-04 11:30:41 +01:00
obscuren
491edc16e7 Fixes #189 2014-12-04 10:57:09 +01:00
obscuren
83663ed4b0 Renames for chain, updated VM, moved methods
* Renamed a couple more chain => core
* Updated VM `pc` to be uint64 rather than big int
* XEth interface cleanup
2014-12-04 10:53:49 +01:00
obscuren
9008b155d3 Renamed chain => core 2014-12-04 10:28:02 +01:00
obscuren
b6cb5272de Descriptive function names for closure getters 2014-12-03 17:35:57 +01:00
obscuren
6d99c03d91 Updated environments according to the new interface set 2014-12-03 17:22:26 +01:00
obscuren
99853ac3ce Moved execution from vm to chain.
This moves call and create to the specified environments. Vms are no
longer re-used. Vm uses environment's Call(Code) and Create in order to
execute new contracts or transfer value between accounts.

State transition now uses the same mechanism described above.
2014-12-03 17:06:54 +01:00
obscuren
8240550187 updated to types 2014-12-03 14:05:19 +01:00
obscuren
709eff4ea7 reverted vm back 2014-12-03 13:52:30 +01:00
obscuren
6212175be3 reverted vm back 2014-12-03 13:52:13 +01:00
obscuren
6095edac58 merge 2014-12-03 13:50:51 +01:00
obscuren
3d9a4e7084 Fixed mem error in vm. Fixed logs tests 2014-12-03 12:21:12 +01:00
CJentzsch
086caf3701 protocol update (CALLCODE <-> RETURN), topics in log are arrays not sets 2014-12-03 08:31:03 +01:00
obscuren
f778922086 Set proper message value 2014-12-02 22:37:45 +01:00
obscuren
edc52bdcbf Updated value for mined blocks. Closes #197 2014-12-02 22:23:20 +01:00
obscuren
0a22dc2ce5 Check coinbase for from/to inclusion 2014-12-02 22:22:43 +01:00
obscuren
cb4d168ecc Updated LOG to match proper gas in all cases 2014-12-02 17:22:33 +01:00
obscuren
5ebae82eeb Additional logging and removed temp merged mining options. 2014-12-02 12:23:27 +01:00
obscuren
64f35ba8d1 merge errors fixed 2014-12-02 11:52:56 +01:00
obscuren
99481a245a Check for known block err and ignore 2014-12-02 11:37:33 +01:00
obscuren
9f7a8ea5e6 updated tests 2014-12-02 10:29:39 +01:00
obscuren
b4eeffa8f1 Transaction strictness 2014-12-02 00:14:34 +01:00
obscuren
2df8ad6307 Added state tests 2014-12-02 00:03:53 +01:00
obscuren
a052357872 Fixed EXP gas 2014-12-01 22:05:38 +01:00
CJentzsch
e6c92673b9 update state tests with logs 2014-12-01 21:14:08 +01:00
obscuren
a22056db59 Make an attempt to pay for the gas prior to expanding the mem. 2014-12-01 20:49:56 +01:00
obscuren
beb7d35c40 Updated tests 2014-12-01 20:21:41 +01:00
obscuren
d33987cb44 Additional fees for *COPY 2014-12-01 20:20:55 +01:00
obscuren
6dc46d3341 Changed the way transactions are being added to the transaction pool 2014-12-01 20:18:09 +01:00
CJentzsch
4089b809fb update gas costs 2014-12-01 18:19:40 +01:00
Christoph Jentzsch
cfdca62277 Merge pull request #42 from negedzuregal/fix
vmTest fix
2014-12-01 18:04:51 +01:00
alon muroch
f59f89d876 vmEnvironmentalInfoTest CALLDATACOPY, CODECOPY, EXTCODECOPY fix 2014-12-01 16:18:12 +01:00
alon muroch
68da13fe3e vmArithmeticTest exp fix 2014-12-01 11:10:57 +01:00
obscuren
616066a598 rework vm 2014-11-30 21:02:59 +01:00
ethers
2e5175e818 add vmLogTest 2014-11-30 19:55:51 +01:00
Heiko Heiko
b5b9408e64 updated genesis to new header w/o min_gas_price 2014-11-30 16:27:27 +01:00
Ethan Buchman
7c24cd790d fix panic on bad sender 2014-11-28 19:42:05 -05:00
obscuren
1bce02eff7 Fixed merge 2014-11-28 21:44:34 +01:00
obscuren
a3559c5e1b updated PV 2014-11-28 21:38:10 +01:00
obscuren
c8d0f8adc5 Changed refund 2014-11-28 21:20:32 +01:00
obscuren
6ba8328077 Removed min gas price from genesis 2014-11-28 20:57:10 +01:00
obscuren
61556ef01d GasData changes & removed min gas price 2014-11-28 20:47:24 +01:00
Taylor Gerring
ef7961b7d2 Merge pull request #194 from ethereum/poc8
Update tests branch to PoC8
2014-11-27 13:23:31 +01:00
Taylor Gerring
c17a3cb0ce chain coverage report & submission
prevent coverage results from being submitted to coveralls if when the
build fails
2014-11-27 12:42:13 +01:00
Felix Lange
cfd7e74c25 p2p: add test for NewPeer 2014-11-26 22:49:40 +01:00
Felix Lange
3a09459c4c p2p: make Disconnect not hang for peers created with NewPeer 2014-11-26 22:08:54 +01:00
Felix Lange
9b85002b70 p2p: remove Msg.Value and MsgLoop 2014-11-25 16:01:39 +01:00
Felix Lange
f816fdcb69 rlp: include target type in decoder error messages 2014-11-25 16:00:48 +01:00
Felix Lange
6049fcd52a p2p: use package rlp for baseProtocol 2014-11-25 12:25:31 +01:00
Felix Lange
c1fca72552 p2p: use package rlp 2014-11-24 19:03:20 +01:00
Felix Lange
205af02a1f rlp: add NewListStream (for p2p) 2014-11-24 19:03:17 +01:00
Felix Lange
5a5560f105 rlp: add Stream.Reset and accept any reader (for p2p) 2014-11-24 19:03:11 +01:00
ethers
8e69fbfa98 add special tests 2014-11-21 17:42:05 -08:00
Felix Lange
59b63caf5e p2p: API cleanup and PoC 7 compatibility
Whoa, one more big commit. I didn't manage to untangle the
changes while working towards compatibility.
2014-11-21 21:52:45 +01:00
Felix Lange
e4a601c644 p2p: disable failing Server tests for now 2014-11-21 21:52:45 +01:00
Felix Lange
7149191dd9 p2p: fix issues found during review 2014-11-21 21:52:45 +01:00
Felix Lange
f38052c499 p2p: rework protocol API 2014-11-21 21:52:45 +01:00
Jeffrey Wilcke
4cd9d57bad Merge pull request #187 from honestmoney/develop
Fix for broken develop build and install.sh
2014-11-21 13:22:14 -05:00
obscuren
8cf9ed0ea5 Fixed test 2014-11-21 10:48:07 -05:00
Eric Robitaille
28b7dcc204 go get deps doesnt work with develop branch 2014-11-21 08:16:32 -05:00
Eric Robitaille
eba3fca7bc go get dependencies on executable 2014-11-21 08:05:52 -05:00
Eric Robitaille
6c098ee779 changed install.sh to change branch and install executable 2014-11-21 00:06:33 -05:00
ethers
90f4f942e6 typo 2014-11-20 19:01:09 -08:00
Eric Robitaille
c0bbb7e69a fix for install script devel 2014-11-20 15:02:24 -05:00
Eric Robitaille
d5ac24907e Updated install.sh - github paths for executables 2014-11-20 14:25:26 -05:00
Eric Robitaille
0f47129113 Updated main.go - fix for broken develop build
Transaction execution fixes - 60cdb1148c
2014-11-20 14:16:22 -05:00
obscuren
9b8a12b4b5 Removed naively casting to bytes 2014-11-20 18:20:04 +01:00
obscuren
12f1aea38d Fixed iterator for short nodes.
In some cases the iterator didn't properly return the correct key
because it didn't append fields to the reverse lookup.
2014-11-20 18:11:31 +01:00
Christoph Jentzsch
c5e5228e0d Removed log,post,out,gas,callcreates if exception occured 2014-11-20 17:04:06 +01:00
Christoph Jentzsch
9c0232a2b9 MakeMoney test 2014-11-19 18:19:05 +01:00
obscuren
b05e63c34d Added paranoia check for tries 2014-11-19 16:56:01 +01:00
obscuren
cab7e6000e Increased coverage 2014-11-19 16:35:57 +01:00
Christoph Jentzsch
3ba0007e86 Added log sections in all vmtests + log tests 2014-11-19 16:23:04 +01:00
obscuren
0f460ad26e Added caching and database interface to trie
* Reimplemented caching for trie
* Reimplemented resetting and persisting trie
2014-11-19 16:21:28 +01:00
obscuren
e70529a977 Added new iterator and tests 2014-11-19 15:05:08 +01:00
obscuren
14e2e488fd Added chain tests & minor fixes
* Fork tests (equal and larger chains)
* `chain.link` fields are now exported
* moved debug function from state to dump.go
2014-11-19 12:25:52 +01:00
Christoph Jentzsch
d84be4fe07 Merge remote-tracking branch 'origin/develop' into develop 2014-11-19 10:00:24 +01:00
Christoph Jentzsch
c8497ab257 new push32 test and renaming 2014-11-19 10:00:02 +01:00
obscuren
437d79f094 Updated readme 2014-11-18 20:23:17 +01:00
obscuren
93e693be72 Fixed tests for 'types' 2014-11-18 19:52:45 +01:00
obscuren
675ba4d7eb Merge branch 'tests' into poc8 2014-11-18 19:48:35 +01:00
obscuren
f8d0cd9906 Added a callback mechanism to chain adding.
Not sure if this is the right approach. Why? BlockChain shouldn't need
the "Ethereum" object. BlockChain shouldn't need to worry about
notifying listeners or message propagation.
2014-11-18 19:44:17 +01:00
obscuren
a1b6a9ac29 Begin of moving objects to types package
* Block(s)
* Transaction(s)
2014-11-18 16:58:22 +01:00
Marek Kotewicz
b402484e41 common changes 2014-11-18 13:59:17 +01:00
obscuren
62cd9946ee j => i 2014-11-18 12:20:14 +01:00
obscuren
e08aba5dd9 added output test 2014-11-18 12:18:27 +01:00
obscuren
34f29d57b6 Update vm_debug.go 2014-11-18 12:03:51 +01:00
obscuren
3220a32ff0 Added some comparison tests for the new ptrie 2014-11-18 12:03:09 +01:00
obscuren
f7417d3552 New modified patricia trie 2014-11-18 12:02:13 +01:00
Marek Kotewicz
04845d42c0 Merge pull request #1 from cubedro/master
Fixed autoprovider bug
2014-11-18 09:08:15 +01:00
Marian Oancea
0d526d66b7 Updated version
Changed version from npm in order to publish the update
2014-11-18 09:23:16 +02:00
Marian OANCΞA
8fe16df6c9 Merge pull request #11 from debris/master
Update
2014-11-18 09:21:06 +02:00
Marian Oancea
1a9624af51 Fixed require web3 bug
Fixed error "Cannot find module './web3'" in autoprovider.js
2014-11-18 09:11:16 +02:00
Marian OANCΞA
8b7e59729f Merge pull request #10 from debris/abi
Abi
2014-11-18 09:00:01 +02:00
ethers
76d25420e1 adding test 2014-11-17 18:59:30 -08:00
Christoph Jentzsch
0be275e757 Merge remote-tracking branch 'origin/develop' into develop 2014-11-17 22:47:34 +01:00
Christoph Jentzsch
1d42d1d7c6 fix ecrecover2 2014-11-17 22:46:51 +01:00
Christoph Jentzsch
d90868c307 Merge pull request #39 from wanderer/develop
added test for max call depth on creation
2014-11-17 20:26:59 +01:00
wanderer
6dbcf6b0d6 spelling fix 2014-11-17 14:06:43 -05:00
Taylor Gerring
5c958ec5f6 Undo running go vet in travis 2014-11-17 10:53:24 -06:00
Taylor Gerring
2a5af8fac7 enable go vet 2014-11-17 10:40:40 -06:00
Taylor Gerring
559a81da6f enable golint 2014-11-17 10:21:19 -06:00
Marek Kotewicz
27a8799e48 added eth_serpent, contract separated to another file 2014-11-17 15:46:46 +01:00
obscuren
a19d2c2278 Merge branch 'develop' into refactor 2014-11-17 12:14:05 +01:00
obscuren
cad770c734 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2014-11-17 12:13:11 +01:00
obscuren
ca74bcc4cd cleaning up 2014-11-17 12:12:55 +01:00
Jeffrey Wilcke
b4e47a094c Merge pull request #184 from fjl/feature/rlp
rlp: new package for streaming RLP decoder
2014-11-17 03:12:18 -08:00
Felix Lange
bd0a50fdc3 rlp: fix pointer reuse 2014-11-17 12:02:08 +01:00
Felix Lange
74266d5bbd rlp: new package for streaming RLP decoder 2014-11-17 01:49:47 +01:00
Taylor Gerring
9095b37343 Convert vm test to checker
Tests are skipped due to reliance on deprecated mutan
2014-11-16 13:45:46 -06:00
Taylor Gerring
ffab36c7d8 Update ethutil/common tests to checker 2014-11-16 12:08:27 -06:00
Taylor Gerring
f82fb889b7 Add goveralls to travis builds 2014-11-16 08:34:28 -06:00
wanderer
6fc07a7f81 added test for max call depth on creation 2014-11-15 21:39:59 -05:00
Taylor Gerring
ddca18638f update imports order per goimports 2014-11-15 20:21:55 -06:00
Taylor Gerring
3588c4a9fe formatting update per gofmt 2014-11-15 20:21:03 -06:00
Taylor Gerring
71b338e8ac update travis steps 2014-11-15 19:45:05 -06:00
Taylor Gerring
58812fad42 Reorg travis.yml 2014-11-15 19:36:30 -06:00
Taylor Gerring
790ded0f47 Update travis deps script 2014-11-15 19:11:43 -06:00
Taylor Gerring
6dbd7a9a80 add websocket to deps 2014-11-15 18:59:56 -06:00
Taylor Gerring
e1e50f4afd add go cover to install list 2014-11-15 18:54:26 -06:00
Taylor Gerring
3a656c07f1 add go-nat-pmp to manual install list 2014-11-15 18:49:18 -06:00
Taylor Gerring
ec75119341 Update deps script 2014-11-15 18:42:48 -06:00
Taylor Gerring
0b64906a72 Add -y flags 2014-11-15 18:28:09 -06:00
Taylor Gerring
1beb9a2b8b update apt repos 2014-11-15 18:22:01 -06:00
Taylor Gerring
242667ebe5 update travis build deps 2014-11-15 18:12:50 -06:00
Taylor Gerring
5211fb0c79 make script executable 2014-11-15 17:56:16 -06:00
Taylor Gerring
81e7f8679e script fix 2014-11-15 17:51:58 -06:00
Taylor Gerring
6f7f570670 custom travis build script
Based on https://github.com/daaku/go.travis/blob/master/install
2014-11-15 17:45:08 -06:00
Taylor Gerring
8f9a354682 try to fix travis dep error 2014-11-15 09:07:02 -06:00
Taylor Gerring
bc5d924b83 more travis changes 2014-11-14 22:23:31 -06:00
Taylor Gerring
9481f86c37 run coverage after build 2014-11-14 22:17:01 -06:00
Taylor Gerring
dd9e99a418 try to get full coverage report on travis 2014-11-14 20:58:09 -06:00
martin becze
1f38c8c0a2 Merge pull request #38 from wanderer/develop
updated test  'jeff' in trietest.json
2014-11-14 20:10:21 -05:00
martin becze
cd85ca17ed Update trietest.json 2014-11-14 19:59:34 -05:00
obscuren
33afb10b0d clean up 2014-11-15 00:29:27 +01:00
martin becze
279b284c0d Merge pull request #37 from wanderer/develop
Update trietest.json
2014-11-14 17:43:49 -05:00
martin becze
6cae937e5e Update trietest.json
'emptyValues' should have the same root as 'puppy'
2014-11-14 17:20:03 -05:00
Taylor Gerring
1ecb3b4cf3 Remove failing Printf 2014-11-14 15:53:45 -06:00
Taylor Gerring
dcd8cc8341 added test file to root directory 2014-11-14 15:31:15 -06:00
Taylor Gerring
e6e468ef59 Merge branch 'develop' of https://github.com/tgerring/go-ethereum into tests
Conflicts:
	p2p/messenger_test.go
	trie/trie_test.go
2014-11-14 15:19:50 -06:00
Taylor Gerring
2a9fc7baa9 Merge branch 'develop' of https://github.com/tgerring/go-ethereum 2014-11-14 15:01:52 -06:00
Jeffrey Wilcke
f6ee8e52dd Merge pull request #13 from frewsxcv/master
Enable JSHint linting
2014-11-14 20:24:55 +01:00
Corey Farwell
08f2dde45a Enable JSHint linting 2014-11-14 14:00:19 -05:00
Jeffrey Wilcke
42713c6e99 Merge pull request #12 from debris/master
simplifie contract creation && calls, improved added examples
2014-11-14 17:20:05 +01:00
Jeffrey Wilcke
7ffba22f2d Merge pull request #10 from cubedro/master
NPM module with minification for browser integration.
2014-11-14 17:16:28 +01:00
Jeffrey Wilcke
60198a05b9 Merge pull request #11 from ethereum/revert-6-master
Revert "Run JSHint on all code using Travis CI"
2014-11-14 17:08:47 +01:00
Jeffrey Wilcke
6b8b1259e2 Revert "Run JSHint on all code using Travis CI" 2014-11-14 17:08:29 +01:00
Jeffrey Wilcke
c966a5c17e Merge pull request #6 from frewsxcv/master
Run JSHint on all code using Travis CI
2014-11-14 17:07:38 +01:00
obscuren
56aa24002d Clean up 2014-11-14 14:17:54 +01:00
obscuren
711be7009e Version bump 2014-11-14 13:51:41 +01:00
obscuren
f6e55962a8 Fixes for PV41/42
* Don't expand mem on empty value
* Removed all coinbase logs for PV42
* Removed C++ bug stuff for LOG*
2014-11-14 13:47:12 +01:00
Marek Kotewicz
ea8db7a4ae improved contracts interface 2014-11-14 13:11:47 +01:00
Christoph Jentzsch
89675a7153 Merge remote-tracking branch 'origin/develop' into develop 2014-11-13 23:17:49 +01:00
Christoph Jentzsch
f1de1cc97a Fix CallRecursiveBomb2 2014-11-13 23:17:13 +01:00
martin becze
32f0c47c68 Merge pull request #36 from wanderer/develop
converted back to arrary format
2014-11-13 15:26:49 -05:00
Marek Kotewicz
8aaec1d98f improved example 2014-11-13 19:28:58 +01:00
Marek Kotewicz
b1428555d1 added storageAt 2014-11-13 18:29:31 +01:00
obscuren
20d518ee95 Numerous fixes for consensus.
* Removed (buged) C++ specific gas specification for LOG*
* Fixed LOG* where mstart went after msize
*
2014-11-13 18:12:12 +01:00
Marek Kotewicz
0e67fcd361 contract object 2014-11-13 12:24:34 +01:00
Christoph Jentzsch
ab50e76652 Merge pull request #35 from ethers/delOld
rename tests since they are valid opcodes that exist
2014-11-13 07:52:35 +01:00
Taylor Gerring
313cfba7d4 convert trie encoding tests to checker 2014-11-13 04:40:21 +01:00
wanderer
3da90d01f6 converted back to arrary format 2014-11-12 22:22:47 -05:00
Marek Kotewicz
d99fea2db6 abi output formatting 2014-11-13 04:21:51 +01:00
ethers
78f1e4a945 rename tests since they are valid opcodes that exist 2014-11-12 19:11:06 -08:00
Taylor Gerring
461324a801 Remove references to mutan
obscuren/mutan is deprecated
2014-11-12 22:08:56 +01:00
Taylor Gerring
fa59db7595 Add initial state/TestDump test 2014-11-12 22:03:03 +01:00
Taylor Gerring
bd9bd4abed Reorg state tests 2014-11-12 22:02:39 +01:00
Taylor Gerring
6eacc8eab9 eth-go -> go-ethereum 2014-11-12 21:52:37 +01:00
Taylor Gerring
00878e5b6e Convert trie tests to gocheck 2014-11-12 21:43:25 +01:00
Marek Kotewicz
7ce63d32b2 qt version also requires abi 2014-11-12 20:56:21 +01:00
Marek Kotewicz
3451f26086 changes to make everything work 2014-11-12 20:39:13 +01:00
Marek Kotewicz
05290d5547 abi, the beginning 2014-11-12 18:59:29 +01:00
Christoph Jentzsch
d06b792cd0 minor change in CallSha256_1_nonzeroValue test 2014-11-12 07:00:17 +01:00
Christoph Jentzsch
d434ecdcc3 Added CallSha256_1_nonzeroValue test 2014-11-12 06:56:31 +01:00
obscuren
60cdb1148c Transaction execution fixes 2014-11-12 01:36:36 +01:00
obscuren
9bb1ac7564 Fixes for the log method 2014-11-11 23:14:22 +01:00
obscuren
6c9e503eb8 Removed all implicit logging. Fixed gas issues and jump errors 2014-11-11 22:52:27 +01:00
Taylor Gerring
1d866b5e57 Merge pull request #1 from tgerring/tests
Initial tests based on check framework
2014-11-11 20:37:18 +01:00
Taylor Gerring
5c5df21e3d Update TestDeleteFromByteSlice
Still broken
2014-11-11 20:05:27 +01:00
Taylor Gerring
12e8404f8f Fix TestBytestoNumber 2014-11-11 20:04:03 +01:00
Taylor Gerring
0d1cdd26d6 Update TestNumberToBytes 2014-11-11 20:03:50 +01:00
Taylor Gerring
cff0d93105 Converts bytes_test to checker 2014-11-11 19:38:23 +01:00
Taylor Gerring
c24d143c9e Convert rand_test to checker 2014-11-11 19:18:52 +01:00
Taylor Gerring
bfd1fe977e Update test style to checker 2014-11-11 19:05:35 +01:00
Taylor Gerring
d9ccbf04db Move test bootstrap to main_test.go 2014-11-11 19:05:23 +01:00
Christoph Jentzsch
2c06f34cc0 Store return value of call to precompiled contracts 2014-11-11 18:10:26 +01:00
Christoph Jentzsch
4b0c3b29ae Fix gas cost for OOG calls 2014-11-11 17:51:14 +01:00
Marian OANCΞA
dc100f85b3 Merge pull request #9 from debris/autoprovider
common fixes
2014-11-11 17:31:04 +02:00
Marek Kotewicz
0316490c54 common fixes 2014-11-11 16:29:53 +01:00
Marian OANCΞA
d85cef557b Merge pull request #8 from debris/autoprovider
Autoprovider
2014-11-11 17:20:53 +02:00
Marek Kotewicz
838ca2fd93 autoprovider, buildQt not builds only necessery files, fixed gulpfile 2014-11-11 15:47:58 +01:00
Taylor Gerring
cd94b5ffb3 Convert value_test to use gocheck 2014-11-11 15:04:11 +01:00
Taylor Gerring
3c619baec5 Add verbose comments to TestSnapshot 2014-11-11 13:07:24 +01:00
Taylor Gerring
8f3a03c0cc Update state tests to use gocheck 2014-11-11 12:52:43 +01:00
obscuren
75ee3b3f08 debugging code 2014-11-11 12:16:36 +01:00
Marek Kotewicz
84b36a7193 retabed files 2014-11-11 11:46:46 +01:00
Marian Oancea
dea68f073e Merge branch 'debris-subprotocol_prefix_merge' 2014-11-11 12:15:36 +02:00
Marian Oancea
7af9cc70d0 fixed merge conflicts 2014-11-11 12:11:06 +02:00
Marek Kotewicz
4b876168f4 gulp qt task 2014-11-11 10:45:38 +01:00
Marek Kotewicz
d92a7527db merged subprotocol prefix 2014-11-11 10:30:21 +01:00
Heiko Heiko
63bcca7604 fix: genesis test 2014-11-11 08:59:19 +01:00
Christoph Jentzsch
6e0310c1ea Merge remote-tracking branch 'origin/develop' into develop 2014-11-11 08:34:36 +01:00
Christoph Jentzsch
30c266caff jump to position outside code stops execution 2014-11-11 08:33:59 +01:00
ethers
2927763d68 RandomTests were removed 2014-11-10 14:10:22 -08:00
Christoph Jentzsch
a0fa91b2b8 Merge branch 'develop' of https://github.com/ethereum/tests into develop 2014-11-10 22:22:05 +01:00
Christoph Jentzsch
60924843f0 Unintended Exceptions work like OOG 2014-11-10 22:21:37 +01:00
Marian Oancea
720365859c Changed npm & bower version
Changed version for next npm publish
2014-11-10 15:26:10 +02:00
Marian Oancea
d95e2b7999 Fixed jshint warnings 2014-11-10 14:53:35 +02:00
obscuren
9509322ecd Updated readme 2014-11-10 13:36:53 +01:00
Marian Oancea
6fc5d8e81e Prepare for PR
changed repo urls from package.json, bower.json and readme
2014-11-10 14:31:53 +02:00
obscuren
bed659f9b3 Moved ethtest to cmd 2014-11-10 13:31:18 +01:00
obscuren
ad0acb5762 Moved messages eventing to chain manager 2014-11-10 13:27:24 +01:00
Marian OANCΞA
67e3eff806 Merge pull request #6 from cubedro/develop
Changes from debris
2014-11-10 14:10:25 +02:00
Marian OANCΞA
f5024b4926 Merge pull request #5 from cubedro/debris-error_handling_fix
Debris error handling fix
2014-11-10 14:09:21 +02:00
Marian Oancea
c1b2595deb fix merge conflicts 2014-11-10 14:07:06 +02:00
Marian Oancea
512d4ca6a4 Merge branch 'debris-error_handling_fix' into develop 2014-11-10 14:00:02 +02:00
Marian Oancea
c91e4afe6c fix merge conflicts 2014-11-10 13:57:49 +02:00
obscuren
ebb7db263f Added dumps 2014-11-10 12:42:16 +01:00
obscuren
d30571a7a8 Added VM testing tool 2014-11-10 11:47:37 +01:00
obscuren
cbeebcd47d Fixed bloom, updated mining & block processing
* Reverted back to process blocks in batches method
* Bloom generation and lookup fix
* Minor UI changed (mainly debug)
2014-11-10 01:17:31 +01:00
obscuren
f538ea25e4 Fixed bug on gas and setting of receipts and roots 2014-11-09 23:59:25 +01:00
Marian Oancea
a2d8b89289 Added npm version 2014-11-09 21:30:27 +02:00
Marek Kotewicz
8ca991ecd2 corresponding changes from cpp-ethereum 2014-11-07 14:36:07 +01:00
Marek Kotewicz
e3ad9be4c8 missing semicolons 2014-11-07 14:07:01 +01:00
Marek Kotewicz
0d6479e1d6 proper error handling proposal 2014-11-07 14:03:46 +01:00
obscuren
429dd2a100 Implemented new miner w/ ui interface for merged mining. Closes #177
* Miner has been rewritten
* Added new miner pane
* Added option for local txs
* Added option to read from MergeMining contract and list them for
  merged mining
2014-11-07 12:18:48 +01:00
ethers
fcba866721 add StateTests 2014-11-06 14:19:59 -08:00
Marian Oancea
3270b432bc Refactoring
Removed browser fixes
Updated gulp to bypass native browser objects
Added source map for dist
2014-11-06 22:51:37 +02:00
Christoph Jentzsch
a441074ba4 Updated precompiled contracts test 2014-11-06 17:54:36 +01:00
Christoph Jentzsch
0afa72c82b Added precompiledContracts tests 2014-11-06 15:27:45 +01:00
Christoph Jentzsch
6be83dd5a1 Update gas cost for PoC7 2014-11-06 13:31:34 +01:00
Taylor Gerring
0a3a148ed4 Added more byte tests 2014-11-06 12:35:46 +01:00
Christoph Jentzsch
c18b8ab2d3 Merge remote-tracking branch 'origin/develop' into develop 2014-11-06 09:19:53 +01:00
Christoph Jentzsch
66c2e1f642 Updated SIGNEXTEND tests 2014-11-06 09:19:22 +01:00
ethers
9a9325822e part of 9b4e768 - Delete vmNamecoin.json 2014-11-05 16:20:26 -08:00
Marian Oancea
bd14b4d23e node < 0.10 fails travis build => remove 0.6 & 0.8
from travis.yml
2014-11-06 01:48:52 +02:00
Marian Oancea
4402a7d817 gulp >= 3.4.0 2014-11-06 00:49:50 +02:00
Marian Oancea
5871d1e359 Updated all dependency versions 2014-11-06 00:44:40 +02:00
Marian Oancea
2f33a8c657 Update dependencies to pass travis build 2014-11-06 00:37:07 +02:00
Marian Oancea
6dc7be6cd1 Update dependencies & travis.yml 2014-11-06 00:24:10 +02:00
Marian Oancea
7d6164b351 updated travis.yml 2014-11-05 23:31:54 +02:00
Taylor Gerring
48a3f0986c Add coverage for rand 2014-11-05 22:21:28 +01:00
Taylor Gerring
a1d62abca4 Restructure StorageSize string test 2014-11-05 22:16:44 +01:00
Marian Oancea
44ab30f628 more json fixes 2014-11-05 23:07:13 +02:00
Taylor Gerring
be96da179a Added tests for FormatData 2014-11-05 22:01:41 +01:00
Taylor Gerring
8f94f731a5 Reorder tests to match source order 2014-11-05 22:01:09 +01:00
Taylor Gerring
ab6b9c44aa Added test for IsHex 2014-11-05 22:00:01 +01:00
Taylor Gerring
4e15adac6d Remove fmt dependency 2014-11-05 21:59:22 +01:00
Marian Oancea
dcae30c1e4 updated bower.json ignore 2014-11-05 22:58:06 +02:00
Marian Oancea
f281a362f0 bower small fix 2014-11-05 22:37:00 +02:00
Marian Oancea
c402dad6fa Updated bower.json & Readme 2014-11-05 22:33:28 +02:00
Christoph Jentzsch
e229374f46 Merge remote-tracking branch 'origin/develop' into develop 2014-11-05 20:59:49 +01:00
Christoph Jentzsch
189527e563 added dynamic jump out of code 2014-11-05 20:59:20 +01:00
Christoph Jentzsch
9b4e768995 Delete vmNamecoin.json 2014-11-05 20:41:54 +01:00
Marian Oancea
45d0d72138 Updated package.json 2014-11-05 20:12:21 +02:00
Marian Oancea
15088d7ebe Fixed indent
Fixed indent so we can compare differences in PR.
2014-11-05 19:52:52 +02:00
Marian Oancea
4be4db5e6c Converted to node module
Converted to npm package
Added brower
Added browserify with minification
Updated Readme
2014-11-05 19:46:01 +02:00
Taylor Gerring
b100546c9d add test for Bytes.String() 2014-11-05 18:02:20 +01:00
Taylor Gerring
834f8a1dc8 added test for CopyBytes 2014-11-05 17:48:23 +01:00
Taylor Gerring
ada684e054 added test for BinaryLength 2014-11-05 17:44:28 +01:00
Taylor Gerring
92b30cc452 add tests for ReadVarInt 2014-11-05 17:39:26 +01:00
Taylor Gerring
cb32f52b9c added test for parsing bytes 2014-11-05 17:11:40 +01:00
Taylor Gerring
4f00929084 Added byte padding tests 2014-11-05 17:04:24 +01:00
Christoph Jentzsch
4669b5694b Merge remote-tracking branch 'origin/develop' into develop 2014-11-05 15:00:12 +01:00
Christoph Jentzsch
a567fedaa7 added state systemOperationsTest 2014-11-05 14:59:08 +01:00
Taylor Gerring
94b0ce84da Cleanup big_test.go 2014-11-05 13:35:43 +01:00
Taylor Gerring
e76c58d175 New test coverage for ethutil/big.go 2014-11-05 13:23:50 +01:00
Taylor Gerring
92299b7c24 New test coverage for ethutil/path.go 2014-11-05 11:23:30 +01:00
obscuren
48488017e4 Proper packages 2014-11-05 00:34:59 +01:00
obscuren
b4da085a9f Accidental packages 2014-11-05 00:34:04 +01:00
obscuren
7db44b56b0 Updated to ethereum serpent 2014-11-05 00:32:51 +01:00
ethers
aaba185ceb Merge pull request #32 from ethers/indexjs
updates needed per restructure
2014-11-04 12:15:40 -08:00
ethers
fa782aed93 updates needed per restructure 2014-11-04 11:28:56 -08:00
Marian OANCΞA
3e174a0879 Merge pull request #1 from cubedro/example
example
2014-11-04 21:26:14 +02:00
obscuren
99d5769c2b There'll be jumping in to jumps 2014-11-04 18:38:19 +01:00
obscuren
1b1fa049fa Fixed VM and added static analysis for EVM jumps 2014-11-04 18:18:57 +01:00
obscuren
8cfbf1836d Added JUMP analysis (WIP) 2014-11-04 18:17:38 +01:00
obscuren
78fb2af6f1 Squashed commit of the following:
commit 79d7cbfc4a
Merge: 9120274 1c1ba8d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 4 13:32:11 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 9120274a46
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 4 13:31:27 2014 +0100

    Update tests to latest protocol changes (PoC7)

commit 1c1ba8d161
Merge: 014d370 3aebe53
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 4 13:30:52 2014 +0100

    Merge pull request #31 from CJentzsch/develop

    Restructered tests in folders in accordance to test suites

commit 3aebe532e5
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:58:21 2014 +0100

    Updated vmNamecoin.json to new sstore prices

commit 8a0be21839
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:53:00 2014 +0100

    Added example state test

commit 83643addbc
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:36:25 2014 +0100

    removed systemoperationstests

commit 3930ca3a9a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:22:15 2014 +0100

    Restructered tests in folders in accordance to test suites

commit 014d370b5d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 29 21:23:56 2014 +0100

    New SIGNEXTEND tets

commit 155d449be2
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 29 20:59:05 2014 +0100

    New tests for BNOT and SIGNEXTEND

commit c9eae764b8
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 28 12:58:27 2014 +0100

    Update SSTORE gas cost and BNOT instead of NEG

commit ad2a75ac58
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Oct 23 16:05:49 2014 +0200

    Added new recursive bombs

commit 834c52af64
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Oct 23 12:01:05 2014 +0200

    Changing gas cost to zero at stackunderflow

commit c73a8a89d2
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Wed Oct 22 13:04:45 2014 +0200

    Reverted back to original value.

commit b9a8c92422
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Tue Oct 21 17:02:52 2014 -0400

    fix spelling error

commit b48ae74af4
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 21 17:26:26 2014 +0200

    Added failing random tests

commit bee0a4100c
Merge: 5050d20 b315da6
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 21 17:15:05 2014 +0200

    Merge remote-tracking branch 'origin/master' into develop

commit 5050d20b4d
Merge: 7516685 ba35362
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 20 20:18:20 2014 +0200

    Merge pull request #26 from wanderer/develop

    Add a package.json for node.js

commit ba35362876
Author: wanderer <mjbecze@gmail.com>
Date:   Sun Oct 19 23:59:47 2014 -0400

    turned tests into a node module

commit 751668571e
Author: ethers <ethereum@outlook.com>
Date:   Thu Oct 16 17:08:20 2014 -0700

    json was invalid and missing quotes

commit 0e687cee47
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Thu Oct 16 17:13:24 2014 +0200

    Update vmEnvironmentalInfoTest.json

commit 78a78e2e6c
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 15 14:19:11 2014 +0200

    updated genesis_hash

commit b315da618b
Merge: 7a7e198 0a76a3a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 14 10:33:26 2014 +0200

    Merge pull request #23 from ethers/fix22

    numbers should be strings #22

commit 0a76a3a312
Author: ethers <ethereum@outlook.com>
Date:   Mon Oct 13 14:45:30 2014 -0700

    numbers should be strings #22

commit 1f67385f13
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Oct 11 13:18:00 2014 +0200

    Added some MUL tests

commit 7a7e198395
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Oct 11 13:11:59 2014 +0200

    Added some MUL tests

commit 46eb6283ae
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Oct 11 12:18:13 2014 +0200

    tested new opcodes (JUMPDEST,CALLCODE) and created test for CALL/CREATE depth

commit 8d38d62d10
Author: Nick Savers <nicksavers@gmail.com>
Date:   Fri Oct 10 18:09:41 2014 +0200

    INVALID stops the operation and doesn't cost gas

commit ed6eba7c8e
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 8 19:08:48 2014 +0200

    Update + ABA recursive bomb which needs maximum recursion limit of 1024

commit 2d72050db1
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 8 14:37:18 2014 +0200

    Applied recent protocol changes (PoC7) to existin tests

commit dfe66cab3f
Merge: 4513623 1a67a96
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 8 11:05:51 2014 +0200

    Merge remote-tracking branch 'origin/develop'

    Conflicts:
    	genesishashestest.json

commit 1a67a96cff
Merge: a4f5f45 ffd6bc9
Author: vbuterin <v@buterin.com>
Date:   Tue Oct 7 15:10:23 2014 +0100

    Merge pull request #18 from CJentzsch/develop

    CallToNameRegistratorOutOfGas balance correction

commit ffd6bc97ad
Merge: a4f5f45 9779d67
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:47:34 2014 +0200

    Merge remote-tracking branch 'origin/develop' into develop

commit 9779d67b8c
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:45:53 2014 +0200

    CallToNameRegistratorOutOfGas balance correction

    Even if execution fails, the value gets transferred.

commit a4f5f45228
Merge: 49a9f47 b6d7cba
Author: vbuterin <v@buterin.com>
Date:   Tue Oct 7 14:13:12 2014 +0100

    Merge pull request #17 from CJentzsch/develop

    Added A calls B calls A contracts

commit b6d7cba499
Merge: 865cb40 49a9f47
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:02:51 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit 865cb4083d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:02:36 2014 +0200

    Added A calls B calls A contracts

commit 49a9f47aec
Merge: 3b0ec43 94a493b
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Tue Oct 7 10:56:17 2014 +0200

    Merge pull request #16 from CJentzsch/develop

    corrected amount of used gas for CallToNameRegistratorOutOfGas

commit 94a493b0d9
Merge: 72853c4 3b0ec43
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 10:51:32 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit 72853c4382
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 10:51:07 2014 +0200

    corrected amount of used gas for CallToNameRegistratorOutOfGas

commit 3b0ec436e4
Merge: aec3252 222068b
Author: vbuterin <v@buterin.com>
Date:   Tue Oct 7 05:52:43 2014 +0100

    Merge pull request #15 from CJentzsch/develop

    corrected tests and different style for storage

commit 222068b9ba
Merge: c169653 aec3252
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 21:17:28 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit c1696531a6
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 21:17:09 2014 +0200

    corrected tests and different style for storage

commit aec3252b8e
Merge: 25f9fd5 e17a909
Author: vbuterin <v@buterin.com>
Date:   Mon Oct 6 09:39:46 2014 +0100

    Merge pull request #14 from CJentzsch/develop

    corrected gas limit in vmSystemOperationsTest

commit e17a909f70
Merge: 33fcab5 25f9fd5
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 10:31:51 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit 33fcab5727
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 10:30:04 2014 +0200

    Bug fix, corrected gasLimit in vmSystemOperationsTest

commit 25f9fd542a
Author: Vitalik Buterin <v@buterin.com>
Date:   Sat Oct 4 15:47:00 2014 -0400

    one more vm test

commit 2d561a5373
Author: Vitalik Buterin <v@buterin.com>
Date:   Sat Oct 4 15:15:37 2014 -0400

    separated out vmtests

commit b0c48fa8d6
Merge: cb8261a 6cae166
Author: vbuterin <v@buterin.com>
Date:   Sat Oct 4 17:18:02 2014 +0100

    Merge pull request #13 from CJentzsch/develop

    Added comprehensive EVM test suite. All commands are tested.

commit 6cae166f6f
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 1 15:34:23 2014 +0200

    Delete tmp.json

commit 4ff906fbc2
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 1 14:06:32 2014 +0200

    corrected CALLSTATELESS tests

commit 5b3fee6806
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Sep 29 13:08:44 2014 +0200

    Completed vm tests. Added ADDMOD, MULMOD, POST, CALLSTATELESS

commit 9cdd218083
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Sep 27 21:48:09 2014 +0200

    Added IOandFlowOperation-, PushDupSwap- and SystemOperations- tests. Removed empty storage from adresses.

commit 28ed968b46
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Sep 23 15:49:22 2014 +0200

    Added blockInfoTest

commit ffbd5a35b5
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Sep 23 15:37:52 2014 +0200

    Added environmentalInfo- and sha3- test

commit 54c14f1ff3
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Sep 22 13:06:57 2014 +0200

    Added bitwise logic operation test

commit d0af113aab
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Sep 20 01:42:51 2014 +0200

    Added vm arithmetic test

commit cb8261a78b
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Fri Sep 19 13:15:44 2014 +0200

    Update genesishashestest.json

commit 4513623da1
Author: Maran <maran.hidskes@gmail.com>
Date:   Tue Jul 22 12:24:46 2014 +0200

    Update keyaddrtest to be valid JSON

commit e8cb5c221d
Author: Vitalik Buterin <v@buterin.com>
Date:   Mon Jul 21 23:30:33 2014 -0400

    Added next/prev trie test

commit 98823c04b3
Author: Vitalik Buterin <v@buterin.com>
Date:   Mon Jul 14 02:51:31 2014 -0400

    Replaced with deterministic test

commit 357eb21e4d
Author: Vitalik Buterin <v@buterin.com>
Date:   Sun Jul 13 16:12:56 2014 -0400

    Added my own random and namecoin tests (pyethereum)

commit 00cd0cce8f
Author: Gav Wood <i@gavwood.com>
Date:   Sat Jul 12 21:20:04 2014 +0200

    Output hex strings.

commit ddfa3af45d
Author: Gav Wood <i@gavwood.com>
Date:   Thu Jul 10 11:28:35 2014 +0100

    Everything a string.

commit d659f469a9
Author: Gav Wood <i@gavwood.com>
Date:   Thu Jul 10 10:16:25 2014 +0100

    Code fixes.

commit 5e83ea8228
Author: Gav Wood <i@gavwood.com>
Date:   Sun Jul 6 16:17:12 2014 +0200

    Prettier VM tests.

commit a09aae0efe
Author: Gav Wood <i@gavwood.com>
Date:   Sun Jul 6 15:46:01 2014 +0200

    Fix VM tests.

commit ec9a044a17
Merge: 4bb6461 5e0123f
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Fri Jul 4 15:56:52 2014 +0200

    Merge pull request #10 from romanman/patch-1

    Update vmtests.json

commit 5e0123fbe1
Author: romanman <roman.mandeleil@gmail.com>
Date:   Fri Jul 4 10:23:04 2014 +0100

    Update vmtests.json

commit 2b6da2f5f2
Author: romanman <roman.mandeleil@gmail.com>
Date:   Thu Jul 3 17:45:04 2014 +0100

    Update vmtests.json

    arith testcase updated

commit 4bb646117d
Merge: bba3898 a33b309
Author: Gav Wood <i@gavwood.com>
Date:   Wed Jul 2 19:43:22 2014 +0200

    Merge branch 'develop' of github.com:/ethereum/tests into develop

commit bba38980bd
Author: Gav Wood <i@gavwood.com>
Date:   Wed Jul 2 19:43:06 2014 +0200

    New tests.

commit a33b309d99
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jul 2 10:14:05 2014 -0400

    Testing submodules

commit 50318217ca
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jul 2 10:10:46 2014 -0400

    Testing submodules

commit 57fa655522
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jul 2 10:09:08 2014 -0400

    Testing submodules

commit ea0eb0a8c8
Author: Gav Wood <i@gavwood.com>
Date:   Tue Jul 1 15:19:34 2014 +0200

    Latest genesis block.

commit 25bb76b69c
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Mon Jun 30 13:25:04 2014 +0200

    Reset

commit 74c6d8424e
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Mon Jun 30 12:10:06 2014 +0200

    Updated wrong test

commit 9ea3a60291
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Sat Jun 28 18:48:28 2014 +0200

    Fixed roots

commit 5fc3ac0e92
Author: Gav Wood <i@gavwood.com>
Date:   Sat Jun 28 18:40:06 2014 +0200

    Simple hex test.

commit edd3a00c2a
Author: Gav Wood <i@gavwood.com>
Date:   Sat Jun 28 18:22:18 2014 +0200

    Additional test for jeff. Now use the 0x... notation.

commit 5021e0dd83
Author: Gav Wood <i@gavwood.com>
Date:   Fri Jun 27 21:35:26 2014 +0200

    VM test framework updated.

commit c818d13202
Author: Gav Wood <i@gavwood.com>
Date:   Fri Jun 27 18:18:24 2014 +0200

    Removed arrays from Trie tests JSON as per conformance guide and changed
    vocabulary to match other tests.
    VM test updates.

commit 714770ffb3
Author: Gav Wood <i@gavwood.com>
Date:   Wed Jun 11 11:32:42 2014 +0100

    Added Gav's new address.

commit 9345bc13d4
Merge: a2257f3 78576dd
Author: Gav Wood <i@gavwood.com>
Date:   Fri May 30 17:50:38 2014 +0200

    Merge branch 'master' of github.com:ethereum/tests into develop

commit a2257f3471
Author: Gav Wood <i@gavwood.com>
Date:   Fri May 30 17:50:18 2014 +0200

    VM tests.

commit 78576dd3d3
Author: Heiko Heiko <heiko@heiko.org>
Date:   Fri May 30 17:19:09 2014 +0200

    changes based on new account structure nonce, balance, storage, code

commit 125839e848
Merge: 42e14ec 356a329
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Thu May 22 09:58:45 2014 +0200

    Merge pull request #5 from bkirwi/master

    Fix invalid JSON (removed trailing comma) and add test names

commit 356a3296bc
Author: Ben Kirwin <ben@kirw.in>
Date:   Thu May 22 00:20:48 2014 -0400

    Add some arbitrary test names

    This should now conform to the format specified in the README.

commit 42e14ec54f
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Wed May 21 23:27:40 2014 +0800

    revert to correct data

commit 4300197a74
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Wed May 21 22:42:23 2014 +0800

    fix: wrong sha3 hash because of the wrong rlp hex

commit a0d01b1a0b
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Wed May 21 22:29:53 2014 +0800

    fix: wrong rlp hex

commit 6bc2fc7405
Merge: 66bc366 c31a93c
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Wed May 21 14:11:37 2014 +0200

    Merge pull request #4 from ethers/master

    fix file name that seems to have been a typo

commit c31a93c27a
Author: ethers <ethereum@outlook.com>
Date:   Tue May 20 15:42:39 2014 -0700

    fix file name that seems to have been a typo

commit 66bc3665c1
Author: Heiko Heiko <heiko@heiko.org>
Date:   Tue May 20 17:36:35 2014 +0200

    fix: represent integers as strings

commit ede5499da6
Author: Heiko Heiko <heiko@heiko.org>
Date:   Tue May 20 17:21:09 2014 +0200

    add: current initial alloc and genesis hashes

commit 5131429abb
Author: Ben Kirwin <ben@kirw.in>
Date:   Mon May 19 11:18:31 2014 -0400

    Delete a comma

    This should now be parseable as JSON.

commit f44a859331
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Sun May 18 15:04:42 2014 +0800

    add: case when value is long, ensure it's not get rlp encoded as node

commit e1ae4ad449
Author: Gav Wood <i@gavwood.com>
Date:   Mon May 12 14:40:47 2014 +0100

    PoC-5 VM tests.

commit 2b6c136dda
Author: Vitalik Buterin <v@buterin.com>
Date:   Sun May 11 21:42:41 2014 -0400

    Moved txt to json

commit cbccbf977c
Merge: edbb8d4 45a0974
Author: Vitalik Buterin <v@buterin.com>
Date:   Thu May 8 21:54:48 2014 -0400

    New commit

commit edbb8d407e
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue May 6 16:53:43 2014 -0400

    Removed unneeded test, added new tests

commit 45a0974f6f
Merge: 15dd8fd 5fd2a98
Author: Gav Wood <i@gavwood.com>
Date:   Sun Apr 27 12:53:47 2014 +0100

    Merge pull request #3 from autolycus/develop

    Fixed formatting and added test cases

commit 5fd2a98fcb
Author: Carl Allendorph <callendorph@gmail.com>
Date:   Sat Apr 19 13:26:14 2014 -0700

    Added some new test cases for the rlp encoding.

commit 4ba150954e
Author: Carl Allendorph <callendorph@gmail.com>
Date:   Sat Apr 19 12:48:42 2014 -0700

    Converted spaces to tabs to be compliant with the coding standards defined in cpp-ethereum

commit 15dd8fd794
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 28 12:54:47 2014 +0000

    RLP tests and Trie updates.

commit 33f80fef21
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 28 11:39:35 2014 +0000

    Hex encode tests done.

commit e1f5e12abb
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 28 11:22:49 2014 +0000

    Fix RLP tests.

commit f87ce15ad2
Author: Gav Wood <i@gavwood.com>
Date:   Thu Feb 27 13:28:11 2014 +0000

    Fix empty string.

commit c006ed4ffd
Author: Gav Wood <i@gavwood.com>
Date:   Mon Feb 24 10:24:39 2014 +0000

    Tests fix.

commit 510ff56363
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:54:08 2014 +0000

    Updated the tests.

commit a0ec843832
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:49:24 2014 +0000

    Moved over to new format, but RLP tests still need updating.

commit 660cd26f31
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:35:51 2014 +0000

    More docs.

commit 6ad14c1a15
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:33:39 2014 +0000

    Added VM test suite.
    Added TODO.
    Renamed old files.

commit f91ad7b385
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jan 8 11:26:58 2014 -0500

    update trie algorithm

commit 6da2954462
Merge: cc42246 131c610
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jan 8 08:15:38 2014 -0500

    merge

commit cc4224675f
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue Jan 7 14:35:26 2014 -0500

    Updated trie test

commit 131c610da6
Merge: 121632b 7613302
Author: vbuterin <v@buterin.com>
Date:   Wed Jan 1 06:40:54 2014 -0800

    Merge pull request #1 from obscuren/master

    Update trietest.txt

commit 7613302b49
Author: obscuren <obscuren@users.noreply.github.com>
Date:   Wed Jan 1 15:25:21 2014 +0100

    Update trietest.txt

    New proposed explanatory format

commit 121632bedd
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jan 1 08:26:18 2014 -0500

    Added obscure's tests

commit ef6c5506c3
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue Dec 31 19:04:48 2013 -0500

    Fixed tests a bit

commit 345e4bcfef
Merge: 2c81698 e4bbea4
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue Dec 31 15:52:46 2013 -0500

    Merge branch 'master' of github.com:ethereum/tests

commit 2c81698f31
Author: Vitalik Buterin <v@buterin.com>
Date:   Mon Dec 30 21:09:40 2013 -0500

    Added first three tests

commit e4bbea400f
Author: vbuterin <v@buterin.com>
Date:   Mon Dec 30 18:09:03 2013 -0800

    Initial commit
2014-11-04 17:11:19 +01:00
Taylor Gerring
b96a59eb28 Added tests for extra large values
Test “E” scientific notation formatting
2014-11-04 16:45:54 +01:00
obscuren
64b6172089 added db 2014-11-04 16:43:02 +01:00
Taylor Gerring
e7d9bcd36b Added Douglas and Einstein cases 2014-11-04 16:42:28 +01:00
Taylor Gerring
123282e045 Update variable name to match unit name 2014-11-04 16:41:03 +01:00
Taylor Gerring
e22e8b7fef Environment tests 2014-11-04 16:39:08 +01:00
Christoph Jentzsch
79d7cbfc4a Merge remote-tracking branch 'origin/develop' into develop 2014-11-04 13:32:11 +01:00
Christoph Jentzsch
9120274a46 Update tests to latest protocol changes (PoC7) 2014-11-04 13:31:27 +01:00
Christoph Jentzsch
1c1ba8d161 Merge pull request #31 from CJentzsch/develop
Restructered tests in folders in accordance to test suites
2014-11-04 13:30:52 +01:00
obscuren
a9db1ee8d4 Replaced to return the td and throw a specific error on TD 2014-11-04 13:00:47 +01:00
obscuren
699dcaf65c Reworked chain handling process
* Forks
* Rename
* Moved inserting of blocks & processing
* Added chain testing method for validating pieces of a **a** chain.
2014-11-04 12:46:33 +01:00
obscuren
f4b717cb9d Bloom validation 2014-11-04 11:04:02 +01:00
obscuren
f59a3b67f6 StateManager => BlockManager 2014-11-04 10:57:02 +01:00
obscuren
1025d097fd removed old bloom 2014-11-04 10:49:25 +01:00
obscuren
d56d0c64aa Version bump 2014-11-04 01:50:16 +01:00
obscuren
0c4adeceae Properly list caps 2014-11-04 01:47:02 +01:00
obscuren
f76f953f0c Removed debug print 2014-11-04 01:33:31 +01:00
obscuren
9c2b878678 Sha addresses 2014-11-04 01:29:49 +01:00
obscuren
a82b89e2d5 Added storage root to dump 2014-11-03 23:45:44 +01:00
obscuren
c8302882c8 method change 2014-11-03 23:45:32 +01:00
obscuren
d87aa24885 Fixed genesis 2014-11-03 23:45:16 +01:00
Marek Kotewicz
0cdef3376d example 2014-11-03 17:46:56 +01:00
obscuren
92c7aca817 Refactored compress method into something more organised 2014-11-03 14:59:50 +01:00
Christoph Jentzsch
3aebe532e5 Updated vmNamecoin.json to new sstore prices 2014-11-03 13:58:21 +01:00
Christoph Jentzsch
8a0be21839 Added example state test 2014-11-03 13:53:00 +01:00
Christoph Jentzsch
83643addbc removed systemoperationstests 2014-11-03 13:36:25 +01:00
Christoph Jentzsch
3930ca3a9a Restructered tests in folders in accordance to test suites 2014-11-03 13:22:15 +01:00
Marek Kotewicz
b0e11826e5 lgpl 2014-11-03 12:40:57 +01:00
Corey Farwell
e3998e30ba Don't run 'npm test' 2014-11-02 22:00:13 -05:00
Corey Farwell
51d79f3e3b Fix JSHint errors 2014-11-02 21:56:45 -05:00
Corey Farwell
b773e57490 Enable Travis CI 2014-11-02 21:49:23 -05:00
obscuren
76c9c8d653 Compress data on db level. Closes #174 2014-11-03 00:31:15 +01:00
obscuren
bd4f51ff3c Use new iterator 2014-11-03 00:30:52 +01:00
obscuren
5dcf59bdf4 Forgot to put in regular bytes during decompression 2014-11-03 00:29:34 +01:00
obscuren
9f8bcf3abc Added RLE compression. Closes #171 2014-11-02 23:33:06 +01:00
obscuren
1bb398f4e2 Sign ext 2014-11-02 19:39:45 +01:00
obscuren
3f90f7c898 Signextend 2014-11-01 02:14:55 +01:00
obscuren
c8438979a9 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2014-11-01 01:18:13 +01:00
obscuren
141d3caabb Re-org op codes 2014-11-01 01:18:03 +01:00
Felix Lange
394e0f60c2 chain, tests/helper, vm: make tests compile
They were broken by df5603de0a, when vm.Log became ethstate.Log.
2014-10-31 18:56:25 +01:00
Felix Lange
b95d9e005d .gitignore: ignore .ethtest 2014-10-31 18:55:39 +01:00
Felix Lange
f3473312ba all: fix rename breakage 2014-10-31 18:52:58 +01:00
obscuren
5af4ff985d ethminer => miner 2014-10-31 14:56:42 +01:00
obscuren
4914a78c8c ethwire => wire 2014-10-31 14:53:42 +01:00
obscuren
af34749a6b ethtrie => trie 2014-10-31 14:45:03 +01:00
obscuren
af8f5f0b69 ethstate => state 2014-10-31 14:43:14 +01:00
obscuren
0ed1a8b50a ethpipe => xeth (eXtended ETHereum) 2014-10-31 14:30:08 +01:00
obscuren
8826e9694c Moved utils to cmd 2014-10-31 14:20:11 +01:00
Marek Kotewicz
c8307a9e44 license 2014-10-31 14:12:05 +01:00
obscuren
b1c247231b ethlog => logger 2014-10-31 12:56:05 +01:00
obscuren
fd9da72536 ethcrypto => crypto 2014-10-31 12:37:43 +01:00
obscuren
3ee0461cb5 Moved ethchain to chain 2014-10-31 10:59:17 +01:00
obscuren
8e0a39f33f Updated to use ethereum.js 2014-10-31 10:50:16 +01:00
Jeffrey Wilcke
e84fa8d4e6 transacton => transaction 2014-10-30 23:36:06 +01:00
Jeffrey Wilcke
f11b5f3e40 Added account prop 2014-10-30 22:20:22 +01:00
Jeffrey Wilcke
5538ff7252 Fixed Qt provider
* postData => postMessage
* JSON.parse parsed wrong data on 'onmessage'
2014-10-30 22:17:50 +01:00
Jeffrey Wilcke
aca9a41fcf Merge pull request #1 from debris/master
Http JSON-RPC provider, http polling, little refactor, whisper
2014-10-30 21:35:40 +01:00
obscuren
df5603de0a Moved logging to state, proper structured block
* Moved logs to state so it's subject to snapshotting
* Split up block header
* Removed logs from transactions and made them receipts only
2014-10-30 13:32:50 +01:00
Christoph Jentzsch
014d370b5d New SIGNEXTEND tets 2014-10-29 21:23:56 +01:00
Jeffrey Wilcke
fa890c8c01 Merge pull request #167 from fjl/feature/split-tx-event
Split TxEvent type for tx pre/post
2014-10-29 21:10:04 +01:00
Jeffrey Wilcke
ce2ec1980b Merge pull request #166 from fjl/fix/mist-quit
Fix Mist Shutdown
2014-10-29 21:09:32 +01:00
Christoph Jentzsch
155d449be2 New tests for BNOT and SIGNEXTEND 2014-10-29 20:59:05 +01:00
Felix Lange
f05d422a97 ethchain: fix dependency 2014-10-29 20:39:26 +01:00
obscuren
2ef044edfc Use new bloom when filtering for topics 2014-10-29 20:33:25 +01:00
obscuren
cc67a84e94 Added bloom 9 point lookup and bloom test 2014-10-29 20:16:18 +01:00
Jeffrey Wilcke
81ec564ef6 Merge pull request #168 from fjl/feature/working-tests
Fix the tests
2014-10-29 19:48:38 +01:00
Felix Lange
4cf69d7cd3 vm: fix basic VM tests
The tests now compile and won't panic for unexpected return values.

We need a recent-enough version of the mutan compiler because of
the new JUMPDEST requirements. Skip some tests if the installed mutan
version is too old. The debug VM test still fails, probably because
of an implementation bug.
2014-10-29 18:50:17 +01:00
Felix Lange
38034c3066 ethwire: fix ClientIdentity test 2014-10-29 18:39:51 +01:00
Felix Lange
56014844a9 ethpipe: delete useless test
It didn't compile and wouldn't have checked any results if it ever ran.
2014-10-29 18:38:52 +01:00
Felix Lange
d9bccdde23 ethchain: fix tests
Adapted to recent BlockChain -> ChainManager rename.
2014-10-29 18:38:05 +01:00
Felix Lange
051af604e2 ethcrypto: fix the tests
The Sha3 test contained the wrong expected result. Note that the
implementation hasn't changed, the test simply contained an outdated
expected value that was valid for the previous implementation.
2014-10-29 18:35:33 +01:00
Marek Kotewicz
cb607b4911 changes to make whisper working 2014-10-29 17:14:59 +01:00
Marek Kotewicz
31c6159019 filters refactored 2014-10-29 14:45:39 +01:00
obscuren
9e2f071d26 Removed events from the state manager 2014-10-29 14:20:42 +01:00
Marek Kotewicz
9adb625846 polling whisper in progress 2014-10-29 12:44:50 +01:00
obscuren
fb4113dab4 PoC 7 updates
* Bloom
* Block restructure
* Receipts
2014-10-29 10:34:40 +01:00
obscuren
665a44646e Generic hashing method 2014-10-29 10:29:22 +01:00
Felix Lange
6b3f5fb82b cmd/mist, ethchain, ethminer: split TxEvent (#165) 2014-10-29 03:50:20 +01:00
Felix Lange
e252dbf989 eth: stop eventMux first
This fixes the hang in Ethereum.Stop.
2014-10-29 03:01:20 +01:00
Felix Lange
8170f96ded javascript: remove unused quit channel
This fixes the hang in JSRE.Stop.
2014-10-29 03:00:29 +01:00
Marek Kotewicz
0b10cbd713 http renamed to httprpc 2014-10-28 16:53:31 +01:00
Marek Kotewicz
3119be908c db and shh 2014-10-28 13:42:55 +01:00
obscuren
48125a25eb Added missing requires on SSTORE SLOAD 2014-10-28 13:26:30 +01:00
obscuren
7849b7e978 Refund SSTORE properly 2014-10-28 13:22:04 +01:00
Christoph Jentzsch
c9eae764b8 Update SSTORE gas cost and BNOT instead of NEG 2014-10-28 12:58:27 +01:00
Marek Kotewicz
28d4250866 cleaner promises 2014-10-28 10:43:12 +01:00
obscuren
5920aa7be6 Updated readme 2014-10-27 17:24:43 +01:00
obscuren
1e55fe3aa2 Updated readme 2014-10-27 17:22:29 +01:00
obscuren
9d386033ef Added bug 2014-10-27 17:16:03 +01:00
obscuren
2b02d81253 Added in progress to readme 2014-10-27 17:14:37 +01:00
obscuren
11b3f97520 Upped protocol 2014-10-27 17:02:45 +01:00
obscuren
10782c5aae Added removal off erroneous txs. Fixed pipeline 2014-10-27 17:02:31 +01:00
obscuren
cbc6709937 Version bump 2014-10-27 16:53:31 +01:00
obscuren
ca18b3f1e9 Do not return error on VM exception 2014-10-27 16:53:20 +01:00
obscuren
69e745c537 Return erroneous txs (so we can remove them from the pool) 2014-10-27 16:52:58 +01:00
obscuren
003280888d increased default gas from 500 to 5000 2014-10-27 12:25:54 +01:00
obscuren
797b93c98c Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2014-10-27 11:50:50 +01:00
obscuren
b095bd3237 events should be set prior to calling mainloop 2014-10-27 11:50:38 +01:00
obscuren
1d3f43f060 Added generic add balance method 2014-10-27 11:44:40 +01:00
obscuren
d586dd902d Fixed bloom 2014-10-27 11:44:28 +01:00
obscuren
272d58662c Implemented LOG. Closes #159 2014-10-27 11:44:16 +01:00
obscuren
6623500c6b Implemented new bloom filter. Closes #156 2014-10-27 11:22:27 +01:00
obscuren
08c26ab8b0 Removed unnecessary code. 2014-10-26 20:09:51 +01:00
Viktor Trón
f62b6742f2 Merge pull request #152 from ethersphere/p2p
initial commit of p2p package
2014-10-24 12:20:50 +01:00
Felix Lange
e73aad959e ethutil: re-add build constraints in script*.go (fixes #151) 2014-10-24 01:04:10 +02:00
zelig
771fbcc02e initial commit of p2p package 2014-10-23 16:57:54 +01:00
Jeffrey Wilcke
119c5b40a7 Merge pull request #150 from fjl/develop
Merge eth-go repo into go-ethereum
2014-10-23 16:46:18 +02:00
Christoph Jentzsch
ad2a75ac58 Added new recursive bombs 2014-10-23 16:05:49 +02:00
Felix Lange
184055b3e2 cmd/*: add license headers 2014-10-23 15:48:53 +02:00
Felix Lange
bd2862aec6 fix 'go get' commands in after the move to cmd/ 2014-10-23 15:06:26 +02:00
Felix Lange
69baa465ea Merge eth-go repository into go-ethereum
mist, etheruem have been moved to cmd/
2014-10-23 15:01:27 +02:00
Marek Kotewicz
66e439b6f4 http polling 2014-10-23 14:11:57 +02:00
obscuren
feef194829 Chnged to use GetOp instead & added error + checking 2014-10-23 14:04:00 +02:00
obscuren
91c876831a Update to HEAD tests 2014-10-23 13:25:10 +02:00
Christoph Jentzsch
834c52af64 Changing gas cost to zero at stackunderflow 2014-10-23 12:01:05 +02:00
obscuren
06aa74e7df All Stack requirements are now checked prior to reduring gas. 2014-10-23 10:14:55 +02:00
obscuren
50fd469249 Merge branch 'master' into develop 2014-10-23 01:03:22 +02:00
Jeffrey Wilcke
7daa8c2f6e Merge pull request #148 from waffle-iron/master
waffle.io Badge
2014-10-23 01:03:05 +02:00
obscuren
bb03276c19 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2014-10-23 01:01:56 +02:00
obscuren
411b9800ae Reflect VM Env changes 2014-10-23 01:01:41 +02:00
obscuren
29b8a0bc5f Updated the VM & VM tests
* Stack Error shouldn't revert to previous state
* Updated VM Test tool
* Added Transfer method to VM Env
2014-10-23 01:01:26 +02:00
obscuren
2e45e4d015 Print error using regular println. Fixes #146
We can't use our own logger because it hasn't been set up properly at
that point.
2014-10-23 00:59:35 +02:00
Jeffrey Wilcke
5662176f8c Merge pull request #149 from JosephGoulden/develop
Develop
2014-10-23 00:30:38 +02:00
JoeG
1880c6b3dc Make tab capitisation consistent 2014-10-22 23:00:22 +01:00
Making GitHub Delicious.
6247a99f41 add waffle.io badge 2014-10-22 15:56:40 -06:00
JoeG
53d5c490be Fix right-click context menu of block chain view. 2014-10-22 22:50:47 +01:00
obscuren
51ecab6967 Do not set error on recover 2014-10-22 23:39:15 +02:00
Marek Kotewicz
f9ca054314 warning when provider is not set 2014-10-22 16:21:38 +02:00
Marek Kotewicz
f7c9c8928e messageHandler expects object instead of string 2014-10-22 16:12:41 +02:00
Marek Kotewicz
ea3048421f block, transaction, uncle by hash and number separately 2014-10-22 15:58:24 +02:00
obscuren
037039cace Updated tests-subtree 2014-10-22 15:24:17 +02:00
obscuren
b5beb1aac1 added a transfer method to vm env 2014-10-22 15:22:21 +02:00
Jeffrey Wilcke
c73a8a89d2 Reverted back to original value. 2014-10-22 13:04:45 +02:00
Marek Kotewicz
5cd93a0618 http provider 2014-10-22 11:41:48 +02:00
obscuren
ce05634f38 Debug only if a tx is set. Fixes #134 2014-10-22 11:11:12 +02:00
martin becze
b9a8c92422 fix spelling error 2014-10-21 17:02:52 -04:00
Christoph Jentzsch
b48ae74af4 Added failing random tests 2014-10-21 17:26:26 +02:00
Christoph Jentzsch
bee0a4100c Merge remote-tracking branch 'origin/master' into develop 2014-10-21 17:15:05 +02:00
obscuren
27cb0750c1 Procotol version bump for uncle list change 2014-10-21 13:43:30 +02:00
obscuren
6b92d541da Empty string for uncle 2014-10-21 13:30:23 +02:00
obscuren
6f08e30109 Reflect RPC changes 2014-10-21 13:25:54 +02:00
obscuren
520fdfe346 PoC7 Net 2014-10-21 13:25:31 +02:00
obscuren
10b252dd05 WIP RPC interface 2014-10-21 13:24:48 +02:00
obscuren
eef4cd1b64 Updated properties 2014-10-21 00:49:33 +02:00
obscuren
ac7994d8c7 Updated readme 2014-10-21 00:41:27 +02:00
obscuren
8a7d1a69b3 Fixed setting providers to the right object 2014-10-21 00:37:58 +02:00
obscuren
76b20be2ea Qt provider 2014-10-21 00:26:34 +02:00
obscuren
74cab14b8d Moved WebSocketProvider 2014-10-21 00:15:10 +02:00
obscuren
c8aa5feb14 Removed Key 2014-10-21 00:14:58 +02:00
obscuren
590c393680 Updated according to the new Generic JSON RPC API 2014-10-21 00:14:41 +02:00
Christoph Jentzsch
5050d20b4d Merge pull request #26 from wanderer/develop
Add a package.json for node.js
2014-10-20 20:18:20 +02:00
obscuren
6ea44c466a Updated to reflect BlockChain changes 2014-10-20 12:03:31 +02:00
obscuren
097ba56df5 Renamed block_chain to chain_manager 2014-10-20 11:53:11 +02:00
wanderer
ba35362876 turned tests into a node module 2014-10-19 23:59:47 -04:00
obscuren
33ca8d7b8f moved 2014-10-18 23:31:10 +02:00
obscuren
3ad1daa70d Added tests as subtree 2014-10-18 23:28:16 +02:00
obscuren
3bc64b6b6e Readers 2014-10-18 23:20:25 +02:00
obscuren
73c1c2c4af Travis bumped to 1.3 2014-10-18 14:20:51 +02:00
obscuren
350b0b1f66 Re-enabled Travis 2014-10-18 13:50:48 +02:00
obscuren
3ea0e904ad Reflect changed to eth/vm 2014-10-18 13:33:02 +02:00
obscuren
20c742e474 Moved ethvm => vm 2014-10-18 13:31:20 +02:00
obscuren
82a2e4fe28 Reflect changes to the eth/vm 2014-10-18 13:31:04 +02:00
obscuren
6956b5104f fmt package was missing 2014-10-18 13:30:38 +02:00
obscuren
a02dc4ccc3 Using proper naming scheme. Fixes #63 2014-10-18 13:23:01 +02:00
obscuren
77badc8c46 Updated to reflect the Filter changes in eth-go 2014-10-18 13:20:35 +02:00
obscuren
d2bb83833f Moved Filter's wrapping functions to their own util package. Fixes #61
* CLI ethereum should no longer require the Qt/QML package
2014-10-18 13:20:06 +02:00
Jeffrey Wilcke
e57989c0a6 Merge pull request #141 from thibauld/develop
Update documentation and install script to reflect renaming from ethereal to mist
2014-10-18 12:34:03 +02:00
Thibauld Favre
b94dfc8d3a Update documentation and install.sh script to reflect renaming from ethereal to mist 2014-10-17 19:14:16 -04:00
Jeffrey Wilcke
70a00d602e Merge pull request #62 from fjl/fuck
tests/vm: fix syntax
2014-10-17 18:17:04 +02:00
Felix Lange
df238dc7ec tests/vm: fix syntax 2014-10-17 17:39:31 +02:00
Jeffrey Wilcke
abdf5e76f3 Merge pull request #138 from erezwanderman/fixwindows
Fix ethereum compilation and functioning on Windows.
2014-10-17 17:26:04 +02:00
Jeffrey Wilcke
03fd832ee8 Merge pull request #139 from fjl/feature/simpler-log-system
Update for new ethlog.LogSystem interface
2014-10-17 17:24:51 +02:00
Jeffrey Wilcke
fc308b842e Merge pull request #59 from fjl/feature/raceless-ethlog
Improve package ethlog
2014-10-17 17:24:44 +02:00
Felix Lange
35f339e942 ethlog: fix typo in documentation 2014-10-17 17:23:29 +02:00
Felix Lange
fd9b03a431 ethlog: fix concurrency
Rather than spawning a new goroutine for each message,
run each log system in a dedicated goroutine.

Ensure that logging is still asynchronous by using a per-system buffer
(currently 500 messages). If it overflows all logging will hang,
but that's better than spawning indefinitely many goroutines.
2014-10-17 17:23:29 +02:00
Felix Lange
c090a77f1c ethlog: simplify LogSystem interface
Messages are formatted by generic part, so the log system doesn't need
to provide formatting. This fixes the test from the previous commit.

As a small bonus, log systems now have access to the level of
the message. This could be used to provide colored logging in the
future.
2014-10-17 17:23:29 +02:00
Felix Lange
50f5ba5b0c ethlog: add test for '%' in log message
This test fails because the log message is formatted twice.
2014-10-17 17:23:29 +02:00
Felix Lange
cbd785cfe8 ethvm, tests/*: use log level constants 2014-10-17 17:23:28 +02:00
Felix Lange
0165c18330 ethlog: use Godoc for code examples in documentation
This ensures that examples will actually compile.
2014-10-17 17:20:44 +02:00
Felix Lange
e0f93c74c5 ethlog: add Godoc documentation, remove README 2014-10-17 17:20:44 +02:00
Felix Lange
a6265cb49a ethlog: verify that Flush is blocking in TestLoggerFlush 2014-10-17 17:20:44 +02:00
Felix Lange
793baf060a ethlog: don't buffer output in TestConcurrentAddSystem 2014-10-17 17:20:44 +02:00
Felix Lange
ec132749aa ethlog: improve TestLogSystem
It's now safe for concurrent access.
Output checking looks better.
2014-10-17 17:20:44 +02:00
Felix Lange
45d1052229 ethlog: fix StdLogSystem data race on level 2014-10-17 17:20:44 +02:00
Felix Lange
d5a7ba1626 ethlog: add test that adds log systems concurrently 2014-10-17 17:20:44 +02:00
Felix Lange
3b1296077b ethlog: Reset before each test 2014-10-17 17:20:43 +02:00
Felix Lange
dac128a029 ethlog: fix test compilation error 2014-10-17 17:20:43 +02:00
Felix Lange
4e95cecfb9 ethlog: improve dispatch concurrency
This also fixes a deadlock in the tests.
2014-10-17 17:20:43 +02:00
obscuren
3976b52ed7 Updated vm 2014-10-17 17:14:29 +02:00
obscuren
e183880d8b arith test 2014-10-17 17:11:45 +02:00
obscuren
d7736a7bbb Quick dirty peer update 2014-10-17 17:11:34 +02:00
Jeffrey Wilcke
df2b70853f Merge pull request #58 from fjl/feature/event
Blocking event package
2014-10-17 17:10:34 +02:00
Jeffrey Wilcke
9e6411db31 Merge pull request #140 from fjl/feature/event
Adapt to new event package
2014-10-17 17:10:30 +02:00
ethers
751668571e json was invalid and missing quotes 2014-10-16 17:08:20 -07:00
obscuren
3b70985284 added eth tester 2014-10-16 21:34:59 +02:00
Felix Lange
fa84e50ddb event: panic for duplicate type 2014-10-16 18:59:28 +02:00
Felix Lange
ade980912d ethreact: remove package 2014-10-16 18:51:21 +02:00
Felix Lange
28570ef109 eventer: remove package 2014-10-16 18:51:21 +02:00
Felix Lange
20cdb73862 ethchain: fix tests 2014-10-16 18:51:21 +02:00
Felix Lange
36cdab2068 all: use (blocking) event package instead of ethreact 2014-10-16 18:50:48 +02:00
Felix Lange
6906904896 event: make TypeMux zero value ready to use 2014-10-16 18:50:48 +02:00
Felix Lange
10bbf265b2 event: make Unsubscribe idempotent 2014-10-16 18:50:48 +02:00
Felix Lange
dac4a8f113 event: add some documentation 2014-10-16 18:50:48 +02:00
obscuren
93fcabd251 Fixed most of the tests 2014-10-16 18:27:05 +02:00
Felix Lange
f5b8775bed event: new package for event multiplexer 2014-10-16 18:14:35 +02:00
Jeffrey Wilcke
0e687cee47 Update vmEnvironmentalInfoTest.json 2014-10-16 17:13:24 +02:00
obscuren
bb5038699e Corrected package .... 2014-10-16 13:41:44 +02:00
obscuren
65cdb3436e Updated tests 2014-10-16 13:40:46 +02:00
obscuren
86f789333a Moved state reset to defered function 2014-10-16 13:39:30 +02:00
obscuren
febec5ca4a Switch EXT* codes 2014-10-16 13:39:11 +02:00
obscuren
70f7a0be11 Use the state instead of the state object directly.
If a state gets reset and you still hold a pointer to the previous,
incorrect, state object you'll operate on the wrong object. Using the
state to set/get objects and attributes you won't have this problem
since the state will always have the correct object.
2014-10-16 13:38:21 +02:00
Felix Lange
0a99719a39 mist: update for new ethlog.LogSystem interface (in ethereum/eth-go#59) 2014-10-16 12:07:43 +02:00
obscuren
311c6f8a3f Fixed remote Arithmetic tests 2014-10-15 17:12:26 +02:00
Christoph Jentzsch
78a78e2e6c updated genesis_hash 2014-10-15 14:19:11 +02:00
Erez Wanderman
7227552f42 Fix ethereum compilation and functioning on Windows.
repl console output is now colored.
repl "exit" command now works.
2014-10-15 02:41:26 +03:00
obscuren
266d212094 Working on test suite 2014-10-15 00:41:00 +02:00
obscuren
3d177be73e Couple of minor issues fixed
* CALLVALUE pushed incorrect value to the stack
* Set execution model to closure
2014-10-15 00:40:41 +02:00
Felix Lange
0aea5fc4a3 adapt to new event package 2014-10-14 19:38:38 +02:00
obscuren
7ca7938d8e Removed old installer script 2014-10-14 15:31:25 +02:00
obscuren
f55e39cf1a Tests for native function calling 2014-10-14 13:37:26 +02:00
obscuren
393a92811b Changed VM Test code 2014-10-14 12:21:46 +02:00
obscuren
294b437414 New VM 2014-10-14 11:49:15 +02:00
obscuren
c5bd32b0ad Refactored VM to two separate VMs; std & debug
Standard VM should be about 10x faster than the debug VM. Some error
checking has been removed, all of the log statements and therefor quite
some unnecessary if-statements.
2014-10-14 11:48:52 +02:00
Christoph Jentzsch
b315da618b Merge pull request #23 from ethers/fix22
numbers should be strings #22
2014-10-14 10:33:26 +02:00
obscuren
03e082d4ac Merge branch 'master' into develop 2014-10-14 09:47:38 +02:00
obscuren
db6f4ab1cc Merge branch 'master' into develop 2014-10-14 09:47:19 +02:00
ethers
0a76a3a312 numbers should be strings #22 2014-10-13 14:45:30 -07:00
Jeffrey Wilcke
1644b1e53e Merge pull request #137 from caktux/master
build status
2014-10-13 12:57:50 +02:00
caktux
cfd1f0907f build status 2014-10-12 02:15:15 -04:00
Christoph Jentzsch
1f67385f13 Added some MUL tests 2014-10-11 13:18:00 +02:00
Christoph Jentzsch
7a7e198395 Added some MUL tests 2014-10-11 13:11:59 +02:00
Christoph Jentzsch
46eb6283ae tested new opcodes (JUMPDEST,CALLCODE) and created test for CALL/CREATE depth 2014-10-11 12:18:13 +02:00
obscuren
2e894b668a Max callstack 2014-10-11 00:41:37 +02:00
Jeffrey Wilcke
8128190fb2 Merge pull request #136 from fjl/feature/raceless-ethereum-filters
Fix chain filter data race
2014-10-10 22:59:11 +02:00
obscuren
cb845b9bc8 Implemented AR PoW 2014-10-10 22:44:20 +02:00
obscuren
56843ca0fc Added some methods to comply to the PoW block interface 2014-10-10 22:42:37 +02:00
Nick Savers
8d38d62d10 INVALID stops the operation and doesn't cost gas 2014-10-10 18:09:41 +02:00
obscuren
e02c0fa808 Added generic big to 256 method. Implemented new iterator 2014-10-10 17:00:06 +02:00
obscuren
9b494c6869 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-10-10 16:58:26 +02:00
Jeffrey Wilcke
3db6a8e92d Merge pull request #57 from fjl/feature/raceless-ethereum-filters
Fix filter map race
2014-10-10 16:57:54 +02:00
Jeffrey Wilcke
6fec5bd32e Merge pull request #56 from fjl/feature/raceless-eventer
Fix Eventer race
2014-10-10 16:57:50 +02:00
obscuren
6877660fe2 Implemented new iterator 2014-10-10 16:56:28 +02:00
Felix Lange
c1f8a640d3 mist: adapt to API changes in ethereum/eth-go#57 2014-10-08 19:16:03 +02:00
Christoph Jentzsch
ed6eba7c8e Update + ABA recursive bomb which needs maximum recursion limit of 1024 2014-10-08 19:08:48 +02:00
Felix Lange
e83a999039 eth: fix filter map data race
This commit also documents (but doesn't enforce) that filters
are immutable while they're installed. This required a minor API
change.
2014-10-08 19:04:58 +02:00
Felix Lange
44674cb96c eventer: fix data race 2014-10-08 16:31:08 +02:00
Felix Lange
d451269977 eventer: add test for concurrent Post/Register
This test reports the race condition when run
using "go test -race".
2014-10-08 16:31:08 +02:00
Felix Lange
7c9508ed71 eventer: fix tests 2014-10-08 16:31:08 +02:00
obscuren
a38dafcc57 Moved the To256 2014-10-08 16:11:36 +02:00
Christoph Jentzsch
2d72050db1 Applied recent protocol changes (PoC7) to existin tests 2014-10-08 14:37:18 +02:00
obscuren
bd7aca76e1 Proper new block 2014-10-08 12:33:33 +02:00
obscuren
4de3ad1712 New block message 2014-10-08 12:29:49 +02:00
obscuren
83a4b8b49b Version bump 2014-10-08 12:24:42 +02:00
obscuren
b93d6ca5d2 Renamed Sha3Bin to Sha3 2014-10-08 12:06:48 +02:00
obscuren
9d86a49a73 Renamed Sha3Bin to Sha3 2014-10-08 12:06:39 +02:00
obscuren
f3196c915a Precompiled crypto contracts 2014-10-08 12:01:36 +02:00
obscuren
9b60cf267a Removed POST & moved CALLCODE 2014-10-08 12:01:14 +02:00
obscuren
11ace54307 ECRECOVER RIPEMD160 SHA256 2014-10-08 12:00:50 +02:00
obscuren
6de726f16c Protocol bump 2014-10-08 12:00:03 +02:00
obscuren
b417766b36 Minor tweaks for poc7 2014-10-08 11:59:44 +02:00
Christoph Jentzsch
dfe66cab3f Merge remote-tracking branch 'origin/develop'
Conflicts:
	genesishashestest.json
2014-10-08 11:05:51 +02:00
vbuterin
1a67a96cff Merge pull request #18 from CJentzsch/develop
CallToNameRegistratorOutOfGas balance correction
2014-10-07 15:10:23 +01:00
Christoph Jentzsch
ffd6bc97ad Merge remote-tracking branch 'origin/develop' into develop 2014-10-07 15:47:34 +02:00
Christoph Jentzsch
9779d67b8c CallToNameRegistratorOutOfGas balance correction
Even if execution fails, the value gets transferred.
2014-10-07 15:45:53 +02:00
vbuterin
a4f5f45228 Merge pull request #17 from CJentzsch/develop
Added A calls B calls A contracts
2014-10-07 14:13:12 +01:00
Christoph Jentzsch
b6d7cba499 Merge remote-tracking branch 'upstream/develop' into develop 2014-10-07 15:02:51 +02:00
Christoph Jentzsch
865cb4083d Added A calls B calls A contracts 2014-10-07 15:02:36 +02:00
obscuren
b4fa28a3e6 Merge branch 'release/0.6.8' into develop 2014-10-07 11:21:29 +02:00
obscuren
d1a6084bf7 Merge branch 'release/0.6.8' 2014-10-07 11:20:52 +02:00
obscuren
a9b857769d bump 2014-10-07 11:19:42 +02:00
obscuren
0015ce1e35 kick of bad peers 2014-10-07 11:18:46 +02:00
obscuren
4ed94d3d51 removed old windows & added websockets to mist 2014-10-07 11:18:34 +02:00
Jeffrey Wilcke
49a9f47aec Merge pull request #16 from CJentzsch/develop
corrected amount of used gas for CallToNameRegistratorOutOfGas
2014-10-07 10:56:17 +02:00
Christoph Jentzsch
94a493b0d9 Merge remote-tracking branch 'upstream/develop' into develop 2014-10-07 10:51:32 +02:00
Christoph Jentzsch
72853c4382 corrected amount of used gas for CallToNameRegistratorOutOfGas 2014-10-07 10:51:07 +02:00
vbuterin
3b0ec436e4 Merge pull request #15 from CJentzsch/develop
corrected tests and different style for storage
2014-10-07 05:52:43 +01:00
Christoph Jentzsch
222068b9ba Merge remote-tracking branch 'upstream/develop' into develop 2014-10-06 21:17:28 +02:00
Christoph Jentzsch
c1696531a6 corrected tests and different style for storage 2014-10-06 21:17:09 +02:00
obscuren
c95dfec5e4 push data instead of assign 2014-10-06 19:26:51 +02:00
vbuterin
aec3252b8e Merge pull request #14 from CJentzsch/develop
corrected gas limit in vmSystemOperationsTest
2014-10-06 09:39:46 +01:00
Christoph Jentzsch
e17a909f70 Merge remote-tracking branch 'upstream/develop' into develop 2014-10-06 10:31:51 +02:00
Christoph Jentzsch
33fcab5727 Bug fix, corrected gasLimit in vmSystemOperationsTest 2014-10-06 10:30:04 +02:00
Vitalik Buterin
25f9fd542a one more vm test 2014-10-04 15:47:00 -04:00
Vitalik Buterin
2d561a5373 separated out vmtests 2014-10-04 15:15:37 -04:00
vbuterin
b0c48fa8d6 Merge pull request #13 from CJentzsch/develop
Added comprehensive EVM test suite. All commands are tested.
2014-10-04 17:18:02 +01:00
obscuren
e100aa3c6c Changed to new "created address" 2014-10-02 17:35:57 +02:00
obscuren
677836cbee Kick off bad peers on bad chains and improved catch up on diverted chain 2014-10-02 17:35:38 +02:00
obscuren
a75c92000f Black listing of bad peers 2014-10-02 17:03:48 +02:00
obscuren
b55e017e62 Proper delete 2014-10-02 17:03:36 +02:00
obscuren
82be305496 Fixed inconsistencies 2014-10-02 17:03:15 +02:00
obscuren
3bc238b1ce Added eth providers
An ethereum provider provides an interface from which communication can
be done.
2014-10-02 10:56:22 +02:00
obscuren
5053ec2190 Added download label 2014-10-02 01:37:23 +02:00
obscuren
a34a971b50 improved blockchain downloading 2014-10-02 01:36:59 +02:00
obscuren
5fa0173c41 msg 2014-10-02 00:03:19 +02:00
Christoph Jentzsch
6cae166f6f Delete tmp.json 2014-10-01 15:34:23 +02:00
Christoph Jentzsch
4ff906fbc2 corrected CALLSTATELESS tests 2014-10-01 14:06:32 +02:00
obscuren
3af211dd65 Implemented WebSocket package 2014-09-30 23:26:52 +02:00
obscuren
6db40ecb22 WebSocket interface
Web sockets handlers fully implemented. Filter handlers have yet to be
implemented.
2014-09-30 23:26:16 +02:00
obscuren
a3c66b2740 How to spawn a websocket node 2014-09-30 22:58:09 +02:00
obscuren
0cae9c3c1b Readme 2014-09-30 22:55:07 +02:00
obscuren
68ccbefc94 init 2014-09-30 22:51:53 +02:00
Christoph Jentzsch
5b3fee6806 Completed vm tests. Added ADDMOD, MULMOD, POST, CALLSTATELESS 2014-09-29 13:08:44 +02:00
obscuren
ab6ede51d7 Working on new (blocking) event machine.
The new event machine will be used for loose coupling and handle the
communications between the services:

1) Block pool finds blocks which "links" with our current canonical
chain
2) Posts the blocks on to the event machine
3) State manager receives blocks & processes them
4) Broadcasts new post block event
2014-09-29 12:57:51 +02:00
obscuren
ea0357bf02 Block pool is thread safe 2014-09-28 14:52:58 +02:00
Christoph Jentzsch
9cdd218083 Added IOandFlowOperation-, PushDupSwap- and SystemOperations- tests. Removed empty storage from adresses. 2014-09-27 21:48:09 +02:00
obscuren
44d50bc8d2 Have you seen my parents, sir? 2014-09-26 20:51:31 +02:00
obscuren
e20b113053 Logging messages 2014-09-26 20:19:11 +02:00
obscuren
0acdeca3d6 skip messages properly 2014-09-26 20:19:01 +02:00
obscuren
a45e293267 Merge branch 'release/0.6.7' into develop 2014-09-26 13:48:04 +02:00
obscuren
41ae6f298e Merge branch 'release/0.6.7' into develop 2014-09-26 13:47:47 +02:00
obscuren
b8354124be Added protocol caps accessors 2014-09-26 13:45:26 +02:00
obscuren
68119d0929 Fixed messages to use proper numbers 2014-09-26 13:32:54 +02:00
obscuren
9ed8dc7384 Attempt to catch up from unknown block 2014-09-25 16:57:49 +02:00
obscuren
2458697dad Merge branch 'master' into develop 2014-09-24 21:37:05 +02:00
Jeffrey Wilcke
206672db5e Merge pull request #52 from nicksavers/winfix
Add blank line after +build comment
2014-09-24 21:36:37 +02:00
obscuren
5c2aa1d4f5 Merge branch 'master' into develop 2014-09-24 21:21:03 +02:00
obscuren
5cb4120ef5 queue get peers each 10 seconds 2014-09-24 21:20:57 +02:00
obscuren
496df5c29a Merge branch 'master' into develop 2014-09-24 21:13:35 +02:00
obscuren
3aeba50c38 merge error 2014-09-24 21:13:28 +02:00
obscuren
ecdda01841 Merge branch 'release/0.6.6' into develop 2014-09-24 20:41:03 +02:00
obscuren
bb4495722f Merge branch 'release/0.6.6' 2014-09-24 20:40:54 +02:00
obscuren
1118aaf840 Temp work around 2014-09-24 20:40:40 +02:00
obscuren
544b7fba7f Merge branch 'tmp' into develop
Conflicts:
	peer.go
2014-09-24 19:59:14 +02:00
obscuren
cba2f6c2c4 Block pool stop / start 2014-09-24 19:56:21 +02:00
obscuren
1fe2d0d0e0 Peers no longer take care of block processing 2014-09-24 19:55:28 +02:00
obscuren
54558dd8ae Removed log 2014-09-24 19:54:51 +02:00
obscuren
60a8c9527c Mine without txs 2014-09-24 19:54:37 +02:00
obscuren
84690bfbbe Changed the block fetching code and hash distribution 2014-09-24 19:54:30 +02:00
obscuren
d3a0bb4f35 Info => Debug 2014-09-24 19:54:14 +02:00
obscuren
ad13b402d7 Fixed race condition 2014-09-24 17:47:01 +02:00
obscuren
b66fcf85df checkp 2014-09-24 11:55:02 +02:00
obscuren
ba43364f36 tmp 2014-09-24 11:41:57 +02:00
obscuren
57dc435f9b Added TD for each block 2014-09-24 11:39:17 +02:00
nicksavers
c582890590 Add blank line after +build comment 2014-09-23 20:04:06 +02:00
obscuren
615d20598a Merge branch 'develop' 2014-09-23 18:19:56 +02:00
obscuren
46a496428f ugh 2014-09-23 18:19:51 +02:00
obscuren
bc1a173d2f Merge branch 'hotfix/0.6.5-3' into develop 2014-09-23 17:55:54 +02:00
obscuren
5c5db7d931 Merge branch 'hotfix/0.6.5-3' 2014-09-23 17:55:45 +02:00
obscuren
6800c3665a Re-added min gas price check on tx pool 2014-09-23 17:55:34 +02:00
Christoph Jentzsch
28ed968b46 Added blockInfoTest 2014-09-23 15:49:22 +02:00
Christoph Jentzsch
ffbd5a35b5 Added environmentalInfo- and sha3- test 2014-09-23 15:37:52 +02:00
obscuren
b73c07dd80 Merge branch 'hotfix/0.6.5-2' into develop 2014-09-23 12:00:25 +02:00
obscuren
ea67d853a8 Merge branch 'hotfix/0.6.5-2' 2014-09-23 12:00:10 +02:00
obscuren
ac5e86b7ae Removed windows support for serpent :-( 2014-09-23 12:00:01 +02:00
obscuren
1b66e1c93a Merge branch 'hotfix/0.6.5-1' into develop 2014-09-23 10:21:29 +02:00
obscuren
0705bb3fe5 Merge branch 'hotfix/0.6.5-1' 2014-09-23 10:21:13 +02:00
obscuren
48fd23dc10 don't mine without transactions 2014-09-23 10:20:55 +02:00
obscuren
df30588eb6 Merge branch 'release/0.6.5' into develop 2014-09-22 19:34:49 +02:00
obscuren
ce149d2733 Merge branch 'release/0.6.5' 2014-09-22 19:34:31 +02:00
obscuren
7d08e4f7d1 Remove log 2014-09-22 18:15:32 +02:00
obscuren
2ae3bda029 Increased from 200 nano to milliseconds 2014-09-22 18:15:10 +02:00
obscuren
1bc815e0b1 Remove log 2014-09-22 16:30:30 +02:00
obscuren
16871ae2b4 New Peer server 2014-09-22 16:28:49 +02:00
obscuren
9ed5b4d90e Support C++ GetBlockHash by assuming empty = done 2014-09-22 16:28:28 +02:00
obscuren
b65f29f8fa Added JavaScript JSON helper 2014-09-22 14:51:41 +02:00
obscuren
65a802c678 Re-wrote Call and Execute to use the new vm messages 2014-09-22 14:51:21 +02:00
obscuren
151f9c7f82 BigInt accept string 2014-09-22 14:50:53 +02:00
Christoph Jentzsch
54c14f1ff3 Added bitwise logic operation test 2014-09-22 13:06:57 +02:00
Christoph Jentzsch
d0af113aab Added vm arithmetic test 2014-09-20 01:42:51 +02:00
obscuren
80261c803a Fixed deref ptr 2014-09-19 13:19:19 +02:00
Jeffrey Wilcke
cb8261a78b Update genesishashestest.json 2014-09-19 13:15:44 +02:00
obscuren
863785a520 Updated opcodes 2014-09-18 16:48:42 +02:00
obscuren
f3a93b046e Upped protocol version for VM change 2014-09-18 01:02:15 +02:00
obscuren
b3834d8272 Removed extra slash so @nicksavers gets off my back ;-) 2014-09-17 16:28:30 +02:00
obscuren
a26c479182 Added len 2014-09-17 15:58:02 +02:00
obscuren
9559b53228 Added Past peers option 2014-09-17 15:57:44 +02:00
obscuren
eb32fe20c8 Rewrite 2014-09-17 15:57:32 +02:00
obscuren
fd041d91ee Truncate when writing 2014-09-17 15:57:07 +02:00
obscuren
1549a29c9d Connect to previous peer 2014-09-16 16:36:27 +02:00
obscuren
66e309c5c4 Up deadline to reduce cpu load 2014-09-16 16:36:18 +02:00
obscuren
fb528c47c0 Moved code 2014-09-16 16:19:48 +02:00
obscuren
74de0f1f2a Rewrote reading strategy 2014-09-16 16:06:38 +02:00
obscuren
d02024929a require 5 for post 2014-09-16 11:35:26 +02:00
obscuren
399256b384 VM execution fixes
Refactoring caused executing issues
2014-09-15 22:11:05 +02:00
obscuren
33a0dec8a1 Improved catching up and refactored 2014-09-15 15:42:12 +02:00
obscuren
2f614900e8 Updated GHOST 2014-09-15 01:11:01 +02:00
obscuren
4db4ec1621 Added unique set 2014-09-15 01:10:50 +02:00
obscuren
74ef22d824 add it to the list 2014-09-14 14:30:33 +02:00
obscuren
86d1a26b13 fixed status message 2014-09-14 14:09:46 +02:00
obscuren
742a9b00bc tmp 2014-09-14 13:47:29 +02:00
obscuren
9e89dacc64 log removed 2014-09-14 13:42:13 +02:00
obscuren
f63cb27803 tmp 2014-09-14 13:42:02 +02:00
obscuren
954ba211bf Fixed contract validation address in tx pool 2014-09-14 12:02:35 +02:00
obscuren
4b4830692a Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-09-14 00:13:32 +02:00
obscuren
2fb57b2ea7 Reworked filters 2014-09-14 00:13:23 +02:00
obscuren
96cf6fc147 Merge branch 'master' into develop 2014-09-13 14:39:10 +02:00
obscuren
8ef17c2fb1 fi crypto 2014-09-13 14:39:01 +02:00
obscuren
10564723b9 added string casting 2014-09-13 13:14:24 +02:00
Jeffrey Wilcke
369e8c4150 Merge pull request #49 from WeMeetAgain/develop
add pushtx to api
2014-09-11 13:28:05 +03:00
obscuren
c0187930dc Removed some commented code 2014-09-10 11:39:11 +02:00
obscuren
2f362509b8 New p2p protocol. NOTE: Needs major refactoring. See #50 2014-09-10 11:22:19 +02:00
Cayman Nava
8ac1b85a0b Merge branch 'feature-pushtx' into develop 2014-09-09 21:35:53 -07:00
Cayman Nava
7dacd7eb78 add pushtx to api
Previously the software assumed use of an internal private key for use in all broadcasted transactions. This addition lets nodes relay pre-signed transactions originating from sources other than the node itself.
2014-09-09 21:27:34 -07:00
obscuren
2949990016 Added CALLSTATELESS 2014-09-10 00:19:20 +02:00
obscuren
d91357d00c Added GetCode method 2014-09-08 00:50:04 +02:00
obscuren
0fea62ec6d Make use of new list type for transactions instead of json 2014-09-08 00:49:47 +02:00
obscuren
a63b74e345 New OPCODES
* EXT- CODECOPY, CODESIZE
2014-09-08 00:49:25 +02:00
obscuren
0b6b6b52fe Contract creation address are empty again 2014-09-08 00:48:59 +02:00
obscuren
250d40bca0 Reset the transient state when a new block's been found 2014-09-08 00:48:39 +02:00
obscuren
adabd71a4a Changed back to FIPS 180 2014-09-07 22:34:24 +02:00
obscuren
ff27df78fc Added new list type which can embed any slice type 2014-09-07 10:18:54 +02:00
obscuren
627b7c9fd7 Updated to latest sha3 implementation. Fixes #48 2014-09-07 10:07:51 +02:00
obscuren
6afc16399f Block size 2014-08-25 12:53:06 +02:00
obscuren
3f904bf3ac Implemented POST 2014-08-25 11:29:42 +02:00
obscuren
cdbc3ecc2a Serpent! :-) 2014-08-24 00:16:32 +02:00
obscuren
67af300383 Merge branch 'master' into develop 2014-08-23 19:01:15 +02:00
obscuren
ccea5fa948 changed to new nat-pmp repo 2014-08-23 19:01:06 +02:00
obscuren
fcc6f183a4 Changed level 2014-08-23 19:00:52 +02:00
obscuren
962255b373 Removed old code 2014-08-23 11:00:33 +02:00
obscuren
d9d4f63cd4 Don't add ... 2014-08-22 17:57:33 +02:00
obscuren
56103f0751 Log 2014-08-22 17:10:18 +02:00
obscuren
be9bfb5536 Minor improvement catching up
* When catching up check linked up the chain of hashes
2014-08-22 14:52:20 +02:00
obscuren
836ed9d6b7 Write Protocol version to the db so we can perform sanity checks 2014-08-22 11:34:59 +02:00
obscuren
a9f9a59416 Extra checks 2014-08-22 10:58:57 +02:00
obscuren
42d43147ca Changed log statements 2014-08-22 10:58:49 +02:00
obscuren
93008e279d Removed old chain code 2014-08-22 10:58:14 +02:00
obscuren
740081e2f7 Storage at changed to return bytes 2014-08-21 21:06:42 +02:00
obscuren
088bbc6bb7 Merge branch 'release/0.6.4' into develop 2014-08-21 20:25:38 +02:00
obscuren
2d00027fd9 Merge branch 'release/0.6.4' 2014-08-21 20:25:09 +02:00
obscuren
d03ab3c976 invalidated SWAP/DUP 2014-08-21 20:25:02 +02:00
obscuren
fb90ecc8bc Merge branch 'release/0.6.4' 2014-08-21 20:23:33 +02:00
obscuren
5196f9a340 bump 2014-08-21 20:22:39 +02:00
obscuren
732573ba51 Turbo mining 2014-08-21 20:13:26 +02:00
obscuren
854d6d4e5c DUP/SWAP n & ADD/MULMOD 2014-08-21 19:23:54 +02:00
obscuren
a289a77d5d DUP n SWAP n 2014-08-21 18:15:09 +02:00
obscuren
3def9258be Turbo mode 2014-08-21 18:14:49 +02:00
obscuren
0eb08693e9 Turbo mode 2014-08-21 18:14:41 +02:00
obscuren
cc6ad034f1 Merge branch 'release/0.6.3' into develop 2014-08-21 15:46:51 +02:00
obscuren
0af0f0d890 Merge branch 'release/0.6.3' 2014-08-21 15:46:26 +02:00
obscuren
c173e9f4ab MIT -> LGPL 2014-08-21 15:43:14 +02:00
obscuren
15ef3388c1 Doc 2014-08-21 15:27:01 +02:00
obscuren
d90ae4d45b Prot 0.6.3 2014-08-21 15:24:19 +02:00
obscuren
b368549fd5 Always return something valid 2014-08-21 15:12:13 +02:00
obscuren
c44f4f32fe Re-enabled catching up flag 2014-08-21 14:52:21 +02:00
obscuren
eaa2e8900d PoC 6 networking code.
* Added block pool for gathering blocks from the network (chunks)
* Re wrote syncing
2014-08-21 14:47:58 +02:00
obscuren
79c64f6bca Added block by hash or number 2014-08-20 16:40:19 +02:00
obscuren
89c442cadb Added block by number 2014-08-20 13:36:54 +02:00
obscuren
55a2f35a64 JS Filter 2014-08-20 13:05:26 +02:00
obscuren
b97ea0e447 Added JSFilter type 2014-08-20 09:59:09 +02:00
obscuren
b0ae61c652 Removed the "Get" part 2014-08-18 10:17:45 +02:00
obscuren
793e666f36 Dump bytes instead of strings 2014-08-17 12:42:32 +02:00
obscuren
4008ff32c9 Mutan compile 2014-08-17 12:42:02 +02:00
obscuren
d79387c27e Mutan compile 2014-08-17 12:41:52 +02:00
obscuren
4bd6003b7f removed pub completely in favour of pipe 2014-08-16 01:38:02 +02:00
obscuren
7d95e8624a Added message to closure && added change addresses 2014-08-15 16:19:10 +02:00
obscuren
2b9f71c6ca Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-08-15 13:05:20 +02:00
obscuren
d701b23230 Reworking the public js interface (pub) => (pipe) 2014-08-15 13:05:13 +02:00
Jeffrey Wilcke
79bc628858 Merge pull request #43 from ethersphere/develop
inline mnemonic wordlist to support binary builds without extra asset
2014-08-15 10:49:43 +02:00
obscuren
ace551030f Convert to hex 2014-08-15 01:08:23 +02:00
obscuren
c7ee9844bd Removed old code 2014-08-15 00:25:16 +02:00
obscuren
0fcc606569 Added new filter from map 2014-08-15 00:24:37 +02:00
obscuren
07cfb7b64a updated filter so it accepts multiple from and to 2014-08-14 17:02:39 +02:00
obscuren
0d733aa071 Removed validation check from GetMessages 2014-08-14 17:02:21 +02:00
zelig
0283498140 Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-08-14 12:11:59 +02:00
obscuren
fa881220ae Updated lookup method to include CNAME's as well as A records 2014-08-13 10:52:50 +02:00
zelig
e85f3972b9 inline mnemonic wordlist to support binary builds without extra asset 2014-08-12 14:56:10 +02:00
obscuren
a760ce05b9 Updated chain for filtering 2014-08-11 16:23:38 +02:00
obscuren
2e5d28c73f Added bloom filter & block filter methods 2014-08-11 16:23:17 +02:00
obscuren
42d2bc28af Upped protocol version 2014-08-09 18:10:11 +01:00
obscuren
024be32f06 Make sure all left padded zero's aren't included 2014-08-09 18:09:55 +01:00
obscuren
27290e1277 Fixed gas limit calculation 2014-08-09 18:06:16 +01:00
obscuren
c51db4c940 Fixed stack issue 2014-08-08 14:36:59 +01:00
obscuren
3fc24013ef Fixed issue with overflowing 256 bit integers 2014-08-08 12:04:18 +01:00
obscuren
d6b0ab3028 Changed to DnsReg 2014-08-07 15:26:07 +02:00
obscuren
7272577fe6 Added dns lookup 2014-08-07 15:11:54 +02:00
obscuren
da50c75148 Added state dump method 2014-08-06 09:53:00 +02:00
obscuren
4edf7cfb05 config => Config 2014-08-05 11:31:39 +02:00
obscuren
3c78e418fb world => World 2014-08-05 11:30:12 +02:00
obscuren
e71b198e3d Renamed object to Object 2014-08-05 11:26:12 +02:00
obscuren
4f0bda403e Added vm options for object execution 2014-08-05 11:10:24 +02:00
obscuren
c215bbadf1 pipe 2014-08-05 10:17:26 +02:00
obscuren
0f84b9c30d Added exist method 2014-08-04 16:34:55 +02:00
obscuren
342cc122b4 Added general Pipe API 2014-08-04 16:25:53 +02:00
obscuren
03ce15df4c ethstate.NewState => ethstate.New 2014-08-04 10:42:40 +02:00
obscuren
3debeb7236 ethtrie.NewTrie => ethtrie.New 2014-08-04 10:38:18 +02:00
obscuren
2e7cf83522 Merge branch 'ethersphere-feature/ethutil-refactor' into develop 2014-08-01 10:30:19 +02:00
obscuren
8bed47a2d4 Merge branch 'feature/ethutil-refactor' of https://github.com/ethersphere/eth-go into ethersphere-feature/ethutil-refactor 2014-08-01 10:22:25 +02:00
obscuren
5ede1224e4 minor rlp things 2014-08-01 10:21:43 +02:00
zelig
9831619881 merge upstream 2014-07-30 18:03:20 +02:00
obscuren
5a2d62e4d9 Added better data parser 2014-07-30 13:06:59 +02:00
obscuren
42d47ecfb0 Removed peer disconnect on pong timeout. Fixes #106
This mechanism wasn't very accurate so it has been removed.
2014-07-30 11:26:38 +02:00
obscuren
1f9894c084 Old code removed and renamed amount to balance 2014-07-30 00:31:15 +02:00
obscuren
27f8922653 Increased block request amount 2014-07-29 23:34:21 +02:00
obscuren
74d7012025 Added temp seed 2014-07-29 23:33:59 +02:00
obscuren
5ca2938117 Fixed 2014-07-29 23:33:33 +02:00
obscuren
6fd2401cdf Fixed issue with var int reading.
Reading uneven byte slices were broken.
2014-07-29 23:33:18 +02:00
obscuren
6e94c024e4 Added big data test and updating to reader 2014-07-29 23:31:33 +02:00
obscuren
d1d2b660dc Prot 2014-07-29 15:55:08 +02:00
obscuren
8e7c4f91e3 Added ops 2014-07-29 10:33:30 +02:00
obscuren
41bd38147c Clean up and util methods 2014-07-26 11:24:44 +02:00
obscuren
92ffc1cc4c Merge branch 'release/0.6.0' into develop 2014-07-25 10:43:59 +02:00
obscuren
d761af84c8 Merge branch 'release/0.6.0' 2014-07-25 10:43:35 +02:00
obscuren
54f9ea14e1 Removed old S(DIV/MOD) 2014-07-25 09:57:47 +02:00
obscuren
7ee49c32b7 Added update method and general service timer
* disable catching up if no block received for longer than 10 seconds
2014-07-24 17:10:54 +02:00
obscuren
702cf5a3e1 Merge branch 'feature/refactor_vm' into develop 2014-07-24 14:16:04 +02:00
obscuren
dcf4fad971 Networking code 2014-07-24 12:30:04 +02:00
obscuren
6d69ca36a7 Peer reconnect attempt 2014-07-24 12:25:41 +02:00
obscuren
a45c08f9fe Removed old code 2014-07-24 12:19:55 +02:00
obscuren
3c3292d505 Added recoverable option 2014-07-24 12:12:00 +02:00
obscuren
306b5bcff3 Changed catching up code & peer handler
* Peers should be added no matter what
* Catch up with _anyone_
2014-07-24 12:11:30 +02:00
obscuren
cbd71ef8f5 Add Tx 2014-07-24 12:10:18 +02:00
obscuren
32d125131f Refactored to new state and vm 2014-07-24 12:04:15 +02:00
obscuren
958b482ada div 0 err 2014-07-23 12:36:47 +02:00
obscuren
92b16618ed Merge branch 'master' into develop 2014-07-23 12:04:45 +02:00
obscuren
a3771e7d7b Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-07-23 12:04:41 +02:00
obscuren
06ec80f394 zero devision check 2014-07-23 12:04:27 +02:00
obscuren
5d57b78471 Added big int to uint switch 2014-07-22 16:16:00 +02:00
obscuren
490ca410c0 Minor improvements and fixes to the new vm structure 2014-07-22 15:57:54 +02:00
Maran
4513623da1 Update keyaddrtest to be valid JSON 2014-07-22 12:24:46 +02:00
Maran
9c86e99968 Merge branch 'master' into develop 2014-07-22 12:16:09 +02:00
obscuren
1e8b54abfb Refactored state, state object and vm
* The State and StateObject have been moved to their own package
* The VM is moved to it's own package
2014-07-22 11:54:48 +02:00
Vitalik Buterin
e8cb5c221d Added next/prev trie test 2014-07-21 23:30:33 -04:00
obscuren
20ee1ae65e Refactored CALLDATALOAD to use big int
* Added BigMin
2014-07-21 20:38:43 +02:00
obscuren
eab0b2a90a Merge branch 'master' into develop 2014-07-21 20:23:15 +02:00
zelig
194c58858c send zero event to miner.powQuitChan fixes miner hanging 2014-07-21 19:12:04 +01:00
zelig
67528cf970 ethreact/README.md 2014-07-21 15:10:56 +01:00
Maran
6774ddaba2 Fix regression on 32bit (windows) systems 2014-07-21 14:35:37 +02:00
zelig
13cc220c0d Merge branch 'develop' of github.com:ethereum/eth-go into feature/ethutil-refactor 2014-07-21 13:31:26 +01:00
zelig
1e4af85a38 merge upstream 2014-07-21 13:26:29 +01:00
obscuren
8f91d47bf3 Merge branch 'master' into develop 2014-07-21 12:21:42 +02:00
obscuren
5d2669dbd3 Fixed tx sha creation 2014-07-21 12:21:34 +02:00
obscuren
93261b98c2 Changed iterator 2014-07-21 11:56:04 +02:00
obscuren
9f00aeae29 Base time on previous parent, not last block 2014-07-18 16:13:21 +02:00
obscuren
2762ec22d0 Fixed miner and logger 2014-07-18 13:50:15 +02:00
obscuren
cd9b344506 Fixed range 2014-07-18 13:21:40 +02:00
obscuren
61cc2ba7d9 fixed 2014-07-18 13:00:22 +02:00
obscuren
dad29bcaa1 Added channel for starting/stopping miner 2014-07-18 12:21:11 +02:00
obscuren
65650a5c66 Merge branch 'develop' into guiminer 2014-07-18 12:03:19 +02:00
Maran
db8170def3 WIP to expose hashrate to gui 2014-07-18 12:01:08 +02:00
obscuren
449b9a9d68 Check if version in known + fix 2014-07-18 11:57:44 +02:00
obscuren
28a146d438 Added find name for namereg 2014-07-17 22:30:00 +02:00
obscuren
6a19b62db6 added chainSync event 2014-07-17 22:01:13 +02:00
obscuren
a626b7ebe1 Fixed string data 2014-07-17 17:11:00 +02:00
obscuren
3331bb29ea bump 2014-07-17 15:35:46 +02:00
obscuren
16f6100500 Removed debug log 2014-07-17 15:11:09 +02:00
obscuren
90f63657cb Removed debug log 2014-07-17 15:01:33 +02:00
obscuren
0415e4a637 Fixed coinbase copy in state 2014-07-17 14:53:27 +02:00
obscuren
ed3424ff75 Trie fixes 2014-07-17 11:21:18 +02:00
obscuren
14c4f06100 Convert a byte slice to address 2014-07-16 13:20:57 +02:00
obscuren
8820d4e5ac Decreased timeout 2014-07-15 20:36:11 +02:00
obscuren
7c0a27a0f4 Added each callback for storage 2014-07-15 20:36:04 +02:00
obscuren
7a410643ac Added/changed logging 2014-07-15 20:35:55 +02:00
obscuren
34da3b4fa8 Moved 2014-07-15 20:35:07 +02:00
obscuren
4a2dd306c7 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-07-15 15:30:06 +02:00
obscuren
09bade6466 Fixed an issue where the trie might crash on missmatching lengths 2014-07-15 15:29:54 +02:00
Maran
9a93169898 Rewrote mnemonic word loading to facilitate deployable builds. 2014-07-15 12:52:44 +02:00
zelig
017d36e6b2 properly unsubscribe react channels when miner stops - fixes write on closed chan crash 2014-07-15 01:29:07 +01:00
zelig
1735ec0362 use ethreact.Event and ethreact.ReactorEngine 2014-07-15 01:11:06 +01:00
zelig
0ecc5c815e reactor test 2014-07-15 00:15:37 +01:00
obscuren
5ec62a5153 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-07-15 00:25:57 +02:00
obscuren
2784e256f1 Vm logging on diff 2014-07-15 00:25:49 +02:00
obscuren
50bc838047 Moved checks 2014-07-15 00:25:38 +02:00
obscuren
69acda2c25 Paranoia check moved 2014-07-15 00:25:27 +02:00
obscuren
98f21d8973 Compare method for receipts 2014-07-14 22:52:44 +02:00
obscuren
767d24ea5d Removed defer and added receipts checking in tx processing 2014-07-14 22:52:30 +02:00
zelig
d1c89727dc fix send overwritten by merge 2014-07-14 19:02:34 +01:00
zelig
3d5db7288f merge upstream 2014-07-14 18:50:06 +01:00
zelig
dc11b5c55e fix reactor channel blocking 2014-07-14 18:40:18 +01:00
zelig
5c03adbded fix logger channel blocking 2014-07-14 18:37:01 +01:00
Maran
8845fb7eae Add windows helper functions 2014-07-14 15:24:38 +02:00
Vitalik Buterin
98823c04b3 Replaced with deterministic test 2014-07-14 02:51:31 -04:00
obscuren
5a0c4ce295 Fixed "Copy" to also copy over the pending storage changes 2014-07-14 00:38:20 +02:00
obscuren
04f8c455e2 Added diff type 2014-07-14 00:37:50 +02:00
obscuren
2c46bfde8b Increased block request 2014-07-14 00:37:41 +02:00
obscuren
5b2e5d180f Changed diff output not to prefix hex with 0x 2014-07-14 00:37:18 +02:00
Vitalik Buterin
357eb21e4d Added my own random and namecoin tests (pyethereum) 2014-07-13 16:12:56 -04:00
obscuren
6426f3635e Forgot to return gas when CALL's value transfer fails 2014-07-13 17:56:14 +02:00
obscuren
ee3ba0b1d6 Catch up per 10 2014-07-13 17:45:39 +02:00
Gav Wood
00cd0cce8f Output hex strings. 2014-07-12 21:20:04 +02:00
obscuren
54715586ab Changed sha3 to official one 2014-07-12 11:10:47 +02:00
obscuren
9010857677 Special diff output for execution 2014-07-11 16:04:09 +02:00
obscuren
ff151f9fbc vm output 2014-07-10 21:54:36 +02:00
obscuren
5c7e96d895 Removed serpent 2014-07-10 18:19:38 +02:00
obscuren
04561c4ddc Updated VM & added helper methods to state
* VM BALANCE opcode updated to pop 1 item and use that to retrieve the
  address' balance
* GetBalance and GetNonce on state that'll always return something valid
2014-07-10 17:58:16 +02:00
obscuren
9688ebef52 Return from execution immediately if there's no code 2014-07-10 15:31:48 +02:00
obscuren
d6753b2883 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-07-10 15:06:55 +02:00
obscuren
b7ff773ecf Removed debug log 2014-07-10 15:06:46 +02:00
obscuren
e504088b79 Consensus and bug fixes
* Ensure that each state object has an address that is 20 bytes
* Byte logging for vm
* changed diff output
2014-07-10 15:05:06 +02:00
obscuren
d52e5f7130 Removed hardcoded ip 2014-07-10 15:04:19 +02:00
obscuren
bea468f1e5 Increased timeout to 500ms 2014-07-10 15:03:48 +02:00
obscuren
639f1fd339 Log received and send to 2014-07-10 15:03:26 +02:00
obscuren
67e5689f87 Fixed BYTE opcode 2014-07-10 12:51:19 +02:00
Gav Wood
ddfa3af45d Everything a string. 2014-07-10 11:28:35 +01:00
Gav Wood
d659f469a9 Code fixes. 2014-07-10 10:16:25 +01:00
Maran
dcbd97d29c Check current folder for mnemonic words if it fails in source folder. For binary support 2014-07-09 10:59:49 +02:00
obscuren
794e65b60e Updated peer server 2014-07-07 22:08:09 +02:00
obscuren
6cb35836a2 Upped protocol version number 2014-07-07 16:06:09 +02:00
obscuren
e4e704f480 Fix quit 2014-07-07 16:05:59 +02:00
obscuren
14d13167a7 Remove debug println 2014-07-07 13:59:59 +02:00
obscuren
78aad9a192 Getting rid of deprecated methods 2014-07-07 13:59:32 +02:00
obscuren
b01cb2406f Fixed state reset case 2014-07-07 13:59:09 +02:00
obscuren
42bb3d8aae Removed old if statement. No longer needed 2014-07-07 13:58:54 +02:00
obscuren
96ac061e68 Log change 2014-07-07 13:58:28 +02:00
obscuren
890745e846 Increased timeout 2014-07-07 13:58:20 +02:00
zelig
4d77b7face remove extra case in main loop 2014-07-07 12:30:25 +01:00
obscuren
68fba4b781 Fixed state reset on err 2014-07-07 11:17:48 +02:00
Jeffrey Wilcke
239a5d3230 Merge pull request #34 from ethereum/revert-33-feature/ethutil-refactor
Revert "ethreact - Feature/ethutil refactor"
2014-07-07 10:59:26 +02:00
Jeffrey Wilcke
6fe9b4ab5e Revert "ethreact - Feature/ethutil refactor" 2014-07-07 10:59:16 +02:00
obscuren
9dab7dcc3c Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-07-07 10:53:25 +02:00
obscuren
d40cba3042 changed state reset 2014-07-07 10:53:20 +02:00
obscuren
1199941475 Connect to peer node by default 2014-07-07 10:52:58 +02:00
obscuren
ec040908e9 Protocol bump 2014-07-07 10:52:39 +02:00
Jeffrey Wilcke
b958179263 Merge pull request #33 from ethersphere/feature/ethutil-refactor
ethreact - Feature/ethutil refactor
2014-07-07 10:52:02 +02:00
Gav Wood
5e83ea8228 Prettier VM tests. 2014-07-06 16:17:12 +02:00
Gav Wood
a09aae0efe Fix VM tests. 2014-07-06 15:46:01 +02:00
zelig
5a2afc5754 fix reactor engine main loop blocked to wait if drained 2014-07-05 19:56:01 +01:00
zelig
d4300c406c logger fix
- introduce quit, drained, shutdown channels
- mainLoop falls through reading message channel to drained state, and waits is blocked in default branch until any message is sent
- Flush() waits for <-drained
- Stop() pushes quit and nodges mainloop out of blocking drained state
- package-global mutex
- Reset()
- clear tests
2014-07-05 19:11:08 +01:00
zelig
4fb2905b1e Merge branch 'develop' of github.com:ethereum/eth-go into feature/ethutil-refactor 2014-07-05 12:53:00 +01:00
obscuren
b232acd04e Debugging mode for vm 2014-07-05 13:24:49 +02:00
obscuren
329887df99 Fixed crazy looping 2014-07-05 13:24:26 +02:00
zelig
44d0d6abd2 Merge branch 'develop' of github.com:ethereum/eth-go into feature/ethutil-refactor 2014-07-04 19:40:23 +01:00
zelig
0c6f1c9c3a ethreact
- consistent renaming
- React -> Event
- ReactorEvent -> EventHandler
- NewReactorEngine -> New
- async ReactorEngine main loop with select on main eventChannel and quit channel
- ReactorEngine main loop control with Start() Stop() Flush()
- ReactorEngine.dispatch
- use sync.RWMutex
- delete eventHandler if subscribed channels go to 0
2014-07-04 19:38:53 +01:00
zelig
584d1c61ec use ethreact.Event and ethreact.ReactorEngine 2014-07-04 19:38:44 +01:00
zelig
af27264140 remove reactor code from ethutil 2014-07-04 19:37:40 +01:00
Jeffrey Wilcke
ec9a044a17 Merge pull request #10 from romanman/patch-1
Update vmtests.json
2014-07-04 15:56:52 +02:00
obscuren
90eb4f1939 Debug output, minor fixes and tweaks
* Script compile length fix
* Transition fix
2014-07-04 15:32:10 +02:00
obscuren
23b5b5fa36 Length check 2014-07-04 13:34:50 +02:00
obscuren
d5bcc01eae Fixed shebang check. Previously it would hang on an unknown shebang 2014-07-04 13:05:07 +02:00
romanman
5e0123fbe1 Update vmtests.json 2014-07-04 10:23:04 +01:00
obscuren
633027d980 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-07-04 00:13:57 +02:00
obscuren
d3d043dba0 Merge branch 'ethersphere-feature/clientid' into develop 2014-07-04 00:13:42 +02:00
obscuren
db60ebbbd7 Merge branch 'feature/clientid' of https://github.com/ethersphere/eth-go into ethersphere-feature/clientid 2014-07-04 00:12:28 +02:00
obscuren
cb7ebdf821 Decreased timeout 2014-07-04 00:12:21 +02:00
Jeffrey Wilcke
70e1a1a4df Merge pull request #32 from josephyzhou/develop
typo, duplications
2014-07-04 00:10:29 +02:00
Joey Zhou
7c41e413e4 typo, duplications 2014-07-03 11:31:47 -07:00
romanman
2b6da2f5f2 Update vmtests.json
arith testcase updated
2014-07-03 17:45:04 +01:00
zelig
f02602d02d ConfigManager (transitional)
- remove clientstring handling from ethutil.Config
- ReadConfig takes no Identifier argument
- members Ver, ClientString, ClientIdentifier removed from Config
- type ConfValue removed
- expose public type ethutil.ConfigManager
- Set -> Save(key string, value interface{}) now takes any value to allow for persisting non-string values directly
- TODO: eliminate all eth specific configs, just a wrapper around globalconf
2014-07-03 17:30:51 +01:00
zelig
90c2064640 peer constructors now set version string with ethereum.ClientIdentity().String() 2014-07-03 17:30:37 +01:00
zelig
c833c3fec8 add ClientIdentity() ethwire.ClientIdentity to Ethereum 2014-07-03 17:30:04 +01:00
zelig
c64629964f ethwire.ClientIdentity now handles Client info sent in handshake + test 2014-07-03 17:28:27 +01:00
zelig
de2da4fd19 Merge branch 'develop' of github.com:ethereum/eth-go into feature/clientid 2014-07-03 15:08:13 +01:00
zelig
198e5eeab9 EthManager interface extended with ClientIdentity() ethwire.ClientIdentity 2014-07-03 15:08:06 +01:00
obscuren
8baa0f84e7 Fixed reverting error 2014-07-03 16:07:21 +02:00
obscuren
5d67139206 Fix 2014-07-03 10:05:02 +02:00
obscuren
5b8dde9602 Fixed CREATE op. Fixes #87 2014-07-03 10:04:38 +02:00
obscuren
81bc721c5c Fixed address generation 2014-07-03 10:03:58 +02:00
Gav Wood
4bb646117d Merge branch 'develop' of github.com:/ethereum/tests into develop 2014-07-02 19:43:22 +02:00
Gav Wood
bba38980bd New tests. 2014-07-02 19:43:06 +02:00
obscuren
35ae9e3aa8 Paranoia check 2014-07-02 17:48:10 +02:00
obscuren
2f9bc2ab75 Removed old code 2014-07-02 17:47:33 +02:00
obscuren
8de099ae75 Added paranoia check 2014-07-02 17:47:18 +02:00
obscuren
40e3d2ab55 Changed CREATE 2014-07-02 17:47:09 +02:00
Vitalik Buterin
a33b309d99 Testing submodules 2014-07-02 10:14:05 -04:00
Vitalik Buterin
50318217ca Testing submodules 2014-07-02 10:10:46 -04:00
Vitalik Buterin
57fa655522 Testing submodules 2014-07-02 10:09:08 -04:00
obscuren
6748158ab4 Moved methods 2014-07-02 13:40:02 +02:00
obscuren
e4d2d00d41 Added support for breakpoints on specific instructions 2014-07-02 13:08:32 +02:00
obscuren
315d65280b Removed comment 2014-07-02 11:30:14 +02:00
obscuren
d15952c867 Moved debug hook to Vm directly 2014-07-02 01:04:21 +02:00
obscuren
1954ef47e6 Suicide is deferred to update 2014-07-02 00:06:21 +02:00
obscuren
fd1d0bbde7 Updated to generic padding function 2014-07-02 00:05:48 +02:00
obscuren
d7e396a98c l <=> r 2014-07-01 23:59:37 +02:00
obscuren
00d3935aac Removed old method 2014-07-01 23:59:18 +02:00
obscuren
bb2433ca1a Added quitting reason 2014-07-01 20:32:47 +02:00
obscuren
7238a77327 Removed old code 2014-07-01 20:12:18 +02:00
obscuren
dd869064a6 delete? 2014-07-01 20:09:37 +02:00
obscuren
7a2a63f32b Added utility wrapper for Ethereum Config contract
Note, this utility function has to move elsewhere
2014-07-01 20:09:21 +02:00
obscuren
28ef7d228c Added Left and Right padding utility functions 2014-07-01 20:08:48 +02:00
obscuren
6151ae7db5 Fixed key import for empty entries 2014-07-01 20:08:32 +02:00
obscuren
3889785017 Added Path utility 2014-07-01 20:08:18 +02:00
obscuren
7a9ff4f8d4 bump 2014-07-01 16:28:17 +02:00
Jeffrey Wilcke
29f613ef84 Merge pull request #28 from ethersphere/feature/keys
Feature/keys
2014-07-01 16:16:05 +02:00
zelig
ff5703fd9b ethutil -> ethtrie.NewTrie 2014-07-01 15:09:43 +01:00
zelig
89630d2826 merge upstream 2014-07-01 15:03:02 +01:00
obscuren
550407b0ec Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-07-01 15:44:43 +02:00
obscuren
d0959063d5 Up 2014-07-01 15:28:12 +02:00
Maran
d294dedfad Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-07-01 15:26:18 +02:00
Maran
e798294a4b Update min GasLimit 2014-07-01 15:25:57 +02:00
Gav Wood
ea0eb0a8c8 Latest genesis block. 2014-07-01 15:19:34 +02:00
obscuren
114e715e3c Merge branch 'ethersphere-feature/keys' into develop 2014-07-01 13:48:28 +02:00
obscuren
253c23240b Merge branch 'feature/keys' of https://github.com/ethersphere/go-ethereum into ethersphere-feature/keys
Conflicts:
	.gitignore
	README.md
2014-07-01 13:45:39 +02:00
obscuren
0ce9003ba7 Fix for creating a tx from an unknown account 2014-07-01 12:16:14 +02:00
obscuren
2bbc204328 Close pow chat. Fixes #95 2014-07-01 11:55:50 +02:00
obscuren
92693e4459 The dragon has been slain. Consensus reached! 2014-07-01 11:26:45 +02:00
obscuren
39263b674c Paranoia 2014-07-01 09:56:10 +02:00
obscuren
5f5910c603 Regression test for trie 2014-07-01 09:55:20 +02:00
obscuren
ed276cd7c2 Added Paranoia check for VM execution 2014-06-30 20:03:31 +02:00
obscuren
82272ee08a Iterator fix 2014-06-30 14:28:54 +02:00
obscuren
9ed0d389b2 Generic trie 2014-06-30 13:34:47 +02:00
Jeffrey Wilcke
25bb76b69c Reset 2014-06-30 13:25:04 +02:00
obscuren
00bb68d7d2 Merge branch 'develop' into interop 2014-06-30 13:13:55 +02:00
obscuren
c23074d5ad Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-06-30 13:13:45 +02:00
obscuren
8ddd4c4c52 wip 2014-06-30 13:09:04 +02:00
obscuren
5a86892ecb Using remote for test cases 2014-06-30 13:08:00 +02:00
Jeffrey Wilcke
74c6d8424e Updated wrong test 2014-06-30 12:10:06 +02:00
zelig
12972b4b65 DBKeyStore.Load returns no error if keyring not found in db 2014-06-29 20:53:26 +01:00
zelig
2920795168 using keyPair.Mnemonic() in file key store Save method 2014-06-29 20:28:54 +01:00
zelig
25314313f8 added Mnemonic() and AsStrings() methods, added memoization for address 2014-06-29 20:28:04 +01:00
zelig
a8be0d9f48 add InitFromString method to be used in gui 2014-06-29 20:26:55 +01:00
zelig
dabaa4cce0 change all modified calls to ethtrie, ethutil and ethcrypto functions 2014-06-29 18:30:05 +01:00
zelig
707d413761 refactor ethutil/trie to ethtrie 2014-06-29 16:26:58 +01:00
zelig
4be3521727 import math/big 2014-06-29 16:17:33 +01:00
zelig
e3b911652d move CreateAddress from ethutil/common to ethcrypto 2014-06-29 16:08:33 +01:00
zelig
5e50b50dc3 no strconv import needed 2014-06-29 16:06:54 +01:00
zelig
772e7e8c8d Key Manager
- keypair, keyring:
-- consistent naming of methods
-- error propagation
-- no panic
- keyManager: persist, import, export, initialize and (re)set keyring
- no global public "singleton" keyring, instead interface via keyManager
- keys test
- KeyStore interface, DB and File store implementations
2014-06-29 16:02:23 +01:00
zelig
e1ea41ee9c remove ethutil helpers (refactored), and keypair (key management under ethcrypto package) 2014-06-29 16:01:57 +01:00
zelig
d87857ffdb config Pubkey removed (unused) 2014-06-29 15:59:57 +01:00
zelig
1db3e2241e move ethutil/mnemonic to ethcrypto - electrum word list now sourced from file 2014-06-29 15:59:35 +01:00
zelig
d085133c6d move ethutil helper crypto functions to ethcrypto/crypto 2014-06-29 15:57:12 +01:00
zelig
5c1e0a6dc4 move ethutil hex conversion functions to bytes 2014-06-29 15:56:40 +01:00
zelig
7489fb784e move ethutil helper slice functions -> slice 2014-06-29 15:56:19 +01:00
Jeffrey Wilcke
9ea3a60291 Fixed roots 2014-06-28 18:48:28 +02:00
Gav Wood
5fc3ac0e92 Simple hex test. 2014-06-28 18:40:06 +02:00
Gav Wood
edd3a00c2a Additional test for jeff. Now use the 0x... notation. 2014-06-28 18:22:18 +02:00
Jeffrey Wilcke
2eae52ebd1 Merge pull request #27 from ethersphere/bugfix/ethchain-test
transitional ethutil.ReadConfig fixes in ethchain tests (they still fail...
2014-06-28 10:22:23 +02:00
Gav Wood
5021e0dd83 VM test framework updated. 2014-06-27 21:35:26 +02:00
Gav Wood
c818d13202 Removed arrays from Trie tests JSON as per conformance guide and changed
vocabulary to match other tests.
VM test updates.
2014-06-27 18:18:24 +02:00
zelig
79009ca074 transitional ethutil.ReadConfig fixes in ethchain tests (they still fail! FIXME :) 2014-06-27 15:56:45 +01:00
obscuren
8151858e70 Merge branch 'master' of github.com-obscure:ethereum/eth-go 2014-06-27 00:17:15 +02:00
obscuren
6c7e58643c Merge branch 'develop' 2014-06-27 00:17:04 +02:00
obscuren
423beddf57 nil check 2014-06-27 00:16:49 +02:00
Jeffrey Wilcke
30f5642c62 Merge pull request #26 from ethersphere/master
bump v5.15
2014-06-27 00:11:55 +02:00
obscuren
e3ad2a3969 Merge branch 'develop' 2014-06-27 00:08:29 +02:00
obscuren
8119d77a21 :-( 2014-06-27 00:08:19 +02:00
zelig
d551a75c35 bump v5.15 2014-06-26 21:20:02 +01:00
obscuren
8935a93cf8 Merge branch 'release/0.5.15' into develop 2014-06-26 19:55:19 +02:00
obscuren
9d5a3f0131 Merge branch 'release/0.5.15' 2014-06-26 19:55:14 +02:00
obscuren
a98e6a262a Merge branch 'develop' into release/0.5.15 2014-06-26 19:53:08 +02:00
obscuren
491925b71e Merge branch 'ethersphere-feature/logging' into develop 2014-06-26 19:52:31 +02:00
zelig
853053a3b2 go fmt 2014-06-26 18:45:57 +01:00
obscuren
21e389bec5 bump 2014-06-26 19:04:57 +02:00
zelig
da38faa8f7 merge upstream; fix port in use warning; new logger API 2014-06-26 16:37:56 +01:00
zelig
098136b681 ethereum logs server started/stopped message 2014-06-26 10:43:02 +01:00
obscuren
0ed19d9f20 Logging, variable rearrangement 2014-06-26 11:26:42 +02:00
obscuren
39cb34850a Added instruction numbers 2014-06-26 11:25:43 +02:00
zelig
782f780476 space in miner logging message 2014-06-25 18:43:35 +01:00
zelig
a243e3b858 new logger API for upstream merge 2014-06-25 17:59:35 +01:00
zelig
98f1ee9442 merge upstream 2014-06-25 16:58:07 +01:00
zelig
a02edf7a93 put back extra debug detail logging to the right places using logger.DebugDetailf 2014-06-25 16:40:06 +01:00
zelig
6465e4c3fd update doc: list levels and show usage of named print methods 2014-06-25 16:38:42 +01:00
zelig
e75f7ae330 implement DebugDetail loglevel and named print methods 2014-06-25 16:37:38 +01:00
obscuren
b0dc50c2a0 New mutan implementation 2014-06-25 17:26:34 +02:00
obscuren
6d32bef65a Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-06-25 17:22:30 +02:00
zelig
4141cc39d0 Merge remote-tracking branch 'upstream/develop' into feature/logging 2014-06-25 16:13:27 +01:00
Maran
d8c675afbf Implement something that looks like confirmations, wip 2014-06-25 16:23:10 +02:00
Maran
8fe8175c78 Implemented TX History for ethPub 2014-06-25 16:12:33 +02:00
Maran
589d27386a Fix key generation in ethPub 2014-06-25 14:05:55 +02:00
obscuren
e58ba2fcfa Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-06-25 09:47:27 +02:00
obscuren
9dae1a1732 Removed BlockDo Method 2014-06-25 09:47:19 +02:00
Maran
0c55a11318 Support hex and decimal keys for GetStorageAt RPC. Fixes ethereum/go-ethereum#74 2014-06-24 11:15:26 +02:00
obscuren
16e8fc7427 Logging order 2014-06-23 16:11:55 +02:00
zelig
f58c7ac5a6 merge upstream 2014-06-23 13:07:43 +01:00
zelig
63157c798d refactor config (transitional). Details:
- ReadConfig initialiser sets up global ethutil.Config via config file passed from wrappers
- does not write out adhoc default (not meant to) but creates empty config file if it does not exist so that globalconf does not complain if persists a flag
- default datadir and default config file set together with other flag defaults in wrappers
- default assetpath set together with other command line flags defaults in gui wrapper (not in ethutil.Config or ui/ui_lib)
- add EnvPrefix, to handle environment variable options too via globalconf
- this is still transitional: global Config should just be a wrapper around globalconfig config handler and should be moved to go-ethereum
- actual eth stack config should not be global instead config handled properly with explicit dependency injectioninto eth stack component instances
2014-06-23 12:55:38 +01:00
zelig
b9e8a3e024 modified logging API
- package vars for tagged loggers
- weed out spurious fmt.PrintX and log.PrintX logging
- tried to second guess loglevel for some :)
2014-06-23 12:54:10 +01:00
zelig
8e9cc36979 refactor logging. Details:
- packages use tagged logger sending log messages to shared (process-wide) logging engine
- log writers (interface ethlog.LogSystem) can be added to the logging engine by wrappers/guis/clients
- shared logging engine dispatching to multiple log systems
- log level can be set separately per log system
- async logging thread: logging IO does not block main thread
- log messages are synchronously stringified to avoid incorrectly logging of changed states
- README.md
- loggers_test
2014-06-23 12:49:04 +01:00
obscuren
614624754d Let the state create the object 2014-06-23 13:42:30 +02:00
obscuren
d890258af6 Minor fixes to vm output 2014-06-23 11:26:51 +02:00
obscuren
803e4807ed Removed comments 2014-06-23 11:26:31 +02:00
obscuren
a4e26bf7c2 Added Block do which replays the given block or error 2014-06-23 11:25:14 +02:00
obscuren
9350ecd36f Do not keep on asking for the same chain 2014-06-23 11:24:45 +02:00
obscuren
8c96c5662f Added hex script method 2014-06-23 11:24:07 +02:00
obscuren
842d52db7b Make sure that public key always uses 64 bytes 2014-06-23 11:23:51 +02:00
obscuren
bb1641e4ec Clean up & refactored methods 2014-06-23 11:23:18 +02:00
obscuren
299b50a0d4 Support serpent lang 2014-06-21 02:40:25 +02:00
obscuren
931ae0f116 Append zero's in R & S 2014-06-20 20:12:08 +02:00
obscuren
7fb5e993e3 Moved 0 check to state object for now 2014-06-20 20:11:40 +02:00
obscuren
0251fae5cc Changed loggers 2014-06-20 01:10:39 +02:00
obscuren
0c6b41f4c9 CALLDATACOPY 2014-06-20 01:10:20 +02:00
obscuren
f63f3853bb Merge branch 'release/0.5.14' into develop 2014-06-20 00:47:59 +02:00
obscuren
3f1f8438ed Merge branch 'release/0.5.14' 2014-06-20 00:47:52 +02:00
obscuren
7ad073fb30 bump 2014-06-20 00:47:50 +02:00
obscuren
09f37bd023 Returned to single method 2014-06-20 00:45:44 +02:00
obscuren
8f29f6a4d4 Removed some logging 2014-06-20 00:42:26 +02:00
obscuren
6fcc6a2f7c Changed copy/set 2014-06-20 00:41:42 +02:00
obscuren
0b8ba1d55b Renamed snapshot to copy/set and added it back to the VM 2014-06-20 00:41:28 +02:00
obscuren
933aa63b7d Length check on get 2014-06-19 21:41:37 +02:00
obscuren
80ffe1610c Removed log 2014-06-19 13:45:46 +02:00
obscuren
9104dcc29c Fixed call 2014-06-19 13:45:29 +02:00
obscuren
7e6684d926 Method for checking contract addresses 2014-06-19 13:42:47 +02:00
obscuren
1b431f29e5 Added missing types 2014-06-19 13:42:28 +02:00
obscuren
5ea7598408 Update after each transition instead of at the end.
Updating the state /after/ the entire transition creates invalid
receipts.
2014-06-19 13:42:14 +02:00
obscuren
731f55a05d Reset state when a transition fails 2014-06-19 13:41:17 +02:00
obscuren
509389be97 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-06-18 13:48:52 +02:00
obscuren
f911087eab Logging 2014-06-18 13:48:42 +02:00
obscuren
c4af1340fa Updated test 2014-06-18 13:48:29 +02:00
obscuren
3bc57fe5b5 CALLDATALOAD return 32 byte at all times 2014-06-18 13:48:08 +02:00
obscuren
7f94bd09ae Return a single byte if byte get called 2014-06-18 13:47:40 +02:00
Maran
d179f31d4f Merge branch 'feature/peers' into develop 2014-06-18 13:19:12 +02:00
Maran
fba6de834e Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-06-18 13:19:03 +02:00
Maran
1f79175898 Reworked peers to check for public key duplication and adding peers to peerlist only after the handshake has come in 2014-06-18 13:06:48 +02:00
obscuren
2fbcfd8824 Proper checks for multiple data items. Fixes #80 2014-06-18 11:55:05 +02:00
Maran
22e16f15a6 Reduce peer timeout to 10 seconds 2014-06-18 10:39:42 +02:00
obscuren
dc9c9369e0 log 2014-06-18 00:36:23 +02:00
obscuren
2565a79575 Swapped vars 2014-06-18 00:32:48 +02:00
obscuren
8a885c2606 Fixed GT and LT 2014-06-18 00:25:58 +02:00
obscuren
ca79360fd7 Verbose logging for VM 2014-06-17 18:49:26 +02:00
obscuren
34c8045d5b Fixed issue where JUMPI would do an equally check with 1 instead of GT 2014-06-17 18:05:46 +02:00
Maran
a90ffe1af1 Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-06-17 11:40:37 +02:00
Maran
01e6f63e98 A handful of GUI fixes 2014-06-17 11:40:23 +02:00
obscuren
3621988e15 Removed deprecated states 2014-06-17 11:07:37 +02:00
obscuren
53e30f750d Removal of manual updating of state objects
* You'll only ever need to update the state by calling Update. Update
  will take care of the updating of it's child state objects.
2014-06-17 11:06:06 +02:00
obscuren
6656f99c54 Merge branch 'release/0.5.13' into develop 2014-06-16 18:25:33 +02:00
obscuren
5a0e751736 Merge branch 'release/0.5.13' 2014-06-16 18:25:24 +02:00
obscuren
ff0f15f763 bump 2014-06-16 18:25:21 +02:00
obscuren
887debb055 comment 2014-06-16 18:20:38 +02:00
obscuren
0d77632839 Refund gas 2014-06-16 12:25:18 +02:00
obscuren
8b15732c1e Check for nil receiver 2014-06-16 12:04:56 +02:00
obscuren
48bca30e61 Fixed minor issue with the gas pool 2014-06-16 11:51:16 +02:00
obscuren
9f62d441a7 Moved gas limit err check to buy gas 2014-06-16 11:14:01 +02:00
obscuren
b836267401 .. 2014-06-16 11:13:37 +02:00
obscuren
7b55bcf484 Removed old fees 2014-06-16 11:13:19 +02:00
obscuren
15d1f753f7 Removed old fees 2014-06-16 11:13:06 +02:00
obscuren
1d76e433f7 Removed some comments 2014-06-16 10:40:21 +02:00
obscuren
02d8ad030f Keeping old code for reference 2014-06-16 10:35:35 +02:00
obscuren
58a0e8e3e2 Changed RlpEncodable 2014-06-16 00:52:10 +02:00
obscuren
dccef70728 Method for creating a new key from scratch 2014-06-16 00:51:55 +02:00
obscuren
1fbea2e438 Reworking messaging interface 2014-06-16 00:51:21 +02:00
obscuren
8198fd7913 Cache whole objects instead of states only 2014-06-16 00:51:04 +02:00
obscuren
d80f999a21 Run contracts 2014-06-15 00:11:06 +02:00
obscuren
5871dbaf5a Set contract addr for new transactions 2014-06-15 00:10:42 +02:00
obscuren
b0e023e432 Increase ping timeout to 30 seconds 2014-06-15 00:04:18 +02:00
obscuren
6d52da58d9 Logging mechanism 2014-06-14 15:44:13 +02:00
obscuren
63883bf27d Moving closer to interop 2014-06-14 11:46:09 +02:00
obscuren
8124547348 Moving a head closer to interop 2014-06-13 16:06:27 +02:00
obscuren
c734dde982 comments & refactor 2014-06-13 13:06:27 +02:00
obscuren
cebf4e3697 Refactored state transitioning to its own model 2014-06-13 12:58:01 +02:00
obscuren
5e2bf12a31 Refactored state transitioning to its own model 2014-06-13 12:57:52 +02:00
obscuren
d078e9b8c9 Refactoring state transitioning 2014-06-13 12:45:11 +02:00
obscuren
b855e5f7df Changed opcode numbers and added missing opcodes 2014-06-12 11:19:32 +02:00
obscuren
6593c69424 Merge branch 'develop' into interop 2014-06-12 10:07:40 +02:00
obscuren
3a9d7d318a log changes 2014-06-12 10:07:27 +02:00
obscuren
8a2e50ab2a Merge branch 'develop' into interop
Conflicts:
	peer.go
2014-06-11 21:56:59 +02:00
obscuren
9ee6295c75 Minor changes 2014-06-11 21:55:45 +02:00
obscuren
1bf6f8b4a6 Added a buy gas method 2014-06-11 21:55:34 +02:00
obscuren
4d3209ad1d Moved process transaction to state manager
* Buy gas of the coinbase address
2014-06-11 21:55:23 +02:00
obscuren
9ff97a98a7 Namereg lookup fix 2014-06-11 21:51:21 +02:00
Maran
1938bfcddf Fix compare 2014-06-11 16:16:57 +02:00
Gav Wood
714770ffb3 Added Gav's new address. 2014-06-11 11:32:42 +01:00
Maran
71ab5d52b6 Exposed usedGas through ethPub 2014-06-11 11:40:50 +02:00
Maran
e090d131c3 Implemented counting of usedGas 2014-06-11 11:40:40 +02:00
Maran
97cc762143 Expose GasLimit to ethPub 2014-06-11 10:28:18 +02:00
Maran
bdc206885a Don't mine transactions if they would go over the GasLimit implements ethereum/go-ethereum#77 further. 2014-06-10 17:23:32 +02:00
Maran
69044fe577 Refactor to use new method 2014-06-10 17:22:43 +02:00
Maran
753f749423 Implement CalcGasPrice for ethereum/go-ethereum#77 2014-06-10 17:22:06 +02:00
Maran
2e6cf42011 Fix BigMax to return the biggest number, not the smallest 2014-06-10 17:15:18 +02:00
Maran
2995d6c281 Validate minimum gasPrice and reject if not met 2014-06-10 15:02:41 +02:00
Maran
1b40f69ce5 Prevent peer stop crash by removing logging 2014-06-10 14:59:38 +02:00
Maran
771f64397f Stop peers when they don't respond to ping/pong. Might fix ethereum/go-ethereum#78 2014-06-10 13:51:34 +02:00
obscuren
d8339fa29a Merge branch 'release/poc5-rc12' into develop 2014-06-09 22:24:13 +02:00
obscuren
006ac772e6 Merge branch 'release/poc5-rc12' 2014-06-09 22:24:05 +02:00
obscuren
a51dfe89c0 bump 2014-06-09 22:23:30 +02:00
obscuren
c7d1924c34 sha 2014-06-09 21:35:56 +02:00
obscuren
1153fd9a0c Added Douglas and Einstan 2014-06-06 12:12:27 +02:00
Maran
a56f78af67 Implement getStateKeyVal for JS bindings.
Gives JS the option to 'loop' over contract key/val storage
2014-06-04 15:54:39 +02:00
Maran
d7b882977c Make contract creation error more explicit by mentioning the sneder 2014-06-03 11:56:19 +02:00
Maran
2010fea088 Added faux latency for peeroverview 2014-06-03 10:42:55 +02:00
Maran
fb6ff61730 Implemented Public Peer interface 2014-06-02 15:20:27 +02:00
obscuren
ff8a834ccc Merge branch 'develop' 2014-05-30 19:51:25 +02:00
obscuren
9e8127accb woops 2014-05-30 19:51:19 +02:00
Gav Wood
9345bc13d4 Merge branch 'master' of github.com:ethereum/tests into develop 2014-05-30 17:50:38 +02:00
Gav Wood
a2257f3471 VM tests. 2014-05-30 17:50:18 +02:00
Heiko Heiko
78576dd3d3 changes based on new account structure nonce, balance, storage, code 2014-05-30 17:19:09 +02:00
obscuren
6b7dfa1fb5 Merge branch 'develop' 2014-05-30 16:58:31 +02:00
obscuren
17c825f53a Peer changes broadcasting and minor miner fix 2014-05-30 16:57:58 +02:00
obscuren
b15e03acd7 Fixed issue with casting to smaller byte array 2014-05-30 16:57:40 +02:00
obscuren
e0b6a31613 Buffered channel to fix not ready (blocking) 2014-05-30 13:27:56 +02:00
obscuren
f382221b28 Broadcast "peerList" event upon removing or adding peers 2014-05-30 13:04:08 +02:00
obscuren
6c91ffcfbe Do not panic, but return nil instead 2014-05-30 11:48:37 +02:00
obscuren
15e0093e13 Fixed issue where the client could crash when sending malformed data 2014-05-30 11:48:23 +02:00
obscuren
99797858a6 Added coin base to pub block 2014-05-30 11:47:23 +02:00
obscuren
8fcba0eb1e fixed test 2014-05-29 23:54:48 +02:00
obscuren
9bb7633254 Removed fmt 2014-05-29 11:50:36 +02:00
obscuren
e7097641e3 Support for namereg 2014-05-29 11:49:41 +02:00
obscuren
a2d01d6af8 Removed comments 2014-05-29 02:05:57 +02:00
obscuren
2ef3a98929 Merge branch 'develop' 2014-05-28 23:23:40 +02:00
obscuren
4d98762486 Fixed state object gas return 2014-05-28 23:16:54 +02:00
Maran
73a42d34a5 Merge branch 'release/poc5-rc11' into develop 2014-05-28 16:19:42 +02:00
Maran
95adac7522 Merge branch 'release/poc5-rc11' 2014-05-28 16:19:31 +02:00
Maran
76a59274bf Bump to RC11 2014-05-28 16:19:25 +02:00
Maran
a453b5514d Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-05-28 15:54:56 +02:00
Maran
8601604a09 Hooked up the Block Explorer to the Debugger so we can instantly debug made transactions 2014-05-28 15:48:23 +02:00
obscuren
b695c82520 Fixes #60 2014-05-28 15:07:11 +02:00
obscuren
a98e35d7a0 Length checking 2014-05-28 13:55:32 +02:00
obscuren
65722aeeca Added StringToBytesFunc 2014-05-28 13:14:56 +02:00
obscuren
8278ba5e45 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-05-28 12:39:41 +02:00
obscuren
6e98e5709a Set initial used gas 2014-05-28 12:39:34 +02:00
Maran
2fec1af275 Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-05-28 12:15:46 +02:00
Maran
cfb979b5e3 Add contract addr if it's a contract creation tx 2014-05-28 12:15:43 +02:00
obscuren
9988b1a047 Sort transactions based on the nonce
* Added a transaction sorter
2014-05-28 12:06:09 +02:00
obscuren
73761f7af6 Closure call now returns the total usage as well
* Return the used gas value based on the UseGas and ReturnGas
2014-05-28 12:05:46 +02:00
obscuren
1c01e9c095 10 2014-05-28 12:03:40 +02:00
obscuren
98d4b51120 Changed opcode names 2014-05-28 12:03:12 +02:00
obscuren
ab8c7252da Merge branch 'release/poc5-rc10' into develop 2014-05-27 16:11:25 +02:00
obscuren
818cbcbdd4 Merge branch 'release/poc5-rc10' 2014-05-27 16:11:19 +02:00
obscuren
a428533160 bump 2014-05-27 16:10:18 +02:00
obscuren
006c757a03 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-05-27 13:32:37 +02:00
obscuren
4eb1771e67 Hooks can now quit the vm 2014-05-27 13:32:31 +02:00
obscuren
aba3066658 Changed debug hook and added state iterator 2014-05-27 13:10:18 +02:00
Maran
c1b09d639c Disamble tx data before adding it to PTx object 2014-05-27 10:38:31 +02:00
Maran
817def000b Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-05-27 10:29:47 +02:00
obscuren
6e24d603a1 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-05-27 01:08:59 +02:00
obscuren
5cdfee5143 New Trie iterator 2014-05-27 01:08:51 +02:00
Maran
2232974cda Changed var names around 2014-05-26 17:18:51 +02:00
Maran
aefcb83419 Updated Public Block and Transaction objects with more information 2014-05-26 17:07:04 +02:00
Maran
24a6d87c3f Don't handshake if there is no key yet; first start on Ethereal 2014-05-26 11:47:47 +02:00
obscuren
4c7bd75c1a Merge branch 'release/poc5-rc9' into develop 2014-05-26 00:42:18 +02:00
obscuren
b1463b2dc2 Merge branch 'release/poc5-rc9' 2014-05-26 00:42:07 +02:00
obscuren
1f3f76cb09 bump 2014-05-26 00:38:53 +02:00
obscuren
3ebd7f1166 State snapshotting 2014-05-26 00:09:38 +02:00
obscuren
81ef40010f The body of contracts are now returned instead 2014-05-25 14:13:54 +01:00
obscuren
99fa9afaf1 Updated to work with the new config 2014-05-25 14:13:07 +01:00
obscuren
281559d427 Canonical contract creation 2014-05-22 18:24:04 +02:00
obscuren
cc8464ce80 Transaction querying 2014-05-22 17:56:33 +02:00
obscuren
230aafbf66 Working on interop
* Receipts after each transaction
* Fee structure
* Applying fees to miners
2014-05-22 17:35:26 +02:00
obscuren
14787ac148 Fixed some issues connecting for interop 2014-05-22 17:33:46 +02:00
Jeffrey Wilcke
125839e848 Merge pull request #5 from bkirwi/master
Fix invalid JSON (removed trailing comma) and add test names
2014-05-22 09:58:45 +02:00
Ben Kirwin
356a3296bc Add some arbitrary test names
This should now conform to the format specified in the README.
2014-05-22 00:20:48 -04:00
obscuren
4e1c6a8a22 Added start / stopping methods 2014-05-22 00:25:34 +02:00
obscuren
f8f84ef095 Removed old contract creation code 2014-05-22 00:25:02 +02:00
Chen Houwu
42e14ec54f revert to correct data 2014-05-21 23:27:40 +08:00
Chen Houwu
4300197a74 fix: wrong sha3 hash because of the wrong rlp hex 2014-05-21 22:42:23 +08:00
Chen Houwu
a0d01b1a0b fix: wrong rlp hex 2014-05-21 22:29:53 +08:00
obscuren
e1b7bd51ee Return a disassembled script instead of the hex 2014-05-21 15:54:44 +02:00
Jeffrey Wilcke
6bc2fc7405 Merge pull request #4 from ethers/master
fix file name that seems to have been a typo
2014-05-21 14:11:37 +02:00
obscuren
56c2f651fe Merge branch 'develop' 2014-05-21 14:06:03 +02:00
obscuren
c371f9a162 Merge branch 'release/poc5-rc8' into develop 2014-05-21 14:05:48 +02:00
obscuren
d6e398aba4 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-05-21 14:05:30 +02:00
obscuren
7fe73deb2d Merge branch 'release/poc5-rc8' 2014-05-21 14:04:25 +02:00
obscuren
8f5eddd0ba Bumped 2014-05-21 14:04:19 +02:00
obscuren
f5852b47d1 Removed some logging and refactored a bit 2014-05-21 14:00:13 +02:00
Maran
1275e5bdc9 Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-05-21 13:06:42 +02:00
obscuren
86cf69648e Improved miner so it won't include invalid transactions 2014-05-21 13:04:40 +02:00
Maran
d658a7f4ab Implemented missing EthPub calls in RPC server 2014-05-21 12:46:24 +02:00
obscuren
0e9c8568fd Re broadcast transactions 2014-05-21 12:39:15 +02:00
obscuren
2667cb3ab6 Apply to parent 2014-05-21 12:39:07 +02:00
obscuren
0c27c5eb7f Proper log statement 2014-05-21 12:38:56 +02:00
obscuren
05e4e97276 Fixed Public block creation. Added block logging 2014-05-21 12:09:28 +02:00
obscuren
07fe00c466 Changed numbers 2014-05-21 11:42:31 +02:00
obscuren
cbf221f6b7 Fixed competing block method 2014-05-21 11:42:20 +02:00
obscuren
734b2e4cf7 Merge branch 'hotfix/4' into develop 2014-05-21 01:12:39 +02:00
obscuren
85793a4706 Merge branch 'hotfix/4' 2014-05-21 01:12:33 +02:00
obscuren
3c35ba7c31 Fixed state overwriting issue 2014-05-21 01:12:28 +02:00
ethers
c31a93c27a fix file name that seems to have been a typo 2014-05-20 15:42:39 -07:00
obscuren
5ceb1620e9 Fixed couple issues
* (imp) Lock / RLock tries
* (fix) stack
2014-05-21 00:17:50 +02:00
obscuren
e8b4585295 Merge branch 'master' into develop 2014-05-20 22:45:10 +02:00
obscuren
6ef2832083 Upped prot 2014-05-20 22:45:01 +02:00
obscuren
6ba534af92 Merge branch 'hotfix/3' into develop 2014-05-20 22:44:10 +02:00
obscuren
47fd4833ee Merge branch 'hotfix/3' 2014-05-20 22:44:05 +02:00
obscuren
64701e388c Fixed state issue 2014-05-20 22:43:59 +02:00
obscuren
27aae60381 Merge branch 'hotfix/2' into develop 2014-05-20 22:05:04 +02:00
obscuren
7dae955c1a Merge branch 'hotfix/2' 2014-05-20 22:04:58 +02:00
obscuren
3b38df085e Fixed casting issue 2014-05-20 22:04:47 +02:00
obscuren
de87e436ab Merge branch 'hotfix/1' into develop 2014-05-20 19:20:09 +02:00
obscuren
e837c9ab3f Merge branch 'hotfix/1' 2014-05-20 19:20:04 +02:00
obscuren
ad51c85e5d Fixed crash 2014-05-20 19:19:53 +02:00
Heiko Heiko
66bc3665c1 fix: represent integers as strings 2014-05-20 17:36:35 +02:00
Heiko Heiko
ede5499da6 add: current initial alloc and genesis hashes 2014-05-20 17:21:09 +02:00
obscuren
9562aba86a Merge branch 'release/poc5-rc7' into develop 2014-05-20 17:09:53 +02:00
obscuren
4b13f93a3e Merge branch 'release/poc5-rc7' 2014-05-20 17:09:44 +02:00
obscuren
c37b3cef7d Bump 2014-05-20 17:08:53 +02:00
obscuren
0c4040d191 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-05-20 15:02:53 +02:00
obscuren
2bd377a3de Changed transaction hash for poc 5 2014-05-20 15:02:46 +02:00
Maran
31e44c2ab9 Change shorthands 2014-05-20 14:53:34 +02:00
Maran
f5d4414734 Fix notification when processing block that didn't have this client as origin 2014-05-20 14:41:35 +02:00
obscuren
7d3e99a2ab Fixed genesis and block data 2014-05-20 14:29:52 +02:00
obscuren
b4e156e1d7 Up protocol version 2014-05-20 13:29:46 +02:00
obscuren
6a31d55b2e added roman 2014-05-20 13:29:21 +02:00
obscuren
45b810450f ... 2014-05-20 13:09:44 +02:00
obscuren
f292e93e0e Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop
Conflicts:
	ethchain/transaction.go
2014-05-20 13:07:08 +02:00
obscuren
378815ee62 Rearranged according to YP 2014-05-20 13:06:47 +02:00
Jeffrey Wilcke
38b4dc2cdf Merge pull request #21 from nicksavers/patch-1
Rearrange transaction RLP encoding...
2014-05-20 13:06:27 +02:00
Nick Savers
530ab6b8fc Re-arranged transaction RLP encoding...
According to latest Yellow Paper specs and conform other clients
4794642e51
2014-05-20 13:02:37 +02:00
obscuren
fafdd21e4f unused 2014-05-20 12:23:49 +02:00
obscuren
faa57ecaef Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-05-20 12:19:25 +02:00
obscuren
2450398862 Added Maran to premine 2014-05-20 12:19:21 +02:00
Maran
36c9c93720 Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-05-20 11:50:43 +02:00
Maran
12f30e6220 Refactored a lot of the chain catchup/reorg. 2014-05-20 11:50:34 +02:00
obscuren
fd19142c0d No longer store script directly in the state tree 2014-05-20 11:19:07 +02:00
Ben Kirwin
5131429abb Delete a comma
This should now be parseable as JSON.
2014-05-19 11:18:31 -04:00
obscuren
a2fb265563 Added a fatal method 2014-05-19 17:02:16 +02:00
obscuren
b8034f4d9e Increment nonce in the public api 2014-05-19 12:14:04 +02:00
obscuren
bd48690f63 Testing different mining state 2014-05-19 11:25:27 +02:00
Chen Houwu
f44a859331 add: case when value is long, ensure it's not get rlp encoded as node 2014-05-18 15:04:42 +08:00
obscuren
8730dfdcc2 Changed how changes are being applied to states 2014-05-17 14:07:52 +02:00
obscuren
88686cbed2 listen to pre instead of post 2014-05-15 15:00:25 +02:00
obscuren
f95993e326 M 2014-05-15 14:54:07 +02:00
obscuren
7bf2ae0b11 Removed old tx pool notification system. Fixes #19 2014-05-15 14:05:15 +02:00
obscuren
2734fc4079 Merge branch 'release/poc5-rc6' into develop 2014-05-14 21:34:49 +02:00
obscuren
6efdd21633 Merge branch 'release/poc5-rc6' 2014-05-14 21:34:30 +02:00
obscuren
ad4ffdc947 Bumped version 2014-05-14 21:34:13 +02:00
obscuren
65f570271c Fixed catching up 2014-05-14 20:50:37 +02:00
obscuren
a6b9ea05e8 Test 2014-05-14 20:36:21 +02:00
obscuren
166853aed9 Test 2014-05-14 20:35:23 +02:00
obscuren
98a631b556 Remove any invalid transactions after block processing 2014-05-14 16:29:34 +02:00
Maran
ff2cf2dacd Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-05-14 13:57:08 +02:00
Maran
3ac74b1e78 Implemented IsUpToDate to mark the node as ready to start mining 2014-05-14 13:57:04 +02:00
obscuren
f4fa0d48cb Moved keyring to ethutil & removed old methods. Implements #20 2014-05-14 13:54:40 +02:00
obscuren
0512113bdd Removed defer 2014-05-14 11:56:06 +02:00
obscuren
7c0df348f8 Increased deadline 2014-05-14 11:52:16 +02:00
obscuren
0c1f732c64 Do not queue messages if the peer isn't connected (e.g. timing out) 2014-05-14 11:29:57 +02:00
obscuren
283f4d8eb3 Merge branch 'develop' 2014-05-13 17:59:10 +02:00
obscuren
a4883a029f Propagate back to network 2014-05-13 17:51:33 +02:00
obscuren
b2181ac814 Merge branch 'develop' 2014-05-13 16:38:56 +02:00
obscuren
b0798e0a72 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-05-13 16:38:47 +02:00
obscuren
9831ba20b2 Merge branch 'release/poc5-rc4' into develop 2014-05-13 16:38:38 +02:00
obscuren
485e04d9df Merge branch 'release/poc5-rc4' 2014-05-13 16:38:26 +02:00
obscuren
86d6aba012 Bumped 2014-05-13 16:36:43 +02:00
Maran
c9ac5b0f74 Removed lingering log statement 2014-05-13 14:44:12 +02:00
Maran
28357d657b Implemented new JS/EthPub methods
- getTxCountAt
- getPeerCount
- getIsMining
- getIsListening
- getCoinbase
2014-05-13 14:43:29 +02:00
obscuren
8ec1bb382a Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-05-13 12:42:35 +02:00
obscuren
cac9562c05 Use EthManager interface instead 2014-05-13 12:42:24 +02:00
Maran
d31303a592 Implemented support for a custom RPC port 2014-05-13 12:01:34 +02:00
Maran
a9d5656a46 Added support to NewJsonRpc to return an error as well as an interface
Also changed default port to 8080. Fixes #18
2014-05-13 11:49:55 +02:00
Maran
3647cc5b07 Implemented our own makeshift go seed. Fixes #16 2014-05-13 11:35:21 +02:00
Maran
cc341b8734 Added debug message if you try to add a peer when max peers has been reached. 2014-05-12 16:36:14 +02:00
Maran
52b664b0ae Removed peers from peerlist as soon as they disconnect. Might fix #13
We used to wait for the reaping timer to clean up the peerlist, not any longer
2014-05-12 16:32:21 +02:00
Maran
8fe0864680 Only accept peers if we asked for them 2014-05-12 16:09:23 +02:00
Maran
5fcbaefd0b Don't forward localhost connections over the public network 2014-05-12 15:43:10 +02:00
Gav Wood
e1ae4ad449 PoC-5 VM tests. 2014-05-12 14:40:47 +01:00
Maran
7f9fd08792 Implemented proper peer checking when adding new peers
We now resolve a hostname to IP before we try to compare it to the existing peer pool
2014-05-12 15:08:21 +02:00
Maran
8b4ed8c505 Properly exchange peer capabilities between peers 2014-05-12 13:39:37 +02:00
Maran
4eb3ad192e Made the debug line for invalid peer versions dynamic 2014-05-12 12:28:56 +02:00
Vitalik Buterin
2b6c136dda Moved txt to json 2014-05-11 21:42:41 -04:00
obscuren
36572f03a7 Merge branch 'release/poc5-rc3' into develop 2014-05-10 16:24:21 +02:00
obscuren
a32dffb0e8 Merge branch 'release/poc5-rc3' 2014-05-10 16:24:14 +02:00
obscuren
e22e83b19a bump 2014-05-10 16:23:50 +02:00
obscuren
d3d9ed62e2 Upgraded to new mutan 2014-05-10 16:23:07 +02:00
obscuren
be7da48dad Merge branch 'release/poc5-rc2' into develop 2014-05-10 02:04:14 +02:00
obscuren
3af35d922e Merge branch 'release/poc5-rc2' 2014-05-10 02:04:06 +02:00
obscuren
dbf8645aaf Bump 2014-05-10 02:02:54 +02:00
obscuren
c03bf14e02 Fixed some tests 2014-05-10 02:01:09 +02:00
obscuren
afe83af219 Moved seeding and moved manifest 2014-05-09 16:09:28 +02:00
Vitalik Buterin
cbccbf977c New commit 2014-05-08 21:54:48 -04:00
obscuren
5a0bae1dae Auto update state changes notifications 2014-05-08 19:09:36 +02:00
obscuren
e8fb965ccb Cleaned up
Removed the unneeded address watch mechanism. State manager's transient
state should now take care of this.
2014-05-08 18:41:45 +02:00
obscuren
d709815106 Added trans state and removed watch address etc
The transient state can be used to test out changes before committing
them to the proc state. The transient state is currently being used by
the gui to support proper nonce updating without having to wait for a
block. This used to be done by a cached state mechanism which can now
safely by removed.
2014-05-08 18:26:46 +02:00
obscuren
f0440e85dc Removed value from closure. 2014-05-08 14:20:45 +02:00
obscuren
554f4f6f7d Fixed disasamble for all pushes 2014-05-08 14:20:06 +02:00
Maran
6c66cb3fa9 Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-05-07 11:05:53 +02:00
Maran
45ce820b11 Implemented value() 2014-05-07 11:05:49 +02:00
Vitalik Buterin
edbb8d407e Removed unneeded test, added new tests 2014-05-06 16:53:43 -04:00
obscuren
76d7bad722 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-05-06 17:43:34 +02:00
obscuren
a0af7de58e Optimizations 2014-05-06 17:43:27 +02:00
Maran
050684450b Assume arguments are supplied as strings to the rpc interface 2014-05-06 17:04:52 +02:00
Maran
e18b96b486 Fix an issue where we don't have the rpc so we dont have to close it 2014-05-06 14:15:02 +02:00
obscuren
af6875f4b2 Changed to lower case 2014-05-05 17:14:29 +02:00
obscuren
66af749023 Merge branch 'release/poc5-rc1' into develop 2014-05-05 15:55:55 +02:00
obscuren
2096b3a9ed Merge branch 'release/poc5-rc1' 2014-05-05 15:55:43 +02:00
obscuren
fedd4c906f bump 2014-05-05 15:55:26 +02:00
obscuren
78cb04cca3 wrong string 2014-05-05 15:51:43 +02:00
obscuren
14a6e6a9ce Added the ability to submit byte code for contracts instead of Mutan code. 2014-05-05 15:48:17 +02:00
Maran
3e5a7b34b1 Now with files 2014-05-05 15:15:43 +02:00
Maran
a4ca9927ab Renamed etherpc to ethrpc 2014-05-05 15:15:14 +02:00
Maran
9b1f11695d Get rid of that annoying number that keeps popping up in stdout 2014-05-05 14:20:20 +02:00
Maran
87a5e94525 Merge branch 'develop' into feature/rpc 2014-05-05 14:16:53 +02:00
Maran
b98cc2fb4e Fixed GetBlock when no block can be found 2014-05-05 14:15:58 +02:00
Maran
fde3e01f80 Fixed import cycle 2014-05-05 14:15:31 +02:00
Maran
c496aad20b Renamed Ethereum RPC package 2014-05-05 13:49:59 +02:00
Maran
8adad0654a Added more JSON niceties to types 2014-05-05 13:49:46 +02:00
obscuren
5757f5df2a Added secret to address method 2014-05-05 13:09:29 +02:00
Maran
39b8c83ba6 Impelemented GetStorageAt 2014-05-05 13:01:02 +02:00
obscuren
7c91159449 Added different storage notification object 2014-05-05 11:56:25 +02:00
Maran
4f20e8f649 Implemented first few methods via public api 2014-05-02 20:00:58 +02:00
obscuren
1f6df0cd52 Added receipts for tx creation 2014-05-02 14:08:54 +02:00
Maran
69d83b1da5 Merge branch 'develop' into feature/rpc 2014-05-02 14:08:27 +02:00
obscuren
e798f221dd Added public interface 2014-05-02 13:55:43 +02:00
Maran
c54788338a Merge branch 'develop' into feature/rpc 2014-05-02 13:35:54 +02:00
Maran
ebdf339a61 Implemented RPC framework 2014-05-02 13:35:25 +02:00
obscuren
70c8656640 Added a KeyPairFromSec function which creates a new keypair based on the given seckey 2014-05-02 12:11:55 +02:00
obscuren
17674fb888 Added suicide back in 2014-05-01 22:14:34 +02:00
obscuren
91aa189ef3 Fixed Upnp bug 2014-05-01 22:14:20 +02:00
obscuren
e6a68f0c3a Removed debug log 2014-05-01 22:13:59 +02:00
obscuren
d2ab322267 Removed debugging log 2014-04-30 17:43:48 +02:00
obscuren
c3293641e7 Removed debug logging 2014-04-30 17:13:32 +02:00
obscuren
21724f7ef9 Added manifest changes and changed closures 2014-04-30 14:43:32 +02:00
obscuren
38d6b67b5c Fixed state problem 2014-04-29 12:36:27 +02:00
obscuren
5516efdfa0 Removed old code 2014-04-27 18:05:30 +02:00
obscuren
21f8806eed Moved assembler stage to the mutan compiler 2014-04-27 18:01:37 +02:00
obscuren
bf850974f3 Using mutan assembler stage 2014-04-27 18:00:38 +02:00
obscuren
338b698091 Refactoring and added documentation comments 2014-04-27 17:16:53 +02:00
obscuren
16e52327a4 Upped version number 2014-04-27 16:53:35 +02:00
Gav Wood
45a0974f6f Merge pull request #3 from autolycus/develop
Fixed formatting and added test cases
2014-04-27 12:53:47 +01:00
obscuren
05d2d8f27d Actually convert gas 2014-04-26 02:11:00 +02:00
obscuren
ca6e3f6def Notify of changes 2014-04-26 02:06:25 +02:00
obscuren
d3a159ad3d Fixed tests 2014-04-26 01:54:45 +02:00
obscuren
0f93da400a Added new state object change echanism 2014-04-26 01:48:40 +02:00
obscuren
f3818478e2 Removed debug & unused functions 2014-04-24 13:48:33 +02:00
obscuren
ee7c16a8d9 Fixed Base problem and sload/sstore 2014-04-24 13:30:57 +02:00
obscuren
1c85d8c66b Minor improvements and bug fixes
* Fixed VM base bug
2014-04-24 00:00:50 +02:00
obscuren
0651af9dfd Removed some log statements and disabled additional validation checks 2014-04-23 15:54:15 +02:00
obscuren
c81804444f Call initial closure with proper tx argument 2014-04-23 15:53:53 +02:00
obscuren
ef7f3f36e2 Renamed CALLDATA to CALLDATALOAD 2014-04-23 15:53:34 +02:00
obscuren
f7d4e3cd6b Copy over bytes from previous root
Copy over instead of directly using the previous root. This is order to
avoid resetting problems
2014-04-23 15:52:50 +02:00
obscuren
6b08efabf8 @maranh see comment 2014-04-23 12:14:28 +02:00
obscuren
3a9a252f6e Fixed minor issue with gas and added state object init 2014-04-23 11:51:04 +02:00
obscuren
61cd1594b5 Fixed gas, price & value setters on initialization 2014-04-23 11:50:38 +02:00
obscuren
11c26e3211 Implemented ethereum package reader 2014-04-23 11:50:17 +02:00
obscuren
6930260962 Updated VM 2014-04-20 01:31:01 +02:00
Carl Allendorph
5fd2a98fcb Added some new test cases for the rlp encoding. 2014-04-19 13:26:14 -07:00
Carl Allendorph
4ba150954e Converted spaces to tabs to be compliant with the coding standards defined in cpp-ethereum 2014-04-19 12:48:42 -07:00
obscuren
a96c8c8af9 Added proper gas handling 2014-04-18 13:41:07 +02:00
obscuren
c5729d7ecc comments 2014-04-16 04:07:52 +02:00
obscuren
d811920d8b Hack for miner problem added w/ note
@maranh please check
2014-04-16 04:07:21 +02:00
obscuren
9c6aca7893 Merged accounts and contracts in to StateObject
* Account removed
* Contract removed
* Address state changed to CachedStateObject
* Added StateObject
2014-04-16 04:06:51 +02:00
obscuren
ca13e3b105 Moved assembler stage processing to it's own file 2014-04-15 16:16:38 -04:00
obscuren
086acd122b Added pre processing of script data 2014-04-12 00:13:42 -04:00
obscuren
116516158d Renamed 2014-04-11 13:29:57 -04:00
obscuren
ca747f2688 Added the possibility for debug hooks during closure call 2014-04-11 08:28:30 -04:00
obscuren
7d6ba88d2b Merge branch 'split' into develop 2014-04-10 21:05:58 -04:00
obscuren
d927c154e7 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-04-10 21:05:23 -04:00
obscuren
25dd46061f Added push20 2014-04-10 21:03:14 -04:00
obscuren
afc92fb7d7 Added better address format 2014-04-10 18:32:54 -04:00
obscuren
891f725909 Added better address format 2014-04-10 18:14:19 -04:00
obscuren
969e748dce Call fixed 2014-04-10 15:30:14 -04:00
obscuren
6a530ea371 Call fixed 2014-04-10 14:40:12 -04:00
obscuren
0fccbeabcc No longer return a list, but raw bytes 2014-04-09 12:28:34 -04:00
obscuren
720521ed4a Changed how txs define their data & added init field 2014-04-09 12:28:16 -04:00
obscuren
e09f0a5f2c Split code for contracts 2014-04-09 12:27:54 -04:00
obscuren
4f2e9c2640 Check for nil 2014-04-09 12:27:25 -04:00
Maran
5714a82778 Small tweaks to mnemonic 2014-04-09 11:06:30 -04:00
Maran
272b135b74 One more line of comment 2014-04-09 10:40:55 -04:00
Maran
335dc9e687 Merge branch 'develop' into feature/mnemonic 2014-04-09 10:06:51 -04:00
obscuren
03e139d23b Switched variable names 2014-04-09 16:04:36 +02:00
obscuren
6d28bf534f Added a length for copy 2014-04-09 16:00:28 +02:00
obscuren
c0cad0b534 Merge branch 'miner' of github.com-obscure:ethereum/eth-go into miner 2014-04-09 15:50:49 +02:00
Maran
a83db489df Fix transaction on new blocks 2014-04-09 09:48:17 -04:00
obscuren
035f0ffb8a Reverted changes 2014-04-09 15:08:10 +02:00
Maran
b66a99e32d Added todo 2014-04-09 08:55:39 -04:00
obscuren
527a3bbc2a Typo fix 2014-04-09 14:53:20 +02:00
obscuren
c0a030ef0a Added new insruction methods 2014-04-09 14:08:18 +02:00
Maran
35a82f8f4a Added support for mneomnic privkeys 2014-04-07 14:00:02 +02:00
obscuren
12643c7c57 Merge branch 'develop' into miner 2014-04-05 11:25:29 +02:00
obscuren
90bb512f42 Update 2014-04-05 10:49:07 +02:00
Maran
782910eaa7 Small tweaks 2014-04-01 15:54:29 +02:00
Maran
3558dd5ed4 Finalize blockchain reverting test 2014-04-01 14:42:48 +02:00
Maran
0a88010826 Merge conflicts 2014-04-01 14:20:55 +02:00
obscuren
7d0348e4ba Handle contract messages 2014-04-01 10:41:30 +02:00
Maran
5f49a659c3 More blockchain testing 2014-03-31 12:54:37 +02:00
obscuren
7277c42047 Fixed some state issues 2014-03-31 01:03:28 +02:00
obscuren
7cc28c8b46 Added storage test 2014-03-30 22:03:08 +02:00
obscuren
205e33bc83 Fixed bug in stack to expand beyond expectations. Fixed EQ and NOT opcode 2014-03-30 18:55:51 +02:00
obscuren
6625b6ffbd Changed to new mutan API 2014-03-30 12:58:37 +02:00
obscuren
b888652201 Added missing GetTx (0x16) wire message 2014-03-28 11:20:07 +01:00
Jeffrey Wilcke
60fd2f3521 Update vm_test.go
store ...
2014-03-27 23:25:03 +01:00
obscuren
75e6406c1f Fixed tests 2014-03-27 23:17:23 +01:00
obscuren
3c3431d111 Fixed IsContract method to use the contractCreation flag 2014-03-27 23:17:14 +01:00
obscuren
56a58ad70d Removed debug and comments 2014-03-27 22:02:39 +01:00
obscuren
00c5f9b9a6 Updated transaction model
Changed the behaviour of decoding rlp data. Something is considered to
be creating a contract if the 4th item is a list.

Changed constructors.
2014-03-27 19:49:47 +01:00
obscuren
7660e1ed90 Added a IsList method for type checking []interface{} 2014-03-27 19:42:01 +01:00
obscuren
43cad69016 Reworked transaction constructors 2014-03-27 15:42:39 +01:00
obscuren
308c59320c Fixed typo 2014-03-27 15:38:55 +01:00
Maran
6253d10938 initial testcode for canonical chain 2014-03-24 15:04:29 +01:00
obscuren
e0b6091d7e Test fixes and removed old code. Added VM gas fees 2014-03-24 13:20:34 +01:00
Maran
ec6ec62dd4 Remove some xtra logs 2014-03-24 10:56:52 +01:00
Maran
97786d03d5 Merge branch 'master' into miner 2014-03-24 10:24:39 +01:00
Maran
274d5cc91c FindCanonicalChain returns true or false when we are on the Canonical chain or not 2014-03-24 10:24:06 +01:00
obscuren
6a86c517c4 Removed old VM code 2014-03-22 11:47:27 +01:00
obscuren
01c1bce9c5 Removed regular ints from the virtual machine and closures 2014-03-21 18:22:47 +01:00
obscuren
9a9e252cab Changes 'compiler' to work with any type 2014-03-21 15:27:18 +01:00
Maran
b52b1fca89 Initial block reorganisation code 2014-03-21 15:06:23 +01:00
obscuren
2ea4c632d1 Closure return, arguments fixed. Added proper tests 2014-03-21 14:47:55 +01:00
obscuren
fa1db8d2dc Implemented closure arguments 2014-03-21 11:54:36 +01:00
obscuren
9cf8ce9ef8 New tx methods and added new vm to state manager 2014-03-21 00:04:31 +01:00
obscuren
f567f89b99 Added address to account and contract
Contract and account now both have an address field or method for the
sake of simplicity.
2014-03-20 23:38:16 +01:00
obscuren
7705b23f24 Removed caller from tx and added "callership" to account.
Transactions can no longer serve as callers. Accounts are now the
initial callee of closures. Transactions now serve as transport to call
closures.
2014-03-20 23:17:53 +01:00
obscuren
f3d27bf5d8 Rewrote opcodes again 2014-03-20 22:51:20 +01:00
obscuren
c68ff9886b Fixed MSTORE and added some more commets 2014-03-20 19:50:53 +01:00
obscuren
f21eb88ad1 Some minor updates 2014-03-20 17:27:48 +01:00
obscuren
c642094cac Added encoder interface 2014-03-20 17:27:26 +01:00
obscuren
3520771d68 Comply to Callee interface 2014-03-20 17:27:09 +01:00
obscuren
c17381b853 Moved code around 2014-03-20 17:26:51 +01:00
obscuren
59d8dc3950 Fixed issue with stack where it sliced of the wrong values 2014-03-20 17:26:30 +01:00
obscuren
38ea6a6d5d Closures and vm based on closures
Status: Work in progress
2014-03-20 17:26:07 +01:00
obscuren
82d0f65dab Comply to Callee structure 2014-03-20 17:25:11 +01:00
obscuren
c135b389fe Commented out code due to rewrite vm 2014-03-20 17:24:53 +01:00
obscuren
bdc0d1b7ad Added AddFunds method 2014-03-20 17:24:02 +01:00
Maran
ae837c4719 More mining rework 2014-03-20 11:20:29 +01:00
obscuren
344e827061 Added client string to configuration
Clients can set their own client string which will be send to connected
peers during the handshake.
2014-03-17 12:08:16 +01:00
Maran
2be2fc7974 Merge branch 'develop' into miner 2014-03-17 11:15:28 +01:00
obscuren
826c827e6b Added a copy method to state 2014-03-17 11:15:09 +01:00
obscuren
2b9b02812e Log 2014-03-17 11:14:00 +01:00
obscuren
07578fe25f Pretty print nonce 2014-03-17 11:13:35 +01:00
Maran
095d5baaed Merge conflicts 2014-03-17 10:41:05 +01:00
Maran
8ea7e21f64 Merge 2014-03-17 10:37:37 +01:00
Maran
3274e0a249 Removed extra invalid nonce return 2014-03-17 10:37:29 +01:00
obscuren
b15a4985e8 Moved on to the state manager 2014-03-17 10:33:03 +01:00
Maran
d5efeab8f9 Initial smart-miner stuff 2014-03-10 11:53:02 +01:00
obscuren
54bcee512d Merge branch 'develop' of https://github.com/jarradh/eth-go into jarradh-develop 2014-03-07 11:26:46 +01:00
obscuren
685ea3e9a9 Wip keychains 2014-03-07 11:26:35 +01:00
Jarrad Hope
694ef47041 gofmt -w ethereum.go 2014-03-07 11:11:11 +01:00
Jarrad Hope
9d887234ea Small Optimization on port 2014-03-06 19:11:38 +01:00
Jarrad Hope
e2e338929f Fix Whitespace 2014-03-06 19:03:26 +01:00
Jarrad Hope
8162aff8cf Add DNS Bootstrapping 2014-03-06 19:01:38 +01:00
obscuren
ea873304ca No longer dev 2014-03-06 13:10:39 +01:00
obscuren
f80984491a Removed comments 2014-03-06 13:09:55 +01:00
obscuren
e7770b2332 Added miner state 2014-03-06 13:06:54 +01:00
obscuren
be543a6d17 Removed comments 2014-03-06 13:03:24 +01:00
obscuren
6c6e8b0fd7 Renamed block manager to state manager 2014-03-05 10:57:32 +01:00
obscuren
79320e2868 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-03-05 10:44:57 +01:00
obscuren
92f2abdf76 Partially refactored server/txpool/block manager/block chain
The Ethereum structure now complies to a EthManager interface which is
being used by the tx pool, block manager and block chain in order to
gain access to each other. It's become simpeler.
TODO: BlockManager => StateManager
2014-03-05 10:42:51 +01:00
Jeffrey Wilcke
c1de7bcec5 Merge pull request #10 from mquandalle/patch-1
Rename .travil.yml to .travis.yml
2014-03-04 11:28:01 +01:00
Maxime Quandalle
8577e9116e Rename .travil.yml to .travis.yml 2014-03-03 18:13:08 +01:00
obscuren
5b1613d65b Merge branch 'master' into develop 2014-03-03 11:35:35 +01:00
obscuren
c1d0ea7366 Updated protocol version to 7 2014-03-03 11:34:04 +01:00
obscuren
9d492b0509 Renamed Address to Account 2014-03-03 11:05:12 +01:00
obscuren
bfed1c7cac Trie's are no longer referenced directly but through State instead 2014-03-03 11:03:16 +01:00
obscuren
d2bc57cd34 PoC reactor pattern 2014-03-03 00:55:10 +01:00
obscuren
d65b4cd0dd Updated block to use state instead of trie directly 2014-03-02 20:42:05 +01:00
obscuren
f1b354e6aa Reactor implemented 2014-03-02 02:22:20 +01:00
obscuren
d7c5936ac4 Merge branch 'hotfix/0.3.1' into develop 2014-02-28 16:46:12 +01:00
obscuren
ceada15290 Merge branch 'hotfix/0.3.1' 2014-02-28 16:45:54 +01:00
obscuren
b462ca4aad Bump 2014-02-28 16:45:46 +01:00
obscuren
601340bd46 Fixed shutting down 2014-02-28 16:45:29 +01:00
Gav Wood
15dd8fd794 RLP tests and Trie updates. 2014-02-28 12:54:47 +00:00
obscuren
8ee8ec8a36 Merge branch 'develop' of https://github.com/james-c/eth-go into james-c-develop
Conflicts:
	ethdb/database.go
2014-02-28 12:43:31 +01:00
Gav Wood
33f80fef21 Hex encode tests done. 2014-02-28 11:39:35 +00:00
Gav Wood
e1f5e12abb Fix RLP tests. 2014-02-28 11:22:49 +00:00
obscuren
7de2c7f176 Merge branch 'release/0.3.0' into develop 2014-02-28 12:21:19 +01:00
obscuren
839bd73fbb Merge branch 'release/0.3.0' 2014-02-28 12:21:12 +01:00
obscuren
3f7ec1a83f Conform to Db interface 2014-02-28 12:19:45 +01:00
obscuren
8fa19664e6 Added BigCopy 2014-02-28 12:19:21 +01:00
obscuren
9d06f9e6fb Updated readme#trie 2014-02-28 12:19:01 +01:00
obscuren
c0fcefa3a0 Added a GetKeys method to support multiple accounts 2014-02-28 12:18:41 +01:00
obscuren
c9f3d1c00b leveldb API changed for NewIterator. Fixes #20 2014-02-28 10:36:06 +01:00
Gav Wood
f87ce15ad2 Fix empty string. 2014-02-27 13:28:11 +00:00
James Cunningham
179255c3fe Merge branch 'goleveldb_fix' into develop 2014-02-26 15:28:27 +00:00
James Cunningham
4fad5958d0 Fix error in call to NewIterator function
Change number of args passed to NewIterator in print function to reflect changes in the goleveldb project.
2014-02-26 15:26:39 +00:00
obscuren
e98b53bbef WIP Observing pattern 2014-02-25 11:22:27 +01:00
obscuren
4b8c50e2cd Deprication 2014-02-25 11:22:18 +01:00
obscuren
1e7b3cbb13 Removed debug log 2014-02-25 11:22:05 +01:00
obscuren
ce07d9bb4c Error logging on tx processing 2014-02-25 11:21:49 +01:00
obscuren
507fc7b9d1 Length checking when fetching contract. Contract always have 3 fields 2014-02-25 11:21:35 +01:00
obscuren
4f4175a3e2 Addad db name for new ldb 2014-02-25 11:21:03 +01:00
obscuren
c7e73ba12d Added currency converting 2014-02-25 11:20:24 +01:00
obscuren
b30b9ab8cb Fixed a minor issue where a string is expected but returns slice 2014-02-25 10:50:53 +01:00
obscuren
0afdedb01a Some log statements changed to the default logger 2014-02-24 13:50:52 +01:00
obscuren
6c7255cde2 Fixed a minor issue on crashed contracts 2014-02-24 13:15:34 +01:00
Jeffrey Wilcke
f2234264ed Merge pull request #8 from josephyzhou/develop
parse returns byte array instead of string now
2014-02-24 12:53:30 +01:00
obscuren
95a8ebc249 Changed MakeContract on block
MakeContract in Block is now using the MakeContract defined in
contract.go
2014-02-24 12:45:21 +01:00
obscuren
88a9c62fcc Proper tests 2014-02-24 12:44:29 +01:00
obscuren
b29c1eecd1 Removed debug print 2014-02-24 12:44:18 +01:00
obscuren
d69db6e617 Removed compiling from the transaction 2014-02-24 12:13:42 +01:00
obscuren
d8b5bbd48c Added compile 2014-02-24 12:13:22 +01:00
obscuren
22e2c3429b Infof rather than infoln 2014-02-24 12:12:53 +01:00
obscuren
4cc5b03137 Added opcodes 2014-02-24 12:12:32 +01:00
obscuren
a3fb7008b2 Added make contract 2014-02-24 12:12:24 +01:00
obscuren
55c1c220d0 Added delete to database interfaces 2014-02-24 12:12:01 +01:00
obscuren
5971c82094 Updated opcodes ... again 2014-02-24 12:11:42 +01:00
obscuren
1a98bbf1c8 Added a trie iterator 2014-02-24 12:11:00 +01:00
obscuren
377c995103 Separated the VM from the block manager and added states 2014-02-24 12:10:45 +01:00
Gav Wood
c006ed4ffd Tests fix. 2014-02-24 10:24:39 +00:00
Joey Zhou
8ecb24f114 parse now returns byte[] instead of string 2014-02-23 14:43:18 -08:00
obscuren
3a45cdeaf9 Moved txpool start to initialisation method of ethereumm 2014-02-23 01:57:45 +01:00
obscuren
a4a4ffbeff Moved address 2014-02-23 01:57:22 +01:00
obscuren
f5737b929a Added a secondary processor 2014-02-23 01:57:04 +01:00
obscuren
c66cf95b40 Added address states for storing a session based address 2014-02-23 01:56:48 +01:00
obscuren
73b9ae9579 Updated some of the log statements to use the ethutil logger 2014-02-22 01:53:25 +01:00
obscuren
4bfd717ba2 Added the ability to extend the logger with more sub systems 2014-02-22 01:53:09 +01:00
Gav Wood
510ff56363 Updated the tests. 2014-02-21 18:54:08 +00:00
Gav Wood
a0ec843832 Moved over to new format, but RLP tests still need updating. 2014-02-21 18:49:24 +00:00
Gav Wood
660cd26f31 More docs. 2014-02-21 18:35:51 +00:00
Gav Wood
6ad14c1a15 Added VM test suite.
Added TODO.
Renamed old files.
2014-02-21 18:33:39 +00:00
obscuren
cca8585554 Get a chain of blocks made simple 2014-02-21 13:05:59 +01:00
obscuren
18cc35338a Fixed contract running 2014-02-21 12:37:16 +01:00
obscuren
681eacaa7f Removed old instruction code 2014-02-21 12:37:06 +01:00
obscuren
b20c0b1d59 Removed all old code 2014-02-21 12:36:41 +01:00
obscuren
f2a1260294 Nil is also considered empty 2014-02-21 12:36:22 +01:00
obscuren
06ea7fc830 re: Added contract fees 2014-02-20 23:11:17 +01:00
obscuren
ed05779adb Updated fees 2014-02-20 23:10:43 +01:00
obscuren
8f69c2ac45 Added contract addr acessors 2014-02-20 23:10:36 +01:00
obscuren
504d356232 Added peek(n) 2014-02-20 23:10:16 +01:00
obscuren
059ad35215 Type checking 2014-02-20 23:10:05 +01:00
obscuren
9bc5c4a0c5 Long over due Trie delete implemented 2014-02-20 14:40:00 +01:00
obscuren
4afb624c45 WIP state object 2014-02-19 16:28:08 +01:00
obscuren
39b6eaf51c Debug logging functions 2014-02-19 16:27:35 +01:00
obscuren
d4cc125456 Added more logging functions 2014-02-19 16:27:22 +01:00
obscuren
dc994b3518 Changed fee structure 2014-02-19 16:27:08 +01:00
obscuren
8e7daec886 Added fees and debugging 2014-02-19 16:26:55 +01:00
obscuren
b3da104e56 Corrected contract addresses 2014-02-19 16:26:35 +01:00
obscuren
0936e5ccf5 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop
Conflicts:
	ethutil/config.go
2014-02-19 11:40:02 +01:00
Jeffrey Wilcke
531b3a96eb Merge pull request #5 from sdboyer/iotas
Idiomatic go: use iotas for const declarations
2014-02-19 11:38:02 +01:00
Jeffrey Wilcke
3dae732f36 Merge pull request #6 from sdboyer/genisis
Fix typo(?) in naming - s/GenisisHeader/GenesisHeader/
2014-02-19 11:36:53 +01:00
Jeffrey Wilcke
1e241e3a61 Merge pull request #7 from sdboyer/vet-fixes
Fix a couple errors from go vet
2014-02-19 11:36:23 +01:00
obscuren
24f2b2afc3 Running contracts fixed 2014-02-19 11:35:17 +01:00
Sam Boyer
357b4bc14c Add comment explaining why iota is not used. 2014-02-18 17:24:44 -05:00
Sam Boyer
5adbd39946 Express bit flag constants using iota bitshift. 2014-02-18 17:20:41 -05:00
Sam Boyer
6dac014978 Fix a couple errors from go vet 2014-02-18 10:47:09 -05:00
Sam Boyer
4d405f6654 s/GenisisHeader/GenesisHeader/ 2014-02-18 10:40:58 -05:00
Jeffrey Wilcke
bbcf304b99 Merge pull request #3 from josephyzhou/develop
Migrated to here
2014-02-18 16:04:45 +01:00
obscuren
c866fcc5b3 Added new address 2014-02-18 12:10:21 +01:00
obscuren
d7eca7bcc1 Rlp update 2014-02-18 01:34:06 +01:00
obscuren
68028f492f Fixed block handling 2014-02-18 01:33:26 +01:00
obscuren
8629d9a418 String changed and removed some debugging code 2014-02-18 01:33:15 +01:00
obscuren
c7623c3165 Changed debug messages 2014-02-18 01:32:39 +01:00
obscuren
ba95849097 Added hex method 2014-02-18 01:32:20 +01:00
obscuren
bb3e28310e If sender is receiver only subtract the fee 2014-02-18 01:31:51 +01:00
obscuren
a5b7279cb5 Changed uncle block fee as to what it should be 2014-02-18 01:31:31 +01:00
Joey Zhou
c5b009ba6f new line 2014-02-17 15:47:33 -08:00
Joey Zhou
e72a782bf0 adding compact decode tests 2014-02-17 15:46:16 -08:00
obscuren
7413552a28 Root should reset on undo 2014-02-17 20:40:33 +01:00
obscuren
b7a636b894 Values should accept bytes as valid string output 2014-02-17 20:29:54 +01:00
obscuren
e5b97fe03e Added proper error message 2014-02-16 20:33:23 +01:00
obscuren
2ea05292c0 Added proper name :) 2014-02-16 20:33:07 +01:00
obscuren
e4a6ee3d7f Added dirty tracking on the cache 2014-02-16 20:32:56 +01:00
obscuren
7264044122 Added a few tests 2014-02-16 20:31:02 +01:00
obscuren
f1d6f1bd17 Removed Reset 2014-02-16 20:30:50 +01:00
obscuren
c95a27e394 Added more tests 2014-02-16 20:30:33 +01:00
obscuren
066940f134 Defer undo on the current block's state 2014-02-16 20:30:21 +01:00
obscuren
07c12f0b92 Added trie tests, value tests 2014-02-15 13:21:11 +01:00
obscuren
5883446b21 Fixed test 2014-02-15 12:41:17 +01:00
obscuren
9bcb3d2216 Fixed test 2014-02-15 12:40:19 +01:00
obscuren
424b0b8bac Merge branch 'hotfix/0.2.2-1' into develop 2014-02-15 12:12:01 +01:00
obscuren
30ee32a725 Merge branch 'hotfix/0.2.2-1' 2014-02-15 12:11:53 +01:00
obscuren
f5fbbb147f Removed debug message 2014-02-15 12:11:40 +01:00
obscuren
147a74dff2 Merge branch 'release/0.2.2' into develop 2014-02-15 11:53:02 +01:00
obscuren
60afd02e59 Merge branch 'release/0.2.2' 2014-02-15 11:52:38 +01:00
obscuren
fd1aa869e1 Bumped version number 2014-02-15 11:52:28 +01:00
obscuren
334c41d088 Added MIT license 2014-02-15 11:49:53 +01:00
obscuren
4a656eff7b Added git flow explanation 2014-02-15 11:49:39 +01:00
obscuren
73fd358d94 Removed RlpValue in favour of Value 2014-02-15 01:34:18 +01:00
obscuren
f247f0c518 Added readme 2014-02-15 00:04:46 +01:00
obscuren
f6d1bfe45b The great merge 2014-02-14 23:56:09 +01:00
obscuren
c2fb9f06ad Refactoring RlpValue => Value 2014-02-13 15:12:16 +01:00
obscuren
67de76c217 Put leveldb 2014-02-11 20:09:58 +01:00
obscuren
02acef23d5 Interop! 2014-02-11 18:46:28 +01:00
obscuren
5a83114efd Seed bootstrapping added 2014-02-10 20:59:31 +01:00
obscuren
42123b4396 Fixed peer handling 2014-02-10 16:41:36 +01:00
obscuren
0ae6a38825 Database 2014-02-10 16:04:57 +01:00
obscuren
8ab6c53231 Reversed back 2014-02-10 13:59:05 +01:00
obscuren
1d26ae2dea Changed client id 2014-02-10 11:45:08 +01:00
obscuren
d2edc2bbf4 Added some loggers 2014-02-10 11:36:49 +01:00
obscuren
8db7d791f0 Corrected version number in error log 2014-02-10 11:20:42 +01:00
obscuren
a50b4f6b11 Forgot to bump the version 2014-02-10 01:15:14 +01:00
obscuren
156495732b level db back in 2014-02-10 01:10:02 +01:00
obscuren
3c4fb01da3 Version 3 and added added catch up 2014-02-10 01:09:12 +01:00
obscuren
c00b1dd508 Self connect on handshake 2014-02-09 23:58:59 +01:00
obscuren
0de31a3898 Fixed self connect through public key discovery.
Bumped protocol version number
2014-02-09 23:34:33 +01:00
obscuren
24349bc431 Changed peer format 2014-02-08 21:02:42 +01:00
obscuren
1f7b13ff4e Switched over to leveldb instead of memdb 2014-02-08 21:02:09 +01:00
obscuren
04c00f40f0 Fixed value 2014-02-06 13:27:57 +01:00
obscuren
9e9b7a520e Do not quit if upnp fails 2014-02-03 17:26:37 +01:00
obscuren
f995f5763b Properly encode tx 2014-02-03 01:12:44 +01:00
obscuren
6292c5ad5a Transaction processing 2014-02-03 01:10:10 +01:00
obscuren
a9a564c226 removed self connect log 2014-02-02 20:54:13 +01:00
obscuren
04b6e413d9 Encode caps as byte 2014-02-02 20:06:37 +01:00
obscuren
aa9341570b Disconnection reasons 2014-02-02 20:00:09 +01:00
obscuren
f4a96ca588 Removed the seed peer option from start 2014-02-02 19:46:37 +01:00
obscuren
48b41862ef UPnP Support 2014-02-02 19:44:47 +01:00
obscuren
3f503ffc7f Implemented support for UPnP 2014-02-02 19:22:39 +01:00
obscuren
ae0d4eb7aa removed upnp 2014-02-02 16:29:13 +01:00
obscuren
cb8a7d979d upnp test 2014-02-02 16:15:39 +01:00
obscuren
b70fe3a9be Reverted back to messages 2014-02-02 01:39:06 +01:00
obscuren
dfa778fed6 UPNP wip 2014-02-01 21:30:54 +01:00
obscuren
8c4746a3df (un)pack addr 2014-01-31 20:01:28 +01:00
obscuren
ce69334988 For the testnet always 30303 for now to make it easy 2014-01-31 13:37:16 +01:00
obscuren
8c09602a8b Self connect 2014-01-31 13:03:13 +01:00
obscuren
da66eddfcc Get peers returns now both in and outbound peers 2014-01-31 11:57:56 +01:00
obscuren
dfa38b3f91 Peer connection checking 2014-01-31 11:18:10 +01:00
obscuren
36f221dbe7 Don't connect to peers that are already connected 2014-01-31 01:12:48 +01:00
obscuren
7f100e9610 Self connect detect 2014-01-31 00:56:32 +01:00
obscuren
7ccf51fd30 Updated seed peers 2014-01-30 23:48:52 +01:00
obscuren
3e400739a7 Implemented get chain msg 2014-01-28 15:35:44 +01:00
obscuren
4a82230de5 Switched port and removed logging 2014-01-27 22:13:46 +01:00
obscuren
884f792871 Removed default connection 2014-01-27 15:34:50 +01:00
obscuren
7931c6624c Graceful shutdown of peers 2014-01-25 17:13:33 +01:00
obscuren
1b7cba1878 Updated peers 2014-01-24 17:48:21 +01:00
obscuren
233f5200ef Data send over the wire shouldn't be RLPed more then once 2014-01-23 22:32:50 +01:00
obscuren
878e796c0a Updated packages 2014-01-23 20:55:23 +01:00
obscuren
2b32f47d2c Initial commit bootstrapping package 2014-01-23 20:14:01 +01:00
Vitalik Buterin
f91ad7b385 update trie algorithm 2014-01-08 11:26:58 -05:00
Vitalik Buterin
6da2954462 merge 2014-01-08 08:15:38 -05:00
Vitalik Buterin
cc4224675f Updated trie test 2014-01-07 14:35:26 -05:00
vbuterin
131c610da6 Merge pull request #1 from obscuren/master
Update trietest.txt
2014-01-01 06:40:54 -08:00
obscuren
7613302b49 Update trietest.txt
New proposed explanatory format
2014-01-01 15:25:21 +01:00
Vitalik Buterin
121632bedd Added obscure's tests 2014-01-01 08:26:18 -05:00
Vitalik Buterin
ef6c5506c3 Fixed tests a bit 2013-12-31 19:04:48 -05:00
Vitalik Buterin
345e4bcfef Merge branch 'master' of github.com:ethereum/tests 2013-12-31 15:52:46 -05:00
Vitalik Buterin
2c81698f31 Added first three tests 2013-12-30 21:09:40 -05:00
vbuterin
e4bbea400f Initial commit 2013-12-30 18:09:03 -08:00
2410 changed files with 950605 additions and 18231 deletions

9
.dockerignore Normal file
View File

@@ -0,0 +1,9 @@
**/.git
.git
!.git/HEAD
!.git/refs/heads
**/*_test.go
build/_workspace
build/_bin
tests/testdata

2
.gitattributes vendored Normal file
View File

@@ -0,0 +1,2 @@
# Auto detect text files and perform LF normalization
* text=auto

9
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1,9 @@
# Lines starting with '#' are comments.
# Each line is a file pattern followed by one or more owners.
accounts/usbwallet @karalabe
consensus @karalabe
core/ @karalabe @holiman
eth/ @karalabe
mobile/ @karalabe
p2p/ @fjl @zsfelfoldi

16
.github/CONTRIBUTING.md vendored Normal file
View File

@@ -0,0 +1,16 @@
## Can I have feature X
Before you do a feature request please check and make sure that it isn't possible
through some other means. The JavaScript enabled console is a powerful feature
in the right hands. Please check our [Wiki page](https://github.com/ethereum/go-ethereum/wiki) for more info
and help.
## Contributing
If you'd like to contribute to go-ethereum please fork, fix, commit and
send a pull request. Commits which do not comply with the coding standards
are ignored (use gofmt!).
See [Developers' Guide](https://github.com/ethereum/go-ethereum/wiki/Developers'-Guide)
for more details on configuring your environment, testing, and
dependency management.

26
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,26 @@
Hi there,
please note that this is an issue tracker reserved for bug reports and feature requests.
For general questions please use the gitter channel or the Ethereum stack exchange at https://ethereum.stackexchange.com.
#### System information
Geth version: `geth version`
OS & Version: Windows/Linux/OSX
Commit hash : (if `develop`)
#### Expected behaviour
#### Actual behaviour
#### Steps to reproduce the behaviour
#### Backtrace
````
[backtrace]
````

31
.gitignore vendored
View File

@@ -6,9 +6,36 @@
/tmp
*/**/*un~
*/**/*.test
*un~
.DS_Store
*/**/.DS_Store
ethereum/ethereum
ethereal/ethereal
.ethtest
*/**/*tx_database*
*/**/*dapps*
build/_vendor/pkg
#*
.#*
*#
*~
.project
.settings
# used by the Makefile
/build/_workspace/
/build/bin/
/geth*.zip
# travis
profile.tmp
profile.cov
# IdeaIDE
.idea
# dashboard
/dashboard/assets/flow-typed
/dashboard/assets/node_modules
/dashboard/assets/stats.json
/dashboard/assets/bundle.js

6
.gitmodules vendored
View File

@@ -1,3 +1,3 @@
[submodule "ethereal/assets/samplecoin"]
path = ethereal/assets/samplecoin
url = git@github.com:obscuren/SampleCoin.git
[submodule "tests"]
path = tests/testdata
url = https://github.com/ethereum/tests

123
.mailmap Normal file
View File

@@ -0,0 +1,123 @@
Jeffrey Wilcke <jeffrey@ethereum.org>
Jeffrey Wilcke <jeffrey@ethereum.org> <geffobscura@gmail.com>
Jeffrey Wilcke <jeffrey@ethereum.org> <obscuren@obscura.com>
Jeffrey Wilcke <jeffrey@ethereum.org> <obscuren@users.noreply.github.com>
Viktor Trón <viktor.tron@gmail.com>
Joseph Goulden <joegoulden@gmail.com>
Nick Savers <nicksavers@gmail.com>
Maran Hidskes <maran.hidskes@gmail.com>
Taylor Gerring <taylor.gerring@gmail.com>
Taylor Gerring <taylor.gerring@gmail.com> <taylor.gerring@ethereum.org>
Bas van Kervel <bas@ethdev.com>
Bas van Kervel <bas@ethdev.com> <basvankervel@ziggo.nl>
Bas van Kervel <bas@ethdev.com> <basvankervel@gmail.com>
Bas van Kervel <bas@ethdev.com> <bas-vk@users.noreply.github.com>
Sven Ehlert <sven@ethdev.com>
Vitalik Buterin <v@buterin.com>
Marian Oancea <contact@siteshop.ro>
Christoph Jentzsch <jentzsch.software@gmail.com>
Heiko Hees <heiko@heiko.org>
Alex Leverington <alex@ethdev.com>
Alex Leverington <alex@ethdev.com> <subtly@users.noreply.github.com>
Zsolt Felföldi <zsfelfoldi@gmail.com>
Gavin Wood <i@gavwood.com>
Martin Becze <mjbecze@gmail.com>
Martin Becze <mjbecze@gmail.com> <wanderer@users.noreply.github.com>
Dimitry Khokhlov <winsvega@mail.ru>
Roman Mandeleil <roman.mandeleil@gmail.com>
Alec Perseghin <aperseghin@gmail.com>
Alon Muroch <alonmuroch@gmail.com>
Arkadiy Paronyan <arkadiy@ethdev.com>
Jae Kwon <jkwon.work@gmail.com>
Aaron Kumavis <kumavis@users.noreply.github.com>
Nick Dodson <silentcicero@outlook.com>
Jason Carver <jacarver@linkedin.com>
Jason Carver <jacarver@linkedin.com> <ut96caarrs@snkmail.com>
Joseph Chow <ethereum@outlook.com>
Joseph Chow <ethereum@outlook.com> ethers <TODO>
Enrique Fynn <enriquefynn@gmail.com>
Vincent G <caktux@gmail.com>
RJ Catalano <catalanor0220@gmail.com>
RJ Catalano <catalanor0220@gmail.com> <rj@erisindustries.com>
Nchinda Nchinda <nchinda2@gmail.com>
Aron Fischer <github@aron.guru> <homotopycolimit@users.noreply.github.com>
Vlad Gluhovsky <gluk256@users.noreply.github.com>
Ville Sundell <github@solarius.fi>
Elliot Shepherd <elliot@identitii.com>
Yohann Léon <sybiload@gmail.com>
Gregg Dourgarian <greggd@tempworks.com>
Casey Detrio <cdetrio@gmail.com>
Jens Agerberg <github@agerberg.me>
Nick Johnson <arachnid@notdot.net>
Henning Diedrich <hd@eonblast.com>
Henning Diedrich <hd@eonblast.com> Drake Burroughs <wildfyre@hotmail.com>
Felix Lange <fjl@twurst.com>
Felix Lange <fjl@twurst.com> <fjl@users.noreply.github.com>
Максим Чусовлянов <mchusovlianov@gmail.com>
Louis Holbrook <dev@holbrook.no>
Louis Holbrook <dev@holbrook.no> <nolash@users.noreply.github.com>
Thomas Bocek <tom@tomp2p.net>
Victor Tran <vu.tran54@gmail.com>
Justin Drake <drakefjustin@gmail.com>
Frank Wang <eternnoir@gmail.com>
Gary Rong <garyrong0905@gmail.com>
Guillaume Nicolas <guin56@gmail.com>
Sorin Neacsu <sorin.neacsu@gmail.com>
Sorin Neacsu <sorin.neacsu@gmail.com> <sorin@users.noreply.github.com>
Valentin Wüstholz <wuestholz@gmail.com>
Valentin Wüstholz <wuestholz@gmail.com> <wuestholz@users.noreply.github.com>
Armin Braun <me@obrown.io>
Ernesto del Toro <ernesto.deltoro@gmail.com>
Ernesto del Toro <ernesto.deltoro@gmail.com> <ernestodeltoro@users.noreply.github.com>

View File

@@ -1,4 +1,209 @@
before_install: sudo apt-get install libgmp3-dev
language: go
go:
- 1.2
go_import_path: github.com/ethereum/go-ethereum
sudo: false
matrix:
include:
- os: linux
dist: trusty
sudo: required
go: 1.7.x
script:
- sudo modprobe fuse
- sudo chmod 666 /dev/fuse
- sudo chown root:$USER /etc/fuse.conf
- go run build/ci.go install
- go run build/ci.go test -coverage
- os: linux
dist: trusty
sudo: required
go: 1.8.x
script:
- sudo modprobe fuse
- sudo chmod 666 /dev/fuse
- sudo chown root:$USER /etc/fuse.conf
- go run build/ci.go install
- go run build/ci.go test -coverage
# These are the latest Go versions.
- os: linux
dist: trusty
sudo: required
go: 1.9.x
script:
- sudo modprobe fuse
- sudo chmod 666 /dev/fuse
- sudo chown root:$USER /etc/fuse.conf
- go run build/ci.go install
- go run build/ci.go test -coverage
- os: osx
go: 1.9.x
script:
- unset -f cd # workaround for https://github.com/travis-ci/travis-ci/issues/8703
- brew update
- brew install caskroom/cask/brew-cask
- brew cask install osxfuse
- go run build/ci.go install
- go run build/ci.go test -coverage
# This builder only tests code linters on latest version of Go
- os: linux
dist: trusty
go: 1.9.x
env:
- lint
git:
submodules: false # avoid cloning ethereum/tests
script:
- go run build/ci.go lint
# This builder does the Ubuntu PPA and Linux Azure uploads
- os: linux
dist: trusty
sudo: required
go: 1.9.x
env:
- ubuntu-ppa
- azure-linux
git:
submodules: false # avoid cloning ethereum/tests
addons:
apt:
packages:
- devscripts
- debhelper
- dput
- gcc-multilib
- fakeroot
script:
# Build for the primary platforms that Trusty can manage
- go run build/ci.go debsrc -signer "Go Ethereum Linux Builder <geth-ci@ethereum.org>" -upload ppa:ethereum/ethereum
- go run build/ci.go install
- go run build/ci.go archive -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds
- go run build/ci.go install -arch 386
- go run build/ci.go archive -arch 386 -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds
# Switch over GCC to cross compilation (breaks 386, hence why do it here only)
- sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install gcc-arm-linux-gnueabi libc6-dev-armel-cross gcc-arm-linux-gnueabihf libc6-dev-armhf-cross gcc-aarch64-linux-gnu libc6-dev-arm64-cross
- sudo ln -s /usr/include/asm-generic /usr/include/asm
- GOARM=5 go run build/ci.go install -arch arm -cc arm-linux-gnueabi-gcc
- GOARM=5 go run build/ci.go archive -arch arm -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds
- GOARM=6 go run build/ci.go install -arch arm -cc arm-linux-gnueabi-gcc
- GOARM=6 go run build/ci.go archive -arch arm -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds
- GOARM=7 go run build/ci.go install -arch arm -cc arm-linux-gnueabihf-gcc
- GOARM=7 go run build/ci.go archive -arch arm -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds
- go run build/ci.go install -arch arm64 -cc aarch64-linux-gnu-gcc
- go run build/ci.go archive -arch arm64 -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds
# This builder does the Linux Azure MIPS xgo uploads
- os: linux
dist: trusty
services:
- docker
go: 1.9.x
env:
- azure-linux-mips
git:
submodules: false # avoid cloning ethereum/tests
script:
- go run build/ci.go xgo --alltools -- --targets=linux/mips --ldflags '-extldflags "-static"' -v
- for bin in build/bin/*-linux-mips; do mv -f "${bin}" "${bin/-linux-mips/}"; done
- go run build/ci.go archive -arch mips -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds
- go run build/ci.go xgo --alltools -- --targets=linux/mipsle --ldflags '-extldflags "-static"' -v
- for bin in build/bin/*-linux-mipsle; do mv -f "${bin}" "${bin/-linux-mipsle/}"; done
- go run build/ci.go archive -arch mipsle -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds
- go run build/ci.go xgo --alltools -- --targets=linux/mips64 --ldflags '-extldflags "-static"' -v
- for bin in build/bin/*-linux-mips64; do mv -f "${bin}" "${bin/-linux-mips64/}"; done
- go run build/ci.go archive -arch mips64 -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds
- go run build/ci.go xgo --alltools -- --targets=linux/mips64le --ldflags '-extldflags "-static"' -v
- for bin in build/bin/*-linux-mips64le; do mv -f "${bin}" "${bin/-linux-mips64le/}"; done
- go run build/ci.go archive -arch mips64le -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds
# This builder does the Android Maven and Azure uploads
- os: linux
dist: precise # Needed for the android tools
addons:
apt:
packages:
- oracle-java8-installer
- oracle-java8-set-default
language: android
android:
components:
- platform-tools
- tools
- android-15
- android-19
- android-24
env:
- azure-android
- maven-android
git:
submodules: false # avoid cloning ethereum/tests
before_install:
- curl https://storage.googleapis.com/golang/go1.9.2.linux-amd64.tar.gz | tar -xz
- export PATH=`pwd`/go/bin:$PATH
- export GOROOT=`pwd`/go
- export GOPATH=$HOME/go
script:
# Build the Android archive and upload it to Maven Central and Azure
- curl https://dl.google.com/android/repository/android-ndk-r15c-linux-x86_64.zip -o android-ndk-r15c.zip
- unzip -q android-ndk-r15c.zip && rm android-ndk-r15c.zip
- mv android-ndk-r15c $HOME
- export ANDROID_NDK=$HOME/android-ndk-r15c
- mkdir -p $GOPATH/src/github.com/ethereum
- ln -s `pwd` $GOPATH/src/github.com/ethereum
- go run build/ci.go aar -signer ANDROID_SIGNING_KEY -deploy https://oss.sonatype.org -upload gethstore/builds
# This builder does the OSX Azure, iOS CocoaPods and iOS Azure uploads
- os: osx
go: 1.9.x
env:
- azure-osx
- azure-ios
- cocoapods-ios
git:
submodules: false # avoid cloning ethereum/tests
script:
- go run build/ci.go install
- go run build/ci.go archive -type tar -signer OSX_SIGNING_KEY -upload gethstore/builds
# Build the iOS framework and upload it to CocoaPods and Azure
- gem uninstall cocoapods -a -x
- gem install cocoapods
- mv ~/.cocoapods/repos/master ~/.cocoapods/repos/master.bak
- sed -i '.bak' 's/repo.join/!repo.join/g' $(dirname `gem which cocoapods`)/cocoapods/sources_manager.rb
- if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then git clone --depth=1 https://github.com/CocoaPods/Specs.git ~/.cocoapods/repos/master && pod setup --verbose; fi
- xctool -version
- xcrun simctl list
# Workaround for https://github.com/golang/go/issues/23749
- export CGO_CFLAGS_ALLOW='-fmodules|-fblocks|-fobjc-arc'
- go run build/ci.go xcode -signer IOS_SIGNING_KEY -deploy trunk -upload gethstore/builds
# This builder does the Azure archive purges to avoid accumulating junk
- os: linux
dist: trusty
sudo: required
go: 1.9.x
env:
- azure-purge
git:
submodules: false # avoid cloning ethereum/tests
script:
- go run build/ci.go purge -store gethstore/builds -days 14
notifications:
webhooks:
urls:
- https://webhooks.gitter.im/e/e09ccdce1048c5e03445
on_success: change
on_failure: always

173
AUTHORS Normal file
View File

@@ -0,0 +1,173 @@
# This is the official list of go-ethereum authors for copyright purposes.
Afri Schoedon <5chdn@users.noreply.github.com>
Agustin Armellini Fischer <armellini13@gmail.com>
Airead <fgh1987168@gmail.com>
Alan Chen <alanchchen@users.noreply.github.com>
Alejandro Isaza <alejandro.isaza@gmail.com>
Ales Katona <ales@coinbase.com>
Alex Leverington <alex@ethdev.com>
Alex Wu <wuyiding@gmail.com>
Alexandre Van de Sande <alex.vandesande@ethdev.com>
Ali Hajimirza <Ali92hm@users.noreply.github.com>
Anton Evangelatov <anton.evangelatov@gmail.com>
Arba Sasmoyo <arba.sasmoyo@gmail.com>
Armani Ferrante <armaniferrante@berkeley.edu>
Armin Braun <me@obrown.io>
Aron Fischer <github@aron.guru>
Bas van Kervel <bas@ethdev.com>
Benjamin Brent <benjamin@benjaminbrent.com>
Benoit Verkindt <benoit.verkindt@gmail.com>
Bo <bohende@gmail.com>
Bo Ye <boy.e.computer.1982@outlook.com>
Bob Glickstein <bobg@users.noreply.github.com>
Brian Schroeder <bts@gmail.com>
Casey Detrio <cdetrio@gmail.com>
Chase Wright <mysticryuujin@gmail.com>
Christoph Jentzsch <jentzsch.software@gmail.com>
Daniel A. Nagy <nagy.da@gmail.com>
Daniel Sloof <goapsychadelic@gmail.com>
Darrel Herbst <dherbst@gmail.com>
Dave Appleton <calistralabs@gmail.com>
Diego Siqueira <DiSiqueira@users.noreply.github.com>
Dmitry Shulyak <yashulyak@gmail.com>
Egon Elbre <egonelbre@gmail.com>
Elias Naur <elias.naur@gmail.com>
Elliot Shepherd <elliot@identitii.com>
Enrique Fynn <enriquefynn@gmail.com>
Ernesto del Toro <ernesto.deltoro@gmail.com>
Ethan Buchman <ethan@coinculture.info>
Eugene Valeyev <evgen.povt@gmail.com>
Evangelos Pappas <epappas@evalonlabs.com>
Evgeny Danilenko <6655321@bk.ru>
Fabian Vogelsteller <fabian@frozeman.de>
Fabio Barone <fabio.barone.co@gmail.com>
Fabio Berger <fabioberger1991@gmail.com>
FaceHo <facehoshi@gmail.com>
Felix Lange <fjl@twurst.com>
Fiisio <liangcszzu@163.com>
Frank Wang <eternnoir@gmail.com>
Furkan KAMACI <furkankamaci@gmail.com>
Gary Rong <garyrong0905@gmail.com>
George Ornbo <george@shapeshed.com>
Gregg Dourgarian <greggd@tempworks.com>
Guillaume Ballet <gballet@gmail.com>
Guillaume Nicolas <guin56@gmail.com>
Gustav Simonsson <gustav.simonsson@gmail.com>
Hao Bryan Cheng <haobcheng@gmail.com>
Henning Diedrich <hd@eonblast.com>
Isidoro Ghezzi <isidoro.ghezzi@icloud.com>
Ivan Daniluk <ivan.daniluk@gmail.com>
Jae Kwon <jkwon.work@gmail.com>
Jamie Pitts <james.pitts@gmail.com>
Janoš Guljaš <janos@users.noreply.github.com>
Jason Carver <jacarver@linkedin.com>
Jay Guo <guojiannan1101@gmail.com>
Jeff R. Allen <jra@nella.org>
Jeffrey Wilcke <jeffrey@ethereum.org>
Jens Agerberg <github@agerberg.me>
Jia Chenhui <jiachenhui1989@gmail.com>
Jim McDonald <Jim@mcdee.net>
Joel Burget <joelburget@gmail.com>
Jonathan Brown <jbrown@bluedroplet.com>
Joseph Chow <ethereum@outlook.com>
Justin Clark-Casey <justincc@justincc.org>
Justin Drake <drakefjustin@gmail.com>
Kenji Siu <kenji@isuntv.com>
Kobi Gurkan <kobigurk@gmail.com>
Konrad Feldmeier <konrad@brainbot.com>
Kurkó Mihály <kurkomisi@users.noreply.github.com>
Kyuntae Ethan Kim <ethan.kyuntae.kim@gmail.com>
Lefteris Karapetsas <lefteris@refu.co>
Leif Jurvetson <leijurv@gmail.com>
Leo Shklovskii <leo@thermopylae.net>
Lewis Marshall <lewis@lmars.net>
Lio李欧 <lionello@users.noreply.github.com>
Louis Holbrook <dev@holbrook.no>
Luca Zeug <luclu@users.noreply.github.com>
Magicking <s@6120.eu>
Maran Hidskes <maran.hidskes@gmail.com>
Marek Kotewicz <marek.kotewicz@gmail.com>
Mark <markya0616@gmail.com>
Martin Holst Swende <martin@swende.se>
Matthew Di Ferrante <mattdf@users.noreply.github.com>
Matthew Wampler-Doty <matthew.wampler.doty@gmail.com>
Maximilian Meister <mmeister@suse.de>
Micah Zoltu <micah@zoltu.net>
Michael Ruminer <michael.ruminer+github@gmail.com>
Miguel Mota <miguelmota2@gmail.com>
Miya Chen <miyatlchen@gmail.com>
Nchinda Nchinda <nchinda2@gmail.com>
Nick Dodson <silentcicero@outlook.com>
Nick Johnson <arachnid@notdot.net>
Nicolas Guillaume <gunicolas@sqli.com>
Noman <noman@noman.land>
Oli Bye <olibye@users.noreply.github.com>
Paul Litvak <litvakpol@012.net.il>
Paulo L F Casaretto <pcasaretto@gmail.com>
Paweł Bylica <chfast@gmail.com>
Peter Pratscher <pratscher@gmail.com>
Petr Mikusek <petr@mikusek.info>
Péter Szilágyi <peterke@gmail.com>
RJ Catalano <catalanor0220@gmail.com>
Ramesh Nair <ram@hiddentao.com>
Ricardo Catalinas Jiménez <r@untroubled.be>
Ricardo Domingos <ricardohsd@gmail.com>
Richard Hart <richardhart92@gmail.com>
Rob <robert@rojotek.com>
Robert Zaremba <robert.zaremba@scale-it.pl>
Russ Cox <rsc@golang.org>
Rémy Roy <remyroy@remyroy.com>
S. Matthew English <s-matthew-english@users.noreply.github.com>
Shintaro Kaneko <kaneshin0120@gmail.com>
Sorin Neacsu <sorin.neacsu@gmail.com>
Stein Dekker <dekker.stein@gmail.com>
Steve Waldman <swaldman@mchange.com>
Steven Roose <stevenroose@gmail.com>
Taylor Gerring <taylor.gerring@gmail.com>
Thomas Bocek <tom@tomp2p.net>
Ti Zhou <tizhou1986@gmail.com>
Tosh Camille <tochecamille@gmail.com>
Valentin Wüstholz <wuestholz@gmail.com>
Victor Farazdagi <simple.square@gmail.com>
Victor Tran <vu.tran54@gmail.com>
Viktor Trón <viktor.tron@gmail.com>
Ville Sundell <github@solarius.fi>
Vincent G <caktux@gmail.com>
Vitalik Buterin <v@buterin.com>
Vitaly V <vvelikodny@gmail.com>
Vivek Anand <vivekanand1101@users.noreply.github.com>
Vlad Gluhovsky <gluk256@users.noreply.github.com>
Yohann Léon <sybiload@gmail.com>
Yoichi Hirai <i@yoichihirai.com>
Yondon Fu <yondon.fu@gmail.com>
Zach <zach.ramsay@gmail.com>
Zahoor Mohamed <zahoor@zahoor.in>
Zoe Nolan <github@zoenolan.org>
Zsolt Felföldi <zsfelfoldi@gmail.com>
am2rican5 <am2rican5@gmail.com>
ayeowch <ayeowch@gmail.com>
b00ris <b00ris@mail.ru>
bailantaotao <Edwin@maicoin.com>
baizhenxuan <nkbai@163.com>
bloonfield <bloonfield@163.com>
changhong <changhong.yu@shanbay.com>
evgk <evgeniy.kamyshev@gmail.com>
ferhat elmas <elmas.ferhat@gmail.com>
holisticode <holistic.computing@gmail.com>
jtakalai <juuso.takalainen@streamr.com>
ken10100147 <sunhongping@kanjian.com>
ligi <ligi@ligi.de>
mark.lin <mark@maicoin.com>
necaremus <necaremus@gmail.com>
njupt-moon <1015041018@njupt.edu.cn>
nkbai <nkbai@163.com>
rhaps107 <dod-source@yandex.ru>
slumber1122 <slumber1122@gmail.com>
sunxiaojun2014 <sunxiaojun-xy@360.cn>
terasum <terasum@163.com>
tsarpaul <Litvakpol@012.net.il>
xiekeyang <xiekeyang@users.noreply.github.com>
yoza <yoza.is12s@gmail.com>
ΞTHΞЯSPHΞЯΞ <{viktor.tron,nagydani,zsfelfoldi}@gmail.com>
Максим Чусовлянов <mchusovlianov@gmail.com>

619
COPYING Normal file
View File

@@ -0,0 +1,619 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2014 The go-ethereum Authors.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

165
COPYING.LESSER Normal file
View File

@@ -0,0 +1,165 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

16
Dockerfile Normal file
View File

@@ -0,0 +1,16 @@
# Build Geth in a stock Go builder container
FROM golang:1.9-alpine as builder
RUN apk add --no-cache make gcc musl-dev linux-headers
ADD . /go-ethereum
RUN cd /go-ethereum && make geth
# Pull Geth into a second stage deploy alpine container
FROM alpine:latest
RUN apk add --no-cache ca-certificates
COPY --from=builder /go-ethereum/build/bin/geth /usr/local/bin/
EXPOSE 8545 8546 30303 30303/udp 30304/udp
ENTRYPOINT ["geth"]

15
Dockerfile.alltools Normal file
View File

@@ -0,0 +1,15 @@
# Build Geth in a stock Go builder container
FROM golang:1.9-alpine as builder
RUN apk add --no-cache make gcc musl-dev linux-headers
ADD . /go-ethereum
RUN cd /go-ethereum && make all
# Pull all binaries into a second stage deploy alpine container
FROM alpine:latest
RUN apk add --no-cache ca-certificates
COPY --from=builder /go-ethereum/build/bin/* /usr/local/bin/
EXPOSE 8545 8546 30303 30303/udp 30304/udp

16
LICENSE
View File

@@ -1,16 +0,0 @@
Copyright (c) 2013-2014, Jeffrey Wilcke. All rights reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301 USA

146
Makefile Normal file
View File

@@ -0,0 +1,146 @@
# This Makefile is meant to be used by people that do not usually work
# with Go source code. If you know what GOPATH is then you probably
# don't need to bother with make.
.PHONY: geth android ios geth-cross swarm evm all test clean
.PHONY: geth-linux geth-linux-386 geth-linux-amd64 geth-linux-mips64 geth-linux-mips64le
.PHONY: geth-linux-arm geth-linux-arm-5 geth-linux-arm-6 geth-linux-arm-7 geth-linux-arm64
.PHONY: geth-darwin geth-darwin-386 geth-darwin-amd64
.PHONY: geth-windows geth-windows-386 geth-windows-amd64
GOBIN = $(shell pwd)/build/bin
GO ?= latest
geth:
build/env.sh go run build/ci.go install ./cmd/geth
@echo "Done building."
@echo "Run \"$(GOBIN)/geth\" to launch geth."
swarm:
build/env.sh go run build/ci.go install ./cmd/swarm
@echo "Done building."
@echo "Run \"$(GOBIN)/swarm\" to launch swarm."
all:
build/env.sh go run build/ci.go install
android:
build/env.sh go run build/ci.go aar --local
@echo "Done building."
@echo "Import \"$(GOBIN)/geth.aar\" to use the library."
ios:
build/env.sh go run build/ci.go xcode --local
@echo "Done building."
@echo "Import \"$(GOBIN)/Geth.framework\" to use the library."
test: all
build/env.sh go run build/ci.go test
clean:
rm -fr build/_workspace/pkg/ $(GOBIN)/*
# The devtools target installs tools required for 'go generate'.
# You need to put $GOBIN (or $GOPATH/bin) in your PATH to use 'go generate'.
devtools:
env GOBIN= go get -u golang.org/x/tools/cmd/stringer
env GOBIN= go get -u github.com/kevinburke/go-bindata/go-bindata
env GOBIN= go get -u github.com/fjl/gencodec
env GOBIN= go get -u github.com/golang/protobuf/protoc-gen-go
env GOBIN= go install ./cmd/abigen
@type "npm" 2> /dev/null || echo 'Please install node.js and npm'
@type "solc" 2> /dev/null || echo 'Please install solc'
@type "protoc" 2> /dev/null || echo 'Please install protoc'
# Cross Compilation Targets (xgo)
geth-cross: geth-linux geth-darwin geth-windows geth-android geth-ios
@echo "Full cross compilation done:"
@ls -ld $(GOBIN)/geth-*
geth-linux: geth-linux-386 geth-linux-amd64 geth-linux-arm geth-linux-mips64 geth-linux-mips64le
@echo "Linux cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-*
geth-linux-386:
build/env.sh go run build/ci.go xgo -- --go=$(GO) --targets=linux/386 -v ./cmd/geth
@echo "Linux 386 cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-* | grep 386
geth-linux-amd64:
build/env.sh go run build/ci.go xgo -- --go=$(GO) --targets=linux/amd64 -v ./cmd/geth
@echo "Linux amd64 cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-* | grep amd64
geth-linux-arm: geth-linux-arm-5 geth-linux-arm-6 geth-linux-arm-7 geth-linux-arm64
@echo "Linux ARM cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-* | grep arm
geth-linux-arm-5:
build/env.sh go run build/ci.go xgo -- --go=$(GO) --targets=linux/arm-5 -v ./cmd/geth
@echo "Linux ARMv5 cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-* | grep arm-5
geth-linux-arm-6:
build/env.sh go run build/ci.go xgo -- --go=$(GO) --targets=linux/arm-6 -v ./cmd/geth
@echo "Linux ARMv6 cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-* | grep arm-6
geth-linux-arm-7:
build/env.sh go run build/ci.go xgo -- --go=$(GO) --targets=linux/arm-7 -v ./cmd/geth
@echo "Linux ARMv7 cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-* | grep arm-7
geth-linux-arm64:
build/env.sh go run build/ci.go xgo -- --go=$(GO) --targets=linux/arm64 -v ./cmd/geth
@echo "Linux ARM64 cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-* | grep arm64
geth-linux-mips:
build/env.sh go run build/ci.go xgo -- --go=$(GO) --targets=linux/mips --ldflags '-extldflags "-static"' -v ./cmd/geth
@echo "Linux MIPS cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-* | grep mips
geth-linux-mipsle:
build/env.sh go run build/ci.go xgo -- --go=$(GO) --targets=linux/mipsle --ldflags '-extldflags "-static"' -v ./cmd/geth
@echo "Linux MIPSle cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-* | grep mipsle
geth-linux-mips64:
build/env.sh go run build/ci.go xgo -- --go=$(GO) --targets=linux/mips64 --ldflags '-extldflags "-static"' -v ./cmd/geth
@echo "Linux MIPS64 cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-* | grep mips64
geth-linux-mips64le:
build/env.sh go run build/ci.go xgo -- --go=$(GO) --targets=linux/mips64le --ldflags '-extldflags "-static"' -v ./cmd/geth
@echo "Linux MIPS64le cross compilation done:"
@ls -ld $(GOBIN)/geth-linux-* | grep mips64le
geth-darwin: geth-darwin-386 geth-darwin-amd64
@echo "Darwin cross compilation done:"
@ls -ld $(GOBIN)/geth-darwin-*
geth-darwin-386:
build/env.sh go run build/ci.go xgo -- --go=$(GO) --targets=darwin/386 -v ./cmd/geth
@echo "Darwin 386 cross compilation done:"
@ls -ld $(GOBIN)/geth-darwin-* | grep 386
geth-darwin-amd64:
build/env.sh go run build/ci.go xgo -- --go=$(GO) --targets=darwin/amd64 -v ./cmd/geth
@echo "Darwin amd64 cross compilation done:"
@ls -ld $(GOBIN)/geth-darwin-* | grep amd64
geth-windows: geth-windows-386 geth-windows-amd64
@echo "Windows cross compilation done:"
@ls -ld $(GOBIN)/geth-windows-*
geth-windows-386:
build/env.sh go run build/ci.go xgo -- --go=$(GO) --targets=windows/386 -v ./cmd/geth
@echo "Windows 386 cross compilation done:"
@ls -ld $(GOBIN)/geth-windows-* | grep 386
geth-windows-amd64:
build/env.sh go run build/ci.go xgo -- --go=$(GO) --targets=windows/amd64 -v ./cmd/geth
@echo "Windows amd64 cross compilation done:"
@ls -ld $(GOBIN)/geth-windows-* | grep amd64

340
README.md
View File

@@ -1,87 +1,309 @@
Ethereum
========
## Go Ethereum
Master [![Build
Status](http://cpt-obvious.ethercasts.com:8010/buildstatusimage?builder=go-ethereum-master-docker)](http://cpt-obvious.ethercasts.com:8010/builders/go-ethereum-master-docker/builds/-1) Develop [![Build
Status](http://cpt-obvious.ethercasts.com:8010/buildstatusimage?builder=go-ethereum-develop-docker)](http://cpt-obvious.ethercasts.com:8010/builders/go-ethereum-develop-docker/builds/-1)
Official golang implementation of the Ethereum protocol.
Ethereum Go Client © 2014 Jeffrey Wilcke.
[![API Reference](
https://camo.githubusercontent.com/915b7be44ada53c290eb157634330494ebe3e30a/68747470733a2f2f676f646f632e6f72672f6769746875622e636f6d2f676f6c616e672f6764646f3f7374617475732e737667
)](https://godoc.org/github.com/ethereum/go-ethereum)
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ethereum/go-ethereum?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
Current state: Proof of Concept 0.6.7.
Automated builds are available for stable releases and the unstable master branch.
Binary archives are published at https://geth.ethereum.org/downloads/.
For the development package please see the [eth-go package](https://github.com/ethereum/eth-go).
## Building the source
Build
=======
For prerequisites and detailed build instructions please read the
[Installation Instructions](https://github.com/ethereum/go-ethereum/wiki/Building-Ethereum)
on the wiki.
To build Ethereal (GUI):
Building geth requires both a Go (version 1.7 or later) and a C compiler.
You can install them using your favourite package manager.
Once the dependencies are installed, run
`go get github.com/ethereum/go-ethereum/ethereal`
make geth
To build the node (CLI):
or, to build the full suite of utilities:
`go get github.com/ethereum/go-ethereum/ethereum`
make all
For further, detailed, build instruction please see the [Wiki](https://github.com/ethereum/go-ethereum/wiki/Building-Ethereum(Go))
## Executables
General command line options
====================
The go-ethereum project comes with several wrappers/executables found in the `cmd` directory.
| Command | Description |
|:----------:|-------------|
| **`geth`** | Our main Ethereum CLI client. It is the entry point into the Ethereum network (main-, test- or private net), capable of running as a full node (default) archive node (retaining all historical state) or a light node (retrieving data live). It can be used by other processes as a gateway into the Ethereum network via JSON RPC endpoints exposed on top of HTTP, WebSocket and/or IPC transports. `geth --help` and the [CLI Wiki page](https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options) for command line options. |
| `abigen` | Source code generator to convert Ethereum contract definitions into easy to use, compile-time type-safe Go packages. It operates on plain [Ethereum contract ABIs](https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI) with expanded functionality if the contract bytecode is also available. However it also accepts Solidity source files, making development much more streamlined. Please see our [Native DApps](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts) wiki page for details. |
| `bootnode` | Stripped down version of our Ethereum client implementation that only takes part in the network node discovery protocol, but does not run any of the higher level application protocols. It can be used as a lightweight bootstrap node to aid in finding peers in private networks. |
| `evm` | Developer utility version of the EVM (Ethereum Virtual Machine) that is capable of running bytecode snippets within a configurable environment and execution mode. Its purpose is to allow isolated, fine-grained debugging of EVM opcodes (e.g. `evm --code 60ff60ff --debug`). |
| `gethrpctest` | Developer utility tool to support our [ethereum/rpc-test](https://github.com/ethereum/rpc-tests) test suite which validates baseline conformity to the [Ethereum JSON RPC](https://github.com/ethereum/wiki/wiki/JSON-RPC) specs. Please see the [test suite's readme](https://github.com/ethereum/rpc-tests/blob/master/README.md) for details. |
| `rlpdump` | Developer utility tool to convert binary RLP ([Recursive Length Prefix](https://github.com/ethereum/wiki/wiki/RLP)) dumps (data encoding used by the Ethereum protocol both network as well as consensus wise) to user friendlier hierarchical representation (e.g. `rlpdump --hex CE0183FFFFFFC4C304050583616263`). |
| `swarm` | swarm daemon and tools. This is the entrypoint for the swarm network. `swarm --help` for command line options and subcommands. See https://swarm-guide.readthedocs.io for swarm documentation. |
| `puppeth` | a CLI wizard that aids in creating a new Ethereum network. |
## Running geth
Going through all the possible command line flags is out of scope here (please consult our
[CLI Wiki page](https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options)), but we've
enumerated a few common parameter combos to get you up to speed quickly on how you can run your
own Geth instance.
### Full node on the main Ethereum network
By far the most common scenario is people wanting to simply interact with the Ethereum network:
create accounts; transfer funds; deploy and interact with contracts. For this particular use-case
the user doesn't care about years-old historical data, so we can fast-sync quickly to the current
state of the network. To do so:
```
Shared between ethereum and ethereal
-id Set the custom identifier of the client (shows up on other clients)
-port Port on which the server will accept incomming connections
-upnp Enable UPnP
-maxpeer Desired amount of peers
-rpc Start JSON RPC
-dir Data directory used to store configs and databases
-import Import a private key
-genaddr Generates a new address and private key (destructive action)
-h This
Ethereum only
ethereum [options] [filename]
-js Start the JavaScript REPL
filename Load the given file and interpret as JavaScript
-m Start mining blocks
Etheral only
-asset_path absolute path to GUI assets directory
$ geth console
```
Contribution
============
This command will:
If you would like to contribute to Ethereum Go, please fork, fix, commit and
send a pull request to the main repository. Commits which do not comply with the coding standards explained below
will be ignored. If you send a pull request, make sure that you
commit to the `develop` branch and that you do not merge to `master`.
Commits that are directly based off of the `master` branch instead of the `develop` branch will be ignored.
* Start geth in fast sync mode (default, can be changed with the `--syncmode` flag), causing it to
download more data in exchange for avoiding processing the entire history of the Ethereum network,
which is very CPU intensive.
* Start up Geth's built-in interactive [JavaScript console](https://github.com/ethereum/go-ethereum/wiki/JavaScript-Console),
(via the trailing `console` subcommand) through which you can invoke all official [`web3` methods](https://github.com/ethereum/wiki/wiki/JavaScript-API)
as well as Geth's own [management APIs](https://github.com/ethereum/go-ethereum/wiki/Management-APIs).
This too is optional and if you leave it out you can always attach to an already running Geth instance
with `geth attach`.
To make this process simpler try following the [git flow](http://nvie.com/posts/a-successful-git-branching-model/) branching model, as it sets this process up and streamlines work flow.
### Full node on the Ethereum test network
Coding standards
================
Transitioning towards developers, if you'd like to play around with creating Ethereum contracts, you
almost certainly would like to do that without any real money involved until you get the hang of the
entire system. In other words, instead of attaching to the main network, you want to join the **test**
network with your node, which is fully equivalent to the main network, but with play-Ether only.
Code should be formatted according to the [Go Formatting
Style](http://golang.org/doc/effective_go.html#formatting).
```
$ geth --testnet console
```
Unless struct fields are supposed to be directly accessible, provide
getters and hide the fields through Go's exporting facility.
The `console` subcommand have the exact same meaning as above and they are equally useful on the
testnet too. Please see above for their explanations if you've skipped to here.
Make comments in your code meaningful and only use them when necessary. Describe in detail what your code is trying to achieve. For example, this would be redundant and unnecessary commenting:
Specifying the `--testnet` flag however will reconfigure your Geth instance a bit:
*wrong*
* Instead of using the default data directory (`~/.ethereum` on Linux for example), Geth will nest
itself one level deeper into a `testnet` subfolder (`~/.ethereum/testnet` on Linux). Note, on OSX
and Linux this also means that attaching to a running testnet node requires the use of a custom
endpoint since `geth attach` will try to attach to a production node endpoint by default. E.g.
`geth attach <datadir>/testnet/geth.ipc`. Windows users are not affected by this.
* Instead of connecting the main Ethereum network, the client will connect to the test network,
which uses different P2P bootnodes, different network IDs and genesis states.
*Note: Although there are some internal protective measures to prevent transactions from crossing
over between the main network and test network, you should make sure to always use separate accounts
for play-money and real-money. Unless you manually move accounts, Geth will by default correctly
separate the two networks and will not make any accounts available between them.*
```go
// Check if the value at x is greater than y
if x > y {
// It's greater!
### Full node on the Rinkeby test network
The above test network is a cross client one based on the ethash proof-of-work consensus algorithm. As such, it has certain extra overhead and is more susceptible to reorganization attacks due to the network's low difficulty / security. Go Ethereum also supports connecting to a proof-of-authority based test network called [*Rinkeby*](https://www.rinkeby.io) (operated by members of the community). This network is lighter, more secure, but is only supported by go-ethereum.
```
$ geth --rinkeby console
```
### Configuration
As an alternative to passing the numerous flags to the `geth` binary, you can also pass a configuration file via:
```
$ geth --config /path/to/your_config.toml
```
To get an idea how the file should look like you can use the `dumpconfig` subcommand to export your existing configuration:
```
$ geth --your-favourite-flags dumpconfig
```
*Note: This works only with geth v1.6.0 and above.*
#### Docker quick start
One of the quickest ways to get Ethereum up and running on your machine is by using Docker:
```
docker run -d --name ethereum-node -v /Users/alice/ethereum:/root \
-p 8545:8545 -p 30303:30303 \
ethereum/client-go
```
This will start geth in fast-sync mode with a DB memory allowance of 1GB just as the above command does. It will also create a persistent volume in your home directory for saving your blockchain as well as map the default ports. There is also an `alpine` tag available for a slim version of the image.
Do not forget `--rpcaddr 0.0.0.0`, if you want to access RPC from other containers and/or hosts. By default, `geth` binds to the local interface and RPC endpoints is not accessible from the outside.
### Programatically interfacing Geth nodes
As a developer, sooner rather than later you'll want to start interacting with Geth and the Ethereum
network via your own programs and not manually through the console. To aid this, Geth has built in
support for a JSON-RPC based APIs ([standard APIs](https://github.com/ethereum/wiki/wiki/JSON-RPC) and
[Geth specific APIs](https://github.com/ethereum/go-ethereum/wiki/Management-APIs)). These can be
exposed via HTTP, WebSockets and IPC (unix sockets on unix based platforms, and named pipes on Windows).
The IPC interface is enabled by default and exposes all the APIs supported by Geth, whereas the HTTP
and WS interfaces need to manually be enabled and only expose a subset of APIs due to security reasons.
These can be turned on/off and configured as you'd expect.
HTTP based JSON-RPC API options:
* `--rpc` Enable the HTTP-RPC server
* `--rpcaddr` HTTP-RPC server listening interface (default: "localhost")
* `--rpcport` HTTP-RPC server listening port (default: 8545)
* `--rpcapi` API's offered over the HTTP-RPC interface (default: "eth,net,web3")
* `--rpccorsdomain` Comma separated list of domains from which to accept cross origin requests (browser enforced)
* `--ws` Enable the WS-RPC server
* `--wsaddr` WS-RPC server listening interface (default: "localhost")
* `--wsport` WS-RPC server listening port (default: 8546)
* `--wsapi` API's offered over the WS-RPC interface (default: "eth,net,web3")
* `--wsorigins` Origins from which to accept websockets requests
* `--ipcdisable` Disable the IPC-RPC server
* `--ipcapi` API's offered over the IPC-RPC interface (default: "admin,debug,eth,miner,net,personal,shh,txpool,web3")
* `--ipcpath` Filename for IPC socket/pipe within the datadir (explicit paths escape it)
You'll need to use your own programming environments' capabilities (libraries, tools, etc) to connect
via HTTP, WS or IPC to a Geth node configured with the above flags and you'll need to speak [JSON-RPC](http://www.jsonrpc.org/specification)
on all transports. You can reuse the same connection for multiple requests!
**Note: Please understand the security implications of opening up an HTTP/WS based transport before
doing so! Hackers on the internet are actively trying to subvert Ethereum nodes with exposed APIs!
Further, all browser tabs can access locally running webservers, so malicious webpages could try to
subvert locally available APIs!**
### Operating a private network
Maintaining your own private network is more involved as a lot of configurations taken for granted in
the official networks need to be manually set up.
#### Defining the private genesis state
First, you'll need to create the genesis state of your networks, which all nodes need to be aware of
and agree upon. This consists of a small JSON file (e.g. call it `genesis.json`):
```json
{
"config": {
"chainId": 0,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
```
Everyone reading the source code should know what this code snippet was meant to achieve, and so those are **not** meaningful comments.
The above fields should be fine for most purposes, although we'd recommend changing the `nonce` to
some random value so you prevent unknown remote nodes from being able to connect to you. If you'd
like to pre-fund some accounts for easier testing, you can populate the `alloc` field with account
configs:
While this project is constantly tested and run, code tests should be written regardless. There is not time to evaluate every person's code specifically, so it is expected of you to write tests for the code so that it does not have to be tested manually. In fact, contributing by simply writing tests is perfectly fine!
```json
"alloc": {
"0x0000000000000000000000000000000000000001": {"balance": "111111111"},
"0x0000000000000000000000000000000000000002": {"balance": "222222222"}
}
```
With the genesis state defined in the above JSON file, you'll need to initialize **every** Geth node
with it prior to starting it up to ensure all blockchain parameters are correctly set:
```
$ geth init path/to/genesis.json
```
#### Creating the rendezvous point
With all nodes that you want to run initialized to the desired genesis state, you'll need to start a
bootstrap node that others can use to find each other in your network and/or over the internet. The
clean way is to configure and run a dedicated bootnode:
```
$ bootnode --genkey=boot.key
$ bootnode --nodekey=boot.key
```
With the bootnode online, it will display an [`enode` URL](https://github.com/ethereum/wiki/wiki/enode-url-format)
that other nodes can use to connect to it and exchange peer information. Make sure to replace the
displayed IP address information (most probably `[::]`) with your externally accessible IP to get the
actual `enode` URL.
*Note: You could also use a full fledged Geth node as a bootnode, but it's the less recommended way.*
#### Starting up your member nodes
With the bootnode operational and externally reachable (you can try `telnet <ip> <port>` to ensure
it's indeed reachable), start every subsequent Geth node pointed to the bootnode for peer discovery
via the `--bootnodes` flag. It will probably also be desirable to keep the data directory of your
private network separated, so do also specify a custom `--datadir` flag.
```
$ geth --datadir=path/to/custom/data/folder --bootnodes=<bootnode-enode-url-from-above>
```
*Note: Since your network will be completely cut off from the main and test networks, you'll also
need to configure a miner to process transactions and create new blocks for you.*
#### Running a private miner
Mining on the public Ethereum network is a complex task as it's only feasible using GPUs, requiring
an OpenCL or CUDA enabled `ethminer` instance. For information on such a setup, please consult the
[EtherMining subreddit](https://www.reddit.com/r/EtherMining/) and the [Genoil miner](https://github.com/Genoil/cpp-ethereum)
repository.
In a private network setting however, a single CPU miner instance is more than enough for practical
purposes as it can produce a stable stream of blocks at the correct intervals without needing heavy
resources (consider running on a single thread, no need for multiple ones either). To start a Geth
instance for mining, run it with all your usual flags, extended by:
```
$ geth <usual-flags> --mine --minerthreads=1 --etherbase=0x0000000000000000000000000000000000000000
```
Which will start mining blocks and transactions on a single CPU thread, crediting all proceedings to
the account specified by `--etherbase`. You can further tune the mining by changing the default gas
limit blocks converge to (`--targetgaslimit`) and the price transactions are accepted at (`--gasprice`).
## Contribution
Thank you for considering to help out with the source code! We welcome contributions from
anyone on the internet, and are grateful for even the smallest of fixes!
If you'd like to contribute to go-ethereum, please fork, fix, commit and send a pull request
for the maintainers to review and merge into the main code base. If you wish to submit more
complex changes though, please check up with the core devs first on [our gitter channel](https://gitter.im/ethereum/go-ethereum)
to ensure those changes are in line with the general philosophy of the project and/or get some
early feedback which can make both your efforts much lighter as well as our review and merge
procedures quick and simple.
Please make sure your contributions adhere to our coding guidelines:
* Code must adhere to the official Go [formatting](https://golang.org/doc/effective_go.html#formatting) guidelines (i.e. uses [gofmt](https://golang.org/cmd/gofmt/)).
* Code must be documented adhering to the official Go [commentary](https://golang.org/doc/effective_go.html#commentary) guidelines.
* Pull requests need to be based on and opened against the `master` branch.
* Commit messages should be prefixed with the package(s) they modify.
* E.g. "eth, rpc: make trace configs optional"
Please see the [Developers' Guide](https://github.com/ethereum/go-ethereum/wiki/Developers'-Guide)
for more details on configuring your environment, managing project dependencies and testing procedures.
## License
The go-ethereum library (i.e. all code outside of the `cmd` directory) is licensed under the
[GNU Lesser General Public License v3.0](https://www.gnu.org/licenses/lgpl-3.0.en.html), also
included in our repository in the `COPYING.LESSER` file.
The go-ethereum binaries (i.e. all code inside of the `cmd` directory) is licensed under the
[GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html), also included
in our repository in the `COPYING` file.

1
VERSION Normal file
View File

@@ -0,0 +1 @@
1.8.0

146
accounts/abi/abi.go Normal file
View File

@@ -0,0 +1,146 @@
// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package abi
import (
"bytes"
"encoding/json"
"fmt"
"io"
)
// The ABI holds information about a contract's context and available
// invokable methods. It will allow you to type check function calls and
// packs data accordingly.
type ABI struct {
Constructor Method
Methods map[string]Method
Events map[string]Event
}
// JSON returns a parsed ABI interface and error if it failed.
func JSON(reader io.Reader) (ABI, error) {
dec := json.NewDecoder(reader)
var abi ABI
if err := dec.Decode(&abi); err != nil {
return ABI{}, err
}
return abi, nil
}
// Pack the given method name to conform the ABI. Method call's data
// will consist of method_id, args0, arg1, ... argN. Method id consists
// of 4 bytes and arguments are all 32 bytes.
// Method ids are created from the first 4 bytes of the hash of the
// methods string signature. (signature = baz(uint32,string32))
func (abi ABI) Pack(name string, args ...interface{}) ([]byte, error) {
// Fetch the ABI of the requested method
if name == "" {
// constructor
arguments, err := abi.Constructor.Inputs.Pack(args...)
if err != nil {
return nil, err
}
return arguments, nil
}
method, exist := abi.Methods[name]
if !exist {
return nil, fmt.Errorf("method '%s' not found", name)
}
arguments, err := method.Inputs.Pack(args...)
if err != nil {
return nil, err
}
// Pack up the method ID too if not a constructor and return
return append(method.Id(), arguments...), nil
}
// Unpack output in v according to the abi specification
func (abi ABI) Unpack(v interface{}, name string, output []byte) (err error) {
if len(output) == 0 {
return fmt.Errorf("abi: unmarshalling empty output")
}
// since there can't be naming collisions with contracts and events,
// we need to decide whether we're calling a method or an event
if method, ok := abi.Methods[name]; ok {
if len(output)%32 != 0 {
return fmt.Errorf("abi: improperly formatted output")
}
return method.Outputs.Unpack(v, output)
} else if event, ok := abi.Events[name]; ok {
return event.Inputs.Unpack(v, output)
}
return fmt.Errorf("abi: could not locate named method or event")
}
// UnmarshalJSON implements json.Unmarshaler interface
func (abi *ABI) UnmarshalJSON(data []byte) error {
var fields []struct {
Type string
Name string
Constant bool
Anonymous bool
Inputs []Argument
Outputs []Argument
}
if err := json.Unmarshal(data, &fields); err != nil {
return err
}
abi.Methods = make(map[string]Method)
abi.Events = make(map[string]Event)
for _, field := range fields {
switch field.Type {
case "constructor":
abi.Constructor = Method{
Inputs: field.Inputs,
}
// empty defaults to function according to the abi spec
case "function", "":
abi.Methods[field.Name] = Method{
Name: field.Name,
Const: field.Constant,
Inputs: field.Inputs,
Outputs: field.Outputs,
}
case "event":
abi.Events[field.Name] = Event{
Name: field.Name,
Anonymous: field.Anonymous,
Inputs: field.Inputs,
}
}
}
return nil
}
// MethodById looks up a method by the 4-byte id
// returns nil if none found
func (abi *ABI) MethodById(sigdata []byte) *Method {
for _, method := range abi.Methods {
if bytes.Equal(method.Id(), sigdata[:4]) {
return &method
}
}
return nil
}

698
accounts/abi/abi_test.go Normal file
View File

@@ -0,0 +1,698 @@
// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package abi
import (
"bytes"
"encoding/hex"
"fmt"
"log"
"math/big"
"strings"
"testing"
"reflect"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
)
const jsondata = `
[
{ "type" : "function", "name" : "balance", "constant" : true },
{ "type" : "function", "name" : "send", "constant" : false, "inputs" : [ { "name" : "amount", "type" : "uint256" } ] }
]`
const jsondata2 = `
[
{ "type" : "function", "name" : "balance", "constant" : true },
{ "type" : "function", "name" : "send", "constant" : false, "inputs" : [ { "name" : "amount", "type" : "uint256" } ] },
{ "type" : "function", "name" : "test", "constant" : false, "inputs" : [ { "name" : "number", "type" : "uint32" } ] },
{ "type" : "function", "name" : "string", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "string" } ] },
{ "type" : "function", "name" : "bool", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "bool" } ] },
{ "type" : "function", "name" : "address", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "address" } ] },
{ "type" : "function", "name" : "uint64[2]", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "uint64[2]" } ] },
{ "type" : "function", "name" : "uint64[]", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "uint64[]" } ] },
{ "type" : "function", "name" : "foo", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "uint32" } ] },
{ "type" : "function", "name" : "bar", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "uint32" }, { "name" : "string", "type" : "uint16" } ] },
{ "type" : "function", "name" : "slice", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "uint32[2]" } ] },
{ "type" : "function", "name" : "slice256", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "uint256[2]" } ] },
{ "type" : "function", "name" : "sliceAddress", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "address[]" } ] },
{ "type" : "function", "name" : "sliceMultiAddress", "constant" : false, "inputs" : [ { "name" : "a", "type" : "address[]" }, { "name" : "b", "type" : "address[]" } ] }
]`
func TestReader(t *testing.T) {
Uint256, _ := NewType("uint256")
exp := ABI{
Methods: map[string]Method{
"balance": {
"balance", true, nil, nil,
},
"send": {
"send", false, []Argument{
{"amount", Uint256, false},
}, nil,
},
},
}
abi, err := JSON(strings.NewReader(jsondata))
if err != nil {
t.Error(err)
}
// deep equal fails for some reason
for name, expM := range exp.Methods {
gotM, exist := abi.Methods[name]
if !exist {
t.Errorf("Missing expected method %v", name)
}
if !reflect.DeepEqual(gotM, expM) {
t.Errorf("\nGot abi method: \n%v\ndoes not match expected method\n%v", gotM, expM)
}
}
for name, gotM := range abi.Methods {
expM, exist := exp.Methods[name]
if !exist {
t.Errorf("Found extra method %v", name)
}
if !reflect.DeepEqual(gotM, expM) {
t.Errorf("\nGot abi method: \n%v\ndoes not match expected method\n%v", gotM, expM)
}
}
}
func TestTestNumbers(t *testing.T) {
abi, err := JSON(strings.NewReader(jsondata2))
if err != nil {
t.Error(err)
t.FailNow()
}
if _, err := abi.Pack("balance"); err != nil {
t.Error(err)
}
if _, err := abi.Pack("balance", 1); err == nil {
t.Error("expected error for balance(1)")
}
if _, err := abi.Pack("doesntexist", nil); err == nil {
t.Errorf("doesntexist shouldn't exist")
}
if _, err := abi.Pack("doesntexist", 1); err == nil {
t.Errorf("doesntexist(1) shouldn't exist")
}
if _, err := abi.Pack("send", big.NewInt(1000)); err != nil {
t.Error(err)
}
i := new(int)
*i = 1000
if _, err := abi.Pack("send", i); err == nil {
t.Errorf("expected send( ptr ) to throw, requires *big.Int instead of *int")
}
if _, err := abi.Pack("test", uint32(1000)); err != nil {
t.Error(err)
}
}
func TestTestString(t *testing.T) {
abi, err := JSON(strings.NewReader(jsondata2))
if err != nil {
t.Error(err)
t.FailNow()
}
if _, err := abi.Pack("string", "hello world"); err != nil {
t.Error(err)
}
}
func TestTestBool(t *testing.T) {
abi, err := JSON(strings.NewReader(jsondata2))
if err != nil {
t.Error(err)
t.FailNow()
}
if _, err := abi.Pack("bool", true); err != nil {
t.Error(err)
}
}
func TestTestSlice(t *testing.T) {
abi, err := JSON(strings.NewReader(jsondata2))
if err != nil {
t.Error(err)
t.FailNow()
}
slice := make([]uint64, 2)
if _, err := abi.Pack("uint64[2]", slice); err != nil {
t.Error(err)
}
if _, err := abi.Pack("uint64[]", slice); err != nil {
t.Error(err)
}
}
func TestMethodSignature(t *testing.T) {
String, _ := NewType("string")
m := Method{"foo", false, []Argument{{"bar", String, false}, {"baz", String, false}}, nil}
exp := "foo(string,string)"
if m.Sig() != exp {
t.Error("signature mismatch", exp, "!=", m.Sig())
}
idexp := crypto.Keccak256([]byte(exp))[:4]
if !bytes.Equal(m.Id(), idexp) {
t.Errorf("expected ids to match %x != %x", m.Id(), idexp)
}
uintt, _ := NewType("uint256")
m = Method{"foo", false, []Argument{{"bar", uintt, false}}, nil}
exp = "foo(uint256)"
if m.Sig() != exp {
t.Error("signature mismatch", exp, "!=", m.Sig())
}
}
func TestMultiPack(t *testing.T) {
abi, err := JSON(strings.NewReader(jsondata2))
if err != nil {
t.Error(err)
t.FailNow()
}
sig := crypto.Keccak256([]byte("bar(uint32,uint16)"))[:4]
sig = append(sig, make([]byte, 64)...)
sig[35] = 10
sig[67] = 11
packed, err := abi.Pack("bar", uint32(10), uint16(11))
if err != nil {
t.Error(err)
t.FailNow()
}
if !bytes.Equal(packed, sig) {
t.Errorf("expected %x got %x", sig, packed)
}
}
func ExampleJSON() {
const definition = `[{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isBar","outputs":[{"name":"","type":"bool"}],"type":"function"}]`
abi, err := JSON(strings.NewReader(definition))
if err != nil {
log.Fatalln(err)
}
out, err := abi.Pack("isBar", common.HexToAddress("01"))
if err != nil {
log.Fatalln(err)
}
fmt.Printf("%x\n", out)
// Output:
// 1f2c40920000000000000000000000000000000000000000000000000000000000000001
}
func TestInputVariableInputLength(t *testing.T) {
const definition = `[
{ "type" : "function", "name" : "strOne", "constant" : true, "inputs" : [ { "name" : "str", "type" : "string" } ] },
{ "type" : "function", "name" : "bytesOne", "constant" : true, "inputs" : [ { "name" : "str", "type" : "bytes" } ] },
{ "type" : "function", "name" : "strTwo", "constant" : true, "inputs" : [ { "name" : "str", "type" : "string" }, { "name" : "str1", "type" : "string" } ] }
]`
abi, err := JSON(strings.NewReader(definition))
if err != nil {
t.Fatal(err)
}
// test one string
strin := "hello world"
strpack, err := abi.Pack("strOne", strin)
if err != nil {
t.Error(err)
}
offset := make([]byte, 32)
offset[31] = 32
length := make([]byte, 32)
length[31] = byte(len(strin))
value := common.RightPadBytes([]byte(strin), 32)
exp := append(offset, append(length, value...)...)
// ignore first 4 bytes of the output. This is the function identifier
strpack = strpack[4:]
if !bytes.Equal(strpack, exp) {
t.Errorf("expected %x, got %x\n", exp, strpack)
}
// test one bytes
btspack, err := abi.Pack("bytesOne", []byte(strin))
if err != nil {
t.Error(err)
}
// ignore first 4 bytes of the output. This is the function identifier
btspack = btspack[4:]
if !bytes.Equal(btspack, exp) {
t.Errorf("expected %x, got %x\n", exp, btspack)
}
// test two strings
str1 := "hello"
str2 := "world"
str2pack, err := abi.Pack("strTwo", str1, str2)
if err != nil {
t.Error(err)
}
offset1 := make([]byte, 32)
offset1[31] = 64
length1 := make([]byte, 32)
length1[31] = byte(len(str1))
value1 := common.RightPadBytes([]byte(str1), 32)
offset2 := make([]byte, 32)
offset2[31] = 128
length2 := make([]byte, 32)
length2[31] = byte(len(str2))
value2 := common.RightPadBytes([]byte(str2), 32)
exp2 := append(offset1, offset2...)
exp2 = append(exp2, append(length1, value1...)...)
exp2 = append(exp2, append(length2, value2...)...)
// ignore first 4 bytes of the output. This is the function identifier
str2pack = str2pack[4:]
if !bytes.Equal(str2pack, exp2) {
t.Errorf("expected %x, got %x\n", exp, str2pack)
}
// test two strings, first > 32, second < 32
str1 = strings.Repeat("a", 33)
str2pack, err = abi.Pack("strTwo", str1, str2)
if err != nil {
t.Error(err)
}
offset1 = make([]byte, 32)
offset1[31] = 64
length1 = make([]byte, 32)
length1[31] = byte(len(str1))
value1 = common.RightPadBytes([]byte(str1), 64)
offset2[31] = 160
exp2 = append(offset1, offset2...)
exp2 = append(exp2, append(length1, value1...)...)
exp2 = append(exp2, append(length2, value2...)...)
// ignore first 4 bytes of the output. This is the function identifier
str2pack = str2pack[4:]
if !bytes.Equal(str2pack, exp2) {
t.Errorf("expected %x, got %x\n", exp, str2pack)
}
// test two strings, first > 32, second >32
str1 = strings.Repeat("a", 33)
str2 = strings.Repeat("a", 33)
str2pack, err = abi.Pack("strTwo", str1, str2)
if err != nil {
t.Error(err)
}
offset1 = make([]byte, 32)
offset1[31] = 64
length1 = make([]byte, 32)
length1[31] = byte(len(str1))
value1 = common.RightPadBytes([]byte(str1), 64)
offset2 = make([]byte, 32)
offset2[31] = 160
length2 = make([]byte, 32)
length2[31] = byte(len(str2))
value2 = common.RightPadBytes([]byte(str2), 64)
exp2 = append(offset1, offset2...)
exp2 = append(exp2, append(length1, value1...)...)
exp2 = append(exp2, append(length2, value2...)...)
// ignore first 4 bytes of the output. This is the function identifier
str2pack = str2pack[4:]
if !bytes.Equal(str2pack, exp2) {
t.Errorf("expected %x, got %x\n", exp, str2pack)
}
}
func TestInputFixedArrayAndVariableInputLength(t *testing.T) {
const definition = `[
{ "type" : "function", "name" : "fixedArrStr", "constant" : true, "inputs" : [ { "name" : "str", "type" : "string" }, { "name" : "fixedArr", "type" : "uint256[2]" } ] },
{ "type" : "function", "name" : "fixedArrBytes", "constant" : true, "inputs" : [ { "name" : "str", "type" : "bytes" }, { "name" : "fixedArr", "type" : "uint256[2]" } ] },
{ "type" : "function", "name" : "mixedArrStr", "constant" : true, "inputs" : [ { "name" : "str", "type" : "string" }, { "name" : "fixedArr", "type": "uint256[2]" }, { "name" : "dynArr", "type": "uint256[]" } ] },
{ "type" : "function", "name" : "doubleFixedArrStr", "constant" : true, "inputs" : [ { "name" : "str", "type" : "string" }, { "name" : "fixedArr1", "type": "uint256[2]" }, { "name" : "fixedArr2", "type": "uint256[3]" } ] },
{ "type" : "function", "name" : "multipleMixedArrStr", "constant" : true, "inputs" : [ { "name" : "str", "type" : "string" }, { "name" : "fixedArr1", "type": "uint256[2]" }, { "name" : "dynArr", "type" : "uint256[]" }, { "name" : "fixedArr2", "type" : "uint256[3]" } ] }
]`
abi, err := JSON(strings.NewReader(definition))
if err != nil {
t.Error(err)
}
// test string, fixed array uint256[2]
strin := "hello world"
arrin := [2]*big.Int{big.NewInt(1), big.NewInt(2)}
fixedArrStrPack, err := abi.Pack("fixedArrStr", strin, arrin)
if err != nil {
t.Error(err)
}
// generate expected output
offset := make([]byte, 32)
offset[31] = 96
length := make([]byte, 32)
length[31] = byte(len(strin))
strvalue := common.RightPadBytes([]byte(strin), 32)
arrinvalue1 := common.LeftPadBytes(arrin[0].Bytes(), 32)
arrinvalue2 := common.LeftPadBytes(arrin[1].Bytes(), 32)
exp := append(offset, arrinvalue1...)
exp = append(exp, arrinvalue2...)
exp = append(exp, append(length, strvalue...)...)
// ignore first 4 bytes of the output. This is the function identifier
fixedArrStrPack = fixedArrStrPack[4:]
if !bytes.Equal(fixedArrStrPack, exp) {
t.Errorf("expected %x, got %x\n", exp, fixedArrStrPack)
}
// test byte array, fixed array uint256[2]
bytesin := []byte(strin)
arrin = [2]*big.Int{big.NewInt(1), big.NewInt(2)}
fixedArrBytesPack, err := abi.Pack("fixedArrBytes", bytesin, arrin)
if err != nil {
t.Error(err)
}
// generate expected output
offset = make([]byte, 32)
offset[31] = 96
length = make([]byte, 32)
length[31] = byte(len(strin))
strvalue = common.RightPadBytes([]byte(strin), 32)
arrinvalue1 = common.LeftPadBytes(arrin[0].Bytes(), 32)
arrinvalue2 = common.LeftPadBytes(arrin[1].Bytes(), 32)
exp = append(offset, arrinvalue1...)
exp = append(exp, arrinvalue2...)
exp = append(exp, append(length, strvalue...)...)
// ignore first 4 bytes of the output. This is the function identifier
fixedArrBytesPack = fixedArrBytesPack[4:]
if !bytes.Equal(fixedArrBytesPack, exp) {
t.Errorf("expected %x, got %x\n", exp, fixedArrBytesPack)
}
// test string, fixed array uint256[2], dynamic array uint256[]
strin = "hello world"
fixedarrin := [2]*big.Int{big.NewInt(1), big.NewInt(2)}
dynarrin := []*big.Int{big.NewInt(1), big.NewInt(2), big.NewInt(3)}
mixedArrStrPack, err := abi.Pack("mixedArrStr", strin, fixedarrin, dynarrin)
if err != nil {
t.Error(err)
}
// generate expected output
stroffset := make([]byte, 32)
stroffset[31] = 128
strlength := make([]byte, 32)
strlength[31] = byte(len(strin))
strvalue = common.RightPadBytes([]byte(strin), 32)
fixedarrinvalue1 := common.LeftPadBytes(fixedarrin[0].Bytes(), 32)
fixedarrinvalue2 := common.LeftPadBytes(fixedarrin[1].Bytes(), 32)
dynarroffset := make([]byte, 32)
dynarroffset[31] = byte(160 + ((len(strin)/32)+1)*32)
dynarrlength := make([]byte, 32)
dynarrlength[31] = byte(len(dynarrin))
dynarrinvalue1 := common.LeftPadBytes(dynarrin[0].Bytes(), 32)
dynarrinvalue2 := common.LeftPadBytes(dynarrin[1].Bytes(), 32)
dynarrinvalue3 := common.LeftPadBytes(dynarrin[2].Bytes(), 32)
exp = append(stroffset, fixedarrinvalue1...)
exp = append(exp, fixedarrinvalue2...)
exp = append(exp, dynarroffset...)
exp = append(exp, append(strlength, strvalue...)...)
dynarrarg := append(dynarrlength, dynarrinvalue1...)
dynarrarg = append(dynarrarg, dynarrinvalue2...)
dynarrarg = append(dynarrarg, dynarrinvalue3...)
exp = append(exp, dynarrarg...)
// ignore first 4 bytes of the output. This is the function identifier
mixedArrStrPack = mixedArrStrPack[4:]
if !bytes.Equal(mixedArrStrPack, exp) {
t.Errorf("expected %x, got %x\n", exp, mixedArrStrPack)
}
// test string, fixed array uint256[2], fixed array uint256[3]
strin = "hello world"
fixedarrin1 := [2]*big.Int{big.NewInt(1), big.NewInt(2)}
fixedarrin2 := [3]*big.Int{big.NewInt(1), big.NewInt(2), big.NewInt(3)}
doubleFixedArrStrPack, err := abi.Pack("doubleFixedArrStr", strin, fixedarrin1, fixedarrin2)
if err != nil {
t.Error(err)
}
// generate expected output
stroffset = make([]byte, 32)
stroffset[31] = 192
strlength = make([]byte, 32)
strlength[31] = byte(len(strin))
strvalue = common.RightPadBytes([]byte(strin), 32)
fixedarrin1value1 := common.LeftPadBytes(fixedarrin1[0].Bytes(), 32)
fixedarrin1value2 := common.LeftPadBytes(fixedarrin1[1].Bytes(), 32)
fixedarrin2value1 := common.LeftPadBytes(fixedarrin2[0].Bytes(), 32)
fixedarrin2value2 := common.LeftPadBytes(fixedarrin2[1].Bytes(), 32)
fixedarrin2value3 := common.LeftPadBytes(fixedarrin2[2].Bytes(), 32)
exp = append(stroffset, fixedarrin1value1...)
exp = append(exp, fixedarrin1value2...)
exp = append(exp, fixedarrin2value1...)
exp = append(exp, fixedarrin2value2...)
exp = append(exp, fixedarrin2value3...)
exp = append(exp, append(strlength, strvalue...)...)
// ignore first 4 bytes of the output. This is the function identifier
doubleFixedArrStrPack = doubleFixedArrStrPack[4:]
if !bytes.Equal(doubleFixedArrStrPack, exp) {
t.Errorf("expected %x, got %x\n", exp, doubleFixedArrStrPack)
}
// test string, fixed array uint256[2], dynamic array uint256[], fixed array uint256[3]
strin = "hello world"
fixedarrin1 = [2]*big.Int{big.NewInt(1), big.NewInt(2)}
dynarrin = []*big.Int{big.NewInt(1), big.NewInt(2)}
fixedarrin2 = [3]*big.Int{big.NewInt(1), big.NewInt(2), big.NewInt(3)}
multipleMixedArrStrPack, err := abi.Pack("multipleMixedArrStr", strin, fixedarrin1, dynarrin, fixedarrin2)
if err != nil {
t.Error(err)
}
// generate expected output
stroffset = make([]byte, 32)
stroffset[31] = 224
strlength = make([]byte, 32)
strlength[31] = byte(len(strin))
strvalue = common.RightPadBytes([]byte(strin), 32)
fixedarrin1value1 = common.LeftPadBytes(fixedarrin1[0].Bytes(), 32)
fixedarrin1value2 = common.LeftPadBytes(fixedarrin1[1].Bytes(), 32)
dynarroffset = U256(big.NewInt(int64(256 + ((len(strin)/32)+1)*32)))
dynarrlength = make([]byte, 32)
dynarrlength[31] = byte(len(dynarrin))
dynarrinvalue1 = common.LeftPadBytes(dynarrin[0].Bytes(), 32)
dynarrinvalue2 = common.LeftPadBytes(dynarrin[1].Bytes(), 32)
fixedarrin2value1 = common.LeftPadBytes(fixedarrin2[0].Bytes(), 32)
fixedarrin2value2 = common.LeftPadBytes(fixedarrin2[1].Bytes(), 32)
fixedarrin2value3 = common.LeftPadBytes(fixedarrin2[2].Bytes(), 32)
exp = append(stroffset, fixedarrin1value1...)
exp = append(exp, fixedarrin1value2...)
exp = append(exp, dynarroffset...)
exp = append(exp, fixedarrin2value1...)
exp = append(exp, fixedarrin2value2...)
exp = append(exp, fixedarrin2value3...)
exp = append(exp, append(strlength, strvalue...)...)
dynarrarg = append(dynarrlength, dynarrinvalue1...)
dynarrarg = append(dynarrarg, dynarrinvalue2...)
exp = append(exp, dynarrarg...)
// ignore first 4 bytes of the output. This is the function identifier
multipleMixedArrStrPack = multipleMixedArrStrPack[4:]
if !bytes.Equal(multipleMixedArrStrPack, exp) {
t.Errorf("expected %x, got %x\n", exp, multipleMixedArrStrPack)
}
}
func TestDefaultFunctionParsing(t *testing.T) {
const definition = `[{ "name" : "balance" }]`
abi, err := JSON(strings.NewReader(definition))
if err != nil {
t.Fatal(err)
}
if _, ok := abi.Methods["balance"]; !ok {
t.Error("expected 'balance' to be present")
}
}
func TestBareEvents(t *testing.T) {
const definition = `[
{ "type" : "event", "name" : "balance" },
{ "type" : "event", "name" : "anon", "anonymous" : true},
{ "type" : "event", "name" : "args", "inputs" : [{ "indexed":false, "name":"arg0", "type":"uint256" }, { "indexed":true, "name":"arg1", "type":"address" }] }
]`
arg0, _ := NewType("uint256")
arg1, _ := NewType("address")
expectedEvents := map[string]struct {
Anonymous bool
Args []Argument
}{
"balance": {false, nil},
"anon": {true, nil},
"args": {false, []Argument{
{Name: "arg0", Type: arg0, Indexed: false},
{Name: "arg1", Type: arg1, Indexed: true},
}},
}
abi, err := JSON(strings.NewReader(definition))
if err != nil {
t.Fatal(err)
}
if len(abi.Events) != len(expectedEvents) {
t.Fatalf("invalid number of events after parsing, want %d, got %d", len(expectedEvents), len(abi.Events))
}
for name, exp := range expectedEvents {
got, ok := abi.Events[name]
if !ok {
t.Errorf("could not found event %s", name)
continue
}
if got.Anonymous != exp.Anonymous {
t.Errorf("invalid anonymous indication for event %s, want %v, got %v", name, exp.Anonymous, got.Anonymous)
}
if len(got.Inputs) != len(exp.Args) {
t.Errorf("invalid number of args, want %d, got %d", len(exp.Args), len(got.Inputs))
continue
}
for i, arg := range exp.Args {
if arg.Name != got.Inputs[i].Name {
t.Errorf("events[%s].Input[%d] has an invalid name, want %s, got %s", name, i, arg.Name, got.Inputs[i].Name)
}
if arg.Indexed != got.Inputs[i].Indexed {
t.Errorf("events[%s].Input[%d] has an invalid indexed indication, want %v, got %v", name, i, arg.Indexed, got.Inputs[i].Indexed)
}
if arg.Type.T != got.Inputs[i].Type.T {
t.Errorf("events[%s].Input[%d] has an invalid type, want %x, got %x", name, i, arg.Type.T, got.Inputs[i].Type.T)
}
}
}
}
// TestUnpackEvent is based on this contract:
// contract T {
// event received(address sender, uint amount, bytes memo);
// function receive(bytes memo) external payable {
// received(msg.sender, msg.value, memo);
// }
// }
// When receive("X") is called with sender 0x00... and value 1, it produces this tx receipt:
// receipt{status=1 cgas=23949 bloom=00000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000040200000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 logs=[log: b6818c8064f645cd82d99b59a1a267d6d61117ef [75fd880d39c1daf53b6547ab6cb59451fc6452d27caa90e5b6649dd8293b9eed] 000000000000000000000000376c47978271565f56deb45495afa69e59c16ab200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000158 9ae378b6d4409eada347a5dc0c180f186cb62dc68fcc0f043425eb917335aa28 0 95d429d309bb9d753954195fe2d69bd140b4ae731b9b5b605c34323de162cf00 0]}
func TestUnpackEvent(t *testing.T) {
const abiJSON = `[{"constant":false,"inputs":[{"name":"memo","type":"bytes"}],"name":"receive","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"memo","type":"bytes"}],"name":"received","type":"event"}]`
abi, err := JSON(strings.NewReader(abiJSON))
if err != nil {
t.Fatal(err)
}
const hexdata = `000000000000000000000000376c47978271565f56deb45495afa69e59c16ab200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000158`
data, err := hex.DecodeString(hexdata)
if err != nil {
t.Fatal(err)
}
if len(data)%32 == 0 {
t.Errorf("len(data) is %d, want a non-multiple of 32", len(data))
}
type ReceivedEvent struct {
Address common.Address
Amount *big.Int
Memo []byte
}
var ev ReceivedEvent
err = abi.Unpack(&ev, "received", data)
if err != nil {
t.Error(err)
} else {
t.Logf("len(data): %d; received event: %+v", len(data), ev)
}
}
func TestABI_MethodById(t *testing.T) {
const abiJSON = `[
{"type":"function","name":"receive","constant":false,"inputs":[{"name":"memo","type":"bytes"}],"outputs":[],"payable":true,"stateMutability":"payable"},
{"type":"event","name":"received","anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"memo","type":"bytes"}]},
{"type":"function","name":"fixedArrStr","constant":true,"inputs":[{"name":"str","type":"string"},{"name":"fixedArr","type":"uint256[2]"}]},
{"type":"function","name":"fixedArrBytes","constant":true,"inputs":[{"name":"str","type":"bytes"},{"name":"fixedArr","type":"uint256[2]"}]},
{"type":"function","name":"mixedArrStr","constant":true,"inputs":[{"name":"str","type":"string"},{"name":"fixedArr","type":"uint256[2]"},{"name":"dynArr","type":"uint256[]"}]},
{"type":"function","name":"doubleFixedArrStr","constant":true,"inputs":[{"name":"str","type":"string"},{"name":"fixedArr1","type":"uint256[2]"},{"name":"fixedArr2","type":"uint256[3]"}]},
{"type":"function","name":"multipleMixedArrStr","constant":true,"inputs":[{"name":"str","type":"string"},{"name":"fixedArr1","type":"uint256[2]"},{"name":"dynArr","type":"uint256[]"},{"name":"fixedArr2","type":"uint256[3]"}]},
{"type":"function","name":"balance","constant":true},
{"type":"function","name":"send","constant":false,"inputs":[{"name":"amount","type":"uint256"}]},
{"type":"function","name":"test","constant":false,"inputs":[{"name":"number","type":"uint32"}]},
{"type":"function","name":"string","constant":false,"inputs":[{"name":"inputs","type":"string"}]},
{"type":"function","name":"bool","constant":false,"inputs":[{"name":"inputs","type":"bool"}]},
{"type":"function","name":"address","constant":false,"inputs":[{"name":"inputs","type":"address"}]},
{"type":"function","name":"uint64[2]","constant":false,"inputs":[{"name":"inputs","type":"uint64[2]"}]},
{"type":"function","name":"uint64[]","constant":false,"inputs":[{"name":"inputs","type":"uint64[]"}]},
{"type":"function","name":"foo","constant":false,"inputs":[{"name":"inputs","type":"uint32"}]},
{"type":"function","name":"bar","constant":false,"inputs":[{"name":"inputs","type":"uint32"},{"name":"string","type":"uint16"}]},
{"type":"function","name":"_slice","constant":false,"inputs":[{"name":"inputs","type":"uint32[2]"}]},
{"type":"function","name":"__slice256","constant":false,"inputs":[{"name":"inputs","type":"uint256[2]"}]},
{"type":"function","name":"sliceAddress","constant":false,"inputs":[{"name":"inputs","type":"address[]"}]},
{"type":"function","name":"sliceMultiAddress","constant":false,"inputs":[{"name":"a","type":"address[]"},{"name":"b","type":"address[]"}]}
]
`
abi, err := JSON(strings.NewReader(abiJSON))
if err != nil {
t.Fatal(err)
}
for name, m := range abi.Methods {
a := fmt.Sprintf("%v", m)
b := fmt.Sprintf("%v", abi.MethodById(m.Id()))
if a != b {
t.Errorf("Method %v (id %v) not 'findable' by id in ABI", name, common.ToHex(m.Id()))
}
}
}

250
accounts/abi/argument.go Normal file
View File

@@ -0,0 +1,250 @@
// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package abi
import (
"encoding/json"
"fmt"
"reflect"
"strings"
)
// Argument holds the name of the argument and the corresponding type.
// Types are used when packing and testing arguments.
type Argument struct {
Name string
Type Type
Indexed bool // indexed is only used by events
}
type Arguments []Argument
// UnmarshalJSON implements json.Unmarshaler interface
func (argument *Argument) UnmarshalJSON(data []byte) error {
var extarg struct {
Name string
Type string
Indexed bool
}
err := json.Unmarshal(data, &extarg)
if err != nil {
return fmt.Errorf("argument json err: %v", err)
}
argument.Type, err = NewType(extarg.Type)
if err != nil {
return err
}
argument.Name = extarg.Name
argument.Indexed = extarg.Indexed
return nil
}
// LengthNonIndexed returns the number of arguments when not counting 'indexed' ones. Only events
// can ever have 'indexed' arguments, it should always be false on arguments for method input/output
func (arguments Arguments) LengthNonIndexed() int {
out := 0
for _, arg := range arguments {
if !arg.Indexed {
out++
}
}
return out
}
// isTuple returns true for non-atomic constructs, like (uint,uint) or uint[]
func (arguments Arguments) isTuple() bool {
return len(arguments) > 1
}
// Unpack performs the operation hexdata -> Go format
func (arguments Arguments) Unpack(v interface{}, data []byte) error {
if arguments.isTuple() {
return arguments.unpackTuple(v, data)
}
return arguments.unpackAtomic(v, data)
}
func (arguments Arguments) unpackTuple(v interface{}, output []byte) error {
// make sure the passed value is arguments pointer
valueOf := reflect.ValueOf(v)
if reflect.Ptr != valueOf.Kind() {
return fmt.Errorf("abi: Unpack(non-pointer %T)", v)
}
var (
value = valueOf.Elem()
typ = value.Type()
kind = value.Kind()
)
if err := requireUnpackKind(value, typ, kind, arguments); err != nil {
return err
}
// If the output interface is a struct, make sure names don't collide
if kind == reflect.Struct {
exists := make(map[string]bool)
for _, arg := range arguments {
field := capitalise(arg.Name)
if field == "" {
return fmt.Errorf("abi: purely underscored output cannot unpack to struct")
}
if exists[field] {
return fmt.Errorf("abi: multiple outputs mapping to the same struct field '%s'", field)
}
exists[field] = true
}
}
// `i` counts the nonindexed arguments.
// `j` counts the number of complex types.
// both `i` and `j` are used to to correctly compute `data` offset.
i, j := -1, 0
for _, arg := range arguments {
if arg.Indexed {
// can't read, continue
continue
}
i++
marshalledValue, err := toGoType((i+j)*32, arg.Type, output)
if err != nil {
return err
}
if arg.Type.T == ArrayTy {
// combined index ('i' + 'j') need to be adjusted only by size of array, thus
// we need to decrement 'j' because 'i' was incremented
j += arg.Type.Size - 1
}
reflectValue := reflect.ValueOf(marshalledValue)
switch kind {
case reflect.Struct:
name := capitalise(arg.Name)
for j := 0; j < typ.NumField(); j++ {
// TODO read tags: `abi:"fieldName"`
if typ.Field(j).Name == name {
if err := set(value.Field(j), reflectValue, arg); err != nil {
return err
}
}
}
case reflect.Slice, reflect.Array:
if value.Len() < i {
return fmt.Errorf("abi: insufficient number of arguments for unpack, want %d, got %d", len(arguments), value.Len())
}
v := value.Index(i)
if err := requireAssignable(v, reflectValue); err != nil {
return err
}
if err := set(v.Elem(), reflectValue, arg); err != nil {
return err
}
default:
return fmt.Errorf("abi:[2] cannot unmarshal tuple in to %v", typ)
}
}
return nil
}
// unpackAtomic unpacks ( hexdata -> go ) a single value
func (arguments Arguments) unpackAtomic(v interface{}, output []byte) error {
// make sure the passed value is arguments pointer
valueOf := reflect.ValueOf(v)
if reflect.Ptr != valueOf.Kind() {
return fmt.Errorf("abi: Unpack(non-pointer %T)", v)
}
arg := arguments[0]
if arg.Indexed {
return fmt.Errorf("abi: attempting to unpack indexed variable into element.")
}
value := valueOf.Elem()
marshalledValue, err := toGoType(0, arg.Type, output)
if err != nil {
return err
}
return set(value, reflect.ValueOf(marshalledValue), arg)
}
// Unpack performs the operation Go format -> Hexdata
func (arguments Arguments) Pack(args ...interface{}) ([]byte, error) {
// Make sure arguments match up and pack them
abiArgs := arguments
if len(args) != len(abiArgs) {
return nil, fmt.Errorf("argument count mismatch: %d for %d", len(args), len(abiArgs))
}
// variable input is the output appended at the end of packed
// output. This is used for strings and bytes types input.
var variableInput []byte
// input offset is the bytes offset for packed output
inputOffset := 0
for _, abiArg := range abiArgs {
if abiArg.Type.T == ArrayTy {
inputOffset += 32 * abiArg.Type.Size
} else {
inputOffset += 32
}
}
var ret []byte
for i, a := range args {
input := abiArgs[i]
// pack the input
packed, err := input.Type.pack(reflect.ValueOf(a))
if err != nil {
return nil, err
}
// check for a slice type (string, bytes, slice)
if input.Type.requiresLengthPrefix() {
// calculate the offset
offset := inputOffset + len(variableInput)
// set the offset
ret = append(ret, packNum(reflect.ValueOf(offset))...)
// Append the packed output to the variable input. The variable input
// will be appended at the end of the input.
variableInput = append(variableInput, packed...)
} else {
// append the packed value to the input
ret = append(ret, packed...)
}
}
// append the variable input at the end of the packed input
ret = append(ret, variableInput...)
return ret, nil
}
// capitalise makes the first character of a string upper case, also removing any
// prefixing underscores from the variable names.
func capitalise(input string) string {
for len(input) > 0 && input[0] == '_' {
input = input[1:]
}
if len(input) == 0 {
return ""
}
return strings.ToUpper(input[:1]) + input[1:]
}

62
accounts/abi/bind/auth.go Normal file
View File

@@ -0,0 +1,62 @@
// Copyright 2016 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package bind
import (
"crypto/ecdsa"
"errors"
"io"
"io/ioutil"
"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"
)
// NewTransactor is a utility method to easily create a transaction signer from
// an encrypted json key stream and the associated passphrase.
func NewTransactor(keyin io.Reader, passphrase string) (*TransactOpts, error) {
json, err := ioutil.ReadAll(keyin)
if err != nil {
return nil, err
}
key, err := keystore.DecryptKey(json, passphrase)
if err != nil {
return nil, err
}
return NewKeyedTransactor(key.PrivateKey), nil
}
// NewKeyedTransactor is a utility method to easily create a transaction signer
// from a single private key.
func NewKeyedTransactor(key *ecdsa.PrivateKey) *TransactOpts {
keyAddr := crypto.PubkeyToAddress(key.PublicKey)
return &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)
if err != nil {
return nil, err
}
return tx.WithSignature(signer, signature)
},
}
}

View File

@@ -0,0 +1,112 @@
// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package bind
import (
"context"
"errors"
"math/big"
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
)
var (
// ErrNoCode is returned by call and transact operations for which the requested
// recipient contract to operate on does not exist in the state db or does not
// have any code associated with it (i.e. suicided).
ErrNoCode = errors.New("no contract code at given address")
// This error is raised when attempting to perform a pending state action
// on a backend that doesn't implement PendingContractCaller.
ErrNoPendingState = errors.New("backend does not support pending state")
// This error is returned by WaitDeployed if contract creation leaves an
// empty contract behind.
ErrNoCodeAfterDeploy = errors.New("no contract code after deployment")
)
// ContractCaller defines the methods needed to allow operating with contract on a read
// only basis.
type ContractCaller interface {
// CodeAt returns the code of the given account. This is needed to differentiate
// between contract internal errors and the local chain being out of sync.
CodeAt(ctx context.Context, contract common.Address, blockNumber *big.Int) ([]byte, error)
// ContractCall executes an Ethereum contract call with the specified data as the
// input.
CallContract(ctx context.Context, call ethereum.CallMsg, blockNumber *big.Int) ([]byte, error)
}
// PendingContractCaller defines methods to perform contract calls on the pending state.
// Call will try to discover this interface when access to the pending state is requested.
// If the backend does not support the pending state, Call returns ErrNoPendingState.
type PendingContractCaller interface {
// PendingCodeAt returns the code of the given account in the pending state.
PendingCodeAt(ctx context.Context, contract common.Address) ([]byte, error)
// PendingCallContract executes an Ethereum contract call against the pending state.
PendingCallContract(ctx context.Context, call ethereum.CallMsg) ([]byte, error)
}
// ContractTransactor defines the methods needed to allow operating with contract
// on a write only basis. Beside the transacting method, the remainder are helpers
// used when the user does not provide some needed values, but rather leaves it up
// to the transactor to decide.
type ContractTransactor interface {
// PendingCodeAt returns the code of the given account in the pending state.
PendingCodeAt(ctx context.Context, account common.Address) ([]byte, error)
// PendingNonceAt retrieves the current pending nonce associated with an account.
PendingNonceAt(ctx context.Context, account common.Address) (uint64, error)
// SuggestGasPrice retrieves the currently suggested gas price to allow a timely
// execution of a transaction.
SuggestGasPrice(ctx context.Context) (*big.Int, error)
// EstimateGas tries to estimate the gas needed to execute a specific
// transaction based on the current pending state of the backend blockchain.
// There is no guarantee that this is the true gas limit requirement as other
// transactions may be added or removed by miners, but it should provide a basis
// for setting a reasonable default.
EstimateGas(ctx context.Context, call ethereum.CallMsg) (gas uint64, err error)
// SendTransaction injects the transaction into the pending pool for execution.
SendTransaction(ctx context.Context, tx *types.Transaction) error
}
// ContractFilterer defines the methods needed to access log events using one-off
// queries or continuous event subscriptions.
type ContractFilterer interface {
// FilterLogs executes a log filter operation, blocking during execution and
// returning all the results in one batch.
//
// TODO(karalabe): Deprecate when the subscription one can return past data too.
FilterLogs(ctx context.Context, query ethereum.FilterQuery) ([]types.Log, error)
// SubscribeFilterLogs creates a background log filtering operation, returning
// a subscription immediately, which can be used to stream the found events.
SubscribeFilterLogs(ctx context.Context, query ethereum.FilterQuery, ch chan<- types.Log) (ethereum.Subscription, error)
}
// DeployBackend wraps the operations needed by WaitMined and WaitDeployed.
type DeployBackend interface {
TransactionReceipt(ctx context.Context, txHash common.Hash) (*types.Receipt, error)
CodeAt(ctx context.Context, account common.Address, blockNumber *big.Int) ([]byte, error)
}
// ContractBackend defines the methods needed to work with contracts on a read-write basis.
type ContractBackend interface {
ContractCaller
ContractTransactor
ContractFilterer
}

View File

@@ -0,0 +1,454 @@
// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package backends
import (
"context"
"errors"
"fmt"
"math/big"
"sync"
"time"
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/math"
"github.com/ethereum/go-ethereum/consensus/ethash"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/bloombits"
"github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/eth/filters"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/event"
"github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/rpc"
)
// This nil assignment ensures compile time that SimulatedBackend implements bind.ContractBackend.
var _ bind.ContractBackend = (*SimulatedBackend)(nil)
var errBlockNumberUnsupported = errors.New("SimulatedBackend cannot access blocks other than the latest block")
var errGasEstimationFailed = errors.New("gas required exceeds allowance or always failing transaction")
// SimulatedBackend implements bind.ContractBackend, simulating a blockchain in
// the background. Its main purpose is to allow easily testing contract bindings.
type SimulatedBackend struct {
database ethdb.Database // In memory database to store our testing data
blockchain *core.BlockChain // Ethereum blockchain to handle the consensus
mu sync.Mutex
pendingBlock *types.Block // Currently pending block that will be imported on request
pendingState *state.StateDB // Currently pending state that will be the active on on request
events *filters.EventSystem // Event system for filtering log events live
config *params.ChainConfig
}
// NewSimulatedBackend creates a new binding backend using a simulated blockchain
// for testing purposes.
func NewSimulatedBackend(alloc core.GenesisAlloc) *SimulatedBackend {
database, _ := ethdb.NewMemDatabase()
genesis := core.Genesis{Config: params.AllEthashProtocolChanges, Alloc: alloc}
genesis.MustCommit(database)
blockchain, _ := core.NewBlockChain(database, nil, genesis.Config, ethash.NewFaker(), vm.Config{})
backend := &SimulatedBackend{
database: database,
blockchain: blockchain,
config: genesis.Config,
events: filters.NewEventSystem(new(event.TypeMux), &filterBackend{database, blockchain}, false),
}
backend.rollback()
return backend
}
// Commit imports all the pending transactions as a single block and starts a
// fresh new state.
func (b *SimulatedBackend) Commit() {
b.mu.Lock()
defer b.mu.Unlock()
if _, err := b.blockchain.InsertChain([]*types.Block{b.pendingBlock}); err != nil {
panic(err) // This cannot happen unless the simulator is wrong, fail in that case
}
b.rollback()
}
// Rollback aborts all pending transactions, reverting to the last committed state.
func (b *SimulatedBackend) Rollback() {
b.mu.Lock()
defer b.mu.Unlock()
b.rollback()
}
func (b *SimulatedBackend) rollback() {
blocks, _ := core.GenerateChain(b.config, b.blockchain.CurrentBlock(), ethash.NewFaker(), b.database, 1, func(int, *core.BlockGen) {})
statedb, _ := b.blockchain.State()
b.pendingBlock = blocks[0]
b.pendingState, _ = state.New(b.pendingBlock.Root(), statedb.Database())
}
// CodeAt returns the code associated with a certain account in the blockchain.
func (b *SimulatedBackend) CodeAt(ctx context.Context, contract common.Address, blockNumber *big.Int) ([]byte, error) {
b.mu.Lock()
defer b.mu.Unlock()
if blockNumber != nil && blockNumber.Cmp(b.blockchain.CurrentBlock().Number()) != 0 {
return nil, errBlockNumberUnsupported
}
statedb, _ := b.blockchain.State()
return statedb.GetCode(contract), nil
}
// BalanceAt returns the wei balance of a certain account in the blockchain.
func (b *SimulatedBackend) BalanceAt(ctx context.Context, contract common.Address, blockNumber *big.Int) (*big.Int, error) {
b.mu.Lock()
defer b.mu.Unlock()
if blockNumber != nil && blockNumber.Cmp(b.blockchain.CurrentBlock().Number()) != 0 {
return nil, errBlockNumberUnsupported
}
statedb, _ := b.blockchain.State()
return statedb.GetBalance(contract), nil
}
// NonceAt returns the nonce of a certain account in the blockchain.
func (b *SimulatedBackend) NonceAt(ctx context.Context, contract common.Address, blockNumber *big.Int) (uint64, error) {
b.mu.Lock()
defer b.mu.Unlock()
if blockNumber != nil && blockNumber.Cmp(b.blockchain.CurrentBlock().Number()) != 0 {
return 0, errBlockNumberUnsupported
}
statedb, _ := b.blockchain.State()
return statedb.GetNonce(contract), nil
}
// StorageAt returns the value of key in the storage of an account in the blockchain.
func (b *SimulatedBackend) StorageAt(ctx context.Context, contract common.Address, key common.Hash, blockNumber *big.Int) ([]byte, error) {
b.mu.Lock()
defer b.mu.Unlock()
if blockNumber != nil && blockNumber.Cmp(b.blockchain.CurrentBlock().Number()) != 0 {
return nil, errBlockNumberUnsupported
}
statedb, _ := b.blockchain.State()
val := statedb.GetState(contract, key)
return val[:], nil
}
// TransactionReceipt returns the receipt of a transaction.
func (b *SimulatedBackend) TransactionReceipt(ctx context.Context, txHash common.Hash) (*types.Receipt, error) {
receipt, _, _, _ := core.GetReceipt(b.database, txHash)
return receipt, nil
}
// PendingCodeAt returns the code associated with an account in the pending state.
func (b *SimulatedBackend) PendingCodeAt(ctx context.Context, contract common.Address) ([]byte, error) {
b.mu.Lock()
defer b.mu.Unlock()
return b.pendingState.GetCode(contract), nil
}
// CallContract executes a contract call.
func (b *SimulatedBackend) CallContract(ctx context.Context, call ethereum.CallMsg, blockNumber *big.Int) ([]byte, error) {
b.mu.Lock()
defer b.mu.Unlock()
if blockNumber != nil && blockNumber.Cmp(b.blockchain.CurrentBlock().Number()) != 0 {
return nil, errBlockNumberUnsupported
}
state, err := b.blockchain.State()
if err != nil {
return nil, err
}
rval, _, _, err := b.callContract(ctx, call, b.blockchain.CurrentBlock(), state)
return rval, err
}
// PendingCallContract executes a contract call on the pending state.
func (b *SimulatedBackend) PendingCallContract(ctx context.Context, call ethereum.CallMsg) ([]byte, error) {
b.mu.Lock()
defer b.mu.Unlock()
defer b.pendingState.RevertToSnapshot(b.pendingState.Snapshot())
rval, _, _, err := b.callContract(ctx, call, b.pendingBlock, b.pendingState)
return rval, err
}
// PendingNonceAt implements PendingStateReader.PendingNonceAt, retrieving
// the nonce currently pending for the account.
func (b *SimulatedBackend) PendingNonceAt(ctx context.Context, account common.Address) (uint64, error) {
b.mu.Lock()
defer b.mu.Unlock()
return b.pendingState.GetOrNewStateObject(account).Nonce(), nil
}
// SuggestGasPrice implements ContractTransactor.SuggestGasPrice. Since the simulated
// chain doens't have miners, we just return a gas price of 1 for any call.
func (b *SimulatedBackend) SuggestGasPrice(ctx context.Context) (*big.Int, error) {
return big.NewInt(1), nil
}
// EstimateGas executes the requested code against the currently pending block/state and
// returns the used amount of gas.
func (b *SimulatedBackend) EstimateGas(ctx context.Context, call ethereum.CallMsg) (uint64, error) {
b.mu.Lock()
defer b.mu.Unlock()
// Determine the lowest and highest possible gas limits to binary search in between
var (
lo uint64 = params.TxGas - 1
hi uint64
cap uint64
)
if call.Gas >= params.TxGas {
hi = call.Gas
} else {
hi = b.pendingBlock.GasLimit()
}
cap = hi
// Create a helper to check if a gas allowance results in an executable transaction
executable := func(gas uint64) bool {
call.Gas = gas
snapshot := b.pendingState.Snapshot()
_, _, failed, err := b.callContract(ctx, call, b.pendingBlock, b.pendingState)
b.pendingState.RevertToSnapshot(snapshot)
if err != nil || failed {
return false
}
return true
}
// Execute the binary search and hone in on an executable gas limit
for lo+1 < hi {
mid := (hi + lo) / 2
if !executable(mid) {
lo = mid
} else {
hi = mid
}
}
// Reject the transaction as invalid if it still fails at the highest allowance
if hi == cap {
if !executable(hi) {
return 0, errGasEstimationFailed
}
}
return hi, nil
}
// callContract implements common code between normal and pending contract calls.
// state is modified during execution, make sure to copy it if necessary.
func (b *SimulatedBackend) callContract(ctx context.Context, call ethereum.CallMsg, block *types.Block, statedb *state.StateDB) ([]byte, uint64, bool, error) {
// Ensure message is initialized properly.
if call.GasPrice == nil {
call.GasPrice = big.NewInt(1)
}
if call.Gas == 0 {
call.Gas = 50000000
}
if call.Value == nil {
call.Value = new(big.Int)
}
// Set infinite balance to the fake caller account.
from := statedb.GetOrNewStateObject(call.From)
from.SetBalance(math.MaxBig256)
// Execute the call.
msg := callmsg{call}
evmContext := core.NewEVMContext(msg, block.Header(), b.blockchain, nil)
// Create a new environment which holds all relevant information
// about the transaction and calling mechanisms.
vmenv := vm.NewEVM(evmContext, statedb, b.config, vm.Config{})
gaspool := new(core.GasPool).AddGas(math.MaxUint64)
return core.NewStateTransition(vmenv, msg, gaspool).TransitionDb()
}
// SendTransaction updates the pending block to include the given transaction.
// It panics if the transaction is invalid.
func (b *SimulatedBackend) SendTransaction(ctx context.Context, tx *types.Transaction) error {
b.mu.Lock()
defer b.mu.Unlock()
sender, err := types.Sender(types.HomesteadSigner{}, tx)
if err != nil {
panic(fmt.Errorf("invalid transaction: %v", err))
}
nonce := b.pendingState.GetNonce(sender)
if tx.Nonce() != nonce {
panic(fmt.Errorf("invalid transaction nonce: got %d, want %d", tx.Nonce(), nonce))
}
blocks, _ := core.GenerateChain(b.config, b.blockchain.CurrentBlock(), ethash.NewFaker(), b.database, 1, func(number int, block *core.BlockGen) {
for _, tx := range b.pendingBlock.Transactions() {
block.AddTx(tx)
}
block.AddTx(tx)
})
statedb, _ := b.blockchain.State()
b.pendingBlock = blocks[0]
b.pendingState, _ = state.New(b.pendingBlock.Root(), statedb.Database())
return nil
}
// FilterLogs executes a log filter operation, blocking during execution and
// returning all the results in one batch.
//
// TODO(karalabe): Deprecate when the subscription one can return past data too.
func (b *SimulatedBackend) FilterLogs(ctx context.Context, query ethereum.FilterQuery) ([]types.Log, error) {
// Initialize unset filter boundaried to run from genesis to chain head
from := int64(0)
if query.FromBlock != nil {
from = query.FromBlock.Int64()
}
to := int64(-1)
if query.ToBlock != nil {
to = query.ToBlock.Int64()
}
// Construct and execute the filter
filter := filters.New(&filterBackend{b.database, b.blockchain}, from, to, query.Addresses, query.Topics)
logs, err := filter.Logs(ctx)
if err != nil {
return nil, err
}
res := make([]types.Log, len(logs))
for i, log := range logs {
res[i] = *log
}
return res, nil
}
// SubscribeFilterLogs creates a background log filtering operation, returning a
// subscription immediately, which can be used to stream the found events.
func (b *SimulatedBackend) SubscribeFilterLogs(ctx context.Context, query ethereum.FilterQuery, ch chan<- types.Log) (ethereum.Subscription, error) {
// Subscribe to contract events
sink := make(chan []*types.Log)
sub, err := b.events.SubscribeLogs(query, sink)
if err != nil {
return nil, err
}
// Since we're getting logs in batches, we need to flatten them into a plain stream
return event.NewSubscription(func(quit <-chan struct{}) error {
defer sub.Unsubscribe()
for {
select {
case logs := <-sink:
for _, log := range logs {
select {
case ch <- *log:
case err := <-sub.Err():
return err
case <-quit:
return nil
}
}
case err := <-sub.Err():
return err
case <-quit:
return nil
}
}
}), nil
}
// AdjustTime adds a time shift to the simulated clock.
func (b *SimulatedBackend) AdjustTime(adjustment time.Duration) error {
b.mu.Lock()
defer b.mu.Unlock()
blocks, _ := core.GenerateChain(b.config, b.blockchain.CurrentBlock(), ethash.NewFaker(), b.database, 1, func(number int, block *core.BlockGen) {
for _, tx := range b.pendingBlock.Transactions() {
block.AddTx(tx)
}
block.OffsetTime(int64(adjustment.Seconds()))
})
statedb, _ := b.blockchain.State()
b.pendingBlock = blocks[0]
b.pendingState, _ = state.New(b.pendingBlock.Root(), statedb.Database())
return nil
}
// callmsg implements core.Message to allow passing it as a transaction simulator.
type callmsg struct {
ethereum.CallMsg
}
func (m callmsg) From() common.Address { return m.CallMsg.From }
func (m callmsg) Nonce() uint64 { return 0 }
func (m callmsg) CheckNonce() bool { return false }
func (m callmsg) To() *common.Address { return m.CallMsg.To }
func (m callmsg) GasPrice() *big.Int { return m.CallMsg.GasPrice }
func (m callmsg) Gas() uint64 { return m.CallMsg.Gas }
func (m callmsg) Value() *big.Int { return m.CallMsg.Value }
func (m callmsg) Data() []byte { return m.CallMsg.Data }
// filterBackend implements filters.Backend to support filtering for logs without
// taking bloom-bits acceleration structures into account.
type filterBackend struct {
db ethdb.Database
bc *core.BlockChain
}
func (fb *filterBackend) ChainDb() ethdb.Database { return fb.db }
func (fb *filterBackend) EventMux() *event.TypeMux { panic("not supported") }
func (fb *filterBackend) HeaderByNumber(ctx context.Context, block rpc.BlockNumber) (*types.Header, error) {
if block == rpc.LatestBlockNumber {
return fb.bc.CurrentHeader(), nil
}
return fb.bc.GetHeaderByNumber(uint64(block.Int64())), nil
}
func (fb *filterBackend) GetReceipts(ctx context.Context, hash common.Hash) (types.Receipts, error) {
return core.GetBlockReceipts(fb.db, hash, core.GetBlockNumber(fb.db, hash)), nil
}
func (fb *filterBackend) SubscribeTxPreEvent(ch chan<- core.TxPreEvent) event.Subscription {
return event.NewSubscription(func(quit <-chan struct{}) error {
<-quit
return nil
})
}
func (fb *filterBackend) SubscribeChainEvent(ch chan<- core.ChainEvent) event.Subscription {
return fb.bc.SubscribeChainEvent(ch)
}
func (fb *filterBackend) SubscribeRemovedLogsEvent(ch chan<- core.RemovedLogsEvent) event.Subscription {
return fb.bc.SubscribeRemovedLogsEvent(ch)
}
func (fb *filterBackend) SubscribeLogsEvent(ch chan<- []*types.Log) event.Subscription {
return fb.bc.SubscribeLogsEvent(ch)
}
func (fb *filterBackend) BloomStatus() (uint64, uint64) { return 4096, 0 }
func (fb *filterBackend) ServiceFilter(ctx context.Context, ms *bloombits.MatcherSession) {
panic("not supported")
}

350
accounts/abi/bind/base.go Normal file
View File

@@ -0,0 +1,350 @@
// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package bind
import (
"context"
"errors"
"fmt"
"math/big"
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/event"
)
// SignerFn is a signer function callback when a contract requires a method to
// sign the transaction before submission.
type SignerFn func(types.Signer, common.Address, *types.Transaction) (*types.Transaction, error)
// CallOpts is the collection of options to fine tune a contract call request.
type CallOpts struct {
Pending bool // Whether to operate on the pending state or the last known one
From common.Address // Optional the sender address, otherwise the first account is used
Context context.Context // Network context to support cancellation and timeouts (nil = no timeout)
}
// TransactOpts is the collection of authorization data required to create a
// valid Ethereum transaction.
type TransactOpts struct {
From common.Address // Ethereum account to send the transaction from
Nonce *big.Int // Nonce to use for the transaction execution (nil = use pending state)
Signer SignerFn // Method to use for signing the transaction (mandatory)
Value *big.Int // Funds to transfer along along the transaction (nil = 0 = no funds)
GasPrice *big.Int // Gas price to use for the transaction execution (nil = gas price oracle)
GasLimit uint64 // Gas limit to set for the transaction execution (0 = estimate)
Context context.Context // Network context to support cancellation and timeouts (nil = no timeout)
}
// FilterOpts is the collection of options to fine tune filtering for events
// within a bound contract.
type FilterOpts struct {
Start uint64 // Start of the queried range
End *uint64 // End of the range (nil = latest)
Context context.Context // Network context to support cancellation and timeouts (nil = no timeout)
}
// WatchOpts is the collection of options to fine tune subscribing for events
// within a bound contract.
type WatchOpts struct {
Start *uint64 // Start of the queried range (nil = latest)
Context context.Context // Network context to support cancellation and timeouts (nil = no timeout)
}
// BoundContract is the base wrapper object that reflects a contract on the
// Ethereum network. It contains a collection of methods that are used by the
// higher level contract bindings to operate.
type BoundContract struct {
address common.Address // Deployment address of the contract on the Ethereum blockchain
abi abi.ABI // Reflect based ABI to access the correct Ethereum methods
caller ContractCaller // Read interface to interact with the blockchain
transactor ContractTransactor // Write interface to interact with the blockchain
filterer ContractFilterer // Event filtering to interact with the blockchain
}
// NewBoundContract creates a low level contract interface through which calls
// and transactions may be made through.
func NewBoundContract(address common.Address, abi abi.ABI, caller ContractCaller, transactor ContractTransactor, filterer ContractFilterer) *BoundContract {
return &BoundContract{
address: address,
abi: abi,
caller: caller,
transactor: transactor,
filterer: filterer,
}
}
// DeployContract deploys a contract onto the Ethereum blockchain and binds the
// deployment address with a Go wrapper.
func DeployContract(opts *TransactOpts, abi abi.ABI, bytecode []byte, backend ContractBackend, params ...interface{}) (common.Address, *types.Transaction, *BoundContract, error) {
// Otherwise try to deploy the contract
c := NewBoundContract(common.Address{}, abi, backend, backend, backend)
input, err := c.abi.Pack("", params...)
if err != nil {
return common.Address{}, nil, nil, err
}
tx, err := c.transact(opts, nil, append(bytecode, input...))
if err != nil {
return common.Address{}, nil, nil, err
}
c.address = crypto.CreateAddress(opts.From, tx.Nonce())
return c.address, tx, c, nil
}
// Call invokes the (constant) contract method with params as input values and
// sets the output to result. The result type might be a single field for simple
// returns, a slice of interfaces for anonymous returns and a struct for named
// returns.
func (c *BoundContract) Call(opts *CallOpts, result interface{}, method string, params ...interface{}) error {
// Don't crash on a lazy user
if opts == nil {
opts = new(CallOpts)
}
// Pack the input, call and unpack the results
input, err := c.abi.Pack(method, params...)
if err != nil {
return err
}
var (
msg = ethereum.CallMsg{From: opts.From, To: &c.address, Data: input}
ctx = ensureContext(opts.Context)
code []byte
output []byte
)
if opts.Pending {
pb, ok := c.caller.(PendingContractCaller)
if !ok {
return ErrNoPendingState
}
output, err = pb.PendingCallContract(ctx, msg)
if err == nil && len(output) == 0 {
// Make sure we have a contract to operate on, and bail out otherwise.
if code, err = pb.PendingCodeAt(ctx, c.address); err != nil {
return err
} else if len(code) == 0 {
return ErrNoCode
}
}
} else {
output, err = c.caller.CallContract(ctx, msg, nil)
if err == nil && len(output) == 0 {
// Make sure we have a contract to operate on, and bail out otherwise.
if code, err = c.caller.CodeAt(ctx, c.address, nil); err != nil {
return err
} else if len(code) == 0 {
return ErrNoCode
}
}
}
if err != nil {
return err
}
return c.abi.Unpack(result, method, output)
}
// Transact invokes the (paid) contract method with params as input values.
func (c *BoundContract) Transact(opts *TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
// Otherwise pack up the parameters and invoke the contract
input, err := c.abi.Pack(method, params...)
if err != nil {
return nil, err
}
return c.transact(opts, &c.address, input)
}
// Transfer initiates a plain transaction to move funds to the contract, calling
// its default method if one is available.
func (c *BoundContract) Transfer(opts *TransactOpts) (*types.Transaction, error) {
return c.transact(opts, &c.address, nil)
}
// transact executes an actual transaction invocation, first deriving any missing
// authorization fields, and then scheduling the transaction for execution.
func (c *BoundContract) transact(opts *TransactOpts, contract *common.Address, input []byte) (*types.Transaction, error) {
var err error
// Ensure a valid value field and resolve the account nonce
value := opts.Value
if value == nil {
value = new(big.Int)
}
var nonce uint64
if opts.Nonce == nil {
nonce, err = c.transactor.PendingNonceAt(ensureContext(opts.Context), opts.From)
if err != nil {
return nil, fmt.Errorf("failed to retrieve account nonce: %v", err)
}
} else {
nonce = opts.Nonce.Uint64()
}
// Figure out the gas allowance and gas price values
gasPrice := opts.GasPrice
if gasPrice == nil {
gasPrice, err = c.transactor.SuggestGasPrice(ensureContext(opts.Context))
if err != nil {
return nil, fmt.Errorf("failed to suggest gas price: %v", err)
}
}
gasLimit := opts.GasLimit
if gasLimit == 0 {
// Gas estimation cannot succeed without code for method invocations
if contract != nil {
if code, err := c.transactor.PendingCodeAt(ensureContext(opts.Context), c.address); err != nil {
return nil, err
} else if len(code) == 0 {
return nil, ErrNoCode
}
}
// If the contract surely has code (or code is not needed), estimate the transaction
msg := ethereum.CallMsg{From: opts.From, To: contract, Value: value, Data: input}
gasLimit, err = c.transactor.EstimateGas(ensureContext(opts.Context), msg)
if err != nil {
return nil, fmt.Errorf("failed to estimate gas needed: %v", err)
}
}
// Create the transaction, sign it and schedule it for execution
var rawTx *types.Transaction
if contract == nil {
rawTx = types.NewContractCreation(nonce, value, gasLimit, gasPrice, input)
} else {
rawTx = types.NewTransaction(nonce, c.address, value, gasLimit, gasPrice, input)
}
if opts.Signer == nil {
return nil, errors.New("no signer to authorize the transaction with")
}
signedTx, err := opts.Signer(types.HomesteadSigner{}, opts.From, rawTx)
if err != nil {
return nil, err
}
if err := c.transactor.SendTransaction(ensureContext(opts.Context), signedTx); err != nil {
return nil, err
}
return signedTx, nil
}
// FilterLogs filters contract logs for past blocks, returning the necessary
// channels to construct a strongly typed bound iterator on top of them.
func (c *BoundContract) FilterLogs(opts *FilterOpts, name string, query ...[]interface{}) (chan types.Log, event.Subscription, error) {
// Don't crash on a lazy user
if opts == nil {
opts = new(FilterOpts)
}
// Append the event selector to the query parameters and construct the topic set
query = append([][]interface{}{{c.abi.Events[name].Id()}}, query...)
topics, err := makeTopics(query...)
if err != nil {
return nil, nil, err
}
// Start the background filtering
logs := make(chan types.Log, 128)
config := ethereum.FilterQuery{
Addresses: []common.Address{c.address},
Topics: topics,
FromBlock: new(big.Int).SetUint64(opts.Start),
}
if opts.End != nil {
config.ToBlock = new(big.Int).SetUint64(*opts.End)
}
/* TODO(karalabe): Replace the rest of the method below with this when supported
sub, err := c.filterer.SubscribeFilterLogs(ensureContext(opts.Context), config, logs)
*/
buff, err := c.filterer.FilterLogs(ensureContext(opts.Context), config)
if err != nil {
return nil, nil, err
}
sub, err := event.NewSubscription(func(quit <-chan struct{}) error {
for _, log := range buff {
select {
case logs <- log:
case <-quit:
return nil
}
}
return nil
}), nil
if err != nil {
return nil, nil, err
}
return logs, sub, nil
}
// WatchLogs filters subscribes to contract logs for future blocks, returning a
// subscription object that can be used to tear down the watcher.
func (c *BoundContract) WatchLogs(opts *WatchOpts, name string, query ...[]interface{}) (chan types.Log, event.Subscription, error) {
// Don't crash on a lazy user
if opts == nil {
opts = new(WatchOpts)
}
// Append the event selector to the query parameters and construct the topic set
query = append([][]interface{}{{c.abi.Events[name].Id()}}, query...)
topics, err := makeTopics(query...)
if err != nil {
return nil, nil, err
}
// Start the background filtering
logs := make(chan types.Log, 128)
config := ethereum.FilterQuery{
Addresses: []common.Address{c.address},
Topics: topics,
}
if opts.Start != nil {
config.FromBlock = new(big.Int).SetUint64(*opts.Start)
}
sub, err := c.filterer.SubscribeFilterLogs(ensureContext(opts.Context), config, logs)
if err != nil {
return nil, nil, err
}
return logs, sub, nil
}
// UnpackLog unpacks a retrieved log into the provided output structure.
func (c *BoundContract) UnpackLog(out interface{}, event string, log types.Log) error {
if len(log.Data) > 0 {
if err := c.abi.Unpack(out, event, log.Data); err != nil {
return err
}
}
var indexed abi.Arguments
for _, arg := range c.abi.Events[event].Inputs {
if arg.Indexed {
indexed = append(indexed, arg)
}
}
return parseTopics(out, indexed, log.Topics[1:])
}
// ensureContext is a helper method to ensure a context is not nil, even if the
// user specified it as such.
func ensureContext(ctx context.Context) context.Context {
if ctx == nil {
return context.TODO()
}
return ctx
}

397
accounts/abi/bind/bind.go Normal file
View File

@@ -0,0 +1,397 @@
// Copyright 2016 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
// Package bind generates Ethereum contract Go bindings.
//
// Detailed usage document and tutorial available on the go-ethereum Wiki page:
// https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts
package bind
import (
"bytes"
"fmt"
"regexp"
"strings"
"text/template"
"unicode"
"github.com/ethereum/go-ethereum/accounts/abi"
"golang.org/x/tools/imports"
)
// Lang is a target programming language selector to generate bindings for.
type Lang int
const (
LangGo Lang = iota
LangJava
LangObjC
)
// Bind generates a Go wrapper around a contract ABI. This wrapper isn't meant
// to be used as is in client code, but rather as an intermediate struct which
// enforces compile time type safety and naming convention opposed to having to
// manually maintain hard coded strings that break on runtime.
func Bind(types []string, abis []string, bytecodes []string, pkg string, lang Lang) (string, error) {
// Process each individual contract requested binding
contracts := make(map[string]*tmplContract)
for i := 0; i < len(types); i++ {
// Parse the actual ABI to generate the binding for
evmABI, err := abi.JSON(strings.NewReader(abis[i]))
if err != nil {
return "", err
}
// Strip any whitespace from the JSON ABI
strippedABI := strings.Map(func(r rune) rune {
if unicode.IsSpace(r) {
return -1
}
return r
}, abis[i])
// Extract the call and transact methods; events; and sort them alphabetically
var (
calls = make(map[string]*tmplMethod)
transacts = make(map[string]*tmplMethod)
events = make(map[string]*tmplEvent)
)
for _, original := range evmABI.Methods {
// Normalize the method for capital cases and non-anonymous inputs/outputs
normalized := original
normalized.Name = methodNormalizer[lang](original.Name)
normalized.Inputs = make([]abi.Argument, len(original.Inputs))
copy(normalized.Inputs, original.Inputs)
for j, input := range normalized.Inputs {
if input.Name == "" {
normalized.Inputs[j].Name = fmt.Sprintf("arg%d", j)
}
}
normalized.Outputs = make([]abi.Argument, len(original.Outputs))
copy(normalized.Outputs, original.Outputs)
for j, output := range normalized.Outputs {
if output.Name != "" {
normalized.Outputs[j].Name = capitalise(output.Name)
}
}
// Append the methods to the call or transact lists
if original.Const {
calls[original.Name] = &tmplMethod{Original: original, Normalized: normalized, Structured: structured(original.Outputs)}
} else {
transacts[original.Name] = &tmplMethod{Original: original, Normalized: normalized, Structured: structured(original.Outputs)}
}
}
for _, original := range evmABI.Events {
// Skip anonymous events as they don't support explicit filtering
if original.Anonymous {
continue
}
// Normalize the event for capital cases and non-anonymous outputs
normalized := original
normalized.Name = methodNormalizer[lang](original.Name)
normalized.Inputs = make([]abi.Argument, len(original.Inputs))
copy(normalized.Inputs, original.Inputs)
for j, input := range normalized.Inputs {
// Indexed fields are input, non-indexed ones are outputs
if input.Indexed {
if input.Name == "" {
normalized.Inputs[j].Name = fmt.Sprintf("arg%d", j)
}
}
}
// Append the event to the accumulator list
events[original.Name] = &tmplEvent{Original: original, Normalized: normalized}
}
contracts[types[i]] = &tmplContract{
Type: capitalise(types[i]),
InputABI: strings.Replace(strippedABI, "\"", "\\\"", -1),
InputBin: strings.TrimSpace(bytecodes[i]),
Constructor: evmABI.Constructor,
Calls: calls,
Transacts: transacts,
Events: events,
}
}
// Generate the contract template data content and render it
data := &tmplData{
Package: pkg,
Contracts: contracts,
}
buffer := new(bytes.Buffer)
funcs := map[string]interface{}{
"bindtype": bindType[lang],
"bindtopictype": bindTopicType[lang],
"namedtype": namedType[lang],
"capitalise": capitalise,
"decapitalise": decapitalise,
}
tmpl := template.Must(template.New("").Funcs(funcs).Parse(tmplSource[lang]))
if err := tmpl.Execute(buffer, data); err != nil {
return "", err
}
// For Go bindings pass the code through goimports to clean it up and double check
if lang == LangGo {
code, err := imports.Process(".", buffer.Bytes(), nil)
if err != nil {
return "", fmt.Errorf("%v\n%s", err, buffer)
}
return string(code), nil
}
// For all others just return as is for now
return buffer.String(), nil
}
// bindType is a set of type binders that convert Solidity types to some supported
// programming language types.
var bindType = map[Lang]func(kind abi.Type) string{
LangGo: bindTypeGo,
LangJava: bindTypeJava,
}
// bindTypeGo converts a Solidity type to a Go one. Since there is no clear mapping
// from all Solidity types to Go ones (e.g. uint17), those that cannot be exactly
// mapped will use an upscaled type (e.g. *big.Int).
func bindTypeGo(kind abi.Type) string {
stringKind := kind.String()
switch {
case strings.HasPrefix(stringKind, "address"):
parts := regexp.MustCompile(`address(\[[0-9]*\])?`).FindStringSubmatch(stringKind)
if len(parts) != 2 {
return stringKind
}
return fmt.Sprintf("%scommon.Address", parts[1])
case strings.HasPrefix(stringKind, "bytes"):
parts := regexp.MustCompile(`bytes([0-9]*)(\[[0-9]*\])?`).FindStringSubmatch(stringKind)
if len(parts) != 3 {
return stringKind
}
return fmt.Sprintf("%s[%s]byte", parts[2], parts[1])
case strings.HasPrefix(stringKind, "int") || strings.HasPrefix(stringKind, "uint"):
parts := regexp.MustCompile(`(u)?int([0-9]*)(\[[0-9]*\])?`).FindStringSubmatch(stringKind)
if len(parts) != 4 {
return stringKind
}
switch parts[2] {
case "8", "16", "32", "64":
return fmt.Sprintf("%s%sint%s", parts[3], parts[1], parts[2])
}
return fmt.Sprintf("%s*big.Int", parts[3])
case strings.HasPrefix(stringKind, "bool") || strings.HasPrefix(stringKind, "string"):
parts := regexp.MustCompile(`([a-z]+)(\[[0-9]*\])?`).FindStringSubmatch(stringKind)
if len(parts) != 3 {
return stringKind
}
return fmt.Sprintf("%s%s", parts[2], parts[1])
default:
return stringKind
}
}
// bindTypeJava converts a Solidity type to a Java one. Since there is no clear mapping
// from all Solidity types to Java ones (e.g. uint17), those that cannot be exactly
// mapped will use an upscaled type (e.g. BigDecimal).
func bindTypeJava(kind abi.Type) string {
stringKind := kind.String()
switch {
case strings.HasPrefix(stringKind, "address"):
parts := regexp.MustCompile(`address(\[[0-9]*\])?`).FindStringSubmatch(stringKind)
if len(parts) != 2 {
return stringKind
}
if parts[1] == "" {
return fmt.Sprintf("Address")
}
return fmt.Sprintf("Addresses")
case strings.HasPrefix(stringKind, "bytes"):
parts := regexp.MustCompile(`bytes([0-9]*)(\[[0-9]*\])?`).FindStringSubmatch(stringKind)
if len(parts) != 3 {
return stringKind
}
if parts[2] != "" {
return "byte[][]"
}
return "byte[]"
case strings.HasPrefix(stringKind, "int") || strings.HasPrefix(stringKind, "uint"):
parts := regexp.MustCompile(`(u)?int([0-9]*)(\[[0-9]*\])?`).FindStringSubmatch(stringKind)
if len(parts) != 4 {
return stringKind
}
switch parts[2] {
case "8", "16", "32", "64":
if parts[1] == "" {
if parts[3] == "" {
return fmt.Sprintf("int%s", parts[2])
}
return fmt.Sprintf("int%s[]", parts[2])
}
}
if parts[3] == "" {
return fmt.Sprintf("BigInt")
}
return fmt.Sprintf("BigInts")
case strings.HasPrefix(stringKind, "bool"):
parts := regexp.MustCompile(`bool(\[[0-9]*\])?`).FindStringSubmatch(stringKind)
if len(parts) != 2 {
return stringKind
}
if parts[1] == "" {
return fmt.Sprintf("bool")
}
return fmt.Sprintf("bool[]")
case strings.HasPrefix(stringKind, "string"):
parts := regexp.MustCompile(`string(\[[0-9]*\])?`).FindStringSubmatch(stringKind)
if len(parts) != 2 {
return stringKind
}
if parts[1] == "" {
return fmt.Sprintf("String")
}
return fmt.Sprintf("String[]")
default:
return stringKind
}
}
// bindTopicType is a set of type binders that convert Solidity types to some
// supported programming language topic types.
var bindTopicType = map[Lang]func(kind abi.Type) string{
LangGo: bindTopicTypeGo,
LangJava: bindTopicTypeJava,
}
// bindTypeGo converts a Solidity topic type to a Go one. It is almost the same
// funcionality as for simple types, but dynamic types get converted to hashes.
func bindTopicTypeGo(kind abi.Type) string {
bound := bindTypeGo(kind)
if bound == "string" || bound == "[]byte" {
bound = "common.Hash"
}
return bound
}
// bindTypeGo converts a Solidity topic type to a Java one. It is almost the same
// funcionality as for simple types, but dynamic types get converted to hashes.
func bindTopicTypeJava(kind abi.Type) string {
bound := bindTypeJava(kind)
if bound == "String" || bound == "Bytes" {
bound = "Hash"
}
return bound
}
// namedType is a set of functions that transform language specific types to
// named versions that my be used inside method names.
var namedType = map[Lang]func(string, abi.Type) string{
LangGo: func(string, abi.Type) string { panic("this shouldn't be needed") },
LangJava: namedTypeJava,
}
// namedTypeJava converts some primitive data types to named variants that can
// be used as parts of method names.
func namedTypeJava(javaKind string, solKind abi.Type) string {
switch javaKind {
case "byte[]":
return "Binary"
case "byte[][]":
return "Binaries"
case "string":
return "String"
case "string[]":
return "Strings"
case "bool":
return "Bool"
case "bool[]":
return "Bools"
case "BigInt":
parts := regexp.MustCompile(`(u)?int([0-9]*)(\[[0-9]*\])?`).FindStringSubmatch(solKind.String())
if len(parts) != 4 {
return javaKind
}
switch parts[2] {
case "8", "16", "32", "64":
if parts[3] == "" {
return capitalise(fmt.Sprintf("%sint%s", parts[1], parts[2]))
}
return capitalise(fmt.Sprintf("%sint%ss", parts[1], parts[2]))
default:
return javaKind
}
default:
return javaKind
}
}
// methodNormalizer is a name transformer that modifies Solidity method names to
// conform to target language naming concentions.
var methodNormalizer = map[Lang]func(string) string{
LangGo: capitalise,
LangJava: decapitalise,
}
// capitalise makes the first character of a string upper case, also removing any
// prefixing underscores from the variable names.
func capitalise(input string) string {
for len(input) > 0 && input[0] == '_' {
input = input[1:]
}
if len(input) == 0 {
return ""
}
return strings.ToUpper(input[:1]) + input[1:]
}
// decapitalise makes the first character of a string lower case.
func decapitalise(input string) string {
return strings.ToLower(input[:1]) + input[1:]
}
// structured checks whether a list of ABI data types has enough information to
// operate through a proper Go struct or if flat returns are needed.
func structured(args abi.Arguments) bool {
if len(args) < 2 {
return false
}
exists := make(map[string]bool)
for _, out := range args {
// If the name is anonymous, we can't organize into a struct
if out.Name == "" {
return false
}
// If the field name is empty when normalized or collides (var, Var, _var, _Var),
// we can't organize into a struct
field := capitalise(out.Name)
if field == "" || exists[field] {
return false
}
exists[field] = true
}
return true
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,522 @@
// Copyright 2016 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package bind
import "github.com/ethereum/go-ethereum/accounts/abi"
// tmplData is the data structure required to fill the binding template.
type tmplData struct {
Package string // Name of the package to place the generated file in
Contracts map[string]*tmplContract // List of contracts to generate into this file
}
// tmplContract contains the data needed to generate an individual contract binding.
type tmplContract struct {
Type string // Type name of the main contract binding
InputABI string // JSON ABI used as the input to generate the binding from
InputBin string // Optional EVM bytecode used to denetare deploy code from
Constructor abi.Method // Contract constructor for deploy parametrization
Calls map[string]*tmplMethod // Contract calls that only read state data
Transacts map[string]*tmplMethod // Contract calls that write state data
Events map[string]*tmplEvent // Contract events accessors
}
// tmplMethod is a wrapper around an abi.Method that contains a few preprocessed
// and cached data fields.
type tmplMethod struct {
Original abi.Method // Original method as parsed by the abi package
Normalized abi.Method // Normalized version of the parsed method (capitalized names, non-anonymous args/returns)
Structured bool // Whether the returns should be accumulated into a struct
}
// tmplEvent is a wrapper around an a
type tmplEvent struct {
Original abi.Event // Original event as parsed by the abi package
Normalized abi.Event // Normalized version of the parsed fields
}
// tmplSource is language to template mapping containing all the supported
// programming languages the package can generate to.
var tmplSource = map[Lang]string{
LangGo: tmplSourceGo,
LangJava: tmplSourceJava,
}
// tmplSourceGo is the Go source template use to generate the contract binding
// based on.
const tmplSourceGo = `
// Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost.
package {{.Package}}
{{range $contract := .Contracts}}
// {{.Type}}ABI is the input ABI used to generate the binding from.
const {{.Type}}ABI = "{{.InputABI}}"
{{if .InputBin}}
// {{.Type}}Bin is the compiled bytecode used for deploying new contracts.
const {{.Type}}Bin = ` + "`" + `{{.InputBin}}` + "`" + `
// Deploy{{.Type}} deploys a new Ethereum contract, binding an instance of {{.Type}} to it.
func Deploy{{.Type}}(auth *bind.TransactOpts, backend bind.ContractBackend {{range .Constructor.Inputs}}, {{.Name}} {{bindtype .Type}}{{end}}) (common.Address, *types.Transaction, *{{.Type}}, error) {
parsed, err := abi.JSON(strings.NewReader({{.Type}}ABI))
if err != nil {
return common.Address{}, nil, nil, err
}
address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex({{.Type}}Bin), backend {{range .Constructor.Inputs}}, {{.Name}}{{end}})
if err != nil {
return common.Address{}, nil, nil, err
}
return address, tx, &{{.Type}}{ {{.Type}}Caller: {{.Type}}Caller{contract: contract}, {{.Type}}Transactor: {{.Type}}Transactor{contract: contract}, {{.Type}}Filterer: {{.Type}}Filterer{contract: contract} }, nil
}
{{end}}
// {{.Type}} is an auto generated Go binding around an Ethereum contract.
type {{.Type}} struct {
{{.Type}}Caller // Read-only binding to the contract
{{.Type}}Transactor // Write-only binding to the contract
{{.Type}}Filterer // Log filterer for contract events
}
// {{.Type}}Caller is an auto generated read-only Go binding around an Ethereum contract.
type {{.Type}}Caller struct {
contract *bind.BoundContract // Generic contract wrapper for the low level calls
}
// {{.Type}}Transactor is an auto generated write-only Go binding around an Ethereum contract.
type {{.Type}}Transactor struct {
contract *bind.BoundContract // Generic contract wrapper for the low level calls
}
// {{.Type}}Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
type {{.Type}}Filterer struct {
contract *bind.BoundContract // Generic contract wrapper for the low level calls
}
// {{.Type}}Session is an auto generated Go binding around an Ethereum contract,
// with pre-set call and transact options.
type {{.Type}}Session struct {
Contract *{{.Type}} // Generic contract binding to set the session for
CallOpts bind.CallOpts // Call options to use throughout this session
TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
}
// {{.Type}}CallerSession is an auto generated read-only Go binding around an Ethereum contract,
// with pre-set call options.
type {{.Type}}CallerSession struct {
Contract *{{.Type}}Caller // Generic contract caller binding to set the session for
CallOpts bind.CallOpts // Call options to use throughout this session
}
// {{.Type}}TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
// with pre-set transact options.
type {{.Type}}TransactorSession struct {
Contract *{{.Type}}Transactor // Generic contract transactor binding to set the session for
TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
}
// {{.Type}}Raw is an auto generated low-level Go binding around an Ethereum contract.
type {{.Type}}Raw struct {
Contract *{{.Type}} // Generic contract binding to access the raw methods on
}
// {{.Type}}CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
type {{.Type}}CallerRaw struct {
Contract *{{.Type}}Caller // Generic read-only contract binding to access the raw methods on
}
// {{.Type}}TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
type {{.Type}}TransactorRaw struct {
Contract *{{.Type}}Transactor // Generic write-only contract binding to access the raw methods on
}
// New{{.Type}} creates a new instance of {{.Type}}, bound to a specific deployed contract.
func New{{.Type}}(address common.Address, backend bind.ContractBackend) (*{{.Type}}, error) {
contract, err := bind{{.Type}}(address, backend, backend, backend)
if err != nil {
return nil, err
}
return &{{.Type}}{ {{.Type}}Caller: {{.Type}}Caller{contract: contract}, {{.Type}}Transactor: {{.Type}}Transactor{contract: contract}, {{.Type}}Filterer: {{.Type}}Filterer{contract: contract} }, nil
}
// New{{.Type}}Caller creates a new read-only instance of {{.Type}}, bound to a specific deployed contract.
func New{{.Type}}Caller(address common.Address, caller bind.ContractCaller) (*{{.Type}}Caller, error) {
contract, err := bind{{.Type}}(address, caller, nil, nil)
if err != nil {
return nil, err
}
return &{{.Type}}Caller{contract: contract}, nil
}
// New{{.Type}}Transactor creates a new write-only instance of {{.Type}}, bound to a specific deployed contract.
func New{{.Type}}Transactor(address common.Address, transactor bind.ContractTransactor) (*{{.Type}}Transactor, error) {
contract, err := bind{{.Type}}(address, nil, transactor, nil)
if err != nil {
return nil, err
}
return &{{.Type}}Transactor{contract: contract}, nil
}
// New{{.Type}}Filterer creates a new log filterer instance of {{.Type}}, bound to a specific deployed contract.
func New{{.Type}}Filterer(address common.Address, filterer bind.ContractFilterer) (*{{.Type}}Filterer, error) {
contract, err := bind{{.Type}}(address, nil, nil, filterer)
if err != nil {
return nil, err
}
return &{{.Type}}Filterer{contract: contract}, nil
}
// bind{{.Type}} binds a generic wrapper to an already deployed contract.
func bind{{.Type}}(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
parsed, err := abi.JSON(strings.NewReader({{.Type}}ABI))
if err != nil {
return nil, err
}
return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
}
// Call invokes the (constant) contract method with params as input values and
// sets the output to result. The result type might be a single field for simple
// returns, a slice of interfaces for anonymous returns and a struct for named
// returns.
func (_{{$contract.Type}} *{{$contract.Type}}Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
return _{{$contract.Type}}.Contract.{{$contract.Type}}Caller.contract.Call(opts, result, method, params...)
}
// Transfer initiates a plain transaction to move funds to the contract, calling
// its default method if one is available.
func (_{{$contract.Type}} *{{$contract.Type}}Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
return _{{$contract.Type}}.Contract.{{$contract.Type}}Transactor.contract.Transfer(opts)
}
// Transact invokes the (paid) contract method with params as input values.
func (_{{$contract.Type}} *{{$contract.Type}}Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
return _{{$contract.Type}}.Contract.{{$contract.Type}}Transactor.contract.Transact(opts, method, params...)
}
// Call invokes the (constant) contract method with params as input values and
// sets the output to result. The result type might be a single field for simple
// returns, a slice of interfaces for anonymous returns and a struct for named
// returns.
func (_{{$contract.Type}} *{{$contract.Type}}CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
return _{{$contract.Type}}.Contract.contract.Call(opts, result, method, params...)
}
// Transfer initiates a plain transaction to move funds to the contract, calling
// its default method if one is available.
func (_{{$contract.Type}} *{{$contract.Type}}TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
return _{{$contract.Type}}.Contract.contract.Transfer(opts)
}
// Transact invokes the (paid) contract method with params as input values.
func (_{{$contract.Type}} *{{$contract.Type}}TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
return _{{$contract.Type}}.Contract.contract.Transact(opts, method, params...)
}
{{range .Calls}}
// {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.Id}}.
//
// Solidity: {{.Original.String}}
func (_{{$contract.Type}} *{{$contract.Type}}Caller) {{.Normalized.Name}}(opts *bind.CallOpts {{range .Normalized.Inputs}}, {{.Name}} {{bindtype .Type}} {{end}}) ({{if .Structured}}struct{ {{range .Normalized.Outputs}}{{.Name}} {{bindtype .Type}};{{end}} },{{else}}{{range .Normalized.Outputs}}{{bindtype .Type}},{{end}}{{end}} error) {
{{if .Structured}}ret := new(struct{
{{range .Normalized.Outputs}}{{.Name}} {{bindtype .Type}}
{{end}}
}){{else}}var (
{{range $i, $_ := .Normalized.Outputs}}ret{{$i}} = new({{bindtype .Type}})
{{end}}
){{end}}
out := {{if .Structured}}ret{{else}}{{if eq (len .Normalized.Outputs) 1}}ret0{{else}}&[]interface{}{
{{range $i, $_ := .Normalized.Outputs}}ret{{$i}},
{{end}}
}{{end}}{{end}}
err := _{{$contract.Type}}.contract.Call(opts, out, "{{.Original.Name}}" {{range .Normalized.Inputs}}, {{.Name}}{{end}})
return {{if .Structured}}*ret,{{else}}{{range $i, $_ := .Normalized.Outputs}}*ret{{$i}},{{end}}{{end}} err
}
// {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.Id}}.
//
// Solidity: {{.Original.String}}
func (_{{$contract.Type}} *{{$contract.Type}}Session) {{.Normalized.Name}}({{range $i, $_ := .Normalized.Inputs}}{{if ne $i 0}},{{end}} {{.Name}} {{bindtype .Type}} {{end}}) ({{if .Structured}}struct{ {{range .Normalized.Outputs}}{{.Name}} {{bindtype .Type}};{{end}} }, {{else}} {{range .Normalized.Outputs}}{{bindtype .Type}},{{end}} {{end}} error) {
return _{{$contract.Type}}.Contract.{{.Normalized.Name}}(&_{{$contract.Type}}.CallOpts {{range .Normalized.Inputs}}, {{.Name}}{{end}})
}
// {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.Id}}.
//
// Solidity: {{.Original.String}}
func (_{{$contract.Type}} *{{$contract.Type}}CallerSession) {{.Normalized.Name}}({{range $i, $_ := .Normalized.Inputs}}{{if ne $i 0}},{{end}} {{.Name}} {{bindtype .Type}} {{end}}) ({{if .Structured}}struct{ {{range .Normalized.Outputs}}{{.Name}} {{bindtype .Type}};{{end}} }, {{else}} {{range .Normalized.Outputs}}{{bindtype .Type}},{{end}} {{end}} error) {
return _{{$contract.Type}}.Contract.{{.Normalized.Name}}(&_{{$contract.Type}}.CallOpts {{range .Normalized.Inputs}}, {{.Name}}{{end}})
}
{{end}}
{{range .Transacts}}
// {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.Id}}.
//
// Solidity: {{.Original.String}}
func (_{{$contract.Type}} *{{$contract.Type}}Transactor) {{.Normalized.Name}}(opts *bind.TransactOpts {{range .Normalized.Inputs}}, {{.Name}} {{bindtype .Type}} {{end}}) (*types.Transaction, error) {
return _{{$contract.Type}}.contract.Transact(opts, "{{.Original.Name}}" {{range .Normalized.Inputs}}, {{.Name}}{{end}})
}
// {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.Id}}.
//
// Solidity: {{.Original.String}}
func (_{{$contract.Type}} *{{$contract.Type}}Session) {{.Normalized.Name}}({{range $i, $_ := .Normalized.Inputs}}{{if ne $i 0}},{{end}} {{.Name}} {{bindtype .Type}} {{end}}) (*types.Transaction, error) {
return _{{$contract.Type}}.Contract.{{.Normalized.Name}}(&_{{$contract.Type}}.TransactOpts {{range $i, $_ := .Normalized.Inputs}}, {{.Name}}{{end}})
}
// {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.Id}}.
//
// Solidity: {{.Original.String}}
func (_{{$contract.Type}} *{{$contract.Type}}TransactorSession) {{.Normalized.Name}}({{range $i, $_ := .Normalized.Inputs}}{{if ne $i 0}},{{end}} {{.Name}} {{bindtype .Type}} {{end}}) (*types.Transaction, error) {
return _{{$contract.Type}}.Contract.{{.Normalized.Name}}(&_{{$contract.Type}}.TransactOpts {{range $i, $_ := .Normalized.Inputs}}, {{.Name}}{{end}})
}
{{end}}
{{range .Events}}
// {{$contract.Type}}{{.Normalized.Name}}Iterator is returned from Filter{{.Normalized.Name}} and is used to iterate over the raw logs and unpacked data for {{.Normalized.Name}} events raised by the {{$contract.Type}} contract.
type {{$contract.Type}}{{.Normalized.Name}}Iterator struct {
Event *{{$contract.Type}}{{.Normalized.Name}} // Event containing the contract specifics and raw log
contract *bind.BoundContract // Generic contract to use for unpacking event data
event string // Event name to use for unpacking event data
logs chan types.Log // Log channel receiving the found contract events
sub ethereum.Subscription // Subscription for errors, completion and termination
done bool // Whether the subscription completed delivering logs
fail error // Occurred error to stop iteration
}
// Next advances the iterator to the subsequent event, returning whether there
// are any more events found. In case of a retrieval or parsing error, false is
// returned and Error() can be queried for the exact failure.
func (it *{{$contract.Type}}{{.Normalized.Name}}Iterator) Next() bool {
// If the iterator failed, stop iterating
if (it.fail != nil) {
return false
}
// If the iterator completed, deliver directly whatever's available
if (it.done) {
select {
case log := <-it.logs:
it.Event = new({{$contract.Type}}{{.Normalized.Name}})
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
default:
return false
}
}
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
it.Event = new({{$contract.Type}}{{.Normalized.Name}})
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
case err := <-it.sub.Err():
it.done = true
it.fail = err
return it.Next()
}
}
// Error returns any retrieval or parsing error occurred during filtering.
func (it *{{$contract.Type}}{{.Normalized.Name}}Iterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *{{$contract.Type}}{{.Normalized.Name}}Iterator) Close() error {
it.sub.Unsubscribe()
return nil
}
// {{$contract.Type}}{{.Normalized.Name}} represents a {{.Normalized.Name}} event raised by the {{$contract.Type}} contract.
type {{$contract.Type}}{{.Normalized.Name}} struct { {{range .Normalized.Inputs}}
{{capitalise .Name}} {{if .Indexed}}{{bindtopictype .Type}}{{else}}{{bindtype .Type}}{{end}}; {{end}}
Raw types.Log // Blockchain specific contextual infos
}
// Filter{{.Normalized.Name}} is a free log retrieval operation binding the contract event 0x{{printf "%x" .Original.Id}}.
//
// Solidity: {{.Original.String}}
func (_{{$contract.Type}} *{{$contract.Type}}Filterer) Filter{{.Normalized.Name}}(opts *bind.FilterOpts{{range .Normalized.Inputs}}{{if .Indexed}}, {{.Name}} []{{bindtype .Type}}{{end}}{{end}}) (*{{$contract.Type}}{{.Normalized.Name}}Iterator, error) {
{{range .Normalized.Inputs}}
{{if .Indexed}}var {{.Name}}Rule []interface{}
for _, {{.Name}}Item := range {{.Name}} {
{{.Name}}Rule = append({{.Name}}Rule, {{.Name}}Item)
}{{end}}{{end}}
logs, sub, err := _{{$contract.Type}}.contract.FilterLogs(opts, "{{.Original.Name}}"{{range .Normalized.Inputs}}{{if .Indexed}}, {{.Name}}Rule{{end}}{{end}})
if err != nil {
return nil, err
}
return &{{$contract.Type}}{{.Normalized.Name}}Iterator{contract: _{{$contract.Type}}.contract, event: "{{.Original.Name}}", logs: logs, sub: sub}, nil
}
// Watch{{.Normalized.Name}} is a free log subscription operation binding the contract event 0x{{printf "%x" .Original.Id}}.
//
// Solidity: {{.Original.String}}
func (_{{$contract.Type}} *{{$contract.Type}}Filterer) Watch{{.Normalized.Name}}(opts *bind.WatchOpts, sink chan<- *{{$contract.Type}}{{.Normalized.Name}}{{range .Normalized.Inputs}}{{if .Indexed}}, {{.Name}} []{{bindtype .Type}}{{end}}{{end}}) (event.Subscription, error) {
{{range .Normalized.Inputs}}
{{if .Indexed}}var {{.Name}}Rule []interface{}
for _, {{.Name}}Item := range {{.Name}} {
{{.Name}}Rule = append({{.Name}}Rule, {{.Name}}Item)
}{{end}}{{end}}
logs, sub, err := _{{$contract.Type}}.contract.WatchLogs(opts, "{{.Original.Name}}"{{range .Normalized.Inputs}}{{if .Indexed}}, {{.Name}}Rule{{end}}{{end}})
if err != nil {
return nil, err
}
return event.NewSubscription(func(quit <-chan struct{}) error {
defer sub.Unsubscribe()
for {
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
event := new({{$contract.Type}}{{.Normalized.Name}})
if err := _{{$contract.Type}}.contract.UnpackLog(event, "{{.Original.Name}}", log); err != nil {
return err
}
event.Raw = log
select {
case sink <- event:
case err := <-sub.Err():
return err
case <-quit:
return nil
}
case err := <-sub.Err():
return err
case <-quit:
return nil
}
}
}), nil
}
{{end}}
{{end}}
`
// tmplSourceJava is the Java source template use to generate the contract binding
// based on.
const tmplSourceJava = `
// This file is an automatically generated Java binding. Do not modify as any
// change will likely be lost upon the next re-generation!
package {{.Package}};
import org.ethereum.geth.*;
import org.ethereum.geth.internal.*;
{{range $contract := .Contracts}}
public class {{.Type}} {
// ABI is the input ABI used to generate the binding from.
public final static String ABI = "{{.InputABI}}";
{{if .InputBin}}
// BYTECODE is the compiled bytecode used for deploying new contracts.
public final static byte[] BYTECODE = "{{.InputBin}}".getBytes();
// deploy deploys a new Ethereum contract, binding an instance of {{.Type}} to it.
public static {{.Type}} deploy(TransactOpts auth, EthereumClient client{{range .Constructor.Inputs}}, {{bindtype .Type}} {{.Name}}{{end}}) throws Exception {
Interfaces args = Geth.newInterfaces({{(len .Constructor.Inputs)}});
{{range $index, $element := .Constructor.Inputs}}
args.set({{$index}}, Geth.newInterface()); args.get({{$index}}).set{{namedtype (bindtype .Type) .Type}}({{.Name}});
{{end}}
return new {{.Type}}(Geth.deployContract(auth, ABI, BYTECODE, client, args));
}
// Internal constructor used by contract deployment.
private {{.Type}}(BoundContract deployment) {
this.Address = deployment.getAddress();
this.Deployer = deployment.getDeployer();
this.Contract = deployment;
}
{{end}}
// Ethereum address where this contract is located at.
public final Address Address;
// Ethereum transaction in which this contract was deployed (if known!).
public final Transaction Deployer;
// Contract instance bound to a blockchain address.
private final BoundContract Contract;
// Creates a new instance of {{.Type}}, bound to a specific deployed contract.
public {{.Type}}(Address address, EthereumClient client) throws Exception {
this(Geth.bindContract(address, ABI, client));
}
{{range .Calls}}
{{if gt (len .Normalized.Outputs) 1}}
// {{capitalise .Normalized.Name}}Results is the output of a call to {{.Normalized.Name}}.
public class {{capitalise .Normalized.Name}}Results {
{{range $index, $item := .Normalized.Outputs}}public {{bindtype .Type}} {{if ne .Name ""}}{{.Name}}{{else}}Return{{$index}}{{end}};
{{end}}
}
{{end}}
// {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.Id}}.
//
// Solidity: {{.Original.String}}
public {{if gt (len .Normalized.Outputs) 1}}{{capitalise .Normalized.Name}}Results{{else}}{{range .Normalized.Outputs}}{{bindtype .Type}}{{end}}{{end}} {{.Normalized.Name}}(CallOpts opts{{range .Normalized.Inputs}}, {{bindtype .Type}} {{.Name}}{{end}}) throws Exception {
Interfaces args = Geth.newInterfaces({{(len .Normalized.Inputs)}});
{{range $index, $item := .Normalized.Inputs}}args.set({{$index}}, Geth.newInterface()); args.get({{$index}}).set{{namedtype (bindtype .Type) .Type}}({{.Name}});
{{end}}
Interfaces results = Geth.newInterfaces({{(len .Normalized.Outputs)}});
{{range $index, $item := .Normalized.Outputs}}Interface result{{$index}} = Geth.newInterface(); result{{$index}}.setDefault{{namedtype (bindtype .Type) .Type}}(); results.set({{$index}}, result{{$index}});
{{end}}
if (opts == null) {
opts = Geth.newCallOpts();
}
this.Contract.call(opts, results, "{{.Original.Name}}", args);
{{if gt (len .Normalized.Outputs) 1}}
{{capitalise .Normalized.Name}}Results result = new {{capitalise .Normalized.Name}}Results();
{{range $index, $item := .Normalized.Outputs}}result.{{if ne .Name ""}}{{.Name}}{{else}}Return{{$index}}{{end}} = results.get({{$index}}).get{{namedtype (bindtype .Type) .Type}}();
{{end}}
return result;
{{else}}{{range .Normalized.Outputs}}return results.get(0).get{{namedtype (bindtype .Type) .Type}}();{{end}}
{{end}}
}
{{end}}
{{range .Transacts}}
// {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.Id}}.
//
// Solidity: {{.Original.String}}
public Transaction {{.Normalized.Name}}(TransactOpts opts{{range .Normalized.Inputs}}, {{bindtype .Type}} {{.Name}}{{end}}) throws Exception {
Interfaces args = Geth.newInterfaces({{(len .Normalized.Inputs)}});
{{range $index, $item := .Normalized.Inputs}}args.set({{$index}}, Geth.newInterface()); args.get({{$index}}).set{{namedtype (bindtype .Type) .Type}}({{.Name}});
{{end}}
return this.Contract.transact(opts, "{{.Original.Name}}" , args);
}
{{end}}
}
{{end}}
`

189
accounts/abi/bind/topics.go Normal file
View File

@@ -0,0 +1,189 @@
// Copyright 2018 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package bind
import (
"errors"
"fmt"
"math/big"
"reflect"
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
)
// makeTopics converts a filter query argument list into a filter topic set.
func makeTopics(query ...[]interface{}) ([][]common.Hash, error) {
topics := make([][]common.Hash, len(query))
for i, filter := range query {
for _, rule := range filter {
var topic common.Hash
// Try to generate the topic based on simple types
switch rule := rule.(type) {
case common.Hash:
copy(topic[:], rule[:])
case common.Address:
copy(topic[common.HashLength-common.AddressLength:], rule[:])
case *big.Int:
blob := rule.Bytes()
copy(topic[common.HashLength-len(blob):], blob)
case bool:
if rule {
topic[common.HashLength-1] = 1
}
case int8:
blob := big.NewInt(int64(rule)).Bytes()
copy(topic[common.HashLength-len(blob):], blob)
case int16:
blob := big.NewInt(int64(rule)).Bytes()
copy(topic[common.HashLength-len(blob):], blob)
case int32:
blob := big.NewInt(int64(rule)).Bytes()
copy(topic[common.HashLength-len(blob):], blob)
case int64:
blob := big.NewInt(rule).Bytes()
copy(topic[common.HashLength-len(blob):], blob)
case uint8:
blob := new(big.Int).SetUint64(uint64(rule)).Bytes()
copy(topic[common.HashLength-len(blob):], blob)
case uint16:
blob := new(big.Int).SetUint64(uint64(rule)).Bytes()
copy(topic[common.HashLength-len(blob):], blob)
case uint32:
blob := new(big.Int).SetUint64(uint64(rule)).Bytes()
copy(topic[common.HashLength-len(blob):], blob)
case uint64:
blob := new(big.Int).SetUint64(rule).Bytes()
copy(topic[common.HashLength-len(blob):], blob)
case string:
hash := crypto.Keccak256Hash([]byte(rule))
copy(topic[:], hash[:])
case []byte:
hash := crypto.Keccak256Hash(rule)
copy(topic[:], hash[:])
default:
// Attempt to generate the topic from funky types
val := reflect.ValueOf(rule)
switch {
case val.Kind() == reflect.Array && reflect.TypeOf(rule).Elem().Kind() == reflect.Uint8:
reflect.Copy(reflect.ValueOf(topic[common.HashLength-val.Len():]), val)
default:
return nil, fmt.Errorf("unsupported indexed type: %T", rule)
}
}
topics[i] = append(topics[i], topic)
}
}
return topics, nil
}
// Big batch of reflect types for topic reconstruction.
var (
reflectHash = reflect.TypeOf(common.Hash{})
reflectAddress = reflect.TypeOf(common.Address{})
reflectBigInt = reflect.TypeOf(new(big.Int))
)
// parseTopics converts the indexed topic fields into actual log field values.
//
// Note, dynamic types cannot be reconstructed since they get mapped to Keccak256
// hashes as the topic value!
func parseTopics(out interface{}, fields abi.Arguments, topics []common.Hash) error {
// Sanity check that the fields and topics match up
if len(fields) != len(topics) {
return errors.New("topic/field count mismatch")
}
// Iterate over all the fields and reconstruct them from topics
for _, arg := range fields {
if !arg.Indexed {
return errors.New("non-indexed field in topic reconstruction")
}
field := reflect.ValueOf(out).Elem().FieldByName(capitalise(arg.Name))
// Try to parse the topic back into the fields based on primitive types
switch field.Kind() {
case reflect.Bool:
if topics[0][common.HashLength-1] == 1 {
field.Set(reflect.ValueOf(true))
}
case reflect.Int8:
num := new(big.Int).SetBytes(topics[0][:])
field.Set(reflect.ValueOf(int8(num.Int64())))
case reflect.Int16:
num := new(big.Int).SetBytes(topics[0][:])
field.Set(reflect.ValueOf(int16(num.Int64())))
case reflect.Int32:
num := new(big.Int).SetBytes(topics[0][:])
field.Set(reflect.ValueOf(int32(num.Int64())))
case reflect.Int64:
num := new(big.Int).SetBytes(topics[0][:])
field.Set(reflect.ValueOf(num.Int64()))
case reflect.Uint8:
num := new(big.Int).SetBytes(topics[0][:])
field.Set(reflect.ValueOf(uint8(num.Uint64())))
case reflect.Uint16:
num := new(big.Int).SetBytes(topics[0][:])
field.Set(reflect.ValueOf(uint16(num.Uint64())))
case reflect.Uint32:
num := new(big.Int).SetBytes(topics[0][:])
field.Set(reflect.ValueOf(uint32(num.Uint64())))
case reflect.Uint64:
num := new(big.Int).SetBytes(topics[0][:])
field.Set(reflect.ValueOf(num.Uint64()))
default:
// Ran out of plain primitive types, try custom types
switch field.Type() {
case reflectHash: // Also covers all dynamic types
field.Set(reflect.ValueOf(topics[0]))
case reflectAddress:
var addr common.Address
copy(addr[:], topics[0][common.HashLength-common.AddressLength:])
field.Set(reflect.ValueOf(addr))
case reflectBigInt:
num := new(big.Int).SetBytes(topics[0][:])
field.Set(reflect.ValueOf(num))
default:
// Ran out of custom types, try the crazies
switch {
case arg.Type.T == abi.FixedBytesTy:
reflect.Copy(field, reflect.ValueOf(topics[0][common.HashLength-arg.Type.Size:]))
default:
return fmt.Errorf("unsupported indexed type: %v", arg.Type)
}
}
}
topics = topics[1:]
}
return nil
}

76
accounts/abi/bind/util.go Normal file
View File

@@ -0,0 +1,76 @@
// Copyright 2016 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package bind
import (
"context"
"fmt"
"time"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/log"
)
// WaitMined waits for tx to be mined on the blockchain.
// It stops waiting when the context is canceled.
func WaitMined(ctx context.Context, b DeployBackend, tx *types.Transaction) (*types.Receipt, error) {
queryTicker := time.NewTicker(time.Second)
defer queryTicker.Stop()
logger := log.New("hash", tx.Hash())
for {
receipt, err := b.TransactionReceipt(ctx, tx.Hash())
if receipt != nil {
return receipt, nil
}
if err != nil {
logger.Trace("Receipt retrieval failed", "err", err)
} else {
logger.Trace("Transaction not yet mined")
}
// Wait for the next round.
select {
case <-ctx.Done():
return nil, ctx.Err()
case <-queryTicker.C:
}
}
}
// WaitDeployed waits for a contract deployment transaction and returns the on-chain
// contract address when it is mined. It stops waiting when ctx is canceled.
func WaitDeployed(ctx context.Context, b DeployBackend, tx *types.Transaction) (common.Address, error) {
if tx.To() != nil {
return common.Address{}, fmt.Errorf("tx is not contract creation")
}
receipt, err := WaitMined(ctx, b, tx)
if err != nil {
return common.Address{}, err
}
if receipt.ContractAddress == (common.Address{}) {
return common.Address{}, fmt.Errorf("zero address")
}
// Check that code has indeed been deployed at the address.
// This matters on pre-Homestead chains: OOG in the constructor
// could leave an empty account behind.
code, err := b.CodeAt(ctx, receipt.ContractAddress, nil)
if err == nil && len(code) == 0 {
err = ErrNoCodeAfterDeploy
}
return receipt.ContractAddress, err
}

View File

@@ -0,0 +1,92 @@
// Copyright 2016 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package bind_test
import (
"context"
"math/big"
"testing"
"time"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/accounts/abi/bind/backends"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
)
var testKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291")
var waitDeployedTests = map[string]struct {
code string
gas uint64
wantAddress common.Address
wantErr error
}{
"successful deploy": {
code: `6060604052600a8060106000396000f360606040526008565b00`,
gas: 3000000,
wantAddress: common.HexToAddress("0x3a220f351252089d385b29beca14e27f204c296a"),
},
"empty code": {
code: ``,
gas: 300000,
wantErr: bind.ErrNoCodeAfterDeploy,
wantAddress: common.HexToAddress("0x3a220f351252089d385b29beca14e27f204c296a"),
},
}
func TestWaitDeployed(t *testing.T) {
for name, test := range waitDeployedTests {
backend := backends.NewSimulatedBackend(core.GenesisAlloc{
crypto.PubkeyToAddress(testKey.PublicKey): {Balance: big.NewInt(10000000000)},
})
// Create the transaction.
tx := types.NewContractCreation(0, big.NewInt(0), test.gas, big.NewInt(1), common.FromHex(test.code))
tx, _ = types.SignTx(tx, types.HomesteadSigner{}, testKey)
// Wait for it to get mined in the background.
var (
err error
address common.Address
mined = make(chan struct{})
ctx = context.Background()
)
go func() {
address, err = bind.WaitDeployed(ctx, backend, tx)
close(mined)
}()
// Send and mine the transaction.
backend.SendTransaction(ctx, tx)
backend.Commit()
select {
case <-mined:
if err != test.wantErr {
t.Errorf("test %q: error mismatch: got %q, want %q", name, err, test.wantErr)
}
if address != test.wantAddress {
t.Errorf("test %q: unexpected contract address %s", name, address.Hex())
}
case <-time.After(2 * time.Second):
t.Errorf("test %q: timeout", name)
}
}
}

26
accounts/abi/doc.go Normal file
View File

@@ -0,0 +1,26 @@
// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
// Package abi implements the Ethereum ABI (Application Binary
// Interface).
//
// The Ethereum ABI is strongly typed, known at compile time
// and static. This ABI will handle basic type casting; unsigned
// to signed and visa versa. It does not handle slice casting such
// as unsigned slice to signed slice. Bit size type casting is also
// handled. ints with a bit size of 32 will be properly cast to int256,
// etc.
package abi

84
accounts/abi/error.go Normal file
View File

@@ -0,0 +1,84 @@
// Copyright 2016 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package abi
import (
"errors"
"fmt"
"reflect"
)
var (
errBadBool = errors.New("abi: improperly encoded boolean value")
)
// formatSliceString formats the reflection kind with the given slice size
// and returns a formatted string representation.
func formatSliceString(kind reflect.Kind, sliceSize int) string {
if sliceSize == -1 {
return fmt.Sprintf("[]%v", kind)
}
return fmt.Sprintf("[%d]%v", sliceSize, kind)
}
// sliceTypeCheck checks that the given slice can by assigned to the reflection
// type in t.
func sliceTypeCheck(t Type, val reflect.Value) error {
if val.Kind() != reflect.Slice && val.Kind() != reflect.Array {
return typeErr(formatSliceString(t.Kind, t.Size), val.Type())
}
if t.T == ArrayTy && val.Len() != t.Size {
return typeErr(formatSliceString(t.Elem.Kind, t.Size), formatSliceString(val.Type().Elem().Kind(), val.Len()))
}
if t.Elem.T == SliceTy {
if val.Len() > 0 {
return sliceTypeCheck(*t.Elem, val.Index(0))
}
} else if t.Elem.T == ArrayTy {
return sliceTypeCheck(*t.Elem, val.Index(0))
}
if elemKind := val.Type().Elem().Kind(); elemKind != t.Elem.Kind {
return typeErr(formatSliceString(t.Elem.Kind, t.Size), val.Type())
}
return nil
}
// typeCheck checks that the given reflection value can be assigned to the reflection
// type in t.
func typeCheck(t Type, value reflect.Value) error {
if t.T == SliceTy || t.T == ArrayTy {
return sliceTypeCheck(t, value)
}
// Check base type validity. Element types will be checked later on.
if t.Kind != value.Kind() {
return typeErr(t.Kind, value.Kind())
} else if t.T == FixedBytesTy && t.Size != value.Len() {
return typeErr(t.Type, value.Type())
} else {
return nil
}
}
// typeErr returns a formatted type casting error.
func typeErr(expected, got interface{}) error {
return fmt.Errorf("abi: cannot use %v as type %v as argument", got, expected)
}

57
accounts/abi/event.go Normal file
View File

@@ -0,0 +1,57 @@
// Copyright 2016 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package abi
import (
"fmt"
"strings"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
)
// Event is an event potentially triggered by the EVM's LOG mechanism. The Event
// holds type information (inputs) about the yielded output. Anonymous events
// don't get the signature canonical representation as the first LOG topic.
type Event struct {
Name string
Anonymous bool
Inputs Arguments
}
func (event Event) String() string {
inputs := make([]string, len(event.Inputs))
for i, input := range event.Inputs {
inputs[i] = fmt.Sprintf("%v %v", input.Name, input.Type)
if input.Indexed {
inputs[i] = fmt.Sprintf("%v indexed %v", input.Name, input.Type)
}
}
return fmt.Sprintf("event %v(%v)", event.Name, strings.Join(inputs, ", "))
}
// Id returns the canonical representation of the event's signature used by the
// abi definition to identify event names and types.
func (e Event) Id() common.Hash {
types := make([]string, len(e.Inputs))
i := 0
for _, input := range e.Inputs {
types[i] = input.Type.String()
i++
}
return common.BytesToHash(crypto.Keccak256([]byte(fmt.Sprintf("%v(%v)", e.Name, strings.Join(types, ",")))))
}

316
accounts/abi/event_test.go Normal file
View File

@@ -0,0 +1,316 @@
// Copyright 2016 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package abi
import (
"bytes"
"encoding/hex"
"encoding/json"
"math/big"
"reflect"
"strings"
"testing"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
var jsonEventTransfer = []byte(`{
"anonymous": false,
"inputs": [
{
"indexed": true, "name": "from", "type": "address"
}, {
"indexed": true, "name": "to", "type": "address"
}, {
"indexed": false, "name": "value", "type": "uint256"
}],
"name": "Transfer",
"type": "event"
}`)
var jsonEventPledge = []byte(`{
"anonymous": false,
"inputs": [{
"indexed": false, "name": "who", "type": "address"
}, {
"indexed": false, "name": "wad", "type": "uint128"
}, {
"indexed": false, "name": "currency", "type": "bytes3"
}],
"name": "Pledge",
"type": "event"
}`)
// 1000000
var transferData1 = "00000000000000000000000000000000000000000000000000000000000f4240"
// "0x00Ce0d46d924CC8437c806721496599FC3FFA268", 2218516807680, "usd"
var pledgeData1 = "00000000000000000000000000ce0d46d924cc8437c806721496599fc3ffa2680000000000000000000000000000000000000000000000000000020489e800007573640000000000000000000000000000000000000000000000000000000000"
func TestEventId(t *testing.T) {
var table = []struct {
definition string
expectations map[string]common.Hash
}{
{
definition: `[
{ "type" : "event", "name" : "balance", "inputs": [{ "name" : "in", "type": "uint256" }] },
{ "type" : "event", "name" : "check", "inputs": [{ "name" : "t", "type": "address" }, { "name": "b", "type": "uint256" }] }
]`,
expectations: map[string]common.Hash{
"balance": crypto.Keccak256Hash([]byte("balance(uint256)")),
"check": crypto.Keccak256Hash([]byte("check(address,uint256)")),
},
},
}
for _, test := range table {
abi, err := JSON(strings.NewReader(test.definition))
if err != nil {
t.Fatal(err)
}
for name, event := range abi.Events {
if event.Id() != test.expectations[name] {
t.Errorf("expected id to be %x, got %x", test.expectations[name], event.Id())
}
}
}
}
// TestEventMultiValueWithArrayUnpack verifies that array fields will be counted after parsing array.
func TestEventMultiValueWithArrayUnpack(t *testing.T) {
definition := `[{"name": "test", "type": "event", "inputs": [{"indexed": false, "name":"value1", "type":"uint8[2]"},{"indexed": false, "name":"value2", "type":"uint8"}]}]`
type testStruct struct {
Value1 [2]uint8
Value2 uint8
}
abi, err := JSON(strings.NewReader(definition))
require.NoError(t, err)
var b bytes.Buffer
var i uint8 = 1
for ; i <= 3; i++ {
b.Write(packNum(reflect.ValueOf(i)))
}
var rst testStruct
require.NoError(t, abi.Unpack(&rst, "test", b.Bytes()))
require.Equal(t, [2]uint8{1, 2}, rst.Value1)
require.Equal(t, uint8(3), rst.Value2)
}
func TestEventTupleUnpack(t *testing.T) {
type EventTransfer struct {
Value *big.Int
}
type EventPledge struct {
Who common.Address
Wad *big.Int
Currency [3]byte
}
type BadEventPledge struct {
Who string
Wad int
Currency [3]byte
}
bigint := new(big.Int)
bigintExpected := big.NewInt(1000000)
bigintExpected2 := big.NewInt(2218516807680)
addr := common.HexToAddress("0x00Ce0d46d924CC8437c806721496599FC3FFA268")
var testCases = []struct {
data string
dest interface{}
expected interface{}
jsonLog []byte
error string
name string
}{{
transferData1,
&EventTransfer{},
&EventTransfer{Value: bigintExpected},
jsonEventTransfer,
"",
"Can unpack ERC20 Transfer event into structure",
}, {
transferData1,
&[]interface{}{&bigint},
&[]interface{}{&bigintExpected},
jsonEventTransfer,
"",
"Can unpack ERC20 Transfer event into slice",
}, {
pledgeData1,
&EventPledge{},
&EventPledge{
addr,
bigintExpected2,
[3]byte{'u', 's', 'd'}},
jsonEventPledge,
"",
"Can unpack Pledge event into structure",
}, {
pledgeData1,
&[]interface{}{&common.Address{}, &bigint, &[3]byte{}},
&[]interface{}{
&addr,
&bigintExpected2,
&[3]byte{'u', 's', 'd'}},
jsonEventPledge,
"",
"Can unpack Pledge event into slice",
}, {
pledgeData1,
&[3]interface{}{&common.Address{}, &bigint, &[3]byte{}},
&[3]interface{}{
&addr,
&bigintExpected2,
&[3]byte{'u', 's', 'd'}},
jsonEventPledge,
"",
"Can unpack Pledge event into an array",
}, {
pledgeData1,
&[]interface{}{new(int), 0, 0},
&[]interface{}{},
jsonEventPledge,
"abi: cannot unmarshal common.Address in to int",
"Can not unpack Pledge event into slice with wrong types",
}, {
pledgeData1,
&BadEventPledge{},
&BadEventPledge{},
jsonEventPledge,
"abi: cannot unmarshal common.Address in to string",
"Can not unpack Pledge event into struct with wrong filed types",
}, {
pledgeData1,
&[]interface{}{common.Address{}, new(big.Int)},
&[]interface{}{},
jsonEventPledge,
"abi: insufficient number of elements in the list/array for unpack, want 3, got 2",
"Can not unpack Pledge event into too short slice",
}, {
pledgeData1,
new(map[string]interface{}),
&[]interface{}{},
jsonEventPledge,
"abi: cannot unmarshal tuple into map[string]interface {}",
"Can not unpack Pledge event into map",
}}
for _, tc := range testCases {
assert := assert.New(t)
tc := tc
t.Run(tc.name, func(t *testing.T) {
err := unpackTestEventData(tc.dest, tc.data, tc.jsonLog, assert)
if tc.error == "" {
assert.Nil(err, "Should be able to unpack event data.")
assert.Equal(tc.expected, tc.dest, tc.name)
} else {
assert.EqualError(err, tc.error)
}
})
}
}
func unpackTestEventData(dest interface{}, hexData string, jsonEvent []byte, assert *assert.Assertions) error {
data, err := hex.DecodeString(hexData)
assert.NoError(err, "Hex data should be a correct hex-string")
var e Event
assert.NoError(json.Unmarshal(jsonEvent, &e), "Should be able to unmarshal event ABI")
a := ABI{Events: map[string]Event{"e": e}}
return a.Unpack(dest, "e", data)
}
/*
Taken from
https://github.com/ethereum/go-ethereum/pull/15568
*/
type testResult struct {
Values [2]*big.Int
Value1 *big.Int
Value2 *big.Int
}
type testCase struct {
definition string
want testResult
}
func (tc testCase) encoded(intType, arrayType Type) []byte {
var b bytes.Buffer
if tc.want.Value1 != nil {
val, _ := intType.pack(reflect.ValueOf(tc.want.Value1))
b.Write(val)
}
if !reflect.DeepEqual(tc.want.Values, [2]*big.Int{nil, nil}) {
val, _ := arrayType.pack(reflect.ValueOf(tc.want.Values))
b.Write(val)
}
if tc.want.Value2 != nil {
val, _ := intType.pack(reflect.ValueOf(tc.want.Value2))
b.Write(val)
}
return b.Bytes()
}
// TestEventUnpackIndexed verifies that indexed field will be skipped by event decoder.
func TestEventUnpackIndexed(t *testing.T) {
definition := `[{"name": "test", "type": "event", "inputs": [{"indexed": true, "name":"value1", "type":"uint8"},{"indexed": false, "name":"value2", "type":"uint8"}]}]`
type testStruct struct {
Value1 uint8
Value2 uint8
}
abi, err := JSON(strings.NewReader(definition))
require.NoError(t, err)
var b bytes.Buffer
b.Write(packNum(reflect.ValueOf(uint8(8))))
var rst testStruct
require.NoError(t, abi.Unpack(&rst, "test", b.Bytes()))
require.Equal(t, uint8(0), rst.Value1)
require.Equal(t, uint8(8), rst.Value2)
}
// TestEventIndexedWithArrayUnpack verifies that decoder will not overlow when static array is indexed input.
func TestEventIndexedWithArrayUnpack(t *testing.T) {
definition := `[{"name": "test", "type": "event", "inputs": [{"indexed": true, "name":"value1", "type":"uint8[2]"},{"indexed": false, "name":"value2", "type":"string"}]}]`
type testStruct struct {
Value1 [2]uint8
Value2 string
}
abi, err := JSON(strings.NewReader(definition))
require.NoError(t, err)
var b bytes.Buffer
stringOut := "abc"
// number of fields that will be encoded * 32
b.Write(packNum(reflect.ValueOf(32)))
b.Write(packNum(reflect.ValueOf(len(stringOut))))
b.Write(common.RightPadBytes([]byte(stringOut), 32))
var rst testStruct
require.NoError(t, abi.Unpack(&rst, "test", b.Bytes()))
require.Equal(t, [2]uint8{0, 0}, rst.Value1)
require.Equal(t, stringOut, rst.Value2)
}

79
accounts/abi/method.go Normal file
View File

@@ -0,0 +1,79 @@
// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package abi
import (
"fmt"
"strings"
"github.com/ethereum/go-ethereum/crypto"
)
// Method represents a callable given a `Name` and whether the method is a constant.
// If the method is `Const` no transaction needs to be created for this
// particular Method call. It can easily be simulated using a local VM.
// For example a `Balance()` method only needs to retrieve something
// from the storage and therefor requires no Tx to be send to the
// network. A method such as `Transact` does require a Tx and thus will
// be flagged `true`.
// Input specifies the required input parameters for this gives method.
type Method struct {
Name string
Const bool
Inputs Arguments
Outputs Arguments
}
// Sig returns the methods string signature according to the ABI spec.
//
// Example
//
// function foo(uint32 a, int b) = "foo(uint32,int256)"
//
// Please note that "int" is substitute for its canonical representation "int256"
func (method Method) Sig() string {
types := make([]string, len(method.Inputs))
i := 0
for _, input := range method.Inputs {
types[i] = input.Type.String()
i++
}
return fmt.Sprintf("%v(%v)", method.Name, strings.Join(types, ","))
}
func (method Method) String() string {
inputs := make([]string, len(method.Inputs))
for i, input := range method.Inputs {
inputs[i] = fmt.Sprintf("%v %v", input.Name, input.Type)
}
outputs := make([]string, len(method.Outputs))
for i, output := range method.Outputs {
if len(output.Name) > 0 {
outputs[i] = fmt.Sprintf("%v ", output.Name)
}
outputs[i] += output.Type.String()
}
constant := ""
if method.Const {
constant = "constant "
}
return fmt.Sprintf("function %v(%v) %sreturns(%v)", method.Name, strings.Join(inputs, ", "), constant, strings.Join(outputs, ", "))
}
func (method Method) Id() []byte {
return crypto.Keccak256([]byte(method.Sig()))[:4]
}

59
accounts/abi/numbers.go Normal file
View File

@@ -0,0 +1,59 @@
// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package abi
import (
"math/big"
"reflect"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/math"
)
var (
big_t = reflect.TypeOf(&big.Int{})
derefbig_t = reflect.TypeOf(big.Int{})
uint8_t = reflect.TypeOf(uint8(0))
uint16_t = reflect.TypeOf(uint16(0))
uint32_t = reflect.TypeOf(uint32(0))
uint64_t = reflect.TypeOf(uint64(0))
int_t = reflect.TypeOf(int(0))
int8_t = reflect.TypeOf(int8(0))
int16_t = reflect.TypeOf(int16(0))
int32_t = reflect.TypeOf(int32(0))
int64_t = reflect.TypeOf(int64(0))
address_t = reflect.TypeOf(common.Address{})
int_ts = reflect.TypeOf([]int(nil))
int8_ts = reflect.TypeOf([]int8(nil))
int16_ts = reflect.TypeOf([]int16(nil))
int32_ts = reflect.TypeOf([]int32(nil))
int64_ts = reflect.TypeOf([]int64(nil))
)
// U256 converts a big Int into a 256bit EVM number.
func U256(n *big.Int) []byte {
return math.PaddedBigBytes(math.U256(n), 32)
}
// checks whether the given reflect value is signed. This also works for slices with a number type
func isSigned(v reflect.Value) bool {
switch v.Type() {
case int_ts, int8_ts, int16_ts, int32_ts, int64_ts, int_t, int8_t, int16_t, int32_t, int64_t:
return true
}
return false
}

View File

@@ -0,0 +1,44 @@
// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package abi
import (
"bytes"
"math/big"
"reflect"
"testing"
)
func TestNumberTypes(t *testing.T) {
ubytes := make([]byte, 32)
ubytes[31] = 1
unsigned := U256(big.NewInt(1))
if !bytes.Equal(unsigned, ubytes) {
t.Errorf("expected %x got %x", ubytes, unsigned)
}
}
func TestSigned(t *testing.T) {
if isSigned(reflect.ValueOf(uint(10))) {
t.Error("signed")
}
if !isSigned(reflect.ValueOf(int(10))) {
t.Error("not signed")
}
}

81
accounts/abi/pack.go Normal file
View File

@@ -0,0 +1,81 @@
// Copyright 2016 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package abi
import (
"math/big"
"reflect"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/math"
)
// packBytesSlice packs the given bytes as [L, V] as the canonical representation
// bytes slice
func packBytesSlice(bytes []byte, l int) []byte {
len := packNum(reflect.ValueOf(l))
return append(len, common.RightPadBytes(bytes, (l+31)/32*32)...)
}
// packElement packs the given reflect value according to the abi specification in
// t.
func packElement(t Type, reflectValue reflect.Value) []byte {
switch t.T {
case IntTy, UintTy:
return packNum(reflectValue)
case StringTy:
return packBytesSlice([]byte(reflectValue.String()), reflectValue.Len())
case AddressTy:
if reflectValue.Kind() == reflect.Array {
reflectValue = mustArrayToByteSlice(reflectValue)
}
return common.LeftPadBytes(reflectValue.Bytes(), 32)
case BoolTy:
if reflectValue.Bool() {
return math.PaddedBigBytes(common.Big1, 32)
}
return math.PaddedBigBytes(common.Big0, 32)
case BytesTy:
if reflectValue.Kind() == reflect.Array {
reflectValue = mustArrayToByteSlice(reflectValue)
}
return packBytesSlice(reflectValue.Bytes(), reflectValue.Len())
case FixedBytesTy, FunctionTy:
if reflectValue.Kind() == reflect.Array {
reflectValue = mustArrayToByteSlice(reflectValue)
}
return common.RightPadBytes(reflectValue.Bytes(), 32)
default:
panic("abi: fatal error")
}
}
// packNum packs the given number (using the reflect value) and will cast it to appropriate number representation
func packNum(value reflect.Value) []byte {
switch kind := value.Kind(); kind {
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
return U256(new(big.Int).SetUint64(value.Uint()))
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
return U256(big.NewInt(value.Int()))
case reflect.Ptr:
return U256(value.Interface().(*big.Int))
default:
panic("abi: fatal error")
}
}

438
accounts/abi/pack_test.go Normal file
View File

@@ -0,0 +1,438 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package abi
import (
"bytes"
"math"
"math/big"
"reflect"
"strings"
"testing"
"github.com/ethereum/go-ethereum/common"
)
func TestPack(t *testing.T) {
for i, test := range []struct {
typ string
input interface{}
output []byte
}{
{
"uint8",
uint8(2),
common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000002"),
},
{
"uint8[]",
[]uint8{1, 2},
common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002"),
},
{
"uint16",
uint16(2),
common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000002"),
},
{
"uint16[]",
[]uint16{1, 2},
common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002"),
},
{
"uint32",
uint32(2),
common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000002"),
},
{
"uint32[]",
[]uint32{1, 2},
common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002"),
},
{
"uint64",
uint64(2),
common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000002"),
},
{
"uint64[]",
[]uint64{1, 2},
common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002"),
},
{
"uint256",
big.NewInt(2),
common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000002"),
},
{
"uint256[]",
[]*big.Int{big.NewInt(1), big.NewInt(2)},
common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002"),
},
{
"int8",
int8(2),
common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000002"),
},
{
"int8[]",
[]int8{1, 2},
common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002"),
},
{
"int16",
int16(2),
common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000002"),
},
{
"int16[]",
[]int16{1, 2},
common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002"),
},
{
"int32",
int32(2),
common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000002"),
},
{
"int32[]",
[]int32{1, 2},
common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002"),
},
{
"int64",
int64(2),
common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000002"),
},
{
"int64[]",
[]int64{1, 2},
common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002"),
},
{
"int256",
big.NewInt(2),
common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000002"),
},
{
"int256[]",
[]*big.Int{big.NewInt(1), big.NewInt(2)},
common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002"),
},
{
"bytes1",
[1]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes2",
[2]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes3",
[3]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes4",
[4]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes5",
[5]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes6",
[6]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes7",
[7]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes8",
[8]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes9",
[9]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes10",
[10]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes11",
[11]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes12",
[12]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes13",
[13]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes14",
[14]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes15",
[15]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes16",
[16]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes17",
[17]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes18",
[18]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes19",
[19]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes20",
[20]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes21",
[21]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes22",
[22]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes23",
[23]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes24",
[24]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes24",
[24]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes25",
[25]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes26",
[26]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes27",
[27]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes28",
[28]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes29",
[29]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes30",
[30]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes31",
[31]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"bytes32",
[32]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"address[]",
[]common.Address{{1}, {2}},
common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000000200000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000"),
},
{
"bytes32[]",
[]common.Hash{{1}, {2}},
common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000000201000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000"),
},
{
"function",
[24]byte{1},
common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
"string",
"foobar",
common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000006666f6f6261720000000000000000000000000000000000000000000000000000"),
},
} {
typ, err := NewType(test.typ)
if err != nil {
t.Fatalf("%v failed. Unexpected parse error: %v", i, err)
}
output, err := typ.pack(reflect.ValueOf(test.input))
if err != nil {
t.Fatalf("%v failed. Unexpected pack error: %v", i, err)
}
if !bytes.Equal(output, test.output) {
t.Errorf("%d failed. Expected bytes: '%x' Got: '%x'", i, test.output, output)
}
}
}
func TestMethodPack(t *testing.T) {
abi, err := JSON(strings.NewReader(jsondata2))
if err != nil {
t.Fatal(err)
}
sig := abi.Methods["slice"].Id()
sig = append(sig, common.LeftPadBytes([]byte{1}, 32)...)
sig = append(sig, common.LeftPadBytes([]byte{2}, 32)...)
packed, err := abi.Pack("slice", []uint32{1, 2})
if err != nil {
t.Error(err)
}
if !bytes.Equal(packed, sig) {
t.Errorf("expected %x got %x", sig, packed)
}
var addrA, addrB = common.Address{1}, common.Address{2}
sig = abi.Methods["sliceAddress"].Id()
sig = append(sig, common.LeftPadBytes([]byte{32}, 32)...)
sig = append(sig, common.LeftPadBytes([]byte{2}, 32)...)
sig = append(sig, common.LeftPadBytes(addrA[:], 32)...)
sig = append(sig, common.LeftPadBytes(addrB[:], 32)...)
packed, err = abi.Pack("sliceAddress", []common.Address{addrA, addrB})
if err != nil {
t.Fatal(err)
}
if !bytes.Equal(packed, sig) {
t.Errorf("expected %x got %x", sig, packed)
}
var addrC, addrD = common.Address{3}, common.Address{4}
sig = abi.Methods["sliceMultiAddress"].Id()
sig = append(sig, common.LeftPadBytes([]byte{64}, 32)...)
sig = append(sig, common.LeftPadBytes([]byte{160}, 32)...)
sig = append(sig, common.LeftPadBytes([]byte{2}, 32)...)
sig = append(sig, common.LeftPadBytes(addrA[:], 32)...)
sig = append(sig, common.LeftPadBytes(addrB[:], 32)...)
sig = append(sig, common.LeftPadBytes([]byte{2}, 32)...)
sig = append(sig, common.LeftPadBytes(addrC[:], 32)...)
sig = append(sig, common.LeftPadBytes(addrD[:], 32)...)
packed, err = abi.Pack("sliceMultiAddress", []common.Address{addrA, addrB}, []common.Address{addrC, addrD})
if err != nil {
t.Fatal(err)
}
if !bytes.Equal(packed, sig) {
t.Errorf("expected %x got %x", sig, packed)
}
sig = abi.Methods["slice256"].Id()
sig = append(sig, common.LeftPadBytes([]byte{1}, 32)...)
sig = append(sig, common.LeftPadBytes([]byte{2}, 32)...)
packed, err = abi.Pack("slice256", []*big.Int{big.NewInt(1), big.NewInt(2)})
if err != nil {
t.Error(err)
}
if !bytes.Equal(packed, sig) {
t.Errorf("expected %x got %x", sig, packed)
}
}
func TestPackNumber(t *testing.T) {
tests := []struct {
value reflect.Value
packed []byte
}{
// Protocol limits
{reflect.ValueOf(0), common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000000")},
{reflect.ValueOf(1), common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000001")},
{reflect.ValueOf(-1), common.Hex2Bytes("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")},
// Type corner cases
{reflect.ValueOf(uint8(math.MaxUint8)), common.Hex2Bytes("00000000000000000000000000000000000000000000000000000000000000ff")},
{reflect.ValueOf(uint16(math.MaxUint16)), common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000ffff")},
{reflect.ValueOf(uint32(math.MaxUint32)), common.Hex2Bytes("00000000000000000000000000000000000000000000000000000000ffffffff")},
{reflect.ValueOf(uint64(math.MaxUint64)), common.Hex2Bytes("000000000000000000000000000000000000000000000000ffffffffffffffff")},
{reflect.ValueOf(int8(math.MaxInt8)), common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000007f")},
{reflect.ValueOf(int16(math.MaxInt16)), common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000007fff")},
{reflect.ValueOf(int32(math.MaxInt32)), common.Hex2Bytes("000000000000000000000000000000000000000000000000000000007fffffff")},
{reflect.ValueOf(int64(math.MaxInt64)), common.Hex2Bytes("0000000000000000000000000000000000000000000000007fffffffffffffff")},
{reflect.ValueOf(int8(math.MinInt8)), common.Hex2Bytes("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80")},
{reflect.ValueOf(int16(math.MinInt16)), common.Hex2Bytes("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000")},
{reflect.ValueOf(int32(math.MinInt32)), common.Hex2Bytes("ffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000")},
{reflect.ValueOf(int64(math.MinInt64)), common.Hex2Bytes("ffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000")},
}
for i, tt := range tests {
packed := packNum(tt.value)
if !bytes.Equal(packed, tt.packed) {
t.Errorf("test %d: pack mismatch: have %x, want %x", i, packed, tt.packed)
}
}
}

112
accounts/abi/reflect.go Normal file
View File

@@ -0,0 +1,112 @@
// Copyright 2016 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package abi
import (
"fmt"
"reflect"
)
// indirect recursively dereferences the value until it either gets the value
// or finds a big.Int
func indirect(v reflect.Value) reflect.Value {
if v.Kind() == reflect.Ptr && v.Elem().Type() != derefbig_t {
return indirect(v.Elem())
}
return v
}
// reflectIntKind returns the reflect using the given size and
// unsignedness.
func reflectIntKindAndType(unsigned bool, size int) (reflect.Kind, reflect.Type) {
switch size {
case 8:
if unsigned {
return reflect.Uint8, uint8_t
}
return reflect.Int8, int8_t
case 16:
if unsigned {
return reflect.Uint16, uint16_t
}
return reflect.Int16, int16_t
case 32:
if unsigned {
return reflect.Uint32, uint32_t
}
return reflect.Int32, int32_t
case 64:
if unsigned {
return reflect.Uint64, uint64_t
}
return reflect.Int64, int64_t
}
return reflect.Ptr, big_t
}
// mustArrayToBytesSlice creates a new byte slice with the exact same size as value
// and copies the bytes in value to the new slice.
func mustArrayToByteSlice(value reflect.Value) reflect.Value {
slice := reflect.MakeSlice(reflect.TypeOf([]byte{}), value.Len(), value.Len())
reflect.Copy(slice, value)
return slice
}
// set attempts to assign src to dst by either setting, copying or otherwise.
//
// set is a bit more lenient when it comes to assignment and doesn't force an as
// strict ruleset as bare `reflect` does.
func set(dst, src reflect.Value, output Argument) error {
dstType := dst.Type()
srcType := src.Type()
switch {
case dstType.AssignableTo(srcType):
dst.Set(src)
case dstType.Kind() == reflect.Interface:
dst.Set(src)
case dstType.Kind() == reflect.Ptr:
return set(dst.Elem(), src, output)
default:
return fmt.Errorf("abi: cannot unmarshal %v in to %v", src.Type(), dst.Type())
}
return nil
}
// requireAssignable assures that `dest` is a pointer and it's not an interface.
func requireAssignable(dst, src reflect.Value) error {
if dst.Kind() != reflect.Ptr && dst.Kind() != reflect.Interface {
return fmt.Errorf("abi: cannot unmarshal %v into %v", src.Type(), dst.Type())
}
return nil
}
// requireUnpackKind verifies preconditions for unpacking `args` into `kind`
func requireUnpackKind(v reflect.Value, t reflect.Type, k reflect.Kind,
args Arguments) error {
switch k {
case reflect.Struct:
case reflect.Slice, reflect.Array:
if minLen := args.LengthNonIndexed(); v.Len() < minLen {
return fmt.Errorf("abi: insufficient number of elements in the list/array for unpack, want %d, got %d",
minLen, v.Len())
}
default:
return fmt.Errorf("abi: cannot unmarshal tuple into %v", t)
}
return nil
}

204
accounts/abi/type.go Normal file
View File

@@ -0,0 +1,204 @@
// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package abi
import (
"fmt"
"reflect"
"regexp"
"strconv"
"strings"
)
// Type enumerator
const (
IntTy byte = iota
UintTy
BoolTy
StringTy
SliceTy
ArrayTy
AddressTy
FixedBytesTy
BytesTy
HashTy
FixedPointTy
FunctionTy
)
// Type is the reflection of the supported argument type
type Type struct {
Elem *Type
Kind reflect.Kind
Type reflect.Type
Size int
T byte // Our own type checking
stringKind string // holds the unparsed string for deriving signatures
}
var (
// typeRegex parses the abi sub types
typeRegex = regexp.MustCompile("([a-zA-Z]+)(([0-9]+)(x([0-9]+))?)?")
)
// NewType creates a new reflection type of abi type given in t.
func NewType(t string) (typ Type, err error) {
// check that array brackets are equal if they exist
if strings.Count(t, "[") != strings.Count(t, "]") {
return Type{}, fmt.Errorf("invalid arg type in abi")
}
typ.stringKind = t
// if there are brackets, get ready to go into slice/array mode and
// recursively create the type
if strings.Count(t, "[") != 0 {
i := strings.LastIndex(t, "[")
// recursively embed the type
embeddedType, err := NewType(t[:i])
if err != nil {
return Type{}, err
}
// grab the last cell and create a type from there
sliced := t[i:]
// grab the slice size with regexp
re := regexp.MustCompile("[0-9]+")
intz := re.FindAllString(sliced, -1)
if len(intz) == 0 {
// is a slice
typ.T = SliceTy
typ.Kind = reflect.Slice
typ.Elem = &embeddedType
typ.Type = reflect.SliceOf(embeddedType.Type)
} else if len(intz) == 1 {
// is a array
typ.T = ArrayTy
typ.Kind = reflect.Array
typ.Elem = &embeddedType
typ.Size, err = strconv.Atoi(intz[0])
if err != nil {
return Type{}, fmt.Errorf("abi: error parsing variable size: %v", err)
}
typ.Type = reflect.ArrayOf(typ.Size, embeddedType.Type)
} else {
return Type{}, fmt.Errorf("invalid formatting of array type")
}
return typ, err
}
// parse the type and size of the abi-type.
parsedType := typeRegex.FindAllStringSubmatch(t, -1)[0]
// varSize is the size of the variable
var varSize int
if len(parsedType[3]) > 0 {
var err error
varSize, err = strconv.Atoi(parsedType[2])
if err != nil {
return Type{}, fmt.Errorf("abi: error parsing variable size: %v", err)
}
} else {
if parsedType[0] == "uint" || parsedType[0] == "int" {
// this should fail because it means that there's something wrong with
// the abi type (the compiler should always format it to the size...always)
return Type{}, fmt.Errorf("unsupported arg type: %s", t)
}
}
// varType is the parsed abi type
switch varType := parsedType[1]; varType {
case "int":
typ.Kind, typ.Type = reflectIntKindAndType(false, varSize)
typ.Size = varSize
typ.T = IntTy
case "uint":
typ.Kind, typ.Type = reflectIntKindAndType(true, varSize)
typ.Size = varSize
typ.T = UintTy
case "bool":
typ.Kind = reflect.Bool
typ.T = BoolTy
typ.Type = reflect.TypeOf(bool(false))
case "address":
typ.Kind = reflect.Array
typ.Type = address_t
typ.Size = 20
typ.T = AddressTy
case "string":
typ.Kind = reflect.String
typ.Type = reflect.TypeOf("")
typ.T = StringTy
case "bytes":
if varSize == 0 {
typ.T = BytesTy
typ.Kind = reflect.Slice
typ.Type = reflect.SliceOf(reflect.TypeOf(byte(0)))
} else {
typ.T = FixedBytesTy
typ.Kind = reflect.Array
typ.Size = varSize
typ.Type = reflect.ArrayOf(varSize, reflect.TypeOf(byte(0)))
}
case "function":
typ.Kind = reflect.Array
typ.T = FunctionTy
typ.Size = 24
typ.Type = reflect.ArrayOf(24, reflect.TypeOf(byte(0)))
default:
return Type{}, fmt.Errorf("unsupported arg type: %s", t)
}
return
}
// String implements Stringer
func (t Type) String() (out string) {
return t.stringKind
}
func (t Type) pack(v reflect.Value) ([]byte, error) {
// dereference pointer first if it's a pointer
v = indirect(v)
if err := typeCheck(t, v); err != nil {
return nil, err
}
if t.T == SliceTy || t.T == ArrayTy {
var packed []byte
for i := 0; i < v.Len(); i++ {
val, err := t.Elem.pack(v.Index(i))
if err != nil {
return nil, err
}
packed = append(packed, val...)
}
if t.T == SliceTy {
return packBytesSlice(packed, v.Len()), nil
} else if t.T == ArrayTy {
return packed, nil
}
}
return packElement(t, v), nil
}
// requireLengthPrefix returns whether the type requires any sort of length
// prefixing.
func (t Type) requiresLengthPrefix() bool {
return t.T == StringTy || t.T == BytesTy || t.T == SliceTy
}

280
accounts/abi/type_test.go Normal file
View File

@@ -0,0 +1,280 @@
// Copyright 2016 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package abi
import (
"math/big"
"reflect"
"testing"
"github.com/davecgh/go-spew/spew"
"github.com/ethereum/go-ethereum/common"
)
// typeWithoutStringer is a alias for the Type type which simply doesn't implement
// the stringer interface to allow printing type details in the tests below.
type typeWithoutStringer Type
// Tests that all allowed types get recognized by the type parser.
func TestTypeRegexp(t *testing.T) {
tests := []struct {
blob string
kind Type
}{
{"bool", Type{Kind: reflect.Bool, T: BoolTy, Type: reflect.TypeOf(bool(false)), stringKind: "bool"}},
{"bool[]", Type{Kind: reflect.Slice, T: SliceTy, Type: reflect.TypeOf([]bool(nil)), Elem: &Type{Kind: reflect.Bool, T: BoolTy, Type: reflect.TypeOf(bool(false)), stringKind: "bool"}, stringKind: "bool[]"}},
{"bool[2]", Type{Size: 2, Kind: reflect.Array, T: ArrayTy, Type: reflect.TypeOf([2]bool{}), Elem: &Type{Kind: reflect.Bool, T: BoolTy, Type: reflect.TypeOf(bool(false)), stringKind: "bool"}, stringKind: "bool[2]"}},
{"bool[2][]", Type{Kind: reflect.Slice, T: SliceTy, Type: reflect.TypeOf([][2]bool{}), Elem: &Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2]bool{}), Elem: &Type{Kind: reflect.Bool, T: BoolTy, Type: reflect.TypeOf(bool(false)), stringKind: "bool"}, stringKind: "bool[2]"}, stringKind: "bool[2][]"}},
{"bool[][]", Type{Kind: reflect.Slice, T: SliceTy, Type: reflect.TypeOf([][]bool{}), Elem: &Type{Kind: reflect.Slice, T: SliceTy, Type: reflect.TypeOf([]bool{}), Elem: &Type{Kind: reflect.Bool, T: BoolTy, Type: reflect.TypeOf(bool(false)), stringKind: "bool"}, stringKind: "bool[]"}, stringKind: "bool[][]"}},
{"bool[][2]", Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2][]bool{}), Elem: &Type{Kind: reflect.Slice, T: SliceTy, Type: reflect.TypeOf([]bool{}), Elem: &Type{Kind: reflect.Bool, T: BoolTy, Type: reflect.TypeOf(bool(false)), stringKind: "bool"}, stringKind: "bool[]"}, stringKind: "bool[][2]"}},
{"bool[2][2]", Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2][2]bool{}), Elem: &Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2]bool{}), Elem: &Type{Kind: reflect.Bool, T: BoolTy, Type: reflect.TypeOf(bool(false)), stringKind: "bool"}, stringKind: "bool[2]"}, stringKind: "bool[2][2]"}},
{"bool[2][][2]", Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2][][2]bool{}), Elem: &Type{Kind: reflect.Slice, T: SliceTy, Type: reflect.TypeOf([][2]bool{}), Elem: &Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2]bool{}), Elem: &Type{Kind: reflect.Bool, T: BoolTy, Type: reflect.TypeOf(bool(false)), stringKind: "bool"}, stringKind: "bool[2]"}, stringKind: "bool[2][]"}, stringKind: "bool[2][][2]"}},
{"bool[2][2][2]", Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2][2][2]bool{}), Elem: &Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2][2]bool{}), Elem: &Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2]bool{}), Elem: &Type{Kind: reflect.Bool, T: BoolTy, Type: reflect.TypeOf(bool(false)), stringKind: "bool"}, stringKind: "bool[2]"}, stringKind: "bool[2][2]"}, stringKind: "bool[2][2][2]"}},
{"bool[][][]", Type{T: SliceTy, Kind: reflect.Slice, Type: reflect.TypeOf([][][]bool{}), Elem: &Type{T: SliceTy, Kind: reflect.Slice, Type: reflect.TypeOf([][]bool{}), Elem: &Type{T: SliceTy, Kind: reflect.Slice, Type: reflect.TypeOf([]bool{}), Elem: &Type{Kind: reflect.Bool, T: BoolTy, Type: reflect.TypeOf(bool(false)), stringKind: "bool"}, stringKind: "bool[]"}, stringKind: "bool[][]"}, stringKind: "bool[][][]"}},
{"bool[][2][]", Type{T: SliceTy, Kind: reflect.Slice, Type: reflect.TypeOf([][2][]bool{}), Elem: &Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2][]bool{}), Elem: &Type{T: SliceTy, Kind: reflect.Slice, Type: reflect.TypeOf([]bool{}), Elem: &Type{Kind: reflect.Bool, T: BoolTy, Type: reflect.TypeOf(bool(false)), stringKind: "bool"}, stringKind: "bool[]"}, stringKind: "bool[][2]"}, stringKind: "bool[][2][]"}},
{"int8", Type{Kind: reflect.Int8, Type: int8_t, Size: 8, T: IntTy, stringKind: "int8"}},
{"int16", Type{Kind: reflect.Int16, Type: int16_t, Size: 16, T: IntTy, stringKind: "int16"}},
{"int32", Type{Kind: reflect.Int32, Type: int32_t, Size: 32, T: IntTy, stringKind: "int32"}},
{"int64", Type{Kind: reflect.Int64, Type: int64_t, Size: 64, T: IntTy, stringKind: "int64"}},
{"int256", Type{Kind: reflect.Ptr, Type: big_t, Size: 256, T: IntTy, stringKind: "int256"}},
{"int8[]", Type{Kind: reflect.Slice, T: SliceTy, Type: reflect.TypeOf([]int8{}), Elem: &Type{Kind: reflect.Int8, Type: int8_t, Size: 8, T: IntTy, stringKind: "int8"}, stringKind: "int8[]"}},
{"int8[2]", Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2]int8{}), Elem: &Type{Kind: reflect.Int8, Type: int8_t, Size: 8, T: IntTy, stringKind: "int8"}, stringKind: "int8[2]"}},
{"int16[]", Type{Kind: reflect.Slice, T: SliceTy, Type: reflect.TypeOf([]int16{}), Elem: &Type{Kind: reflect.Int16, Type: int16_t, Size: 16, T: IntTy, stringKind: "int16"}, stringKind: "int16[]"}},
{"int16[2]", Type{Size: 2, Kind: reflect.Array, T: ArrayTy, Type: reflect.TypeOf([2]int16{}), Elem: &Type{Kind: reflect.Int16, Type: int16_t, Size: 16, T: IntTy, stringKind: "int16"}, stringKind: "int16[2]"}},
{"int32[]", Type{Kind: reflect.Slice, T: SliceTy, Type: reflect.TypeOf([]int32{}), Elem: &Type{Kind: reflect.Int32, Type: int32_t, Size: 32, T: IntTy, stringKind: "int32"}, stringKind: "int32[]"}},
{"int32[2]", Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2]int32{}), Elem: &Type{Kind: reflect.Int32, Type: int32_t, Size: 32, T: IntTy, stringKind: "int32"}, stringKind: "int32[2]"}},
{"int64[]", Type{Kind: reflect.Slice, T: SliceTy, Type: reflect.TypeOf([]int64{}), Elem: &Type{Kind: reflect.Int64, Type: int64_t, Size: 64, T: IntTy, stringKind: "int64"}, stringKind: "int64[]"}},
{"int64[2]", Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2]int64{}), Elem: &Type{Kind: reflect.Int64, Type: int64_t, Size: 64, T: IntTy, stringKind: "int64"}, stringKind: "int64[2]"}},
{"int256[]", Type{Kind: reflect.Slice, T: SliceTy, Type: reflect.TypeOf([]*big.Int{}), Elem: &Type{Kind: reflect.Ptr, Type: big_t, Size: 256, T: IntTy, stringKind: "int256"}, stringKind: "int256[]"}},
{"int256[2]", Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2]*big.Int{}), Elem: &Type{Kind: reflect.Ptr, Type: big_t, Size: 256, T: IntTy, stringKind: "int256"}, stringKind: "int256[2]"}},
{"uint8", Type{Kind: reflect.Uint8, Type: uint8_t, Size: 8, T: UintTy, stringKind: "uint8"}},
{"uint16", Type{Kind: reflect.Uint16, Type: uint16_t, Size: 16, T: UintTy, stringKind: "uint16"}},
{"uint32", Type{Kind: reflect.Uint32, Type: uint32_t, Size: 32, T: UintTy, stringKind: "uint32"}},
{"uint64", Type{Kind: reflect.Uint64, Type: uint64_t, Size: 64, T: UintTy, stringKind: "uint64"}},
{"uint256", Type{Kind: reflect.Ptr, Type: big_t, Size: 256, T: UintTy, stringKind: "uint256"}},
{"uint8[]", Type{Kind: reflect.Slice, T: SliceTy, Type: reflect.TypeOf([]uint8{}), Elem: &Type{Kind: reflect.Uint8, Type: uint8_t, Size: 8, T: UintTy, stringKind: "uint8"}, stringKind: "uint8[]"}},
{"uint8[2]", Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2]uint8{}), Elem: &Type{Kind: reflect.Uint8, Type: uint8_t, Size: 8, T: UintTy, stringKind: "uint8"}, stringKind: "uint8[2]"}},
{"uint16[]", Type{T: SliceTy, Kind: reflect.Slice, Type: reflect.TypeOf([]uint16{}), Elem: &Type{Kind: reflect.Uint16, Type: uint16_t, Size: 16, T: UintTy, stringKind: "uint16"}, stringKind: "uint16[]"}},
{"uint16[2]", Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2]uint16{}), Elem: &Type{Kind: reflect.Uint16, Type: uint16_t, Size: 16, T: UintTy, stringKind: "uint16"}, stringKind: "uint16[2]"}},
{"uint32[]", Type{T: SliceTy, Kind: reflect.Slice, Type: reflect.TypeOf([]uint32{}), Elem: &Type{Kind: reflect.Uint32, Type: uint32_t, Size: 32, T: UintTy, stringKind: "uint32"}, stringKind: "uint32[]"}},
{"uint32[2]", Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2]uint32{}), Elem: &Type{Kind: reflect.Uint32, Type: uint32_t, Size: 32, T: UintTy, stringKind: "uint32"}, stringKind: "uint32[2]"}},
{"uint64[]", Type{T: SliceTy, Kind: reflect.Slice, Type: reflect.TypeOf([]uint64{}), Elem: &Type{Kind: reflect.Uint64, Type: uint64_t, Size: 64, T: UintTy, stringKind: "uint64"}, stringKind: "uint64[]"}},
{"uint64[2]", Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2]uint64{}), Elem: &Type{Kind: reflect.Uint64, Type: uint64_t, Size: 64, T: UintTy, stringKind: "uint64"}, stringKind: "uint64[2]"}},
{"uint256[]", Type{T: SliceTy, Kind: reflect.Slice, Type: reflect.TypeOf([]*big.Int{}), Elem: &Type{Kind: reflect.Ptr, Type: big_t, Size: 256, T: UintTy, stringKind: "uint256"}, stringKind: "uint256[]"}},
{"uint256[2]", Type{Kind: reflect.Array, T: ArrayTy, Type: reflect.TypeOf([2]*big.Int{}), Size: 2, Elem: &Type{Kind: reflect.Ptr, Type: big_t, Size: 256, T: UintTy, stringKind: "uint256"}, stringKind: "uint256[2]"}},
{"bytes32", Type{Kind: reflect.Array, T: FixedBytesTy, Size: 32, Type: reflect.TypeOf([32]byte{}), stringKind: "bytes32"}},
{"bytes[]", Type{T: SliceTy, Kind: reflect.Slice, Type: reflect.TypeOf([][]byte{}), Elem: &Type{Kind: reflect.Slice, Type: reflect.TypeOf([]byte{}), T: BytesTy, stringKind: "bytes"}, stringKind: "bytes[]"}},
{"bytes[2]", Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2][]byte{}), Elem: &Type{T: BytesTy, Type: reflect.TypeOf([]byte{}), Kind: reflect.Slice, stringKind: "bytes"}, stringKind: "bytes[2]"}},
{"bytes32[]", Type{T: SliceTy, Kind: reflect.Slice, Type: reflect.TypeOf([][32]byte{}), Elem: &Type{Kind: reflect.Array, Type: reflect.TypeOf([32]byte{}), T: FixedBytesTy, Size: 32, stringKind: "bytes32"}, stringKind: "bytes32[]"}},
{"bytes32[2]", Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2][32]byte{}), Elem: &Type{Kind: reflect.Array, T: FixedBytesTy, Size: 32, Type: reflect.TypeOf([32]byte{}), stringKind: "bytes32"}, stringKind: "bytes32[2]"}},
{"string", Type{Kind: reflect.String, T: StringTy, Type: reflect.TypeOf(""), stringKind: "string"}},
{"string[]", Type{T: SliceTy, Kind: reflect.Slice, Type: reflect.TypeOf([]string{}), Elem: &Type{Kind: reflect.String, Type: reflect.TypeOf(""), T: StringTy, stringKind: "string"}, stringKind: "string[]"}},
{"string[2]", Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2]string{}), Elem: &Type{Kind: reflect.String, T: StringTy, Type: reflect.TypeOf(""), stringKind: "string"}, stringKind: "string[2]"}},
{"address", Type{Kind: reflect.Array, Type: address_t, Size: 20, T: AddressTy, stringKind: "address"}},
{"address[]", Type{T: SliceTy, Kind: reflect.Slice, Type: reflect.TypeOf([]common.Address{}), Elem: &Type{Kind: reflect.Array, Type: address_t, Size: 20, T: AddressTy, stringKind: "address"}, stringKind: "address[]"}},
{"address[2]", Type{Kind: reflect.Array, T: ArrayTy, Size: 2, Type: reflect.TypeOf([2]common.Address{}), Elem: &Type{Kind: reflect.Array, Type: address_t, Size: 20, T: AddressTy, stringKind: "address"}, stringKind: "address[2]"}},
// TODO when fixed types are implemented properly
// {"fixed", Type{}},
// {"fixed128x128", Type{}},
// {"fixed[]", Type{}},
// {"fixed[2]", Type{}},
// {"fixed128x128[]", Type{}},
// {"fixed128x128[2]", Type{}},
}
for _, tt := range tests {
typ, err := NewType(tt.blob)
if err != nil {
t.Errorf("type %q: failed to parse type string: %v", tt.blob, err)
}
if !reflect.DeepEqual(typ, tt.kind) {
t.Errorf("type %q: parsed type mismatch:\nGOT %s\nWANT %s ", tt.blob, spew.Sdump(typeWithoutStringer(typ)), spew.Sdump(typeWithoutStringer(tt.kind)))
}
}
}
func TestTypeCheck(t *testing.T) {
for i, test := range []struct {
typ string
input interface{}
err string
}{
{"uint", big.NewInt(1), "unsupported arg type: uint"},
{"int", big.NewInt(1), "unsupported arg type: int"},
{"uint256", big.NewInt(1), ""},
{"uint256[][3][]", [][3][]*big.Int{{{}}}, ""},
{"uint256[][][3]", [3][][]*big.Int{{{}}}, ""},
{"uint256[3][][]", [][][3]*big.Int{{{}}}, ""},
{"uint256[3][3][3]", [3][3][3]*big.Int{{{}}}, ""},
{"uint8[][]", [][]uint8{}, ""},
{"int256", big.NewInt(1), ""},
{"uint8", uint8(1), ""},
{"uint16", uint16(1), ""},
{"uint32", uint32(1), ""},
{"uint64", uint64(1), ""},
{"int8", int8(1), ""},
{"int16", int16(1), ""},
{"int32", int32(1), ""},
{"int64", int64(1), ""},
{"uint24", big.NewInt(1), ""},
{"uint40", big.NewInt(1), ""},
{"uint48", big.NewInt(1), ""},
{"uint56", big.NewInt(1), ""},
{"uint72", big.NewInt(1), ""},
{"uint80", big.NewInt(1), ""},
{"uint88", big.NewInt(1), ""},
{"uint96", big.NewInt(1), ""},
{"uint104", big.NewInt(1), ""},
{"uint112", big.NewInt(1), ""},
{"uint120", big.NewInt(1), ""},
{"uint128", big.NewInt(1), ""},
{"uint136", big.NewInt(1), ""},
{"uint144", big.NewInt(1), ""},
{"uint152", big.NewInt(1), ""},
{"uint160", big.NewInt(1), ""},
{"uint168", big.NewInt(1), ""},
{"uint176", big.NewInt(1), ""},
{"uint184", big.NewInt(1), ""},
{"uint192", big.NewInt(1), ""},
{"uint200", big.NewInt(1), ""},
{"uint208", big.NewInt(1), ""},
{"uint216", big.NewInt(1), ""},
{"uint224", big.NewInt(1), ""},
{"uint232", big.NewInt(1), ""},
{"uint240", big.NewInt(1), ""},
{"uint248", big.NewInt(1), ""},
{"int24", big.NewInt(1), ""},
{"int40", big.NewInt(1), ""},
{"int48", big.NewInt(1), ""},
{"int56", big.NewInt(1), ""},
{"int72", big.NewInt(1), ""},
{"int80", big.NewInt(1), ""},
{"int88", big.NewInt(1), ""},
{"int96", big.NewInt(1), ""},
{"int104", big.NewInt(1), ""},
{"int112", big.NewInt(1), ""},
{"int120", big.NewInt(1), ""},
{"int128", big.NewInt(1), ""},
{"int136", big.NewInt(1), ""},
{"int144", big.NewInt(1), ""},
{"int152", big.NewInt(1), ""},
{"int160", big.NewInt(1), ""},
{"int168", big.NewInt(1), ""},
{"int176", big.NewInt(1), ""},
{"int184", big.NewInt(1), ""},
{"int192", big.NewInt(1), ""},
{"int200", big.NewInt(1), ""},
{"int208", big.NewInt(1), ""},
{"int216", big.NewInt(1), ""},
{"int224", big.NewInt(1), ""},
{"int232", big.NewInt(1), ""},
{"int240", big.NewInt(1), ""},
{"int248", big.NewInt(1), ""},
{"uint30", uint8(1), "abi: cannot use uint8 as type ptr as argument"},
{"uint8", uint16(1), "abi: cannot use uint16 as type uint8 as argument"},
{"uint8", uint32(1), "abi: cannot use uint32 as type uint8 as argument"},
{"uint8", uint64(1), "abi: cannot use uint64 as type uint8 as argument"},
{"uint8", int8(1), "abi: cannot use int8 as type uint8 as argument"},
{"uint8", int16(1), "abi: cannot use int16 as type uint8 as argument"},
{"uint8", int32(1), "abi: cannot use int32 as type uint8 as argument"},
{"uint8", int64(1), "abi: cannot use int64 as type uint8 as argument"},
{"uint16", uint16(1), ""},
{"uint16", uint8(1), "abi: cannot use uint8 as type uint16 as argument"},
{"uint16[]", []uint16{1, 2, 3}, ""},
{"uint16[]", [3]uint16{1, 2, 3}, ""},
{"uint16[]", []uint32{1, 2, 3}, "abi: cannot use []uint32 as type [0]uint16 as argument"},
{"uint16[3]", [3]uint32{1, 2, 3}, "abi: cannot use [3]uint32 as type [3]uint16 as argument"},
{"uint16[3]", [4]uint16{1, 2, 3}, "abi: cannot use [4]uint16 as type [3]uint16 as argument"},
{"uint16[3]", []uint16{1, 2, 3}, ""},
{"uint16[3]", []uint16{1, 2, 3, 4}, "abi: cannot use [4]uint16 as type [3]uint16 as argument"},
{"address[]", []common.Address{{1}}, ""},
{"address[1]", []common.Address{{1}}, ""},
{"address[1]", [1]common.Address{{1}}, ""},
{"address[2]", [1]common.Address{{1}}, "abi: cannot use [1]array as type [2]array as argument"},
{"bytes32", [32]byte{}, ""},
{"bytes31", [31]byte{}, ""},
{"bytes30", [30]byte{}, ""},
{"bytes29", [29]byte{}, ""},
{"bytes28", [28]byte{}, ""},
{"bytes27", [27]byte{}, ""},
{"bytes26", [26]byte{}, ""},
{"bytes25", [25]byte{}, ""},
{"bytes24", [24]byte{}, ""},
{"bytes23", [23]byte{}, ""},
{"bytes22", [22]byte{}, ""},
{"bytes21", [21]byte{}, ""},
{"bytes20", [20]byte{}, ""},
{"bytes19", [19]byte{}, ""},
{"bytes18", [18]byte{}, ""},
{"bytes17", [17]byte{}, ""},
{"bytes16", [16]byte{}, ""},
{"bytes15", [15]byte{}, ""},
{"bytes14", [14]byte{}, ""},
{"bytes13", [13]byte{}, ""},
{"bytes12", [12]byte{}, ""},
{"bytes11", [11]byte{}, ""},
{"bytes10", [10]byte{}, ""},
{"bytes9", [9]byte{}, ""},
{"bytes8", [8]byte{}, ""},
{"bytes7", [7]byte{}, ""},
{"bytes6", [6]byte{}, ""},
{"bytes5", [5]byte{}, ""},
{"bytes4", [4]byte{}, ""},
{"bytes3", [3]byte{}, ""},
{"bytes2", [2]byte{}, ""},
{"bytes1", [1]byte{}, ""},
{"bytes32", [33]byte{}, "abi: cannot use [33]uint8 as type [32]uint8 as argument"},
{"bytes32", common.Hash{1}, ""},
{"bytes31", common.Hash{1}, "abi: cannot use common.Hash as type [31]uint8 as argument"},
{"bytes31", [32]byte{}, "abi: cannot use [32]uint8 as type [31]uint8 as argument"},
{"bytes", []byte{0, 1}, ""},
{"bytes", [2]byte{0, 1}, "abi: cannot use array as type slice as argument"},
{"bytes", common.Hash{1}, "abi: cannot use array as type slice as argument"},
{"string", "hello world", ""},
{"string", string(""), ""},
{"string", []byte{}, "abi: cannot use slice as type string as argument"},
{"bytes32[]", [][32]byte{{}}, ""},
{"function", [24]byte{}, ""},
{"bytes20", common.Address{}, ""},
{"address", [20]byte{}, ""},
{"address", common.Address{}, ""},
} {
typ, err := NewType(test.typ)
if err != nil && len(test.err) == 0 {
t.Fatal("unexpected parse error:", err)
} else if err != nil && len(test.err) != 0 {
if err.Error() != test.err {
t.Errorf("%d failed. Expected err: '%v' got err: '%v'", i, test.err, err)
}
continue
}
err = typeCheck(typ, reflect.ValueOf(test.input))
if err != nil && len(test.err) == 0 {
t.Errorf("%d failed. Expected no err but got: %v", i, err)
continue
}
if err == nil && len(test.err) != 0 {
t.Errorf("%d failed. Expected err: %v but got none", i, test.err)
continue
}
if err != nil && len(test.err) != 0 && err.Error() != test.err {
t.Errorf("%d failed. Expected err: '%v' got err: '%v'", i, test.err, err)
}
}
}

196
accounts/abi/unpack.go Normal file
View File

@@ -0,0 +1,196 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package abi
import (
"encoding/binary"
"fmt"
"math/big"
"reflect"
"github.com/ethereum/go-ethereum/common"
)
// reads the integer based on its kind
func readInteger(kind reflect.Kind, b []byte) interface{} {
switch kind {
case reflect.Uint8:
return b[len(b)-1]
case reflect.Uint16:
return binary.BigEndian.Uint16(b[len(b)-2:])
case reflect.Uint32:
return binary.BigEndian.Uint32(b[len(b)-4:])
case reflect.Uint64:
return binary.BigEndian.Uint64(b[len(b)-8:])
case reflect.Int8:
return int8(b[len(b)-1])
case reflect.Int16:
return int16(binary.BigEndian.Uint16(b[len(b)-2:]))
case reflect.Int32:
return int32(binary.BigEndian.Uint32(b[len(b)-4:]))
case reflect.Int64:
return int64(binary.BigEndian.Uint64(b[len(b)-8:]))
default:
return new(big.Int).SetBytes(b)
}
}
// reads a bool
func readBool(word []byte) (bool, error) {
for _, b := range word[:31] {
if b != 0 {
return false, errBadBool
}
}
switch word[31] {
case 0:
return false, nil
case 1:
return true, nil
default:
return false, errBadBool
}
}
// A function type is simply the address with the function selection signature at the end.
// This enforces that standard by always presenting it as a 24-array (address + sig = 24 bytes)
func readFunctionType(t Type, word []byte) (funcTy [24]byte, err error) {
if t.T != FunctionTy {
return [24]byte{}, fmt.Errorf("abi: invalid type in call to make function type byte array")
}
if garbage := binary.BigEndian.Uint64(word[24:32]); garbage != 0 {
err = fmt.Errorf("abi: got improperly encoded function type, got %v", word)
} else {
copy(funcTy[:], word[0:24])
}
return
}
// through reflection, creates a fixed array to be read from
func readFixedBytes(t Type, word []byte) (interface{}, error) {
if t.T != FixedBytesTy {
return nil, fmt.Errorf("abi: invalid type in call to make fixed byte array")
}
// convert
array := reflect.New(t.Type).Elem()
reflect.Copy(array, reflect.ValueOf(word[0:t.Size]))
return array.Interface(), nil
}
// iteratively unpack elements
func forEachUnpack(t Type, output []byte, start, size int) (interface{}, error) {
if start+32*size > len(output) {
return nil, fmt.Errorf("abi: cannot marshal in to go array: offset %d would go over slice boundary (len=%d)", len(output), start+32*size)
}
// this value will become our slice or our array, depending on the type
var refSlice reflect.Value
slice := output[start : start+size*32]
if t.T == SliceTy {
// declare our slice
refSlice = reflect.MakeSlice(t.Type, size, size)
} else if t.T == ArrayTy {
// declare our array
refSlice = reflect.New(t.Type).Elem()
} else {
return nil, fmt.Errorf("abi: invalid type in array/slice unpacking stage")
}
for i, j := start, 0; j*32 < len(slice); i, j = i+32, j+1 {
// this corrects the arrangement so that we get all the underlying array values
if t.Elem.T == ArrayTy && j != 0 {
i = start + t.Elem.Size*32*j
}
inter, err := toGoType(i, *t.Elem, output)
if err != nil {
return nil, err
}
// append the item to our reflect slice
refSlice.Index(j).Set(reflect.ValueOf(inter))
}
// return the interface
return refSlice.Interface(), nil
}
// toGoType parses the output bytes and recursively assigns the value of these bytes
// into a go type with accordance with the ABI spec.
func toGoType(index int, t Type, output []byte) (interface{}, error) {
if index+32 > len(output) {
return nil, fmt.Errorf("abi: cannot marshal in to go type: length insufficient %d require %d", len(output), index+32)
}
var (
returnOutput []byte
begin, end int
err error
)
// if we require a length prefix, find the beginning word and size returned.
if t.requiresLengthPrefix() {
begin, end, err = lengthPrefixPointsTo(index, output)
if err != nil {
return nil, err
}
} else {
returnOutput = output[index : index+32]
}
switch t.T {
case SliceTy:
return forEachUnpack(t, output, begin, end)
case ArrayTy:
return forEachUnpack(t, output, index, t.Size)
case StringTy: // variable arrays are written at the end of the return bytes
return string(output[begin : begin+end]), nil
case IntTy, UintTy:
return readInteger(t.Kind, returnOutput), nil
case BoolTy:
return readBool(returnOutput)
case AddressTy:
return common.BytesToAddress(returnOutput), nil
case HashTy:
return common.BytesToHash(returnOutput), nil
case BytesTy:
return output[begin : begin+end], nil
case FixedBytesTy:
return readFixedBytes(t, returnOutput)
case FunctionTy:
return readFunctionType(t, returnOutput)
default:
return nil, fmt.Errorf("abi: unknown type %v", t.T)
}
}
// interprets a 32 byte slice as an offset and then determines which indice to look to decode the type.
func lengthPrefixPointsTo(index int, output []byte) (start int, length int, err error) {
offset := int(binary.BigEndian.Uint64(output[index+24 : index+32]))
if offset+32 > len(output) {
return 0, 0, fmt.Errorf("abi: cannot marshal in to go slice: offset %d would go over slice boundary (len=%d)", len(output), offset+32)
}
length = int(binary.BigEndian.Uint64(output[offset+24 : offset+32]))
if offset+32+length > len(output) {
return 0, 0, fmt.Errorf("abi: cannot marshal in to go type: length insufficient %d require %d", len(output), offset+32+length)
}
start = offset + 32
//fmt.Printf("LENGTH PREFIX INFO: \nsize: %v\noffset: %v\nstart: %v\n", length, offset, start)
return
}

685
accounts/abi/unpack_test.go Normal file
View File

@@ -0,0 +1,685 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package abi
import (
"bytes"
"encoding/hex"
"fmt"
"math/big"
"reflect"
"strconv"
"strings"
"testing"
"github.com/ethereum/go-ethereum/common"
"github.com/stretchr/testify/require"
)
type unpackTest struct {
def string // ABI definition JSON
enc string // evm return data
want interface{} // the expected output
err string // empty or error if expected
}
func (test unpackTest) checkError(err error) error {
if err != nil {
if len(test.err) == 0 {
return fmt.Errorf("expected no err but got: %v", err)
} else if err.Error() != test.err {
return fmt.Errorf("expected err: '%v' got err: %q", test.err, err)
}
} else if len(test.err) > 0 {
return fmt.Errorf("expected err: %v but got none", test.err)
}
return nil
}
var unpackTests = []unpackTest{
{
def: `[{ "type": "bool" }]`,
enc: "0000000000000000000000000000000000000000000000000000000000000001",
want: true,
},
{
def: `[{"type": "uint32"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000001",
want: uint32(1),
},
{
def: `[{"type": "uint32"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000001",
want: uint16(0),
err: "abi: cannot unmarshal uint32 in to uint16",
},
{
def: `[{"type": "uint17"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000001",
want: uint16(0),
err: "abi: cannot unmarshal *big.Int in to uint16",
},
{
def: `[{"type": "uint17"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000001",
want: big.NewInt(1),
},
{
def: `[{"type": "int32"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000001",
want: int32(1),
},
{
def: `[{"type": "int32"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000001",
want: int16(0),
err: "abi: cannot unmarshal int32 in to int16",
},
{
def: `[{"type": "int17"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000001",
want: int16(0),
err: "abi: cannot unmarshal *big.Int in to int16",
},
{
def: `[{"type": "int17"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000001",
want: big.NewInt(1),
},
{
def: `[{"type": "address"}]`,
enc: "0000000000000000000000000100000000000000000000000000000000000000",
want: common.Address{1},
},
{
def: `[{"type": "bytes32"}]`,
enc: "0100000000000000000000000000000000000000000000000000000000000000",
want: [32]byte{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
},
{
def: `[{"type": "bytes"}]`,
enc: "000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200100000000000000000000000000000000000000000000000000000000000000",
want: common.Hex2Bytes("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
def: `[{"type": "bytes"}]`,
enc: "000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200100000000000000000000000000000000000000000000000000000000000000",
want: [32]byte{},
err: "abi: cannot unmarshal []uint8 in to [32]uint8",
},
{
def: `[{"type": "bytes32"}]`,
enc: "000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200100000000000000000000000000000000000000000000000000000000000000",
want: []byte(nil),
err: "abi: cannot unmarshal [32]uint8 in to []uint8",
},
{
def: `[{"type": "bytes32"}]`,
enc: "0100000000000000000000000000000000000000000000000000000000000000",
want: common.HexToHash("0100000000000000000000000000000000000000000000000000000000000000"),
},
{
def: `[{"type": "function"}]`,
enc: "0100000000000000000000000000000000000000000000000000000000000000",
want: [24]byte{1},
},
// slices
{
def: `[{"type": "uint8[]"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: []uint8{1, 2},
},
{
def: `[{"type": "uint8[2]"}]`,
enc: "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: [2]uint8{1, 2},
},
// multi dimensional, if these pass, all types that don't require length prefix should pass
{
def: `[{"type": "uint8[][]"}]`,
enc: "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000E0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: [][]uint8{{1, 2}, {1, 2}},
},
{
def: `[{"type": "uint8[2][2]"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: [2][2]uint8{{1, 2}, {1, 2}},
},
{
def: `[{"type": "uint8[][2]"}]`,
enc: "000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001",
want: [2][]uint8{{1}, {1}},
},
{
def: `[{"type": "uint8[2][]"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: [][2]uint8{{1, 2}},
},
{
def: `[{"type": "uint16[]"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: []uint16{1, 2},
},
{
def: `[{"type": "uint16[2]"}]`,
enc: "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: [2]uint16{1, 2},
},
{
def: `[{"type": "uint32[]"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: []uint32{1, 2},
},
{
def: `[{"type": "uint32[2]"}]`,
enc: "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: [2]uint32{1, 2},
},
{
def: `[{"type": "uint64[]"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: []uint64{1, 2},
},
{
def: `[{"type": "uint64[2]"}]`,
enc: "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: [2]uint64{1, 2},
},
{
def: `[{"type": "uint256[]"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: []*big.Int{big.NewInt(1), big.NewInt(2)},
},
{
def: `[{"type": "uint256[3]"}]`,
enc: "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003",
want: [3]*big.Int{big.NewInt(1), big.NewInt(2), big.NewInt(3)},
},
{
def: `[{"type": "int8[]"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: []int8{1, 2},
},
{
def: `[{"type": "int8[2]"}]`,
enc: "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: [2]int8{1, 2},
},
{
def: `[{"type": "int16[]"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: []int16{1, 2},
},
{
def: `[{"type": "int16[2]"}]`,
enc: "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: [2]int16{1, 2},
},
{
def: `[{"type": "int32[]"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: []int32{1, 2},
},
{
def: `[{"type": "int32[2]"}]`,
enc: "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: [2]int32{1, 2},
},
{
def: `[{"type": "int64[]"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: []int64{1, 2},
},
{
def: `[{"type": "int64[2]"}]`,
enc: "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: [2]int64{1, 2},
},
{
def: `[{"type": "int256[]"}]`,
enc: "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: []*big.Int{big.NewInt(1), big.NewInt(2)},
},
{
def: `[{"type": "int256[3]"}]`,
enc: "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003",
want: [3]*big.Int{big.NewInt(1), big.NewInt(2), big.NewInt(3)},
},
// struct outputs
{
def: `[{"name":"int1","type":"int256"},{"name":"int2","type":"int256"}]`,
enc: "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: struct {
Int1 *big.Int
Int2 *big.Int
}{big.NewInt(1), big.NewInt(2)},
},
{
def: `[{"name":"int","type":"int256"},{"name":"Int","type":"int256"}]`,
enc: "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: struct {
Int1 *big.Int
Int2 *big.Int
}{},
err: "abi: multiple outputs mapping to the same struct field 'Int'",
},
{
def: `[{"name":"int","type":"int256"},{"name":"_int","type":"int256"}]`,
enc: "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: struct {
Int1 *big.Int
Int2 *big.Int
}{},
err: "abi: multiple outputs mapping to the same struct field 'Int'",
},
{
def: `[{"name":"Int","type":"int256"},{"name":"_int","type":"int256"}]`,
enc: "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: struct {
Int1 *big.Int
Int2 *big.Int
}{},
err: "abi: multiple outputs mapping to the same struct field 'Int'",
},
{
def: `[{"name":"Int","type":"int256"},{"name":"_","type":"int256"}]`,
enc: "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
want: struct {
Int1 *big.Int
Int2 *big.Int
}{},
err: "abi: purely underscored output cannot unpack to struct",
},
}
func TestUnpack(t *testing.T) {
for i, test := range unpackTests {
t.Run(strconv.Itoa(i), func(t *testing.T) {
def := fmt.Sprintf(`[{ "name" : "method", "outputs": %s}]`, test.def)
abi, err := JSON(strings.NewReader(def))
if err != nil {
t.Fatalf("invalid ABI definition %s: %v", def, err)
}
encb, err := hex.DecodeString(test.enc)
if err != nil {
t.Fatalf("invalid hex: %s" + test.enc)
}
outptr := reflect.New(reflect.TypeOf(test.want))
err = abi.Unpack(outptr.Interface(), "method", encb)
if err := test.checkError(err); err != nil {
t.Errorf("test %d (%v) failed: %v", i, test.def, err)
return
}
out := outptr.Elem().Interface()
if !reflect.DeepEqual(test.want, out) {
t.Errorf("test %d (%v) failed: expected %v, got %v", i, test.def, test.want, out)
}
})
}
}
type methodMultiOutput struct {
Int *big.Int
String string
}
func methodMultiReturn(require *require.Assertions) (ABI, []byte, methodMultiOutput) {
const definition = `[
{ "name" : "multi", "constant" : false, "outputs": [ { "name": "Int", "type": "uint256" }, { "name": "String", "type": "string" } ] }]`
var expected = methodMultiOutput{big.NewInt(1), "hello"}
abi, err := JSON(strings.NewReader(definition))
require.NoError(err)
// using buff to make the code readable
buff := new(bytes.Buffer)
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000001"))
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000040"))
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000005"))
buff.Write(common.RightPadBytes([]byte(expected.String), 32))
return abi, buff.Bytes(), expected
}
func TestMethodMultiReturn(t *testing.T) {
type reversed struct {
String string
Int *big.Int
}
abi, data, expected := methodMultiReturn(require.New(t))
bigint := new(big.Int)
var testCases = []struct {
dest interface{}
expected interface{}
error string
name string
}{{
&methodMultiOutput{},
&expected,
"",
"Can unpack into structure",
}, {
&reversed{},
&reversed{expected.String, expected.Int},
"",
"Can unpack into reversed structure",
}, {
&[]interface{}{&bigint, new(string)},
&[]interface{}{&expected.Int, &expected.String},
"",
"Can unpack into a slice",
}, {
&[2]interface{}{&bigint, new(string)},
&[2]interface{}{&expected.Int, &expected.String},
"",
"Can unpack into an array",
}, {
&[]interface{}{new(int), new(int)},
&[]interface{}{&expected.Int, &expected.String},
"abi: cannot unmarshal *big.Int in to int",
"Can not unpack into a slice with wrong types",
}, {
&[]interface{}{new(int)},
&[]interface{}{},
"abi: insufficient number of elements in the list/array for unpack, want 2, got 1",
"Can not unpack into a slice with wrong types",
}}
for _, tc := range testCases {
tc := tc
t.Run(tc.name, func(t *testing.T) {
require := require.New(t)
err := abi.Unpack(tc.dest, "multi", data)
if tc.error == "" {
require.Nil(err, "Should be able to unpack method outputs.")
require.Equal(tc.expected, tc.dest)
} else {
require.EqualError(err, tc.error)
}
})
}
}
func TestMultiReturnWithArray(t *testing.T) {
const definition = `[{"name" : "multi", "outputs": [{"type": "uint64[3]"}, {"type": "uint64"}]}]`
abi, err := JSON(strings.NewReader(definition))
if err != nil {
t.Fatal(err)
}
buff := new(bytes.Buffer)
buff.Write(common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009"))
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000008"))
ret1, ret1Exp := new([3]uint64), [3]uint64{9, 9, 9}
ret2, ret2Exp := new(uint64), uint64(8)
if err := abi.Unpack(&[]interface{}{ret1, ret2}, "multi", buff.Bytes()); err != nil {
t.Fatal(err)
}
if !reflect.DeepEqual(*ret1, ret1Exp) {
t.Error("array result", *ret1, "!= Expected", ret1Exp)
}
if *ret2 != ret2Exp {
t.Error("int result", *ret2, "!= Expected", ret2Exp)
}
}
func TestUnmarshal(t *testing.T) {
const definition = `[
{ "name" : "int", "constant" : false, "outputs": [ { "type": "uint256" } ] },
{ "name" : "bool", "constant" : false, "outputs": [ { "type": "bool" } ] },
{ "name" : "bytes", "constant" : false, "outputs": [ { "type": "bytes" } ] },
{ "name" : "fixed", "constant" : false, "outputs": [ { "type": "bytes32" } ] },
{ "name" : "multi", "constant" : false, "outputs": [ { "type": "bytes" }, { "type": "bytes" } ] },
{ "name" : "intArraySingle", "constant" : false, "outputs": [ { "type": "uint256[3]" } ] },
{ "name" : "addressSliceSingle", "constant" : false, "outputs": [ { "type": "address[]" } ] },
{ "name" : "addressSliceDouble", "constant" : false, "outputs": [ { "name": "a", "type": "address[]" }, { "name": "b", "type": "address[]" } ] },
{ "name" : "mixedBytes", "constant" : true, "outputs": [ { "name": "a", "type": "bytes" }, { "name": "b", "type": "bytes32" } ] }]`
abi, err := JSON(strings.NewReader(definition))
if err != nil {
t.Fatal(err)
}
buff := new(bytes.Buffer)
// marshall mixed bytes (mixedBytes)
p0, p0Exp := []byte{}, common.Hex2Bytes("01020000000000000000")
p1, p1Exp := [32]byte{}, common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000ddeeff")
mixedBytes := []interface{}{&p0, &p1}
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000040"))
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000ddeeff"))
buff.Write(common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000000a"))
buff.Write(common.Hex2Bytes("0102000000000000000000000000000000000000000000000000000000000000"))
err = abi.Unpack(&mixedBytes, "mixedBytes", buff.Bytes())
if err != nil {
t.Error(err)
} else {
if !bytes.Equal(p0, p0Exp) {
t.Errorf("unexpected value unpacked: want %x, got %x", p0Exp, p0)
}
if !bytes.Equal(p1[:], p1Exp) {
t.Errorf("unexpected value unpacked: want %x, got %x", p1Exp, p1)
}
}
// marshal int
var Int *big.Int
err = abi.Unpack(&Int, "int", common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000001"))
if err != nil {
t.Error(err)
}
if Int == nil || Int.Cmp(big.NewInt(1)) != 0 {
t.Error("expected Int to be 1 got", Int)
}
// marshal bool
var Bool bool
err = abi.Unpack(&Bool, "bool", common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000001"))
if err != nil {
t.Error(err)
}
if !Bool {
t.Error("expected Bool to be true")
}
// marshal dynamic bytes max length 32
buff.Reset()
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000020"))
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000020"))
bytesOut := common.RightPadBytes([]byte("hello"), 32)
buff.Write(bytesOut)
var Bytes []byte
err = abi.Unpack(&Bytes, "bytes", buff.Bytes())
if err != nil {
t.Error(err)
}
if !bytes.Equal(Bytes, bytesOut) {
t.Errorf("expected %x got %x", bytesOut, Bytes)
}
// marshall dynamic bytes max length 64
buff.Reset()
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000020"))
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000040"))
bytesOut = common.RightPadBytes([]byte("hello"), 64)
buff.Write(bytesOut)
err = abi.Unpack(&Bytes, "bytes", buff.Bytes())
if err != nil {
t.Error(err)
}
if !bytes.Equal(Bytes, bytesOut) {
t.Errorf("expected %x got %x", bytesOut, Bytes)
}
// marshall dynamic bytes max length 64
buff.Reset()
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000020"))
buff.Write(common.Hex2Bytes("000000000000000000000000000000000000000000000000000000000000003f"))
bytesOut = common.RightPadBytes([]byte("hello"), 64)
buff.Write(bytesOut)
err = abi.Unpack(&Bytes, "bytes", buff.Bytes())
if err != nil {
t.Error(err)
}
if !bytes.Equal(Bytes, bytesOut[:len(bytesOut)-1]) {
t.Errorf("expected %x got %x", bytesOut[:len(bytesOut)-1], Bytes)
}
// marshal dynamic bytes output empty
err = abi.Unpack(&Bytes, "bytes", nil)
if err == nil {
t.Error("expected error")
}
// marshal dynamic bytes length 5
buff.Reset()
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000020"))
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000005"))
buff.Write(common.RightPadBytes([]byte("hello"), 32))
err = abi.Unpack(&Bytes, "bytes", buff.Bytes())
if err != nil {
t.Error(err)
}
if !bytes.Equal(Bytes, []byte("hello")) {
t.Errorf("expected %x got %x", bytesOut, Bytes)
}
// marshal dynamic bytes length 5
buff.Reset()
buff.Write(common.RightPadBytes([]byte("hello"), 32))
var hash common.Hash
err = abi.Unpack(&hash, "fixed", buff.Bytes())
if err != nil {
t.Error(err)
}
helloHash := common.BytesToHash(common.RightPadBytes([]byte("hello"), 32))
if hash != helloHash {
t.Errorf("Expected %x to equal %x", hash, helloHash)
}
// marshal error
buff.Reset()
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000020"))
err = abi.Unpack(&Bytes, "bytes", buff.Bytes())
if err == nil {
t.Error("expected error")
}
err = abi.Unpack(&Bytes, "multi", make([]byte, 64))
if err == nil {
t.Error("expected error")
}
buff.Reset()
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000001"))
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000002"))
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000003"))
// marshal int array
var intArray [3]*big.Int
err = abi.Unpack(&intArray, "intArraySingle", buff.Bytes())
if err != nil {
t.Error(err)
}
var testAgainstIntArray [3]*big.Int
testAgainstIntArray[0] = big.NewInt(1)
testAgainstIntArray[1] = big.NewInt(2)
testAgainstIntArray[2] = big.NewInt(3)
for i, Int := range intArray {
if Int.Cmp(testAgainstIntArray[i]) != 0 {
t.Errorf("expected %v, got %v", testAgainstIntArray[i], Int)
}
}
// marshal address slice
buff.Reset()
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000020")) // offset
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000001")) // size
buff.Write(common.Hex2Bytes("0000000000000000000000000100000000000000000000000000000000000000"))
var outAddr []common.Address
err = abi.Unpack(&outAddr, "addressSliceSingle", buff.Bytes())
if err != nil {
t.Fatal("didn't expect error:", err)
}
if len(outAddr) != 1 {
t.Fatal("expected 1 item, got", len(outAddr))
}
if outAddr[0] != (common.Address{1}) {
t.Errorf("expected %x, got %x", common.Address{1}, outAddr[0])
}
// marshal multiple address slice
buff.Reset()
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000040")) // offset
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000080")) // offset
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000001")) // size
buff.Write(common.Hex2Bytes("0000000000000000000000000100000000000000000000000000000000000000"))
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000002")) // size
buff.Write(common.Hex2Bytes("0000000000000000000000000200000000000000000000000000000000000000"))
buff.Write(common.Hex2Bytes("0000000000000000000000000300000000000000000000000000000000000000"))
var outAddrStruct struct {
A []common.Address
B []common.Address
}
err = abi.Unpack(&outAddrStruct, "addressSliceDouble", buff.Bytes())
if err != nil {
t.Fatal("didn't expect error:", err)
}
if len(outAddrStruct.A) != 1 {
t.Fatal("expected 1 item, got", len(outAddrStruct.A))
}
if outAddrStruct.A[0] != (common.Address{1}) {
t.Errorf("expected %x, got %x", common.Address{1}, outAddrStruct.A[0])
}
if len(outAddrStruct.B) != 2 {
t.Fatal("expected 1 item, got", len(outAddrStruct.B))
}
if outAddrStruct.B[0] != (common.Address{2}) {
t.Errorf("expected %x, got %x", common.Address{2}, outAddrStruct.B[0])
}
if outAddrStruct.B[1] != (common.Address{3}) {
t.Errorf("expected %x, got %x", common.Address{3}, outAddrStruct.B[1])
}
// marshal invalid address slice
buff.Reset()
buff.Write(common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000100"))
err = abi.Unpack(&outAddr, "addressSliceSingle", buff.Bytes())
if err == nil {
t.Fatal("expected error:", err)
}
}

173
accounts/accounts.go Normal file
View File

@@ -0,0 +1,173 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
// Package accounts implements high level Ethereum account management.
package accounts
import (
"math/big"
ethereum "github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/event"
)
// Account represents an Ethereum account located at a specific location defined
// by the optional URL field.
type Account struct {
Address common.Address `json:"address"` // Ethereum account address derived from the key
URL URL `json:"url"` // Optional resource locator within a backend
}
// Wallet represents a software or hardware wallet that might contain one or more
// accounts (derived from the same seed).
type Wallet interface {
// URL retrieves the canonical path under which this wallet is reachable. It is
// user by upper layers to define a sorting order over all wallets from multiple
// backends.
URL() URL
// Status returns a textual status to aid the user in the current state of the
// wallet. It also returns an error indicating any failure the wallet might have
// encountered.
Status() (string, error)
// Open initializes access to a wallet instance. It is not meant to unlock or
// decrypt account keys, rather simply to establish a connection to hardware
// wallets and/or to access derivation seeds.
//
// The passphrase parameter may or may not be used by the implementation of a
// particular wallet instance. The reason there is no passwordless open method
// is to strive towards a uniform wallet handling, oblivious to the different
// backend providers.
//
// Please note, if you open a wallet, you must close it to release any allocated
// resources (especially important when working with hardware wallets).
Open(passphrase string) error
// Close releases any resources held by an open wallet instance.
Close() error
// Accounts retrieves the list of signing accounts the wallet is currently aware
// of. For hierarchical deterministic wallets, the list will not be exhaustive,
// rather only contain the accounts explicitly pinned during account derivation.
Accounts() []Account
// Contains returns whether an account is part of this particular wallet or not.
Contains(account Account) bool
// Derive attempts to explicitly derive a hierarchical deterministic account at
// the specified derivation path. If requested, the derived account will be added
// to the wallet's tracked account list.
Derive(path DerivationPath, pin bool) (Account, error)
// SelfDerive sets a base account derivation path from which the wallet attempts
// to discover non zero accounts and automatically add them to list of tracked
// accounts.
//
// Note, self derivaton will increment the last component of the specified path
// opposed to decending into a child path to allow discovering accounts starting
// from non zero components.
//
// You can disable automatic account discovery by calling SelfDerive with a nil
// chain state reader.
SelfDerive(base DerivationPath, chain ethereum.ChainStateReader)
// SignHash requests the wallet to sign the given hash.
//
// It looks up the account specified either solely via its address contained within,
// or optionally with the aid of any location metadata from the embedded URL field.
//
// If the wallet requires additional authentication to sign the request (e.g.
// a password to decrypt the account, or a PIN code o verify the transaction),
// an AuthNeededError instance will be returned, containing infos for the user
// about which fields or actions are needed. The user may retry by providing
// the needed details via SignHashWithPassphrase, or by other means (e.g. unlock
// the account in a keystore).
SignHash(account Account, hash []byte) ([]byte, error)
// SignTx requests the wallet to sign the given transaction.
//
// It looks up the account specified either solely via its address contained within,
// or optionally with the aid of any location metadata from the embedded URL field.
//
// If the wallet requires additional authentication to sign the request (e.g.
// a password to decrypt the account, or a PIN code o verify the transaction),
// an AuthNeededError instance will be returned, containing infos for the user
// about which fields or actions are needed. The user may retry by providing
// the needed details via SignTxWithPassphrase, or by other means (e.g. unlock
// the account in a keystore).
SignTx(account Account, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error)
// SignHashWithPassphrase requests the wallet to sign the given hash with the
// given passphrase as extra authentication information.
//
// It looks up the account specified either solely via its address contained within,
// or optionally with the aid of any location metadata from the embedded URL field.
SignHashWithPassphrase(account Account, passphrase string, hash []byte) ([]byte, error)
// SignTxWithPassphrase requests the wallet to sign the given transaction, with the
// given passphrase as extra authentication information.
//
// It looks up the account specified either solely via its address contained within,
// or optionally with the aid of any location metadata from the embedded URL field.
SignTxWithPassphrase(account Account, passphrase string, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error)
}
// Backend is a "wallet provider" that may contain a batch of accounts they can
// sign transactions with and upon request, do so.
type Backend interface {
// Wallets retrieves the list of wallets the backend is currently aware of.
//
// The returned wallets are not opened by default. For software HD wallets this
// means that no base seeds are decrypted, and for hardware wallets that no actual
// connection is established.
//
// The resulting wallet list will be sorted alphabetically based on its internal
// URL assigned by the backend. Since wallets (especially hardware) may come and
// go, the same wallet might appear at a different positions in the list during
// subsequent retrievals.
Wallets() []Wallet
// Subscribe creates an async subscription to receive notifications when the
// backend detects the arrival or departure of a wallet.
Subscribe(sink chan<- WalletEvent) event.Subscription
}
// WalletEventType represents the different event types that can be fired by
// the wallet subscription subsystem.
type WalletEventType int
const (
// WalletArrived is fired when a new wallet is detected either via USB or via
// a filesystem event in the keystore.
WalletArrived WalletEventType = iota
// WalletOpened is fired when a wallet is successfully opened with the purpose
// of starting any background processes such as automatic key derivation.
WalletOpened
// WalletDropped
WalletDropped
)
// WalletEvent is an event fired by an account backend when a wallet arrival or
// departure is detected.
type WalletEvent struct {
Wallet Wallet // Wallet instance arrived or departed
Kind WalletEventType // Event type that happened in the system
}

68
accounts/errors.go Normal file
View File

@@ -0,0 +1,68 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package accounts
import (
"errors"
"fmt"
)
// ErrUnknownAccount is returned for any requested operation for which no backend
// provides the specified account.
var ErrUnknownAccount = errors.New("unknown account")
// ErrUnknownWallet is returned for any requested operation for which no backend
// provides the specified wallet.
var ErrUnknownWallet = errors.New("unknown wallet")
// ErrNotSupported is returned when an operation is requested from an account
// backend that it does not support.
var ErrNotSupported = errors.New("not supported")
// ErrInvalidPassphrase is returned when a decryption operation receives a bad
// passphrase.
var ErrInvalidPassphrase = errors.New("invalid passphrase")
// ErrWalletAlreadyOpen is returned if a wallet is attempted to be opened the
// second time.
var ErrWalletAlreadyOpen = errors.New("wallet already open")
// ErrWalletClosed is returned if a wallet is attempted to be opened the
// secodn time.
var ErrWalletClosed = errors.New("wallet closed")
// AuthNeededError is returned by backends for signing requests where the user
// is required to provide further authentication before signing can succeed.
//
// This usually means either that a password needs to be supplied, or perhaps a
// one time PIN code displayed by some hardware device.
type AuthNeededError struct {
Needed string // Extra authentication the user needs to provide
}
// NewAuthNeededError creates a new authentication error with the extra details
// about the needed fields set.
func NewAuthNeededError(needed string) error {
return &AuthNeededError{
Needed: needed,
}
}
// Error implements the standard error interface.
func (err *AuthNeededError) Error() string {
return fmt.Sprintf("authentication needed: %s", err.Needed)
}

135
accounts/hd.go Normal file
View File

@@ -0,0 +1,135 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package accounts
import (
"errors"
"fmt"
"math"
"math/big"
"strings"
)
// DefaultRootDerivationPath is the root path to which custom derivation endpoints
// are appended. As such, the first account will be at m/44'/60'/0'/0, the second
// at m/44'/60'/0'/1, etc.
var DefaultRootDerivationPath = DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0}
// DefaultBaseDerivationPath is the base path from which custom derivation endpoints
// are incremented. As such, the first account will be at m/44'/60'/0'/0, the second
// at m/44'/60'/0'/1, etc.
var DefaultBaseDerivationPath = DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0, 0}
// DefaultLedgerBaseDerivationPath is the base path from which custom derivation endpoints
// are incremented. As such, the first account will be at m/44'/60'/0'/0, the second
// at m/44'/60'/0'/1, etc.
var DefaultLedgerBaseDerivationPath = DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0}
// DerivationPath represents the computer friendly version of a hierarchical
// deterministic wallet account derivaion path.
//
// The BIP-32 spec https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
// defines derivation paths to be of the form:
//
// m / purpose' / coin_type' / account' / change / address_index
//
// The BIP-44 spec https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki
// defines that the `purpose` be 44' (or 0x8000002C) for crypto currencies, and
// SLIP-44 https://github.com/satoshilabs/slips/blob/master/slip-0044.md assigns
// the `coin_type` 60' (or 0x8000003C) to Ethereum.
//
// The root path for Ethereum is m/44'/60'/0'/0 according to the specification
// from https://github.com/ethereum/EIPs/issues/84, albeit it's not set in stone
// yet whether accounts should increment the last component or the children of
// that. We will go with the simpler approach of incrementing the last component.
type DerivationPath []uint32
// ParseDerivationPath converts a user specified derivation path string to the
// internal binary representation.
//
// Full derivation paths need to start with the `m/` prefix, relative derivation
// paths (which will get appended to the default root path) must not have prefixes
// in front of the first element. Whitespace is ignored.
func ParseDerivationPath(path string) (DerivationPath, error) {
var result DerivationPath
// Handle absolute or relative paths
components := strings.Split(path, "/")
switch {
case len(components) == 0:
return nil, errors.New("empty derivation path")
case strings.TrimSpace(components[0]) == "":
return nil, errors.New("ambiguous path: use 'm/' prefix for absolute paths, or no leading '/' for relative ones")
case strings.TrimSpace(components[0]) == "m":
components = components[1:]
default:
result = append(result, DefaultRootDerivationPath...)
}
// All remaining components are relative, append one by one
if len(components) == 0 {
return nil, errors.New("empty derivation path") // Empty relative paths
}
for _, component := range components {
// Ignore any user added whitespace
component = strings.TrimSpace(component)
var value uint32
// Handle hardened paths
if strings.HasSuffix(component, "'") {
value = 0x80000000
component = strings.TrimSpace(strings.TrimSuffix(component, "'"))
}
// Handle the non hardened component
bigval, ok := new(big.Int).SetString(component, 0)
if !ok {
return nil, fmt.Errorf("invalid component: %s", component)
}
max := math.MaxUint32 - value
if bigval.Sign() < 0 || bigval.Cmp(big.NewInt(int64(max))) > 0 {
if value == 0 {
return nil, fmt.Errorf("component %v out of allowed range [0, %d]", bigval, max)
}
return nil, fmt.Errorf("component %v out of allowed hardened range [0, %d]", bigval, max)
}
value += uint32(bigval.Uint64())
// Append and repeat
result = append(result, value)
}
return result, nil
}
// String implements the stringer interface, converting a binary derivation path
// to its canonical representation.
func (path DerivationPath) String() string {
result := "m"
for _, component := range path {
var hardened bool
if component >= 0x80000000 {
component -= 0x80000000
hardened = true
}
result = fmt.Sprintf("%s/%d", result, component)
if hardened {
result += "'"
}
}
return result
}

79
accounts/hd_test.go Normal file
View File

@@ -0,0 +1,79 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package accounts
import (
"reflect"
"testing"
)
// Tests that HD derivation paths can be correctly parsed into our internal binary
// representation.
func TestHDPathParsing(t *testing.T) {
tests := []struct {
input string
output DerivationPath
}{
// Plain absolute derivation paths
{"m/44'/60'/0'/0", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0}},
{"m/44'/60'/0'/128", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 128}},
{"m/44'/60'/0'/0'", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0x80000000 + 0}},
{"m/44'/60'/0'/128'", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0x80000000 + 128}},
{"m/2147483692/2147483708/2147483648/0", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0}},
{"m/2147483692/2147483708/2147483648/2147483648", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0x80000000 + 0}},
// Plain relative derivation paths
{"0", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0, 0}},
{"128", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0, 128}},
{"0'", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0, 0x80000000 + 0}},
{"128'", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0, 0x80000000 + 128}},
{"2147483648", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0, 0x80000000 + 0}},
// Hexadecimal absolute derivation paths
{"m/0x2C'/0x3c'/0x00'/0x00", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0}},
{"m/0x2C'/0x3c'/0x00'/0x80", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 128}},
{"m/0x2C'/0x3c'/0x00'/0x00'", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0x80000000 + 0}},
{"m/0x2C'/0x3c'/0x00'/0x80'", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0x80000000 + 128}},
{"m/0x8000002C/0x8000003c/0x80000000/0x00", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0}},
{"m/0x8000002C/0x8000003c/0x80000000/0x80000000", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0x80000000 + 0}},
// Hexadecimal relative derivation paths
{"0x00", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0, 0}},
{"0x80", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0, 128}},
{"0x00'", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0, 0x80000000 + 0}},
{"0x80'", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0, 0x80000000 + 128}},
{"0x80000000", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0, 0x80000000 + 0}},
// Weird inputs just to ensure they work
{" m / 44 '\n/\n 60 \n\n\t' /\n0 ' /\t\t 0", DerivationPath{0x80000000 + 44, 0x80000000 + 60, 0x80000000 + 0, 0}},
// Invaid derivation paths
{"", nil}, // Empty relative derivation path
{"m", nil}, // Empty absolute derivation path
{"m/", nil}, // Missing last derivation component
{"/44'/60'/0'/0", nil}, // Absolute path without m prefix, might be user error
{"m/2147483648'", nil}, // Overflows 32 bit integer
{"m/-1'", nil}, // Cannot contain negative number
}
for i, tt := range tests {
if path, err := ParseDerivationPath(tt.input); !reflect.DeepEqual(path, tt.output) {
t.Errorf("test %d: parse mismatch: have %v (%v), want %v", i, path, err, tt.output)
} else if path == nil && err == nil {
t.Errorf("test %d: nil path and error: %v", i, err)
}
}
}

View File

@@ -0,0 +1,298 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package keystore
import (
"bufio"
"encoding/json"
"fmt"
"os"
"path/filepath"
"sort"
"strings"
"sync"
"time"
"github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
"gopkg.in/fatih/set.v0"
)
// Minimum amount of time between cache reloads. This limit applies if the platform does
// not support change notifications. It also applies if the keystore directory does not
// exist yet, the code will attempt to create a watcher at most this often.
const minReloadInterval = 2 * time.Second
type accountsByURL []accounts.Account
func (s accountsByURL) Len() int { return len(s) }
func (s accountsByURL) Less(i, j int) bool { return s[i].URL.Cmp(s[j].URL) < 0 }
func (s accountsByURL) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
// AmbiguousAddrError is returned when attempting to unlock
// an address for which more than one file exists.
type AmbiguousAddrError struct {
Addr common.Address
Matches []accounts.Account
}
func (err *AmbiguousAddrError) Error() string {
files := ""
for i, a := range err.Matches {
files += a.URL.Path
if i < len(err.Matches)-1 {
files += ", "
}
}
return fmt.Sprintf("multiple keys match address (%s)", files)
}
// accountCache is a live index of all accounts in the keystore.
type accountCache struct {
keydir string
watcher *watcher
mu sync.Mutex
all accountsByURL
byAddr map[common.Address][]accounts.Account
throttle *time.Timer
notify chan struct{}
fileC fileCache
}
func newAccountCache(keydir string) (*accountCache, chan struct{}) {
ac := &accountCache{
keydir: keydir,
byAddr: make(map[common.Address][]accounts.Account),
notify: make(chan struct{}, 1),
fileC: fileCache{all: set.NewNonTS()},
}
ac.watcher = newWatcher(ac)
return ac, ac.notify
}
func (ac *accountCache) accounts() []accounts.Account {
ac.maybeReload()
ac.mu.Lock()
defer ac.mu.Unlock()
cpy := make([]accounts.Account, len(ac.all))
copy(cpy, ac.all)
return cpy
}
func (ac *accountCache) hasAddress(addr common.Address) bool {
ac.maybeReload()
ac.mu.Lock()
defer ac.mu.Unlock()
return len(ac.byAddr[addr]) > 0
}
func (ac *accountCache) add(newAccount accounts.Account) {
ac.mu.Lock()
defer ac.mu.Unlock()
i := sort.Search(len(ac.all), func(i int) bool { return ac.all[i].URL.Cmp(newAccount.URL) >= 0 })
if i < len(ac.all) && ac.all[i] == newAccount {
return
}
// newAccount is not in the cache.
ac.all = append(ac.all, accounts.Account{})
copy(ac.all[i+1:], ac.all[i:])
ac.all[i] = newAccount
ac.byAddr[newAccount.Address] = append(ac.byAddr[newAccount.Address], newAccount)
}
// note: removed needs to be unique here (i.e. both File and Address must be set).
func (ac *accountCache) delete(removed accounts.Account) {
ac.mu.Lock()
defer ac.mu.Unlock()
ac.all = removeAccount(ac.all, removed)
if ba := removeAccount(ac.byAddr[removed.Address], removed); len(ba) == 0 {
delete(ac.byAddr, removed.Address)
} else {
ac.byAddr[removed.Address] = ba
}
}
// deleteByFile removes an account referenced by the given path.
func (ac *accountCache) deleteByFile(path string) {
ac.mu.Lock()
defer ac.mu.Unlock()
i := sort.Search(len(ac.all), func(i int) bool { return ac.all[i].URL.Path >= path })
if i < len(ac.all) && ac.all[i].URL.Path == path {
removed := ac.all[i]
ac.all = append(ac.all[:i], ac.all[i+1:]...)
if ba := removeAccount(ac.byAddr[removed.Address], removed); len(ba) == 0 {
delete(ac.byAddr, removed.Address)
} else {
ac.byAddr[removed.Address] = ba
}
}
}
func removeAccount(slice []accounts.Account, elem accounts.Account) []accounts.Account {
for i := range slice {
if slice[i] == elem {
return append(slice[:i], slice[i+1:]...)
}
}
return slice
}
// find returns the cached account for address if there is a unique match.
// The exact matching rules are explained by the documentation of accounts.Account.
// Callers must hold ac.mu.
func (ac *accountCache) find(a accounts.Account) (accounts.Account, error) {
// Limit search to address candidates if possible.
matches := ac.all
if (a.Address != common.Address{}) {
matches = ac.byAddr[a.Address]
}
if a.URL.Path != "" {
// If only the basename is specified, complete the path.
if !strings.ContainsRune(a.URL.Path, filepath.Separator) {
a.URL.Path = filepath.Join(ac.keydir, a.URL.Path)
}
for i := range matches {
if matches[i].URL == a.URL {
return matches[i], nil
}
}
if (a.Address == common.Address{}) {
return accounts.Account{}, ErrNoMatch
}
}
switch len(matches) {
case 1:
return matches[0], nil
case 0:
return accounts.Account{}, ErrNoMatch
default:
err := &AmbiguousAddrError{Addr: a.Address, Matches: make([]accounts.Account, len(matches))}
copy(err.Matches, matches)
sort.Sort(accountsByURL(err.Matches))
return accounts.Account{}, err
}
}
func (ac *accountCache) maybeReload() {
ac.mu.Lock()
if ac.watcher.running {
ac.mu.Unlock()
return // A watcher is running and will keep the cache up-to-date.
}
if ac.throttle == nil {
ac.throttle = time.NewTimer(0)
} else {
select {
case <-ac.throttle.C:
default:
ac.mu.Unlock()
return // The cache was reloaded recently.
}
}
// No watcher running, start it.
ac.watcher.start()
ac.throttle.Reset(minReloadInterval)
ac.mu.Unlock()
ac.scanAccounts()
}
func (ac *accountCache) close() {
ac.mu.Lock()
ac.watcher.close()
if ac.throttle != nil {
ac.throttle.Stop()
}
if ac.notify != nil {
close(ac.notify)
ac.notify = nil
}
ac.mu.Unlock()
}
// scanAccounts checks if any changes have occurred on the filesystem, and
// updates the account cache accordingly
func (ac *accountCache) scanAccounts() error {
// Scan the entire folder metadata for file changes
creates, deletes, updates, err := ac.fileC.scan(ac.keydir)
if err != nil {
log.Debug("Failed to reload keystore contents", "err", err)
return err
}
if creates.Size() == 0 && deletes.Size() == 0 && updates.Size() == 0 {
return nil
}
// Create a helper method to scan the contents of the key files
var (
buf = new(bufio.Reader)
key struct {
Address string `json:"address"`
}
)
readAccount := func(path string) *accounts.Account {
fd, err := os.Open(path)
if err != nil {
log.Trace("Failed to open keystore file", "path", path, "err", err)
return nil
}
defer fd.Close()
buf.Reset(fd)
// Parse the address.
key.Address = ""
err = json.NewDecoder(buf).Decode(&key)
addr := common.HexToAddress(key.Address)
switch {
case err != nil:
log.Debug("Failed to decode keystore key", "path", path, "err", err)
case (addr == common.Address{}):
log.Debug("Failed to decode keystore key", "path", path, "err", "missing or zero address")
default:
return &accounts.Account{Address: addr, URL: accounts.URL{Scheme: KeyStoreScheme, Path: path}}
}
return nil
}
// Process all the file diffs
start := time.Now()
for _, p := range creates.List() {
if a := readAccount(p.(string)); a != nil {
ac.add(*a)
}
}
for _, p := range deletes.List() {
ac.deleteByFile(p.(string))
}
for _, p := range updates.List() {
path := p.(string)
ac.deleteByFile(path)
if a := readAccount(path); a != nil {
ac.add(*a)
}
}
end := time.Now()
select {
case ac.notify <- struct{}{}:
default:
}
log.Trace("Handled keystore changes", "time", end.Sub(start))
return nil
}

View File

@@ -0,0 +1,406 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package keystore
import (
"fmt"
"io/ioutil"
"math/rand"
"os"
"path/filepath"
"reflect"
"sort"
"testing"
"time"
"github.com/cespare/cp"
"github.com/davecgh/go-spew/spew"
"github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/common"
)
var (
cachetestDir, _ = filepath.Abs(filepath.Join("testdata", "keystore"))
cachetestAccounts = []accounts.Account{
{
Address: common.HexToAddress("7ef5a6135f1fd6a02593eedc869c6d41d934aef8"),
URL: accounts.URL{Scheme: KeyStoreScheme, Path: filepath.Join(cachetestDir, "UTC--2016-03-22T12-57-55.920751759Z--7ef5a6135f1fd6a02593eedc869c6d41d934aef8")},
},
{
Address: common.HexToAddress("f466859ead1932d743d622cb74fc058882e8648a"),
URL: accounts.URL{Scheme: KeyStoreScheme, Path: filepath.Join(cachetestDir, "aaa")},
},
{
Address: common.HexToAddress("289d485d9771714cce91d3393d764e1311907acc"),
URL: accounts.URL{Scheme: KeyStoreScheme, Path: filepath.Join(cachetestDir, "zzz")},
},
}
)
func TestWatchNewFile(t *testing.T) {
t.Parallel()
dir, ks := tmpKeyStore(t, false)
defer os.RemoveAll(dir)
// Ensure the watcher is started before adding any files.
ks.Accounts()
time.Sleep(1000 * time.Millisecond)
// Move in the files.
wantAccounts := make([]accounts.Account, len(cachetestAccounts))
for i := range cachetestAccounts {
wantAccounts[i] = accounts.Account{
Address: cachetestAccounts[i].Address,
URL: accounts.URL{Scheme: KeyStoreScheme, Path: filepath.Join(dir, filepath.Base(cachetestAccounts[i].URL.Path))},
}
if err := cp.CopyFile(wantAccounts[i].URL.Path, cachetestAccounts[i].URL.Path); err != nil {
t.Fatal(err)
}
}
// ks should see the accounts.
var list []accounts.Account
for d := 200 * time.Millisecond; d < 5*time.Second; d *= 2 {
list = ks.Accounts()
if reflect.DeepEqual(list, wantAccounts) {
// ks should have also received change notifications
select {
case <-ks.changes:
default:
t.Fatalf("wasn't notified of new accounts")
}
return
}
time.Sleep(d)
}
t.Errorf("got %s, want %s", spew.Sdump(list), spew.Sdump(wantAccounts))
}
func TestWatchNoDir(t *testing.T) {
t.Parallel()
// Create ks but not the directory that it watches.
rand.Seed(time.Now().UnixNano())
dir := filepath.Join(os.TempDir(), fmt.Sprintf("eth-keystore-watch-test-%d-%d", os.Getpid(), rand.Int()))
ks := NewKeyStore(dir, LightScryptN, LightScryptP)
list := ks.Accounts()
if len(list) > 0 {
t.Error("initial account list not empty:", list)
}
time.Sleep(100 * time.Millisecond)
// Create the directory and copy a key file into it.
os.MkdirAll(dir, 0700)
defer os.RemoveAll(dir)
file := filepath.Join(dir, "aaa")
if err := cp.CopyFile(file, cachetestAccounts[0].URL.Path); err != nil {
t.Fatal(err)
}
// ks should see the account.
wantAccounts := []accounts.Account{cachetestAccounts[0]}
wantAccounts[0].URL = accounts.URL{Scheme: KeyStoreScheme, Path: file}
for d := 200 * time.Millisecond; d < 8*time.Second; d *= 2 {
list = ks.Accounts()
if reflect.DeepEqual(list, wantAccounts) {
// ks should have also received change notifications
select {
case <-ks.changes:
default:
t.Fatalf("wasn't notified of new accounts")
}
return
}
time.Sleep(d)
}
t.Errorf("\ngot %v\nwant %v", list, wantAccounts)
}
func TestCacheInitialReload(t *testing.T) {
cache, _ := newAccountCache(cachetestDir)
accounts := cache.accounts()
if !reflect.DeepEqual(accounts, cachetestAccounts) {
t.Fatalf("got initial accounts: %swant %s", spew.Sdump(accounts), spew.Sdump(cachetestAccounts))
}
}
func TestCacheAddDeleteOrder(t *testing.T) {
cache, _ := newAccountCache("testdata/no-such-dir")
cache.watcher.running = true // prevent unexpected reloads
accs := []accounts.Account{
{
Address: common.HexToAddress("095e7baea6a6c7c4c2dfeb977efac326af552d87"),
URL: accounts.URL{Scheme: KeyStoreScheme, Path: "-309830980"},
},
{
Address: common.HexToAddress("2cac1adea150210703ba75ed097ddfe24e14f213"),
URL: accounts.URL{Scheme: KeyStoreScheme, Path: "ggg"},
},
{
Address: common.HexToAddress("8bda78331c916a08481428e4b07c96d3e916d165"),
URL: accounts.URL{Scheme: KeyStoreScheme, Path: "zzzzzz-the-very-last-one.keyXXX"},
},
{
Address: common.HexToAddress("d49ff4eeb0b2686ed89c0fc0f2b6ea533ddbbd5e"),
URL: accounts.URL{Scheme: KeyStoreScheme, Path: "SOMETHING.key"},
},
{
Address: common.HexToAddress("7ef5a6135f1fd6a02593eedc869c6d41d934aef8"),
URL: accounts.URL{Scheme: KeyStoreScheme, Path: "UTC--2016-03-22T12-57-55.920751759Z--7ef5a6135f1fd6a02593eedc869c6d41d934aef8"},
},
{
Address: common.HexToAddress("f466859ead1932d743d622cb74fc058882e8648a"),
URL: accounts.URL{Scheme: KeyStoreScheme, Path: "aaa"},
},
{
Address: common.HexToAddress("289d485d9771714cce91d3393d764e1311907acc"),
URL: accounts.URL{Scheme: KeyStoreScheme, Path: "zzz"},
},
}
for _, a := range accs {
cache.add(a)
}
// Add some of them twice to check that they don't get reinserted.
cache.add(accs[0])
cache.add(accs[2])
// Check that the account list is sorted by filename.
wantAccounts := make([]accounts.Account, len(accs))
copy(wantAccounts, accs)
sort.Sort(accountsByURL(wantAccounts))
list := cache.accounts()
if !reflect.DeepEqual(list, wantAccounts) {
t.Fatalf("got accounts: %s\nwant %s", spew.Sdump(accs), spew.Sdump(wantAccounts))
}
for _, a := range accs {
if !cache.hasAddress(a.Address) {
t.Errorf("expected hasAccount(%x) to return true", a.Address)
}
}
if cache.hasAddress(common.HexToAddress("fd9bd350f08ee3c0c19b85a8e16114a11a60aa4e")) {
t.Errorf("expected hasAccount(%x) to return false", common.HexToAddress("fd9bd350f08ee3c0c19b85a8e16114a11a60aa4e"))
}
// Delete a few keys from the cache.
for i := 0; i < len(accs); i += 2 {
cache.delete(wantAccounts[i])
}
cache.delete(accounts.Account{Address: common.HexToAddress("fd9bd350f08ee3c0c19b85a8e16114a11a60aa4e"), URL: accounts.URL{Scheme: KeyStoreScheme, Path: "something"}})
// Check content again after deletion.
wantAccountsAfterDelete := []accounts.Account{
wantAccounts[1],
wantAccounts[3],
wantAccounts[5],
}
list = cache.accounts()
if !reflect.DeepEqual(list, wantAccountsAfterDelete) {
t.Fatalf("got accounts after delete: %s\nwant %s", spew.Sdump(list), spew.Sdump(wantAccountsAfterDelete))
}
for _, a := range wantAccountsAfterDelete {
if !cache.hasAddress(a.Address) {
t.Errorf("expected hasAccount(%x) to return true", a.Address)
}
}
if cache.hasAddress(wantAccounts[0].Address) {
t.Errorf("expected hasAccount(%x) to return false", wantAccounts[0].Address)
}
}
func TestCacheFind(t *testing.T) {
dir := filepath.Join("testdata", "dir")
cache, _ := newAccountCache(dir)
cache.watcher.running = true // prevent unexpected reloads
accs := []accounts.Account{
{
Address: common.HexToAddress("095e7baea6a6c7c4c2dfeb977efac326af552d87"),
URL: accounts.URL{Scheme: KeyStoreScheme, Path: filepath.Join(dir, "a.key")},
},
{
Address: common.HexToAddress("2cac1adea150210703ba75ed097ddfe24e14f213"),
URL: accounts.URL{Scheme: KeyStoreScheme, Path: filepath.Join(dir, "b.key")},
},
{
Address: common.HexToAddress("d49ff4eeb0b2686ed89c0fc0f2b6ea533ddbbd5e"),
URL: accounts.URL{Scheme: KeyStoreScheme, Path: filepath.Join(dir, "c.key")},
},
{
Address: common.HexToAddress("d49ff4eeb0b2686ed89c0fc0f2b6ea533ddbbd5e"),
URL: accounts.URL{Scheme: KeyStoreScheme, Path: filepath.Join(dir, "c2.key")},
},
}
for _, a := range accs {
cache.add(a)
}
nomatchAccount := accounts.Account{
Address: common.HexToAddress("f466859ead1932d743d622cb74fc058882e8648a"),
URL: accounts.URL{Scheme: KeyStoreScheme, Path: filepath.Join(dir, "something")},
}
tests := []struct {
Query accounts.Account
WantResult accounts.Account
WantError error
}{
// by address
{Query: accounts.Account{Address: accs[0].Address}, WantResult: accs[0]},
// by file
{Query: accounts.Account{URL: accs[0].URL}, WantResult: accs[0]},
// by basename
{Query: accounts.Account{URL: accounts.URL{Scheme: KeyStoreScheme, Path: filepath.Base(accs[0].URL.Path)}}, WantResult: accs[0]},
// by file and address
{Query: accs[0], WantResult: accs[0]},
// ambiguous address, tie resolved by file
{Query: accs[2], WantResult: accs[2]},
// ambiguous address error
{
Query: accounts.Account{Address: accs[2].Address},
WantError: &AmbiguousAddrError{
Addr: accs[2].Address,
Matches: []accounts.Account{accs[2], accs[3]},
},
},
// no match error
{Query: nomatchAccount, WantError: ErrNoMatch},
{Query: accounts.Account{URL: nomatchAccount.URL}, WantError: ErrNoMatch},
{Query: accounts.Account{URL: accounts.URL{Scheme: KeyStoreScheme, Path: filepath.Base(nomatchAccount.URL.Path)}}, WantError: ErrNoMatch},
{Query: accounts.Account{Address: nomatchAccount.Address}, WantError: ErrNoMatch},
}
for i, test := range tests {
a, err := cache.find(test.Query)
if !reflect.DeepEqual(err, test.WantError) {
t.Errorf("test %d: error mismatch for query %v\ngot %q\nwant %q", i, test.Query, err, test.WantError)
continue
}
if a != test.WantResult {
t.Errorf("test %d: result mismatch for query %v\ngot %v\nwant %v", i, test.Query, a, test.WantResult)
continue
}
}
}
func waitForAccounts(wantAccounts []accounts.Account, ks *KeyStore) error {
var list []accounts.Account
for d := 200 * time.Millisecond; d < 8*time.Second; d *= 2 {
list = ks.Accounts()
if reflect.DeepEqual(list, wantAccounts) {
// ks should have also received change notifications
select {
case <-ks.changes:
default:
return fmt.Errorf("wasn't notified of new accounts")
}
return nil
}
time.Sleep(d)
}
return fmt.Errorf("\ngot %v\nwant %v", list, wantAccounts)
}
// TestUpdatedKeyfileContents tests that updating the contents of a keystore file
// is noticed by the watcher, and the account cache is updated accordingly
func TestUpdatedKeyfileContents(t *testing.T) {
t.Parallel()
// Create a temporary kesytore to test with
rand.Seed(time.Now().UnixNano())
dir := filepath.Join(os.TempDir(), fmt.Sprintf("eth-keystore-watch-test-%d-%d", os.Getpid(), rand.Int()))
ks := NewKeyStore(dir, LightScryptN, LightScryptP)
list := ks.Accounts()
if len(list) > 0 {
t.Error("initial account list not empty:", list)
}
time.Sleep(100 * time.Millisecond)
// Create the directory and copy a key file into it.
os.MkdirAll(dir, 0700)
defer os.RemoveAll(dir)
file := filepath.Join(dir, "aaa")
// Place one of our testfiles in there
if err := cp.CopyFile(file, cachetestAccounts[0].URL.Path); err != nil {
t.Fatal(err)
}
// ks should see the account.
wantAccounts := []accounts.Account{cachetestAccounts[0]}
wantAccounts[0].URL = accounts.URL{Scheme: KeyStoreScheme, Path: file}
if err := waitForAccounts(wantAccounts, ks); err != nil {
t.Error(err)
return
}
// needed so that modTime of `file` is different to its current value after forceCopyFile
time.Sleep(1000 * time.Millisecond)
// Now replace file contents
if err := forceCopyFile(file, cachetestAccounts[1].URL.Path); err != nil {
t.Fatal(err)
return
}
wantAccounts = []accounts.Account{cachetestAccounts[1]}
wantAccounts[0].URL = accounts.URL{Scheme: KeyStoreScheme, Path: file}
if err := waitForAccounts(wantAccounts, ks); err != nil {
t.Errorf("First replacement failed")
t.Error(err)
return
}
// needed so that modTime of `file` is different to its current value after forceCopyFile
time.Sleep(1000 * time.Millisecond)
// Now replace file contents again
if err := forceCopyFile(file, cachetestAccounts[2].URL.Path); err != nil {
t.Fatal(err)
return
}
wantAccounts = []accounts.Account{cachetestAccounts[2]}
wantAccounts[0].URL = accounts.URL{Scheme: KeyStoreScheme, Path: file}
if err := waitForAccounts(wantAccounts, ks); err != nil {
t.Errorf("Second replacement failed")
t.Error(err)
return
}
// needed so that modTime of `file` is different to its current value after ioutil.WriteFile
time.Sleep(1000 * time.Millisecond)
// Now replace file contents with crap
if err := ioutil.WriteFile(file, []byte("foo"), 0644); err != nil {
t.Fatal(err)
return
}
if err := waitForAccounts([]accounts.Account{}, ks); err != nil {
t.Errorf("Emptying account file failed")
t.Error(err)
return
}
}
// forceCopyFile is like cp.CopyFile, but doesn't complain if the destination exists.
func forceCopyFile(dst, src string) error {
data, err := ioutil.ReadFile(src)
if err != nil {
return err
}
return ioutil.WriteFile(dst, data, 0644)
}

View File

@@ -0,0 +1,102 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package keystore
import (
"io/ioutil"
"os"
"path/filepath"
"strings"
"sync"
"time"
"github.com/ethereum/go-ethereum/log"
set "gopkg.in/fatih/set.v0"
)
// fileCache is a cache of files seen during scan of keystore.
type fileCache struct {
all *set.SetNonTS // Set of all files from the keystore folder
lastMod time.Time // Last time instance when a file was modified
mu sync.RWMutex
}
// scan performs a new scan on the given directory, compares against the already
// cached filenames, and returns file sets: creates, deletes, updates.
func (fc *fileCache) scan(keyDir string) (set.Interface, set.Interface, set.Interface, error) {
t0 := time.Now()
// List all the failes from the keystore folder
files, err := ioutil.ReadDir(keyDir)
if err != nil {
return nil, nil, nil, err
}
t1 := time.Now()
fc.mu.Lock()
defer fc.mu.Unlock()
// Iterate all the files and gather their metadata
all := set.NewNonTS()
mods := set.NewNonTS()
var newLastMod time.Time
for _, fi := range files {
// Skip any non-key files from the folder
path := filepath.Join(keyDir, fi.Name())
if skipKeyFile(fi) {
log.Trace("Ignoring file on account scan", "path", path)
continue
}
// Gather the set of all and fresly modified files
all.Add(path)
modified := fi.ModTime()
if modified.After(fc.lastMod) {
mods.Add(path)
}
if modified.After(newLastMod) {
newLastMod = modified
}
}
t2 := time.Now()
// Update the tracked files and return the three sets
deletes := set.Difference(fc.all, all) // Deletes = previous - current
creates := set.Difference(all, fc.all) // Creates = current - previous
updates := set.Difference(mods, creates) // Updates = modified - creates
fc.all, fc.lastMod = all, newLastMod
t3 := time.Now()
// Report on the scanning stats and return
log.Debug("FS scan times", "list", t1.Sub(t0), "set", t2.Sub(t1), "diff", t3.Sub(t2))
return creates, deletes, updates, nil
}
// skipKeyFile ignores editor backups, hidden files and folders/symlinks.
func skipKeyFile(fi os.FileInfo) bool {
// Skip editor backups and UNIX-style hidden files.
if strings.HasSuffix(fi.Name(), "~") || strings.HasPrefix(fi.Name(), ".") {
return true
}
// Skip misc special files, directories (yes, symlinks too).
if fi.IsDir() || fi.Mode()&os.ModeType != 0 {
return true
}
return false
}

220
accounts/keystore/key.go Normal file
View File

@@ -0,0 +1,220 @@
// Copyright 2014 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package keystore
import (
"bytes"
"crypto/ecdsa"
"encoding/hex"
"encoding/json"
"fmt"
"io"
"io/ioutil"
"os"
"path/filepath"
"strings"
"time"
"github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
"github.com/pborman/uuid"
)
const (
version = 3
)
type Key struct {
Id uuid.UUID // Version 4 "random" for unique id not derived from key data
// to simplify lookups we also store the address
Address common.Address
// we only store privkey as pubkey/address can be derived from it
// privkey in this struct is always in plaintext
PrivateKey *ecdsa.PrivateKey
}
type keyStore interface {
// Loads and decrypts the key from disk.
GetKey(addr common.Address, filename string, auth string) (*Key, error)
// Writes and encrypts the key.
StoreKey(filename string, k *Key, auth string) error
// Joins filename with the key directory unless it is already absolute.
JoinPath(filename string) string
}
type plainKeyJSON struct {
Address string `json:"address"`
PrivateKey string `json:"privatekey"`
Id string `json:"id"`
Version int `json:"version"`
}
type encryptedKeyJSONV3 struct {
Address string `json:"address"`
Crypto cryptoJSON `json:"crypto"`
Id string `json:"id"`
Version int `json:"version"`
}
type encryptedKeyJSONV1 struct {
Address string `json:"address"`
Crypto cryptoJSON `json:"crypto"`
Id string `json:"id"`
Version string `json:"version"`
}
type cryptoJSON struct {
Cipher string `json:"cipher"`
CipherText string `json:"ciphertext"`
CipherParams cipherparamsJSON `json:"cipherparams"`
KDF string `json:"kdf"`
KDFParams map[string]interface{} `json:"kdfparams"`
MAC string `json:"mac"`
}
type cipherparamsJSON struct {
IV string `json:"iv"`
}
func (k *Key) MarshalJSON() (j []byte, err error) {
jStruct := plainKeyJSON{
hex.EncodeToString(k.Address[:]),
hex.EncodeToString(crypto.FromECDSA(k.PrivateKey)),
k.Id.String(),
version,
}
j, err = json.Marshal(jStruct)
return j, err
}
func (k *Key) UnmarshalJSON(j []byte) (err error) {
keyJSON := new(plainKeyJSON)
err = json.Unmarshal(j, &keyJSON)
if err != nil {
return err
}
u := new(uuid.UUID)
*u = uuid.Parse(keyJSON.Id)
k.Id = *u
addr, err := hex.DecodeString(keyJSON.Address)
if err != nil {
return err
}
privkey, err := crypto.HexToECDSA(keyJSON.PrivateKey)
if err != nil {
return err
}
k.Address = common.BytesToAddress(addr)
k.PrivateKey = privkey
return nil
}
func newKeyFromECDSA(privateKeyECDSA *ecdsa.PrivateKey) *Key {
id := uuid.NewRandom()
key := &Key{
Id: id,
Address: crypto.PubkeyToAddress(privateKeyECDSA.PublicKey),
PrivateKey: privateKeyECDSA,
}
return key
}
// NewKeyForDirectICAP generates a key whose address fits into < 155 bits so it can fit
// into the Direct ICAP spec. for simplicity and easier compatibility with other libs, we
// retry until the first byte is 0.
func NewKeyForDirectICAP(rand io.Reader) *Key {
randBytes := make([]byte, 64)
_, err := rand.Read(randBytes)
if err != nil {
panic("key generation: could not read from random source: " + err.Error())
}
reader := bytes.NewReader(randBytes)
privateKeyECDSA, err := ecdsa.GenerateKey(crypto.S256(), reader)
if err != nil {
panic("key generation: ecdsa.GenerateKey failed: " + err.Error())
}
key := newKeyFromECDSA(privateKeyECDSA)
if !strings.HasPrefix(key.Address.Hex(), "0x00") {
return NewKeyForDirectICAP(rand)
}
return key
}
func newKey(rand io.Reader) (*Key, error) {
privateKeyECDSA, err := ecdsa.GenerateKey(crypto.S256(), rand)
if err != nil {
return nil, err
}
return newKeyFromECDSA(privateKeyECDSA), nil
}
func storeNewKey(ks keyStore, rand io.Reader, auth string) (*Key, accounts.Account, error) {
key, err := newKey(rand)
if err != nil {
return nil, accounts.Account{}, err
}
a := accounts.Account{Address: key.Address, URL: accounts.URL{Scheme: KeyStoreScheme, Path: ks.JoinPath(keyFileName(key.Address))}}
if err := ks.StoreKey(a.URL.Path, key, auth); err != nil {
zeroKey(key.PrivateKey)
return nil, a, err
}
return key, a, err
}
func writeKeyFile(file string, content []byte) error {
// Create the keystore directory with appropriate permissions
// in case it is not present yet.
const dirPerm = 0700
if err := os.MkdirAll(filepath.Dir(file), dirPerm); err != nil {
return err
}
// Atomic write: create a temporary hidden file first
// then move it into place. TempFile assigns mode 0600.
f, err := ioutil.TempFile(filepath.Dir(file), "."+filepath.Base(file)+".tmp")
if err != nil {
return err
}
if _, err := f.Write(content); err != nil {
f.Close()
os.Remove(f.Name())
return err
}
f.Close()
return os.Rename(f.Name(), file)
}
// keyFileName implements the naming convention for keyfiles:
// UTC--<created_at UTC ISO8601>-<address hex>
func keyFileName(keyAddr common.Address) string {
ts := time.Now().UTC()
return fmt.Sprintf("UTC--%s--%s", toISO8601(ts), hex.EncodeToString(keyAddr[:]))
}
func toISO8601(t time.Time) string {
var tz string
name, offset := t.Zone()
if name == "UTC" {
tz = "Z"
} else {
tz = fmt.Sprintf("%03d00", offset/3600)
}
return fmt.Sprintf("%04d-%02d-%02dT%02d-%02d-%02d.%09d%s", t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second(), t.Nanosecond(), tz)
}

View File

@@ -0,0 +1,493 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
// Package keystore implements encrypted storage of secp256k1 private keys.
//
// Keys are stored as encrypted JSON files according to the Web3 Secret Storage specification.
// See https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition for more information.
package keystore
import (
"crypto/ecdsa"
crand "crypto/rand"
"errors"
"fmt"
"math/big"
"os"
"path/filepath"
"reflect"
"runtime"
"sync"
"time"
"github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/event"
)
var (
ErrLocked = accounts.NewAuthNeededError("password or unlock")
ErrNoMatch = errors.New("no key for given address or file")
ErrDecrypt = errors.New("could not decrypt key with given passphrase")
)
// KeyStoreType is the reflect type of a keystore backend.
var KeyStoreType = reflect.TypeOf(&KeyStore{})
// KeyStoreScheme is the protocol scheme prefixing account and wallet URLs.
var KeyStoreScheme = "keystore"
// Maximum time between wallet refreshes (if filesystem notifications don't work).
const walletRefreshCycle = 3 * time.Second
// KeyStore manages a key storage directory on disk.
type KeyStore struct {
storage keyStore // Storage backend, might be cleartext or encrypted
cache *accountCache // In-memory account cache over the filesystem storage
changes chan struct{} // Channel receiving change notifications from the cache
unlocked map[common.Address]*unlocked // Currently unlocked account (decrypted private keys)
wallets []accounts.Wallet // Wallet wrappers around the individual key files
updateFeed event.Feed // Event feed to notify wallet additions/removals
updateScope event.SubscriptionScope // Subscription scope tracking current live listeners
updating bool // Whether the event notification loop is running
mu sync.RWMutex
}
type unlocked struct {
*Key
abort chan struct{}
}
// NewKeyStore creates a keystore for the given directory.
func NewKeyStore(keydir string, scryptN, scryptP int) *KeyStore {
keydir, _ = filepath.Abs(keydir)
ks := &KeyStore{storage: &keyStorePassphrase{keydir, scryptN, scryptP}}
ks.init(keydir)
return ks
}
// NewPlaintextKeyStore creates a keystore for the given directory.
// Deprecated: Use NewKeyStore.
func NewPlaintextKeyStore(keydir string) *KeyStore {
keydir, _ = filepath.Abs(keydir)
ks := &KeyStore{storage: &keyStorePlain{keydir}}
ks.init(keydir)
return ks
}
func (ks *KeyStore) init(keydir string) {
// Lock the mutex since the account cache might call back with events
ks.mu.Lock()
defer ks.mu.Unlock()
// Initialize the set of unlocked keys and the account cache
ks.unlocked = make(map[common.Address]*unlocked)
ks.cache, ks.changes = newAccountCache(keydir)
// TODO: In order for this finalizer to work, there must be no references
// to ks. addressCache doesn't keep a reference but unlocked keys do,
// so the finalizer will not trigger until all timed unlocks have expired.
runtime.SetFinalizer(ks, func(m *KeyStore) {
m.cache.close()
})
// Create the initial list of wallets from the cache
accs := ks.cache.accounts()
ks.wallets = make([]accounts.Wallet, len(accs))
for i := 0; i < len(accs); i++ {
ks.wallets[i] = &keystoreWallet{account: accs[i], keystore: ks}
}
}
// Wallets implements accounts.Backend, returning all single-key wallets from the
// keystore directory.
func (ks *KeyStore) Wallets() []accounts.Wallet {
// Make sure the list of wallets is in sync with the account cache
ks.refreshWallets()
ks.mu.RLock()
defer ks.mu.RUnlock()
cpy := make([]accounts.Wallet, len(ks.wallets))
copy(cpy, ks.wallets)
return cpy
}
// refreshWallets retrieves the current account list and based on that does any
// necessary wallet refreshes.
func (ks *KeyStore) refreshWallets() {
// Retrieve the current list of accounts
ks.mu.Lock()
accs := ks.cache.accounts()
// Transform the current list of wallets into the new one
wallets := make([]accounts.Wallet, 0, len(accs))
events := []accounts.WalletEvent{}
for _, account := range accs {
// Drop wallets while they were in front of the next account
for len(ks.wallets) > 0 && ks.wallets[0].URL().Cmp(account.URL) < 0 {
events = append(events, accounts.WalletEvent{Wallet: ks.wallets[0], Kind: accounts.WalletDropped})
ks.wallets = ks.wallets[1:]
}
// If there are no more wallets or the account is before the next, wrap new wallet
if len(ks.wallets) == 0 || ks.wallets[0].URL().Cmp(account.URL) > 0 {
wallet := &keystoreWallet{account: account, keystore: ks}
events = append(events, accounts.WalletEvent{Wallet: wallet, Kind: accounts.WalletArrived})
wallets = append(wallets, wallet)
continue
}
// If the account is the same as the first wallet, keep it
if ks.wallets[0].Accounts()[0] == account {
wallets = append(wallets, ks.wallets[0])
ks.wallets = ks.wallets[1:]
continue
}
}
// Drop any leftover wallets and set the new batch
for _, wallet := range ks.wallets {
events = append(events, accounts.WalletEvent{Wallet: wallet, Kind: accounts.WalletDropped})
}
ks.wallets = wallets
ks.mu.Unlock()
// Fire all wallet events and return
for _, event := range events {
ks.updateFeed.Send(event)
}
}
// Subscribe implements accounts.Backend, creating an async subscription to
// receive notifications on the addition or removal of keystore wallets.
func (ks *KeyStore) Subscribe(sink chan<- accounts.WalletEvent) event.Subscription {
// We need the mutex to reliably start/stop the update loop
ks.mu.Lock()
defer ks.mu.Unlock()
// Subscribe the caller and track the subscriber count
sub := ks.updateScope.Track(ks.updateFeed.Subscribe(sink))
// Subscribers require an active notification loop, start it
if !ks.updating {
ks.updating = true
go ks.updater()
}
return sub
}
// updater is responsible for maintaining an up-to-date list of wallets stored in
// the keystore, and for firing wallet addition/removal events. It listens for
// account change events from the underlying account cache, and also periodically
// forces a manual refresh (only triggers for systems where the filesystem notifier
// is not running).
func (ks *KeyStore) updater() {
for {
// Wait for an account update or a refresh timeout
select {
case <-ks.changes:
case <-time.After(walletRefreshCycle):
}
// Run the wallet refresher
ks.refreshWallets()
// If all our subscribers left, stop the updater
ks.mu.Lock()
if ks.updateScope.Count() == 0 {
ks.updating = false
ks.mu.Unlock()
return
}
ks.mu.Unlock()
}
}
// HasAddress reports whether a key with the given address is present.
func (ks *KeyStore) HasAddress(addr common.Address) bool {
return ks.cache.hasAddress(addr)
}
// Accounts returns all key files present in the directory.
func (ks *KeyStore) Accounts() []accounts.Account {
return ks.cache.accounts()
}
// Delete deletes the key matched by account if the passphrase is correct.
// If the account contains no filename, the address must match a unique key.
func (ks *KeyStore) Delete(a accounts.Account, passphrase string) error {
// Decrypting the key isn't really necessary, but we do
// it anyway to check the password and zero out the key
// immediately afterwards.
a, key, err := ks.getDecryptedKey(a, passphrase)
if key != nil {
zeroKey(key.PrivateKey)
}
if err != nil {
return err
}
// The order is crucial here. The key is dropped from the
// cache after the file is gone so that a reload happening in
// between won't insert it into the cache again.
err = os.Remove(a.URL.Path)
if err == nil {
ks.cache.delete(a)
ks.refreshWallets()
}
return err
}
// SignHash calculates a ECDSA signature for the given hash. The produced
// signature is in the [R || S || V] format where V is 0 or 1.
func (ks *KeyStore) SignHash(a accounts.Account, hash []byte) ([]byte, error) {
// Look up the key to sign with and abort if it cannot be found
ks.mu.RLock()
defer ks.mu.RUnlock()
unlockedKey, found := ks.unlocked[a.Address]
if !found {
return nil, ErrLocked
}
// Sign the hash using plain ECDSA operations
return crypto.Sign(hash, unlockedKey.PrivateKey)
}
// SignTx signs the given transaction with the requested account.
func (ks *KeyStore) SignTx(a accounts.Account, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error) {
// Look up the key to sign with and abort if it cannot be found
ks.mu.RLock()
defer ks.mu.RUnlock()
unlockedKey, found := ks.unlocked[a.Address]
if !found {
return nil, ErrLocked
}
// Depending on the presence of the chain ID, sign with EIP155 or homestead
if chainID != nil {
return types.SignTx(tx, types.NewEIP155Signer(chainID), unlockedKey.PrivateKey)
}
return types.SignTx(tx, types.HomesteadSigner{}, unlockedKey.PrivateKey)
}
// SignHashWithPassphrase signs hash if the private key matching the given address
// can be decrypted with the given passphrase. The produced signature is in the
// [R || S || V] format where V is 0 or 1.
func (ks *KeyStore) SignHashWithPassphrase(a accounts.Account, passphrase string, hash []byte) (signature []byte, err error) {
_, key, err := ks.getDecryptedKey(a, passphrase)
if err != nil {
return nil, err
}
defer zeroKey(key.PrivateKey)
return crypto.Sign(hash, key.PrivateKey)
}
// SignTxWithPassphrase signs the transaction if the private key matching the
// given address can be decrypted with the given passphrase.
func (ks *KeyStore) SignTxWithPassphrase(a accounts.Account, passphrase string, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error) {
_, key, err := ks.getDecryptedKey(a, passphrase)
if err != nil {
return nil, err
}
defer zeroKey(key.PrivateKey)
// Depending on the presence of the chain ID, sign with EIP155 or homestead
if chainID != nil {
return types.SignTx(tx, types.NewEIP155Signer(chainID), key.PrivateKey)
}
return types.SignTx(tx, types.HomesteadSigner{}, key.PrivateKey)
}
// Unlock unlocks the given account indefinitely.
func (ks *KeyStore) Unlock(a accounts.Account, passphrase string) error {
return ks.TimedUnlock(a, passphrase, 0)
}
// Lock removes the private key with the given address from memory.
func (ks *KeyStore) Lock(addr common.Address) error {
ks.mu.Lock()
if unl, found := ks.unlocked[addr]; found {
ks.mu.Unlock()
ks.expire(addr, unl, time.Duration(0)*time.Nanosecond)
} else {
ks.mu.Unlock()
}
return nil
}
// TimedUnlock unlocks the given account with the passphrase. The account
// stays unlocked for the duration of timeout. A timeout of 0 unlocks the account
// until the program exits. The account must match a unique key file.
//
// If the account address is already unlocked for a duration, TimedUnlock extends or
// shortens the active unlock timeout. If the address was previously unlocked
// indefinitely the timeout is not altered.
func (ks *KeyStore) TimedUnlock(a accounts.Account, passphrase string, timeout time.Duration) error {
a, key, err := ks.getDecryptedKey(a, passphrase)
if err != nil {
return err
}
ks.mu.Lock()
defer ks.mu.Unlock()
u, found := ks.unlocked[a.Address]
if found {
if u.abort == nil {
// The address was unlocked indefinitely, so unlocking
// it with a timeout would be confusing.
zeroKey(key.PrivateKey)
return nil
}
// Terminate the expire goroutine and replace it below.
close(u.abort)
}
if timeout > 0 {
u = &unlocked{Key: key, abort: make(chan struct{})}
go ks.expire(a.Address, u, timeout)
} else {
u = &unlocked{Key: key}
}
ks.unlocked[a.Address] = u
return nil
}
// Find resolves the given account into a unique entry in the keystore.
func (ks *KeyStore) Find(a accounts.Account) (accounts.Account, error) {
ks.cache.maybeReload()
ks.cache.mu.Lock()
a, err := ks.cache.find(a)
ks.cache.mu.Unlock()
return a, err
}
func (ks *KeyStore) getDecryptedKey(a accounts.Account, auth string) (accounts.Account, *Key, error) {
a, err := ks.Find(a)
if err != nil {
return a, nil, err
}
key, err := ks.storage.GetKey(a.Address, a.URL.Path, auth)
return a, key, err
}
func (ks *KeyStore) expire(addr common.Address, u *unlocked, timeout time.Duration) {
t := time.NewTimer(timeout)
defer t.Stop()
select {
case <-u.abort:
// just quit
case <-t.C:
ks.mu.Lock()
// only drop if it's still the same key instance that dropLater
// was launched with. we can check that using pointer equality
// because the map stores a new pointer every time the key is
// unlocked.
if ks.unlocked[addr] == u {
zeroKey(u.PrivateKey)
delete(ks.unlocked, addr)
}
ks.mu.Unlock()
}
}
// NewAccount generates a new key and stores it into the key directory,
// encrypting it with the passphrase.
func (ks *KeyStore) NewAccount(passphrase string) (accounts.Account, error) {
_, account, err := storeNewKey(ks.storage, crand.Reader, passphrase)
if err != nil {
return accounts.Account{}, err
}
// Add the account to the cache immediately rather
// than waiting for file system notifications to pick it up.
ks.cache.add(account)
ks.refreshWallets()
return account, nil
}
// Export exports as a JSON key, encrypted with newPassphrase.
func (ks *KeyStore) Export(a accounts.Account, passphrase, newPassphrase string) (keyJSON []byte, err error) {
_, key, err := ks.getDecryptedKey(a, passphrase)
if err != nil {
return nil, err
}
var N, P int
if store, ok := ks.storage.(*keyStorePassphrase); ok {
N, P = store.scryptN, store.scryptP
} else {
N, P = StandardScryptN, StandardScryptP
}
return EncryptKey(key, newPassphrase, N, P)
}
// Import stores the given encrypted JSON key into the key directory.
func (ks *KeyStore) Import(keyJSON []byte, passphrase, newPassphrase string) (accounts.Account, error) {
key, err := DecryptKey(keyJSON, passphrase)
if key != nil && key.PrivateKey != nil {
defer zeroKey(key.PrivateKey)
}
if err != nil {
return accounts.Account{}, err
}
return ks.importKey(key, newPassphrase)
}
// ImportECDSA stores the given key into the key directory, encrypting it with the passphrase.
func (ks *KeyStore) ImportECDSA(priv *ecdsa.PrivateKey, passphrase string) (accounts.Account, error) {
key := newKeyFromECDSA(priv)
if ks.cache.hasAddress(key.Address) {
return accounts.Account{}, fmt.Errorf("account already exists")
}
return ks.importKey(key, passphrase)
}
func (ks *KeyStore) importKey(key *Key, passphrase string) (accounts.Account, error) {
a := accounts.Account{Address: key.Address, URL: accounts.URL{Scheme: KeyStoreScheme, Path: ks.storage.JoinPath(keyFileName(key.Address))}}
if err := ks.storage.StoreKey(a.URL.Path, key, passphrase); err != nil {
return accounts.Account{}, err
}
ks.cache.add(a)
ks.refreshWallets()
return a, nil
}
// Update changes the passphrase of an existing account.
func (ks *KeyStore) Update(a accounts.Account, passphrase, newPassphrase string) error {
a, key, err := ks.getDecryptedKey(a, passphrase)
if err != nil {
return err
}
return ks.storage.StoreKey(a.URL.Path, key, newPassphrase)
}
// ImportPreSaleKey decrypts the given Ethereum presale wallet and stores
// a key file in the key directory. The key file is encrypted with the same passphrase.
func (ks *KeyStore) ImportPreSaleKey(keyJSON []byte, passphrase string) (accounts.Account, error) {
a, _, err := importPreSaleKey(ks.storage, keyJSON, passphrase)
if err != nil {
return a, err
}
ks.cache.add(a)
ks.refreshWallets()
return a, nil
}
// zeroKey zeroes a private key in memory.
func zeroKey(k *ecdsa.PrivateKey) {
b := k.D.Bits()
for i := range b {
b[i] = 0
}
}

View File

@@ -0,0 +1,313 @@
// Copyright 2014 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
/*
This key store behaves as KeyStorePlain with the difference that
the private key is encrypted and on disk uses another JSON encoding.
The crypto is documented at https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition
*/
package keystore
import (
"bytes"
"crypto/aes"
crand "crypto/rand"
"crypto/sha256"
"encoding/hex"
"encoding/json"
"fmt"
"io/ioutil"
"path/filepath"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/math"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/crypto/randentropy"
"github.com/pborman/uuid"
"golang.org/x/crypto/pbkdf2"
"golang.org/x/crypto/scrypt"
)
const (
keyHeaderKDF = "scrypt"
// StandardScryptN is the N parameter of Scrypt encryption algorithm, using 256MB
// memory and taking approximately 1s CPU time on a modern processor.
StandardScryptN = 1 << 18
// StandardScryptP is the P parameter of Scrypt encryption algorithm, using 256MB
// memory and taking approximately 1s CPU time on a modern processor.
StandardScryptP = 1
// LightScryptN is the N parameter of Scrypt encryption algorithm, using 4MB
// memory and taking approximately 100ms CPU time on a modern processor.
LightScryptN = 1 << 12
// LightScryptP is the P parameter of Scrypt encryption algorithm, using 4MB
// memory and taking approximately 100ms CPU time on a modern processor.
LightScryptP = 6
scryptR = 8
scryptDKLen = 32
)
type keyStorePassphrase struct {
keysDirPath string
scryptN int
scryptP int
}
func (ks keyStorePassphrase) GetKey(addr common.Address, filename, auth string) (*Key, error) {
// Load the key from the keystore and decrypt its contents
keyjson, err := ioutil.ReadFile(filename)
if err != nil {
return nil, err
}
key, err := DecryptKey(keyjson, auth)
if err != nil {
return nil, err
}
// Make sure we're really operating on the requested key (no swap attacks)
if key.Address != addr {
return nil, fmt.Errorf("key content mismatch: have account %x, want %x", key.Address, addr)
}
return key, nil
}
// StoreKey generates a key, encrypts with 'auth' and stores in the given directory
func StoreKey(dir, auth string, scryptN, scryptP int) (common.Address, error) {
_, a, err := storeNewKey(&keyStorePassphrase{dir, scryptN, scryptP}, crand.Reader, auth)
return a.Address, err
}
func (ks keyStorePassphrase) StoreKey(filename string, key *Key, auth string) error {
keyjson, err := EncryptKey(key, auth, ks.scryptN, ks.scryptP)
if err != nil {
return err
}
return writeKeyFile(filename, keyjson)
}
func (ks keyStorePassphrase) JoinPath(filename string) string {
if filepath.IsAbs(filename) {
return filename
} else {
return filepath.Join(ks.keysDirPath, filename)
}
}
// EncryptKey encrypts a key using the specified scrypt parameters into a json
// blob that can be decrypted later on.
func EncryptKey(key *Key, auth string, scryptN, scryptP int) ([]byte, error) {
authArray := []byte(auth)
salt := randentropy.GetEntropyCSPRNG(32)
derivedKey, err := scrypt.Key(authArray, salt, scryptN, scryptR, scryptP, scryptDKLen)
if err != nil {
return nil, err
}
encryptKey := derivedKey[:16]
keyBytes := math.PaddedBigBytes(key.PrivateKey.D, 32)
iv := randentropy.GetEntropyCSPRNG(aes.BlockSize) // 16
cipherText, err := aesCTRXOR(encryptKey, keyBytes, iv)
if err != nil {
return nil, err
}
mac := crypto.Keccak256(derivedKey[16:32], cipherText)
scryptParamsJSON := make(map[string]interface{}, 5)
scryptParamsJSON["n"] = scryptN
scryptParamsJSON["r"] = scryptR
scryptParamsJSON["p"] = scryptP
scryptParamsJSON["dklen"] = scryptDKLen
scryptParamsJSON["salt"] = hex.EncodeToString(salt)
cipherParamsJSON := cipherparamsJSON{
IV: hex.EncodeToString(iv),
}
cryptoStruct := cryptoJSON{
Cipher: "aes-128-ctr",
CipherText: hex.EncodeToString(cipherText),
CipherParams: cipherParamsJSON,
KDF: keyHeaderKDF,
KDFParams: scryptParamsJSON,
MAC: hex.EncodeToString(mac),
}
encryptedKeyJSONV3 := encryptedKeyJSONV3{
hex.EncodeToString(key.Address[:]),
cryptoStruct,
key.Id.String(),
version,
}
return json.Marshal(encryptedKeyJSONV3)
}
// DecryptKey decrypts a key from a json blob, returning the private key itself.
func DecryptKey(keyjson []byte, auth string) (*Key, error) {
// Parse the json into a simple map to fetch the key version
m := make(map[string]interface{})
if err := json.Unmarshal(keyjson, &m); err != nil {
return nil, err
}
// Depending on the version try to parse one way or another
var (
keyBytes, keyId []byte
err error
)
if version, ok := m["version"].(string); ok && version == "1" {
k := new(encryptedKeyJSONV1)
if err := json.Unmarshal(keyjson, k); err != nil {
return nil, err
}
keyBytes, keyId, err = decryptKeyV1(k, auth)
} else {
k := new(encryptedKeyJSONV3)
if err := json.Unmarshal(keyjson, k); err != nil {
return nil, err
}
keyBytes, keyId, err = decryptKeyV3(k, auth)
}
// Handle any decryption errors and return the key
if err != nil {
return nil, err
}
key := crypto.ToECDSAUnsafe(keyBytes)
return &Key{
Id: uuid.UUID(keyId),
Address: crypto.PubkeyToAddress(key.PublicKey),
PrivateKey: key,
}, nil
}
func decryptKeyV3(keyProtected *encryptedKeyJSONV3, auth string) (keyBytes []byte, keyId []byte, err error) {
if keyProtected.Version != version {
return nil, nil, fmt.Errorf("Version not supported: %v", keyProtected.Version)
}
if keyProtected.Crypto.Cipher != "aes-128-ctr" {
return nil, nil, fmt.Errorf("Cipher not supported: %v", keyProtected.Crypto.Cipher)
}
keyId = uuid.Parse(keyProtected.Id)
mac, err := hex.DecodeString(keyProtected.Crypto.MAC)
if err != nil {
return nil, nil, err
}
iv, err := hex.DecodeString(keyProtected.Crypto.CipherParams.IV)
if err != nil {
return nil, nil, err
}
cipherText, err := hex.DecodeString(keyProtected.Crypto.CipherText)
if err != nil {
return nil, nil, err
}
derivedKey, err := getKDFKey(keyProtected.Crypto, auth)
if err != nil {
return nil, nil, err
}
calculatedMAC := crypto.Keccak256(derivedKey[16:32], cipherText)
if !bytes.Equal(calculatedMAC, mac) {
return nil, nil, ErrDecrypt
}
plainText, err := aesCTRXOR(derivedKey[:16], cipherText, iv)
if err != nil {
return nil, nil, err
}
return plainText, keyId, err
}
func decryptKeyV1(keyProtected *encryptedKeyJSONV1, auth string) (keyBytes []byte, keyId []byte, err error) {
keyId = uuid.Parse(keyProtected.Id)
mac, err := hex.DecodeString(keyProtected.Crypto.MAC)
if err != nil {
return nil, nil, err
}
iv, err := hex.DecodeString(keyProtected.Crypto.CipherParams.IV)
if err != nil {
return nil, nil, err
}
cipherText, err := hex.DecodeString(keyProtected.Crypto.CipherText)
if err != nil {
return nil, nil, err
}
derivedKey, err := getKDFKey(keyProtected.Crypto, auth)
if err != nil {
return nil, nil, err
}
calculatedMAC := crypto.Keccak256(derivedKey[16:32], cipherText)
if !bytes.Equal(calculatedMAC, mac) {
return nil, nil, ErrDecrypt
}
plainText, err := aesCBCDecrypt(crypto.Keccak256(derivedKey[:16])[:16], cipherText, iv)
if err != nil {
return nil, nil, err
}
return plainText, keyId, err
}
func getKDFKey(cryptoJSON cryptoJSON, auth string) ([]byte, error) {
authArray := []byte(auth)
salt, err := hex.DecodeString(cryptoJSON.KDFParams["salt"].(string))
if err != nil {
return nil, err
}
dkLen := ensureInt(cryptoJSON.KDFParams["dklen"])
if cryptoJSON.KDF == keyHeaderKDF {
n := ensureInt(cryptoJSON.KDFParams["n"])
r := ensureInt(cryptoJSON.KDFParams["r"])
p := ensureInt(cryptoJSON.KDFParams["p"])
return scrypt.Key(authArray, salt, n, r, p, dkLen)
} else if cryptoJSON.KDF == "pbkdf2" {
c := ensureInt(cryptoJSON.KDFParams["c"])
prf := cryptoJSON.KDFParams["prf"].(string)
if prf != "hmac-sha256" {
return nil, fmt.Errorf("Unsupported PBKDF2 PRF: %s", prf)
}
key := pbkdf2.Key(authArray, salt, c, dkLen, sha256.New)
return key, nil
}
return nil, fmt.Errorf("Unsupported KDF: %s", cryptoJSON.KDF)
}
// TODO: can we do without this when unmarshalling dynamic JSON?
// why do integers in KDF params end up as float64 and not int after
// unmarshal?
func ensureInt(x interface{}) int {
res, ok := x.(int)
if !ok {
res = int(x.(float64))
}
return res
}

View File

@@ -0,0 +1,60 @@
// Copyright 2016 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package keystore
import (
"io/ioutil"
"testing"
"github.com/ethereum/go-ethereum/common"
)
const (
veryLightScryptN = 2
veryLightScryptP = 1
)
// Tests that a json key file can be decrypted and encrypted in multiple rounds.
func TestKeyEncryptDecrypt(t *testing.T) {
keyjson, err := ioutil.ReadFile("testdata/very-light-scrypt.json")
if err != nil {
t.Fatal(err)
}
password := ""
address := common.HexToAddress("45dea0fb0bba44f4fcf290bba71fd57d7117cbb8")
// Do a few rounds of decryption and encryption
for i := 0; i < 3; i++ {
// Try a bad password first
if _, err := DecryptKey(keyjson, password+"bad"); err == nil {
t.Errorf("test %d: json key decrypted with bad password", i)
}
// Decrypt with the correct password
key, err := DecryptKey(keyjson, password)
if err != nil {
t.Fatalf("test %d: json key failed to decrypt: %v", i, err)
}
if key.Address != address {
t.Errorf("test %d: key address mismatch: have %x, want %x", i, key.Address, address)
}
// Recrypt with a new password and start over
password += "new data appended"
if keyjson, err = EncryptKey(key, password, veryLightScryptN, veryLightScryptP); err != nil {
t.Errorf("test %d: failed to recrypt key %v", i, err)
}
}
}

View File

@@ -0,0 +1,62 @@
// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package keystore
import (
"encoding/json"
"fmt"
"os"
"path/filepath"
"github.com/ethereum/go-ethereum/common"
)
type keyStorePlain struct {
keysDirPath string
}
func (ks keyStorePlain) GetKey(addr common.Address, filename, auth string) (*Key, error) {
fd, err := os.Open(filename)
if err != nil {
return nil, err
}
defer fd.Close()
key := new(Key)
if err := json.NewDecoder(fd).Decode(key); err != nil {
return nil, err
}
if key.Address != addr {
return nil, fmt.Errorf("key content mismatch: have address %x, want %x", key.Address, addr)
}
return key, nil
}
func (ks keyStorePlain) StoreKey(filename string, key *Key, auth string) error {
content, err := json.Marshal(key)
if err != nil {
return err
}
return writeKeyFile(filename, content)
}
func (ks keyStorePlain) JoinPath(filename string) string {
if filepath.IsAbs(filename) {
return filename
} else {
return filepath.Join(ks.keysDirPath, filename)
}
}

View File

@@ -0,0 +1,266 @@
// Copyright 2014 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package keystore
import (
"crypto/rand"
"encoding/hex"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"reflect"
"strings"
"testing"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
)
func tmpKeyStoreIface(t *testing.T, encrypted bool) (dir string, ks keyStore) {
d, err := ioutil.TempDir("", "geth-keystore-test")
if err != nil {
t.Fatal(err)
}
if encrypted {
ks = &keyStorePassphrase{d, veryLightScryptN, veryLightScryptP}
} else {
ks = &keyStorePlain{d}
}
return d, ks
}
func TestKeyStorePlain(t *testing.T) {
dir, ks := tmpKeyStoreIface(t, false)
defer os.RemoveAll(dir)
pass := "" // not used but required by API
k1, account, err := storeNewKey(ks, rand.Reader, pass)
if err != nil {
t.Fatal(err)
}
k2, err := ks.GetKey(k1.Address, account.URL.Path, pass)
if err != nil {
t.Fatal(err)
}
if !reflect.DeepEqual(k1.Address, k2.Address) {
t.Fatal(err)
}
if !reflect.DeepEqual(k1.PrivateKey, k2.PrivateKey) {
t.Fatal(err)
}
}
func TestKeyStorePassphrase(t *testing.T) {
dir, ks := tmpKeyStoreIface(t, true)
defer os.RemoveAll(dir)
pass := "foo"
k1, account, err := storeNewKey(ks, rand.Reader, pass)
if err != nil {
t.Fatal(err)
}
k2, err := ks.GetKey(k1.Address, account.URL.Path, pass)
if err != nil {
t.Fatal(err)
}
if !reflect.DeepEqual(k1.Address, k2.Address) {
t.Fatal(err)
}
if !reflect.DeepEqual(k1.PrivateKey, k2.PrivateKey) {
t.Fatal(err)
}
}
func TestKeyStorePassphraseDecryptionFail(t *testing.T) {
dir, ks := tmpKeyStoreIface(t, true)
defer os.RemoveAll(dir)
pass := "foo"
k1, account, err := storeNewKey(ks, rand.Reader, pass)
if err != nil {
t.Fatal(err)
}
if _, err = ks.GetKey(k1.Address, account.URL.Path, "bar"); err != ErrDecrypt {
t.Fatalf("wrong error for invalid passphrase\ngot %q\nwant %q", err, ErrDecrypt)
}
}
func TestImportPreSaleKey(t *testing.T) {
dir, ks := tmpKeyStoreIface(t, true)
defer os.RemoveAll(dir)
// file content of a presale key file generated with:
// python pyethsaletool.py genwallet
// with password "foo"
fileContent := "{\"encseed\": \"26d87f5f2bf9835f9a47eefae571bc09f9107bb13d54ff12a4ec095d01f83897494cf34f7bed2ed34126ecba9db7b62de56c9d7cd136520a0427bfb11b8954ba7ac39b90d4650d3448e31185affcd74226a68f1e94b1108e6e0a4a91cdd83eba\", \"ethaddr\": \"d4584b5f6229b7be90727b0fc8c6b91bb427821f\", \"email\": \"gustav.simonsson@gmail.com\", \"btcaddr\": \"1EVknXyFC68kKNLkh6YnKzW41svSRoaAcx\"}"
pass := "foo"
account, _, err := importPreSaleKey(ks, []byte(fileContent), pass)
if err != nil {
t.Fatal(err)
}
if account.Address != common.HexToAddress("d4584b5f6229b7be90727b0fc8c6b91bb427821f") {
t.Errorf("imported account has wrong address %x", account.Address)
}
if !strings.HasPrefix(account.URL.Path, dir) {
t.Errorf("imported account file not in keystore directory: %q", account.URL)
}
}
// Test and utils for the key store tests in the Ethereum JSON tests;
// testdataKeyStoreTests/basic_tests.json
type KeyStoreTestV3 struct {
Json encryptedKeyJSONV3
Password string
Priv string
}
type KeyStoreTestV1 struct {
Json encryptedKeyJSONV1
Password string
Priv string
}
func TestV3_PBKDF2_1(t *testing.T) {
t.Parallel()
tests := loadKeyStoreTestV3("testdata/v3_test_vector.json", t)
testDecryptV3(tests["wikipage_test_vector_pbkdf2"], t)
}
var testsSubmodule = filepath.Join("..", "..", "tests", "testdata", "KeyStoreTests")
func skipIfSubmoduleMissing(t *testing.T) {
if !common.FileExist(testsSubmodule) {
t.Skipf("can't find JSON tests from submodule at %s", testsSubmodule)
}
}
func TestV3_PBKDF2_2(t *testing.T) {
skipIfSubmoduleMissing(t)
t.Parallel()
tests := loadKeyStoreTestV3(filepath.Join(testsSubmodule, "basic_tests.json"), t)
testDecryptV3(tests["test1"], t)
}
func TestV3_PBKDF2_3(t *testing.T) {
skipIfSubmoduleMissing(t)
t.Parallel()
tests := loadKeyStoreTestV3(filepath.Join(testsSubmodule, "basic_tests.json"), t)
testDecryptV3(tests["python_generated_test_with_odd_iv"], t)
}
func TestV3_PBKDF2_4(t *testing.T) {
skipIfSubmoduleMissing(t)
t.Parallel()
tests := loadKeyStoreTestV3(filepath.Join(testsSubmodule, "basic_tests.json"), t)
testDecryptV3(tests["evilnonce"], t)
}
func TestV3_Scrypt_1(t *testing.T) {
t.Parallel()
tests := loadKeyStoreTestV3("testdata/v3_test_vector.json", t)
testDecryptV3(tests["wikipage_test_vector_scrypt"], t)
}
func TestV3_Scrypt_2(t *testing.T) {
skipIfSubmoduleMissing(t)
t.Parallel()
tests := loadKeyStoreTestV3(filepath.Join(testsSubmodule, "basic_tests.json"), t)
testDecryptV3(tests["test2"], t)
}
func TestV1_1(t *testing.T) {
t.Parallel()
tests := loadKeyStoreTestV1("testdata/v1_test_vector.json", t)
testDecryptV1(tests["test1"], t)
}
func TestV1_2(t *testing.T) {
t.Parallel()
ks := &keyStorePassphrase{"testdata/v1", LightScryptN, LightScryptP}
addr := common.HexToAddress("cb61d5a9c4896fb9658090b597ef0e7be6f7b67e")
file := "testdata/v1/cb61d5a9c4896fb9658090b597ef0e7be6f7b67e/cb61d5a9c4896fb9658090b597ef0e7be6f7b67e"
k, err := ks.GetKey(addr, file, "g")
if err != nil {
t.Fatal(err)
}
privHex := hex.EncodeToString(crypto.FromECDSA(k.PrivateKey))
expectedHex := "d1b1178d3529626a1a93e073f65028370d14c7eb0936eb42abef05db6f37ad7d"
if privHex != expectedHex {
t.Fatal(fmt.Errorf("Unexpected privkey: %v, expected %v", privHex, expectedHex))
}
}
func testDecryptV3(test KeyStoreTestV3, t *testing.T) {
privBytes, _, err := decryptKeyV3(&test.Json, test.Password)
if err != nil {
t.Fatal(err)
}
privHex := hex.EncodeToString(privBytes)
if test.Priv != privHex {
t.Fatal(fmt.Errorf("Decrypted bytes not equal to test, expected %v have %v", test.Priv, privHex))
}
}
func testDecryptV1(test KeyStoreTestV1, t *testing.T) {
privBytes, _, err := decryptKeyV1(&test.Json, test.Password)
if err != nil {
t.Fatal(err)
}
privHex := hex.EncodeToString(privBytes)
if test.Priv != privHex {
t.Fatal(fmt.Errorf("Decrypted bytes not equal to test, expected %v have %v", test.Priv, privHex))
}
}
func loadKeyStoreTestV3(file string, t *testing.T) map[string]KeyStoreTestV3 {
tests := make(map[string]KeyStoreTestV3)
err := common.LoadJSON(file, &tests)
if err != nil {
t.Fatal(err)
}
return tests
}
func loadKeyStoreTestV1(file string, t *testing.T) map[string]KeyStoreTestV1 {
tests := make(map[string]KeyStoreTestV1)
err := common.LoadJSON(file, &tests)
if err != nil {
t.Fatal(err)
}
return tests
}
func TestKeyForDirectICAP(t *testing.T) {
t.Parallel()
key := NewKeyForDirectICAP(rand.Reader)
if !strings.HasPrefix(key.Address.Hex(), "0x00") {
t.Errorf("Expected first address byte to be zero, have: %s", key.Address.Hex())
}
}
func TestV3_31_Byte_Key(t *testing.T) {
t.Parallel()
tests := loadKeyStoreTestV3("testdata/v3_test_vector.json", t)
testDecryptV3(tests["31_byte_key"], t)
}
func TestV3_30_Byte_Key(t *testing.T) {
t.Parallel()
tests := loadKeyStoreTestV3("testdata/v3_test_vector.json", t)
testDecryptV3(tests["30_byte_key"], t)
}

View File

@@ -0,0 +1,387 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package keystore
import (
"io/ioutil"
"math/rand"
"os"
"runtime"
"sort"
"strings"
"testing"
"time"
"github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/event"
)
var testSigData = make([]byte, 32)
func TestKeyStore(t *testing.T) {
dir, ks := tmpKeyStore(t, true)
defer os.RemoveAll(dir)
a, err := ks.NewAccount("foo")
if err != nil {
t.Fatal(err)
}
if !strings.HasPrefix(a.URL.Path, dir) {
t.Errorf("account file %s doesn't have dir prefix", a.URL)
}
stat, err := os.Stat(a.URL.Path)
if err != nil {
t.Fatalf("account file %s doesn't exist (%v)", a.URL, err)
}
if runtime.GOOS != "windows" && stat.Mode() != 0600 {
t.Fatalf("account file has wrong mode: got %o, want %o", stat.Mode(), 0600)
}
if !ks.HasAddress(a.Address) {
t.Errorf("HasAccount(%x) should've returned true", a.Address)
}
if err := ks.Update(a, "foo", "bar"); err != nil {
t.Errorf("Update error: %v", err)
}
if err := ks.Delete(a, "bar"); err != nil {
t.Errorf("Delete error: %v", err)
}
if common.FileExist(a.URL.Path) {
t.Errorf("account file %s should be gone after Delete", a.URL)
}
if ks.HasAddress(a.Address) {
t.Errorf("HasAccount(%x) should've returned true after Delete", a.Address)
}
}
func TestSign(t *testing.T) {
dir, ks := tmpKeyStore(t, true)
defer os.RemoveAll(dir)
pass := "" // not used but required by API
a1, err := ks.NewAccount(pass)
if err != nil {
t.Fatal(err)
}
if err := ks.Unlock(a1, ""); err != nil {
t.Fatal(err)
}
if _, err := ks.SignHash(accounts.Account{Address: a1.Address}, testSigData); err != nil {
t.Fatal(err)
}
}
func TestSignWithPassphrase(t *testing.T) {
dir, ks := tmpKeyStore(t, true)
defer os.RemoveAll(dir)
pass := "passwd"
acc, err := ks.NewAccount(pass)
if err != nil {
t.Fatal(err)
}
if _, unlocked := ks.unlocked[acc.Address]; unlocked {
t.Fatal("expected account to be locked")
}
_, err = ks.SignHashWithPassphrase(acc, pass, testSigData)
if err != nil {
t.Fatal(err)
}
if _, unlocked := ks.unlocked[acc.Address]; unlocked {
t.Fatal("expected account to be locked")
}
if _, err = ks.SignHashWithPassphrase(acc, "invalid passwd", testSigData); err == nil {
t.Fatal("expected SignHashWithPassphrase to fail with invalid password")
}
}
func TestTimedUnlock(t *testing.T) {
dir, ks := tmpKeyStore(t, true)
defer os.RemoveAll(dir)
pass := "foo"
a1, err := ks.NewAccount(pass)
if err != nil {
t.Fatal(err)
}
// Signing without passphrase fails because account is locked
_, err = ks.SignHash(accounts.Account{Address: a1.Address}, testSigData)
if err != ErrLocked {
t.Fatal("Signing should've failed with ErrLocked before unlocking, got ", err)
}
// Signing with passphrase works
if err = ks.TimedUnlock(a1, pass, 100*time.Millisecond); err != nil {
t.Fatal(err)
}
// Signing without passphrase works because account is temp unlocked
_, err = ks.SignHash(accounts.Account{Address: a1.Address}, testSigData)
if err != nil {
t.Fatal("Signing shouldn't return an error after unlocking, got ", err)
}
// Signing fails again after automatic locking
time.Sleep(250 * time.Millisecond)
_, err = ks.SignHash(accounts.Account{Address: a1.Address}, testSigData)
if err != ErrLocked {
t.Fatal("Signing should've failed with ErrLocked timeout expired, got ", err)
}
}
func TestOverrideUnlock(t *testing.T) {
dir, ks := tmpKeyStore(t, false)
defer os.RemoveAll(dir)
pass := "foo"
a1, err := ks.NewAccount(pass)
if err != nil {
t.Fatal(err)
}
// Unlock indefinitely.
if err = ks.TimedUnlock(a1, pass, 5*time.Minute); err != nil {
t.Fatal(err)
}
// Signing without passphrase works because account is temp unlocked
_, err = ks.SignHash(accounts.Account{Address: a1.Address}, testSigData)
if err != nil {
t.Fatal("Signing shouldn't return an error after unlocking, got ", err)
}
// reset unlock to a shorter period, invalidates the previous unlock
if err = ks.TimedUnlock(a1, pass, 100*time.Millisecond); err != nil {
t.Fatal(err)
}
// Signing without passphrase still works because account is temp unlocked
_, err = ks.SignHash(accounts.Account{Address: a1.Address}, testSigData)
if err != nil {
t.Fatal("Signing shouldn't return an error after unlocking, got ", err)
}
// Signing fails again after automatic locking
time.Sleep(250 * time.Millisecond)
_, err = ks.SignHash(accounts.Account{Address: a1.Address}, testSigData)
if err != ErrLocked {
t.Fatal("Signing should've failed with ErrLocked timeout expired, got ", err)
}
}
// This test should fail under -race if signing races the expiration goroutine.
func TestSignRace(t *testing.T) {
dir, ks := tmpKeyStore(t, false)
defer os.RemoveAll(dir)
// Create a test account.
a1, err := ks.NewAccount("")
if err != nil {
t.Fatal("could not create the test account", err)
}
if err := ks.TimedUnlock(a1, "", 15*time.Millisecond); err != nil {
t.Fatal("could not unlock the test account", err)
}
end := time.Now().Add(500 * time.Millisecond)
for time.Now().Before(end) {
if _, err := ks.SignHash(accounts.Account{Address: a1.Address}, testSigData); err == ErrLocked {
return
} else if err != nil {
t.Errorf("Sign error: %v", err)
return
}
time.Sleep(1 * time.Millisecond)
}
t.Errorf("Account did not lock within the timeout")
}
// Tests that the wallet notifier loop starts and stops correctly based on the
// addition and removal of wallet event subscriptions.
func TestWalletNotifierLifecycle(t *testing.T) {
// Create a temporary kesytore to test with
dir, ks := tmpKeyStore(t, false)
defer os.RemoveAll(dir)
// Ensure that the notification updater is not running yet
time.Sleep(250 * time.Millisecond)
ks.mu.RLock()
updating := ks.updating
ks.mu.RUnlock()
if updating {
t.Errorf("wallet notifier running without subscribers")
}
// Subscribe to the wallet feed and ensure the updater boots up
updates := make(chan accounts.WalletEvent)
subs := make([]event.Subscription, 2)
for i := 0; i < len(subs); i++ {
// Create a new subscription
subs[i] = ks.Subscribe(updates)
// Ensure the notifier comes online
time.Sleep(250 * time.Millisecond)
ks.mu.RLock()
updating = ks.updating
ks.mu.RUnlock()
if !updating {
t.Errorf("sub %d: wallet notifier not running after subscription", i)
}
}
// Unsubscribe and ensure the updater terminates eventually
for i := 0; i < len(subs); i++ {
// Close an existing subscription
subs[i].Unsubscribe()
// Ensure the notifier shuts down at and only at the last close
for k := 0; k < int(walletRefreshCycle/(250*time.Millisecond))+2; k++ {
ks.mu.RLock()
updating = ks.updating
ks.mu.RUnlock()
if i < len(subs)-1 && !updating {
t.Fatalf("sub %d: event notifier stopped prematurely", i)
}
if i == len(subs)-1 && !updating {
return
}
time.Sleep(250 * time.Millisecond)
}
}
t.Errorf("wallet notifier didn't terminate after unsubscribe")
}
type walletEvent struct {
accounts.WalletEvent
a accounts.Account
}
// Tests that wallet notifications and correctly fired when accounts are added
// or deleted from the keystore.
func TestWalletNotifications(t *testing.T) {
dir, ks := tmpKeyStore(t, false)
defer os.RemoveAll(dir)
// Subscribe to the wallet feed and collect events.
var (
events []walletEvent
updates = make(chan accounts.WalletEvent)
sub = ks.Subscribe(updates)
)
defer sub.Unsubscribe()
go func() {
for {
select {
case ev := <-updates:
events = append(events, walletEvent{ev, ev.Wallet.Accounts()[0]})
case <-sub.Err():
close(updates)
return
}
}
}()
// Randomly add and remove accounts.
var (
live = make(map[common.Address]accounts.Account)
wantEvents []walletEvent
)
for i := 0; i < 1024; i++ {
if create := len(live) == 0 || rand.Int()%4 > 0; create {
// Add a new account and ensure wallet notifications arrives
account, err := ks.NewAccount("")
if err != nil {
t.Fatalf("failed to create test account: %v", err)
}
live[account.Address] = account
wantEvents = append(wantEvents, walletEvent{accounts.WalletEvent{Kind: accounts.WalletArrived}, account})
} else {
// Delete a random account.
var account accounts.Account
for _, a := range live {
account = a
break
}
if err := ks.Delete(account, ""); err != nil {
t.Fatalf("failed to delete test account: %v", err)
}
delete(live, account.Address)
wantEvents = append(wantEvents, walletEvent{accounts.WalletEvent{Kind: accounts.WalletDropped}, account})
}
}
// Shut down the event collector and check events.
sub.Unsubscribe()
<-updates
checkAccounts(t, live, ks.Wallets())
checkEvents(t, wantEvents, events)
}
// checkAccounts checks that all known live accounts are present in the wallet list.
func checkAccounts(t *testing.T, live map[common.Address]accounts.Account, wallets []accounts.Wallet) {
if len(live) != len(wallets) {
t.Errorf("wallet list doesn't match required accounts: have %d, want %d", len(wallets), len(live))
return
}
liveList := make([]accounts.Account, 0, len(live))
for _, account := range live {
liveList = append(liveList, account)
}
sort.Sort(accountsByURL(liveList))
for j, wallet := range wallets {
if accs := wallet.Accounts(); len(accs) != 1 {
t.Errorf("wallet %d: contains invalid number of accounts: have %d, want 1", j, len(accs))
} else if accs[0] != liveList[j] {
t.Errorf("wallet %d: account mismatch: have %v, want %v", j, accs[0], liveList[j])
}
}
}
// checkEvents checks that all events in 'want' are present in 'have'. Events may be present multiple times.
func checkEvents(t *testing.T, want []walletEvent, have []walletEvent) {
for _, wantEv := range want {
nmatch := 0
for ; len(have) > 0; nmatch++ {
if have[0].Kind != wantEv.Kind || have[0].a != wantEv.a {
break
}
have = have[1:]
}
if nmatch == 0 {
t.Fatalf("can't find event with Kind=%v for %x", wantEv.Kind, wantEv.a.Address)
}
}
}
func tmpKeyStore(t *testing.T, encrypted bool) (string, *KeyStore) {
d, err := ioutil.TempDir("", "eth-keystore-test")
if err != nil {
t.Fatal(err)
}
new := NewPlaintextKeyStore
if encrypted {
new = func(kd string) *KeyStore { return NewKeyStore(kd, veryLightScryptN, veryLightScryptP) }
}
return d, new(d)
}

View File

@@ -0,0 +1,139 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package keystore
import (
"math/big"
ethereum "github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/core/types"
)
// keystoreWallet implements the accounts.Wallet interface for the original
// keystore.
type keystoreWallet struct {
account accounts.Account // Single account contained in this wallet
keystore *KeyStore // Keystore where the account originates from
}
// URL implements accounts.Wallet, returning the URL of the account within.
func (w *keystoreWallet) URL() accounts.URL {
return w.account.URL
}
// Status implements accounts.Wallet, returning whether the account held by the
// keystore wallet is unlocked or not.
func (w *keystoreWallet) Status() (string, error) {
w.keystore.mu.RLock()
defer w.keystore.mu.RUnlock()
if _, ok := w.keystore.unlocked[w.account.Address]; ok {
return "Unlocked", nil
}
return "Locked", nil
}
// Open implements accounts.Wallet, but is a noop for plain wallets since there
// is no connection or decryption step necessary to access the list of accounts.
func (w *keystoreWallet) Open(passphrase string) error { return nil }
// Close implements accounts.Wallet, but is a noop for plain wallets since is no
// meaningful open operation.
func (w *keystoreWallet) Close() error { return nil }
// Accounts implements accounts.Wallet, returning an account list consisting of
// a single account that the plain kestore wallet contains.
func (w *keystoreWallet) Accounts() []accounts.Account {
return []accounts.Account{w.account}
}
// Contains implements accounts.Wallet, returning whether a particular account is
// or is not wrapped by this wallet instance.
func (w *keystoreWallet) Contains(account accounts.Account) bool {
return account.Address == w.account.Address && (account.URL == (accounts.URL{}) || account.URL == w.account.URL)
}
// Derive implements accounts.Wallet, but is a noop for plain wallets since there
// is no notion of hierarchical account derivation for plain keystore accounts.
func (w *keystoreWallet) Derive(path accounts.DerivationPath, pin bool) (accounts.Account, error) {
return accounts.Account{}, accounts.ErrNotSupported
}
// SelfDerive implements accounts.Wallet, but is a noop for plain wallets since
// there is no notion of hierarchical account derivation for plain keystore accounts.
func (w *keystoreWallet) SelfDerive(base accounts.DerivationPath, chain ethereum.ChainStateReader) {}
// SignHash implements accounts.Wallet, attempting to sign the given hash with
// the given account. If the wallet does not wrap this particular account, an
// error is returned to avoid account leakage (even though in theory we may be
// able to sign via our shared keystore backend).
func (w *keystoreWallet) SignHash(account accounts.Account, hash []byte) ([]byte, error) {
// Make sure the requested account is contained within
if account.Address != w.account.Address {
return nil, accounts.ErrUnknownAccount
}
if account.URL != (accounts.URL{}) && account.URL != w.account.URL {
return nil, accounts.ErrUnknownAccount
}
// Account seems valid, request the keystore to sign
return w.keystore.SignHash(account, hash)
}
// SignTx implements accounts.Wallet, attempting to sign the given transaction
// with the given account. If the wallet does not wrap this particular account,
// an error is returned to avoid account leakage (even though in theory we may
// be able to sign via our shared keystore backend).
func (w *keystoreWallet) SignTx(account accounts.Account, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error) {
// Make sure the requested account is contained within
if account.Address != w.account.Address {
return nil, accounts.ErrUnknownAccount
}
if account.URL != (accounts.URL{}) && account.URL != w.account.URL {
return nil, accounts.ErrUnknownAccount
}
// Account seems valid, request the keystore to sign
return w.keystore.SignTx(account, tx, chainID)
}
// SignHashWithPassphrase implements accounts.Wallet, attempting to sign the
// given hash with the given account using passphrase as extra authentication.
func (w *keystoreWallet) SignHashWithPassphrase(account accounts.Account, passphrase string, hash []byte) ([]byte, error) {
// Make sure the requested account is contained within
if account.Address != w.account.Address {
return nil, accounts.ErrUnknownAccount
}
if account.URL != (accounts.URL{}) && account.URL != w.account.URL {
return nil, accounts.ErrUnknownAccount
}
// Account seems valid, request the keystore to sign
return w.keystore.SignHashWithPassphrase(account, passphrase, hash)
}
// SignTxWithPassphrase implements accounts.Wallet, attempting to sign the given
// transaction with the given account using passphrase as extra authentication.
func (w *keystoreWallet) SignTxWithPassphrase(account accounts.Account, passphrase string, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error) {
// Make sure the requested account is contained within
if account.Address != w.account.Address {
return nil, accounts.ErrUnknownAccount
}
if account.URL != (accounts.URL{}) && account.URL != w.account.URL {
return nil, accounts.ErrUnknownAccount
}
// Account seems valid, request the keystore to sign
return w.keystore.SignTxWithPassphrase(account, passphrase, tx, chainID)
}

View File

@@ -0,0 +1,141 @@
// Copyright 2016 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package keystore
import (
"crypto/aes"
"crypto/cipher"
"crypto/sha256"
"encoding/hex"
"encoding/json"
"errors"
"fmt"
"github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/crypto"
"github.com/pborman/uuid"
"golang.org/x/crypto/pbkdf2"
)
// creates a Key and stores that in the given KeyStore by decrypting a presale key JSON
func importPreSaleKey(keyStore keyStore, keyJSON []byte, password string) (accounts.Account, *Key, error) {
key, err := decryptPreSaleKey(keyJSON, password)
if err != nil {
return accounts.Account{}, nil, err
}
key.Id = uuid.NewRandom()
a := accounts.Account{Address: key.Address, URL: accounts.URL{Scheme: KeyStoreScheme, Path: keyStore.JoinPath(keyFileName(key.Address))}}
err = keyStore.StoreKey(a.URL.Path, key, password)
return a, key, err
}
func decryptPreSaleKey(fileContent []byte, password string) (key *Key, err error) {
preSaleKeyStruct := struct {
EncSeed string
EthAddr string
Email string
BtcAddr string
}{}
err = json.Unmarshal(fileContent, &preSaleKeyStruct)
if err != nil {
return nil, err
}
encSeedBytes, err := hex.DecodeString(preSaleKeyStruct.EncSeed)
if err != nil {
return nil, errors.New("invalid hex in encSeed")
}
if len(encSeedBytes) < 16 {
return nil, errors.New("invalid encSeed, too short")
}
iv := encSeedBytes[:16]
cipherText := encSeedBytes[16:]
/*
See https://github.com/ethereum/pyethsaletool
pyethsaletool generates the encryption key from password by
2000 rounds of PBKDF2 with HMAC-SHA-256 using password as salt (:().
16 byte key length within PBKDF2 and resulting key is used as AES key
*/
passBytes := []byte(password)
derivedKey := pbkdf2.Key(passBytes, passBytes, 2000, 16, sha256.New)
plainText, err := aesCBCDecrypt(derivedKey, cipherText, iv)
if err != nil {
return nil, err
}
ethPriv := crypto.Keccak256(plainText)
ecKey := crypto.ToECDSAUnsafe(ethPriv)
key = &Key{
Id: nil,
Address: crypto.PubkeyToAddress(ecKey.PublicKey),
PrivateKey: ecKey,
}
derivedAddr := hex.EncodeToString(key.Address.Bytes()) // needed because .Hex() gives leading "0x"
expectedAddr := preSaleKeyStruct.EthAddr
if derivedAddr != expectedAddr {
err = fmt.Errorf("decrypted addr '%s' not equal to expected addr '%s'", derivedAddr, expectedAddr)
}
return key, err
}
func aesCTRXOR(key, inText, iv []byte) ([]byte, error) {
// AES-128 is selected due to size of encryptKey.
aesBlock, err := aes.NewCipher(key)
if err != nil {
return nil, err
}
stream := cipher.NewCTR(aesBlock, iv)
outText := make([]byte, len(inText))
stream.XORKeyStream(outText, inText)
return outText, err
}
func aesCBCDecrypt(key, cipherText, iv []byte) ([]byte, error) {
aesBlock, err := aes.NewCipher(key)
if err != nil {
return nil, err
}
decrypter := cipher.NewCBCDecrypter(aesBlock, iv)
paddedPlaintext := make([]byte, len(cipherText))
decrypter.CryptBlocks(paddedPlaintext, cipherText)
plaintext := pkcs7Unpad(paddedPlaintext)
if plaintext == nil {
return nil, ErrDecrypt
}
return plaintext, err
}
// From https://leanpub.com/gocrypto/read#leanpub-auto-block-cipher-modes
func pkcs7Unpad(in []byte) []byte {
if len(in) == 0 {
return nil
}
padding := in[len(in)-1]
if int(padding) > len(in) || padding > aes.BlockSize {
return nil
} else if padding == 0 {
return nil
}
for i := len(in) - 1; i > len(in)-int(padding)-1; i-- {
if in[i] != padding {
return nil
}
}
return in[:len(in)-int(padding)]
}

1
accounts/keystore/testdata/dupes/1 vendored Normal file
View File

@@ -0,0 +1 @@
{"address":"f466859ead1932d743d622cb74fc058882e8648a","crypto":{"cipher":"aes-128-ctr","ciphertext":"cb664472deacb41a2e995fa7f96fe29ce744471deb8d146a0e43c7898c9ddd4d","cipherparams":{"iv":"dfd9ee70812add5f4b8f89d0811c9158"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":8,"p":16,"r":8,"salt":"0d6769bf016d45c479213990d6a08d938469c4adad8a02ce507b4a4e7b7739f1"},"mac":"bac9af994b15a45dd39669fc66f9aa8a3b9dd8c22cb16e4d8d7ea089d0f1a1a9"},"id":"472e8b3d-afb6-45b5-8111-72c89895099a","version":3}

1
accounts/keystore/testdata/dupes/2 vendored Normal file
View File

@@ -0,0 +1 @@
{"address":"f466859ead1932d743d622cb74fc058882e8648a","crypto":{"cipher":"aes-128-ctr","ciphertext":"cb664472deacb41a2e995fa7f96fe29ce744471deb8d146a0e43c7898c9ddd4d","cipherparams":{"iv":"dfd9ee70812add5f4b8f89d0811c9158"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":8,"p":16,"r":8,"salt":"0d6769bf016d45c479213990d6a08d938469c4adad8a02ce507b4a4e7b7739f1"},"mac":"bac9af994b15a45dd39669fc66f9aa8a3b9dd8c22cb16e4d8d7ea089d0f1a1a9"},"id":"472e8b3d-afb6-45b5-8111-72c89895099a","version":3}

1
accounts/keystore/testdata/dupes/foo vendored Normal file
View File

@@ -0,0 +1 @@
{"address":"7ef5a6135f1fd6a02593eedc869c6d41d934aef8","crypto":{"cipher":"aes-128-ctr","ciphertext":"1d0839166e7a15b9c1333fc865d69858b22df26815ccf601b28219b6192974e1","cipherparams":{"iv":"8df6caa7ff1b00c4e871f002cb7921ed"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":8,"p":16,"r":8,"salt":"e5e6ef3f4ea695f496b643ebd3f75c0aa58ef4070e90c80c5d3fb0241bf1595c"},"mac":"6d16dfde774845e4585357f24bce530528bc69f4f84e1e22880d34fa45c273e5"},"id":"950077c7-71e3-4c44-a4a1-143919141ed4","version":3}

View File

@@ -0,0 +1 @@
{"address":"f466859ead1932d743d622cb74fc058882e8648a","crypto":{"cipher":"aes-128-ctr","ciphertext":"cb664472deacb41a2e995fa7f96fe29ce744471deb8d146a0e43c7898c9ddd4d","cipherparams":{"iv":"dfd9ee70812add5f4b8f89d0811c9158"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":8,"p":16,"r":8,"salt":"0d6769bf016d45c479213990d6a08d938469c4adad8a02ce507b4a4e7b7739f1"},"mac":"bac9af994b15a45dd39669fc66f9aa8a3b9dd8c22cb16e4d8d7ea089d0f1a1a9"},"id":"472e8b3d-afb6-45b5-8111-72c89895099a","version":3}

View File

@@ -0,0 +1,21 @@
This directory contains accounts for testing.
The passphrase that unlocks them is "foobar".
The "good" key files which are supposed to be loadable are:
- File: UTC--2016-03-22T12-57-55.920751759Z--7ef5a6135f1fd6a02593eedc869c6d41d934aef8
Address: 0x7ef5a6135f1fd6a02593eedc869c6d41d934aef8
- File: aaa
Address: 0xf466859ead1932d743d622cb74fc058882e8648a
- File: zzz
Address: 0x289d485d9771714cce91d3393d764e1311907acc
The other files (including this README) are broken in various ways
and should not be picked up by package accounts:
- File: no-address (missing address field, otherwise same as "aaa")
- File: garbage (file with random data)
- File: empty (file with no content)
- File: swapfile~ (should be skipped)
- File: .hiddenfile (should be skipped)
- File: foo/... (should be skipped because it is a directory)

View File

@@ -0,0 +1 @@
{"address":"7ef5a6135f1fd6a02593eedc869c6d41d934aef8","crypto":{"cipher":"aes-128-ctr","ciphertext":"1d0839166e7a15b9c1333fc865d69858b22df26815ccf601b28219b6192974e1","cipherparams":{"iv":"8df6caa7ff1b00c4e871f002cb7921ed"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":8,"p":16,"r":8,"salt":"e5e6ef3f4ea695f496b643ebd3f75c0aa58ef4070e90c80c5d3fb0241bf1595c"},"mac":"6d16dfde774845e4585357f24bce530528bc69f4f84e1e22880d34fa45c273e5"},"id":"950077c7-71e3-4c44-a4a1-143919141ed4","version":3}

View File

@@ -0,0 +1 @@
{"address":"f466859ead1932d743d622cb74fc058882e8648a","crypto":{"cipher":"aes-128-ctr","ciphertext":"cb664472deacb41a2e995fa7f96fe29ce744471deb8d146a0e43c7898c9ddd4d","cipherparams":{"iv":"dfd9ee70812add5f4b8f89d0811c9158"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":8,"p":16,"r":8,"salt":"0d6769bf016d45c479213990d6a08d938469c4adad8a02ce507b4a4e7b7739f1"},"mac":"bac9af994b15a45dd39669fc66f9aa8a3b9dd8c22cb16e4d8d7ea089d0f1a1a9"},"id":"472e8b3d-afb6-45b5-8111-72c89895099a","version":3}

View File

View File

@@ -0,0 +1 @@
{"address":"fd9bd350f08ee3c0c19b85a8e16114a11a60aa4e","crypto":{"cipher":"aes-128-ctr","ciphertext":"8124d5134aa4a927c79fd852989e4b5419397566f04b0936a1eb1d168c7c68a5","cipherparams":{"iv":"e2febe17176414dd2cda28287947eb2f"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"44b415ede89f3bdd6830390a21b78965f571b347a589d1d943029f016c5e8bd5"},"mac":"5e149ff25bfd9dd45746a84bb2bcd2f015f2cbca2b6d25c5de8c29617f71fe5b"},"id":"d6ac5452-2b2c-4d3c-ad80-4bf0327d971c","version":3}

Binary file not shown.

View File

@@ -0,0 +1 @@
{"crypto":{"cipher":"aes-128-ctr","ciphertext":"cb664472deacb41a2e995fa7f96fe29ce744471deb8d146a0e43c7898c9ddd4d","cipherparams":{"iv":"dfd9ee70812add5f4b8f89d0811c9158"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":8,"p":16,"r":8,"salt":"0d6769bf016d45c479213990d6a08d938469c4adad8a02ce507b4a4e7b7739f1"},"mac":"bac9af994b15a45dd39669fc66f9aa8a3b9dd8c22cb16e4d8d7ea089d0f1a1a9"},"id":"472e8b3d-afb6-45b5-8111-72c89895099a","version":3}

View File

@@ -0,0 +1 @@
{"address":"0000000000000000000000000000000000000000","crypto":{"cipher":"aes-128-ctr","ciphertext":"cb664472deacb41a2e995fa7f96fe29ce744471deb8d146a0e43c7898c9ddd4d","cipherparams":{"iv":"dfd9ee70812add5f4b8f89d0811c9158"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":8,"p":16,"r":8,"salt":"0d6769bf016d45c479213990d6a08d938469c4adad8a02ce507b4a4e7b7739f1"},"mac":"bac9af994b15a45dd39669fc66f9aa8a3b9dd8c22cb16e4d8d7ea089d0f1a1a9"},"id":"472e8b3d-afb6-45b5-8111-72c89895099a","version":3}

View File

@@ -0,0 +1 @@
{"address":"289d485d9771714cce91d3393d764e1311907acc","crypto":{"cipher":"aes-128-ctr","ciphertext":"faf32ca89d286b107f5e6d842802e05263c49b78d46eac74e6109e9a963378ab","cipherparams":{"iv":"558833eec4a665a8c55608d7d503407d"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":8,"p":16,"r":8,"salt":"d571fff447ffb24314f9513f5160246f09997b857ac71348b73e785aab40dc04"},"mac":"21edb85ff7d0dab1767b9bf498f2c3cb7be7609490756bd32300bb213b59effe"},"id":"3279afcf-55ba-43ff-8997-02dcc46a6525","version":3}

View File

@@ -0,0 +1 @@
{"address":"cb61d5a9c4896fb9658090b597ef0e7be6f7b67e","Crypto":{"cipher":"aes-128-cbc","ciphertext":"6143d3192db8b66eabd693d9c4e414dcfaee52abda451af79ccf474dafb35f1bfc7ea013aa9d2ee35969a1a2e8d752d0","cipherparams":{"iv":"35337770fc2117994ecdcad026bccff4"},"kdf":"scrypt","kdfparams":{"n":262144,"r":8,"p":1,"dklen":32,"salt":"9afcddebca541253a2f4053391c673ff9fe23097cd8555d149d929e4ccf1257f"},"mac":"3f3d5af884b17a100b0b3232c0636c230a54dc2ac8d986227219b0dd89197644","version":"1"},"id":"e25f7c1f-d318-4f29-b62c-687190d4d299","version":"1"}

View File

@@ -0,0 +1,28 @@
{
"test1": {
"json": {
"Crypto": {
"cipher": "aes-128-cbc",
"cipherparams": {
"iv": "35337770fc2117994ecdcad026bccff4"
},
"ciphertext": "6143d3192db8b66eabd693d9c4e414dcfaee52abda451af79ccf474dafb35f1bfc7ea013aa9d2ee35969a1a2e8d752d0",
"kdf": "scrypt",
"kdfparams": {
"dklen": 32,
"n": 262144,
"p": 1,
"r": 8,
"salt": "9afcddebca541253a2f4053391c673ff9fe23097cd8555d149d929e4ccf1257f"
},
"mac": "3f3d5af884b17a100b0b3232c0636c230a54dc2ac8d986227219b0dd89197644",
"version": "1"
},
"address": "cb61d5a9c4896fb9658090b597ef0e7be6f7b67e",
"id": "e25f7c1f-d318-4f29-b62c-687190d4d299",
"version": "1"
},
"password": "g",
"priv": "d1b1178d3529626a1a93e073f65028370d14c7eb0936eb42abef05db6f37ad7d"
}
}

View File

@@ -0,0 +1,97 @@
{
"wikipage_test_vector_scrypt": {
"json": {
"crypto" : {
"cipher" : "aes-128-ctr",
"cipherparams" : {
"iv" : "83dbcc02d8ccb40e466191a123791e0e"
},
"ciphertext" : "d172bf743a674da9cdad04534d56926ef8358534d458fffccd4e6ad2fbde479c",
"kdf" : "scrypt",
"kdfparams" : {
"dklen" : 32,
"n" : 262144,
"r" : 1,
"p" : 8,
"salt" : "ab0c7876052600dd703518d6fc3fe8984592145b591fc8fb5c6d43190334ba19"
},
"mac" : "2103ac29920d71da29f15d75b4a16dbe95cfd7ff8faea1056c33131d846e3097"
},
"id" : "3198bc9c-6672-5ab3-d995-4942343ae5b6",
"version" : 3
},
"password": "testpassword",
"priv": "7a28b5ba57c53603b0b07b56bba752f7784bf506fa95edc395f5cf6c7514fe9d"
},
"wikipage_test_vector_pbkdf2": {
"json": {
"crypto" : {
"cipher" : "aes-128-ctr",
"cipherparams" : {
"iv" : "6087dab2f9fdbbfaddc31a909735c1e6"
},
"ciphertext" : "5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46",
"kdf" : "pbkdf2",
"kdfparams" : {
"c" : 262144,
"dklen" : 32,
"prf" : "hmac-sha256",
"salt" : "ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd"
},
"mac" : "517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2"
},
"id" : "3198bc9c-6672-5ab3-d995-4942343ae5b6",
"version" : 3
},
"password": "testpassword",
"priv": "7a28b5ba57c53603b0b07b56bba752f7784bf506fa95edc395f5cf6c7514fe9d"
},
"31_byte_key": {
"json": {
"crypto" : {
"cipher" : "aes-128-ctr",
"cipherparams" : {
"iv" : "e0c41130a323adc1446fc82f724bca2f"
},
"ciphertext" : "9517cd5bdbe69076f9bf5057248c6c050141e970efa36ce53692d5d59a3984",
"kdf" : "scrypt",
"kdfparams" : {
"dklen" : 32,
"n" : 2,
"r" : 8,
"p" : 1,
"salt" : "711f816911c92d649fb4c84b047915679933555030b3552c1212609b38208c63"
},
"mac" : "d5e116151c6aa71470e67a7d42c9620c75c4d23229847dcc127794f0732b0db5"
},
"id" : "fecfc4ce-e956-48fd-953b-30f8b52ed66c",
"version" : 3
},
"password": "foo",
"priv": "fa7b3db73dc7dfdf8c5fbdb796d741e4488628c41fc4febd9160a866ba0f35"
},
"30_byte_key": {
"json": {
"crypto" : {
"cipher" : "aes-128-ctr",
"cipherparams" : {
"iv" : "3ca92af36ad7c2cd92454c59cea5ef00"
},
"ciphertext" : "108b7d34f3442fc26ab1ab90ca91476ba6bfa8c00975a49ef9051dc675aa",
"kdf" : "scrypt",
"kdfparams" : {
"dklen" : 32,
"n" : 2,
"r" : 8,
"p" : 1,
"salt" : "d0769e608fb86cda848065642a9c6fa046845c928175662b8e356c77f914cd3b"
},
"mac" : "75d0e6759f7b3cefa319c3be41680ab6beea7d8328653474bd06706d4cc67420"
},
"id" : "a37e1559-5955-450d-8075-7b8931b392b2",
"version" : 3
},
"password": "foo",
"priv": "81c29e8142bb6a81bef5a92bda7a8328a5c85bb2f9542e76f9b0f94fc018"
}
}

View File

@@ -0,0 +1 @@
{"address":"45dea0fb0bba44f4fcf290bba71fd57d7117cbb8","crypto":{"cipher":"aes-128-ctr","ciphertext":"b87781948a1befd247bff51ef4063f716cf6c2d3481163e9a8f42e1f9bb74145","cipherparams":{"iv":"dc4926b48a105133d2f16b96833abf1e"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":2,"p":1,"r":8,"salt":"004244bbdc51cadda545b1cfa43cff9ed2ae88e08c61f1479dbb45410722f8f0"},"mac":"39990c1684557447940d4c69e06b1b82b2aceacb43f284df65c956daf3046b85"},"id":"ce541d8d-c79b-40f8-9f8c-20f59616faba","version":3}

108
accounts/keystore/watch.go Normal file
View File

@@ -0,0 +1,108 @@
// Copyright 2016 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
// +build darwin,!ios freebsd linux,!arm64 netbsd solaris
package keystore
import (
"time"
"github.com/ethereum/go-ethereum/log"
"github.com/rjeczalik/notify"
)
type watcher struct {
ac *accountCache
starting bool
running bool
ev chan notify.EventInfo
quit chan struct{}
}
func newWatcher(ac *accountCache) *watcher {
return &watcher{
ac: ac,
ev: make(chan notify.EventInfo, 10),
quit: make(chan struct{}),
}
}
// starts the watcher loop in the background.
// Start a watcher in the background if that's not already in progress.
// The caller must hold w.ac.mu.
func (w *watcher) start() {
if w.starting || w.running {
return
}
w.starting = true
go w.loop()
}
func (w *watcher) close() {
close(w.quit)
}
func (w *watcher) loop() {
defer func() {
w.ac.mu.Lock()
w.running = false
w.starting = false
w.ac.mu.Unlock()
}()
logger := log.New("path", w.ac.keydir)
if err := notify.Watch(w.ac.keydir, w.ev, notify.All); err != nil {
logger.Trace("Failed to watch keystore folder", "err", err)
return
}
defer notify.Stop(w.ev)
logger.Trace("Started watching keystore folder")
defer logger.Trace("Stopped watching keystore folder")
w.ac.mu.Lock()
w.running = true
w.ac.mu.Unlock()
// Wait for file system events and reload.
// When an event occurs, the reload call is delayed a bit so that
// multiple events arriving quickly only cause a single reload.
var (
debounceDuration = 500 * time.Millisecond
rescanTriggered = false
debounce = time.NewTimer(0)
)
// Ignore initial trigger
if !debounce.Stop() {
<-debounce.C
}
defer debounce.Stop()
for {
select {
case <-w.quit:
return
case <-w.ev:
// Trigger the scan (with delay), if not already triggered
if !rescanTriggered {
debounce.Reset(debounceDuration)
rescanTriggered = true
}
case <-debounce.C:
w.ac.scanAccounts()
rescanTriggered = false
}
}
}

View File

@@ -0,0 +1,28 @@
// Copyright 2016 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
// +build ios linux,arm64 windows !darwin,!freebsd,!linux,!netbsd,!solaris
// This is the fallback implementation of directory watching.
// It is used on unsupported platforms.
package keystore
type watcher struct{ running bool }
func newWatcher(*accountCache) *watcher { return new(watcher) }
func (*watcher) start() {}
func (*watcher) close() {}

199
accounts/manager.go Normal file
View File

@@ -0,0 +1,199 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package accounts
import (
"reflect"
"sort"
"sync"
"github.com/ethereum/go-ethereum/event"
)
// Manager is an overarching account manager that can communicate with various
// backends for signing transactions.
type Manager struct {
backends map[reflect.Type][]Backend // Index of backends currently registered
updaters []event.Subscription // Wallet update subscriptions for all backends
updates chan WalletEvent // Subscription sink for backend wallet changes
wallets []Wallet // Cache of all wallets from all registered backends
feed event.Feed // Wallet feed notifying of arrivals/departures
quit chan chan error
lock sync.RWMutex
}
// NewManager creates a generic account manager to sign transaction via various
// supported backends.
func NewManager(backends ...Backend) *Manager {
// Retrieve the initial list of wallets from the backends and sort by URL
var wallets []Wallet
for _, backend := range backends {
wallets = merge(wallets, backend.Wallets()...)
}
// Subscribe to wallet notifications from all backends
updates := make(chan WalletEvent, 4*len(backends))
subs := make([]event.Subscription, len(backends))
for i, backend := range backends {
subs[i] = backend.Subscribe(updates)
}
// Assemble the account manager and return
am := &Manager{
backends: make(map[reflect.Type][]Backend),
updaters: subs,
updates: updates,
wallets: wallets,
quit: make(chan chan error),
}
for _, backend := range backends {
kind := reflect.TypeOf(backend)
am.backends[kind] = append(am.backends[kind], backend)
}
go am.update()
return am
}
// Close terminates the account manager's internal notification processes.
func (am *Manager) Close() error {
errc := make(chan error)
am.quit <- errc
return <-errc
}
// update is the wallet event loop listening for notifications from the backends
// and updating the cache of wallets.
func (am *Manager) update() {
// Close all subscriptions when the manager terminates
defer func() {
am.lock.Lock()
for _, sub := range am.updaters {
sub.Unsubscribe()
}
am.updaters = nil
am.lock.Unlock()
}()
// Loop until termination
for {
select {
case event := <-am.updates:
// Wallet event arrived, update local cache
am.lock.Lock()
switch event.Kind {
case WalletArrived:
am.wallets = merge(am.wallets, event.Wallet)
case WalletDropped:
am.wallets = drop(am.wallets, event.Wallet)
}
am.lock.Unlock()
// Notify any listeners of the event
am.feed.Send(event)
case errc := <-am.quit:
// Manager terminating, return
errc <- nil
return
}
}
}
// Backends retrieves the backend(s) with the given type from the account manager.
func (am *Manager) Backends(kind reflect.Type) []Backend {
return am.backends[kind]
}
// Wallets returns all signer accounts registered under this account manager.
func (am *Manager) Wallets() []Wallet {
am.lock.RLock()
defer am.lock.RUnlock()
cpy := make([]Wallet, len(am.wallets))
copy(cpy, am.wallets)
return cpy
}
// Wallet retrieves the wallet associated with a particular URL.
func (am *Manager) Wallet(url string) (Wallet, error) {
am.lock.RLock()
defer am.lock.RUnlock()
parsed, err := parseURL(url)
if err != nil {
return nil, err
}
for _, wallet := range am.Wallets() {
if wallet.URL() == parsed {
return wallet, nil
}
}
return nil, ErrUnknownWallet
}
// Find attempts to locate the wallet corresponding to a specific account. Since
// accounts can be dynamically added to and removed from wallets, this method has
// a linear runtime in the number of wallets.
func (am *Manager) Find(account Account) (Wallet, error) {
am.lock.RLock()
defer am.lock.RUnlock()
for _, wallet := range am.wallets {
if wallet.Contains(account) {
return wallet, nil
}
}
return nil, ErrUnknownAccount
}
// Subscribe creates an async subscription to receive notifications when the
// manager detects the arrival or departure of a wallet from any of its backends.
func (am *Manager) Subscribe(sink chan<- WalletEvent) event.Subscription {
return am.feed.Subscribe(sink)
}
// merge is a sorted analogue of append for wallets, where the ordering of the
// origin list is preserved by inserting new wallets at the correct position.
//
// The original slice is assumed to be already sorted by URL.
func merge(slice []Wallet, wallets ...Wallet) []Wallet {
for _, wallet := range wallets {
n := sort.Search(len(slice), func(i int) bool { return slice[i].URL().Cmp(wallet.URL()) >= 0 })
if n == len(slice) {
slice = append(slice, wallet)
continue
}
slice = append(slice[:n], append([]Wallet{wallet}, slice[n:]...)...)
}
return slice
}
// drop is the couterpart of merge, which looks up wallets from within the sorted
// cache and removes the ones specified.
func drop(slice []Wallet, wallets ...Wallet) []Wallet {
for _, wallet := range wallets {
n := sort.Search(len(slice), func(i int) bool { return slice[i].URL().Cmp(wallet.URL()) >= 0 })
if n == len(slice) {
// Wallet not found, may happen during startup
continue
}
slice = append(slice[:n], slice[n+1:]...)
}
return slice
}

88
accounts/url.go Normal file
View File

@@ -0,0 +1,88 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package accounts
import (
"encoding/json"
"errors"
"fmt"
"strings"
)
// URL represents the canonical identification URL of a wallet or account.
//
// It is a simplified version of url.URL, with the important limitations (which
// are considered features here) that it contains value-copyable components only,
// as well as that it doesn't do any URL encoding/decoding of special characters.
//
// The former is important to allow an account to be copied without leaving live
// references to the original version, whereas the latter is important to ensure
// one single canonical form opposed to many allowed ones by the RFC 3986 spec.
//
// As such, these URLs should not be used outside of the scope of an Ethereum
// wallet or account.
type URL struct {
Scheme string // Protocol scheme to identify a capable account backend
Path string // Path for the backend to identify a unique entity
}
// parseURL converts a user supplied URL into the accounts specific structure.
func parseURL(url string) (URL, error) {
parts := strings.Split(url, "://")
if len(parts) != 2 || parts[0] == "" {
return URL{}, errors.New("protocol scheme missing")
}
return URL{
Scheme: parts[0],
Path: parts[1],
}, nil
}
// String implements the stringer interface.
func (u URL) String() string {
if u.Scheme != "" {
return fmt.Sprintf("%s://%s", u.Scheme, u.Path)
}
return u.Path
}
// TerminalString implements the log.TerminalStringer interface.
func (u URL) TerminalString() string {
url := u.String()
if len(url) > 32 {
return url[:31] + "…"
}
return url
}
// MarshalJSON implements the json.Marshaller interface.
func (u URL) MarshalJSON() ([]byte, error) {
return json.Marshal(u.String())
}
// Cmp compares x and y and returns:
//
// -1 if x < y
// 0 if x == y
// +1 if x > y
//
func (u URL) Cmp(url URL) int {
if u.Scheme == url.Scheme {
return strings.Compare(u.Path, url.Path)
}
return strings.Compare(u.Scheme, url.Scheme)
}

238
accounts/usbwallet/hub.go Normal file
View File

@@ -0,0 +1,238 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package usbwallet
import (
"errors"
"runtime"
"sync"
"time"
"github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/event"
"github.com/ethereum/go-ethereum/log"
"github.com/karalabe/hid"
)
// LedgerScheme is the protocol scheme prefixing account and wallet URLs.
const LedgerScheme = "ledger"
// TrezorScheme is the protocol scheme prefixing account and wallet URLs.
const TrezorScheme = "trezor"
// refreshCycle is the maximum time between wallet refreshes (if USB hotplug
// notifications don't work).
const refreshCycle = time.Second
// refreshThrottling is the minimum time between wallet refreshes to avoid USB
// trashing.
const refreshThrottling = 500 * time.Millisecond
// Hub is a accounts.Backend that can find and handle generic USB hardware wallets.
type Hub struct {
scheme string // Protocol scheme prefixing account and wallet URLs.
vendorID uint16 // USB vendor identifier used for device discovery
productIDs []uint16 // USB product identifiers used for device discovery
usageID uint16 // USB usage page identifier used for macOS device discovery
endpointID int // USB endpoint identifier used for non-macOS device discovery
makeDriver func(log.Logger) driver // Factory method to construct a vendor specific driver
refreshed time.Time // Time instance when the list of wallets was last refreshed
wallets []accounts.Wallet // List of USB wallet devices currently tracking
updateFeed event.Feed // Event feed to notify wallet additions/removals
updateScope event.SubscriptionScope // Subscription scope tracking current live listeners
updating bool // Whether the event notification loop is running
quit chan chan error
stateLock sync.RWMutex // Protects the internals of the hub from racey access
// TODO(karalabe): remove if hotplug lands on Windows
commsPend int // Number of operations blocking enumeration
commsLock sync.Mutex // Lock protecting the pending counter and enumeration
}
// NewLedgerHub creates a new hardware wallet manager for Ledger devices.
func NewLedgerHub() (*Hub, error) {
return newHub(LedgerScheme, 0x2c97, []uint16{0x0000 /* Ledger Blue */, 0x0001 /* Ledger Nano S */}, 0xffa0, 0, newLedgerDriver)
}
// NewTrezorHub creates a new hardware wallet manager for Trezor devices.
func NewTrezorHub() (*Hub, error) {
return newHub(TrezorScheme, 0x534c, []uint16{0x0001 /* Trezor 1 */}, 0xff00, 0, newTrezorDriver)
}
// newHub creates a new hardware wallet manager for generic USB devices.
func newHub(scheme string, vendorID uint16, productIDs []uint16, usageID uint16, endpointID int, makeDriver func(log.Logger) driver) (*Hub, error) {
if !hid.Supported() {
return nil, errors.New("unsupported platform")
}
hub := &Hub{
scheme: scheme,
vendorID: vendorID,
productIDs: productIDs,
usageID: usageID,
endpointID: endpointID,
makeDriver: makeDriver,
quit: make(chan chan error),
}
hub.refreshWallets()
return hub, nil
}
// Wallets implements accounts.Backend, returning all the currently tracked USB
// devices that appear to be hardware wallets.
func (hub *Hub) Wallets() []accounts.Wallet {
// Make sure the list of wallets is up to date
hub.refreshWallets()
hub.stateLock.RLock()
defer hub.stateLock.RUnlock()
cpy := make([]accounts.Wallet, len(hub.wallets))
copy(cpy, hub.wallets)
return cpy
}
// refreshWallets scans the USB devices attached to the machine and updates the
// list of wallets based on the found devices.
func (hub *Hub) refreshWallets() {
// Don't scan the USB like crazy it the user fetches wallets in a loop
hub.stateLock.RLock()
elapsed := time.Since(hub.refreshed)
hub.stateLock.RUnlock()
if elapsed < refreshThrottling {
return
}
// Retrieve the current list of USB wallet devices
var devices []hid.DeviceInfo
if runtime.GOOS == "linux" {
// hidapi on Linux opens the device during enumeration to retrieve some infos,
// breaking the Ledger protocol if that is waiting for user confirmation. This
// is a bug acknowledged at Ledger, but it won't be fixed on old devices so we
// need to prevent concurrent comms ourselves. The more elegant solution would
// be to ditch enumeration in favor of hutplug events, but that don't work yet
// on Windows so if we need to hack it anyway, this is more elegant for now.
hub.commsLock.Lock()
if hub.commsPend > 0 { // A confirmation is pending, don't refresh
hub.commsLock.Unlock()
return
}
}
for _, info := range hid.Enumerate(hub.vendorID, 0) {
for _, id := range hub.productIDs {
if info.ProductID == id && (info.UsagePage == hub.usageID || info.Interface == hub.endpointID) {
devices = append(devices, info)
break
}
}
}
if runtime.GOOS == "linux" {
// See rationale before the enumeration why this is needed and only on Linux.
hub.commsLock.Unlock()
}
// Transform the current list of wallets into the new one
hub.stateLock.Lock()
wallets := make([]accounts.Wallet, 0, len(devices))
events := []accounts.WalletEvent{}
for _, device := range devices {
url := accounts.URL{Scheme: hub.scheme, Path: device.Path}
// Drop wallets in front of the next device or those that failed for some reason
for len(hub.wallets) > 0 {
// Abort if we're past the current device and found an operational one
_, failure := hub.wallets[0].Status()
if hub.wallets[0].URL().Cmp(url) >= 0 || failure == nil {
break
}
// Drop the stale and failed devices
events = append(events, accounts.WalletEvent{Wallet: hub.wallets[0], Kind: accounts.WalletDropped})
hub.wallets = hub.wallets[1:]
}
// If there are no more wallets or the device is before the next, wrap new wallet
if len(hub.wallets) == 0 || hub.wallets[0].URL().Cmp(url) > 0 {
logger := log.New("url", url)
wallet := &wallet{hub: hub, driver: hub.makeDriver(logger), url: &url, info: device, log: logger}
events = append(events, accounts.WalletEvent{Wallet: wallet, Kind: accounts.WalletArrived})
wallets = append(wallets, wallet)
continue
}
// If the device is the same as the first wallet, keep it
if hub.wallets[0].URL().Cmp(url) == 0 {
wallets = append(wallets, hub.wallets[0])
hub.wallets = hub.wallets[1:]
continue
}
}
// Drop any leftover wallets and set the new batch
for _, wallet := range hub.wallets {
events = append(events, accounts.WalletEvent{Wallet: wallet, Kind: accounts.WalletDropped})
}
hub.refreshed = time.Now()
hub.wallets = wallets
hub.stateLock.Unlock()
// Fire all wallet events and return
for _, event := range events {
hub.updateFeed.Send(event)
}
}
// Subscribe implements accounts.Backend, creating an async subscription to
// receive notifications on the addition or removal of USB wallets.
func (hub *Hub) Subscribe(sink chan<- accounts.WalletEvent) event.Subscription {
// We need the mutex to reliably start/stop the update loop
hub.stateLock.Lock()
defer hub.stateLock.Unlock()
// Subscribe the caller and track the subscriber count
sub := hub.updateScope.Track(hub.updateFeed.Subscribe(sink))
// Subscribers require an active notification loop, start it
if !hub.updating {
hub.updating = true
go hub.updater()
}
return sub
}
// updater is responsible for maintaining an up-to-date list of wallets managed
// by the USB hub, and for firing wallet addition/removal events.
func (hub *Hub) updater() {
for {
// TODO: Wait for a USB hotplug event (not supported yet) or a refresh timeout
// <-hub.changes
time.Sleep(refreshCycle)
// Run the wallet refresher
hub.refreshWallets()
// If all our subscribers left, stop the updater
hub.stateLock.Lock()
if hub.updateScope.Count() == 0 {
hub.updating = false
hub.stateLock.Unlock()
return
}
hub.stateLock.Unlock()
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,905 @@
// This file originates from the SatoshiLabs Trezor `common` repository at:
// https://github.com/trezor/trezor-common/blob/master/protob/messages.proto
// dated 28.07.2017, commit dd8ec3231fb5f7992360aff9bdfe30bb58130f4b.
syntax = "proto2";
/**
* Messages for TREZOR communication
*/
// Sugar for easier handling in Java
option java_package = "com.satoshilabs.trezor.lib.protobuf";
option java_outer_classname = "TrezorMessage";
import "types.proto";
/**
* Mapping between Trezor wire identifier (uint) and a protobuf message
*/
enum MessageType {
MessageType_Initialize = 0 [(wire_in) = true];
MessageType_Ping = 1 [(wire_in) = true];
MessageType_Success = 2 [(wire_out) = true];
MessageType_Failure = 3 [(wire_out) = true];
MessageType_ChangePin = 4 [(wire_in) = true];
MessageType_WipeDevice = 5 [(wire_in) = true];
MessageType_FirmwareErase = 6 [(wire_in) = true, (wire_bootloader) = true];
MessageType_FirmwareUpload = 7 [(wire_in) = true, (wire_bootloader) = true];
MessageType_FirmwareRequest = 8 [(wire_out) = true, (wire_bootloader) = true];
MessageType_GetEntropy = 9 [(wire_in) = true];
MessageType_Entropy = 10 [(wire_out) = true];
MessageType_GetPublicKey = 11 [(wire_in) = true];
MessageType_PublicKey = 12 [(wire_out) = true];
MessageType_LoadDevice = 13 [(wire_in) = true];
MessageType_ResetDevice = 14 [(wire_in) = true];
MessageType_SignTx = 15 [(wire_in) = true];
MessageType_SimpleSignTx = 16 [(wire_in) = true, deprecated = true];
MessageType_Features = 17 [(wire_out) = true];
MessageType_PinMatrixRequest = 18 [(wire_out) = true];
MessageType_PinMatrixAck = 19 [(wire_in) = true, (wire_tiny) = true];
MessageType_Cancel = 20 [(wire_in) = true];
MessageType_TxRequest = 21 [(wire_out) = true];
MessageType_TxAck = 22 [(wire_in) = true];
MessageType_CipherKeyValue = 23 [(wire_in) = true];
MessageType_ClearSession = 24 [(wire_in) = true];
MessageType_ApplySettings = 25 [(wire_in) = true];
MessageType_ButtonRequest = 26 [(wire_out) = true];
MessageType_ButtonAck = 27 [(wire_in) = true, (wire_tiny) = true];
MessageType_ApplyFlags = 28 [(wire_in) = true];
MessageType_GetAddress = 29 [(wire_in) = true];
MessageType_Address = 30 [(wire_out) = true];
MessageType_SelfTest = 32 [(wire_in) = true, (wire_bootloader) = true];
MessageType_BackupDevice = 34 [(wire_in) = true];
MessageType_EntropyRequest = 35 [(wire_out) = true];
MessageType_EntropyAck = 36 [(wire_in) = true];
MessageType_SignMessage = 38 [(wire_in) = true];
MessageType_VerifyMessage = 39 [(wire_in) = true];
MessageType_MessageSignature = 40 [(wire_out) = true];
MessageType_PassphraseRequest = 41 [(wire_out) = true];
MessageType_PassphraseAck = 42 [(wire_in) = true, (wire_tiny) = true];
MessageType_EstimateTxSize = 43 [(wire_in) = true, deprecated = true];
MessageType_TxSize = 44 [(wire_out) = true, deprecated = true];
MessageType_RecoveryDevice = 45 [(wire_in) = true];
MessageType_WordRequest = 46 [(wire_out) = true];
MessageType_WordAck = 47 [(wire_in) = true];
MessageType_CipheredKeyValue = 48 [(wire_out) = true];
MessageType_EncryptMessage = 49 [(wire_in) = true, deprecated = true];
MessageType_EncryptedMessage = 50 [(wire_out) = true, deprecated = true];
MessageType_DecryptMessage = 51 [(wire_in) = true, deprecated = true];
MessageType_DecryptedMessage = 52 [(wire_out) = true, deprecated = true];
MessageType_SignIdentity = 53 [(wire_in) = true];
MessageType_SignedIdentity = 54 [(wire_out) = true];
MessageType_GetFeatures = 55 [(wire_in) = true];
MessageType_EthereumGetAddress = 56 [(wire_in) = true];
MessageType_EthereumAddress = 57 [(wire_out) = true];
MessageType_EthereumSignTx = 58 [(wire_in) = true];
MessageType_EthereumTxRequest = 59 [(wire_out) = true];
MessageType_EthereumTxAck = 60 [(wire_in) = true];
MessageType_GetECDHSessionKey = 61 [(wire_in) = true];
MessageType_ECDHSessionKey = 62 [(wire_out) = true];
MessageType_SetU2FCounter = 63 [(wire_in) = true];
MessageType_EthereumSignMessage = 64 [(wire_in) = true];
MessageType_EthereumVerifyMessage = 65 [(wire_in) = true];
MessageType_EthereumMessageSignature = 66 [(wire_out) = true];
MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true, (wire_tiny) = true];
MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true];
MessageType_DebugLinkState = 102 [(wire_debug_out) = true];
MessageType_DebugLinkStop = 103 [(wire_debug_in) = true];
MessageType_DebugLinkLog = 104 [(wire_debug_out) = true];
MessageType_DebugLinkMemoryRead = 110 [(wire_debug_in) = true];
MessageType_DebugLinkMemory = 111 [(wire_debug_out) = true];
MessageType_DebugLinkMemoryWrite = 112 [(wire_debug_in) = true];
MessageType_DebugLinkFlashErase = 113 [(wire_debug_in) = true];
}
////////////////////
// Basic messages //
////////////////////
/**
* Request: Reset device to default state and ask for device details
* @next Features
*/
message Initialize {
}
/**
* Request: Ask for device details (no device reset)
* @next Features
*/
message GetFeatures {
}
/**
* Response: Reports various information about the device
* @prev Initialize
* @prev GetFeatures
*/
message Features {
optional string vendor = 1; // name of the manufacturer, e.g. "bitcointrezor.com"
optional uint32 major_version = 2; // major version of the device, e.g. 1
optional uint32 minor_version = 3; // minor version of the device, e.g. 0
optional uint32 patch_version = 4; // patch version of the device, e.g. 0
optional bool bootloader_mode = 5; // is device in bootloader mode?
optional string device_id = 6; // device's unique identifier
optional bool pin_protection = 7; // is device protected by PIN?
optional bool passphrase_protection = 8; // is node/mnemonic encrypted using passphrase?
optional string language = 9; // device language
optional string label = 10; // device description label
repeated CoinType coins = 11; // supported coins
optional bool initialized = 12; // does device contain seed?
optional bytes revision = 13; // SCM revision of firmware
optional bytes bootloader_hash = 14; // hash of the bootloader
optional bool imported = 15; // was storage imported from an external source?
optional bool pin_cached = 16; // is PIN already cached in session?
optional bool passphrase_cached = 17; // is passphrase already cached in session?
optional bool firmware_present = 18; // is valid firmware loaded?
optional bool needs_backup = 19; // does storage need backup? (equals to Storage.needs_backup)
optional uint32 flags = 20; // device flags (equals to Storage.flags)
}
/**
* Request: clear session (removes cached PIN, passphrase, etc).
* @next Success
*/
message ClearSession {
}
/**
* Request: change language and/or label of the device
* @next Success
* @next Failure
* @next ButtonRequest
* @next PinMatrixRequest
*/
message ApplySettings {
optional string language = 1;
optional string label = 2;
optional bool use_passphrase = 3;
optional bytes homescreen = 4;
}
/**
* Request: set flags of the device
* @next Success
* @next Failure
*/
message ApplyFlags {
optional uint32 flags = 1; // bitmask, can only set bits, not unset
}
/**
* Request: Starts workflow for setting/changing/removing the PIN
* @next ButtonRequest
* @next PinMatrixRequest
*/
message ChangePin {
optional bool remove = 1; // is PIN removal requested?
}
/**
* Request: Test if the device is alive, device sends back the message in Success response
* @next Success
*/
message Ping {
optional string message = 1; // message to send back in Success message
optional bool button_protection = 2; // ask for button press
optional bool pin_protection = 3; // ask for PIN if set in device
optional bool passphrase_protection = 4; // ask for passphrase if set in device
}
/**
* Response: Success of the previous request
*/
message Success {
optional string message = 1; // human readable description of action or request-specific payload
}
/**
* Response: Failure of the previous request
*/
message Failure {
optional FailureType code = 1; // computer-readable definition of the error state
optional string message = 2; // human-readable message of the error state
}
/**
* Response: Device is waiting for HW button press.
* @next ButtonAck
* @next Cancel
*/
message ButtonRequest {
optional ButtonRequestType code = 1;
optional string data = 2;
}
/**
* Request: Computer agrees to wait for HW button press
* @prev ButtonRequest
*/
message ButtonAck {
}
/**
* Response: Device is asking computer to show PIN matrix and awaits PIN encoded using this matrix scheme
* @next PinMatrixAck
* @next Cancel
*/
message PinMatrixRequest {
optional PinMatrixRequestType type = 1;
}
/**
* Request: Computer responds with encoded PIN
* @prev PinMatrixRequest
*/
message PinMatrixAck {
required string pin = 1; // matrix encoded PIN entered by user
}
/**
* Request: Abort last operation that required user interaction
* @prev ButtonRequest
* @prev PinMatrixRequest
* @prev PassphraseRequest
*/
message Cancel {
}
/**
* Response: Device awaits encryption passphrase
* @next PassphraseAck
* @next Cancel
*/
message PassphraseRequest {
}
/**
* Request: Send passphrase back
* @prev PassphraseRequest
*/
message PassphraseAck {
required string passphrase = 1;
}
/**
* Request: Request a sample of random data generated by hardware RNG. May be used for testing.
* @next ButtonRequest
* @next Entropy
* @next Failure
*/
message GetEntropy {
required uint32 size = 1; // size of requested entropy
}
/**
* Response: Reply with random data generated by internal RNG
* @prev GetEntropy
*/
message Entropy {
required bytes entropy = 1; // stream of random generated bytes
}
/**
* Request: Ask device for public key corresponding to address_n path
* @next PassphraseRequest
* @next PublicKey
* @next Failure
*/
message GetPublicKey {
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
optional string ecdsa_curve_name = 2; // ECDSA curve name to use
optional bool show_display = 3; // optionally show on display before sending the result
optional string coin_name = 4 [default='Bitcoin'];
}
/**
* Response: Contains public key derived from device private seed
* @prev GetPublicKey
*/
message PublicKey {
required HDNodeType node = 1; // BIP32 public node
optional string xpub = 2; // serialized form of public node
}
/**
* Request: Ask device for address corresponding to address_n path
* @next PassphraseRequest
* @next Address
* @next Failure
*/
message GetAddress {
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
optional string coin_name = 2 [default='Bitcoin'];
optional bool show_display = 3 ; // optionally show on display before sending the result
optional MultisigRedeemScriptType multisig = 4; // filled if we are showing a multisig address
optional InputScriptType script_type = 5 [default=SPENDADDRESS]; // used to distinguish between various address formats (non-segwit, segwit, etc.)
}
/**
* Request: Ask device for Ethereum address corresponding to address_n path
* @next PassphraseRequest
* @next EthereumAddress
* @next Failure
*/
message EthereumGetAddress {
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
optional bool show_display = 2; // optionally show on display before sending the result
}
/**
* Response: Contains address derived from device private seed
* @prev GetAddress
*/
message Address {
required string address = 1; // Coin address in Base58 encoding
}
/**
* Response: Contains an Ethereum address derived from device private seed
* @prev EthereumGetAddress
*/
message EthereumAddress {
required bytes address = 1; // Coin address as an Ethereum 160 bit hash
}
/**
* Request: Request device to wipe all sensitive data and settings
* @next ButtonRequest
*/
message WipeDevice {
}
/**
* Request: Load seed and related internal settings from the computer
* @next ButtonRequest
* @next Success
* @next Failure
*/
message LoadDevice {
optional string mnemonic = 1; // seed encoded as BIP-39 mnemonic (12, 18 or 24 words)
optional HDNodeType node = 2; // BIP-32 node
optional string pin = 3; // set PIN protection
optional bool passphrase_protection = 4; // enable master node encryption using passphrase
optional string language = 5 [default='english']; // device language
optional string label = 6; // device label
optional bool skip_checksum = 7; // do not test mnemonic for valid BIP-39 checksum
optional uint32 u2f_counter = 8; // U2F counter
}
/**
* Request: Ask device to do initialization involving user interaction
* @next EntropyRequest
* @next Failure
*/
message ResetDevice {
optional bool display_random = 1; // display entropy generated by the device before asking for additional entropy
optional uint32 strength = 2 [default=256]; // strength of seed in bits
optional bool passphrase_protection = 3; // enable master node encryption using passphrase
optional bool pin_protection = 4; // enable PIN protection
optional string language = 5 [default='english']; // device language
optional string label = 6; // device label
optional uint32 u2f_counter = 7; // U2F counter
optional bool skip_backup = 8; // postpone seed backup to BackupDevice workflow
}
/**
* Request: Perform backup of the device seed if not backed up using ResetDevice
* @next ButtonRequest
*/
message BackupDevice {
}
/**
* Response: Ask for additional entropy from host computer
* @prev ResetDevice
* @next EntropyAck
*/
message EntropyRequest {
}
/**
* Request: Provide additional entropy for seed generation function
* @prev EntropyRequest
* @next ButtonRequest
*/
message EntropyAck {
optional bytes entropy = 1; // 256 bits (32 bytes) of random data
}
/**
* Request: Start recovery workflow asking user for specific words of mnemonic
* Used to recovery device safely even on untrusted computer.
* @next WordRequest
*/
message RecoveryDevice {
optional uint32 word_count = 1; // number of words in BIP-39 mnemonic
optional bool passphrase_protection = 2; // enable master node encryption using passphrase
optional bool pin_protection = 3; // enable PIN protection
optional string language = 4 [default='english']; // device language
optional string label = 5; // device label
optional bool enforce_wordlist = 6; // enforce BIP-39 wordlist during the process
// 7 reserved for unused recovery method
optional uint32 type = 8; // supported recovery type (see RecoveryType)
optional uint32 u2f_counter = 9; // U2F counter
optional bool dry_run = 10; // perform dry-run recovery workflow (for safe mnemonic validation)
}
/**
* Response: Device is waiting for user to enter word of the mnemonic
* Its position is shown only on device's internal display.
* @prev RecoveryDevice
* @prev WordAck
*/
message WordRequest {
optional WordRequestType type = 1;
}
/**
* Request: Computer replies with word from the mnemonic
* @prev WordRequest
* @next WordRequest
* @next Success
* @next Failure
*/
message WordAck {
required string word = 1; // one word of mnemonic on asked position
}
//////////////////////////////
// Message signing messages //
//////////////////////////////
/**
* Request: Ask device to sign message
* @next MessageSignature
* @next Failure
*/
message SignMessage {
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
required bytes message = 2; // message to be signed
optional string coin_name = 3 [default='Bitcoin']; // coin to use for signing
optional InputScriptType script_type = 4 [default=SPENDADDRESS]; // used to distinguish between various address formats (non-segwit, segwit, etc.)
}
/**
* Request: Ask device to verify message
* @next Success
* @next Failure
*/
message VerifyMessage {
optional string address = 1; // address to verify
optional bytes signature = 2; // signature to verify
optional bytes message = 3; // message to verify
optional string coin_name = 4 [default='Bitcoin']; // coin to use for verifying
}
/**
* Response: Signed message
* @prev SignMessage
*/
message MessageSignature {
optional string address = 1; // address used to sign the message
optional bytes signature = 2; // signature of the message
}
///////////////////////////
// Encryption/decryption //
///////////////////////////
/**
* Request: Ask device to encrypt message
* @next EncryptedMessage
* @next Failure
*/
message EncryptMessage {
optional bytes pubkey = 1; // public key
optional bytes message = 2; // message to encrypt
optional bool display_only = 3; // show just on display? (don't send back via wire)
repeated uint32 address_n = 4; // BIP-32 path to derive the signing key from master node
optional string coin_name = 5 [default='Bitcoin']; // coin to use for signing
}
/**
* Response: Encrypted message
* @prev EncryptMessage
*/
message EncryptedMessage {
optional bytes nonce = 1; // nonce used during encryption
optional bytes message = 2; // encrypted message
optional bytes hmac = 3; // message hmac
}
/**
* Request: Ask device to decrypt message
* @next Success
* @next Failure
*/
message DecryptMessage {
repeated uint32 address_n = 1; // BIP-32 path to derive the decryption key from master node
optional bytes nonce = 2; // nonce used during encryption
optional bytes message = 3; // message to decrypt
optional bytes hmac = 4; // message hmac
}
/**
* Response: Decrypted message
* @prev DecryptedMessage
*/
message DecryptedMessage {
optional bytes message = 1; // decrypted message
optional string address = 2; // address used to sign the message (if used)
}
/**
* Request: Ask device to encrypt or decrypt value of given key
* @next CipheredKeyValue
* @next Failure
*/
message CipherKeyValue {
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
optional string key = 2; // key component of key:value
optional bytes value = 3; // value component of key:value
optional bool encrypt = 4; // are we encrypting (True) or decrypting (False)?
optional bool ask_on_encrypt = 5; // should we ask on encrypt operation?
optional bool ask_on_decrypt = 6; // should we ask on decrypt operation?
optional bytes iv = 7; // initialization vector (will be computed if not set)
}
/**
* Response: Return ciphered/deciphered value
* @prev CipherKeyValue
*/
message CipheredKeyValue {
optional bytes value = 1; // ciphered/deciphered value
}
//////////////////////////////////
// Transaction signing messages //
//////////////////////////////////
/**
* Request: Estimated size of the transaction
* This behaves exactly like SignTx, which means that it can ask using TxRequest
* This call is non-blocking (except possible PassphraseRequest to unlock the seed)
* @next TxSize
* @next Failure
*/
message EstimateTxSize {
required uint32 outputs_count = 1; // number of transaction outputs
required uint32 inputs_count = 2; // number of transaction inputs
optional string coin_name = 3 [default='Bitcoin']; // coin to use
}
/**
* Response: Estimated size of the transaction
* @prev EstimateTxSize
*/
message TxSize {
optional uint32 tx_size = 1; // estimated size of transaction in bytes
}
/**
* Request: Ask device to sign transaction
* @next PassphraseRequest
* @next PinMatrixRequest
* @next TxRequest
* @next Failure
*/
message SignTx {
required uint32 outputs_count = 1; // number of transaction outputs
required uint32 inputs_count = 2; // number of transaction inputs
optional string coin_name = 3 [default='Bitcoin']; // coin to use
optional uint32 version = 4 [default=1]; // transaction version
optional uint32 lock_time = 5 [default=0]; // transaction lock_time
}
/**
* Request: Simplified transaction signing
* This method doesn't support streaming, so there are hardware limits in number of inputs and outputs.
* In case of success, the result is returned using TxRequest message.
* @next PassphraseRequest
* @next PinMatrixRequest
* @next TxRequest
* @next Failure
*/
message SimpleSignTx {
repeated TxInputType inputs = 1; // transaction inputs
repeated TxOutputType outputs = 2; // transaction outputs
repeated TransactionType transactions = 3; // transactions whose outputs are used to build current inputs
optional string coin_name = 4 [default='Bitcoin']; // coin to use
optional uint32 version = 5 [default=1]; // transaction version
optional uint32 lock_time = 6 [default=0]; // transaction lock_time
}
/**
* Response: Device asks for information for signing transaction or returns the last result
* If request_index is set, device awaits TxAck message (with fields filled in according to request_type)
* If signature_index is set, 'signature' contains signed input of signature_index's input
* @prev SignTx
* @prev SimpleSignTx
* @prev TxAck
*/
message TxRequest {
optional RequestType request_type = 1; // what should be filled in TxAck message?
optional TxRequestDetailsType details = 2; // request for tx details
optional TxRequestSerializedType serialized = 3; // serialized data and request for next
}
/**
* Request: Reported transaction data
* @prev TxRequest
* @next TxRequest
*/
message TxAck {
optional TransactionType tx = 1;
}
/**
* Request: Ask device to sign transaction
* All fields are optional from the protocol's point of view. Each field defaults to value `0` if missing.
* Note: the first at most 1024 bytes of data MUST be transmitted as part of this message.
* @next PassphraseRequest
* @next PinMatrixRequest
* @next EthereumTxRequest
* @next Failure
*/
message EthereumSignTx {
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
optional bytes nonce = 2; // <=256 bit unsigned big endian
optional bytes gas_price = 3; // <=256 bit unsigned big endian (in wei)
optional bytes gas_limit = 4; // <=256 bit unsigned big endian
optional bytes to = 5; // 160 bit address hash
optional bytes value = 6; // <=256 bit unsigned big endian (in wei)
optional bytes data_initial_chunk = 7; // The initial data chunk (<= 1024 bytes)
optional uint32 data_length = 8; // Length of transaction payload
optional uint32 chain_id = 9; // Chain Id for EIP 155
}
/**
* Response: Device asks for more data from transaction payload, or returns the signature.
* If data_length is set, device awaits that many more bytes of payload.
* Otherwise, the signature_* fields contain the computed transaction signature. All three fields will be present.
* @prev EthereumSignTx
* @next EthereumTxAck
*/
message EthereumTxRequest {
optional uint32 data_length = 1; // Number of bytes being requested (<= 1024)
optional uint32 signature_v = 2; // Computed signature (recovery parameter, limited to 27 or 28)
optional bytes signature_r = 3; // Computed signature R component (256 bit)
optional bytes signature_s = 4; // Computed signature S component (256 bit)
}
/**
* Request: Transaction payload data.
* @prev EthereumTxRequest
* @next EthereumTxRequest
*/
message EthereumTxAck {
optional bytes data_chunk = 1; // Bytes from transaction payload (<= 1024 bytes)
}
////////////////////////////////////////
// Ethereum: Message signing messages //
////////////////////////////////////////
/**
* Request: Ask device to sign message
* @next EthereumMessageSignature
* @next Failure
*/
message EthereumSignMessage {
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
required bytes message = 2; // message to be signed
}
/**
* Request: Ask device to verify message
* @next Success
* @next Failure
*/
message EthereumVerifyMessage {
optional bytes address = 1; // address to verify
optional bytes signature = 2; // signature to verify
optional bytes message = 3; // message to verify
}
/**
* Response: Signed message
* @prev EthereumSignMessage
*/
message EthereumMessageSignature {
optional bytes address = 1; // address used to sign the message
optional bytes signature = 2; // signature of the message
}
///////////////////////
// Identity messages //
///////////////////////
/**
* Request: Ask device to sign identity
* @next SignedIdentity
* @next Failure
*/
message SignIdentity {
optional IdentityType identity = 1; // identity
optional bytes challenge_hidden = 2; // non-visible challenge
optional string challenge_visual = 3; // challenge shown on display (e.g. date+time)
optional string ecdsa_curve_name = 4; // ECDSA curve name to use
}
/**
* Response: Device provides signed identity
* @prev SignIdentity
*/
message SignedIdentity {
optional string address = 1; // identity address
optional bytes public_key = 2; // identity public key
optional bytes signature = 3; // signature of the identity data
}
///////////////////
// ECDH messages //
///////////////////
/**
* Request: Ask device to generate ECDH session key
* @next ECDHSessionKey
* @next Failure
*/
message GetECDHSessionKey {
optional IdentityType identity = 1; // identity
optional bytes peer_public_key = 2; // peer's public key
optional string ecdsa_curve_name = 3; // ECDSA curve name to use
}
/**
* Response: Device provides ECDH session key
* @prev GetECDHSessionKey
*/
message ECDHSessionKey {
optional bytes session_key = 1; // ECDH session key
}
///////////////////
// U2F messages //
///////////////////
/**
* Request: Set U2F counter
* @next Success
*/
message SetU2FCounter {
optional uint32 u2f_counter = 1; // counter
}
/////////////////////////
// Bootloader messages //
/////////////////////////
/**
* Request: Ask device to erase its firmware (so it can be replaced via FirmwareUpload)
* @next Success
* @next FirmwareRequest
* @next Failure
*/
message FirmwareErase {
optional uint32 length = 1; // length of new firmware
}
/**
* Response: Ask for firmware chunk
* @next FirmwareUpload
*/
message FirmwareRequest {
optional uint32 offset = 1; // offset of requested firmware chunk
optional uint32 length = 2; // length of requested firmware chunk
}
/**
* Request: Send firmware in binary form to the device
* @next Success
* @next Failure
*/
message FirmwareUpload {
required bytes payload = 1; // firmware to be loaded into device
optional bytes hash = 2; // hash of the payload
}
/**
* Request: Perform a device self-test
* @next Success
* @next Failure
*/
message SelfTest {
optional bytes payload = 1; // payload to be used in self-test
}
/////////////////////////////////////////////////////////////
// Debug messages (only available if DebugLink is enabled) //
/////////////////////////////////////////////////////////////
/**
* Request: "Press" the button on the device
* @next Success
*/
message DebugLinkDecision {
required bool yes_no = 1; // true for "Confirm", false for "Cancel"
}
/**
* Request: Computer asks for device state
* @next DebugLinkState
*/
message DebugLinkGetState {
}
/**
* Response: Device current state
* @prev DebugLinkGetState
*/
message DebugLinkState {
optional bytes layout = 1; // raw buffer of display
optional string pin = 2; // current PIN, blank if PIN is not set/enabled
optional string matrix = 3; // current PIN matrix
optional string mnemonic = 4; // current BIP-39 mnemonic
optional HDNodeType node = 5; // current BIP-32 node
optional bool passphrase_protection = 6; // is node/mnemonic encrypted using passphrase?
optional string reset_word = 7; // word on device display during ResetDevice workflow
optional bytes reset_entropy = 8; // current entropy during ResetDevice workflow
optional string recovery_fake_word = 9; // (fake) word on display during RecoveryDevice workflow
optional uint32 recovery_word_pos = 10; // index of mnemonic word the device is expecting during RecoveryDevice workflow
}
/**
* Request: Ask device to restart
*/
message DebugLinkStop {
}
/**
* Response: Device wants host to log event
*/
message DebugLinkLog {
optional uint32 level = 1;
optional string bucket = 2;
optional string text = 3;
}
/**
* Request: Read memory from device
* @next DebugLinkMemory
*/
message DebugLinkMemoryRead {
optional uint32 address = 1;
optional uint32 length = 2;
}
/**
* Response: Device sends memory back
* @prev DebugLinkMemoryRead
*/
message DebugLinkMemory {
optional bytes memory = 1;
}
/**
* Request: Write memory to device.
* WARNING: Writing to the wrong location can irreparably break the device.
*/
message DebugLinkMemoryWrite {
optional uint32 address = 1;
optional bytes memory = 2;
optional bool flash = 3;
}
/**
* Request: Erase block of flash on device
* WARNING: Writing to the wrong location can irreparably break the device.
*/
message DebugLinkFlashErase {
optional uint32 sector = 1;
}

View File

@@ -0,0 +1,46 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
// This file contains the implementation for interacting with the Trezor hardware
// wallets. The wire protocol spec can be found on the SatoshiLabs website:
// https://doc.satoshilabs.com/trezor-tech/api-protobuf.html
//go:generate protoc --go_out=import_path=trezor:. types.proto messages.proto
// Package trezor contains the wire protocol wrapper in Go.
package trezor
import (
"reflect"
"github.com/golang/protobuf/proto"
)
// Type returns the protocol buffer type number of a specific message. If the
// message is nil, this method panics!
func Type(msg proto.Message) uint16 {
return uint16(MessageType_value["MessageType_"+reflect.TypeOf(msg).Elem().Name()])
}
// Name returns the friendly message type name of a specific protocol buffer
// type numbers.
func Name(kind uint16) string {
name := MessageType_name[int32(kind)]
if len(name) < 12 {
return name
}
return name[12:]
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,278 @@
// This file originates from the SatoshiLabs Trezor `common` repository at:
// https://github.com/trezor/trezor-common/blob/master/protob/types.proto
// dated 28.07.2017, commit dd8ec3231fb5f7992360aff9bdfe30bb58130f4b.
syntax = "proto2";
/**
* Types for TREZOR communication
*
* @author Marek Palatinus <slush@satoshilabs.com>
* @version 1.2
*/
// Sugar for easier handling in Java
option java_package = "com.satoshilabs.trezor.lib.protobuf";
option java_outer_classname = "TrezorType";
import "google/protobuf/descriptor.proto";
/**
* Options for specifying message direction and type of wire (normal/debug)
*/
extend google.protobuf.EnumValueOptions {
optional bool wire_in = 50002; // message can be transmitted via wire from PC to TREZOR
optional bool wire_out = 50003; // message can be transmitted via wire from TREZOR to PC
optional bool wire_debug_in = 50004; // message can be transmitted via debug wire from PC to TREZOR
optional bool wire_debug_out = 50005; // message can be transmitted via debug wire from TREZOR to PC
optional bool wire_tiny = 50006; // message is handled by TREZOR when the USB stack is in tiny mode
optional bool wire_bootloader = 50007; // message is only handled by TREZOR Bootloader
}
/**
* Type of failures returned by Failure message
* @used_in Failure
*/
enum FailureType {
Failure_UnexpectedMessage = 1;
Failure_ButtonExpected = 2;
Failure_DataError = 3;
Failure_ActionCancelled = 4;
Failure_PinExpected = 5;
Failure_PinCancelled = 6;
Failure_PinInvalid = 7;
Failure_InvalidSignature = 8;
Failure_ProcessError = 9;
Failure_NotEnoughFunds = 10;
Failure_NotInitialized = 11;
Failure_FirmwareError = 99;
}
/**
* Type of script which will be used for transaction output
* @used_in TxOutputType
*/
enum OutputScriptType {
PAYTOADDRESS = 0; // used for all addresses (bitcoin, p2sh, witness)
PAYTOSCRIPTHASH = 1; // p2sh address (deprecated; use PAYTOADDRESS)
PAYTOMULTISIG = 2; // only for change output
PAYTOOPRETURN = 3; // op_return
PAYTOWITNESS = 4; // only for change output
PAYTOP2SHWITNESS = 5; // only for change output
}
/**
* Type of script which will be used for transaction output
* @used_in TxInputType
*/
enum InputScriptType {
SPENDADDRESS = 0; // standard p2pkh address
SPENDMULTISIG = 1; // p2sh multisig address
EXTERNAL = 2; // reserved for external inputs (coinjoin)
SPENDWITNESS = 3; // native segwit
SPENDP2SHWITNESS = 4; // segwit over p2sh (backward compatible)
}
/**
* Type of information required by transaction signing process
* @used_in TxRequest
*/
enum RequestType {
TXINPUT = 0;
TXOUTPUT = 1;
TXMETA = 2;
TXFINISHED = 3;
TXEXTRADATA = 4;
}
/**
* Type of button request
* @used_in ButtonRequest
*/
enum ButtonRequestType {
ButtonRequest_Other = 1;
ButtonRequest_FeeOverThreshold = 2;
ButtonRequest_ConfirmOutput = 3;
ButtonRequest_ResetDevice = 4;
ButtonRequest_ConfirmWord = 5;
ButtonRequest_WipeDevice = 6;
ButtonRequest_ProtectCall = 7;
ButtonRequest_SignTx = 8;
ButtonRequest_FirmwareCheck = 9;
ButtonRequest_Address = 10;
ButtonRequest_PublicKey = 11;
}
/**
* Type of PIN request
* @used_in PinMatrixRequest
*/
enum PinMatrixRequestType {
PinMatrixRequestType_Current = 1;
PinMatrixRequestType_NewFirst = 2;
PinMatrixRequestType_NewSecond = 3;
}
/**
* Type of recovery procedure. These should be used as bitmask, e.g.,
* `RecoveryDeviceType_ScrambledWords | RecoveryDeviceType_Matrix`
* listing every method supported by the host computer.
*
* Note that ScrambledWords must be supported by every implementation
* for backward compatibility; there is no way to not support it.
*
* @used_in RecoveryDevice
*/
enum RecoveryDeviceType {
// use powers of two when extending this field
RecoveryDeviceType_ScrambledWords = 0; // words in scrambled order
RecoveryDeviceType_Matrix = 1; // matrix recovery type
}
/**
* Type of Recovery Word request
* @used_in WordRequest
*/
enum WordRequestType {
WordRequestType_Plain = 0;
WordRequestType_Matrix9 = 1;
WordRequestType_Matrix6 = 2;
}
/**
* Structure representing BIP32 (hierarchical deterministic) node
* Used for imports of private key into the device and exporting public key out of device
* @used_in PublicKey
* @used_in LoadDevice
* @used_in DebugLinkState
* @used_in Storage
*/
message HDNodeType {
required uint32 depth = 1;
required uint32 fingerprint = 2;
required uint32 child_num = 3;
required bytes chain_code = 4;
optional bytes private_key = 5;
optional bytes public_key = 6;
}
message HDNodePathType {
required HDNodeType node = 1; // BIP-32 node in deserialized form
repeated uint32 address_n = 2; // BIP-32 path to derive the key from node
}
/**
* Structure representing Coin
* @used_in Features
*/
message CoinType {
optional string coin_name = 1;
optional string coin_shortcut = 2;
optional uint32 address_type = 3 [default=0];
optional uint64 maxfee_kb = 4;
optional uint32 address_type_p2sh = 5 [default=5];
optional string signed_message_header = 8;
optional uint32 xpub_magic = 9 [default=76067358]; // default=0x0488b21e
optional uint32 xprv_magic = 10 [default=76066276]; // default=0x0488ade4
optional bool segwit = 11;
optional uint32 forkid = 12;
}
/**
* Type of redeem script used in input
* @used_in TxInputType
*/
message MultisigRedeemScriptType {
repeated HDNodePathType pubkeys = 1; // pubkeys from multisig address (sorted lexicographically)
repeated bytes signatures = 2; // existing signatures for partially signed input
optional uint32 m = 3; // "m" from n, how many valid signatures is necessary for spending
}
/**
* Structure representing transaction input
* @used_in SimpleSignTx
* @used_in TransactionType
*/
message TxInputType {
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
required bytes prev_hash = 2; // hash of previous transaction output to spend by this input
required uint32 prev_index = 3; // index of previous output to spend
optional bytes script_sig = 4; // script signature, unset for tx to sign
optional uint32 sequence = 5 [default=4294967295]; // sequence (default=0xffffffff)
optional InputScriptType script_type = 6 [default=SPENDADDRESS]; // defines template of input script
optional MultisigRedeemScriptType multisig = 7; // Filled if input is going to spend multisig tx
optional uint64 amount = 8; // amount of previous transaction output (for segwit only)
}
/**
* Structure representing transaction output
* @used_in SimpleSignTx
* @used_in TransactionType
*/
message TxOutputType {
optional string address = 1; // target coin address in Base58 encoding
repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address"
required uint64 amount = 3; // amount to spend in satoshis
required OutputScriptType script_type = 4; // output script type
optional MultisigRedeemScriptType multisig = 5; // defines multisig address; script_type must be PAYTOMULTISIG
optional bytes op_return_data = 6; // defines op_return data; script_type must be PAYTOOPRETURN, amount must be 0
}
/**
* Structure representing compiled transaction output
* @used_in TransactionType
*/
message TxOutputBinType {
required uint64 amount = 1;
required bytes script_pubkey = 2;
}
/**
* Structure representing transaction
* @used_in SimpleSignTx
*/
message TransactionType {
optional uint32 version = 1;
repeated TxInputType inputs = 2;
repeated TxOutputBinType bin_outputs = 3;
repeated TxOutputType outputs = 5;
optional uint32 lock_time = 4;
optional uint32 inputs_cnt = 6;
optional uint32 outputs_cnt = 7;
optional bytes extra_data = 8;
optional uint32 extra_data_len = 9;
}
/**
* Structure representing request details
* @used_in TxRequest
*/
message TxRequestDetailsType {
optional uint32 request_index = 1; // device expects TxAck message from the computer
optional bytes tx_hash = 2; // tx_hash of requested transaction
optional uint32 extra_data_len = 3; // length of requested extra data
optional uint32 extra_data_offset = 4; // offset of requested extra data
}
/**
* Structure representing serialized data
* @used_in TxRequest
*/
message TxRequestSerializedType {
optional uint32 signature_index = 1; // 'signature' field contains signed input of this index
optional bytes signature = 2; // signature of the signature_index input
optional bytes serialized_tx = 3; // part of serialized and signed transaction
}
/**
* Structure representing identity data
* @used_in IdentityType
*/
message IdentityType {
optional string proto = 1; // proto part of URI
optional string user = 2; // user part of URI
optional string host = 3; // host part of URI
optional string port = 4; // port part of URI
optional string path = 5; // path part of URI
optional uint32 index = 6 [default=0]; // identity index
}

View File

@@ -0,0 +1,464 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
// This file contains the implementation for interacting with the Ledger hardware
// wallets. The wire protocol spec can be found in the Ledger Blue GitHub repo:
// https://raw.githubusercontent.com/LedgerHQ/blue-app-eth/master/doc/ethapp.asc
package usbwallet
import (
"encoding/binary"
"encoding/hex"
"errors"
"fmt"
"io"
"math/big"
"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"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/rlp"
)
// ledgerOpcode is an enumeration encoding the supported Ledger opcodes.
type ledgerOpcode byte
// ledgerParam1 is an enumeration encoding the supported Ledger parameters for
// specific opcodes. The same parameter values may be reused between opcodes.
type ledgerParam1 byte
// ledgerParam2 is an enumeration encoding the supported Ledger parameters for
// specific opcodes. The same parameter values may be reused between opcodes.
type ledgerParam2 byte
const (
ledgerOpRetrieveAddress ledgerOpcode = 0x02 // Returns the public key and Ethereum address for a given BIP 32 path
ledgerOpSignTransaction ledgerOpcode = 0x04 // Signs an Ethereum transaction after having the user validate the parameters
ledgerOpGetConfiguration ledgerOpcode = 0x06 // Returns specific wallet application configuration
ledgerP1DirectlyFetchAddress ledgerParam1 = 0x00 // Return address directly from the wallet
ledgerP1ConfirmFetchAddress ledgerParam1 = 0x01 // Require a user confirmation before returning the address
ledgerP1InitTransactionData ledgerParam1 = 0x00 // First transaction data block for signing
ledgerP1ContTransactionData ledgerParam1 = 0x80 // Subsequent transaction data block for signing
ledgerP2DiscardAddressChainCode ledgerParam2 = 0x00 // Do not return the chain code along with the address
ledgerP2ReturnAddressChainCode ledgerParam2 = 0x01 // Require a user confirmation before returning the address
)
// errLedgerReplyInvalidHeader is the error message returned by a Ledger data exchange
// if the device replies with a mismatching header. This usually means the device
// is in browser mode.
var errLedgerReplyInvalidHeader = errors.New("ledger: invalid reply header")
// errLedgerInvalidVersionReply is the error message returned by a Ledger version retrieval
// when a response does arrive, but it does not contain the expected data.
var errLedgerInvalidVersionReply = errors.New("ledger: invalid version reply")
// ledgerDriver implements the communication with a Ledger hardware wallet.
type ledgerDriver struct {
device io.ReadWriter // USB device connection to communicate through
version [3]byte // Current version of the Ledger firmware (zero if app is offline)
browser bool // Flag whether the Ledger is in browser mode (reply channel mismatch)
failure error // Any failure that would make the device unusable
log log.Logger // Contextual logger to tag the ledger with its id
}
// newLedgerDriver creates a new instance of a Ledger USB protocol driver.
func newLedgerDriver(logger log.Logger) driver {
return &ledgerDriver{
log: logger,
}
}
// Status implements usbwallet.driver, returning various states the Ledger can
// currently be in.
func (w *ledgerDriver) Status() (string, error) {
if w.failure != nil {
return fmt.Sprintf("Failed: %v", w.failure), w.failure
}
if w.browser {
return "Ethereum app in browser mode", w.failure
}
if w.offline() {
return "Ethereum app offline", w.failure
}
return fmt.Sprintf("Ethereum app v%d.%d.%d online", w.version[0], w.version[1], w.version[2]), w.failure
}
// offline returns whether the wallet and the Ethereum app is offline or not.
//
// The method assumes that the state lock is held!
func (w *ledgerDriver) offline() bool {
return w.version == [3]byte{0, 0, 0}
}
// Open implements usbwallet.driver, attempting to initialize the connection to the
// Ledger hardware wallet. The Ledger does not require a user passphrase, so that
// parameter is silently discarded.
func (w *ledgerDriver) Open(device io.ReadWriter, passphrase string) error {
w.device, w.failure = device, nil
_, err := w.ledgerDerive(accounts.DefaultBaseDerivationPath)
if err != nil {
// Ethereum app is not running or in browser mode, nothing more to do, return
if err == errLedgerReplyInvalidHeader {
w.browser = true
}
return nil
}
// Try to resolve the Ethereum app's version, will fail prior to v1.0.2
if w.version, err = w.ledgerVersion(); err != nil {
w.version = [3]byte{1, 0, 0} // Assume worst case, can't verify if v1.0.0 or v1.0.1
}
return nil
}
// Close implements usbwallet.driver, cleaning up and metadata maintained within
// the Ledger driver.
func (w *ledgerDriver) Close() error {
w.browser, w.version = false, [3]byte{}
return nil
}
// Heartbeat implements usbwallet.driver, performing a sanity check against the
// Ledger to see if it's still online.
func (w *ledgerDriver) Heartbeat() error {
if _, err := w.ledgerVersion(); err != nil && err != errLedgerInvalidVersionReply {
w.failure = err
return err
}
return nil
}
// Derive implements usbwallet.driver, sending a derivation request to the Ledger
// and returning the Ethereum address located on that derivation path.
func (w *ledgerDriver) Derive(path accounts.DerivationPath) (common.Address, error) {
return w.ledgerDerive(path)
}
// SignTx implements usbwallet.driver, sending the transaction to the Ledger and
// waiting for the user to confirm or deny the transaction.
//
// Note, if the version of the Ethereum application running on the Ledger wallet is
// too old to sign EIP-155 transactions, but such is requested nonetheless, an error
// will be returned opposed to silently signing in Homestead mode.
func (w *ledgerDriver) SignTx(path accounts.DerivationPath, tx *types.Transaction, chainID *big.Int) (common.Address, *types.Transaction, error) {
// If the Ethereum app doesn't run, abort
if w.offline() {
return common.Address{}, nil, accounts.ErrWalletClosed
}
// Ensure the wallet is capable of signing the given transaction
if chainID != nil && w.version[0] <= 1 && w.version[1] <= 0 && w.version[2] <= 2 {
return common.Address{}, nil, fmt.Errorf("Ledger v%d.%d.%d doesn't support signing this transaction, please update to v1.0.3 at least", w.version[0], w.version[1], w.version[2])
}
// All infos gathered and metadata checks out, request signing
return w.ledgerSign(path, tx, chainID)
}
// ledgerVersion retrieves the current version of the Ethereum wallet app running
// on the Ledger wallet.
//
// The version retrieval protocol is defined as follows:
//
// CLA | INS | P1 | P2 | Lc | Le
// ----+-----+----+----+----+---
// E0 | 06 | 00 | 00 | 00 | 04
//
// With no input data, and the output data being:
//
// Description | Length
// ---------------------------------------------------+--------
// Flags 01: arbitrary data signature enabled by user | 1 byte
// Application major version | 1 byte
// Application minor version | 1 byte
// Application patch version | 1 byte
func (w *ledgerDriver) ledgerVersion() ([3]byte, error) {
// Send the request and wait for the response
reply, err := w.ledgerExchange(ledgerOpGetConfiguration, 0, 0, nil)
if err != nil {
return [3]byte{}, err
}
if len(reply) != 4 {
return [3]byte{}, errLedgerInvalidVersionReply
}
// Cache the version for future reference
var version [3]byte
copy(version[:], reply[1:])
return version, nil
}
// ledgerDerive retrieves the currently active Ethereum address from a Ledger
// wallet at the specified derivation path.
//
// The address derivation protocol is defined as follows:
//
// CLA | INS | P1 | P2 | Lc | Le
// ----+-----+----+----+-----+---
// E0 | 02 | 00 return address
// 01 display address and confirm before returning
// | 00: do not return the chain code
// | 01: return the chain code
// | var | 00
//
// Where the input data is:
//
// Description | Length
// -------------------------------------------------+--------
// Number of BIP 32 derivations to perform (max 10) | 1 byte
// First derivation index (big endian) | 4 bytes
// ... | 4 bytes
// Last derivation index (big endian) | 4 bytes
//
// And the output data is:
//
// Description | Length
// ------------------------+-------------------
// Public Key length | 1 byte
// Uncompressed Public Key | arbitrary
// Ethereum address length | 1 byte
// Ethereum address | 40 bytes hex ascii
// Chain code if requested | 32 bytes
func (w *ledgerDriver) ledgerDerive(derivationPath []uint32) (common.Address, error) {
// Flatten the derivation path into the Ledger request
path := make([]byte, 1+4*len(derivationPath))
path[0] = byte(len(derivationPath))
for i, component := range derivationPath {
binary.BigEndian.PutUint32(path[1+4*i:], component)
}
// Send the request and wait for the response
reply, err := w.ledgerExchange(ledgerOpRetrieveAddress, ledgerP1DirectlyFetchAddress, ledgerP2DiscardAddressChainCode, path)
if err != nil {
return common.Address{}, err
}
// Discard the public key, we don't need that for now
if len(reply) < 1 || len(reply) < 1+int(reply[0]) {
return common.Address{}, errors.New("reply lacks public key entry")
}
reply = reply[1+int(reply[0]):]
// Extract the Ethereum hex address string
if len(reply) < 1 || len(reply) < 1+int(reply[0]) {
return common.Address{}, errors.New("reply lacks address entry")
}
hexstr := reply[1 : 1+int(reply[0])]
// Decode the hex sting into an Ethereum address and return
var address common.Address
hex.Decode(address[:], hexstr)
return address, nil
}
// ledgerSign sends the transaction to the Ledger wallet, and waits for the user
// to confirm or deny the transaction.
//
// The transaction signing protocol is defined as follows:
//
// CLA | INS | P1 | P2 | Lc | Le
// ----+-----+----+----+-----+---
// E0 | 04 | 00: first transaction data block
// 80: subsequent transaction data block
// | 00 | variable | variable
//
// Where the input for the first transaction block (first 255 bytes) is:
//
// Description | Length
// -------------------------------------------------+----------
// Number of BIP 32 derivations to perform (max 10) | 1 byte
// First derivation index (big endian) | 4 bytes
// ... | 4 bytes
// Last derivation index (big endian) | 4 bytes
// RLP transaction chunk | arbitrary
//
// And the input for subsequent transaction blocks (first 255 bytes) are:
//
// Description | Length
// ----------------------+----------
// RLP transaction chunk | arbitrary
//
// And the output data is:
//
// Description | Length
// ------------+---------
// signature V | 1 byte
// signature R | 32 bytes
// signature S | 32 bytes
func (w *ledgerDriver) ledgerSign(derivationPath []uint32, tx *types.Transaction, chainID *big.Int) (common.Address, *types.Transaction, error) {
// Flatten the derivation path into the Ledger request
path := make([]byte, 1+4*len(derivationPath))
path[0] = byte(len(derivationPath))
for i, component := range derivationPath {
binary.BigEndian.PutUint32(path[1+4*i:], component)
}
// Create the transaction RLP based on whether legacy or EIP155 signing was requeste
var (
txrlp []byte
err error
)
if chainID == nil {
if txrlp, err = rlp.EncodeToBytes([]interface{}{tx.Nonce(), tx.GasPrice(), tx.Gas(), tx.To(), tx.Value(), tx.Data()}); err != nil {
return common.Address{}, nil, err
}
} else {
if txrlp, err = rlp.EncodeToBytes([]interface{}{tx.Nonce(), tx.GasPrice(), tx.Gas(), tx.To(), tx.Value(), tx.Data(), chainID, big.NewInt(0), big.NewInt(0)}); err != nil {
return common.Address{}, nil, err
}
}
payload := append(path, txrlp...)
// Send the request and wait for the response
var (
op = ledgerP1InitTransactionData
reply []byte
)
for len(payload) > 0 {
// Calculate the size of the next data chunk
chunk := 255
if chunk > len(payload) {
chunk = len(payload)
}
// Send the chunk over, ensuring it's processed correctly
reply, err = w.ledgerExchange(ledgerOpSignTransaction, op, 0, payload[:chunk])
if err != nil {
return common.Address{}, nil, err
}
// Shift the payload and ensure subsequent chunks are marked as such
payload = payload[chunk:]
op = ledgerP1ContTransactionData
}
// Extract the Ethereum signature and do a sanity validation
if len(reply) != 65 {
return common.Address{}, nil, errors.New("reply lacks signature")
}
signature := append(reply[1:], reply[0])
// Create the correct signer and signature transform based on the chain ID
var signer types.Signer
if chainID == nil {
signer = new(types.HomesteadSigner)
} else {
signer = types.NewEIP155Signer(chainID)
signature[64] = signature[64] - byte(chainID.Uint64()*2+35)
}
signed, err := tx.WithSignature(signer, signature)
if err != nil {
return common.Address{}, nil, err
}
sender, err := types.Sender(signer, signed)
if err != nil {
return common.Address{}, nil, err
}
return sender, signed, nil
}
// ledgerExchange performs a data exchange with the Ledger wallet, sending it a
// message and retrieving the response.
//
// The common transport header is defined as follows:
//
// Description | Length
// --------------------------------------+----------
// Communication channel ID (big endian) | 2 bytes
// Command tag | 1 byte
// Packet sequence index (big endian) | 2 bytes
// Payload | arbitrary
//
// The Communication channel ID allows commands multiplexing over the same
// physical link. It is not used for the time being, and should be set to 0101
// to avoid compatibility issues with implementations ignoring a leading 00 byte.
//
// The Command tag describes the message content. Use TAG_APDU (0x05) for standard
// APDU payloads, or TAG_PING (0x02) for a simple link test.
//
// The Packet sequence index describes the current sequence for fragmented payloads.
// The first fragment index is 0x00.
//
// APDU Command payloads are encoded as follows:
//
// Description | Length
// -----------------------------------
// APDU length (big endian) | 2 bytes
// APDU CLA | 1 byte
// APDU INS | 1 byte
// APDU P1 | 1 byte
// APDU P2 | 1 byte
// APDU length | 1 byte
// Optional APDU data | arbitrary
func (w *ledgerDriver) ledgerExchange(opcode ledgerOpcode, p1 ledgerParam1, p2 ledgerParam2, data []byte) ([]byte, error) {
// Construct the message payload, possibly split into multiple chunks
apdu := make([]byte, 2, 7+len(data))
binary.BigEndian.PutUint16(apdu, uint16(5+len(data)))
apdu = append(apdu, []byte{0xe0, byte(opcode), byte(p1), byte(p2), byte(len(data))}...)
apdu = append(apdu, data...)
// Stream all the chunks to the device
header := []byte{0x01, 0x01, 0x05, 0x00, 0x00} // Channel ID and command tag appended
chunk := make([]byte, 64)
space := len(chunk) - len(header)
for i := 0; len(apdu) > 0; i++ {
// Construct the new message to stream
chunk = append(chunk[:0], header...)
binary.BigEndian.PutUint16(chunk[3:], uint16(i))
if len(apdu) > space {
chunk = append(chunk, apdu[:space]...)
apdu = apdu[space:]
} else {
chunk = append(chunk, apdu...)
apdu = nil
}
// Send over to the device
w.log.Trace("Data chunk sent to the Ledger", "chunk", hexutil.Bytes(chunk))
if _, err := w.device.Write(chunk); err != nil {
return nil, err
}
}
// Stream the reply back from the wallet in 64 byte chunks
var reply []byte
chunk = chunk[:64] // Yeah, we surely have enough space
for {
// Read the next chunk from the Ledger wallet
if _, err := io.ReadFull(w.device, chunk); err != nil {
return nil, err
}
w.log.Trace("Data chunk received from the Ledger", "chunk", hexutil.Bytes(chunk))
// Make sure the transport header matches
if chunk[0] != 0x01 || chunk[1] != 0x01 || chunk[2] != 0x05 {
return nil, errLedgerReplyInvalidHeader
}
// If it's the first chunk, retrieve the total message length
var payload []byte
if chunk[3] == 0x00 && chunk[4] == 0x00 {
reply = make([]byte, 0, int(binary.BigEndian.Uint16(chunk[5:7])))
payload = chunk[7:]
} else {
payload = chunk[5:]
}
// Append to the reply and stop when filled up
if left := cap(reply) - len(reply); left > len(payload) {
reply = append(reply, payload...)
} else {
reply = append(reply, payload[:left]...)
break
}
}
return reply[:len(reply)-2], nil
}

View File

@@ -0,0 +1,330 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
// This file contains the implementation for interacting with the Trezor hardware
// wallets. The wire protocol spec can be found on the SatoshiLabs website:
// https://doc.satoshilabs.com/trezor-tech/api-protobuf.html
package usbwallet
import (
"encoding/binary"
"errors"
"fmt"
"io"
"math/big"
"github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/accounts/usbwallet/internal/trezor"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/log"
"github.com/golang/protobuf/proto"
)
// ErrTrezorPINNeeded is returned if opening the trezor requires a PIN code. In
// this case, the calling application should display a pinpad and send back the
// encoded passphrase.
var ErrTrezorPINNeeded = errors.New("trezor: pin needed")
// errTrezorReplyInvalidHeader is the error message returned by a Trezor data exchange
// if the device replies with a mismatching header. This usually means the device
// is in browser mode.
var errTrezorReplyInvalidHeader = errors.New("trezor: invalid reply header")
// trezorDriver implements the communication with a Trezor hardware wallet.
type trezorDriver struct {
device io.ReadWriter // USB device connection to communicate through
version [3]uint32 // Current version of the Trezor firmware
label string // Current textual label of the Trezor device
pinwait bool // Flags whether the device is waiting for PIN entry
failure error // Any failure that would make the device unusable
log log.Logger // Contextual logger to tag the trezor with its id
}
// newTrezorDriver creates a new instance of a Trezor USB protocol driver.
func newTrezorDriver(logger log.Logger) driver {
return &trezorDriver{
log: logger,
}
}
// Status implements accounts.Wallet, always whether the Trezor is opened, closed
// or whether the Ethereum app was not started on it.
func (w *trezorDriver) Status() (string, error) {
if w.failure != nil {
return fmt.Sprintf("Failed: %v", w.failure), w.failure
}
if w.device == nil {
return "Closed", w.failure
}
if w.pinwait {
return fmt.Sprintf("Trezor v%d.%d.%d '%s' waiting for PIN", w.version[0], w.version[1], w.version[2], w.label), w.failure
}
return fmt.Sprintf("Trezor v%d.%d.%d '%s' online", w.version[0], w.version[1], w.version[2], w.label), w.failure
}
// Open implements usbwallet.driver, attempting to initialize the connection to
// the Trezor hardware wallet. Initializing the Trezor is a two phase operation:
// * The first phase is to initialize the connection and read the wallet's
// features. This phase is invoked is the provided passphrase is empty. The
// device will display the pinpad as a result and will return an appropriate
// error to notify the user that a second open phase is needed.
// * The second phase is to unlock access to the Trezor, which is done by the
// user actually providing a passphrase mapping a keyboard keypad to the pin
// number of the user (shuffled according to the pinpad displayed).
func (w *trezorDriver) Open(device io.ReadWriter, passphrase string) error {
w.device, w.failure = device, nil
// If phase 1 is requested, init the connection and wait for user callback
if passphrase == "" {
// If we're already waiting for a PIN entry, insta-return
if w.pinwait {
return ErrTrezorPINNeeded
}
// Initialize a connection to the device
features := new(trezor.Features)
if _, err := w.trezorExchange(&trezor.Initialize{}, features); err != nil {
return err
}
w.version = [3]uint32{features.GetMajorVersion(), features.GetMinorVersion(), features.GetPatchVersion()}
w.label = features.GetLabel()
// Do a manual ping, forcing the device to ask for its PIN
askPin := true
res, err := w.trezorExchange(&trezor.Ping{PinProtection: &askPin}, new(trezor.PinMatrixRequest), new(trezor.Success))
if err != nil {
return err
}
// Only return the PIN request if the device wasn't unlocked until now
if res == 1 {
return nil // Device responded with trezor.Success
}
w.pinwait = true
return ErrTrezorPINNeeded
}
// Phase 2 requested with actual PIN entry
w.pinwait = false
if _, err := w.trezorExchange(&trezor.PinMatrixAck{Pin: &passphrase}, new(trezor.Success)); err != nil {
w.failure = err
return err
}
return nil
}
// Close implements usbwallet.driver, cleaning up and metadata maintained within
// the Trezor driver.
func (w *trezorDriver) Close() error {
w.version, w.label, w.pinwait = [3]uint32{}, "", false
return nil
}
// Heartbeat implements usbwallet.driver, performing a sanity check against the
// Trezor to see if it's still online.
func (w *trezorDriver) Heartbeat() error {
if _, err := w.trezorExchange(&trezor.Ping{}, new(trezor.Success)); err != nil {
w.failure = err
return err
}
return nil
}
// Derive implements usbwallet.driver, sending a derivation request to the Trezor
// and returning the Ethereum address located on that derivation path.
func (w *trezorDriver) Derive(path accounts.DerivationPath) (common.Address, error) {
return w.trezorDerive(path)
}
// SignTx implements usbwallet.driver, sending the transaction to the Trezor and
// waiting for the user to confirm or deny the transaction.
func (w *trezorDriver) SignTx(path accounts.DerivationPath, tx *types.Transaction, chainID *big.Int) (common.Address, *types.Transaction, error) {
if w.device == nil {
return common.Address{}, nil, accounts.ErrWalletClosed
}
return w.trezorSign(path, tx, chainID)
}
// trezorDerive sends a derivation request to the Trezor device and returns the
// Ethereum address located on that path.
func (w *trezorDriver) trezorDerive(derivationPath []uint32) (common.Address, error) {
address := new(trezor.EthereumAddress)
if _, err := w.trezorExchange(&trezor.EthereumGetAddress{AddressN: derivationPath}, address); err != nil {
return common.Address{}, err
}
return common.BytesToAddress(address.GetAddress()), nil
}
// trezorSign sends the transaction to the Trezor wallet, and waits for the user
// to confirm or deny the transaction.
func (w *trezorDriver) trezorSign(derivationPath []uint32, tx *types.Transaction, chainID *big.Int) (common.Address, *types.Transaction, error) {
// Create the transaction initiation message
data := tx.Data()
length := uint32(len(data))
request := &trezor.EthereumSignTx{
AddressN: derivationPath,
Nonce: new(big.Int).SetUint64(tx.Nonce()).Bytes(),
GasPrice: tx.GasPrice().Bytes(),
GasLimit: new(big.Int).SetUint64(tx.Gas()).Bytes(),
Value: tx.Value().Bytes(),
DataLength: &length,
}
if to := tx.To(); to != nil {
request.To = (*to)[:] // Non contract deploy, set recipient explicitly
}
if length > 1024 { // Send the data chunked if that was requested
request.DataInitialChunk, data = data[:1024], data[1024:]
} else {
request.DataInitialChunk, data = data, nil
}
if chainID != nil { // EIP-155 transaction, set chain ID explicitly (only 32 bit is supported!?)
id := uint32(chainID.Int64())
request.ChainId = &id
}
// Send the initiation message and stream content until a signature is returned
response := new(trezor.EthereumTxRequest)
if _, err := w.trezorExchange(request, response); err != nil {
return common.Address{}, nil, err
}
for response.DataLength != nil && int(*response.DataLength) <= len(data) {
chunk := data[:*response.DataLength]
data = data[*response.DataLength:]
if _, err := w.trezorExchange(&trezor.EthereumTxAck{DataChunk: chunk}, response); err != nil {
return common.Address{}, nil, err
}
}
// Extract the Ethereum signature and do a sanity validation
if len(response.GetSignatureR()) == 0 || len(response.GetSignatureS()) == 0 || response.GetSignatureV() == 0 {
return common.Address{}, nil, errors.New("reply lacks signature")
}
signature := append(append(response.GetSignatureR(), response.GetSignatureS()...), byte(response.GetSignatureV()))
// Create the correct signer and signature transform based on the chain ID
var signer types.Signer
if chainID == nil {
signer = new(types.HomesteadSigner)
} else {
signer = types.NewEIP155Signer(chainID)
signature[64] = signature[64] - byte(chainID.Uint64()*2+35)
}
// Inject the final signature into the transaction and sanity check the sender
signed, err := tx.WithSignature(signer, signature)
if err != nil {
return common.Address{}, nil, err
}
sender, err := types.Sender(signer, signed)
if err != nil {
return common.Address{}, nil, err
}
return sender, signed, nil
}
// trezorExchange performs a data exchange with the Trezor wallet, sending it a
// message and retrieving the response. If multiple responses are possible, the
// method will also return the index of the destination object used.
func (w *trezorDriver) trezorExchange(req proto.Message, results ...proto.Message) (int, error) {
// Construct the original message payload to chunk up
data, err := proto.Marshal(req)
if err != nil {
return 0, err
}
payload := make([]byte, 8+len(data))
copy(payload, []byte{0x23, 0x23})
binary.BigEndian.PutUint16(payload[2:], trezor.Type(req))
binary.BigEndian.PutUint32(payload[4:], uint32(len(data)))
copy(payload[8:], data)
// Stream all the chunks to the device
chunk := make([]byte, 64)
chunk[0] = 0x3f // Report ID magic number
for len(payload) > 0 {
// Construct the new message to stream, padding with zeroes if needed
if len(payload) > 63 {
copy(chunk[1:], payload[:63])
payload = payload[63:]
} else {
copy(chunk[1:], payload)
copy(chunk[1+len(payload):], make([]byte, 63-len(payload)))
payload = nil
}
// Send over to the device
w.log.Trace("Data chunk sent to the Trezor", "chunk", hexutil.Bytes(chunk))
if _, err := w.device.Write(chunk); err != nil {
return 0, err
}
}
// Stream the reply back from the wallet in 64 byte chunks
var (
kind uint16
reply []byte
)
for {
// Read the next chunk from the Trezor wallet
if _, err := io.ReadFull(w.device, chunk); err != nil {
return 0, err
}
w.log.Trace("Data chunk received from the Trezor", "chunk", hexutil.Bytes(chunk))
// Make sure the transport header matches
if chunk[0] != 0x3f || (len(reply) == 0 && (chunk[1] != 0x23 || chunk[2] != 0x23)) {
return 0, errTrezorReplyInvalidHeader
}
// If it's the first chunk, retrieve the reply message type and total message length
var payload []byte
if len(reply) == 0 {
kind = binary.BigEndian.Uint16(chunk[3:5])
reply = make([]byte, 0, int(binary.BigEndian.Uint32(chunk[5:9])))
payload = chunk[9:]
} else {
payload = chunk[1:]
}
// Append to the reply and stop when filled up
if left := cap(reply) - len(reply); left > len(payload) {
reply = append(reply, payload...)
} else {
reply = append(reply, payload[:left]...)
break
}
}
// Try to parse the reply into the requested reply message
if kind == uint16(trezor.MessageType_MessageType_Failure) {
// Trezor returned a failure, extract and return the message
failure := new(trezor.Failure)
if err := proto.Unmarshal(reply, failure); err != nil {
return 0, err
}
return 0, errors.New("trezor: " + failure.GetMessage())
}
if kind == uint16(trezor.MessageType_MessageType_ButtonRequest) {
// Trezor is waiting for user confirmation, ack and wait for the next message
return w.trezorExchange(&trezor.ButtonAck{}, results...)
}
for i, res := range results {
if trezor.Type(res) == kind {
return i, proto.Unmarshal(reply, res)
}
}
expected := make([]string, len(results))
for i, res := range results {
expected[i] = trezor.Name(trezor.Type(res))
}
return 0, fmt.Errorf("trezor: expected reply types %s, got %s", expected, trezor.Name(kind))
}

View File

@@ -0,0 +1,562 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
// Package usbwallet implements support for USB hardware wallets.
package usbwallet
import (
"context"
"fmt"
"io"
"math/big"
"sync"
"time"
ethereum "github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/log"
"github.com/karalabe/hid"
)
// Maximum time between wallet health checks to detect USB unplugs.
const heartbeatCycle = time.Second
// Minimum time to wait between self derivation attempts, even it the user is
// requesting accounts like crazy.
const selfDeriveThrottling = time.Second
// driver defines the vendor specific functionality hardware wallets instances
// must implement to allow using them with the wallet lifecycle management.
type driver interface {
// Status returns a textual status to aid the user in the current state of the
// wallet. It also returns an error indicating any failure the wallet might have
// encountered.
Status() (string, error)
// Open initializes access to a wallet instance. The passphrase parameter may
// or may not be used by the implementation of a particular wallet instance.
Open(device io.ReadWriter, passphrase string) error
// Close releases any resources held by an open wallet instance.
Close() error
// Heartbeat performs a sanity check against the hardware wallet to see if it
// is still online and healthy.
Heartbeat() error
// Derive sends a derivation request to the USB device and returns the Ethereum
// address located on that path.
Derive(path accounts.DerivationPath) (common.Address, error)
// SignTx sends the transaction to the USB device and waits for the user to confirm
// or deny the transaction.
SignTx(path accounts.DerivationPath, tx *types.Transaction, chainID *big.Int) (common.Address, *types.Transaction, error)
}
// wallet represents the common functionality shared by all USB hardware
// wallets to prevent reimplementing the same complex maintenance mechanisms
// for different vendors.
type wallet struct {
hub *Hub // USB hub scanning
driver driver // Hardware implementation of the low level device operations
url *accounts.URL // Textual URL uniquely identifying this wallet
info hid.DeviceInfo // Known USB device infos about the wallet
device *hid.Device // USB device advertising itself as a hardware wallet
accounts []accounts.Account // List of derive accounts pinned on the hardware wallet
paths map[common.Address]accounts.DerivationPath // Known derivation paths for signing operations
deriveNextPath accounts.DerivationPath // Next derivation path for account auto-discovery
deriveNextAddr common.Address // Next derived account address for auto-discovery
deriveChain ethereum.ChainStateReader // Blockchain state reader to discover used account with
deriveReq chan chan struct{} // Channel to request a self-derivation on
deriveQuit chan chan error // Channel to terminate the self-deriver with
healthQuit chan chan error
// Locking a hardware wallet is a bit special. Since hardware devices are lower
// performing, any communication with them might take a non negligible amount of
// time. Worse still, waiting for user confirmation can take arbitrarily long,
// but exclusive communication must be upheld during. Locking the entire wallet
// in the mean time however would stall any parts of the system that don't want
// to communicate, just read some state (e.g. list the accounts).
//
// As such, a hardware wallet needs two locks to function correctly. A state
// lock can be used to protect the wallet's software-side internal state, which
// must not be held exlusively during hardware communication. A communication
// lock can be used to achieve exclusive access to the device itself, this one
// however should allow "skipping" waiting for operations that might want to
// use the device, but can live without too (e.g. account self-derivation).
//
// Since we have two locks, it's important to know how to properly use them:
// - Communication requires the `device` to not change, so obtaining the
// commsLock should be done after having a stateLock.
// - Communication must not disable read access to the wallet state, so it
// must only ever hold a *read* lock to stateLock.
commsLock chan struct{} // Mutex (buf=1) for the USB comms without keeping the state locked
stateLock sync.RWMutex // Protects read and write access to the wallet struct fields
log log.Logger // Contextual logger to tag the base with its id
}
// URL implements accounts.Wallet, returning the URL of the USB hardware device.
func (w *wallet) URL() accounts.URL {
return *w.url // Immutable, no need for a lock
}
// Status implements accounts.Wallet, returning a custom status message from the
// underlying vendor-specific hardware wallet implementation.
func (w *wallet) Status() (string, error) {
w.stateLock.RLock() // No device communication, state lock is enough
defer w.stateLock.RUnlock()
status, failure := w.driver.Status()
if w.device == nil {
return "Closed", failure
}
return status, failure
}
// Open implements accounts.Wallet, attempting to open a USB connection to the
// hardware wallet.
func (w *wallet) Open(passphrase string) error {
w.stateLock.Lock() // State lock is enough since there's no connection yet at this point
defer w.stateLock.Unlock()
// If the device was already opened once, refuse to try again
if w.paths != nil {
return accounts.ErrWalletAlreadyOpen
}
// Make sure the actual device connection is done only once
if w.device == nil {
device, err := w.info.Open()
if err != nil {
return err
}
w.device = device
w.commsLock = make(chan struct{}, 1)
w.commsLock <- struct{}{} // Enable lock
}
// Delegate device initialization to the underlying driver
if err := w.driver.Open(w.device, passphrase); err != nil {
return err
}
// Connection successful, start life-cycle management
w.paths = make(map[common.Address]accounts.DerivationPath)
w.deriveReq = make(chan chan struct{})
w.deriveQuit = make(chan chan error)
w.healthQuit = make(chan chan error)
go w.heartbeat()
go w.selfDerive()
// Notify anyone listening for wallet events that a new device is accessible
go w.hub.updateFeed.Send(accounts.WalletEvent{Wallet: w, Kind: accounts.WalletOpened})
return nil
}
// heartbeat is a health check loop for the USB wallets to periodically verify
// whether they are still present or if they malfunctioned.
func (w *wallet) heartbeat() {
w.log.Debug("USB wallet health-check started")
defer w.log.Debug("USB wallet health-check stopped")
// Execute heartbeat checks until termination or error
var (
errc chan error
err error
)
for errc == nil && err == nil {
// Wait until termination is requested or the heartbeat cycle arrives
select {
case errc = <-w.healthQuit:
// Termination requested
continue
case <-time.After(heartbeatCycle):
// Heartbeat time
}
// Execute a tiny data exchange to see responsiveness
w.stateLock.RLock()
if w.device == nil {
// Terminated while waiting for the lock
w.stateLock.RUnlock()
continue
}
<-w.commsLock // Don't lock state while resolving version
err = w.driver.Heartbeat()
w.commsLock <- struct{}{}
w.stateLock.RUnlock()
if err != nil {
w.stateLock.Lock() // Lock state to tear the wallet down
w.close()
w.stateLock.Unlock()
}
// Ignore non hardware related errors
err = nil
}
// In case of error, wait for termination
if err != nil {
w.log.Debug("USB wallet health-check failed", "err", err)
errc = <-w.healthQuit
}
errc <- err
}
// Close implements accounts.Wallet, closing the USB connection to the device.
func (w *wallet) Close() error {
// Ensure the wallet was opened
w.stateLock.RLock()
hQuit, dQuit := w.healthQuit, w.deriveQuit
w.stateLock.RUnlock()
// Terminate the health checks
var herr error
if hQuit != nil {
errc := make(chan error)
hQuit <- errc
herr = <-errc // Save for later, we *must* close the USB
}
// Terminate the self-derivations
var derr error
if dQuit != nil {
errc := make(chan error)
dQuit <- errc
derr = <-errc // Save for later, we *must* close the USB
}
// Terminate the device connection
w.stateLock.Lock()
defer w.stateLock.Unlock()
w.healthQuit = nil
w.deriveQuit = nil
w.deriveReq = nil
if err := w.close(); err != nil {
return err
}
if herr != nil {
return herr
}
return derr
}
// close is the internal wallet closer that terminates the USB connection and
// resets all the fields to their defaults.
//
// Note, close assumes the state lock is held!
func (w *wallet) close() error {
// Allow duplicate closes, especially for health-check failures
if w.device == nil {
return nil
}
// Close the device, clear everything, then return
w.device.Close()
w.device = nil
w.accounts, w.paths = nil, nil
w.driver.Close()
return nil
}
// Accounts implements accounts.Wallet, returning the list of accounts pinned to
// the USB hardware wallet. If self-derivation was enabled, the account list is
// periodically expanded based on current chain state.
func (w *wallet) Accounts() []accounts.Account {
// Attempt self-derivation if it's running
reqc := make(chan struct{}, 1)
select {
case w.deriveReq <- reqc:
// Self-derivation request accepted, wait for it
<-reqc
default:
// Self-derivation offline, throttled or busy, skip
}
// Return whatever account list we ended up with
w.stateLock.RLock()
defer w.stateLock.RUnlock()
cpy := make([]accounts.Account, len(w.accounts))
copy(cpy, w.accounts)
return cpy
}
// selfDerive is an account derivation loop that upon request attempts to find
// new non-zero accounts.
func (w *wallet) selfDerive() {
w.log.Debug("USB wallet self-derivation started")
defer w.log.Debug("USB wallet self-derivation stopped")
// Execute self-derivations until termination or error
var (
reqc chan struct{}
errc chan error
err error
)
for errc == nil && err == nil {
// Wait until either derivation or termination is requested
select {
case errc = <-w.deriveQuit:
// Termination requested
continue
case reqc = <-w.deriveReq:
// Account discovery requested
}
// Derivation needs a chain and device access, skip if either unavailable
w.stateLock.RLock()
if w.device == nil || w.deriveChain == nil {
w.stateLock.RUnlock()
reqc <- struct{}{}
continue
}
select {
case <-w.commsLock:
default:
w.stateLock.RUnlock()
reqc <- struct{}{}
continue
}
// Device lock obtained, derive the next batch of accounts
var (
accs []accounts.Account
paths []accounts.DerivationPath
nextAddr = w.deriveNextAddr
nextPath = w.deriveNextPath
context = context.Background()
)
for empty := false; !empty; {
// Retrieve the next derived Ethereum account
if nextAddr == (common.Address{}) {
if nextAddr, err = w.driver.Derive(nextPath); err != nil {
w.log.Warn("USB wallet account derivation failed", "err", err)
break
}
}
// Check the account's status against the current chain state
var (
balance *big.Int
nonce uint64
)
balance, err = w.deriveChain.BalanceAt(context, nextAddr, nil)
if err != nil {
w.log.Warn("USB wallet balance retrieval failed", "err", err)
break
}
nonce, err = w.deriveChain.NonceAt(context, nextAddr, nil)
if err != nil {
w.log.Warn("USB wallet nonce retrieval failed", "err", err)
break
}
// If the next account is empty, stop self-derivation, but add it nonetheless
if balance.Sign() == 0 && nonce == 0 {
empty = true
}
// We've just self-derived a new account, start tracking it locally
path := make(accounts.DerivationPath, len(nextPath))
copy(path[:], nextPath[:])
paths = append(paths, path)
account := accounts.Account{
Address: nextAddr,
URL: accounts.URL{Scheme: w.url.Scheme, Path: fmt.Sprintf("%s/%s", w.url.Path, path)},
}
accs = append(accs, account)
// Display a log message to the user for new (or previously empty accounts)
if _, known := w.paths[nextAddr]; !known || (!empty && nextAddr == w.deriveNextAddr) {
w.log.Info("USB wallet discovered new account", "address", nextAddr, "path", path, "balance", balance, "nonce", nonce)
}
// Fetch the next potential account
if !empty {
nextAddr = common.Address{}
nextPath[len(nextPath)-1]++
}
}
// Self derivation complete, release device lock
w.commsLock <- struct{}{}
w.stateLock.RUnlock()
// Insert any accounts successfully derived
w.stateLock.Lock()
for i := 0; i < len(accs); i++ {
if _, ok := w.paths[accs[i].Address]; !ok {
w.accounts = append(w.accounts, accs[i])
w.paths[accs[i].Address] = paths[i]
}
}
// Shift the self-derivation forward
// TODO(karalabe): don't overwrite changes from wallet.SelfDerive
w.deriveNextAddr = nextAddr
w.deriveNextPath = nextPath
w.stateLock.Unlock()
// Notify the user of termination and loop after a bit of time (to avoid trashing)
reqc <- struct{}{}
if err == nil {
select {
case errc = <-w.deriveQuit:
// Termination requested, abort
case <-time.After(selfDeriveThrottling):
// Waited enough, willing to self-derive again
}
}
}
// In case of error, wait for termination
if err != nil {
w.log.Debug("USB wallet self-derivation failed", "err", err)
errc = <-w.deriveQuit
}
errc <- err
}
// Contains implements accounts.Wallet, returning whether a particular account is
// or is not pinned into this wallet instance. Although we could attempt to resolve
// unpinned accounts, that would be an non-negligible hardware operation.
func (w *wallet) Contains(account accounts.Account) bool {
w.stateLock.RLock()
defer w.stateLock.RUnlock()
_, exists := w.paths[account.Address]
return exists
}
// Derive implements accounts.Wallet, deriving a new account at the specific
// derivation path. If pin is set to true, the account will be added to the list
// of tracked accounts.
func (w *wallet) Derive(path accounts.DerivationPath, pin bool) (accounts.Account, error) {
// Try to derive the actual account and update its URL if successful
w.stateLock.RLock() // Avoid device disappearing during derivation
if w.device == nil {
w.stateLock.RUnlock()
return accounts.Account{}, accounts.ErrWalletClosed
}
<-w.commsLock // Avoid concurrent hardware access
address, err := w.driver.Derive(path)
w.commsLock <- struct{}{}
w.stateLock.RUnlock()
// If an error occurred or no pinning was requested, return
if err != nil {
return accounts.Account{}, err
}
account := accounts.Account{
Address: address,
URL: accounts.URL{Scheme: w.url.Scheme, Path: fmt.Sprintf("%s/%s", w.url.Path, path)},
}
if !pin {
return account, nil
}
// Pinning needs to modify the state
w.stateLock.Lock()
defer w.stateLock.Unlock()
if _, ok := w.paths[address]; !ok {
w.accounts = append(w.accounts, account)
w.paths[address] = path
}
return account, nil
}
// SelfDerive implements accounts.Wallet, trying to discover accounts that the
// user used previously (based on the chain state), but ones that he/she did not
// explicitly pin to the wallet manually. To avoid chain head monitoring, self
// derivation only runs during account listing (and even then throttled).
func (w *wallet) SelfDerive(base accounts.DerivationPath, chain ethereum.ChainStateReader) {
w.stateLock.Lock()
defer w.stateLock.Unlock()
w.deriveNextPath = make(accounts.DerivationPath, len(base))
copy(w.deriveNextPath[:], base[:])
w.deriveNextAddr = common.Address{}
w.deriveChain = chain
}
// SignHash implements accounts.Wallet, however signing arbitrary data is not
// supported for hardware wallets, so this method will always return an error.
func (w *wallet) SignHash(account accounts.Account, hash []byte) ([]byte, error) {
return nil, accounts.ErrNotSupported
}
// SignTx implements accounts.Wallet. It sends the transaction over to the Ledger
// wallet to request a confirmation from the user. It returns either the signed
// transaction or a failure if the user denied the transaction.
//
// Note, if the version of the Ethereum application running on the Ledger wallet is
// too old to sign EIP-155 transactions, but such is requested nonetheless, an error
// will be returned opposed to silently signing in Homestead mode.
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()
// If the wallet is closed, abort
if w.device == nil {
return nil, accounts.ErrWalletClosed
}
// Make sure the requested account is contained within
path, ok := w.paths[account.Address]
if !ok {
return nil, accounts.ErrUnknownAccount
}
// All infos gathered and metadata checks out, request signing
<-w.commsLock
defer func() { w.commsLock <- struct{}{} }()
// Ensure the device isn't screwed with while user confirmation is pending
// TODO(karalabe): remove if hotplug lands on Windows
w.hub.commsLock.Lock()
w.hub.commsPend++
w.hub.commsLock.Unlock()
defer func() {
w.hub.commsLock.Lock()
w.hub.commsPend--
w.hub.commsLock.Unlock()
}()
// Sign the transaction and verify the sender to avoid hardware fault surprises
sender, signed, err := w.driver.SignTx(path, tx, chainID)
if err != nil {
return nil, err
}
if sender != account.Address {
return nil, fmt.Errorf("signer mismatch: expected %s, got %s", account.Address.Hex(), sender.Hex())
}
return signed, nil
}
// SignHashWithPassphrase implements accounts.Wallet, however signing arbitrary
// data is not supported for Ledger wallets, so this method will always return
// an error.
func (w *wallet) SignHashWithPassphrase(account accounts.Account, passphrase string, hash []byte) ([]byte, error) {
return w.SignHash(account, hash)
}
// SignTxWithPassphrase implements accounts.Wallet, attempting to sign the given
// transaction with the given account using passphrase as extra authentication.
// Since USB wallets don't rely on passphrases, these are silently ignored.
func (w *wallet) SignTxWithPassphrase(account accounts.Account, passphrase string, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error) {
return w.SignTx(account, tx, chainID)
}

40
appveyor.yml Normal file
View File

@@ -0,0 +1,40 @@
os: Visual Studio 2015
# Clone directly into GOPATH.
clone_folder: C:\gopath\src\github.com\ethereum\go-ethereum
clone_depth: 5
version: "{branch}.{build}"
environment:
global:
GOPATH: C:\gopath
CC: gcc.exe
matrix:
- GETH_ARCH: amd64
MSYS2_ARCH: x86_64
MSYS2_BITS: 64
MSYSTEM: MINGW64
PATH: C:\msys64\mingw64\bin\;C:\Program Files (x86)\NSIS\;%PATH%
- GETH_ARCH: 386
MSYS2_ARCH: i686
MSYS2_BITS: 32
MSYSTEM: MINGW32
PATH: C:\msys64\mingw32\bin\;C:\Program Files (x86)\NSIS\;%PATH%
install:
- git submodule update --init
- rmdir C:\go /s /q
- appveyor DownloadFile https://storage.googleapis.com/golang/go1.9.2.windows-%GETH_ARCH%.zip
- 7z x go1.9.2.windows-%GETH_ARCH%.zip -y -oC:\ > NUL
- go version
- gcc --version
build_script:
- go run build\ci.go install
after_build:
- go run build\ci.go archive -type zip -signer WINDOWS_SIGNING_KEY -upload gethstore/builds
- go run build\ci.go nsis -signer WINDOWS_SIGNING_KEY -upload gethstore/builds
test_script:
- set CGO_ENABLED=1
- go run build\ci.go test -coverage

561
bmt/bmt.go Normal file
View File

@@ -0,0 +1,561 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
// Package bmt provides a binary merkle tree implementation
package bmt
import (
"fmt"
"hash"
"io"
"strings"
"sync"
"sync/atomic"
)
/*
Binary Merkle Tree Hash is a hash function over arbitrary datachunks of limited size
It is defined as the root hash of the binary merkle tree built over fixed size segments
of the underlying chunk using any base hash function (e.g keccak 256 SHA3)
It is used as the chunk hash function in swarm which in turn is the basis for the
128 branching swarm hash http://swarm-guide.readthedocs.io/en/latest/architecture.html#swarm-hash
The BMT is optimal for providing compact inclusion proofs, i.e. prove that a
segment is a substring of a chunk starting at a particular offset
The size of the underlying segments is fixed at 32 bytes (called the resolution
of the BMT hash), the EVM word size to optimize for on-chain BMT verification
as well as the hash size optimal for inclusion proofs in the merkle tree of the swarm hash.
Two implementations are provided:
* RefHasher is optimized for code simplicity and meant as a reference implementation
* Hasher is optimized for speed taking advantage of concurrency with minimalistic
control structure to coordinate the concurrent routines
It implements the ChunkHash interface as well as the go standard hash.Hash interface
*/
const (
// DefaultSegmentCount is the maximum number of segments of the underlying chunk
DefaultSegmentCount = 128 // Should be equal to storage.DefaultBranches
// DefaultPoolSize is the maximum number of bmt trees used by the hashers, i.e,
// the maximum number of concurrent BMT hashing operations performed by the same hasher
DefaultPoolSize = 8
)
// BaseHasher is a hash.Hash constructor function used for the base hash of the BMT.
type BaseHasher func() hash.Hash
// Hasher a reusable hasher for fixed maximum size chunks representing a BMT
// implements the hash.Hash interface
// reuse pool of Tree-s for amortised memory allocation and resource control
// supports order-agnostic concurrent segment writes
// as well as sequential read and write
// can not be called concurrently on more than one chunk
// can be further appended after Sum
// Reset gives back the Tree to the pool and guaranteed to leave
// the tree and itself in a state reusable for hashing a new chunk
type Hasher struct {
pool *TreePool // BMT resource pool
bmt *Tree // prebuilt BMT resource for flowcontrol and proofs
blocksize int // segment size (size of hash) also for hash.Hash
count int // segment count
size int // for hash.Hash same as hashsize
cur int // cursor position for righmost currently open chunk
segment []byte // the rightmost open segment (not complete)
depth int // index of last level
result chan []byte // result channel
hash []byte // to record the result
max int32 // max segments for SegmentWriter interface
blockLength []byte // The block length that needes to be added in Sum
}
// New creates a reusable Hasher
// implements the hash.Hash interface
// pulls a new Tree from a resource pool for hashing each chunk
func New(p *TreePool) *Hasher {
return &Hasher{
pool: p,
depth: depth(p.SegmentCount),
size: p.SegmentSize,
blocksize: p.SegmentSize,
count: p.SegmentCount,
result: make(chan []byte),
}
}
// Node is a reuseable segment hasher representing a node in a BMT
// it allows for continued writes after a Sum
// and is left in completely reusable state after Reset
type Node struct {
level, index int // position of node for information/logging only
initial bool // first and last node
root bool // whether the node is root to a smaller BMT
isLeft bool // whether it is left side of the parent double segment
unbalanced bool // indicates if a node has only the left segment
parent *Node // BMT connections
state int32 // atomic increment impl concurrent boolean toggle
left, right []byte
}
// NewNode constructor for segment hasher nodes in the BMT
func NewNode(level, index int, parent *Node) *Node {
return &Node{
parent: parent,
level: level,
index: index,
initial: index == 0,
isLeft: index%2 == 0,
}
}
// TreePool provides a pool of Trees used as resources by Hasher
// a Tree popped from the pool is guaranteed to have clean state
// for hashing a new chunk
// Hasher Reset releases the Tree to the pool
type TreePool struct {
lock sync.Mutex
c chan *Tree
hasher BaseHasher
SegmentSize int
SegmentCount int
Capacity int
count int
}
// NewTreePool creates a Tree pool with hasher, segment size, segment count and capacity
// on GetTree it reuses free Trees or creates a new one if size is not reached
func NewTreePool(hasher BaseHasher, segmentCount, capacity int) *TreePool {
return &TreePool{
c: make(chan *Tree, capacity),
hasher: hasher,
SegmentSize: hasher().Size(),
SegmentCount: segmentCount,
Capacity: capacity,
}
}
// Drain drains the pool uptil it has no more than n resources
func (self *TreePool) Drain(n int) {
self.lock.Lock()
defer self.lock.Unlock()
for len(self.c) > n {
<-self.c
self.count--
}
}
// Reserve is blocking until it returns an available Tree
// it reuses free Trees or creates a new one if size is not reached
func (self *TreePool) Reserve() *Tree {
self.lock.Lock()
defer self.lock.Unlock()
var t *Tree
if self.count == self.Capacity {
return <-self.c
}
select {
case t = <-self.c:
default:
t = NewTree(self.hasher, self.SegmentSize, self.SegmentCount)
self.count++
}
return t
}
// Release gives back a Tree to the pool.
// This Tree is guaranteed to be in reusable state
// does not need locking
func (self *TreePool) Release(t *Tree) {
self.c <- t // can never fail but...
}
// Tree is a reusable control structure representing a BMT
// organised in a binary tree
// Hasher uses a TreePool to pick one for each chunk hash
// the Tree is 'locked' while not in the pool
type Tree struct {
leaves []*Node
}
// Draw draws the BMT (badly)
func (self *Tree) Draw(hash []byte, d int) string {
var left, right []string
var anc []*Node
for i, n := range self.leaves {
left = append(left, fmt.Sprintf("%v", hashstr(n.left)))
if i%2 == 0 {
anc = append(anc, n.parent)
}
right = append(right, fmt.Sprintf("%v", hashstr(n.right)))
}
anc = self.leaves
var hashes [][]string
for l := 0; len(anc) > 0; l++ {
var nodes []*Node
hash := []string{""}
for i, n := range anc {
hash = append(hash, fmt.Sprintf("%v|%v", hashstr(n.left), hashstr(n.right)))
if i%2 == 0 && n.parent != nil {
nodes = append(nodes, n.parent)
}
}
hash = append(hash, "")
hashes = append(hashes, hash)
anc = nodes
}
hashes = append(hashes, []string{"", fmt.Sprintf("%v", hashstr(hash)), ""})
total := 60
del := " "
var rows []string
for i := len(hashes) - 1; i >= 0; i-- {
var textlen int
hash := hashes[i]
for _, s := range hash {
textlen += len(s)
}
if total < textlen {
total = textlen + len(hash)
}
delsize := (total - textlen) / (len(hash) - 1)
if delsize > len(del) {
delsize = len(del)
}
row := fmt.Sprintf("%v: %v", len(hashes)-i-1, strings.Join(hash, del[:delsize]))
rows = append(rows, row)
}
rows = append(rows, strings.Join(left, " "))
rows = append(rows, strings.Join(right, " "))
return strings.Join(rows, "\n") + "\n"
}
// NewTree initialises the Tree by building up the nodes of a BMT
// segment size is stipulated to be the size of the hash
// segmentCount needs to be positive integer and does not need to be
// a power of two and can even be an odd number
// segmentSize * segmentCount determines the maximum chunk size
// hashed using the tree
func NewTree(hasher BaseHasher, segmentSize, segmentCount int) *Tree {
n := NewNode(0, 0, nil)
n.root = true
prevlevel := []*Node{n}
// iterate over levels and creates 2^level nodes
level := 1
count := 2
for d := 1; d <= depth(segmentCount); d++ {
nodes := make([]*Node, count)
for i := 0; i < len(nodes); i++ {
parent := prevlevel[i/2]
t := NewNode(level, i, parent)
nodes[i] = t
}
prevlevel = nodes
level++
count *= 2
}
// the datanode level is the nodes on the last level where
return &Tree{
leaves: prevlevel,
}
}
// methods needed by hash.Hash
// Size returns the size
func (self *Hasher) Size() int {
return self.size
}
// BlockSize returns the block size
func (self *Hasher) BlockSize() int {
return self.blocksize
}
// Sum returns the hash of the buffer
// hash.Hash interface Sum method appends the byte slice to the underlying
// data before it calculates and returns the hash of the chunk
func (self *Hasher) Sum(b []byte) (r []byte) {
t := self.bmt
i := self.cur
n := t.leaves[i]
j := i
// must run strictly before all nodes calculate
// datanodes are guaranteed to have a parent
if len(self.segment) > self.size && i > 0 && n.parent != nil {
n = n.parent
} else {
i *= 2
}
d := self.finalise(n, i)
self.writeSegment(j, self.segment, d)
c := <-self.result
self.releaseTree()
// sha3(length + BMT(pure_chunk))
if self.blockLength == nil {
return c
}
res := self.pool.hasher()
res.Reset()
res.Write(self.blockLength)
res.Write(c)
return res.Sum(nil)
}
// Hasher implements the SwarmHash interface
// Hash waits for the hasher result and returns it
// caller must call this on a BMT Hasher being written to
func (self *Hasher) Hash() []byte {
return <-self.result
}
// Hasher implements the io.Writer interface
// Write fills the buffer to hash
// with every full segment complete launches a hasher go routine
// that shoots up the BMT
func (self *Hasher) Write(b []byte) (int, error) {
l := len(b)
if l <= 0 {
return 0, nil
}
s := self.segment
i := self.cur
count := (self.count + 1) / 2
need := self.count*self.size - self.cur*2*self.size
size := self.size
if need > size {
size *= 2
}
if l < need {
need = l
}
// calculate missing bit to complete current open segment
rest := size - len(s)
if need < rest {
rest = need
}
s = append(s, b[:rest]...)
need -= rest
// read full segments and the last possibly partial segment
for need > 0 && i < count-1 {
// push all finished chunks we read
self.writeSegment(i, s, self.depth)
need -= size
if need < 0 {
size += need
}
s = b[rest : rest+size]
rest += size
i++
}
self.segment = s
self.cur = i
// otherwise, we can assume len(s) == 0, so all buffer is read and chunk is not yet full
return l, nil
}
// Hasher implements the io.ReaderFrom interface
// ReadFrom reads from io.Reader and appends to the data to hash using Write
// it reads so that chunk to hash is maximum length or reader reaches EOF
// caller must Reset the hasher prior to call
func (self *Hasher) ReadFrom(r io.Reader) (m int64, err error) {
bufsize := self.size*self.count - self.size*self.cur - len(self.segment)
buf := make([]byte, bufsize)
var read int
for {
var n int
n, err = r.Read(buf)
read += n
if err == io.EOF || read == len(buf) {
hash := self.Sum(buf[:n])
if read == len(buf) {
err = NewEOC(hash)
}
break
}
if err != nil {
break
}
n, err = self.Write(buf[:n])
if err != nil {
break
}
}
return int64(read), err
}
// Reset needs to be called before writing to the hasher
func (self *Hasher) Reset() {
self.getTree()
self.blockLength = nil
}
// Hasher implements the SwarmHash interface
// ResetWithLength needs to be called before writing to the hasher
// the argument is supposed to be the byte slice binary representation of
// the legth of the data subsumed under the hash
func (self *Hasher) ResetWithLength(l []byte) {
self.Reset()
self.blockLength = l
}
// Release gives back the Tree to the pool whereby it unlocks
// it resets tree, segment and index
func (self *Hasher) releaseTree() {
if self.bmt != nil {
n := self.bmt.leaves[self.cur]
for ; n != nil; n = n.parent {
n.unbalanced = false
if n.parent != nil {
n.root = false
}
}
self.pool.Release(self.bmt)
self.bmt = nil
}
self.cur = 0
self.segment = nil
}
func (self *Hasher) writeSegment(i int, s []byte, d int) {
h := self.pool.hasher()
n := self.bmt.leaves[i]
if len(s) > self.size && n.parent != nil {
go func() {
h.Reset()
h.Write(s)
s = h.Sum(nil)
if n.root {
self.result <- s
return
}
self.run(n.parent, h, d, n.index, s)
}()
return
}
go self.run(n, h, d, i*2, s)
}
func (self *Hasher) run(n *Node, h hash.Hash, d int, i int, s []byte) {
isLeft := i%2 == 0
for {
if isLeft {
n.left = s
} else {
n.right = s
}
if !n.unbalanced && n.toggle() {
return
}
if !n.unbalanced || !isLeft || i == 0 && d == 0 {
h.Reset()
h.Write(n.left)
h.Write(n.right)
s = h.Sum(nil)
} else {
s = append(n.left, n.right...)
}
self.hash = s
if n.root {
self.result <- s
return
}
isLeft = n.isLeft
n = n.parent
i++
}
}
// getTree obtains a BMT resource by reserving one from the pool
func (self *Hasher) getTree() *Tree {
if self.bmt != nil {
return self.bmt
}
t := self.pool.Reserve()
self.bmt = t
return t
}
// atomic bool toggle implementing a concurrent reusable 2-state object
// atomic addint with %2 implements atomic bool toggle
// it returns true if the toggler just put it in the active/waiting state
func (self *Node) toggle() bool {
return atomic.AddInt32(&self.state, 1)%2 == 1
}
func hashstr(b []byte) string {
end := len(b)
if end > 4 {
end = 4
}
return fmt.Sprintf("%x", b[:end])
}
func depth(n int) (d int) {
for l := (n - 1) / 2; l > 0; l /= 2 {
d++
}
return d
}
// finalise is following the zigzags on the tree belonging
// to the final datasegment
func (self *Hasher) finalise(n *Node, i int) (d int) {
isLeft := i%2 == 0
for {
// when the final segment's path is going via left segments
// the incoming data is pushed to the parent upon pulling the left
// we do not need toogle the state since this condition is
// detectable
n.unbalanced = isLeft
n.right = nil
if n.initial {
n.root = true
return d
}
isLeft = n.isLeft
n = n.parent
d++
}
}
// EOC (end of chunk) implements the error interface
type EOC struct {
Hash []byte // read the hash of the chunk off the error
}
// Error returns the error string
func (self *EOC) Error() string {
return fmt.Sprintf("hasher limit reached, chunk hash: %x", self.Hash)
}
// NewEOC creates new end of chunk error with the hash
func NewEOC(hash []byte) *EOC {
return &EOC{hash}
}

85
bmt/bmt_r.go Normal file
View File

@@ -0,0 +1,85 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
// simple nonconcurrent reference implementation for hashsize segment based
// Binary Merkle tree hash on arbitrary but fixed maximum chunksize
//
// This implementation does not take advantage of any paralellisms and uses
// far more memory than necessary, but it is easy to see that it is correct.
// It can be used for generating test cases for optimized implementations.
// see testBMTHasherCorrectness function in bmt_test.go
package bmt
import (
"hash"
)
// RefHasher is the non-optimized easy to read reference implementation of BMT
type RefHasher struct {
span int
section int
cap int
h hash.Hash
}
// NewRefHasher returns a new RefHasher
func NewRefHasher(hasher BaseHasher, count int) *RefHasher {
h := hasher()
hashsize := h.Size()
maxsize := hashsize * count
c := 2
for ; c < count; c *= 2 {
}
if c > 2 {
c /= 2
}
return &RefHasher{
section: 2 * hashsize,
span: c * hashsize,
cap: maxsize,
h: h,
}
}
// Hash returns the BMT hash of the byte slice
// implements the SwarmHash interface
func (rh *RefHasher) Hash(d []byte) []byte {
if len(d) > rh.cap {
d = d[:rh.cap]
}
return rh.hash(d, rh.span)
}
func (rh *RefHasher) hash(d []byte, s int) []byte {
l := len(d)
left := d
var right []byte
if l > rh.section {
for ; s >= l; s /= 2 {
}
left = rh.hash(d[:s], s)
right = d[s:]
if l-s > rh.section/2 {
right = rh.hash(right, s)
}
}
defer rh.h.Reset()
rh.h.Write(left)
rh.h.Write(right)
h := rh.h.Sum(nil)
return h
}

481
bmt/bmt_test.go Normal file
View File

@@ -0,0 +1,481 @@
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package bmt
import (
"bytes"
crand "crypto/rand"
"fmt"
"hash"
"io"
"math/rand"
"sync"
"sync/atomic"
"testing"
"time"
"github.com/ethereum/go-ethereum/crypto/sha3"
)
const (
maxproccnt = 8
)
// TestRefHasher tests that the RefHasher computes the expected BMT hash for
// all data lengths between 0 and 256 bytes
func TestRefHasher(t *testing.T) {
hashFunc := sha3.NewKeccak256
sha3 := func(data ...[]byte) []byte {
h := hashFunc()
for _, v := range data {
h.Write(v)
}
return h.Sum(nil)
}
// the test struct is used to specify the expected BMT hash for data
// lengths between "from" and "to"
type test struct {
from int64
to int64
expected func([]byte) []byte
}
var tests []*test
// all lengths in [0,64] should be:
//
// sha3(data)
//
tests = append(tests, &test{
from: 0,
to: 64,
expected: func(data []byte) []byte {
return sha3(data)
},
})
// all lengths in [65,96] should be:
//
// sha3(
// sha3(data[:64])
// data[64:]
// )
//
tests = append(tests, &test{
from: 65,
to: 96,
expected: func(data []byte) []byte {
return sha3(sha3(data[:64]), data[64:])
},
})
// all lengths in [97,128] should be:
//
// sha3(
// sha3(data[:64])
// sha3(data[64:])
// )
//
tests = append(tests, &test{
from: 97,
to: 128,
expected: func(data []byte) []byte {
return sha3(sha3(data[:64]), sha3(data[64:]))
},
})
// all lengths in [129,160] should be:
//
// sha3(
// sha3(
// sha3(data[:64])
// sha3(data[64:128])
// )
// data[128:]
// )
//
tests = append(tests, &test{
from: 129,
to: 160,
expected: func(data []byte) []byte {
return sha3(sha3(sha3(data[:64]), sha3(data[64:128])), data[128:])
},
})
// all lengths in [161,192] should be:
//
// sha3(
// sha3(
// sha3(data[:64])
// sha3(data[64:128])
// )
// sha3(data[128:])
// )
//
tests = append(tests, &test{
from: 161,
to: 192,
expected: func(data []byte) []byte {
return sha3(sha3(sha3(data[:64]), sha3(data[64:128])), sha3(data[128:]))
},
})
// all lengths in [193,224] should be:
//
// sha3(
// sha3(
// sha3(data[:64])
// sha3(data[64:128])
// )
// sha3(
// sha3(data[128:192])
// data[192:]
// )
// )
//
tests = append(tests, &test{
from: 193,
to: 224,
expected: func(data []byte) []byte {
return sha3(sha3(sha3(data[:64]), sha3(data[64:128])), sha3(sha3(data[128:192]), data[192:]))
},
})
// all lengths in [225,256] should be:
//
// sha3(
// sha3(
// sha3(data[:64])
// sha3(data[64:128])
// )
// sha3(
// sha3(data[128:192])
// sha3(data[192:])
// )
// )
//
tests = append(tests, &test{
from: 225,
to: 256,
expected: func(data []byte) []byte {
return sha3(sha3(sha3(data[:64]), sha3(data[64:128])), sha3(sha3(data[128:192]), sha3(data[192:])))
},
})
// run the tests
for _, x := range tests {
for length := x.from; length <= x.to; length++ {
t.Run(fmt.Sprintf("%d_bytes", length), func(t *testing.T) {
data := make([]byte, length)
if _, err := io.ReadFull(crand.Reader, data); err != nil && err != io.EOF {
t.Fatal(err)
}
expected := x.expected(data)
actual := NewRefHasher(hashFunc, 128).Hash(data)
if !bytes.Equal(actual, expected) {
t.Fatalf("expected %x, got %x", expected, actual)
}
})
}
}
}
func testDataReader(l int) (r io.Reader) {
return io.LimitReader(crand.Reader, int64(l))
}
func TestHasherCorrectness(t *testing.T) {
err := testHasher(testBaseHasher)
if err != nil {
t.Fatal(err)
}
}
func testHasher(f func(BaseHasher, []byte, int, int) error) error {
tdata := testDataReader(4128)
data := make([]byte, 4128)
tdata.Read(data)
hasher := sha3.NewKeccak256
size := hasher().Size()
counts := []int{1, 2, 3, 4, 5, 8, 16, 32, 64, 128}
var err error
for _, count := range counts {
max := count * size
incr := 1
for n := 0; n <= max+incr; n += incr {
err = f(hasher, data, n, count)
if err != nil {
return err
}
}
}
return nil
}
func TestHasherReuseWithoutRelease(t *testing.T) {
testHasherReuse(1, t)
}
func TestHasherReuseWithRelease(t *testing.T) {
testHasherReuse(maxproccnt, t)
}
func testHasherReuse(i int, t *testing.T) {
hasher := sha3.NewKeccak256
pool := NewTreePool(hasher, 128, i)
defer pool.Drain(0)
bmt := New(pool)
for i := 0; i < 500; i++ {
n := rand.Intn(4096)
tdata := testDataReader(n)
data := make([]byte, n)
tdata.Read(data)
err := testHasherCorrectness(bmt, hasher, data, n, 128)
if err != nil {
t.Fatal(err)
}
}
}
func TestHasherConcurrency(t *testing.T) {
hasher := sha3.NewKeccak256
pool := NewTreePool(hasher, 128, maxproccnt)
defer pool.Drain(0)
wg := sync.WaitGroup{}
cycles := 100
wg.Add(maxproccnt * cycles)
errc := make(chan error)
for p := 0; p < maxproccnt; p++ {
for i := 0; i < cycles; i++ {
go func() {
bmt := New(pool)
n := rand.Intn(4096)
tdata := testDataReader(n)
data := make([]byte, n)
tdata.Read(data)
err := testHasherCorrectness(bmt, hasher, data, n, 128)
wg.Done()
if err != nil {
errc <- err
}
}()
}
}
go func() {
wg.Wait()
close(errc)
}()
var err error
select {
case <-time.NewTimer(5 * time.Second).C:
err = fmt.Errorf("timed out")
case err = <-errc:
}
if err != nil {
t.Fatal(err)
}
}
func testBaseHasher(hasher BaseHasher, d []byte, n, count int) error {
pool := NewTreePool(hasher, count, 1)
defer pool.Drain(0)
bmt := New(pool)
return testHasherCorrectness(bmt, hasher, d, n, count)
}
func testHasherCorrectness(bmt hash.Hash, hasher BaseHasher, d []byte, n, count int) (err error) {
data := d[:n]
rbmt := NewRefHasher(hasher, count)
exp := rbmt.Hash(data)
timeout := time.NewTimer(time.Second)
c := make(chan error)
go func() {
bmt.Reset()
bmt.Write(data)
got := bmt.Sum(nil)
if !bytes.Equal(got, exp) {
c <- fmt.Errorf("wrong hash: expected %x, got %x", exp, got)
}
close(c)
}()
select {
case <-timeout.C:
err = fmt.Errorf("BMT hash calculation timed out")
case err = <-c:
}
return err
}
func BenchmarkSHA3_4k(t *testing.B) { benchmarkSHA3(4096, t) }
func BenchmarkSHA3_2k(t *testing.B) { benchmarkSHA3(4096/2, t) }
func BenchmarkSHA3_1k(t *testing.B) { benchmarkSHA3(4096/4, t) }
func BenchmarkSHA3_512b(t *testing.B) { benchmarkSHA3(4096/8, t) }
func BenchmarkSHA3_256b(t *testing.B) { benchmarkSHA3(4096/16, t) }
func BenchmarkSHA3_128b(t *testing.B) { benchmarkSHA3(4096/32, t) }
func BenchmarkBMTBaseline_4k(t *testing.B) { benchmarkBMTBaseline(4096, t) }
func BenchmarkBMTBaseline_2k(t *testing.B) { benchmarkBMTBaseline(4096/2, t) }
func BenchmarkBMTBaseline_1k(t *testing.B) { benchmarkBMTBaseline(4096/4, t) }
func BenchmarkBMTBaseline_512b(t *testing.B) { benchmarkBMTBaseline(4096/8, t) }
func BenchmarkBMTBaseline_256b(t *testing.B) { benchmarkBMTBaseline(4096/16, t) }
func BenchmarkBMTBaseline_128b(t *testing.B) { benchmarkBMTBaseline(4096/32, t) }
func BenchmarkRefHasher_4k(t *testing.B) { benchmarkRefHasher(4096, t) }
func BenchmarkRefHasher_2k(t *testing.B) { benchmarkRefHasher(4096/2, t) }
func BenchmarkRefHasher_1k(t *testing.B) { benchmarkRefHasher(4096/4, t) }
func BenchmarkRefHasher_512b(t *testing.B) { benchmarkRefHasher(4096/8, t) }
func BenchmarkRefHasher_256b(t *testing.B) { benchmarkRefHasher(4096/16, t) }
func BenchmarkRefHasher_128b(t *testing.B) { benchmarkRefHasher(4096/32, t) }
func BenchmarkHasher_4k(t *testing.B) { benchmarkHasher(4096, t) }
func BenchmarkHasher_2k(t *testing.B) { benchmarkHasher(4096/2, t) }
func BenchmarkHasher_1k(t *testing.B) { benchmarkHasher(4096/4, t) }
func BenchmarkHasher_512b(t *testing.B) { benchmarkHasher(4096/8, t) }
func BenchmarkHasher_256b(t *testing.B) { benchmarkHasher(4096/16, t) }
func BenchmarkHasher_128b(t *testing.B) { benchmarkHasher(4096/32, t) }
func BenchmarkHasherNoReuse_4k(t *testing.B) { benchmarkHasherReuse(1, 4096, t) }
func BenchmarkHasherNoReuse_2k(t *testing.B) { benchmarkHasherReuse(1, 4096/2, t) }
func BenchmarkHasherNoReuse_1k(t *testing.B) { benchmarkHasherReuse(1, 4096/4, t) }
func BenchmarkHasherNoReuse_512b(t *testing.B) { benchmarkHasherReuse(1, 4096/8, t) }
func BenchmarkHasherNoReuse_256b(t *testing.B) { benchmarkHasherReuse(1, 4096/16, t) }
func BenchmarkHasherNoReuse_128b(t *testing.B) { benchmarkHasherReuse(1, 4096/32, t) }
func BenchmarkHasherReuse_4k(t *testing.B) { benchmarkHasherReuse(16, 4096, t) }
func BenchmarkHasherReuse_2k(t *testing.B) { benchmarkHasherReuse(16, 4096/2, t) }
func BenchmarkHasherReuse_1k(t *testing.B) { benchmarkHasherReuse(16, 4096/4, t) }
func BenchmarkHasherReuse_512b(t *testing.B) { benchmarkHasherReuse(16, 4096/8, t) }
func BenchmarkHasherReuse_256b(t *testing.B) { benchmarkHasherReuse(16, 4096/16, t) }
func BenchmarkHasherReuse_128b(t *testing.B) { benchmarkHasherReuse(16, 4096/32, t) }
// benchmarks the minimum hashing time for a balanced (for simplicity) BMT
// by doing count/segmentsize parallel hashings of 2*segmentsize bytes
// doing it on n maxproccnt each reusing the base hasher
// the premise is that this is the minimum computation needed for a BMT
// therefore this serves as a theoretical optimum for concurrent implementations
func benchmarkBMTBaseline(n int, t *testing.B) {
tdata := testDataReader(64)
data := make([]byte, 64)
tdata.Read(data)
hasher := sha3.NewKeccak256
t.ReportAllocs()
t.ResetTimer()
for i := 0; i < t.N; i++ {
count := int32((n-1)/hasher().Size() + 1)
wg := sync.WaitGroup{}
wg.Add(maxproccnt)
var i int32
for j := 0; j < maxproccnt; j++ {
go func() {
defer wg.Done()
h := hasher()
for atomic.AddInt32(&i, 1) < count {
h.Reset()
h.Write(data)
h.Sum(nil)
}
}()
}
wg.Wait()
}
}
func benchmarkHasher(n int, t *testing.B) {
tdata := testDataReader(n)
data := make([]byte, n)
tdata.Read(data)
size := 1
hasher := sha3.NewKeccak256
segmentCount := 128
pool := NewTreePool(hasher, segmentCount, size)
bmt := New(pool)
t.ReportAllocs()
t.ResetTimer()
for i := 0; i < t.N; i++ {
bmt.Reset()
bmt.Write(data)
bmt.Sum(nil)
}
}
func benchmarkHasherReuse(poolsize, n int, t *testing.B) {
tdata := testDataReader(n)
data := make([]byte, n)
tdata.Read(data)
hasher := sha3.NewKeccak256
segmentCount := 128
pool := NewTreePool(hasher, segmentCount, poolsize)
cycles := 200
t.ReportAllocs()
t.ResetTimer()
for i := 0; i < t.N; i++ {
wg := sync.WaitGroup{}
wg.Add(cycles)
for j := 0; j < cycles; j++ {
bmt := New(pool)
go func() {
defer wg.Done()
bmt.Reset()
bmt.Write(data)
bmt.Sum(nil)
}()
}
wg.Wait()
}
}
func benchmarkSHA3(n int, t *testing.B) {
data := make([]byte, n)
tdata := testDataReader(n)
tdata.Read(data)
hasher := sha3.NewKeccak256
h := hasher()
t.ReportAllocs()
t.ResetTimer()
for i := 0; i < t.N; i++ {
h.Reset()
h.Write(data)
h.Sum(nil)
}
}
func benchmarkRefHasher(n int, t *testing.B) {
data := make([]byte, n)
tdata := testDataReader(n)
tdata.Read(data)
hasher := sha3.NewKeccak256
rbmt := NewRefHasher(hasher, 128)
t.ReportAllocs()
t.ResetTimer()
for i := 0; i < t.N; i++ {
rbmt.Hash(data)
}
}

49
build/ci-notes.md Normal file
View File

@@ -0,0 +1,49 @@
# Debian Packaging
Tagged releases and develop branch commits are available as installable Debian packages
for Ubuntu. Packages are built for the all Ubuntu versions which are supported by
Canonical:
- Trusty Tahr (14.04 LTS)
- Xenial Xerus (16.04 LTS)
- Yakkety Yak (16.10)
- Zesty Zapus (17.04)
Packages of develop branch commits have suffix -unstable and cannot be installed alongside
the stable version. Switching between release streams requires user intervention.
The packages are built and served by launchpad.net. We generate a Debian source package
for each distribution and upload it. Their builder picks up the source package, builds it
and installs the new version into the PPA repository. Launchpad requires a valid signature
by a team member for source package uploads. The signing key is stored in an environment
variable which Travis CI makes available to certain builds.
We want to build go-ethereum with the most recent version of Go, irrespective of the Go
version that is available in the main Ubuntu repository. In order to make this possible,
our PPA depends on the ~gophers/ubuntu/archive PPA. Our source package build-depends on
golang-1.9, which is co-installable alongside the regular golang package. PPA dependencies
can be edited at https://launchpad.net/%7Eethereum/+archive/ubuntu/ethereum/+edit-dependencies
## Building Packages Locally (for testing)
You need to run Ubuntu to do test packaging.
Add the gophers PPA and install Go 1.9 and Debian packaging tools:
$ sudo apt-add-repository ppa:gophers/ubuntu/archive
$ sudo apt-get update
$ sudo apt-get install build-essential golang-1.9 devscripts debhelper
Create the source packages:
$ go run build/ci.go debsrc -workdir dist
Then go into the source package directory for your running distribution and build the package:
$ cd dist/ethereum-unstable-1.6.0+xenial
$ dpkg-buildpackage
Built packages are placed in the dist/ directory.
$ cd ..
$ dpkg-deb -c geth-unstable_1.6.0+xenial_amd64.deb

1046
build/ci.go Normal file

File diff suppressed because it is too large Load Diff

5
build/deb.changelog Normal file
View File

@@ -0,0 +1,5 @@
{{.Name}} ({{.VersionString}}) {{.Distro}}; urgency=low
* git build of {{.Env.Commit}}
-- {{.Author}} {{.Time}}

25
build/deb.control Normal file
View File

@@ -0,0 +1,25 @@
Source: {{.Name}}
Section: science
Priority: extra
Maintainer: {{.Author}}
Build-Depends: debhelper (>= 8.0.0), golang-1.9
Standards-Version: 3.9.5
Homepage: https://ethereum.org
Vcs-Git: git://github.com/ethereum/go-ethereum.git
Vcs-Browser: https://github.com/ethereum/go-ethereum
Package: {{.Name}}
Architecture: any
Depends: ${misc:Depends}, {{.ExeList}}
Description: Meta-package to install geth and other tools
Meta-package to install geth and other tools
{{range .Executables}}
Package: {{$.ExeName .}}
Conflicts: {{$.ExeConflicts .}}
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Built-Using: ${misc:Built-Using}
Description: {{.Description}}
{{.Description}}
{{end}}

14
build/deb.copyright Normal file
View File

@@ -0,0 +1,14 @@
Copyright 2016 The go-ethereum Authors
go-ethereum is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
go-ethereum is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.

Some files were not shown because too many files have changed in this diff Show More