Compare commits

...

5449 Commits

Author SHA1 Message Date
ab5646c532 params: v1.6.7 stable 2017-07-11 16:32:36 +02:00
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
bd381be9c8 dockerignore: ignore all git metadata and all tests 2017-07-11 17:02:22 +03:00
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
bd01cd7183 vendor: update go-stack to fix a sigpanic panic (#14790) 2017-07-11 13:43:33 +02:00
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
4f7a38001f Merge pull request #14737 from holiman/txpool_localaccounts
Txpool localaccounts
2017-07-10 12:43:23 +03:00
65f0e905dd README: add missing full stop (#14766) 2017-07-07 16:41:26 +02:00
4b8860a7b4 Merge pull request #14723 from Arachnid/downloadrefactor
Refactor downloader to use interfaces instead of callbacks
2017-07-06 12:40:22 +01:00
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
f25486c3fb core: fix typo in error message (#14763) 2017-07-06 00:19:38 +02:00
88b4fe7d21 core: handle nolocals during add, exepmt locals from expiration 2017-07-05 17:16:42 +03:00
5e38f7a664 cmd, core: add --txpool.nolocals to disable local price exemptions 2017-07-05 17:06:05 +03:00
4c1d0b164b eth: drop leftover from previous nonce protection scheme 2017-07-05 16:53:40 +03:00
48ee7f9de7 core, eth, les: polish txpool API around local/remote txs 2017-07-05 16:51:55 +03:00
fe13949d9d eth/downloader: Doc fixes 2017-07-05 11:13:16 +01:00
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
8f12d76a47 params: remove redundant consts, disable metro on AllProtocolChanges 2017-07-04 12:28:58 +03:00
be8f8409bc eth/downloader, les, light: Changes in response to review 2017-07-03 15:17:12 +01:00
a633a2d7ea core: Prevent local tx:s from being discarded 2017-06-30 22:55:10 +02:00
67aff49822 core: Change local-handling to use sender-account instead of tx hashes 2017-06-30 22:43:26 +02:00
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
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
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
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
8bbd598ef4 core: fix an off-by-one when the block import counts blocks 2017-06-29 14:19:10 +02:00
ae11545bc5 eth, les: Refactor downloader peer to use structs 2017-06-29 12:49:18 +01:00
0550957989 eth, les, light: Refactor downloader to use blockchain interface 2017-06-28 15:58:41 +01:00
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
6dc32e897a core/vm: add benchmarks for some ops and precompiles (#14641) 2017-06-28 11:45:45 +02:00
e4301564c2 core/vm : fix testcase for gas calculation 2017-06-28 10:47:07 +02:00
bae7565231 core/vm: fix overflow in gas calculation formula 2017-06-28 09:51:31 +02:00
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
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
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
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
cf611c50b9 build: fix devel golang detection on debian/ubuntu (#14711) 2017-06-27 09:11:41 +02:00
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
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
feb2932706 Merge pull request #14540 from bas-vk/whisper-api
whisperv5: integrate whisper and implement API
2017-06-26 13:44:35 +03:00
ea1d1825a8 cmd/geth: fix whisper flag group capitalization 2017-06-26 13:40:43 +03:00
f321ed23fb Merge pull request #14687 from markya0616/unused_events
core: remove unused events
2017-06-26 13:27:39 +03:00
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
fdf2184b1e Merge pull request #14697 from homotopycolimit/master
swarm/storage: remove panic on invalid chunk
2017-06-26 12:21:11 +03:00
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
ef8d4711d5 Update README.md (#14701)
README: change heading to "Go Ethereum"
2017-06-26 12:17:06 +03:00
caa00b7e6d swarm/storage: remove panic on invalid chunk 2017-06-25 16:10:54 +02:00
5603eb9116 cmd/puppeth: fix key reuse during faucet deploys 2017-06-23 13:34:21 +03:00
78c04c920d params, VERSION: 1.6.7 unstable 2017-06-23 11:28:43 +02:00
10a45cb59b params: 1.6.6 stable 2017-06-23 11:26:54 +02:00
cd88f69715 Merge pull request #14596 from markya0616/valid_clique_vote
consensus/clique: choose valid votes
2017-06-23 11:21:38 +03:00
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
514659a023 consensus/clique: minor cleanups 2017-06-23 11:06:38 +03:00
01c9cf1cb5 node: don't return non-nil database on error 2017-06-23 09:56:30 +02:00
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
b6e99deee9 whisper: renamed Info#Message to Info#Messages 2017-06-23 09:18:02 +02:00
d40179f882 eth: gracefully error if database cannot be opened 2017-06-23 10:12:41 +03:00
beb708e6d7 core: remove unused events 2017-06-23 10:39:38 +08:00
f2c5b2cc1c travis.yml: add fakeroot to launchpad builder 2017-06-22 22:21:59 +02:00
a4277450b2 cmd/swarm: disable TestCLISwarmUp because it's flaky 2017-06-22 22:17:53 +02:00
b664bedcf2 Merge pull request #14673 from holiman/txfix
core: add testcase for txpool
2017-06-22 23:01:43 +03:00
eebde1a2e2 core: ensure transactions correctly drop on pool limiting 2017-06-22 21:03:54 +03:00
b0b3cf2eeb core: add testcase for txpool 2017-06-22 20:36:07 +03:00
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
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
d432688886 cmd/geth: corrently init gas price for CLI CPU mining 2017-06-22 14:58:07 +03:00
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
a1f3878ec5 swarm/test: add integration test for 'swarm up' (#14353) 2017-06-21 14:54:23 +02:00
a20a02ce0b README: document new config file option (#14348) 2017-06-21 14:53:08 +02:00
9a44e1035e cmd/evm, core/vm: add --nomemory, --nostack to evm (#14617) 2017-06-21 14:52:31 +02:00
c62d5422bb whisper: use hexutil.UnmarshalFixedText for topic parsing 2017-06-21 12:58:00 +02:00
9012863ad7 Merge pull request #14667 from fjl/swarm-fuse-cleanup
swarm/fuse: simplify externalUnmount, use subtests
2017-06-21 13:51:00 +03:00
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
a4e4c76cb3 whisper: use syncmap for dynamic configuration options 2017-06-21 11:15:47 +02:00
7a11e86442 whisper: move flags from whisper package to utils 2017-06-21 10:49:14 +02:00
4a1d516d78 whisper: renamed errors 2017-06-21 10:32:36 +02:00
b6b0e00198 whisper: fallback to default config if none is specified 2017-06-21 10:24:34 +02:00
3d66ba56ef whisper: remove obsolete api tests 2017-06-21 10:23:45 +02:00
767dc6c73d whisper: remove gencodec override for config 2017-06-21 10:11:54 +02:00
36e7963467 whisper: move ShhClient to its own package 2017-06-21 10:11:46 +02:00
98e101ef8e swarm/fuse: use subtests 2017-06-21 09:56:58 +02:00
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
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
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
5c53a5be66 consensus/clique: fix typo and don't add snapshot into recents again 2017-06-20 10:20:45 +08:00
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
4f77857f74 cmd/geth: fixed a minor typo in the comments 2017-06-16 15:03:19 +02:00
fade09a7ff eth: remove les server from protocol manager (#14625) 2017-06-15 15:28:57 +02:00
b58a501673 whisperv5: integrate whisper and add whisper RPC simulator 2017-06-15 11:53:15 +02:00
db6e695002 consensus/clique: choose valid votes 2017-06-14 16:49:33 +08:00
335abdceb1 Merge pull request #14581 from holiman/byte_opt
core/vm: improve opByte
2017-06-13 14:44:19 +03:00
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
b8793edd83 mobile: add a regression test for signer recovery 2017-06-13 13:39:39 +03:00
eb92522278 mobile: use EIP155 signer for determining sender 2017-06-13 09:13:59 +02:00
061889d4ea rlp, trie, contracts, compression, consensus: improve comments (#14580) 2017-06-12 14:45:17 +02:00
e3dfd55820 Merge pull request #14598 from konradkonrad/fix_makedag
consensus/ethash, cmd/geth: Fix `makedag` epoch
2017-06-12 13:34:26 +03:00
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
ac9865791a core/vm, common/math: Add doc about Byte, fix format 2017-06-08 23:16:05 +02:00
80f7c6c299 cmd/evm: add --prestate, --sender, --json flags for fuzzing (#14476) 2017-06-07 17:09:08 +02:00
bc24b7a912 core/types: use Header.Hash for block hashes (#14587)
Fixes #14586
2017-06-07 12:06:25 +02:00
1496b3aff6 common/math, core/vm: Un-expose bigEndianByteAt, use correct terms for endianness 2017-06-06 18:38:38 +02:00
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
65ea913e29 Merge pull request #14583 from ethersphere/core-log-fixes
core: Fix VM error logging
2017-06-06 10:31:27 +03:00
9a0e433b13 accounts: fix spelling error (#14567) 2017-06-06 09:28:47 +02:00
04d2de9119 core: Fix VM error logging
Signed-off-by: Lewis Marshall <lewis@lmars.net>
2017-06-05 23:51:32 +01:00
3285a0fda3 core/vm, common/math: Add fast getByte for bigints, improve opByte 2017-06-05 08:44:11 +02:00
6171d01b11 VERSION, params: begin Geth 1.6.6 release cycle 2017-06-01 22:08:19 +03:00
cf87713dd4 params: mark Geth v1.6.5 stable (Hat Trick) 2017-06-01 21:48:47 +03:00
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
d5a79934dc core/vm: Use a bitmap instead of a map for jumpdest analysis
t push --force
2017-06-01 19:14:05 +01:00
0424192e61 VERSION, params: begin geth 1.6.5 cycle 2017-06-01 17:37:44 +03:00
9c2882b2e5 params: Geth 1.6.4 stable (hotfix) 2017-06-01 17:33:17 +03:00
1a0eb903f1 internal/ethapi: initialize account mutex in lock properly 2017-06-01 17:16:12 +03:00
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
727eadacca VERSION, params: begin Geth 1.6.4 release cycle 2017-06-01 11:43:57 +03:00
99cba96f26 params: release Geth 1.6.3 - Covfefe 2017-06-01 11:41:48 +03:00
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
72dd51e25a accounts/keystore, crypto: don't enforce key checks on existing keyfiles 2017-06-01 11:11:06 +03:00
799a469000 Merge pull request #14561 from karalabe/txpool-perf-fix
core: reduce transaction reorganization overhead
2017-06-01 10:33:47 +03:00
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
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
3ecde4e2aa cotnainers/docker: fix the legacy alpine image before dropping 2017-06-01 00:21:47 +03:00
a355b401db ethstats: reduce ethstats traffic by trottling reports 2017-06-01 00:16:19 +03:00
cba33029a8 core: only reorg changed account, not all 2017-05-31 23:26:24 +03:00
9702badd83 core: don't uselessly recheck transactions on dump 2017-05-31 21:29:50 +03:00
067dc2cbf5 params, VERSION: 1.6.3 unstable 2017-05-31 05:47:35 +02:00
65979770e6 params: 1.6.2 stable 2017-05-31 05:45:13 +02:00
41bdf49eed Merge pull request #14516 from holiman/noncefixes
internal/ethapi: add mutex around signing + nonce assignment
2017-05-30 18:15:57 +03:00
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
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
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
ec1700600a cmd/puppeth: fix improper key validation for remotes 2017-05-30 14:24:01 +03:00
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
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
09d59da3a1 ethstats: don't report transaction content, only hash 2017-05-30 02:15:40 +03:00
280609c99b core: check for gas limit exceeding txs too on new block 2017-05-30 00:31:37 +03:00
309da541de consensus/clique: cache block signatures for fast checks 2017-05-29 22:07:02 +03:00
dd06c85843 Merge pull request #14523 from karalabe/txpool-cli-flags
cmd, core, eth: configurable txpool parameters
2017-05-29 11:42:48 +03:00
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
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
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
08959bbc70 cmd, core, eth: configurable txpool parameters 2017-05-29 11:29:46 +03:00
673c92db6b internal/ethapi: fix tx nonces in pool inspect/content 2017-05-29 11:17:31 +03:00
c2a494c743 eth: update default gas price when not mining too 2017-05-29 10:21:34 +03:00
afdd23b5ca eth: don't import propagated blocks during fastsync 2017-05-26 16:04:12 +03:00
cb809c03da Merge pull request #14517 from Ali92hm/master
Improved Dockerfile?
2017-05-26 10:54:41 +01:00
45421d3130 dockerfile: expose 30303/udp 2017-05-25 12:34:29 -07:00
115e7d71cc dockerfile: cp geth to /usr/local/bin 2017-05-25 12:34:28 -07:00
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
b7ff0d42e3 Merge pull request #14515 from karalabe/golint-tooooolong
core: fix various golint warnings and errors
2017-05-25 17:40:51 +03:00
c98bce709c core: fix minor accidental typos and comment errors 2017-05-25 17:22:45 +03:00
17f0b11942 core: typos and comments improve
1. fix typos
2. methods recevier of struct should be same
3. comments improve

(cherry picked from commit 1ba9795395)
2017-05-25 17:14:33 +03:00
6231edcbab travis, appveyor: bump to Go 1.8.3, Android NDK 14b 2017-05-25 17:05:33 +03:00
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
b596b4ba5b Merge pull request #14513 from obscuren/allocate-stack
core/vm: allocate stack to 1024
2017-05-25 13:22:56 +03:00
8b1e4c4c5e README: corrected attach example (#14512) 2017-05-25 13:22:26 +03:00
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
a346aedb90 cmd/geth: reorganise help section for new cli flag handling 2017-05-25 09:15:51 +02:00
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
261b3e2351 Merge pull request #14336 from obscuren/metropolis-preparation
consensus, core/*, params: metropolis preparation refactor
2017-05-24 22:28:22 +02:00
344f25fb3e Merge pull request #14507 from karalabe/faucet-misspell
cmd/faucet: fix a few typos
2017-05-24 17:14:21 +03:00
1afaea4bfe cmd/faucet: fix a few typos 2017-05-24 17:12:07 +03:00
11cf5b7ead consensus/ethash: fix TestCalcDifficulty 2017-05-24 15:40:54 +02:00
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
3b8915e387 Merge pull request #14504 from bas-vk/wallet-import
cmd/geth: reintroduce wallet import subcommand
2017-05-24 13:00:22 +03:00
437ceaa9be cmd/geth: reintroduce wallet import subcommand 2017-05-23 17:45:26 +02:00
136f78ff0a mobile: support importing flat ecdsa keyst too 2017-05-23 14:58:28 +03:00
aa73420207 accounts/keystore, crypto: enforce 256 bit keys on import 2017-05-23 14:58:03 +03:00
3556962053 Merge pull request #14501 from sqli-nantes/master
mobile: manage FilterQuery enabling contract events subscription
2017-05-23 13:47:22 +03:00
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
30cc1c3bf0 mobile: Add management methods to {Addresses,Topics,Hashes} structures 2017-05-23 11:16:25 +02:00
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
e16a7ef60f core/vm: capped int pool 2017-05-23 10:40:09 +02:00
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
3ee75bec9f cmd/evm: added mem/cpu profiling 2017-05-23 10:17:55 +02:00
04b668b232 core/vm: improve error message for invalid opcodes 2017-05-22 17:48:07 +02:00
da636c53d6 mobile: Allows mobile clients to create custom FilterQueries 2017-05-22 17:12:36 +02:00
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
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
bc75351edf README: fixing typo in documentation (#14493) 2017-05-22 08:47:27 +02:00
33b158e0ed discover: Changed Logging from Debug to Info (#14485) 2017-05-20 13:10:59 +02:00
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
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
a5f6a1cb7c consensus, core, core/vm, parems: review fixes 2017-05-18 09:05:58 +02:00
e6aff513db core/types: corrected abstract signing address 2017-05-18 09:05:58 +02:00
8a4c1fb799 consensus/ethash: set time to current instead of parent time 2017-05-18 09:05:58 +02:00
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
a2f23ca9b1 cmd, core, eth, miner: remove txpool gas price limits (#14442) 2017-05-16 21:07:27 +02:00
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
ef7b9fb7d0 cmd/puppeth: v4/v5 boot separation, signer gas configs (#14453) 2017-05-13 02:03:56 +02:00
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
90c7155ef4 mobile: accept nil for chainid as homestead signing (#14463) 2017-05-13 02:00:39 +02:00
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
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
953a995116 mobile: add toString & rlp/json encoding for protocol types 2017-05-11 17:25:40 +03:00
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
3b3989de6a cmd, node: support different bootnodes, fix default light port 2017-05-10 17:51:52 +03:00
40976ea1a0 README: update attach instructions for testnet users (#14448) 2017-05-09 16:06:07 +02:00
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
2e4d23a793 Merge pull request #14427 from zsfelfoldi/compress
common/bitutil: added data compression algorithm
2017-05-08 12:30:35 +03:00
60293820b7 core: fix processing regression during receipt import 2017-05-08 12:09:35 +03:00
82defe5c56 common/compress: internalize encoders, add length wrappers 2017-05-08 11:38:25 +03:00
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
dddebe469b travis: adapt build script to new travis VM settings 2017-05-08 11:22:08 +03:00
cf19586cfb common/bitutil: fix decompression corner cases; fuzz, test & bench 2017-05-06 19:06:17 +03:00
fd5d51c9ae common/bitutil: added data compression algorithm 2017-05-05 20:24:48 +02:00
2ec5cf1673 Merge pull request #14423 from karalabe/bitutil
common/bitutil, consensus/ethash: reusable bitutil package
2017-05-05 18:23:08 +03:00
36a800a1d2 common/bitutil, consensus/ethash: reusable bitutil package 2017-05-05 16:00:11 +03:00
93832b633e VERSION, params: begin 1.6.2 release cycle 2017-05-04 14:34:59 +03:00
021c3c2816 params: release Geth 1.6.1, Deripors of Ohratuu 2017-05-04 14:11:45 +03:00
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
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
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
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
d51a9fd6b7 cmd, core, params: add --rinkeby flag for fast connectivity 2017-05-04 12:36:20 +03:00
464f30d301 cmd/faucet: fix period to days conversion 2017-05-04 11:43:18 +03:00
8a28408616 cmd/faucet, cmd/puppeth: support multi-tiered faucet 2017-05-04 11:42:43 +03:00
e1dc7ece62 Merge pull request #14414 from gluk256/77_release
build: wnode added to the build configuration
2017-05-03 16:45:39 +03:00
99127ff2e7 build: wnode added to the build configuration 2017-05-03 15:36:02 +02:00
81d6ec908a cmd/geth: migrate dumpconfig command/flags 2017-05-03 14:39:07 +02:00
38b4fc8069 cmd/geth: migrate bug command/flags 2017-05-03 14:33:08 +02:00
11ab73f6d8 cmd/geth: migrate metric command/flags 2017-05-03 14:33:08 +02:00
18e9cb1187 cmd/geth: reorganise misc commands/flags 2017-05-03 14:33:07 +02:00
502a2bd69f cmd/geth: reorganise console/attach commands/flags 2017-05-03 14:33:07 +02:00
8b517d7f00 cmd/geth: reorganise chain commands/flags 2017-05-03 14:33:03 +02:00
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
181a3309df cmd/geth, cmd/utils: init/removedb on light/full dbs simultaneously 2017-05-03 13:35:47 +03:00
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
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
bcf2465b0b consensus/clique: fix overflow on recent signer check around genesis 2017-05-03 11:01:06 +03:00
c3dc01caf1 README: add config to genesis.json (#14373)
README: add config to genesis.json
2017-05-03 09:10:36 +02:00
cf4faa491a cmd/puppeth, vendor: update ssh, manage server keys (#14398) 2017-05-03 09:09:34 +02:00
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
f8acc0af7e consensus/ethash: fix a timestamp update race 2017-05-02 16:48:36 +03:00
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
0255ed6335 Merge pull request #14403 from fjl/console-number
console: avoid float64 when remarshaling parameters
2017-05-02 16:24:34 +03:00
96c2ab22e0 eth/downloader: fix a potential issue against future refactors 2017-05-02 16:14:35 +03:00
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
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
a6af56fa4d rpc: disable CORS if user has not specified custom config 2017-05-02 11:14:40 +02:00
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
f6c0f76cc5 cmd/geth: reorganise account/wallet command/flags 2017-04-28 14:01:54 +02:00
f9be9a2302 whisper: switching to v5 + minor refactoring (#14387) 2017-04-28 11:57:15 +02:00
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
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
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
5f7eb78918 node: fixes deadlock on Wait() 2017-04-25 18:04:02 +03:00
e61035c5a3 cmd, eth, les, mobile: make networkid uint64 everywhere 2017-04-25 14:53:50 +03:00
37e3f561f1 rpc: support subscriptions under custom namespaces 2017-04-25 11:13:22 +02:00
ba3bcd16a6 Merge pull request #14350 from fjl/trie-iterator-skip-2
eth: add debug_storageRangeAt
2017-04-25 11:10:20 +03:00
207bd7d2cd eth: add debug_storageRangeAt 2017-04-25 02:14:32 +02:00
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
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
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
7cc6abeef6 Merge pull request #14372 from bas-vk/bootnodegenkey
cmd/bootnode: stop after generating/writing nodekey
2017-04-24 19:31:23 +03:00
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
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
ecec454e92 cmd/bootnode: stop after generating/writing nodekey 2017-04-24 10:40:20 +02:00
7b2fc0643f core, light: delete SplitStatTy, ChainSplitEvent (unused) 2017-04-21 18:56:00 +02:00
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
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
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
edef84da2b core: make genesis incompatibility error more explicit 2017-04-20 14:14:13 +03:00
6430e672c9 cmd, node: add --nosub and node.Config.NoUSB to disable hw wallets 2017-04-20 14:01:51 +03:00
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
e353f9c088 Merge pull request #13886 from bas-vk/rpc_blocknum_parse
rpc: improve BlockNumber unmarshal parsing
2017-04-18 14:55:53 +03:00
af48a331bf cmd: integrate invisible recaptcha into puppeth 2017-04-16 20:53:27 +03:00
80e74fc1e0 cmd/faucet: fix websocket double close/reopen 2017-04-16 20:39:42 +03:00
03dffe3efd cmd/faucet: add optional recaptcha validation support 2017-04-16 19:49:40 +03:00
cb3f5f8b93 cmd/faucet: double check user against the GH website 2017-04-16 18:49:06 +03:00
c7a4d9cf8a VERSION, params: begin 1.6.1 release cycle 2017-04-14 13:43:10 +03:00
facc47cb5c params: release Geth 1.6.0, Puppeth Master 2017-04-14 13:07:07 +03:00
6876e92f8d Merge remote-tracking branch 'fjl/license-update-1.6' 2017-04-14 12:33:10 +03:00
15f32a8d57 build: disable misspell, upstream bug prevents builds 2017-04-14 12:24:01 +03:00
6d359dbcc6 eth: revert accidental ethash cache dir change 2017-04-14 11:35:17 +03:00
65e1095c3f consensus/ethash: close mmap before rename, windows limitation 2017-04-14 11:32:47 +03:00
0cc492f815 all: update license information 2017-04-14 10:29:00 +02:00
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
97f38ce4d6 cmd/geth: update flag groups in the geth command usage 2017-04-13 17:12:37 +03:00
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
7d0ac94809 rpc: improve BlockNumber unmarshal parsing 2017-04-13 13:20:19 +02:00
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
cc5654cb59 build: bump launchpad builds to Go 1.8.1 2017-04-13 14:11:33 +03:00
b35aa21f9f trie: implement unionIterator (#14312) 2017-04-13 11:14:19 +02:00
409b61fe3c swarm/api: better name resolver handling (#3754)
Fixes #3608
2017-04-13 11:06:19 +02:00
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
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
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
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
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
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
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
e418bc67d2 cmd/puppeth: format dashboard html, update syncmode flags 2017-04-12 17:07:34 +03:00
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
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
436acb4f75 cmd/rlpdump: support dumping only the first entity 2017-04-12 14:27:34 +03:00
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
a0cd77e833 build: create deb source for Ubuntu Zesty (#14316) 2017-04-12 02:07:00 +02:00
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
dd37064a15 cmd/swarm: add --password (#3748) 2017-04-12 02:03:42 +02:00
49f1e84253 internal/ethapi: Add support for fetching information about the current call in JS traces 2017-04-11 11:37:23 +01:00
9de257505b params: updated testnet bootnodes (#14310) 2017-04-11 11:57:54 +02:00
706a1e552c cmd/puppeth: your Ethereum private network manager (#13854) 2017-04-11 01:25:53 +02:00
18bbe12425 les: allow LES connection to other servers (#13889) 2017-04-11 01:23:39 +02:00
04fcae207d p2p: if no nodes are connected, attempt dialing bootnodes (#13874) 2017-04-10 18:33:41 +02:00
542e42b21e core: fix comment typo 2017-04-10 16:01:31 +03:00
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
bfe5eb7f8c eth: accept transactions when starting CPU mining (#13882) 2017-04-10 10:43:01 +02:00
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
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
bd2c54fa9f eth: announce block after sync cycle (star topology) 2017-04-09 20:12:46 +03:00
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
d144299af4 travis, appveyor: update to Go 1.8.1 2017-04-08 22:20:15 +03:00
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
b801be99d4 consensus, eth: don't CPU mine by default during remote mining 2017-04-07 17:22:06 +03:00
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
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
158d603528 consensus, core: drop all the legacy custom core error types 2017-04-06 17:34:19 +03:00
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
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
702bef8493 cmd/geth, eth: drop bad block reporting, its offline anyway 2017-04-06 14:25:05 +03:00
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
d83a9a8f44 miner: don't verify our own blocks, trust the engine 2017-04-06 12:22:14 +03:00
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
24b9860c1b cmd/geth, node: surface geth architecture into version (#13866) 2017-04-05 21:51:01 +02:00
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
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
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
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
e50a5b7771 Merge pull request #13856 from karalabe/ethstats-sanity-checks
ethstats: sanity check ethstats history queries
2017-04-04 13:03:34 +03:00
fb98a8c6c2 ethstats: cut short unavailable history responses 2017-04-04 11:41:17 +03:00
96d1a4aee6 ethstats: sanity check ethstats history queries 2017-03-31 15:06:54 +03:00
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
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
db93641941 ethstats: work around weird URL scheme parsing issues 2017-03-30 12:53:50 +03:00
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
baf20010e7 core/types: rename txdata.gasLimit -> txdata.gas in JSON (#13848) 2017-03-29 11:59:13 +02:00
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
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
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
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
4be37e91b9 core/types: ensure all EIP155 signer fields are set by deriveSigner
Fixes #3819
2017-03-24 22:06:10 +01:00
1018bf6a00 rpc: honour pending requests before tearing conn down (#3814) 2017-03-24 12:07:12 +01:00
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
bb7dca275c ethstats: cleanups, trace logs and "fix" history responses (#3812) 2017-03-24 10:42:40 +01:00
69ac6cc70e travis.yml: re-add missing build commands for Go 1.7 2017-03-24 10:29:20 +01:00
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
8771c3061f Merge pull request #3794 from fjl/core-genesis-refactor
core: refactor genesis handling
2017-03-23 17:36:38 +02:00
8ff7e55ab5 accounts/usbwallet: if a confirmation is pending, skip refresh 2017-03-23 17:04:39 +02:00
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
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
0f4b75bea2 core/state: expose CommitTo 2017-03-23 15:58:42 +01:00
d42a56afc5 common: add UnprefixedHash, UnprefixedAddress 2017-03-23 15:58:42 +01:00
b4547a560b common/hexutil: add UnmarshalFixedUnprefixedText 2017-03-23 15:58:42 +01:00
04fa6a3744 common/math: add HexOrDecimal64, HexOrDecimal256 2017-03-23 15:58:42 +01:00
26da6daaa9 accounts/usbwallet: fix Ledger hidapi/libusb protocol violation 2017-03-23 16:51:04 +02:00
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
11e7a712f4 swarm/api: support mounting manifests via FUSE (#3690) 2017-03-23 14:56:06 +01:00
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
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
f1534f5797 trie, whisper/whisperv5: use math/rand Read function 2017-03-22 20:49:15 +01:00
9a2720fb35 mobile: remove support for Go < 1.7 2017-03-22 20:49:15 +01:00
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
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
1c1dc0e0fc Merge pull request #3808 from fjl/build-go-1.7
build: require Go >= 1.7
2017-03-22 18:49:50 +02:00
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
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
6742fc526f core/vm: use uint64 instead of *big.Int in tracer (#3805) 2017-03-22 15:32:51 +01:00
9b84caf3a5 core, eth, les: support resuming fast sync on heavy rollback (#3743) 2017-03-22 01:37:24 +01:00
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
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
7242e4f71b travis: switch to cocoapods 1.2.0 stable 2017-03-20 14:12:47 +02:00
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
2ba9374789 ethstats: try both ws:// and wss:// if none specified 2017-03-20 12:45:43 +02:00
d97dea51ec swarm/network/kademlia: set kademlia log output to debug instead of warn (#3787) 2017-03-18 01:45:00 +01:00
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
6d038e762b accounts/abi/bind: allow client to specify sender address for call (#3782) 2017-03-16 12:24:22 +01:00
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
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
61ede86737 internal/ethapi: drop eth_compile (#3740) 2017-03-16 02:54:52 +01:00
dc4c59d42b Merge pull request #3779 from zsfelfoldi/cht-update
light: added new CHT
2017-03-14 17:02:56 +02:00
0a01f3f607 light: added new CHT 2017-03-14 16:59:42 +02:00
f3579f6460 pow: make data dumps backwards compatible, fix DAG end 2017-03-09 15:50:14 +01:00
5c8fa6ae1a crypto, pow, vendor: hash optimizations, mmap ethash 2017-03-09 15:50:14 +01:00
b7d93500f1 all: finish integrating Go ethash, delete C++ vendor 2017-03-09 15:50:14 +01:00
df72e20cc5 pow: only support prime calculations on Go 1.8 and above 2017-03-09 15:50:14 +01:00
023670f6ba cmd, eth, les, node, pow: disk caching and progress reports 2017-03-09 15:50:14 +01:00
567d41d936 all: swap out the C++ ethash to the pure Go one (mining todo) 2017-03-09 15:50:14 +01:00
3b00a77de5 crypto, pow: add pure Go implementation of ethash 2017-03-09 15:50:14 +01:00
288700c4d8 build: add bootnode to Ubuntu PPAs too (#3766) 2017-03-09 11:02:43 +01:00
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
8cf08e4b25 core/types: use gencodec for JSON marshaling code 2017-03-07 12:45:12 +01:00
eee96a5bb7 rlp: add support for "-" struct tag 2017-03-07 12:45:12 +01:00
667cd518ce internal/jsre/deps: ensure that go generate produces no changes 2017-03-07 12:38:46 +01:00
4c6f4e569e Merge pull request #3755 from ligi/mobile_fix_typo
mobile: Fix typo ( Ethereun -> Ethereum )
2017-03-07 02:35:11 +02:00
9c4fd4e9c9 Makefile: add devtools target 2017-03-07 01:33:05 +01:00
db2698c87c mobile: Fix typo ( Ethereun -> Ethereum ) 2017-03-07 01:30:06 +01:00
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
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
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
2b284e7366 build: fix xgo argument order when building from make 2017-03-03 12:18:44 +02:00
e7030c4bf5 all: update light logs (and a few others) to the new model 2017-03-03 11:41:52 +02:00
a38e1a9c00 core: reorg logs crashed, add a check for corner cases 2017-03-03 09:54:13 +02:00
faf713632c README: fix typo 2017-03-02 18:44:07 +02:00
725c2646a0 Merge pull request #3735 from karalabe/bundle-bootnode
build: bundle the bootnode too into alltools
2017-03-02 16:05:23 +02:00
f2e94ff94b Merge pull request #3727 from karalabe/travis-mips
travis: support building mips32 and mips64 too
2017-03-02 15:49:40 +02:00
090699c0f6 build: bundle the bootnode too into alltools 2017-03-02 15:23:15 +02:00
213b8f9af4 Merge pull request #3722 from fjl/hexutil-text-unmarshal
common/hexutil: implement TextMarshaler, TextUnmarshaler
2017-03-02 15:16:59 +02:00
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
280f08be84 common/hexutil: ensure negative big.Int is encoded sensibly
Restricting encoding is silly.
2017-03-02 14:05:46 +01:00
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
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
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
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
f972691eea travis: support building mips32 and mips64 too 2017-03-02 11:43:06 +02:00
c52ab932e6 cmd/disasm, cmd/evm: integrate disasm tool into evm tool. (#3729) 2017-03-01 13:34:50 +01:00
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
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
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
7ff75ac2f2 cmd/utils, core, params: fork all teh things for dev mode (#3697) 2017-02-28 23:18:13 +01:00
167be7f260 Merge pull request #3725 from karalabe/kill-it-with-fire
errs: kill it with fire
2017-02-28 18:45:44 +02:00
7e3762fdc6 errs: kill it with fire 2017-02-28 18:01:54 +02:00
94c71c171f Merge pull request #3723 from karalabe/logger-updates-2
Logger updates
2017-02-28 16:55:37 +02:00
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
b117da2db3 core/state: drop most of a logs (useless at this volume) 2017-02-28 15:51:30 +02:00
e02883c0a2 core, log: track field length and pad to align 2017-02-28 15:36:51 +02:00
e588e0ca2b all: next batch of log polishes to contextual versions 2017-02-28 15:03:20 +02:00
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
46bcd9a92c core, eth: drop database block splitting upgrader 2017-02-28 13:41:02 +02:00
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
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
96ae35e2ac p2p, p2p/discover, p2p/nat: rework logging using context keys 2017-02-28 10:20:29 +01:00
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
2f28a12cdb common, eth/downloader, log: support terminal log formatting 2017-02-27 19:15:18 +02:00
35e8308bf7 eth, les: shorten genesis block mismatch error message 2017-02-27 17:19:41 +01:00
fc97c7a38d Merge pull request #3717 from tranvictor/master
internal/ethapi: return logsBloom for pending block
2017-02-27 18:11:11 +02:00
48bc07ae97 Merge pull request #3708 from fjl/log-letter
log: fix annoyances
2017-02-27 18:05:50 +02:00
a624ce69f7 internal/ethapi: fixes #2648, returns logsBloom for pending block 2017-02-27 21:45:57 +07:00
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
43362ab4fb log: disable logs by default 2017-02-27 15:32:48 +01:00
38e273597c log: log full level names instead of mispelled "EROR", "DBUG" 2017-02-27 15:32:48 +01:00
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
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
8676aeb798 eth/downloader: review fixes 2017-02-27 13:22:33 +02:00
37511ec520 core, core/vm, cmd/disasm: unify procedures for disassembling evm code (#3530) 2017-02-27 12:21:19 +01:00
46eea4d105 accounts, eth/downloader: use "err" instead of "error" in logs 2017-02-27 13:17:58 +02:00
0a63c3e362 eth/downloader: port over old logs from glog to log15 2017-02-27 13:16:40 +02:00
45c7cfd2e6 vendor: update HID library for glibc < v2.17 build 2017-02-27 12:58:09 +02:00
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
50ee279f25 Merge pull request #3705 from karalabe/drop-legacy-commands
Drop legacy commands
2017-02-24 13:59:56 +02:00
562ccff822 whisper: fixed temporary directory for tests (#3707) 2017-02-24 09:21:01 +01:00
11539030cd whisper: expiry refactoring (#3706) 2017-02-23 18:46:32 +01:00
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
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
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
357732a840 Merge pull request #3696 from karalabe/contextual-logger
Contextual logger
2017-02-23 16:49:05 +02:00
f89dd62776 internal, log: support debug log prints, displaying log origins 2017-02-23 12:16:47 +02:00
1ca20a2697 cmd, whisper/mailserver: revert to utils.Fatalf 2017-02-23 12:16:46 +02:00
23a5d64fd0 accounts, cmd: port packages over to the new logging system 2017-02-23 12:16:46 +02:00
61e6bb1247 eth, les, swarm: fix go vet issues sufraced by log15 2017-02-23 12:16:45 +02:00
d4fd06c3dc all: blidly swap out glog to our log15, logs need rework 2017-02-23 12:16:44 +02:00
47af53f9aa log: implement a glog style pattern matching handler 2017-02-23 12:00:05 +02:00
3f923f3902 swarm: remove superfluous line break in log statements 2017-02-23 12:00:04 +02:00
189dee26c6 p2p: remove trailing newlines from log messages 2017-02-23 12:00:04 +02:00
b9d48b4a93 log: add support for trace level, exit on critical 2017-02-23 12:00:03 +02:00
ec7f81f4bc log, vendor: vendor in log15 inline into our codebase 2017-02-23 12:00:02 +02:00
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
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
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
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
c6e716eb31 travis: only run go vet and misspell on latest Go 2017-02-22 15:40:28 +02:00
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
4ac481b45f core/vm, crypto: support for go-fuzz (#3672) 2017-02-21 10:24:07 +01:00
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
b7f010de52 tests: cleanup tester blockchain after test run (#3692) 2017-02-20 11:54:23 +01:00
a0c011f1a8 travis: fallback ARM64 builds to Go 1.7.5 due to compiler bug 2017-02-20 11:28:55 +02:00
449a850023 travis, appveyor: update builders to Go 1.8 2017-02-20 11:22:56 +02:00
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
037c8b9ae9 VERSION, params: bumped unstable version to 1.6 (#3685) 2017-02-18 09:28:15 +01:00
b19e5885fe core/blockchain: Change iterator in procFutureBlocks to use lru.Peek instead of Get (#3655) 2017-02-18 09:27:21 +01:00
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
bf21549faa common/math: "optimised" SafeMul and added comment on Exp (#3675) 2017-02-17 18:39:43 +01:00
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
6ec8135256 accounts/usbwallet, vendor: use hidapi instead of libusb directly 2017-02-17 12:04:21 +02:00
e94dfb78f8 swarm/api/http: fix go vet issue on Go 1.8 2017-02-17 11:48:26 +02:00
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
2c4455b12a vendor: update dependencies with github.com/kardianos/govendor 2017-02-16 13:44:09 +01:00
c8695fae35 logger: remove Core verbosity level (#3659) 2017-02-15 10:14:44 +01:00
a973d1d523 Merge pull request #3674 from obscuren/gaz64
params: core, core/vm, miner: 64bit gas instructions
2017-02-14 18:59:00 +02:00
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
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
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
4ece9c6cb0 VERSION, params: start 1.5.10 development cycle 2017-02-13 19:02:57 +02:00
a07539fb88 Merge pull request #3671 from karalabe/1.5.9-stable
params: 1.5.9 stable
2017-02-13 18:54:59 +02:00
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
aba016da72 params: 1.5.9 stable 2017-02-13 18:38:21 +02:00
09aef5c0ae Dockerfile: support building USB on Alpine, ignore temp files 2017-02-13 18:31:09 +02:00
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
8883f36fe3 cmd/swarm: handle SIGTERM unix signal for clean exit 2017-02-13 22:15:14 +06:30
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
57f4e90257 Revert "params: core, core/vm, miner: 64bit gas instructions (#3514)"
This reverts commit 8b57c49490.
2017-02-13 15:15:12 +01:00
f8f428cc18 Merge pull request #3592 from karalabe/hw-wallets
accounts: initial support for Ledger hardware wallets
2017-02-13 15:03:16 +02:00
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
65ed6a9def whisper: add tests for mailserver (#3631) 2017-02-13 13:15:20 +01:00
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
c7022c1a0c accounts/usbwallet: detect and report in Ledger is in browser mode 2017-02-13 14:00:11 +02:00
26cd41f0c7 accounts/usbwallet: make wallet responsive while Ledger is busy 2017-02-13 14:00:10 +02:00
fb19846855 accounts/usbwallet: Ledger teardown on health-check failure 2017-02-13 14:00:10 +02:00
205ea95802 accounts, cmd, internal, node: implement HD wallet self-derivation 2017-02-13 14:00:09 +02:00
c5215fdd48 accounts, cmd, internal, mobile, node: canonical account URLs 2017-02-13 14:00:08 +02:00
fad5eb0a87 accounts, cmd, eth, internal, miner, node: wallets and HD APIs 2017-02-13 14:00:07 +02:00
b3c0e9d3cc accounts/usbwallet: two phase Ledger refreshes to avoid Windows bug 2017-02-13 14:00:07 +02:00
470b79385b accounts/usbwallet: support Ledger app version <1.0.2 2017-02-13 14:00:06 +02:00
1ecf99bd0f accounts/usbwallet: skip support on iOS altogether 2017-02-13 14:00:05 +02:00
e0fb4d1da9 build: work around CGO linker bug on pre-1.8 Go 2017-02-13 14:00:04 +02:00
ac2a0e615b accounts/usbwallet: initial support for Ledger wallets 2017-02-13 14:00:04 +02:00
52bd4e29ff vendor: pull in support for USB devices via libusb/gousb 2017-02-13 14:00:03 +02:00
833e4d1319 accounts, cmd, eth, internal, mobile, node: split account backends 2017-02-13 14:00:02 +02:00
564b60520c core: ignore 0x prefix for code in JSON genesis blocks (#3656) 2017-02-13 03:36:50 +01:00
085987ff2c cmd/swarm: manifest manipulation commands (#3645) 2017-02-13 03:33:05 +01:00
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
7ff686d6ec travis: split Android off OSX, use native image 2017-02-10 19:24:37 +02:00
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
6dd27e7cff swarm/storage: release chunk storage after stop swarm (#3651)
closes #3650
2017-02-08 18:01:12 +01:00
d0eeb3ebdc cmd/abigen: parse contract name as abi identifier 2017-02-06 18:16:56 +01:00
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
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
9b5c7153c9 event: use sync.Once for init for faster/cleaner locking 2017-02-03 14:04:57 +02:00
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
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
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
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
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
4f5f90222f params, VERSION: v1.5.9-unstable 2017-02-01 02:14:54 +01:00
f58fb32283 params: v1.5.8-stable 2017-02-01 02:14:04 +01:00
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
690f6ea1d7 cmd/wnode, whisper: add whisper CLI tool and mail server (#3580) 2017-01-31 11:16:20 +01:00
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
e5a93bf99a swarm/api/http: add missing copyright header 2017-01-30 15:21:46 +02:00
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
b8823a8b34 Merge pull request #3623 from kaneshin/patch-1
build: Fix tiny typo
2017-01-29 20:46:55 +02:00
355a42f36d cmd/geth, cmd/swarm: Fix to close file handler appropriately 2017-01-30 01:10:19 +09:00
658bcbcbdc build: Fix tiny typo 2017-01-30 01:09:00 +09:00
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
a390ca5f30 les, cmd/util: disable topic discovery with --nodiscover 2017-01-27 02:52:45 +01:00
c46c41eae3 core/types: add unittest for tx json serialization (#3609) 2017-01-26 21:16:24 +01:00
82aa5b1de6 core: fix a small typo in blockchain.go (#3611) 2017-01-26 16:54:49 +02:00
12379c697a les: remove delayed les server starting 2017-01-26 04:23:53 +01:00
f5348e17f8 les: add unknown peers to server pool instead of rejecting them 2017-01-26 04:23:49 +01:00
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
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
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
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
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
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
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
fc52f2c007 core/types: make Transaction zero value printable (#3595) 2017-01-23 18:51:02 +01:00
0b9070fe01 containers/docker: update ubuntu images to build, not pull 2017-01-23 12:12:38 +02:00
c04598f2b0 containers/docker: update to alpine 3.5, add CA certificates 2017-01-23 11:46:15 +02:00
96778a1c21 crypto/secp256k1: sign with deterministic K (rfc6979) (#3561) 2017-01-22 23:28:47 +01:00
935d891e9d cmd/evm: added debug flag (back) (#3554)
* evm: added debug flag (back)

* cmd/evm: gofmt
2017-01-22 22:14:09 +01:00
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
0126d01435 types: bugfix invalid V derivation on tx json unmarshal (#3594) 2017-01-20 23:32:16 +01:00
946db8ba65 internal/guide: initial test suite to ensure guide snippets run ok (#3582) 2017-01-20 11:50:21 +01:00
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
ebc3d232f4 eth/downloader: fix mutex regression causing panics on fail (#3591) 2017-01-20 01:12:14 +01:00
f087c66f95 Merge pull request #3584 from obscuren/dead-code
core: removal of dead-code
2017-01-18 13:36:21 +02:00
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
d63752ef4d Merge pull request #3579 from bas-vk/natspec
cmd,eth,les,internal: remove natspec support
2017-01-17 14:38:57 +02:00
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
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
230530f5ea accounts, mobile: make account manager API a bit more uniform 2017-01-17 13:25:36 +02:00
17d92233d9 cmd/geth, core: add support for recording SHA3 preimages (#3543) 2017-01-17 12:19:50 +01:00
54a65e6d87 cmd,eth,les,internal: remove natspec support 2017-01-17 12:13:50 +01:00
26d385c18b params, VERSION: 1.5.8 unstable 2017-01-16 11:12:50 +01:00
da2a22c384 params: stable 1.5.7 2017-01-16 10:57:02 +01:00
0fa9a8929c les: fixed transaction sending deadlock (#3568) 2017-01-16 10:51:29 +01:00
2a1a531ba3 Merge pull request #3570 from fjl/hexutil-zero-fix
common/hexutil: fix EncodeBig, Big.MarshalJSON
2017-01-16 11:49:17 +02:00
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
b5a100b859 Merge pull request #3560 from karalabe/ci-misspell
travis, appveyor, build: add source spell checking
2017-01-13 12:16:22 +02:00
54fcab20e3 appveyor, build: fix review requests 2017-01-13 12:04:55 +02:00
a2bc90d1d7 build: spellcheck individual packages (Windows path limits) 2017-01-13 11:22:24 +02:00
c01f8c3d3c accounts/abi: fix comment spelling error 2017-01-13 11:14:47 +02:00
e4181a7f1b travis, appveyor, build: add source spell checking 2017-01-13 11:14:13 +02:00
01f6f2d741 common/hexutil: allow empty strings when decoding JSON (#3559) 2017-01-13 09:45:40 +01:00
c5df37c111 eth: accept leading zeros for nonce parameter of submitWork (#3558) 2017-01-13 00:37:23 +01:00
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
93077c98e4 internal: update web3.js to 0.18.1, embed deps with go-bindata (#3545) 2017-01-12 21:28:35 +01:00
3dab303826 Merge pull request #3555 from obscuren/unskip-test
tests: unskip test
2017-01-12 12:08:56 +02:00
3160fd24ba tests: unskip test 2017-01-12 10:32:21 +01:00
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
745a3adebd core: remove support for Olympic network 2017-01-12 09:50:54 +01:00
218ec6c085 Merge pull request #3551 from fjl/core-import-log-align
core: improve import log alignment
2017-01-11 14:53:54 +02:00
d30d7800e0 ethdb: Implement interface for prefixed operations to the DB (#3536) 2017-01-11 13:26:09 +01:00
8820d97039 internal/ethapi: fix duration parameter of personal_unlockAccount (#3542) 2017-01-11 13:20:24 +01:00
b52fde7cf7 Merge pull request #3546 from fjl/deps-update
vendor: update dependencies
2017-01-11 12:14:08 +02:00
2b4d0b6ff9 Merge pull request #3548 from fjl/geth-fix-bootnodes
cmd/utils: fix comma-separated --bootnodes
2017-01-11 10:59:14 +02:00
21f1370d2a core: improve import log alignment 2017-01-10 23:14:08 +01:00
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
445deb7470 cmd/utils: fix comma-separated --bootnodes 2017-01-10 21:13:43 +01:00
02b67558e8 Merge pull request #3535 from fjl/all-ineffassign
all: fix ineffectual assignments
2017-01-09 23:53:17 +02:00
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
d056b7fa52 params, VERSION: start 1.5.7 release cycle 2017-01-09 17:45:49 +02:00
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
1d5d6616ae params: stable version 1.5.6 2017-01-09 17:30:35 +02:00
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
0f34d506b5 generators: delete dead code
We don't use this anymore.
2017-01-09 16:12:54 +01:00
5eccc122e8 build, node: fix go vet nits 2017-01-09 16:12:54 +01:00
681b51aac4 Merge pull request #3519 from zsfelfoldi/light-topic5
les: fixed selectPeer deadlock, improved request distribution
2017-01-09 16:58:23 +02:00
4268cb8efe Merge pull request #3534 from bas-vk/writemipmaprace
core: fix race condition in WriteMipmapBloom
2017-01-09 16:58:05 +02:00
3f1a72908c cmd/swarm: uploader uses HTTP PUT for directories (#3488) 2017-01-09 15:19:56 +01:00
2fed476ce1 core: fix race condition in WriteMipmapBloom 2017-01-09 15:35:58 +02:00
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
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
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
47372813ef accounts/abi: fixed comments 2017-01-09 11:36:33 +02:00
fc213c873d accounts/abi: added testcase to unpack []uint32 2017-01-09 11:36:32 +02:00
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
808310a569 node: fix pointer dereference issue in StartRPC (#3532) 2017-01-08 15:55:37 +01:00
0a5450fe04 cmd/disasm: fix array-out-of-bounds error (#3491) 2017-01-08 01:18:22 +01:00
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
17182732f5 Merge pull request #3526 from karalabe/misspell
all: fix spelling errors
2017-01-06 20:03:44 +02:00
18c77744ff all: fix spelling errors 2017-01-06 19:44:35 +02:00
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
13e3b2f433 logger, pow/dagger, pow/ezp: delete dead code 2017-01-06 18:18:07 +01:00
f2da6581ba all: fix issues reported by honnef.co/go/simple/cmd/gosimple 2017-01-06 18:18:07 +01:00
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
b56aee3697 mobile: rename passphrase signing method to avoid Swift rewrite 2017-01-06 17:47:15 +02:00
35a7dcb162 all: gofmt -w -s 2017-01-06 15:52:03 +01:00
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
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
8f9daaa3ba Merge pull request #3518 from fjl/ethclient-dependency-cleanup
core/types: dependency cleanup
2017-01-06 15:42:03 +02:00
d3b751e4d9 trie: remove dependency on ethdb
This removes the core/types -> leveldb dependency.
2017-01-06 14:15:22 +01:00
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
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
66979aa468 light: fixed data race in TestTxPool 2017-01-06 04:34:35 +01:00
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
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
9b135a9c20 build: finally settle on empty iOS ObjC package prefixes 2017-01-05 14:32:30 +02:00
e171bf74f8 core/types: remove redundant SignECDSA wrappers, rename to SignTx 2017-01-05 12:59:17 +01:00
bb2e99dfc2 Merge pull request #3417 from karalabe/mobile-polishes
Account management API polishes
2017-01-05 13:57:12 +02:00
b37d175e59 accounts, internal, mobile: polish accounts API, extend Android tests 2017-01-05 12:58:03 +02:00
f087633efd swarm/api/http: add support for CORS headers (#3388) 2017-01-05 11:57:41 +01:00
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
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
06b381d1c9 cmd/utils: disallow --fakepow for live operation (#3512) 2017-01-05 11:40:56 +01:00
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
a1798a8188 core,cmd/utils: bugfix for ropsten dump imports 2017-01-05 11:31:57 +01:00
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
1ca74aba6f Merge pull request #3505 from bas-vk/txinblock
ethclient: hex encode request args for TransactionInBlock
2017-01-04 12:43:27 +02:00
2ce30382d9 cmd/utils, eth, les: bubble --fakepow flag into eth/les too 2017-01-04 10:42:41 +02:00
8bc545be2a ethclient: hex encode request args for TransactionInBlock 2017-01-03 14:46:00 +01:00
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
bd06091874 mobile: add SetVerbosity (#3492) 2017-01-02 18:12:31 +01:00
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
89a32267f7 eth: fix miner start API to accept int, not hexint 2016-12-23 11:28:11 +02:00
021177ca9b ethclient: pass ptr when parsing eth_getTransactionByHash result 2016-12-22 14:45:01 +01:00
115364b0a9 Merge pull request #3475 from fjl/rpc-hex-improvements
rpc: remove HexBytes, HexNumber
2016-12-22 13:49:16 +02:00
6d15d00ac4 accounts/abi: add support for "anonymous" and "indexed" for events (#3464) 2016-12-22 01:51:20 +01:00
bdaa43510b cmd/disasm: fix off-by-one error and improve error handling (#3482) 2016-12-22 00:37:27 +01:00
9a51f5c350 swarm/http: check error returned by reader.Size (#3470) 2016-12-22 00:35:05 +01:00
301c0a6303 swarm/storage: call size before seek-from-end (#3469) 2016-12-22 00:34:05 +01:00
65f486ff02 swarm/api: check for zero length manifest error (#3468) 2016-12-22 00:32:08 +01:00
df096a7771 Merge pull request #3479 from karalabe/android-ropsten-dao
mobile: fix ropsten chain configs
2016-12-21 13:25:00 +02:00
0e9a9f243f mobile: fix ropsten chain configs 2016-12-21 13:10:57 +02:00
12c964b2b7 internal/ethapi: fix hex handling for eth_call input and eth_sendRawTransaction 2016-12-20 14:46:22 +01:00
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
adab2e16bd rpc: remove HexBytes, replace all uses with hexutil.Bytes 2016-12-20 14:35:26 +01:00
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
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
0ee796632a eth, miner: verify PoW in the remote agent to notify submitter (#3438) 2016-12-20 02:14:36 +01:00
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
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
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
4d05bbf2a4 accounts/abi: clean up PR and add type parsing tests 2016-12-19 14:11:11 +02:00
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
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
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
c44830ebf3 core, light: allow zero cost txs from inexistent accounts too 2016-12-16 13:30:39 +02:00
3e4a04f34d internal/ethapi: fix hex handling for eth_sign, personal_{sign,recover} 2016-12-16 11:32:51 +01:00
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
21fd9f037e p2p/nat: fix a bytes based net.IP comparison 2016-12-15 16:28:31 +02:00
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
2573094df2 p2p/discover, p2p/discv5: use flexible comparison for IPs 2016-12-14 18:40:49 +02:00
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
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
9d6f4e2e7f VERSION, params: start Geth 1.5.6 development cycle 2016-12-14 16:27:35 +02:00
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
e53879328c params: stable version 1.5.5 2016-12-14 15:57:44 +02:00
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
49c6f1053c Merge pull request #3421 from ethersphere/s/swarm-cmd
cmd/swarm: one command  with subcommands
2016-12-14 12:26:20 +02:00
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
8941665896 build: Ubuntu wily was officially deprecated, drop support 2016-12-14 11:45:14 +02:00
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
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
9ba9fe818d cmd/utils, eth: Add gzip support for chain dump and restore 2016-12-14 08:59:55 +00:00
92224d27b1 cmd/swarm: testnet bootnodes IP address change 2016-12-14 08:14:52 +01:00
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
29d6881112 travis, appveyor: build with Go 1.7.4 2016-12-13 19:54:56 +02:00
e2692921e1 Merge pull request #3434 from karalabe/drop-legacy-android
cmd/geth: drop legacy android code
2016-12-13 18:53:06 +02:00
b63138c3ec cmd/geth: drop legacy android code 2016-12-13 18:17:49 +02:00
a59fcc33e6 core: import future blocks one-by-one, enfore chain ancestry 2016-12-13 16:19:45 +02:00
07311f3157 miner: rename pending to unconformed, add bounds and ops tests 2016-12-13 15:10:52 +02:00
17637ed1bb miner: clean up unconfirmed mined block tracking 2016-12-13 14:31:32 +02:00
f15828e901 Merge pull request #3431 from karalabe/miner-race-fixes
Miner race fixes
2016-12-13 14:30:26 +02:00
dadd689359 miner: fix data race on setting etherbase/extradata 2016-12-13 14:04:05 +02:00
b750cab56a miner: fix a race between remote agent start/loop 2016-12-13 14:03:57 +02:00
485748c416 cmd/swarm: improve uploader output and add defaultpath option 2016-12-13 12:54:13 +01:00
080699f7df cmd/swarm: ethapi not required 2016-12-13 12:54:13 +01:00
8e35f54931 cmd/swarm: trim trailing slash from bzzapi url 2016-12-13 12:54:13 +01:00
d44f1a77ee cmd/swarm: add default bootnodes for testnet 3 2016-12-13 12:54:13 +01:00
4181046488 swarm/network, cmd/swarm: swarm default network id is 3 (to match Ropsten) 2016-12-13 12:54:13 +01:00
d7c398b638 build: add swarm command to binary packages, update README 2016-12-13 12:54:13 +01:00
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
9f1520b4c0 core: init pending state in tx pool on creation 2016-12-13 10:38:04 +01:00
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
ee445a2ba4 Merge pull request #3425 from karalabe/netstats-time-fixup
netstats: time and block history
2016-12-12 14:55:00 +02:00
b2c226cb7d ethstats: implement block history retrievals 2016-12-12 14:01:52 +02:00
13614f4e1c ethstats: fix timestamps and add custom proto support 2016-12-11 20:16:30 +02:00
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
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
f12f8a6c14 les, light: add block availability check for ODR requests 2016-12-10 09:53:25 +01:00
c57c54ce96 eth, les: defer starting LES service until ETH initial sync is finished 2016-12-10 09:53:25 +01:00
c8130df1d9 les: using random request IDs 2016-12-10 09:53:25 +01:00
af8a742d00 les: improved header fetcher and server statistics 2016-12-10 09:53:08 +01:00
e67500aa15 les: fixed light fetcher request ID matching 2016-12-08 13:38:15 +01:00
a6d3bf6fc3 p2p/discv5: search and lookup improvement 2016-12-08 13:38:15 +01:00
3e617f3cd6 les: implement light server pool 2016-12-08 13:38:15 +01:00
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
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
7f79d249a6 Merge pull request #3402 from fjl/ethclient-api-fixes
eth/filters, ethclient, ethereum: API improvements
2016-12-05 20:08:18 +01:00
f138374027 ethereum: document use of Removed field for SubscribeFilterLogs 2016-12-05 10:57:11 +01:00
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
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
fa0cc27400 ethclient: use package hexutil for number encoding 2016-12-04 19:45:55 +01:00
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
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
671fd94e25 swarm/api: Update ENS root address for Ropsten & prod (#3391) 2016-12-01 19:33:10 +01:00
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
8cb95cb916 README: removed develop mentions 2016-11-30 19:39:05 +01:00
56b446190a ethstats: check if received event is valid 2016-11-30 17:47:39 +01:00
86f9e836be cmd/geth: tidied up the source (#3385)
cmd/geth: tidied up the source
2016-11-30 13:34:24 +02:00
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
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
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
3363a1c227 cmd/utils: update helpscreen's testnet description (#3377) 2016-11-29 16:23:11 +02:00
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
7267f796e6 cmd: drop DAO related choice flags since ETC diverged 2016-11-29 15:50:27 +02:00
7dfeceb8cc ethstats: don't drop concurrent head reports (mini forks) 2016-11-29 14:17:20 +02:00
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
7625b1a4f4 ethstats: report block miner, gas limit and gas consumption 2016-11-29 11:39:56 +02:00
1fc5cc1b59 node: improve error handling for web3_sha3 RPC method 2016-11-29 09:36:51 +01:00
61ccb43487 core/types: Document Transaction.To (#3366) 2016-11-28 21:56:38 +01:00
bf24b120d7 VERSION, params: bump unstable version 1.5.5 (#3361) 2016-11-28 15:09:12 +01:00
b70acf3c5b params: stable version 1.5.4 (#3360) 2016-11-28 14:59:26 +01:00
b5be6b72cb eth/filter: add support for pending logs (#3219) 2016-11-28 14:59:06 +01:00
318ad3c1e4 common/hexutil: fix Test{Decode,Unmarshal}Uint64 on 32bit arch (#3363) 2016-11-28 13:55:56 +01:00
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
8d0108fc5d Merge pull request #3355 from fjl/hexutil-2
Improve hex encoding/decoding
2016-11-28 13:29:16 +02:00
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
f81660b6db build: use single CocoaPods package, pre-release dev builds 2016-11-28 13:09:43 +02:00
91bceb4ace ethclient: "addresses" -> "address" in filter query encoding 2016-11-28 11:37:13 +01:00
be746628c7 eth/filters: simplify query object decoding 2016-11-28 11:37:13 +01:00
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
37e5816bcd common: use package hexutil for fixed size type encoding 2016-11-28 11:37:13 +01:00
665bb43a4c light: implemented VMState.Empty() (#3357) 2016-11-28 11:31:15 +01:00
e4bf004560 build/ci: add swarm related executables (bzzd, bzzup, bzzhash) to binary packages (#3354) 2016-11-28 11:25:19 +01:00
1609df3275 ethclient: use package hexutil for JSON handling 2016-11-28 11:22:52 +01:00
24f288770e core/types: use package hexutil for JSON handling 2016-11-28 11:22:52 +01:00
65e6319b12 core/vm: use package hexutil for JSON handling 2016-11-28 11:22:52 +01:00
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
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
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
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
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
6061707371 core: eip unit tests (#3309) 2016-11-28 01:33:28 +01:00
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
4c8c5e2f74 cmd, ethstats, les, mobile, params: native netstats (#3336) 2016-11-25 16:55:06 +01:00
d1a95c643e Merge pull request #3325 from fjl/p2p-netrestrict
Prevent relay of invalid IPs, add --netrestrict
2016-11-25 13:59:18 +01:00
9c3ea0d32d Merge pull request #3346 from obscuren/registrar-removal
common/registrar, eth: removed registrar (tech debt)
2016-11-25 14:22:53 +02:00
67e0894d9e common/httpclient, les: removed httpclient 2016-11-25 13:10:44 +01:00
6cc87a31c6 cmd/utils, internal/web3ext: removed httpGet 2016-11-25 12:31:06 +01:00
b8c766a9c5 eth: removed http doc backend api 2016-11-25 12:17:10 +01:00
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
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 6ca8f57b08)
2016-11-25 12:15:28 +01:00
01d5fc670b internal/web3ext: remove registrar-related extensions
(cherry picked from commit d54ad55c60)
2016-11-25 12:15:12 +01:00
0f1cbfd3da Makefile, build: do proper mobile builds, not cross builds 2016-11-25 12:51:10 +02:00
586f10ecb1 cmd/utils, VERSION: 1.5.4 unstable 2016-11-24 23:06:25 +01:00
978737f5d5 cmd/utils: 1.5.3 stable 2016-11-24 23:03:13 +01:00
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
bca7bfa927 tests: update from github.com/ethereum/tests @ f21c49dc816e 2016-11-24 22:54:50 +01:00
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
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
f59d8cde26 Merge pull request #3337 from karalabe/core-driveby-cleanup
core: remove dead event
2016-11-24 15:34:51 +02:00
94c0519be2 miner: remove dead code, add gas price getter 2016-11-24 15:24:49 +02:00
529c502876 core: remove dead event 2016-11-24 15:23:01 +02:00
c04c8f10f0 core: improved bad block error reporting (#3320) 2016-11-23 13:32:25 +01:00
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
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
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
2b4c236773 build: remove hash metadata from cocoapod version 2016-11-23 10:49:25 +02:00
a8ca75738a core: implemented new ropsten testnet 2016-11-23 09:34:01 +01:00
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
e5edd3b983 cmd/bootnode, cmd/geth, cmd/bzzd: add --netrestrict 2016-11-22 22:21:18 +01:00
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
e46bda5093 swarm/network: prevent relay of invalid IPs 2016-11-22 22:21:18 +01:00
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
ba2884f343 p2p/discover, p2p/discv5: use netutil.IsTemporaryError 2016-11-22 22:21:15 +01:00
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
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
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
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
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
0d9a8207d6 cmd/bzzup: trim directory in the manifest entry path (#3299) 2016-11-18 14:41:37 +01:00
04edbb0703 node: Remove redundant filepath.Join in parsePersistentNodes (#3300) 2016-11-18 12:45:06 +01:00
e1c1fce92c cmd/utils, VERSION: 1.5.3 unstable (#3306) 2016-11-18 12:33:47 +01:00
c8695209f6 core: Don't perform EIP150 hash check on uncles (#3303) 2016-11-18 12:01:54 +01:00
9b95112a2d cmd/utils: Set version string to stable (#3304) 2016-11-18 11:57:48 +01:00
a602c57c8d README: add documentation for bzz related executables to the table (#3294) 2016-11-18 11:56:27 +01:00
f3228592f5 travis: dash of black magic to summon the cache daemon (#3288) 2016-11-17 16:15:17 +01:00
87b8254da1 Dockerfile: Add git dependency to Dockerfile (#3295) 2016-11-17 15:38:14 +01:00
20eab80189 cmd/utils, VERSION: 1.5.2 unstable 2016-11-17 14:40:32 +01:00
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
3badd3782b Merge pull request #3280 from fjl/fix-go15
build: set GO15VENDOREXPERIMENT in env.sh
2016-11-16 13:07:44 +01:00
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
b81baf5423 utils: bump stable 2016-11-16 10:46:22 +01:00
64359c9417 cmd/utils, mobile, params: set the correct field on testnet EIP 155 (#3272) 2016-11-16 00:46:40 +01:00
5a3853f83f travis: only install the needed three android platforms (#3274) 2016-11-16 00:44:37 +01:00
532d746036 Merge pull request #3275 from obscuren/les-print-fix
les: fixed logging
2016-11-16 00:08:47 +02:00
c66e18b175 Merge pull request #3271 from Arachnid/dockerfiles
Dockerfile revamp
2016-11-15 22:54:51 +01:00
2d4bd3b3ad les: fixed logging 2016-11-15 22:48:00 +01:00
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
504815091f containers/docker: Fix dockerfiles for new branch layout; add dockerfile in root 2016-11-15 17:57:56 +00:00
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
4c614909ff README: update for develop->master switch, remove old build table 2016-11-15 15:53:35 +01:00
b0a23c73cf VERSION: bump unstable version to 1.5.1 2016-11-15 15:46:51 +01:00
922c1f8f9f Merge pull request #3260 from obscuren/version-1-5-1
utils: unstable 1.5.1
2016-11-15 14:33:14 +01:00
c3c58eb601 Merge pull request #3259 from obscuren/version-1-5-0
utils: stable 1.5.0
2016-11-15 14:29:33 +01:00
ce3c52d17d Merge pull request #3268 from fjl/build-master-unstable
build: master is unstable
2016-11-15 14:29:22 +01:00
6663d0264e build: master is unstable 2016-11-15 14:11:27 +01:00
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
8e704d9718 travis.yml: upload to the real PPA 2016-11-15 11:13:07 +01:00
5bd32bd90d travis: force xcode to finish iOS simulator configs (#3265) 2016-11-15 10:44:54 +01:00
b9f417e2e6 params: hardfork blocknumber (#3264) 2016-11-15 10:43:23 +01:00
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
2cb9738649 travis, build: further maven and gpg refinements 2016-11-15 10:25:51 +02:00
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
dfd2c60509 travis, build: fix mobile build issues on travis 2016-11-15 09:49:00 +02:00
fd27393df3 utils: unstable 1.5.1 2016-11-15 00:40:40 +01:00
233950da40 utils: stable 1.5.0 2016-11-15 00:39:12 +01:00
bd0aafb4fd Merge pull request #3258 from karalabe/unfuckup-travis
travis: work around "timeout features"
2016-11-15 01:17:12 +02:00
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
99d0d771a7 travis: work around "timeout features" 2016-11-14 20:10:22 +02:00
8dcea0ac07 Merge pull request #2977 from karalabe/initial-mobile-suport
mobile: initial wrappers for mobile support
2016-11-14 18:10:03 +01:00
7a6c6ec946 cmd/utils, params: define chain ids 2016-11-14 17:23:39 +01:00
dfe79cc784 cmd/utils, mobile: place bootnodes in LGPL packages 2016-11-14 18:00:14 +02:00
4a439c2359 mobile: port wrappers to EIP155 and EIP158 fork 2016-11-14 18:00:14 +02:00
4c16c82500 travis, build: cocoapods build fixes and travis caches 2016-11-14 18:00:14 +02:00
5513c49c54 accounts/abi/bind, mobile: review fixes and android tests 2016-11-14 18:00:14 +02:00
b61f48e5aa cmd, mobile, node, p2p: surface the discovery V5 bootnodes 2016-11-14 18:00:14 +02:00
de4b39a1a3 cmd/utils, mobile: update to reprice HF and light client 2016-11-14 17:56:58 +02:00
322502b441 build: iOS XCode framework build and upload 2016-11-14 17:56:58 +02:00
b7dfd333c5 .travis, build: Build step to push .aar to Maven Central 2016-11-14 17:56:58 +02:00
178da7c6a9 mobile: initial wrappers for mobile support 2016-11-14 17:56:58 +02:00
d89ea3e6f9 Merge pull request #3253 from zsfelfoldi/light-topic3
Light client bugfixes and updates
2016-11-14 16:56:27 +01:00
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
b10bcd924b core/types: turn off nonce checking for Call messages 2016-11-14 14:16:06 +01:00
d8e2e9a41f light: updated CHTs for mainnet and testnet 2016-11-14 13:22:19 +01:00
1f70b279ba p2p/discv5: added new bootnodes 2016-11-14 13:22:19 +01:00
e33e57684f p2p/discv5: fixed bootnode connect issues 2016-11-14 13:22:19 +01:00
a0c6649960 les/flowcontrol: fixed locking scheme 2016-11-14 13:22:19 +01:00
ca73dea3b9 Merge pull request #3179 from obscuren/eip-158
EIP158 & 160 Hardfork
2016-11-14 10:52:02 +01:00
648bd22427 core/vm/runtime: fixed go vet 2016-11-13 23:26:10 +01:00
0231d8f86d core, params: EIP#170 2016-11-13 23:26:10 +01:00
a91908e567 tests: updated 2016-11-13 23:26:07 +01:00
ae33883c2f cmd/utils: set temporary HF number 2016-11-13 15:50:32 +01:00
4dca5d4db7 core/types, params: EIP#155 2016-11-13 14:55:30 +01:00
21701190ac les: cleaned up logging (#3256) 2016-11-13 12:34:50 +01:00
5cd86443ee tests: added new EIP158 tests 2016-11-13 10:44:06 +01:00
779ddb1832 core/vm, params: EIP160: EXP reprice 2016-11-13 10:44:04 +01:00
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
932d973e36 Merge pull request #3248 from zsfelfoldi/light-topic3
Topic discovery bugfix
2016-11-11 06:28:33 +01:00
9eb6f627fa Merge pull request #3247 from fjl/bzzd
cmd: add swarm command line tools
2016-11-11 06:13:16 +01:00
323c2d6775 les: add missing nil check and handle quit in findServers 2016-11-11 03:16:46 +01:00
09baeec0da discv5: fixed state machine lockup bug 2016-11-11 03:10:46 +01:00
8247bccf71 cmd/bzzhash: add swarm hashing tool 2016-11-11 00:15:21 +01:00
bbf37c0404 cmd/bzzup: add swarm upload tool 2016-11-11 00:15:21 +01:00
e336b0d60e cmd/bzzd: add swarm server daemon 2016-11-11 00:15:21 +01:00
5cd4430a8d swarm/api/http: reject requests without content-length 2016-11-11 00:15:21 +01:00
23420ff67a swarm/network: skip TestSyncDb 2016-11-11 00:15:21 +01:00
ef50e01c5e swarm/api: add bzz prefix to swarm directory 2016-11-11 00:15:20 +01:00
cc0064b267 node: add InstanceDir method 2016-11-10 17:47:07 +01:00
1aaa599147 accounts: add Find method 2016-11-10 17:46:45 +01:00
d27472cc74 cmd/v5test: delete the v5test tool 2016-11-10 17:46:45 +01:00
80ea44c485 cmd/geth: improve command help messages (#3227) 2016-11-10 13:00:09 +02:00
dba29970d7 Merge pull request #3244 from karalabe/reinstate-cache
cmd/geth: reinstate dropped --cache flag
2016-11-09 19:21:30 +02:00
4cd2617848 cmd/geth: reinstate dropped --cache flag 2016-11-09 19:18:20 +02:00
5b31794dfe cmd/geth: use a loop in TestDAOForkBlockNewChain (#3222) 2016-11-09 03:15:48 +01:00
355f4b0c15 Merge pull request #3232 from zsfelfoldi/light-topic3 2016-11-09 03:09:05 +01:00
bbb5e5d56a les: print 'experimental feature' warning on startup 2016-11-09 02:51:34 +01:00
b8bd9a71c8 all: update license information 2016-11-09 02:51:34 +01:00
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
0f19cbc6e5 p2p/discv5: fix build with Go 1.5, delete package testimg 2016-11-09 02:18:48 +01:00
49da42983a p2p/discv5: added new topic discovery package 2016-11-09 02:12:53 +01:00
7db7109a5b cmd, eth: added light client and light server modes 2016-11-09 02:12:53 +01:00
9f8d192991 les: light client protocol and API 2016-11-09 02:12:53 +01:00
760fd65487 light: light chain, VM env and tx pool 2016-11-09 02:12:53 +01:00
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
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
6707f70b4a Merge pull request #3241 from karalabe/fix-pgp-signer
internal/build: call correct signer method
2016-11-08 11:04:53 +02:00
df30ef5177 internal/build: call correct signer method 2016-11-08 10:59:19 +02:00
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
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
328f0dd631 build: fix missing .exe executable names on cross builds 2016-11-07 12:18:28 +02:00
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
052918a6d9 appveyor: build 386 too, upload both to the gethstore 2016-11-07 00:13:45 +02:00
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
0b8a14fed7 console: enable multiline mode 2016-11-03 19:57:04 +01:00
ac9013162e vendor: update github.com/peterh/liner 2016-11-03 19:51:19 +01:00
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
d0c820acd6 Merge pull request #3226 from karalabe/azure-gethstore
travis, build: implement uploading archives to azure
2016-11-03 10:41:20 +01:00
2f9f2cbb19 travis, build: enable 386 builds too for linux and osx 2016-11-03 10:32:58 +02:00
bad0de0dcb vendor: pull in azure sdk and openpgp signer 2016-11-03 10:32:57 +02:00
3b62c145f8 travis, build: implement uploading archives to azure 2016-11-03 10:32:53 +02:00
3914e82f17 Merge pull request #3225 from kenji-isuntv/develop
common/math: go fmt
2016-11-02 18:38:22 +02:00
b522b788b6 common/math: go fmt 2016-11-02 22:58:59 +08:00
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
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
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
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
e1b4acfb6e eth/downloader: clear pending requests when switching trie root 2016-11-01 12:53:33 +02:00
d85d3c74db internal/debug, internal/ethapi, rpc, swarm/storage: Ran "go fmt" 2016-11-01 18:40:36 +08:00
8ecee175f2 eth/downloader: lower a state sync log level (users freak out) 2016-10-31 18:28:03 +02:00
8b10617bba eth/downloader: reduce fast sync block requirements, fix test 2016-10-31 17:26:44 +02:00
90b16a3e85 core/state, eth/downloader, trie: reset fast-failure on progress 2016-10-31 14:19:14 +02:00
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
b8dec948d4 Merge pull request #3215 from fjl/weird-files
all: remove weird files
2016-10-30 12:25:00 +02:00
87670a7ac1 all: remove weird files 2016-10-30 11:02:34 +01:00
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
f0dbec0c93 cmd, params: only set default fork configs for test and mainnet 2016-10-29 17:07:07 +03:00
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
8639b0fae9 cmd/utils, core, params: explicitly pick reprice fork for fast sync 2016-10-29 12:10:00 +03:00
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
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
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
7770304576 ethclient: changed TransactionByHash to only pass one argument to api method (#3209)
Fixes #3203
2016-10-27 23:10:24 +02:00
890ffa05f8 Merge pull request #3189 from fjl/leveldb-update
Update goleveldb, add debug.chaindbCompact
2016-10-21 19:14:11 +03:00
89014b4524 core/vm: Ignore EnableJit ChainConfig setting (#3166) 2016-10-21 17:35:03 +02:00
f8608a5228 trie: while fast syncing, don't keep trie nodes in memory (#3186) 2016-10-21 17:34:17 +02:00
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
53db80da89 eth/downloader: fix a data race in a log output 2016-10-21 13:09:27 +03:00
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
1291778032 cmd/geth, code, eth/downloader: tune import logs and mem stats 2016-10-21 12:23:39 +03:00
b930baa580 Godeps: update github.com/syndtr/goleveldb to 6b4daa5362 2016-10-20 14:56:34 +02:00
66ee2dec53 internal/ethapi: add debug.chaindbCompact 2016-10-20 14:37:01 +02:00
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
88a593d559 cmd/geth, trie: report on trie cache unloads, also add debug log 2016-10-19 17:31:19 +03:00
5d9bb0a050 trie: add metric to track cache unloading (#3175) 2016-10-19 16:07:19 +02:00
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
d48e6ae66f trie: make the cache miss counter a real metric 2016-10-19 15:22:37 +02:00
4f46bd19d0 cmd, core/state: allow configurable trie cache generations 2016-10-19 14:55:13 +03:00
ca49510e6d Merge pull request #3168 from benjaminbrent/develop
core/vm: fix GASPRICE string (resolves #2553)
2016-10-19 13:36:13 +02:00
25ac04a444 Merge pull request #3153 from fjl/trie-unload-fix
trie: improve cache unloading mechanism
2016-10-19 13:35:49 +02:00
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
2bb5ec1e41 cmd/geth, trie: track and report trie cache misses 2016-10-19 14:12:35 +03:00
55522373fd core/vm: fix GASPRICE string (resolves #2553) 2016-10-19 15:55:34 +11:00
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
5b262ff5ab Merge pull request #3156 from holiman/metrics-blocks
core: Add block processing time metric collection
2016-10-18 13:26:31 +02:00
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
a1c63e8be6 cmd/geth: compact and print database stats after an import 2016-10-18 13:45:16 +03:00
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
64500ab0fa common, core, eth/downloader: adjust import log formatting 2016-10-18 13:16:36 +03:00
00b853418e core: Add block processing time metric collection 2016-10-18 09:29:50 +02:00
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
44f419ec0f core/state: bump trie cache values slightly 2016-10-18 04:57:47 +02:00
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
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
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
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
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
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
f2be249385 params: set reprice block number to 2463000 2016-10-15 00:36:49 +02:00
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
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
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
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
182d9cb752 core: add global (soft) limits on the pending transactions 2016-10-14 15:57:58 +03:00
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
9e9bfc4e26 metrics, internal/debug: Add --pprofaddr flag, expose metrics via gexp 2016-10-14 12:29:08 +01:00
f63c6c008f Merge pull request #3133 from ethersphere/http-fix
swarm: fix http API's last problems
2016-10-13 12:43:57 -07:00
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
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
c780901cd5 Merge pull request #3120 from obscuren/reporter-fix
core: fixed import reporter
2016-10-12 20:14:19 +02:00
ca419f3cd8 core: fixed import reporter 2016-10-11 00:16:08 +02:00
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
be6a3696a9 Merge pull request #3104 from fjl/core-import-log
core: print import stats more often
2016-10-10 20:38:27 +02:00
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
16d8397e30 core: lower transaction pool max queue limit 2016-10-10 15:32:06 +02:00
1a6682c21d internal/ethapi, internal/web3ext: adds raw tx retrieval methods 2016-10-10 12:57:15 +03:00
82b14a05f2 eth: move "timed out DAO fork check, dropping" to debug level 2016-10-07 21:03:38 +02:00
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
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
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
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
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
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
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
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
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
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
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
e482b5694f eth: monitor malicious header retrieval requests 2016-10-05 16:34:07 +03:00
6c959207db internal/ethapi: bugfix gas price and limit swapped in eth_resend 2016-10-05 14:21:03 +02:00
71e8ae01b8 core/types: renamed receiptRoot to receiptsRoot 2016-10-05 12:24:42 +02:00
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
82e09c17a9 internal/build: fix git tag env variable for AppVeyor 2016-10-03 17:19:43 +02:00
ae341b31c8 rpc: set CORS Max-Age to reduce preflight OPTIONS requests 2016-10-03 20:24:58 +07:00
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
b4b5921dd0 internal/build: use less edgy command to get the branch name 2016-10-03 10:22:14 +02:00
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
b7159818f9 core/state: track dirty state entries for each object 2016-10-03 10:48:01 +03:00
d4b55fc5b2 Merge pull request #3066 from fjl/build-env
build: improve debian packaging
2016-10-02 14:44:30 +03:00
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
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
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
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
cb84e3f029 cmd, core, internal, light, tests: avoid hashing the code in the VM 2016-10-01 16:01:58 +03:00
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
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
b4cc8cbac4 Merge pull request #3032 from Gustav-Simonsson/keystore_padding
accounts: left pad keybytes-to-encrypt
2016-09-30 11:30:54 +02:00
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
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
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
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
afecb93e2e p2p/nat: fix parameter order for AddMapping 2016-09-28 12:11:58 +02:00
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
710435b51b core, eth, trie: reuse trie journals in all our code 2016-09-28 11:27:31 +03:00
cd791bd855 core, trie: replace state caches with trie journal 2016-09-28 11:27:28 +03:00
7cc6b801e0 accounts: left pad keybytes-to-encrypt, add 30/31 byte keys tests 2016-09-27 13:07:33 -04:00
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
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
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
61734cc7ae Merge pull request #3041 from fjl/build-less-parallel
build: limit test concurrency
2016-09-26 16:31:10 +03:00
0951524ca2 travis.yml: remove go 1.4 builder 2016-09-26 13:48:15 +02:00
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
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
06ac31cf1a accounts/abi: fix typo in the comment (dummy commit) 2016-09-26 13:40:28 +03:00
2e14aff80f Merge pull request #3037 from karalabe/state-caching
State caching
2016-09-26 11:20:47 +03:00
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
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
25ed5fedda core/state: short-circuit balance change if zero value 2016-09-26 01:26:54 -04:00
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
f85f46461f Merge pull request #3021 from bas-vk/ethclient-logs
ethclient: bugfix retrieving logs
2016-09-21 15:08:14 +02:00
5bb517355e ethclient: bugfix retrieving logs 2016-09-21 14:10:11 +02:00
22eea17b06 light: fix memory expansion bug (same as fix for core/state) 2016-09-19 15:26:55 -04:00
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
b6b17e5648 core/state, light: remove unused StateObject.initCode 2016-09-19 02:16:58 -04:00
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
581b320b9d core/state: Fix memory expansion bug by not copying clean objects 2016-09-19 08:57:08 +08:00
b42a5b118f common, node: move datadir defaults into package node 2016-09-16 15:24:31 +02:00
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
52ede09b17 ethdb: add accessor for database directory 2016-09-16 15:24:31 +02:00
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
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
30860491ba cmd, eth: drop the blockchain version from cli/eth configs 2016-09-15 14:09:47 +03:00
0f6f83a709 Merge pull request #2983 from bas-vk/txindex
miner: set tx index logs
2016-09-14 21:05:17 +02:00
e3fe634f99 miner: set tx index logs 2016-09-12 11:33:25 +02:00
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
b7f6404168 Merge pull request #2984 from karalabe/fix-head-sub
core/types, ethclient: fix broken subscriptions
2016-09-09 16:20:52 +02:00
b6b5ec8f75 core/types: add core type marshal methods too 2016-09-08 18:16:53 +03:00
ca37730c9d ethclient: fix new block->header subscription endpoint 2016-09-08 17:17:55 +03:00
6fb8ae2bd6 Merge pull request #2979 from karalabe/ethclient-sync-api
ethereum, ethclient: add SyncProgress API endpoint
2016-09-06 13:59:41 +03:00
2924fdfcf7 ethereum, ethclient: add SyncProgress API endpoint 2016-09-06 13:41:43 +03:00
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
de54273f51 cmd/geth: fix port clash in genesis test 2016-09-05 13:24:11 +02:00
6b727c0440 cmd/evm, cmd/geth, cmd/utils: move version handling to cmd/utils 2016-09-05 13:24:11 +02:00
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
a42b7355f4 Merge pull request #2742 from karalabe/tx-spam-protection
Transaction pool optimizations
2016-09-02 13:44:23 +02:00
b4a5251391 core: abstract out a sorted transaction hash map 2016-09-02 14:15:40 +03:00
a183ea29f9 core: add upper bound on the queued transctions 2016-09-02 14:15:40 +03:00
affffb39b3 core/types, miner: switch over to the grouped tx sets 2016-09-02 14:12:03 +03:00
0ef327bbee core, eth, internal, miner: optimize txpool for quick ops 2016-09-02 14:12:03 +03:00
795b70423e core, eth, miner: only retain 1 tx/nonce, remove bad ones 2016-09-02 14:12:03 +03:00
49227f65ff Merge pull request #2972 from Arachnid/ens
contracts/ens: Replace setOwner with setSubnodeOwner per EIP137
2016-09-01 15:27:45 +02:00
a386b4c983 contracts/ens: Replace setOwner with setSubnodeOwner in accordance with EIP137 2016-09-01 12:40:15 +01:00
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
43d716280e rpc: format filter ID according to spec for quantities 2016-09-01 11:50:13 +02:00
cc6170d7fc Merge pull request #2918 from hypergig/patch-2
Small docker run example for main README
2016-08-31 22:51:09 +02:00
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
1f58b2d084 Merge pull request #2962 from fjl/release-move
contracts/release: move package release to contracts/
2016-08-31 15:32:13 +02:00
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
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
7b884e0075 contracts/chequebook/contract: fix possible reentrancy bug in chequebook.sol 2016-08-30 18:16:49 +02:00
3e7b4ae0c3 Merge pull request #2967 from fjl/godeps-update
Godeps: update golang.org/x/...
2016-08-30 12:43:10 +02:00
3b75d0ce23 Godeps: update golang.org/x/... 2016-08-30 12:20:34 +02:00
48807de305 contracts/ens: regenerate binding with solc v0.3.6 2016-08-29 19:34:44 +02:00
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
969008dbb0 Merge pull request #2952 from Arachnid/ens
contracts/ens: Add ENS contract binding
2016-08-29 19:09:35 +02:00
6976e602f6 contracts/ens: Add ENS contract binding 2016-08-29 17:30:17 +01:00
3b087e03ea Merge pull request #2956 from fjl/chequebook
contracts/chequebook: add chequebook contract wrapper
2016-08-29 14:06:12 +02:00
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
8dbf59fec5 common,internal: typo/misspelling fixes (#2953) 2016-08-27 15:05:09 +03:00
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
5fc032a9d1 Merge pull request #2930 from fjl/ethclient
Stable Go API, part 1
2016-08-25 16:20:38 +03:00
806e3cd075 Merge pull request #2943 from Arachnid/tracing
internal/ethapi: Fix bug in opCodeWrapper usage
2016-08-24 18:20:26 +02:00
8923325d5c internal/ethapi: Fix bug in opCodeWrapper usage 2016-08-24 16:10:29 +01:00
a2b2c8adc9 Merge pull request #2941 from Arachnid/tracing
internal/ethapi: Improve tracer error reporting and serialization
2016-08-24 16:10:51 +02:00
d20238c2a7 internal/ethapi: Improve tracer error reporting and serialization 2016-08-24 13:17:55 +01:00
4ce83bf57b eth/fetcher: small typo fix (#2932) 2016-08-23 18:23:34 +03:00
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
2f99720901 core/vm, eth: Add support for javascript trace functions 2016-08-23 15:06:39 +01:00
6bd9008025 cmd/geth: set correct initial nonce on testnet for import/init subcommands (#2924) 2016-08-23 11:36:40 +03:00
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
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
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
d8cec35b10 Merge pull request #2927 from obscuren/license
cmd/geth: added copyright and license information
2016-08-22 12:38:05 +03:00
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
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
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
5b44a819d3 cmd/utils: removed DAO oppose / support message 2016-08-21 23:55:53 +02:00
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
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
454dc9b7c2 eth/fetcher: fix a log message formatting issue 2016-08-19 14:04:03 +03:00
b3d7a5c5d0 README: docker run example 2016-08-18 12:49:42 -04:00
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
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
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
84d11c19fd eth: remove dapp database remains 2016-08-17 17:39:03 +02:00
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
3369783e0a Merge pull request #2885 from bas-vk/subscriptions
rpc: refactor subscriptions and filters
2016-08-17 17:14:42 +02:00
47ff813012 rpc: refactor subscriptions and filters 2016-08-17 12:59:58 +02:00
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
2fab2b310b TravisCI: add Go 1.7 targets, bump PPA to 1.7 too 2016-08-17 10:05:59 +03:00
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
bb8059f6aa core: ensure the canonical block is written before the canonical hash is set 2016-08-16 15:21:22 +02:00
4c2cc32f2e Makefile: support building for the MIPS64 platforms (#2682) 2016-08-16 09:52:24 +02:00
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
077353b47e console: fix return via callbacks (#2910)
Fixes #2872
2016-08-15 23:52:47 +02:00
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
d6625ac34d Merge pull request #2891 from fjl/rpc-client-fixes
rpc: client bug fixes
2016-08-09 11:51:01 +03:00
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
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
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
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
8c23f20c68 Makefile, build: move cross compilation into ci.go 2016-08-08 13:45:44 +03:00
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
e4736fe469 core/vm: hide ecrecover error message
Fixes #2825
2016-08-05 23:12:52 +02:00
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
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
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
464660651d rpc: don't exceed context deadline while waiting for send lock 2016-08-05 13:27:02 +02:00
8d9141ed9a ethereum: add new Go API interfaces 2016-08-05 13:25:52 +02:00
4be37222ef Godeps: update github.com/rjeczalik/notify to f627deca7a51
Fixes #2829
2016-08-04 21:20:08 +02:00
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
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
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
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
8ec6ccc54d Merge pull request #2870 from lukeyeager/patch-1
Fix README typo
2016-07-27 10:49:04 +03:00
1ca9e552d9 README: Fix typo
"fine graned" -> "fine-grained"
2016-07-26 17:23:20 -07:00
8f0a4a25f8 eth/downloader: abort sync if master drops (timeout prev) 2016-07-26 13:07:12 +03:00
071af57bcf eth, eth/downloader: don't forward the DAO challenge header 2016-07-26 12:26:41 +03:00
d68865f3b1 eth/downloader: fewer headers and futures too un ancestor lookup 2016-07-26 11:15:38 +03:00
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
1dd272080d eth, eth/downloader: better remote head tracking 2016-07-25 15:14:14 +03:00
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
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
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
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
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
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
c7c82f1b44 eth/downloader: fix the stall checks/drops during sync 2016-07-22 17:55:46 +03:00
f58ac2b46b Merge pull request #2712 from bas-vk/sendtx
eth/api: rename signAndSendTransaction to sendTransaction
2016-07-22 14:28:21 +03:00
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
4ee00b2309 eth/api: rename signAndSendTransaction to sendTransaction 2016-07-22 13:12:14 +02:00
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
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
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
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
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
4d014d6d7e Godeps: bump github.com/syndtr/goleveldb/... to ab8b5dcf104 2016-07-19 18:45:42 +02:00
fe56461387 Merge pull request #2834 from zsfelfoldi/chaindb-upgrade-fix
eth: fixed chaindb upgrade
2016-07-19 18:41:58 +03:00
56efed71b5 eth: fixed chaindb upgrade 2016-07-19 14:32:38 +02:00
91f18ffd47 eth: cancel DAO challenge on peer drop (annoying log) 2016-07-19 12:00:09 +03:00
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
993b412160 cmd/utils, eth: display the user's current fork, minor text tweak 2016-07-16 12:38:37 +03:00
2c2e389b77 cmd, core, eth, miner, params, tests: finalize the DAO fork 2016-07-15 16:52:55 +03:00
3291235711 accounts, core, eth: pass chain config for chain maker to test DAO 2016-07-15 16:52:55 +03:00
461cdb593b core, params, tests: add DAO hard-fork balance moves 2016-07-15 16:52:55 +03:00
7f00e8c033 core, eth: enforce network split post DAO hard-fork 2016-07-15 16:52:55 +03:00
a87089fd2d cmd, core, miner: add extradata validation to consensus rules 2016-07-15 16:52:55 +03:00
1e24c2e4f4 cmd/geth, miner, params: special extradata for DAO fork start 2016-07-15 16:52:55 +03:00
9e56811a37 core: gracefully handle missing homestead block config 2016-07-15 16:52:55 +03:00
6060e098c9 cmd, core, eth, params: implement flags to control dao fork blocks 2016-07-15 16:52:55 +03:00
aa1e052cb4 Merge pull request #2823 from karalabe/circleci-hive
circleci: enable docker based hive testing
2016-07-15 16:32:04 +03:00
1a652afe16 Merge pull request #2724 from pirapira/fix_reset_fees
vm: Replace some SstoreClearGas with SstoreResetGas
2016-07-15 16:24:16 +03:00
6f1e45d5ba circleci: enable docker based hive testing 2016-07-15 16:07:34 +03:00
91130ea3fc cmd/bootnode: Add support for outputting a node's ID on the command line 2016-07-15 11:09:37 +01:00
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
4c3da0f2e1 node, p2p, internal: Add ability to remove peers via admin interface 2016-07-14 18:51:41 -04:00
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
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
e11489eb5f appveyor.yml: don't install Go and MinGW, they're already there (#2813) 2016-07-14 10:33:20 +02:00
f970610c04 Merge pull request #2799 from zsfelfoldi/api-nonce-fix2
core: added CheckNonce() to Message interface
2016-07-12 16:07:15 +03:00
68b48cc045 cmd/geth: print version on geth start (#2622) 2016-07-12 14:43:15 +02:00
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
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
e76c55a9b8 Merge pull request #2805 from karalabe/readme-running-geth
README: expand with "Running Geth" section
2016-07-12 14:16:45 +03:00
ca211065b6 README: expand with "Running Geth" section 2016-07-12 12:51:31 +03:00
c7442ef0d2 ethdb, p2p/discover: replace "alloted" with "allotted" (#2785) 2016-07-12 11:42:47 +02:00
a691aa2a13 eth/downloader: return invalid chain (peer drop) on import fails 2016-07-11 19:00:49 +03:00
00787fe781 core: added CheckNonce() to Message interface 2016-07-11 12:35:23 +02:00
f5a29eab5c core: solve a remote-import/local-mine data race 2016-07-08 16:59:19 +03:00
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
51f8ce26cf eth: fix #2710 filter races
and locking bugs found in its wake.
2016-07-04 17:38:35 +02:00
092fcaffe4 containers/docker/master-alpine: drop gmp dependency 2016-07-04 14:42:57 +03:00
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
ddfef21125 eth: disable eth/61 to prepare for more elaborate fork sync algos 2016-07-04 12:03:19 +03:00
3af101ccc1 Merge pull request #2763 from karalabe/fix-readme-type
README: fix build->built typo
2016-07-01 11:21:50 +03:00
4f088b6f1c README: fix build->built typo
(cherry picked from commit e271fd5713)
2016-07-01 11:20:15 +03:00
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
96dc42d99c cmd, common, console, eth, release: drop redundant "full"s 2016-06-30 13:03:26 +03:00
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
f127799d79 Merge pull request #2750 from sybiload/develop
cmd/geth: fix the import error message
2016-06-29 14:12:46 +03:00
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
fd4e161497 Merge pull request #2752 from karalabe/revert-soft-fork
Revert faulty DAO soft-fork
2016-06-29 12:17:18 +03:00
6362a9d610 Revert "test, cmd/evm, core, core/vm: illegal code hash implementation"
This reverts commit 7a5b571c67.
2016-06-29 11:44:51 +03:00
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
67e9d33486 Revert "core: update DAO soft-fork number, clean up the code"
This reverts commit ba784bdf36.
2016-06-29 11:44:29 +03:00
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
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
1e3a7d4fab core: update the DAO soft fork proposal to the final block 2016-06-24 15:24:09 +03:00
848dec3da2 Merge pull request #2725 from karalabe/obscuren-softfork-dao-2
DAO soft-fork
2016-06-24 13:09:36 +03:00
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
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
acecefee88 Merge pull request #2726 from fjl/appveyor
build: add ci.go, use it everywhere
2016-06-23 18:44:22 +03:00
ba784bdf36 core: update DAO soft-fork number, clean up the code 2016-06-23 17:16:43 +03:00
c4de28938f core: add voting and result tracking for the dao soft-fork 2016-06-23 16:43:35 +03:00
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
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
599e3c7b3f Merge pull request #2722 from fabioberger/fixTypos
README, core, rpc: Fix typos
2016-06-22 11:08:49 +03:00
86bc7795a3 vm: Replace some SstoreClearGas with SstoreResetGas 2016-06-21 21:15:26 +02:00
a3efdb13f2 README, core, rpc: fix various typos 2016-06-21 17:38:35 +01:00
3a97280ae8 eth: separate common and full node-specific API and backend service 2016-06-16 17:36:38 +02:00
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
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
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
ac66d96c5a cmd/utils: add space between "to" and filename 2016-06-15 11:02:22 +03:00
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
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
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
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
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
783289068a eth/downloader: fix occasional fast sync critical section test fails 2016-06-13 13:04:19 +03:00
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
f0134f363b Godeps: pull in ethash with the big endian build fix 2016-06-13 12:43:09 +03:00
ce88d41907 Merge pull request #2681 from karalabe/fix-cli-deprecation
cmd: fix CLI package deprecation warnings
2016-06-10 16:24:06 +03:00
0f9539e1e3 accounts/abi: fix uint64 upper range encoding. 2016-06-10 12:32:08 +03:00
90e07b19ab cmd: fix CLI package deprecation warnings 2016-06-10 11:23:00 +03:00
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
c039bb38d4 Merge pull request #2653 from tbocek/develop
Negative numbers not properly converted in ABI encoding
2016-06-10 10:14:42 +03:00
861add3d72 cmd/geth: codegansta/cli package renamed to urfave/cli 2016-06-09 15:37:13 +02:00
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
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
7c0eb47dfb cmd/geth: fix the keystore path in the accounts help text 2016-06-08 17:00:18 +03:00
dbcdf83ed8 console: ignore round and curly brackets in strings when determining indentation level 2016-06-08 14:21:52 +02:00
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
553f08b819 Merge pull request #2669 from karalabe/fix-windows-console-color
console: fix windows console colors
2016-06-08 13:54:49 +03:00
32258af87b cmd/geth: truly randomize console test RPC endpoints 2016-06-08 13:53:07 +03:00
d251d48439 console: fix windows color transformation issue 2016-06-08 13:12:15 +03:00
f9917c8c7b core: improved chainDb using sequential keys 2016-06-07 16:38:56 +02:00
5a458da42a core: chain read/write speed benchmarks 2016-06-06 14:38:28 +02:00
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
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
32559ccad1 eth: don't accept transactions until we sync up with the network 2016-06-06 14:45:38 +03:00
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
88f174a014 eth/downloader: adaptive quality of service tuning 2016-06-06 14:20:57 +03:00
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
828e1e35fd Merge pull request #2655 from fjl/txpool-lock
core: add missing lock in TxPool.GetTransaction
2016-06-03 14:08:22 +03:00
fc85dd175e core: add missing lock in TxPool.{GetTransaction,RemoveTx}
Fixes #2650
2016-06-03 12:43:33 +02:00
89ba380b3c Merge pull request #2656 from fjl/console-test
cmd/geth: make console tests more robust
2016-06-03 11:25:38 +02:00
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
ad0e6e971e console: remove unnecessary JS evaluation in Welcome 2016-06-03 11:08:55 +02:00
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
61ee9f299d eth/downloader: make fast sync resilient to critical section fails 2016-06-02 12:37:14 +03:00
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
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
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
da729e5b38 cmd/geth, console: fix reviewer issues 2016-05-31 10:59:38 +03:00
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
14ae5708d6 console, internal/jsre: colorize JavaScript exceptions too 2016-05-30 17:25:23 +03:00
ffaf58f0a9 cmd, console: split off the console into a reusable package 2016-05-30 17:25:23 +03:00
4496a44f68 eth/downloader: ensure cancel channel is closed post sync 2016-05-30 12:01:50 +03:00
4f1d92b332 eth/downloader, trie: pull head state concurrently with chain 2016-05-27 14:26:00 +03:00
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
8ee84584a4 core/state: return the starting nonce for non-existent accs (testnet) 2016-05-27 10:42:11 +03:00
748d1c171d core, core/state, trie: enterprise hand-tuned multi-level caching 2016-05-26 16:33:09 +03:00
a7434fd008 Merge pull request #2614 from fjl/bad-block-report
eth: enable bad block reports
2016-05-25 22:40:28 +02:00
d9bb8179d3 Merge pull request #2617 from obulpathi/develop
misc: fix spelling mistake
2016-05-25 09:54:06 +02:00
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
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
f3769a97d5 misc: fix spelling mistake 2016-05-24 22:13:05 -05:00
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
5eb60a6da2 common/compiler: support relative path to solc 2016-05-24 17:02:00 -04:00
f86ea9aad5 eth/api: fixed GetCompilers when there is no error creating Solc 2016-05-24 16:44:33 -04:00
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
2e530f4889 Just to make it clear how to build all executables 2016-05-23 14:19:17 +01:00
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
b4dd3209b2 Merge pull request #2597 from fabioberger/develop
core: Simplify bloom9 tests
2016-05-23 13:15:32 +02:00
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
faf663133b core: Simplify bloom9 tests with available convenience method TestBytes 2016-05-22 16:42:46 -07:00
64a6c2c1b6 eth: add new RPC method (personal.) SignAndSendTransaction 2016-05-20 15:54:18 +02:00
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
a8472e0fdb Merge pull request #2315 from karalabe/concurrent-headers-2
eth/downloader: concurrent header downloads
2016-05-20 14:25:28 +02:00
1580ec1804 accounts/abi/bind, eth: rely on getCode for sanity checks, not estimate and call 2016-05-20 12:29:28 +03:00
8906b2fe09 eth/downloader: fix reviewer comments 2016-05-20 10:56:01 +03:00
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
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
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
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
67cd4ee8d2 eth/filter: bugfix which can cause a nil pointer crash when parsing filter arguments 2016-05-17 16:17:54 +02:00
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
d87f7a1e81 eth: skip transaction handling during fast sync 2016-05-17 14:17:20 +03:00
adc1b50395 Merge pull request #2567 from fjl/console-history-exclude
cmd/geth: fix console history exclusion
2016-05-17 12:04:58 +02:00
e86619e75d eth/downloader: stream partial skeleton filling to processor 2016-05-17 10:03:34 +03:00
b40dc8a1da eth/downloader: implement concurrent header downloads 2016-05-17 10:03:34 +03:00
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
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
39ce85cf5d eth/downloader: bound fork ancestry and allow heavy short forks 2016-05-13 12:12:13 +02:00
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
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
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
331b815300 Merge pull request #2560 from 6londe/patch-3
README: fix typos
2016-05-12 16:52:09 +03:00
2348f8e2a8 README: fix typos
README: fix typos
2016-05-12 22:40:47 +09:00
251b3c6406 accounts/abi: fix abi test for go vet... 2016-05-12 16:36:58 +03:00
cc21706c50 accounts/abi/bind: fix multi-value anonymous unmarshalling 2016-05-12 16:28:18 +03:00
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
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
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
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
284f1d6beb cmd/geth: use text/templates in the tester, not html 2016-05-11 11:58:48 +03:00
bc6fdad786 cmd/geth, internal/web3ext, rpc: surface rpc module, fix shh, fix miner 2016-05-11 11:49:44 +03:00
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
34c56766b7 Merge pull request #2539 from bas-vk/origin-case
rpc: HTTP origin case insensitive
2016-05-11 10:10:04 +02:00
5479097790 rpc: HTTP origin case insensitive 2016-05-10 18:01:58 +02:00
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
a824c3f02f miner: fixed pending state by not shutting down update loop 2016-05-10 13:35:01 +02:00
5782164a35 Merge pull request #2529 from fjl/fdlimit-bsd
cmd/utils: fix build on *BSD
2016-05-09 16:39:34 +03:00
27f657478f Merge pull request #2524 from fjl/windows-ci-scripts
build: add CI scripts for windows
2016-05-09 15:59:49 +03:00
756b62988c Merge pull request #2523 from fjl/shutdown
core, eth, miner: improve shutdown synchronisation
2016-05-09 15:59:41 +03:00
f61e203c10 cmd/utils: fix build on *BSD 2016-05-09 13:13:44 +02:00
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
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
1d42061e2c jsre: hotfix web3 for the console eth.syncing formatting 2016-05-09 11:59:59 +03:00
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
7d59c5c58d eth: fixed tracing functions using the current header instead of parent
Fixes #2525
2016-05-09 10:24:31 +02:00
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
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
c89f4352d0 build: add CI scripts for windows 2016-05-08 01:23:07 +02:00
6a00a3ade1 Makefile: go build instead of install (solves cross compile issues) 2016-05-06 16:56:22 +03:00
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
d79f2f2656 node: start RPC/WS interface on localhost by default 2016-05-06 12:00:47 +02:00
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
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
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
844e911129 internal/debug: rename debug_trace to debug_goTrace
Reduces confusion with EVM execution tracing methods.
2016-05-06 10:27:24 +02:00
bc3b406bff travis: run CI builds against multiple Go versions 2016-05-04 20:10:36 +03:00
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
14d5033c9d cmd/geth: fixed to use proper version string for output 2016-05-03 14:01:37 +02:00
258cc73ea9 Merge pull request #2510 from fjl/p2p-fixups
p2p/discover: prevent bonding self
2016-05-03 13:30:51 +02:00
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
b4fbcd5060 README: Polish up exec section, rewrite contrib and add license. 2016-05-03 14:26:55 +03:00
488528e9e4 Merge pull request #2497 from karalabe/version-contract-3
Geth release oracle
2016-05-03 13:19:05 +02:00
8110671960 p2p/discover: prevent bonding self 2016-05-02 18:50:16 +02:00
32bb280179 p2p: improve readability of dial task scheduling code 2016-05-02 18:50:15 +02:00
4536b993ff cmd/geth, release: polish and deploy live release contract 2016-05-02 16:20:58 +03:00
586eddfd09 release, all: integrate the release service into geth 2016-05-02 16:20:21 +03:00
d46da273c6 common/releases: rewrite release version contract + use native dapps 2016-05-02 16:20:04 +03:00
ecd7199c43 common/versions, cmd/utils: add geth version contract 2016-05-02 10:31:54 +03:00
1c20313a6a Merge pull request #2493 from almindor/develop
eth: add personal_importRawKey
2016-04-29 23:09:37 +02:00
cfa999f006 Merge pull request #2504 from Arachnid/public-vmconfig
Provide a public accessor for ChainConfig
2016-04-29 14:50:10 +03:00
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
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
572da73d4d eth: add personal_importRawKey for runtime private key import 2016-04-28 09:11:40 -06:00
0f722df2d9 Merge pull request #2435 from obscuren/abi-array-fixes
accounts/abi: refactored ABI package
2016-04-28 15:23:07 +03:00
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
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
4880868c88 accounts/abi: fixed string and fixed size bytes packing 2016-04-28 12:41:47 +02:00
c3d5250473 accounts/abi: added unpacking "anything" in to interface{} 2016-04-28 12:41:42 +02:00
e0dc45fce2 accounts/abi: fixed strict go-like unpacking 2016-04-28 12:41:37 +02:00
48cc36ce83 eth/filters: ignore logs that don't match filter criteria on chain reorg 2016-04-28 12:33:42 +02:00
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
cdcbb2f160 accounts/abi/bind, eth: add contract non-existent error 2016-04-27 17:15:23 +03:00
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
5137c04ccf Merge pull request #2484 from pcasaretto/address-test-coverage
Improve Address test coverage
2016-04-26 16:13:49 +03:00
a20d3fc362 common: Add tests for Address#UnmarshalJSON 2016-04-26 09:12:36 -03:00
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
6a543607ef accounts: disable file system watch on linux/arm64 2016-04-25 13:30:28 +02:00
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
70b8b54cd2 Merge pull request #2481 from fjl/bootnode-fixup
cmd/bootnode: fix -genkey, add logging options
2016-04-25 12:42:28 +02:00
c88c89fd9e cmd/bootnode: fix -genkey, add logging options 2016-04-22 13:35:40 +02:00
b06f44ecc2 cmd: add a --fakepow flag to help benchmarking database changes 2016-04-21 12:14:57 +03:00
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
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
18580e152c VERSION, cmd/geth: bumped version 2016-04-19 18:17:44 +02:00
a6ca8fd268 Merge pull request #2463 from fjl/rpc-context-key
rpc: remove NotifierContextKey
2016-04-19 10:22:48 +03:00
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
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
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
e728aaca72 rpc: move web3.js extensions to internal/web3ext 2016-04-15 17:36:01 +02:00
e581f2690a accounts/abi/bind/backends: estimate needed gas, not used 2016-04-15 18:32:21 +03:00
6197fbf8d7 Merge pull request #2458 from fjl/go-vet
all: fix go vet warnings
2016-04-15 13:45:15 +02:00
5c17b2f521 Merge pull request #2460 from fjl/whisper-expiration-test-delay
whisper: deflake Test*MessageExpiration
2016-04-15 14:44:36 +03:00
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
bf5ae502ef Makefile: enable go vet on Travis CI 2016-04-15 11:17:27 +02:00
6fdd0893c3 all: fix go vet warnings 2016-04-15 11:17:27 +02:00
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
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
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
fdc5a7dc1a Merge pull request #2457 from fjl/license-update-1.4
all: update license information
2016-04-15 10:09:40 +02:00
d04a2e7557 all: update license information 2016-04-15 09:48:05 +02:00
728ad6f47d build: tweak update-license.go 2016-04-15 09:46:54 +02:00
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
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
529897ea2b cmd/utils: strip excessive whitespace from api command line arguments 2016-04-14 16:23:43 +02:00
53016c1225 eth, rpc: make trace configs optional 2016-04-14 15:10:29 +03:00
bbc77f488e eth: fix single transaction tracing (run prev mutations) 2016-04-14 14:29:47 +03:00
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
bea56d84e5 internal/debug: add memStats and gcStats to API 2016-04-13 12:08:07 +02:00
bcd8aeefdd eth: add chaindbProperty to debug API 2016-04-13 12:08:07 +02:00
05e257c22c jsre: hide fields with prefix _ when pretty-printing
This makes web3 internals like _requestManager invisible.
2016-04-13 12:06:42 +02:00
f08680985a jsre: fix <tab><tab> completion magic 2016-04-13 12:06:42 +02:00
5542b51b50 jsre: expose Do 2016-04-13 12:06:42 +02:00
b34b130fb5 Merge pull request #2450 from karalabe/fix-ios-kqueue
accounts: disable filesystem notifications on iOS
2016-04-13 12:48:51 +03:00
fd36448d6a accounts: disable filesystem notifications on ios 2016-04-13 12:29:39 +03:00
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
4e85be0717 jsre: print BigNumber objects with custom constructor as number 2016-04-12 17:42:14 +02:00
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
a1f1c404c3 cmd/utils: fix accounts merge error on console unlock 2016-04-12 18:01:37 +03:00
1e9b504ee7 Merge pull request #2284 from fjl/accounts-addr-cache
accounts: cache key addresses
2016-04-12 17:51:09 +03:00
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
6498df7b02 accounts: ensure TimedUnlock does not override indefinite unlock timeout 2016-04-12 15:59:18 +02:00
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
91aaddaeb3 cmd/geth: add recovery procedure for AmbiguousAddrError 2016-04-12 15:59:18 +02:00
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
aca9d6a1fb cmd/geth: print actual error when --unlock fails 2016-04-12 15:59:17 +02:00
549f1add29 eth: report unlock errors to RPC clients 2016-04-12 15:59:12 +02:00
6f1ca0bc91 accounts: add ErrDecrypt 2016-04-12 15:58:07 +02:00
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
ef63e9af55 Godeps: add github.com/rjeczalik/notify 2016-04-12 15:58:07 +02:00
ee1682ffe6 cmd/geth: add tests for account commands 2016-04-12 15:58:07 +02:00
6cb08d8328 Godeps: add github.com/cspeare/cp 2016-04-12 15:58:06 +02:00
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
2dc20963e7 cmd/geth: move account commands to accountcmd.go 2016-04-12 15:56:49 +02:00
4e6d8b348d accounts: fix go vet warnings 2016-04-12 15:56:49 +02:00
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
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
aceaaa5178 eth: gracefully fail if chain config is missing 2016-04-12 16:48:43 +03:00
9027981280 cmd/gethrpctest: add missing chain configuration config field 2016-04-12 16:44:42 +03:00
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
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
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
934f587bd5 Merge pull request #2431 from bas-vk/js-preload
cmd/geth: add JS preload parameter
2016-04-12 11:00:42 +02:00
e456451a89 Merge pull request #2440 from karalabe/update-ethash
Update ethash
2016-04-11 20:03:47 +02:00
bf1f620343 eth: fix GPU miner chain config regression 2016-04-11 17:31:00 +03:00
701ac1ce6c Godeps: pull in the ethash opencl fix 2016-04-11 17:14:32 +03:00
3c5329599c cmd/geth: add JS preload parameter 2016-04-11 13:32:26 +02:00
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
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
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
4081868452 cmd/utils: bugfix where database is opened multiple times 2016-04-07 12:49:00 +02:00
18490d833c console: use transaction output formatter for eth.pendingTransactions output 2016-04-06 11:27:05 +02:00
fc4fffd5ac accounts/abi/bind: support generating bindings for various arrays 2016-04-05 18:20:50 +03:00
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
ed92f116f7 Merge pull request #2407 from bas-vk/rpc-notifications
RPC pub sub
2016-04-05 09:43:32 +02:00
6a185531d2 Merge pull request #2416 from karalabe/kill-canary
core, miner: remove Frontier canary
2016-04-04 20:43:01 +02:00
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
a306e17a26 abi: removed implicit type casting & refactored type parsing 2016-04-04 20:30:59 +02:00
968d8ffe94 abi: accept output slices of all supported types 2016-04-04 20:30:59 +02:00
022cbd6800 abi: accept input slices of all supported types 2016-04-04 20:30:58 +02:00
467bb7a719 rpc: use go-winio instead of vendoring a named pipe implementation 2016-04-04 13:56:17 +02:00
e9254bb0f9 core, miner: remove Frontier canary 2016-04-04 13:18:34 +03:00
3a2da31c3e Merge pull request #2412 from fjl/p2p-eip8-enable
p2p: enable EIP-8 handshake sending
2016-04-04 13:10:48 +03:00
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
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
c90fc3503d cmd/geth: add missing gas target flag (fixing 0 convergence issue) 2016-04-04 12:04:04 +03:00
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
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
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
78b70d79ec cmd/utils: fix geth startup with empty database 2016-04-01 21:59:23 +02:00
f7328c5ecb rpc: add pub/sub support 2016-04-01 18:26:35 +02:00
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
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
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
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
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
d63e29241d common: added Hash unmarshal json length validation 2016-04-01 12:56:54 +02:00
4097478884 accounts/abi/bind: surface raw wrappers to access low level ops 2016-04-01 13:07:05 +03:00
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
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
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
916fe11241 eth: enforce signing hashes using eth_sign instead of arbitrary data 2016-04-01 00:43:14 +02:00
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
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
4326061e35 eth: fix accidental nil panic on nil errors 2016-03-31 18:26:25 +03:00
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
6c670eff01 eth: manually convert errors to strings on the trace API (json cannot) 2016-03-31 17:41:26 +03:00
4ab593c5a1 accounts/abi/bind: support account slices, drop hash type 2016-03-31 12:48:50 +03:00
c2bbff6116 accounts/abi/bind: merge all tests into a single suite 2016-03-31 12:45:50 +03:00
787d688c2f accounts/abi/bind: use anonymous ephemeral call result structs 2016-03-31 12:45:30 +03:00
b813e4d411 accounts/abi/bind, cmd/abigen: dedup structs, exclude patterns 2016-03-26 11:43:09 +02:00
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
9b4a45f6e8 accounts/abi/bind: fix double pointer in generated code 2016-03-25 15:09:06 +02:00
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
73308dbe0e accounts/abi/bind, cmd/abigen: port to templates, bind to solidity 2016-03-24 17:09:45 +02:00
86cfc22c79 accounts/abi/bind: constructor, auth utils and various backends 2016-03-24 14:15:32 +02:00
72826bb5ad accounts/abi/bind, cmd/abigen: Go API generator around an EVM ABI 2016-03-24 14:15:18 +02:00
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
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
5f92606be2 eth/api: added root to the receipts 2016-03-23 23:02:44 +01:00
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
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
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
6f30034413 cmd/utils: removed password line endings when not using liner. 2016-03-23 22:53:20 +08:00
77d21e472d Merge pull request #2259 from bas-vk/http
rpc/http: improve request handling
2016-03-23 13:01:22 +01:00
a7bae3b2a6 rpc/http: improve request handling 2016-03-23 11:27:08 +01:00
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
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
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
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
270ea6eec3 accounts/abi: handle the "constant" modifier for functions 2016-03-16 11:24:16 +02:00
0228fb57cd eth, miner: fetch pending block/state in on go (data race) 2016-03-16 11:23:26 +02:00
2855a93ede Merge pull request #2341 from leijurv/patch-2
core: fixed various typos
2016-03-16 11:22:33 +02:00
b5cee9738b Merge pull request #2350 from leijurv/patch-3
core, eth: replace reorganiz with reorganis
2016-03-15 20:33:38 +01:00
434e4b31d8 core, eth: replace reorganiz with reorganis 2016-03-15 12:03:17 -07:00
06fe6310a3 Merge pull request #2351 from leijurv/patch-4
core: various typos
2016-03-15 19:39:36 +01:00
066d301520 Merge pull request #2352 from leijurv/patch-5
eth: various typos
2016-03-15 19:38:24 +01:00
bbbe2360d0 eth: various typos 2016-03-15 11:27:49 -07:00
b7bb2d8589 core: various typos 2016-03-15 11:08:18 -07:00
c7727191ae core: fixed various typos 2016-03-15 09:12:03 -07:00
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
e189fb839c Merge pull request #2327 from fjl/debug-fixes
cmd/utils, internal/debug: fixes for debugging
2016-03-15 11:01:31 +02:00
42c049e519 Merge pull request #2342 from obscuren/issue-templates
templates: added issue template
2016-03-14 23:45:53 +01:00
a0e2e22a4f templates: added issue template 2016-03-14 23:39:21 +01:00
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
64c8e2f2ca p2p/nat: fix #2291, NAT discovery did't abort on failure 2016-03-14 17:08:15 +02:00
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
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
8a3ce5450a Merge pull request #2311 from obscuren/future-proc-fix
core: added future proc mutex lock
2016-03-11 18:26:57 +01:00
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
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
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
9ff07304a3 Godeps: pull in the leveldb upstream write race fix 2016-03-11 09:30:25 +02:00
daad2b2559 core: cache fresh headers and tds to avoid db trashing 2016-03-10 21:40:34 +02:00
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
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
73d21ea6af core: create a header chain structure shared by core.BlockChain and light.LightChain 2016-03-10 14:57:32 +01:00
bff9ceb6b8 Merge pull request #2301 from obscuren/uncle-fix
core: announce ChainSideEvent during reorg
2016-03-10 14:21:41 +01:00
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
e3f2b541f2 eth/downloader: fix a throughput estimation data race 2016-03-10 12:58:46 +02:00
ea19e61fba Godeps: update goleveldb to fix a compaction data race 2016-03-10 12:57:59 +02:00
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
e90958cd29 cmd, eth, ethdb, node: prioritise chaindata for resources, bump cache 2016-03-09 10:33:39 +02:00
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
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
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
119b724362 Godeps: pull in ethash future cache generator 2016-03-08 16:43:56 +02:00
0fd251c7f7 console: allow optional password on the command line 2016-03-08 15:02:21 +01:00
848e50d6fb Merge pull request #2293 from kobigurk/develop
Adds --keystore
2016-03-08 09:32:33 +01:00
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
de1831b6e9 common/compiler: fix path problem with filepath.Glob on Windows 2016-03-07 17:52:19 -05:00
627c2311fb cmd/utils: add --keystore 2016-03-07 14:38:56 -08:00
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
ae4982a365 eth: forward empty body responses to the downlaoder 2016-03-03 13:06:23 +02:00
41f35d7913 Merge pull request #2280 from bas-vk/js-cleanup
console: cleanup old autocompletations relics
2016-03-02 21:23:47 +01:00
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
789b9a9f16 console: cleanup old autocompletations relics 2016-03-01 18:27:08 +01:00
c0bf321ec8 Merge pull request #2278 from fjl/rpc-inproc-pipe
rpc: simplify inproc client
2016-03-01 14:54:52 +02:00
e8e6df5159 rpc: simplify inproc client
Fixes #2277
2016-03-01 12:47:36 +01:00
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
f30b809f00 Merge pull request #2215 from bas-vk/estimategas
core: improved check for contract creation
2016-03-01 10:59:12 +02:00
7d598af493 params: updated homestead block 2016-02-29 16:19:32 +01:00
0d89e6c2f1 cmd/utils, params: homestead block 2016-02-29 15:04:55 +01:00
7cbcae3fac Merge pull request #2269 from obscuren/repl-multi-line
cmd/geth: removed multiline support
2016-02-29 15:04:33 +01:00
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
ab92678fb3 cmd/utils: lower the min accepted gas price for relay and GPO to 20 shannon 2016-02-29 14:45:47 +01:00
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
64ee5763ee eth/downloader: fix premature exit before notifying all part fetchers 2016-02-29 14:22:28 +02:00
b534106cc8 core, miner: add PendingStateEvent to track non-log updates 2016-02-29 11:24:58 +02:00
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
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
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
85865a51b6 Merge pull request #2265 from fjl/downloader-mem
eth/downloader: fix header download limiting
2016-02-26 16:02:28 +01:00
26e72b2ccd eth/downloader: fix header download limiting
Fixes #2201
2016-02-26 15:24:51 +01:00
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
45d08a8aa7 crypto: expose key encryption method, add ping-pong test 2016-02-24 16:28:25 +02:00
0969b35eec crypto: code polish + ensure key file contents match with name 2016-02-24 16:27:32 +02:00
cda91ee180 crypto: expose key decryption method to parse a string direclty 2016-02-24 16:27:32 +02:00
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
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
0a5ee08e2b Godeps, eth, tests: update ethash, used shared for testing 2016-02-24 13:29:47 +02:00
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
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
ac954f48bd p2p/discover: emphasize warning, add 10 min cooldown 2016-02-24 12:16:28 +02:00
b1908f6a16 psp/discovery: NTP sanity check clock drift in case of expirations 2016-02-24 12:14:15 +02:00
f1ddb1a7ad ethdb: fully disable metrics if not requested (oops?) 2016-02-23 15:47:04 +02:00
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
93c0012000 eth/downloader: bump the download queue size to prevent starvation 2016-02-23 13:12:11 +02:00
b57a3f154f Merge pull request #2234 from obscuren/tx-rpc-fix
eth: fixed homestead tx check
2016-02-23 10:29:25 +02:00
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
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
139f6a0f4c generators: Don't generate params/protocol_params.go with +x bit 2016-02-21 22:46:32 +00:00
8f65444bf3 common/natspec: Remove old unnused file 2016-02-21 22:46:31 +00:00
53ce0a76d8 ethdb: Remove outdated README pointing to an old link 2016-02-21 22:46:31 +00:00
e6af65d02a common: Remove dead code 2016-02-21 22:46:31 +00:00
fbf3b2ede2 common: Remove empty lines 2016-02-21 22:46:31 +00:00
3d971c5a34 crypto: Remove dead code 2016-02-21 22:46:31 +00:00
0c6665558a crypto: Add backward compatible aliases for Sha3{,Hash}() 2016-02-21 22:46:31 +00:00
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
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
5387ad760f crypto/sha3: Remove import path checking from vendored code 2016-02-21 22:34:34 +00:00
e4b138a593 crypto/sha3: Copy latest code from "golang.org/x/crypto/sha3"
Revision: 1f22c0103821b9390939b6776727195525381532
2016-02-21 22:34:34 +00:00
0a1da69fac crypto/sha3: Delete old copied code 2016-02-21 22:34:34 +00:00
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
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
c305005d83 Merge pull request #2227 from bas-vk/mathrandom
console: seed random number generator
2016-02-19 13:17:10 +01:00
6777531a2d console: seed random number generator 2016-02-19 12:55:31 +01:00
17649edd85 Merge pull request #2226 from fjl/eip-8
p2p, p2p/discover: EIP-8 changes
2016-02-19 11:53:50 +01:00
7d8155714b p2p: EIP-8 changes 2016-02-19 11:14:48 +01:00
ee1debda53 p2p/discover: EIP-8 changes 2016-02-19 11:14:42 +01:00
bb07ce3eed rlp: add "tail" struct tag 2016-02-19 11:14:29 +01:00
216729009b eth/downloader: fix partial rollback and ancestor lookup 2016-02-19 11:17:02 +02:00
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
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
4f4d2b6474 tests: updated homestead tests 2016-02-18 10:08:18 +01:00
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
aa36a6ae4f Merge pull request #2206 from fjl/update-deps
Godeps: update all dependencies
2016-02-17 13:46:30 +01:00
b8d59d9c98 core/state, trie: switch iterator panics to error fields 2016-02-16 12:37:00 +02:00
151c7bef41 core/state, trie: node iterator reports parent hashes too 2016-02-16 12:21:08 +02:00
5a057a8ded core/state, trie: surface iterator entry hashes 2016-02-16 12:21:08 +02:00
7e29b0b5b4 core/state, trie: add node iterator, test state/trie sync consistency 2016-02-16 12:21:08 +02:00
0ff2adb21b core: improved check for contract creation 2016-02-16 10:52:46 +01:00
6ba7bbbe29 jsre: include constructor properties in auto-completion 2016-02-15 16:43:25 +01:00
ae5bc89cad cmd/geth, jsre: improve auto-completion 2016-02-15 15:03:26 +01:00
3ab1fb0215 Added Vagrantfile so that developers can spin up a VM to build geth 2016-02-14 21:48:35 -05:00
4f28c5b69d Merge pull request #2210 from obscuren/abi-typed-array
accounts/abi: support for typed array
2016-02-14 19:13:48 +01:00
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
cb85923828 Merge pull request #2205 from obscuren/pending-filters
eth/filters:  pending logs 
2016-02-13 14:53:59 +02:00
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
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
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
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
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
2680e23b15 jsre: fix pretty printer for upstream otto change 2016-02-12 02:19:52 +01:00
d6c6bcc9f3 cmd/geth: update monitor to new termui code 2016-02-11 16:46:28 +02:00
b019f3ee29 Godeps: update all dependencies to latest code 2016-02-11 16:16:52 +02:00
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
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
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
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
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
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
59cd60b266 eth, eth/downloader, jsre: surface state sync progress through the API 2016-02-10 14:30:41 +02:00
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
dda5af0e6c eth, miner: move the public miner api into eth to access etherbase 2016-02-09 16:03:04 +02:00
df75dbfd68 cmd, node, rpc: readd inproc RPC client, expose via node 2016-02-09 14:10:40 +02:00
900e124bee cmd, common, node, rpc: rework naming convention to canonical one 2016-02-09 13:24:42 +02:00
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
f1ec226d80 eth/downloader: raise pending state limit that prevented concurrency 2016-02-08 14:57:02 +02:00
856b9e9c50 Merge pull request #2183 from bas-vk/issue2180
eth_sendTransaction, error not reported
2016-02-08 12:41:39 +02:00
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
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
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
7486904b92 cmd, node, rpc: move websockets into node, break singleton 2016-02-05 16:53:47 +02:00
7d2d141b34 Merge pull request #2178 from isghe/fix_typo
cmd/utils: fix jspath flag typo
2016-02-05 15:37:42 +01:00
cf47ef12d3 cmd/utils: fix jspath flag typo 2016-02-05 15:32:00 +01:00
a13bc9d7a1 cmd, common, node, rpc: move HTTP RPC into node, drop singletone aspect 2016-02-05 13:45:36 +02:00
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
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
6b939fbeaa rpc: add jsonrpc version to module request, use json types 2016-02-04 16:55:50 +02:00
188ab928c3 cmd, common, node, rpc: move IPC into the node itself 2016-02-04 11:23:15 +02:00
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
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
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
5da7ec7c18 cmd, eth, rpc: fix some RPC issues with pending blocks 2016-02-03 10:35:59 +02:00
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
2e2f093ec2 Merge pull request #2167 from obscuren/abi-event-fixes
account/abi: implements event parsing
2016-02-03 10:34:27 +02:00
da645f007b Merge pull request #2166 from obscuren/contrib
CONTRIBUTING: Added a feature section
2016-02-03 10:34:16 +02:00
72c255caef rpc: allow RPC requests on GET too 2016-02-03 00:50:02 +02:00
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
9aa7158057 miner: register newly created remote agent in the API 2016-02-02 20:22:21 +02:00
1894c9239f CONTRIBUTING: Added a feature section 2016-02-02 15:44:27 +01:00
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
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
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
d3642b0715 core, eth, rpc/api: rpc method to inspect the txpool queue 2016-02-01 14:58:14 +02:00
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
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
0781fd7aa0 containers/docker/master-alpine: add the legacy gmp lib back for now 2016-01-31 16:19:55 +02:00
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
f9b2fd79e8 containers: regroup and add Alpine images (31 MB) 2016-01-30 20:55:44 +02:00
528dcc3814 Merge pull request #2151 from fjl/debug-api
internal/debug: APIs for profiling and tracing
2016-01-28 16:11:24 +01:00
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
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
e287b56b69 logger/glog: clean up flag getters 2016-01-27 00:51:14 +01:00
a411fe7e6e logger/glog: fix TraceLocation.Set("") 2016-01-27 00:51:14 +01:00
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
63e76482ac Merge pull request #2140 from obscuren/rpc2-console
Rpc2 console
2016-01-26 14:01:00 +01:00
19b2640e89 rpc: migrated the RPC insterface to a new reflection based RPC layer 2016-01-26 13:51:50 +01:00
f2ab351e8d Merge pull request #2136 from fjl/glog-prefix
logger/glog: improve vmodule
2016-01-25 23:35:25 +01:00
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
6e6931ef73 Merge pull request #2145 from caktux/develop
separate and optimize Dockerfile for master and develop
2016-01-22 21:55:13 +01:00
a2dc074b1d core, core/types, miner: fix transaction nonce-price combo sort 2016-01-22 12:33:34 +02:00
896c134d30 separate and optimize Dockerfile for master and develop 2016-01-22 04:03:41 -05:00
e4d794851b node, rpc/api: add debug_vmodule, move admin_verbosity to debug_verbosity 2016-01-21 13:37:38 +01:00
0edcbc797f logger/glog: add SetVmodule 2016-01-21 13:37:38 +01:00
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
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
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
f3d4ce0d16 core/state, ethdb, trie: test intermediate secure key leak, fix memdb bug 2016-01-20 16:06:28 +02:00
886478b18b core/state, trie: don't leak database writes before commit 2016-01-20 12:09:24 +02:00
e7f6798b59 Merge pull request #2130 from bas-vk/nodeinfo-format
Nodeinfo format Genesis and Header
2016-01-19 13:21:40 +01:00
cdd34fcb16 console: add admin.sleep and admin.sleepBlocks 2016-01-19 12:30:33 +01:00
6e7620afe0 eth: changed NodeInfo Genesis and Head types 2016-01-18 13:28:03 +01:00
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
2d5d6d9d0e core/state: always commit in batches, just finish if not needed later 2016-01-13 12:04:03 +02:00
752c75fb21 core/vm: resolve circular dependency to debug vm storage 2016-01-11 18:21:39 +02:00
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
e5b480b638 core: fix invalid state reuse in chain maker based tests 2016-01-11 16:53:06 +02:00
0ab8a175d8 Merge pull request #2110 from LefterisJP/determining_home_for_ubuntu_core
common: Fix HomeDir detection
2016-01-08 14:24:49 +01:00
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
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
a7fc4fa9b7 Merge pull request #2101 from karalabe/delete-outoffund-transactions
core: transaction invalidation and reorganization fixes
2016-01-05 12:26:28 +01:00
649787a9bf core: fix transaction reorg issues within the tx pool 2016-01-05 11:22:59 +02:00
9e011ff1cd core, eth/downloader: ensure state presence in ancestor lookup 2016-01-04 16:27:23 +02:00
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
1f39746886 eth/downloader: throttling tests are time-sensitive, don't run parallel 2015-12-30 14:42:21 +02:00
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
4811409e99 Merge pull request #2084 from bas-vk/rpcnilptr
console crash on nil ptr
2015-12-18 20:25:55 +01:00
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
fd69d2b7a8 Merge pull request #2019 from zsfelfoldi/light-state
Light state
2015-12-18 12:40:01 +01:00
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
1b89bd5d26 core/state, core/types use package rlp for state, receipt serialisation 2015-12-18 12:09:10 +01:00
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
2baf1de00d Merge pull request #1925 from fjl/p2p-dial-resolve
p2p: resolve incomplete dial targets
2015-12-18 11:31:55 +01:00
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
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
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
d1f507b7f1 p2p/discover: support incomplete node URLs, add Resolve 2015-12-17 23:38:54 +01:00
ef422ee1e1 light: implemented odr-capable trie and state structures 2015-12-17 16:07:54 +01:00
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
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
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
e51eeb8104 eth: fix #2076, where end of hash query was interpreted number query 2015-12-16 08:44:13 +02:00
f3aac71fad rpc/v2: optionally passing context argument to rpc v2 api methods 2015-12-16 03:48:08 +01:00
975c591261 core: tx pool skip price validation for "owned" transactions 2015-12-16 03:21:17 +01:00
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
9c636d2490 Merge pull request #2070 from karalabe/android-archives
Makefile, cmd/geth: support building Android archives
2015-12-14 21:32:00 +01:00
d8370a4e15 core, eth, node, rpc: port the admin and debug API 2015-12-14 19:36:51 +02:00
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
eae81465c1 rpc: new RPC implementation with pub/sub support 2015-12-14 16:34:05 +01:00
03f090b30b Makefile, cmd/geth: support building Android archives 2015-12-14 14:28:14 +02:00
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
b2ffb76ca2 Merge pull request #2058 from karalabe/geth-framework
Makefile, cmd/geth: assemble ios xcode frameworks
2015-12-09 18:04:27 +01:00
0e4deeb6e7 Makefile, cmd/geth: assemble ios xcode frameworks 2015-12-08 18:05:43 +02:00
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
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
032453b3e7 crypto: "Crypto" -> "crypto" in web3 key format 2015-12-07 17:01:29 +01:00
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
1cecda8333 core: write individual transactions and receipts too on fast sync 2015-12-04 15:30:59 +02:00
4dee2000a3 Merge pull request #2037 from fjl/no-libgmp
crypto/secp256k1: remove dependency on libgmp
2015-12-04 12:27:16 +02:00
fece1fa9be Merge pull request #2024 from obscuren/exp-logs
core: added a new RemovedLogEvent
2015-12-03 22:27:44 +01:00
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
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
9acec62cf8 Makefile: support 64bit ARM iOS cross builds 2015-12-03 20:33:24 +02:00
abb53644c6 p2p: always allow dynamic dials if network not disabled 2015-12-03 11:45:35 +02:00
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
98d68cfa91 Makefile: enable 64-bit ARM builds on Linux 2015-12-02 16:57:15 +02:00
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
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
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
96d86740a1 Merge pull request #2005 from zsfelfoldi/light-trie
Trie error handling
2015-12-01 12:28:26 +01:00
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
2e43414c79 accounts: increase re-lock timeout to account for slow CI servers 2015-12-01 13:20:43 +02:00
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
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
391ca61678 Makefile: build ARM v5/v6/v7, drop high API mobile clients 2015-12-01 12:40:55 +02:00
f801ec78ce Merge pull request #2020 from bas-vk/issue2016
eth package creates new event mux
2015-12-01 11:13:57 +01:00
61ca14bc44 eth: use global event mux instead 2015-12-01 11:01:40 +01:00
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
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
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
27a50c8f4b core/secp256k1: update libsecp256k1 Go wrapper and tests 2015-11-30 13:24:04 +01:00
1ead43c88c console: fix instance name printed incorrect on start 2015-11-30 09:49:10 +01:00
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
9af4065243 Makefile: enable iOS experimental builds (fix prev omission) 2015-11-29 17:52:52 +02:00
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
18ea468cf8 common: fix #2008, wrong hex prefix check 2015-11-27 19:32:46 +02:00
7dde2b902c Merge pull request #1970 from karalabe/customizable-protocol-stacks
Customizable protocol stacks
2015-11-27 10:41:22 +01:00
3e1000fda3 cmd, eth, node, rpc, xeth: use single-instance services 2015-11-27 11:06:12 +02:00
1e806c4c77 cmd, common, core, eth, node, rpc, tests, whisper, xeth: use protocol stacks 2015-11-27 11:06:12 +02:00
8a44451edf cmd: drop blocktest command, create gethrpctest program 2015-11-27 11:06:12 +02:00
9e1d9bff3b node: customizable protocol and service stacks 2015-11-27 11:06:12 +02:00
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
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
b9db5b37f2 Merge pull request #2001 from obscuren/fixes
cmd, crypto: updated web3
2015-11-26 23:00:05 +01:00
b1e0143444 cmd, crypto: fixed nil public keys and updated web3 2015-11-26 13:38:53 +01:00
168d0e9e45 Merge pull request #1996 from obscuren/whisper-spam-fix
whisper: fixed broadcast race
2015-11-25 13:19:45 +01:00
a0bf2ea7e7 accounts/abi: added output parsing & added call mechanism
Added calling mechanism and return value parsing
2015-11-25 12:23:29 +01:00
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
83a22b457c Makefile: support library build modes 2015-11-24 19:49:08 +02:00
2c42e54519 Makefile: add support for iOS cross compilation 2015-11-24 17:24:43 +02:00
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
f27e826b14 jrse: fix #1082, fail if setTimeout/setInterval lack callback 2015-11-23 13:03:31 +02:00
ae9e9efa31 Merge pull request #1991 from Gustav-Simonsson/common_tests
Update common test files
2015-11-23 10:26:21 +01:00
6bb29aebee Merge pull request #1666 from obscuren/create-transaction
rpc/api, xeth: added signTransaction method
2015-11-20 21:36:56 +01:00
314c031ff2 Merge pull request #1995 from karalabe/parametrize-crosscompile-go
Makefile: individual platforms, configurable Go runtime
2015-11-20 21:10:21 +01:00
fea819f74f Makefile: individual platforms, configurable Go runtime 2015-11-20 16:06:35 +02:00
220b0bf6e5 Update common test files 2015-11-20 12:53:36 +01:00
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
98cbe1356e miner: bugfix were blockhash in receipts and logs is left empty 2015-11-19 16:02:49 +01:00
b6f5523bdc eth/downloader: fetch data proportionally to peer capacity 2015-11-19 17:01:39 +02:00
4c2933ad82 Merge pull request #1993 from obscuren/remove-legalese
cmd/geth, cmd/utils: removed legalese
2015-11-19 15:29:49 +01:00
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
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
e86e0ecdc8 core, eth, miner, xeth: clean up tx/receipt db accessors 2015-11-19 16:03:32 +02:00
dd09af27af eth/downloader: run tests in parallel 2015-11-19 14:18:35 +01:00
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
db52a6a0ff eth: remove workaround for asynchronous processing in the downloader 2015-11-19 14:18:34 +01:00
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
1c63d08ed1 cmd/geth, cmd/utils: removed legalese
Removed the legalese confirmation dialog. This closes #1992
2015-11-19 12:03:33 +01:00
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
23f42d9463 Merge pull request #1964 from obscuren/evm-runtime
core/vm/runtime: added simple execution runtime
2015-11-18 17:39:27 +01:00
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
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
4a938406dc Merge pull request #1990 from karalabe/fix-whisper-autocomplete
rpc/api: fix #1986, newIdentity autocomplete
2015-11-18 12:32:39 +01:00
53f28e71dc rpc/api: fix #1986, newIdentity autocomplete 2015-11-18 13:03:20 +02:00
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
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
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
5159f8f649 crypto/secp256k1: raise internal errors as recoverable Go panic 2015-11-17 09:53:10 +01:00
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
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
9aa77a3769 cmd/geth, cmd/utils: surface the light KDF flag to the CLI 2015-11-10 15:47:19 +02:00
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
6e5349880e rpc/api: fix #1972 api regression (nil eth panic) in attach 2015-11-06 11:47:57 +02:00
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
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
5d89bbdda1 eth: fix error casting regression during database open 2015-11-05 16:59:16 +02:00
8e2bf42c46 event/filter: fix data race in the test 2015-11-05 16:55:53 +02:00
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
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
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
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
60e0abb595 whisper: fix datarace in expiration test 2015-11-05 13:36:25 +02:00
9dc5de51a2 tests: fix data race in bad-block-report disabling during tests 2015-11-05 13:29:50 +02:00
90655736ed cmd/geth: fix recover command crash if no param is supplied 2015-11-05 11:53:50 +02:00
bddb13d436 jsre: fix #1876, sleep too short on a slow test server 2015-11-05 11:36:10 +02:00
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
b658a73ed5 eth/downloader: fix dysfunctional ignore list hidden by generic set 2015-11-04 13:11:52 +02:00
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
dda3bf3ce7 Merge pull request #1943 from obscuren/abi-fixes
accounts/abi: ABI fixes & added types
2015-11-03 15:22:37 +01:00
6dfbbc3e11 Merge pull request #1948 from bas-vk/rpcfix
Infinite loop in filters
2015-11-03 15:22:02 +01:00
5ff0814b1f VERSION, cmd/geth: bumped version 1.4.0 2015-11-03 11:48:18 +01:00
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
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
c841e39476 Merge pull request #1954 from obscuren/regression-miner
miner: synchronise start / stop
2015-10-31 20:00:34 +01:00
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
016ad3e962 Merge pull request #1952 from obscuren/testnet-peers
eth: added new testnet peers
2015-10-30 11:00:31 +01:00
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
3c6e285d3b cmd/geth, cmd/utils, eth: group CLI flags by purpose 2015-10-30 11:33:12 +02:00
1bc789553a eth: added new testnet peers 2015-10-30 10:01:19 +01:00
1abbe05e93 Merge pull request #1951 from fjl/godeps-upgrade-goupnp
Godeps: upgrade github.com/huin/goupnp
2015-10-30 00:14:15 +01:00
f570b68ed1 p2p/nat: add docs for discover 2015-10-29 22:54:44 +01:00
bf11a47f22 Godeps: upgrade github.com/huin/goupnp to 90f71cb5 2015-10-29 22:53:59 +01:00
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
fc46cf337a Merge pull request #1946 from fjl/xeth-oom
Fix for xeth OOM issue
2015-10-29 17:42:55 +01:00
76410df6a2 rpc: return an unsupported error when "pending" was used to create a filter 2015-10-29 17:35:43 +01:00
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
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
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
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
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
05ea8926c3 cmd/utils, crypto: add --lightkdf flag for lighter KDF 2015-10-28 18:46:39 +01:00
667987e7d0 core: only reset head header/fastblock if stale 2015-10-28 17:40:24 +02:00
2019ed71b4 eth: don't block sync goroutines that short circuit 2015-10-28 16:41:01 +02:00
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
e46ab3bdcd eth, p2p, rpc/api: polish protocol info gathering 2015-10-28 12:44:15 +02:00
e655626268 makefile: dump mist leftover, add phony targets 2015-10-28 12:34:40 +02:00
04f8d05bd4 makefile: fix evm ld flags, pass them to xgo too 2015-10-28 12:31:20 +02:00
05f74077fb Merge pull request #1919 from ethersphere/getnatspec
rpc api: eth_getNatSpec
2015-10-28 10:49:53 +01:00
2e4fdce743 Merge pull request #1932 from fjl/gpo-defootgunize
eth, xeth: fix GasPriceOracle goroutine leak
2015-10-28 10:32:35 +01:00
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
57ab147388 update Dockerfile, remove supervisord and unattended-upgrades 2015-10-26 18:06:19 -04:00
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
3b4ffacd0c bump VERSION to 1.3.0 2015-10-25 17:49:01 -04:00
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
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
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
6b5d077c09 fix console history, lines with leadning whitespace NOT included 2015-10-23 20:37:12 +02:00
145366c07e tests: update JSON files, add new wrappers 2015-10-23 14:25:18 +02:00
3cf74336c9 eth: time out status message exchange after 5s 2015-10-22 22:22:04 +02:00
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
dce503779b Merge pull request #1840 from ethersphere/console
console, cli, api fixes
2015-10-22 09:27:05 -07:00
28c7b54d68 core: fix #1921, decode all receipt field, not just consensus 2015-10-22 13:09:30 +03:00
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
58d0752fdd Merge pull request #1883 from obscuren/jit-vm-optimisations
core/vm: JIT segmentation
2015-10-21 12:34:32 -07:00
0467a6ceec Merge pull request #1889 from karalabe/fast-sync-rebase
eth/63 fast synchronization algorithm
2015-10-21 11:44:22 -07:00
5b0ee8ec30 core, eth, trie: fix data races and merge/review issues 2015-10-21 16:49:55 +03:00
dba15d9c36 Merge pull request #1918 from obscuren/get-hash-fix
core, tests: get_hash fix
2015-10-21 03:54:59 -07:00
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
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
aa0538db0b eth: clean out light node notions from eth 2015-10-19 10:03:10 +03:00
a9d8dfc8e7 core, eth: roll back uncertain headers in failed fast syncs 2015-10-19 10:03:10 +03:00
b97e34a8e4 eth/downloader: concurrent receipt and state processing 2015-10-19 10:03:10 +03:00
ab27bee25a core, eth, trie: direct state trie synchronization 2015-10-19 10:03:09 +03:00
832b37c822 core, eth: receipt chain reconstruction 2015-10-19 10:03:09 +03:00
42c8afd440 core: differentiate receipt concensus and storage decoding 2015-10-19 10:03:09 +03:00
b99fe27f8b core: fix block canonical mark / content write race 2015-10-19 10:03:09 +03:00
f186b39018 eth/downloader: add fast and light sync strategies 2015-10-19 10:03:09 +03:00
c33cc382b3 core: support inserting pure header chains 2015-10-19 10:03:09 +03:00
92f9a3e5fa cmd, eth: support switching client modes of operation 2015-10-19 10:03:09 +03:00
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
8c85532412 core/vm: added parsing utilities 2015-10-16 22:30:42 +02:00
b196278044 core/vm: added JIT segmenting / optimisations
* multi-push segments
* static jumps segments
2015-10-16 22:30:42 +02:00
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
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
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
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
d5f56ad5c5 godeps: update ethash following GPU miner merge 2015-10-16 16:27:51 +02:00
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
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
1b1f293082 core/state, core, miner: handle missing root error from state.New 2015-10-16 02:22:06 +02:00
f466243417 Merge pull request #1853 from Gustav-Simonsson/libsecp256k1_update
Update libsecp256k1, Go wrapper and tests
2015-10-15 10:46:57 -07:00
30f057aaf9 eth/filters: added benchmark 2015-10-15 19:45:44 +02:00
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
2f1f2e4811 Merge pull request #1887 from Gustav-Simonsson/icap
common, crypto: add ICAP functions
2015-10-15 10:32:05 -07:00
2db9798646 common, crypto: add ICAP functions 2015-10-13 17:44:14 +02:00
402fd6e8c6 core, eth, event, miner, xeth: fix event post / subscription race 2015-10-12 16:22:03 +03:00
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
af9afb686b core/vm: copy stack element to prevent overwrites 2015-10-12 00:14:35 +03:00
f32fa075f1 core/secp256k1: update libsecp256k1 Go wrapper and tests 2015-10-09 14:47:55 +02:00
315a422ba7 Merge pull request #1888 from obscuren/testnet
cmd, core, eth: added official testnet
2015-10-09 01:31:37 -07:00
1de796f101 cmd, core, eth: added official testnet 2015-10-08 22:01:39 +02:00
9e91579105 Merge pull request #1885 from karalabe/olympic-fix
cmd: properly initialize Olympic for all subcommands
2015-10-08 11:33:28 -07:00
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
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
2547c9c9b7 cmd: properly initialize Olympic for all subcommands 2015-10-07 18:25:33 +03:00
ec6a548ee3 all: Add GPU mining, disabled by default 2015-10-07 13:19:30 +02:00
27528ad3d2 Merge pull request #1851 from bas-vk/historyfile
console/history respect datadir
2015-10-07 01:51:13 -07:00
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
e1616f77c7 core, core/vm, cmd/evm: remove redundant balance check 2015-10-06 12:42:34 +02:00
44fd395141 Merge pull request #1879 from obscuren/versioning
cmd/geth: dev version number
2015-10-05 12:35:42 -07:00
7b44b8aece cmd/geth: dev version number 2015-10-05 21:11:39 +02:00
13699e2dd9 Merge pull request #1877 from obscuren/head-write
core: fixed head write on block insertion
2015-10-05 11:00:57 -07:00
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
5b34fa538e Merge pull request #1756 from obscuren/core-refactor
core, core/vm: refactor
2015-10-05 07:14:01 -07:00
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
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
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
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
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
47f62a67aa eth/downloader: match capabilities when querying idle peers 2015-10-02 13:20:41 +03:00
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
49ae538506 Merge pull request #1405 from fjl/lean-trie
core, trie: new trie
2015-10-01 04:34:38 -07:00
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
74578ab22b common: fix #1818, secondary datadir paths to fall back to 2015-10-01 12:26:19 +03:00
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
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
631bf36102 p2p/discover: remove unused lastLookup field 2015-09-30 16:23:03 +02:00
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
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
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
b8b996be74 core: fix a formatting loop in BadHashError 2015-09-29 09:11:38 +03:00
1d20b0247c Update libsecp256k1 2015-09-28 17:46:38 +02:00
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
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
8636f0e1c3 console/history respect datadir 2015-09-25 13:08:48 +02:00
830ddcee60 core: fix #1848, block receipts db entry for the genesis too 2015-09-24 19:38:59 +03:00
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
36f46a61a7 Merge pull request #1844 from obscuren/version-file
VERSION: added version
2015-09-23 05:48:00 -07:00
6e1dc321f4 VERSION: added version 2015-09-23 14:47:20 +02:00
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
f459a3f0ae eth/downloader: always send termination wakes, clean leftover 2015-09-23 12:39:17 +03:00
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
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
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
c1a352c108 trie: add merkle proof functions 2015-09-22 22:57:37 +02:00
a2d5a60418 core, core/state: batch-based state sync 2015-09-22 22:57:37 +02:00
565d9f2306 core, trie: new trie 2015-09-22 22:53:49 +02:00
6b91a4abe5 trie: improve benchmarks 2015-09-22 22:49:27 +02:00
bfde1a4305 core: Add BadHashErr and test for BadHashes handling 2015-09-22 18:02:26 +02:00
3340b56593 crypto: correct sig validation, add more unit tests 2015-09-22 17:33:39 +02:00
e56cbc225e Merge pull request #1835 from karalabe/make-cross
makefile: built in cross compilation targets
2015-09-21 11:47:10 -07:00
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
6a05c569f2 makefile: built in cross compilation targets 2015-09-21 21:36:01 +03:00
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
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
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
5621308949 tests: add test for StateTests/stCallCodes.json 2015-09-21 11:34:02 +02:00
399c920380 core: separate and contain POW verifier, extensive tests 2015-09-21 10:24:49 +03:00
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
b94b9b0158 Merge pull request #1817 from obscuren/nonce-fix
core: transaction nonce recovery
2015-09-18 15:56:10 -07:00
47ca6904b3 tests: use lastblockhash field to validate reorgs and block headers 2015-09-18 17:48:31 +02:00
075815e5ff tests: update common test wrappers and test files 2015-09-18 13:08:36 +02:00
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
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
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
bdf4fd6091 Merge pull request #1813 from kobigurk/develop
cmd/geth: extradata is correcly initialized with console
2015-09-17 19:25:32 +02:00
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
6f3cb12924 core: allow modifying test-chain block times 2015-09-17 13:43:52 +03:00
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
1a1a1ee4ff cmd/geth: extradata is correcly initialized with console 2015-09-16 21:01:21 +03:00
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
2f65ddc501 jsre: timer bugfix when clearInterval was called from within the callback 2015-09-16 11:57:33 +02:00
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
821619e1c3 core, eth, miner: use pure header validation 2015-09-16 10:46:28 +03:00
e9a80518c7 Merge pull request #1744 from kobigurk/develop
adds extradata flag
2015-09-15 13:56:10 -07:00
321733ab23 cmd/geth: adds extradata flag 2015-09-15 23:35:36 +03:00
d4d3fc6a70 jsre, rpc/api: pull in new web3 and use hex numbers 2015-09-15 17:05:12 +03:00
99b62f36b6 eth/downloader: header-chain order and ancestry check 2015-09-15 14:45:53 +03:00
0a7d059b6a eth, rpc: standardize the chain sync progress counters 2015-09-15 14:45:53 +03:00
55bdcfaeac Merge pull request #1806 from ethersphere/solc2
new solc api - late fixes
2015-09-15 01:08:30 -07:00
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
b252589960 ethdb: remove Flush 2015-09-14 23:36:30 +02:00
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
8b32f10f16 ethdb: add NewBatch 2015-09-14 23:36:30 +02:00
8c4dab77ba all: move common.Database to package ethdb 2015-09-14 23:36:30 +02:00
071e2cd08e Merge pull request #1786 from ethersphere/solc
common/compiler: new solc API
2015-09-14 23:32:40 +02:00
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
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
0d40727775 Change go-uuid to use the current supported repository. 2015-09-12 16:49:24 +06:00
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
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
f1a4b330dd Merge pull request #1796 from karalabe/ethash-android-support
godeps: pull in ethash android fix
2015-09-11 15:26:01 -07:00
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
cdc2662c40 core: split out TD from database and all internals 2015-09-11 17:42:25 +03:00
2b339cbbd8 core, eth: split the db blocks into headers and bodies 2015-09-11 17:42:25 +03:00
3e6964b841 rpc/comms: fix #1795, ensure IPC path exists before binding 2015-09-11 17:03:31 +03:00
c6013725a8 godeps: pull in ethash android fix 2015-09-11 15:53:23 +03:00
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
b81a6e6ab8 core, core/vm, core/state: remove unused functions 2015-09-10 21:10:58 +02:00
62bbf8a09e Merge pull request #1778 from fjl/rlp-trie-changes
rlp: precursor changes for trie, p2p
2015-09-10 12:02:16 -07:00
4ce3dfe9c8 common: Update README.md for the current package name 2015-09-10 23:59:38 +06:00
fc8b246109 rlp: move ListSize to raw.go 2015-09-10 19:41:51 +02:00
24bb68e7cf rlp: add RawValue 2015-09-10 19:41:51 +02:00
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
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
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
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
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
bf879ef230 core/state: test formatting adhering to Go convention 2015-09-09 00:26:18 +02:00
004ed786b4 core/state: deleted field in StateObject Copy() and unit test 2015-09-08 15:56:11 +02:00
652eea71fe put unlock after lock 2015-09-08 12:42:29 +02:00
618065895b agent/miner Prevent the CpuAgent to be started multiple times 2015-09-08 11:27:55 +02:00
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
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
4ea81f170a rpc/comms: fix bug attaching the console over http 2015-09-07 15:09:59 +01:00
f69121357d cmd/geth Autocompletion bugfix which let the console crash 2015-09-06 16:25:55 +02:00
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
ebbe25ee71 Merge pull request #1764 from kobigurk/honor_ipc_datadir
honors datadir when attaching
2015-09-03 10:48:23 +03:00
1a86adc5a2 cmd/geth: honor datadir when attaching 2015-09-03 10:28:30 +03:00
e98854588b Merge pull request #1761 from CJentzsch/patch-3
fix block time issue
2015-09-02 15:13:14 -07:00
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
b2c17a5a63 Merge pull request #1726 from Gustav-Simonsson/update_tests
Add TestBcForkUncle tests & update JSON files
2015-09-02 22:02:44 +02:00
e9b031b88b Merge pull request #1755 from fjl/coinbase
core: improve block gas tracking
2015-09-01 23:36:05 +02:00
00b45acb9e core: improve block gas tracking 2015-09-01 23:11:03 +02:00
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
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
1f1d73ab74 eth/downloader: fix race causing occasional test failure 2015-09-01 16:11:14 +03:00
67225de255 Filter on addresses should work as an OR not an AND. 2015-09-01 09:19:45 +02:00
540eb3d02d Pull in ethash and go-isatty updates
Fixes build on OpenBSD.
2015-08-31 12:14:32 -04:00
fe8093b71f Add TestBcForkUncleTests and update JSON files 2015-08-31 16:45:00 +02:00
9dc23ce284 Merge pull request #1742 from fjl/rpc-receipt-root
rpc: add receiptRoot to getBlock* responses
2015-08-31 14:50:21 +02:00
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
8b12bcc0ac rpc: add receiptRoot to getBlock* responses
Fixes #1679
2015-08-29 11:12:01 +02:00
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
2d1ced8759 Merge pull request #1739 from bas-vk/empty-password
rpc/api allow empty password
2015-08-28 13:14:51 +02:00
39e9560600 rpc/api allow empty password 2015-08-28 12:49:41 +02:00
d9addf79fa Improve error string and remove unneeded else clause 2015-08-28 03:42:01 +02:00
cfd84a6ad9 build: avoid -X separator warning with Go >= 1.5 2015-08-27 13:26:13 +02:00
6ec13e7e2b Merge pull request #1701 from karalabe/eth62-sync-rebase
eth: implement eth/62 synchronization logic
2015-08-27 00:03:59 +02:00
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
14370a2260 Merge pull request #1718 from caktux/develop
add missing shh_getMessages to RPC mappings
2015-08-26 18:55:51 +02:00
3df6f3fc14 Merge pull request #1721 from bas-vk/console-error-parsing
Improved console error handling
2015-08-26 18:55:31 +02:00
847794a321 Merge pull request #1722 from bas-vk/remote-deleteaccount
Remove personal.deleteAccount from RPC interface
2015-08-26 18:02:51 +02:00
829201382b rpc: return error code for eth_getWork when no work ready 2015-08-26 12:46:50 +02:00
5dd2462816 rpc/api - remove personal.deleteAccount from RPC interface 2015-08-26 11:39:43 +02:00
f448310eef bugfix console error handling 2015-08-26 11:33:02 +02:00
101418b275 common/compiler: fix #1598, expose solidity errors 2015-08-26 10:04:23 +03:00
a1d8015817 add missing shh_getMessages to RPC mappings 2015-08-25 14:42:57 -04:00
17f65cd1e5 eth: update metrics collection to handle eth/62 algos 2015-08-25 17:48:47 +03:00
47a7fe5d22 eth: port the synchronisation algo to eth/62 2015-08-25 17:48:47 +03:00
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
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
7324176f70 Add tests for uncle timestamps and refactor timestamp type 2015-08-25 04:46:11 +02:00
ca88e18f59 eth: kill off protocol eth/60 in preparation for eth/62 2015-08-24 17:57:28 +03:00
42f44dda54 eth, eth/downloader: handle header requests, table driven proto tests 2015-08-24 17:57:28 +03:00
d910148a96 Set ipc channel as user agent client 2015-08-24 12:41:34 +02:00
c51e153b5c eth, metrics, p2p: prepare metrics and net packets to eth/62 2015-08-21 10:30:57 +03:00
d51d0022ce cmd/geth: bumped version 1.1.0 2015-08-20 21:43:36 +02:00
3793991c0e remove 0x 2015-08-20 18:50:47 +02:00
b884d6ebaa canary update 2015-08-20 18:38:21 +02:00
36f7fe61c3 core, tests: Double SUICIDE fix 2015-08-20 18:22:50 +02:00
54088b0b8b cmd/geth: bumped version 1.0.3 2015-08-20 13:08:08 +02:00
9fb7bc7443 geth: bumped version 1.0.2 2015-08-19 23:05:39 +02:00
e2d44814a5 Merge pull request #1694 from obscuren/hide-fdtrack
fdtrack: hide message
2015-08-19 13:50:54 -07:00
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
61a6911eeb Merge pull request #1689 from fjl/discover-ignore-temp-errors
p2p, p2p/discover: small fixes
2015-08-19 12:55:40 -07:00
9bf17eb05a rpc/comms reconnect ipc client after write error 2015-08-19 21:48:56 +02:00
269c5c7107 Revert "fdtrack: temporary hack for tracking file descriptor usage"
This reverts commit 5c949d3b3b.
2015-08-19 21:46:01 +02:00
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
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
edccc7ae34 p2p: continue listening after temporary errors 2015-08-19 14:39:04 +02:00
7d5ff770e2 p2p/discover: continue reading after temporary errors
Might solve #1579
2015-08-19 14:38:55 +02:00
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
941920f2aa eth: fix an issue with pulling and inserting blocks twice 2015-08-19 15:14:26 +03:00
3b997c3e16 Merge pull request #1454 from ethersphere/frozen-cryptoclean
crypto: remove obsolete code
2015-08-19 02:39:02 -07:00
0737cbc5c1 Merge pull request #1683 from ethereum/travis
Switch from Coveralls to Codecov code coverage service
2015-08-18 14:26:14 -07:00
227ff4d2d6 Merge pull request #1682 from obscuren/readme-improvements
Updated README, Added CONTRIBUTING
2015-08-18 14:16:42 -07:00
18d450b2d0 Updated README, Added CONTRIBUTING 2015-08-18 23:00:15 +02:00
cc87551edc Codecov integration 2015-08-18 22:46:48 +02:00
d0dc1b4a60 Merge pull request #1681 from obscuren/miner-receipt-fix
core, miner: write miner receipts
2015-08-18 12:53:26 -07:00
b4369e1015 core, miner: write miner receipts 2015-08-18 21:46:26 +02:00
4d5501c46a cmd/geth: Fix chain purging from cmd line 2015-08-18 15:56:37 +02:00
d4da2f630e crypto: remove obsolete key files 2015-08-18 01:25:04 +02:00
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
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
2497f28aa9 Merge pull request #1627 from zsfelfoldi/gpo
GPO update
2015-08-17 06:37:58 -07:00
49ece3155c GPO update 2015-08-17 15:20:33 +02:00
8839fee415 rpc/api: return boolean value for eth_submitHashrate 2015-08-17 15:09:30 +02:00
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
7ea30f18f9 Merge pull request #1674 from tgerring/bootnodes
Added SG bootnode
2015-08-17 05:56:38 -07:00
12805c738c Merge pull request #1667 from fjl/pretty-printer-improvements
jsre: pretty printer improvements
2015-08-17 05:55:09 -07:00
80b294c3c7 Update CPP pubkey 2015-08-17 14:51:27 +02:00
8884f856ef Added SG bootnode 2015-08-17 14:36:57 +02:00
309788de37 rpc: update the xeth over RPC API to use the success/failure messages 2015-08-17 14:04:20 +03:00
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
1c3ca3ce6a xeth: max gas limit 2015-08-16 15:27:30 +02:00
8603ec7055 rpc/api: format pendingTx response. Fixes #1648 2015-08-16 11:12:22 +02:00
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
49703bea0a jsre: bind the pretty printer to "inspect" in JS 2015-08-15 23:55:42 +01:00
59b28cfa31 Merge pull request #1663 from obscuren/issue-1662
xeth: added a transact mu
2015-08-15 14:55:04 -07:00
5c5c3930b7 Merge pull request #1659 from bas-vk/exec-output
Javascript --exec output
2015-08-15 06:23:29 -07:00
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
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
c472b8f725 main clear current line on ctrl-C 2015-08-14 13:23:41 +02:00
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
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
87d1cde7e4 main print console output for js statement given by the exec argument 2015-08-14 13:06:34 +02:00
28b14d3e6d Merge pull request #1635 from bas-vk/useragent
support for user agents
2015-08-13 16:25:33 -07:00
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
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
a89cfe92cc Merge pull request #1470 from ebuchman/encHandshake
p2p: validate recovered ephemeral pubkey
2015-08-13 11:59:27 +02:00
0b0b31c7d2 Merge pull request #1651 from karalabe/rlp-boolean-support
rlp: boolean support
2015-08-13 11:10:26 +02:00
1d2420323c rlp: add support for boolean encoding/decoding 2015-08-13 12:05:39 +03:00
0dd6911c62 Merge pull request #1647 from fjl/fix-disc-reason
p2p: fix value of DiscSubprotocolError
2015-08-12 21:20:21 +02:00
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
0d10d5a0a5 p2p: fix value of DiscSubprotocolError
We had the wrong value (12) since forever.
2015-08-12 14:15:54 +02:00
31a2793662 cmd/geth: remove spaces in client identifier 2015-08-12 13:32:52 +02:00
f9cbd16f27 support for user agents 2015-08-12 12:22:16 +02:00
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
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
9cacec70f9 cmd/evm, core/vm, tests: changed DisableVm to EnableVm 2015-08-11 18:43:22 +02:00
94b6f38869 Merge pull request #1641 from obscuren/web3-update
web3: updated
2015-08-11 08:55:55 -07:00
bf6ea2919d web3: updated 2015-08-11 17:17:20 +02:00
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
67c8ccc309 cmd/ethtest: added trace flag for debugging 2015-08-11 11:46:52 +02:00
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
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
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
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
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
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
eec38c5853 cmd/geth, core/vm: setup vm settings and defaulted JIT disabled 2015-08-09 02:06:16 +02:00
c93f0b9f4b Merge pull request #1490 from obscuren/jit-vm
core/vm: jit vm
2015-08-08 06:36:26 -07:00
a23478c0be core, eth, trie, xeth: merged state, chain, extra databases in one 2015-08-07 22:29:02 +02:00
312128384b Merge pull request #1620 from caktux/develop
string version for build server
2015-08-07 11:41:41 -07:00
3ccab5a1e8 string version for build server 2015-08-07 14:13:33 -04:00
dcb23bc3ab Merge pull request #1615 from obscuren/contract-addr-fix
xeth: fixed contract addr check
2015-08-07 05:38:02 -07:00
b6c5b3b4a7 xeth: fixed contract addr check 2015-08-07 14:32:06 +02:00
d7580f21f6 Merge pull request #1595 from obscuren/extra-data
cmd/geth, eth: added canonical extra data
2015-08-07 05:00:36 -07:00
b1fac4270d Merge pull request #1614 from obscuren/web3-finite-fix
web3: regression. Fixes #1613
2015-08-07 04:59:15 -07:00
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
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
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
a33726b7db web3: regression. Fixes #1613 2015-08-07 12:33:12 +02:00
132df860d9 miner, rpc: added length check for extra data 2015-08-07 12:24:44 +02:00
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
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
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
cf7cef4293 xeth: added address hex check and length check 2015-08-07 09:52:12 +02:00
698e98d981 Merge pull request #1600 from ethereum/fix-tests-windows
Fix tests on windows
2015-08-06 12:39:29 -07:00
a3b8169938 Merge pull request #1603 from ebuchman/trie_hex_fix
trie: hex fix
2015-08-06 12:02:55 -07:00
46c9594081 trie: run codec tests, add benchmarks, faster 2015-08-06 14:04:16 -04:00
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
803096ca0f .gitattributes: add 2015-08-06 17:18:59 +02:00
6ee908848c p2p/nat: disable UPnP test on windows 2015-08-06 17:18:59 +02:00
3832019964 common/compiler, common/docserver, jsre: fix tests on windows 2015-08-06 17:18:59 +02:00
eae1191904 cmd/utils: fix path expansion on windows 2015-08-06 17:18:59 +02:00
78b101e15d common: remove windows path functions
They were unused and their tests failed on Windows.
2015-08-06 16:43:43 +02:00
74f6d90153 cmd/utils, core: disable exp diff for olympic net 2015-08-06 13:29:06 +02:00
c32073b11f miner, rpc: added submit hashrate for remote agents 2015-08-06 12:58:54 +02:00
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
c1d516546d faster hex-prefix codec and string -> []byte 2015-08-06 03:17:59 -04:00
82ef26f600 Merge branch 'develop' 2015-08-05 18:41:08 +02:00
ee5728ec03 fake commit for build server :( 2015-08-05 18:41:00 +02:00
9a02f53726 Merge branch 'develop' 2015-08-05 18:35:28 +02:00
98100f472c cmd/geth: bumped version number 2015-08-05 18:35:23 +02:00
80e5f50713 Merge branch 'develop' 2015-08-05 18:08:52 +02:00
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
35f271b264 miner, core: sort txs by price, nonce 2015-08-05 17:44:19 +02:00
f12e0161ca Merge pull request #1588 from obscuren/diff-bomb
core, miner: added difficulty bomb
2015-08-05 04:26:57 -07:00
71d32f54f7 core, miner: added difficulty bomb 2015-08-05 13:09:09 +02:00
1f4ac6b05a Merge pull request #1587 from obscuren/miner-race
miner: fixed worker race condition
2015-08-05 01:50:49 -07:00
d8590d9790 miner: fixed worker race condition 2015-08-04 20:54:21 +02:00
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
26c6e3b206 miner: gas limit strategy, target 3141592 & def gas price 50 Shannon 2015-08-04 15:20:28 +02:00
b01f2c29ae Merge pull request #1574 from fjl/fdtrack
fdtrack: hack to track file descriptor usage
2015-08-04 03:51:16 -07:00
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
17b481e3c3 Merge pull request #1581 from obscuren/olympic
cmd, core, eth: support for the olympic network
2015-08-04 00:54:07 -07:00
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
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
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
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
97cdf84899 Merge pull request #1479 from tgerring/ethtest
Update ethtest default path for BlockTests
2015-08-03 07:18:48 -07:00
98db08c42f Merge pull request #1548 from fjl/accounts-test-deflake
accounts: bump timeout in TestSignRace
2015-08-03 07:16:36 -07:00
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
db988a46dd Merge pull request #1569 from obscuren/default-genesis
core: added default genesis block
2015-08-03 04:49:30 -07:00
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
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
5aec1d94ad accounts: bump timeout and spin less in TestSignRace
This should fix the flakeyness.
2015-08-02 00:49:53 +02:00
a8b39b5cc0 Merge pull request #1541 from bas-vk/issue1518
Improved error handling for NewTransactionFromBytes
2015-08-01 08:47:32 -07:00
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
ab85a3593a Merge pull request #1545 from obscuren/log-index
core/state: Set log index. Closes #1226
2015-07-31 10:36:42 -07:00
c1c06fffcb Merge pull request #1561 from karalabe/add-missing-autocompletes
rpc/api: add missing autocomplete commands
2015-07-31 03:09:08 -07:00
6628eeb6ca jsre: leave out lines from history containing methods of the personal module 2015-07-31 11:51:18 +02:00
0d3a8ad6dd rpc/api: add missing autocomplete commands 2015-07-31 12:46:16 +03:00
4231de3914 Merge pull request #1553 from prusnak/develop
remove elliptic.P224 usage
2015-07-30 03:59:25 -07:00
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
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
d261c3f455 rpc: to in Call no longer required. Fixed eth_estimateGas 2015-07-29 15:12:12 +02:00
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
f715547fc7 core/state: Set log index. Closes #1226 2015-07-29 15:08:59 +02:00
fa286688ab Merge pull request #1546 from obscuren/tests-update
tests: updated
2015-07-29 06:07:19 -07:00
03c39d4fc0 tests: updated 2015-07-29 15:01:42 +02:00
6adbaabc65 eth, eth/downloader: don't report stall if fetcher filled the block 2015-07-29 15:39:08 +03:00
81e2124ea2 improved error detection and handling for NewTransactionFromBytes
integrated review comments
2015-07-29 10:30:00 +02:00
cc27be9d44 Merge pull request #1543 from enriquefynn/develop
FreeBSD support
2015-07-28 16:20:13 -07:00
7065ebd2ed FreeBSD support 2015-07-28 19:16:16 -03:00
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
1fad8798ec Merge pull request #1515 from fjl/license-fixes
all: fix license headers one more time
2015-07-28 04:29:42 -07:00
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
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
453d2c9ce1 crypto: fix build with Go 1.5 2015-07-27 19:13:45 +02:00
1356daad27 etherbase defaults to first account even if created during the session 2015-07-27 10:50:29 +02:00
d18d256442 Merge pull request #1529 from obscuren/extra-data-fix
core: genesis extra data field fix
2015-07-26 15:15:36 -07:00
3530acb9e2 core: genesis extra data field fix 2015-07-26 14:44:54 +02:00
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
1e241e84f7 params: reduce extra data to 32 bytes 2015-07-26 12:47:57 +02:00
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
c1c895a36b core: fixed genesis write out to write only canon number 2015-07-25 21:48:53 +02:00
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
665eaff9b9 Merge pull request #1520 from obscuren/reward-5eth
core: 5 ether block reward
2015-07-25 08:57:33 -07:00
9afda6ab8c core: 5 ether block reward 2015-07-25 17:47:20 +02:00
3adaeb1dbc eth: set default miner extra to client name 2015-07-25 17:36:56 +02:00
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
4019e2a6f2 Merge pull request #1497 from obscuren/remove-rle
ethdb, trie: removed RLE compression
2015-07-25 08:35:40 -07:00
f6097f4a0a Merge pull request #1522 from obscuren/genesis-block-check
core: check genesis block before writeout
2015-07-25 08:10:08 -07:00
d4428cc77f Merge pull request #1523 from obscuren/lower-gasprice
cmd/util: lowered default gas price
2015-07-25 08:09:55 -07:00
ba15f9d282 cmd/util: lowered default gas price 2015-07-25 17:03:10 +02:00
0c718afe90 core: check genesis block before writeout 2015-07-25 16:53:35 +02:00
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
6cffa743ee Merge pull request #1519 from obscuren/develop
web3: updated 0.9.1
2015-07-25 04:06:43 -07:00
5001f778aa web3: updated 0.9.1 2015-07-25 12:22:39 +02:00
cd657b9878 Godeps: use BSD-licensed version of gopkg.in/karalabe/cookiejar.v2 2015-07-24 14:23:02 +02:00
67598d9d08 crypto/sha3: add full license headers 2015-07-24 12:32:58 +02:00
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
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
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
8f56eea77d ethdb, trie: removed RLE compression 2015-07-23 12:57:33 +02:00
8fc9830971 cmd/core,xeth: removed unneeded states & added batch writes 2015-07-23 10:45:31 +02:00
0cff61beda Merge pull request #1510 from fjl/license-fixes
all: license fixes
2015-07-23 01:43:11 -07:00
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
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
04bb89604e core: fix an RLP encoding data race due to deep struct copy 2015-07-22 20:54:53 +03:00
0428cae226 remove LICENSE files 2015-07-22 18:54:45 +02:00
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
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
c7e7778f2a cmd, core, eth, ethdb: cache flag to allocate memory for db internal use 2015-07-22 14:00:52 +03:00
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
d103af5dd4 Disassociate test directory from test name 2015-07-22 11:39:36 +01:00
ed1d2f858e Merge pull request #1481 from tgerring/legalese
Legalese updates
2015-07-22 03:35:33 -07:00
482cc4957d Merge pull request #1500 from karalabe/fix-miner-race
miner: fix current work data race
2015-07-22 03:16:13 -07:00
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
cf5313f13e Update disclaimer 2015-07-20 18:49:25 +02:00
06d5898d6a crypto: remove debug print call after decrypting a key from disk 2015-07-20 18:04:23 +02:00
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
8160b8618d Fixed canary to require 2+ nonzero, not sum 2+ 2015-07-20 16:28:28 +02:00
3029349761 miner: fix current work data race 2015-07-20 14:37:43 +03:00
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
3642441ca3 xeth: fix #1485, data race in fiilter creation and event firing 2015-07-20 14:02:02 +03:00
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
26c0fa1cb0 Merge pull request #1480 from obscuren/miner-state-sync
miner: moved state sync
2015-07-19 05:03:59 -07:00
a38f3740d6 Merge pull request #1488 from ethereum/travis
Travis container support
2015-07-18 09:05:29 -07:00
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
5a41326521 Travis container support 2015-07-18 16:12:48 +02:00
cefd948267 rlp: reject trailing data when using DecodeBytes 2015-07-18 01:47:17 +02:00
593b1b65e7 tests: document RLP tests 2015-07-17 15:42:23 +02:00
5da82077d1 cmd/ethtest, tests: add support for RLP JSON tests 2015-07-17 15:13:24 +02:00
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
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
e954375109 Merge pull request #1469 from obscuren/smart-mining
miner: smart mining
2015-07-16 04:39:07 -07:00
618991f136 Move text to separate file 2015-07-16 13:34:34 +02:00
bc6b6932d0 Merge pull request #1476 from obscuren/deadlock-logs
xeth: removed mutex lock
2015-07-16 03:35:43 -07:00
1909d26fe2 Prompt user to accept legalese when datadir doesn't exist 2015-07-16 12:27:42 +02:00
b1d0d3c0ed xeth: removed unneeded mutex lock 2015-07-16 11:04:53 +02:00
9addb3df3a Merge pull request #1475 from obscuren/issue1473
core: during chain reorg rewrite receipts and transactions
2015-07-15 13:17:07 -07:00
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
cecc9cdd2f Merge pull request #1468 from Gustav-Simonsson/xeth_transact_logging
xeth: log signed tx hash
2015-07-15 11:35:51 -07:00
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
37efd08b42 p2p: validate recovered ephemeral pubkey against checksum in decodeAuthMsg 2015-07-14 03:06:44 +00:00
afba798357 xeth: log signed tx hash 2015-07-13 03:09:02 +02:00
796c18db93 Merge pull request #1462 from obscuren/genesis
core: genesis preparation
2015-07-12 03:45:45 -07:00
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
5a810758db cmd/geth: bump version 0.9.39 2015-07-09 18:07:52 +02:00
6f9377475c Merge branch 'release/0.9.38' into develop 2015-07-09 18:06:49 +02:00
98f4c936f2 Merge branch 'release/0.9.38' 2015-07-09 18:06:39 +02:00
344277d026 cmd/geth: version bump 0.9.38 2015-07-09 17:43:45 +02:00
3add8cfdb0 Merge pull request #1452 from obscuren/develop
core/vm: added str to op
2015-07-09 08:42:38 -07:00
8b5a65c14a core/vm: added str to op 2015-07-09 17:08:33 +02:00
0646cc8d14 Merge pull request #1453 from ethersphere/frozen-accounts
accounts, crypto: fixed file naming for windows
2015-07-09 08:08:09 -07:00
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
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
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
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
dd140beb73 Merge pull request #1443 from Gustav-Simonsson/core_uint64_ts
Core uint64 ts
2015-07-09 07:22:38 -07:00
06afabb631 Merge pull request #1436 from bas-vk/net_version
added net.version
2015-07-09 07:22:20 -07:00
505b77a0d5 Merge pull request #1432 from tgerring/develop
Adjust .mailmap
2015-07-09 07:21:41 -07:00
c3f5403b64 fix wallet key duplicate write - how did it get there? mystery. fixes #1411 2015-07-09 14:07:35 +01:00
589f1c85b9 : colon => dash - in keyfile name - slight deviation from ISO8601 for WIN FS compatibility 2015-07-09 13:55:09 +01:00
492d5454b1 eth/downloader: drop peer if advertised TD but won't delvier 2015-07-09 14:40:18 +03:00
4f95e2f9ec eth: calculate the correct TD, only update if better 2015-07-09 13:55:06 +03:00
eb2d168710 eth, ethdb: fix a data race during startup/shutdown 2015-07-09 12:44:07 +03:00
d25634662b web3: updated 2015-07-08 15:47:33 +02:00
819ecd4508 miner, xeth: fire log event during mining. Fix return raw tx 2015-07-08 15:34:11 +02:00
5d6d40f329 Use uint64 on ts in chain_manager, block_processor 2015-07-08 13:21:06 +02:00
b08abe64e4 Unskip SimpleTx3, check err in pre/post state validations 2015-07-08 13:09:22 +02:00
0b53a5c673 Update Ethereum JSON test files and wrappers 2015-07-08 13:08:42 +02:00
e84f3ec1d4 added net.version 2015-07-08 08:03:20 +02:00
b1af5af30e Adjust .mailmap 2015-07-07 11:50:49 -05:00
423c2f499c Merge branch 'release/0.9.36' 2015-07-07 15:33:55 +02:00
a2333bcbb4 Merge pull request #1430 from obscuren/web3-0.8.0
web3 update
2015-07-07 06:33:38 -07:00
c6578d2336 Merge branch 'release/0.9.36' 2015-07-07 15:32:04 +02:00
c5972b4ac7 web3 update 2015-07-07 15:21:24 +02:00
0c9c5439d4 Merge branch 'release/0.9.36' into develop 2015-07-07 15:13:11 +02:00
193c62fdba Merge branch 'release/0.9.36' 2015-07-07 15:12:56 +02:00
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
df54510e3e common/natspec: fixed test 2015-07-07 14:55:27 +02:00
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
4b5c99d97f cmd/geth: version number 0.9.36 2015-07-07 14:55:27 +02:00
9e7d5d9d3b Merge pull request #1426 from fjl/license
all: update license information and godoc comments
2015-07-07 05:55:06 -07:00
b2d18393c4 README.md: update copyright 2015-07-07 14:12:45 +02:00
335d7f4855 LICENSE, cmd/LICENSE: the go-ethereum authors have copyright 2015-07-07 14:12:45 +02:00
4fb28e0dab all: goimports -w 2015-07-07 14:12:45 +02:00
bdae4fd573 all: add some godoc synopsis comments 2015-07-07 14:12:45 +02:00
e813626ee1 all: remove @author comments 2015-07-07 14:12:44 +02:00
7bb77c02da build: change license regexp for // comments 2015-07-07 14:12:44 +02:00
ea54283b30 all: update license information 2015-07-07 14:12:44 +02:00
46fbd34c70 .mailmap: update 2015-07-07 14:01:33 +02:00
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
922f881c3d common/natspec: fixed test 2015-07-07 13:01:39 +02:00
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
db06906c4f cmd/geth: version number 0.9.36 2015-07-07 12:21:36 +02:00
3016f23864 cmd/geth: fixed test 2015-07-07 12:18:05 +02:00
e5fba8fd70 Merge pull request #1428 from obscuren/coinbase-fixes
cmd,eth,rpc,tests: default coinbase
2015-07-07 02:55:33 -07:00
916d155467 Merge pull request #1429 from obscuren/rebase-registrar
Rebase registrar
2015-07-07 02:55:23 -07:00
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
3791831081 rebase with zelig/frontier/registrar 2015-07-07 11:30:45 +02:00
7e6c1f8024 corrected input formatters as suggested during review 2015-07-07 11:30:23 +02:00
ceb0739ba1 fixed web3 formatters mismatch 2015-07-07 11:30:11 +02:00
37c1a8f69d eth,miner,rpc: set coinbase 2015-07-07 10:58:47 +02:00
6ea28f93b9 output BigNumbers objects in console as strings 2015-07-07 10:43:49 +02:00
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
aa22cf323e fix js arguments and TestContract passes 2015-07-07 10:43:49 +02:00
492e5049d7 rename js methods in js_test for new console API
+ rebase fixes
2015-07-07 10:43:49 +02:00
042c3290b3 fix GPO missing flags 2015-07-07 10:43:49 +02:00
518dc87db3 fix sleepBlocks, implement sleep 2015-07-07 10:43:49 +02:00
6391ec0c8f add missing method to api/admin 2015-07-07 10:43:31 +02:00
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
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
35cd355c14 cmd,eth,rpc,tests: default coinbase 2015-07-07 10:32:05 +02:00
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
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
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
d4c2e9de32 cmd/utils: fix interrupt handling to actually see subsequent interrupts 2015-07-06 16:48:34 +02:00
6220707e03 Merge pull request #1414 from Gustav-Simonsson/update_tests
Add TestBcGasPricer, comments and unskip tests
2015-07-06 06:39:19 -07:00
4c30f0f9ac Merge pull request #1416 from fjl/one-interrupt
cmd/geth, cmd/utils: improve interrupt handling
2015-07-06 06:32:24 -07:00
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
fa7b3b7276 Merge pull request #1415 from obscuren/web3-update
web3: updated
2015-07-06 05:01:39 -07:00
b0aec6402a web3: updated 2015-07-06 14:01:03 +02:00
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
b7e8d954ef Add TestBcGasPricer, comments and unskip tests 2015-07-06 13:56:56 +02:00
4f7fc7b23f rpc, xeth: fixed returned tx hash & receipt logs 2015-07-06 13:43:02 +02:00
457a3c8f76 Merge pull request #1410 from obscuren/newerrors-fix
core, miner: adopted new style errors
2015-07-06 04:00:37 -07:00
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
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
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
35add89c87 Merge pull request #1397 from tgerring/rpcreceipt
getTransactionReceipt RPC support
2015-07-06 01:53:21 -07:00
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
ec9620fb2f core/types, xeth: separate tx hash and tx signature hash 2015-07-06 10:45:45 +02:00
6c7f5e3d0e Add autocomplete support for console 2015-07-05 15:42:04 -05:00
dd521ece3f Always return transaction hash 2015-07-05 12:25:44 -05:00
bcc1660abc core, miner, tests: added test, implemented bad block reporting 2015-07-05 15:14:31 +02:00
62559ac330 Cleanup 2015-07-04 12:14:06 -05:00
30afd37604 Compose additional fields 2015-07-04 12:03:37 -05:00
cd4cc309ae Remove redundant function 2015-07-04 11:28:30 -05:00
3be9046c21 Rename local variable for clarity 2015-07-04 10:24:52 -05:00
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
9bb575be7d Merge pull request #1283 from ethersphere/frontier/accounts
Account management improvements
2015-07-04 03:40:23 -07:00
0f04af5916 Fix core error forwarding, unify OOG VM err 2015-07-04 09:27:42 +02:00
481b221279 Decode full receipt storage 2015-07-04 00:00:23 -05:00
80eb8f46b7 Fix hex conversion 2015-07-03 23:46:59 -05:00
3a983d2419 Initial getTransactionReceipt support 2015-07-03 23:03:11 -05:00
47460b3b4a trie: removed shallow copies (thanks to @fjl) 2015-07-04 02:51:37 +02:00
0a1ff68c11 trie: dirty tracking 2015-07-04 02:51:36 +02:00
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
08caeedd84 core, core/state: only write necessary state. Skip intermediate 2015-07-04 02:51:36 +02:00
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
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
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
acd85fe95f Merge pull request #1393 from bas-vk/issue1377
Upgrade web3 to version 0.7.1
2015-07-03 08:27:04 -07:00
4dfcd6012b Merge pull request #1392 from bas-vk/ipcpipelining
Several bugfixes to IPC channel
2015-07-03 08:26:57 -07:00
546c0f631c Merge pull request #1394 from obscuren/develop
miner: ignore future errors
2015-07-03 08:22:30 -07:00
0e33fbdcb9 miner: ignore future errors 2015-07-03 17:21:23 +02:00
8150c0a726 upgrade web3 to version 0.7.1 2015-07-03 17:08:41 +02:00
e8c1399bbf fixed unittest after new implementation 2015-07-03 16:57:40 +02:00
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
8181929c9a Merge pull request #1391 from tgerring/consolefalse
Prevent false from printing on console
2015-07-03 07:46:49 -07:00
d9efaf754c simplified implementation and improved performance 2015-07-03 15:44:35 +02:00
6afdc52483 Prevent debug value from printing on console 2015-07-03 07:40:47 -05:00
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
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
f0e94b4d71 display rpc error in console 2015-07-03 12:22:20 +02:00
f857fb7600 eth/downloader: fix a rare test race on the OSX CI 2015-07-03 13:01:22 +03:00
ff97059a99 Update Ethereum JSON tests, skip failing 2015-07-03 09:40:07 +02:00
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
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
a4df9d74ea accounts order by keyfile ctime 2015-07-02 23:29:07 +01:00
eb82ca4563 rpc/js coinbase returns null if no etherbase set 2015-07-02 23:28:12 +01:00
09b6983175 no primary when listing accounts 2015-07-02 23:28:12 +01:00
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
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
1d72aaa0cd simplify account unlocking 2015-07-02 23:28:11 +01:00
cf66826223 merge conflict 2015-07-02 17:33:21 +02:00
56ed408436 ipcpath issue fix 2015-07-02 17:25:11 +02:00
6be527dd52 prevent discarding requests when parsing fails 2015-07-02 17:25:11 +02:00
effe9cc2cf added pipelining support 2015-07-02 17:25:11 +02:00
89525fcb4e ipcpath issue fix 2015-07-02 17:20:58 +02:00
c2590af7fd prevent discarding requests when parsing fails 2015-07-02 15:26:55 +02:00
9f6016e877 Merge branch 'develop' of github.com:ethereum/go-ethereum into develop 2015-07-02 05:27:31 -04:00
75f41dedca Merge pull request #1378 from obscuren/issue1367
core, xeth: core.AddressFromMessage removed => crypto.CreateAddress
2015-07-02 02:27:20 -07:00
744af9f497 Switched canary addresses 2015-07-02 05:27:19 -04:00
529fb7a7d7 core, xeth: core.AddressFromMessage removed => crypto.CreateAddress 2015-07-02 11:19:10 +02:00
5caff3bc24 Merge pull request #1351 from karalabe/eth61
Implement eth/61
2015-07-01 08:16:44 -07:00
507869bff1 Merge pull request #1373 from obscuren/recovery-tools
core, cmd/geth: improved recover functionality
2015-07-01 08:09:33 -07:00
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
d6f2c0a76f eth, eth/downloader: fix #1231, DOS vulnerability in hash queueing 2015-07-01 15:21:35 +03:00
bb418a43c1 Merge pull request #1370 from obscuren/force-checkpoint
core, cmd/geth: recover by number
2015-07-01 03:57:13 -07:00
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
1ae80aaf64 eth: fix #1371, double lock during block/txn known set limitation 2015-07-01 11:12:05 +03:00
41de1cb723 added pipelining support 2015-07-01 08:23:17 +02:00
29ab1fa8a5 core, cmd/geth: recover by number 2015-07-01 00:52:44 +02:00
60454da650 eth/downloader: reduce hash fetches in prep for eth/61 2015-07-01 01:20:49 +03:00
cb2c10d862 Merge pull request #1366 from ethers/rpcRequest
fix logging jsonrpc request #1365
2015-06-30 12:17:59 -07:00
d05305473e fix logging jsonrpc request #1365 2015-06-30 12:14:16 -07:00
be935bff84 Merge pull request #1363 from obscuren/safeguard
core: added checkpoint for last block
2015-06-30 09:25:10 -07:00
f43c07cb3c eth, eth/downloader: transition to eth 61 2015-06-30 19:05:06 +03:00
af51dc4d63 eth, eth/downloader: pass the eth protocol version through 2015-06-30 19:00:01 +03:00
aac2b6ae4c eth: add the blocks from numbers protocol message 2015-06-30 19:00:01 +03:00
5db8f447d5 eth: fix #1319, put an upper limit on the known txns and blocks 2015-06-30 19:00:01 +03:00
6fc85f1ec2 eth: clean up peer struct a bit, fix double txn bcast 2015-06-30 19:00:01 +03:00
2c8ed76e01 eth: start cleaning up old protocol implementation, add metrics 2015-06-30 19:00:00 +03:00
393d675690 cmd/geth, cmd/utils, eth: advertise both eth/60 and eth/61 2015-06-30 19:00:00 +03:00
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
c14f0a4471 core: added checkpoint for last block
* Add a checkpoint every X blocks
* Removed queued write
2015-06-30 17:27:47 +02:00
ba95e445e1 Merge pull request #1328 from bas-vk/issue1327
Add pendingTransactions and resend
2015-06-30 08:27:03 -07:00
8c4d493c66 solved merge conflicts 2015-06-30 15:32:02 +02:00
a5d5387dee rebase with develop 2015-06-30 15:27:27 +02:00
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
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
57dff6f1d7 initialize fields to prevent nil pointer exception 2015-06-30 11:20:31 +02:00
7ffabf1d39 add json parsing method for resend transaction 2015-06-30 11:20:31 +02:00
6fdddc5ac9 improved error handling in parsing request 2015-06-30 11:20:31 +02:00
02c6af66bf fixed unittest compilation issue 2015-06-30 11:20:31 +02:00
ec866b066a added eth.resend 2015-06-30 11:20:31 +02:00
056e9dd393 added eth.pendingTransactions 2015-06-30 11:20:31 +02:00
9226369b5d Merge branch 'hotfix/0.9.34-1' into develop 2015-06-30 11:15:08 +02:00
a2ce7b9950 Merge branch 'hotfix/0.9.34-1' 2015-06-30 11:14:59 +02:00
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
4c490db6af Use uint64 for block header timestamp 2015-06-30 10:52:11 +02:00
b047f05e7e cmd/geth: version bump 0.9.35 2015-06-30 02:30:26 +02:00
8d016ced6b Merge branch 'release/0.9.34' into develop 2015-06-30 02:22:40 +02:00
7625b07dd9 Merge branch 'release/0.9.34' 2015-06-30 02:22:19 +02:00
8f504063f4 cmd/geth: version bump 0.9.34 2015-06-30 02:11:54 +02:00
e896cab82c Merge pull request #1360 from obscuren/peter-metrics
Rebased peter's PR
2015-06-29 16:58:49 -07:00
5f3792c2a7 cmd/geth: decent error message if metrics are disabled 2015-06-30 00:57:55 +02:00
01fe972113 cmd, core, eth, metrics, p2p: require enabling metrics 2015-06-30 00:51:46 +02:00
ccbb56b4f2 cmd/geth, eth, ethdb: monitor database compactions 2015-06-30 00:51:29 +02:00
2aeeb72fa5 cmd/geth, metrics: separate process metric collection, add disk 2015-06-30 00:51:02 +02:00
7c4ed8055c Merge pull request #1357 from obscuren/core-optimisations-2
core: optimisations
2015-06-29 15:44:23 -07:00
992e4f83cb core: replaced BlockCache with lru.Cache 2015-06-30 00:36:25 +02:00
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
5d9df7348d gpo non-existent block checks 2015-06-29 18:53:04 +02:00
ac80ec59dc miner: update root only when mining 2015-06-29 18:51:49 +02:00
e349fac97d core: fixed tests 2015-06-29 18:51:49 +02:00
aba901e13c core: removed write's go routine 2015-06-29 18:51:49 +02:00
07db098ccf core: renamed next to pending & fixed tests 2015-06-29 18:51:49 +02:00
855e76fddd core: reduced cache limit to 256 2015-06-29 18:51:49 +02:00
4d11747836 deps: Added golang-lru 2015-06-29 18:51:49 +02:00
6ca3a44638 core: switched to proper LRU 2015-06-29 18:51:49 +02:00
4460dc9d1a core: added LRU caching and added batch writing when LDB is used 2015-06-29 18:51:49 +02:00
2a5a55efaf ethdb: accessor for LDB. TODO remove this interface 2015-06-29 18:51:48 +02:00
c850c41ec1 trie: Implemented a batch write approach for flushing 2015-06-29 18:51:48 +02:00
76821d167a core, eth, rpc: avoid unnecessary block header copying 2015-06-29 18:51:48 +02:00
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
d0bb90c69e core: generate benchmark keys only once 2015-06-29 18:51:48 +02:00
992dc74efd core: avoid duplicate calls to Transaction.Data 2015-06-29 18:51:48 +02:00
0b22ad99c1 core: optimize IntrinsicGas 2015-06-29 18:51:48 +02:00
a8889b092b core/types: cache computed block values 2015-06-29 18:51:48 +02:00
11b8d1df59 core/types: cache computed transaction values 2015-06-29 18:51:48 +02:00
8743cc1c1c rlp: add ListSize 2015-06-29 18:51:48 +02:00
a0566c1058 rlp: remove Flat 2015-06-29 18:51:47 +02:00
3d0c6a8345 rlp: pool encoder allocations 2015-06-29 18:51:47 +02:00
c3d6228023 core: add InsertChain benchmarks 2015-06-29 18:51:47 +02:00
7098ec691c rpc: unmask pending block fields
This pleases the RPC tests.
2015-06-29 18:51:47 +02:00
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
ceaf1c080b core: add GenerateChain, GenesisBlockForTesting 2015-06-29 18:51:47 +02:00
1d42888d30 core/types: make blocks immutable 2015-06-29 18:51:47 +02:00
654564e164 core/types: make transactions immutable 2015-06-29 18:51:47 +02:00
9d8b512b27 Merge pull request #1356 from Gustav-Simonsson/debug_develop
Debug develop
2015-06-29 09:33:19 -07:00
b39042db56 core, miner: implemented canary 2015-06-29 13:31:49 +02:00
d1e93db3eb core, miner: added write block method & changed mining propagation 2015-06-29 13:31:49 +02:00
059a1e9e4e miner: broadcast block before insertion/validation 2015-06-29 13:31:49 +02:00
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
a7d22658ad eth/fetcher: don't drop on future blocks, just not propagate 2015-06-29 14:20:13 +03:00
29d53b2073 eth/fetcher: don't double filter/fetch the same block 2015-06-29 13:49:04 +03:00
61ccc39b56 initialize fields to prevent nil pointer exception 2015-06-29 12:42:47 +02:00
f9264e87ec add json parsing method for resend transaction 2015-06-29 12:32:01 +02:00
a355777ff8 improved error handling in parsing request 2015-06-29 11:13:28 +02:00
a0191910fc Merge pull request #1341 from karalabe/proto-version-negotiation
p2p: support protocol version negotiation
2015-06-28 13:52:37 +02:00
b9ebdffd83 Merge pull request #1335 from tgerring/mistcleanup
Travis and README cleanup
2015-06-27 02:17:35 -07:00
1169ec7681 Merge pull request #1344 from karalabe/monitor-fixes
Monitor fixes
2015-06-27 02:16:12 -07:00
d099a42c85 cmd/geth: fix monitor panic, don't pre-fill with dummy data 2015-06-26 22:05:49 +03:00
7e69392249 cmd/geth: re-scale charts when changing unit magnitudes 2015-06-26 21:48:21 +03:00
216fc267fa p2p: fix local/remote cap/protocol mixup 2015-06-26 20:45:13 +03:00
d84638bd31 p2p: support protocol version negotiation 2015-06-26 15:48:50 +03:00
b0a5be4495 Merge pull request #1321 from karalabe/cut-it-open-3000
Metrics collecting and reporting support
2015-06-25 08:18:42 -07:00
e64625aa82 Merge pull request #1332 from bas-vk/ipcbatch
IPC interface improvements
2015-06-25 08:06:19 -07:00
c6dbe9dc07 Travis and README cleanup 2015-06-25 16:46:54 +02:00
662285074e improved logging for IPC connection lifetime management 2015-06-25 15:54:16 +02:00
e9c0b5431c cmd/geth: finalize mem stats 2015-06-25 16:19:42 +03:00
fdbf8be735 cmd/geth, rpc/api: fix reported metrics issues 2015-06-25 15:33:26 +03:00
5757a0edb5 added IPC timeout support 2015-06-25 14:32:22 +02:00
04910c902a support for large request/response on windows 2015-06-25 04:53:41 -07:00
ffbe5656ff support for large requests/responses 2015-06-25 13:18:10 +02:00
c0343c8f17 cmd/geth: add memory stat collection too 2015-06-25 13:47:06 +03:00
6d92fdc0df added support for batch requests 2015-06-25 12:01:28 +02:00
6b2a03faa2 Merge pull request #1085 from Gustav-Simonsson/key_store_v3
crypto: key store v3
2015-06-25 02:16:54 -07:00
c6e2af14c0 cmd/geth: limit the maximum chart colums to 6 2015-06-25 12:12:11 +03:00
8774fdcd64 Merge pull request #1329 from Gustav-Simonsson/ethash_input_validations
Update Ethash Godeps
2015-06-25 02:06:06 -07:00
3ea6b5ae32 cmd/geth: list the available metrics if none specified 2015-06-25 11:42:45 +03:00
d02f07a983 cmd/geth: polish monitor visuals, add footer, refresh flag 2015-06-25 11:32:21 +03:00
b98b444179 cmd/geth: add attach and rows flags to the monitor command 2015-06-25 10:36:47 +03:00
1ce40d7581 Godeps: remove mist remnants, add termui deps 2015-06-24 18:40:18 +03:00
92ef33d97a rpc/api, cmd/geth: retrievel all percentiles, add time units 2015-06-24 18:34:05 +03:00
302187ae39 cmd/geth: allow branching metric patterns 2015-06-24 18:34:05 +03:00
bf99d5b33c cmd/geth: polish the monitoring charts a bit 2015-06-24 18:34:05 +03:00
e5b820c47b cmd/geth, rpc/api: extend metrics API, add a basic monitor command 2015-06-24 18:34:05 +03:00
bde2ff0343 cmd/geth, rpc/api: move the metrics into the new console 2015-06-24 18:34:05 +03:00
803b3c4a82 eth, ethdb: measure database operation latencies too 2015-06-24 18:34:05 +03:00
0609fcf030 eth: make sure dbs are lvldb before instrumenting 2015-06-24 18:34:04 +03:00
792b0ddccd core, eth, eth/fetcher, ethdb: polish metrics gathering a bit 2015-06-24 18:34:04 +03:00
6260b86c15 eth/fetcher: fix failed merge 2015-06-24 18:34:04 +03:00
43e4a6501b core, ethdb: instrument the block and state db
Conflicts:
	ethdb/database.go
2015-06-24 18:34:04 +03:00
7bd71fa800 godeps: pull in go-metrics 2015-06-24 18:34:04 +03:00
7f92e708c5 cmd/geth, core: impl. percentile reporting, instrument insertions 2015-06-24 18:34:04 +03:00
b426301467 cmd/geth, eth/fetcher: polish metrics reporting, add some more 2015-06-24 18:34:04 +03:00
6994a3daaa p2p: instrument P2P networking layer 2015-06-24 18:33:33 +03:00
821e01b013 cmd/geth, eth/fetcher: initial metrics support
Conflicts:
	cmd/geth/admin.go
2015-06-24 18:33:33 +03:00
ee73f09727 fixed unittest compilation issue 2015-06-24 16:07:44 +02:00
dc58568a25 added eth.resend 2015-06-24 14:56:53 +02:00
f1a4a6e563 added eth.pendingTransactions 2015-06-24 13:53:37 +02:00
8363aba7ac Update Ethash Godeps 2015-06-24 07:17:21 +02:00
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
22c7ce0162 cmd/geth: version bump 0.9.33 2015-06-23 19:20:20 +02:00
983a33cf11 Merge branch 'release/0.9.32' into develop 2015-06-23 19:19:49 +02:00
72e2613a9f Merge branch 'release/0.9.32' 2015-06-23 19:19:33 +02:00
67e6f74e9a cmd/geth: bump 2015-06-23 19:11:20 +02:00
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
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
139439dcdc Merge pull request #1309 from fjl/p2p-fix-lookup-spin
p2p: throttle all discovery lookups
2015-06-23 05:36:58 -07:00
2b3957f373 fixed relative path issue with javascript files 2015-06-23 09:38:30 +02:00
55424a11af improved action description 2015-06-23 09:11:57 +02:00
57c911c398 bugfix in startRPC error handling 2015-06-23 08:26:17 +02:00
3ce17d2862 eth/fetcher: fix a closure data race 2015-06-22 20:13:18 +03:00
99ca4b619b eth/fetcher: clean up test assertions 2015-06-22 18:28:38 +03:00
b53f701c27 eth/fetcher: remove test sleeps (15s -> 2.8s) 2015-06-22 18:08:28 +03:00
1989d1491a eth/fetcher: handle and (crude) test block memory DOS 2015-06-22 16:49:47 +03:00
4ee7f6fc88 added missing change for sign test 2015-06-22 13:54:13 +02:00
6d596b1ad1 fixed eth sign unittest 2015-06-22 13:19:59 +02:00
d36c25bcbc eth/fetcher: handle and test block announce DOS attacks 2015-06-22 14:07:08 +03:00
2e0b56a72b added RPC start/stop support 2015-06-22 12:47:32 +02:00
2737baa657 fixed unittests 2015-06-22 09:17:09 +02:00
f87501b1c5 added batch support to console and attach actions 2015-06-22 09:17:09 +02:00
3ff272b618 moved solidity test to new rpc structure 2015-06-22 09:17:09 +02:00
29297d3b82 fixed bug where history file was create in cwd 2015-06-22 09:17:09 +02:00
ce5c94e471 added attach over http/rpc support 2015-06-22 09:17:09 +02:00
f202563777 added attach over ipc command 2015-06-22 09:17:09 +02:00
36a6b16a3b removed console command 2015-06-22 09:17:09 +02:00
603192cfa7 cleanup comments/code 2015-06-22 09:17:09 +02:00
a4a4e9fcf8 removed old rpc structure and added new inproc api client 2015-06-22 09:17:09 +02:00
3e1d635f8d fixed rpc test failure in eth.blockNumber 2015-06-22 08:54:21 +02:00
9ac1b4e59e fixed rpc test failure in net_peerCount 2015-06-22 08:54:21 +02:00
5fdf72b1ab fixed web3 rpc test failures 2015-06-22 08:54:21 +02:00
c3f6c322c0 added DB api 2015-06-22 08:54:21 +02:00
5c25403b13 refactored old rpc structure to new 2015-06-22 08:54:21 +02:00
fd764d4ff7 added comms http 2015-06-22 08:54:21 +02:00
60c2ccd99c made ipc handler generic and reusable 2015-06-22 08:54:21 +02:00
9cf7913c61 Merge pull request #1304 from obscuren/state-renames
core, miner, xeth: renamed gas methods
2015-06-21 16:49:47 -07:00
7633dfdc08 Merge pull request #1305 from obscuren/database-error-check
core, ethdb, trie: validate database errors
2015-06-21 16:49:14 -07:00
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
398d08a8dd tests: SetGasLimit 2015-06-21 17:09:19 +02:00
07c3de3f75 core, miner, xeth: renamed gas methods
* BuyGas => SubGas
* RefundGas => AddGas
* SetGasPool => SetGasLimit
2015-06-21 17:09:19 +02:00
a40a91d60f trie: fixed tests 2015-06-21 17:08:47 +02:00
c590b505ed core, ethdb, trie: validate database errors 2015-06-21 16:59:15 +02:00
3deded28a5 Merge pull request #1302 from obscuren/mist-removal
mist: R.I.P.
2015-06-21 07:58:08 -07:00
46bd6c43db travis: removed qt deps 2015-06-20 20:33:25 +02:00
42a14b8a09 mist: R.I.P.
/"""""/""""""".
    /     /         \             __
   /     /           \            ||
  /____ /             \           ||
 |     |  In Loving    |          ||
 |     |   Memory      |          ||
 |     |               |          ||
 |     |   2014-2015   |          ||
 |     |     * *   * * |         _||_
 |     |     *\/* *\/* |        | TT |
 |     |     *_\_  /   ...""""""| || |.""...."""""""".""
 |     |         \/.."""""..."""\ || /.""".......""""...
 |     |...."""""""........""""""^^^^"......."""""""".."
 |......"""""""""""""""........"""""...."""""..""-Jeff W.
2015-06-20 14:37:00 +02:00
9c69c051ba Merge pull request #1236 from tgerring/ethtest
ethtest improvements
2015-06-20 05:32:33 -07:00
53e042f0c4 Added link to ARM develop build 2015-06-19 18:49:15 +02:00
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
0fa2750fc9 Merge pull request #1290 from tgerring/dataargs
unit test coverage for NewDataArgs
2015-06-19 07:44:39 -07:00
8c4c7ea192 eth/fetcher: lower max cache size, add timeout slack 2015-06-19 16:46:16 +03:00
d1e589289c Expand --test switch 2015-06-19 15:08:53 +02:00
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
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
4180ca7fe4 eth: fix the propagation/announce order for mined blocks 2015-06-19 10:07:37 +03:00
a9659e6dcf recover test logic 2015-06-18 23:46:42 +02:00
8d3faf69d0 Build error fixes 2015-06-18 22:38:17 +02:00
baea8e87e5 Rebase cleanup 2015-06-18 22:27:44 +02:00
01ec4dbb12 Add stdin option 2015-06-18 22:24:07 +02:00
a86452d22c Minor cleanup 2015-06-18 22:20:45 +02:00
49336675f3 Expand CLI options to allow running all tests 2015-06-18 22:20:45 +02:00
516362bcad Allow specifying single depth directory 2015-06-18 22:20:45 +02:00
30444db020 Add lost rebase changes 2015-06-18 22:20:45 +02:00
c941a39b75 Cleanup logging 2015-06-18 22:20:45 +02:00
8507c867b9 Fix geth blocktest command 2015-06-18 22:20:45 +02:00
6931267324 Wire ethtest to new tests structure 2015-06-18 22:20:45 +02:00
6ff956394a DRY file loading 2015-06-18 22:20:45 +02:00
ac0637c413 More consistent test interfaces + test skipping 2015-06-18 22:20:44 +02:00
b6d40a9312 Cleanup/reorg 2015-06-18 22:20:44 +02:00
c5d6fcbaba Return error up stack instead of passing testing var down 2015-06-18 22:20:44 +02:00
24554629b1 DRY log check 2015-06-18 22:15:08 +02:00
7c6ef0ddac Separate and identify tests runners 2015-06-18 22:15:07 +02:00
1b26d4f220 Flatten helper directory 2015-06-18 22:15:07 +02:00
e82100367f Fix paths 2015-06-18 22:13:42 +02:00
a67a15528a Split tests from helper code 2015-06-18 22:13:42 +02:00
7b9fbb088a Flatten vm directory 2015-06-18 22:13:41 +02:00
6415ed0730 Require a first argument of test type 2015-06-18 22:13:41 +02:00
e4f9ec886b Merge pull request #1267 from SilentCicero/develop
eth_sendRawTransaction JSON RPC
2015-06-18 11:33:50 -07:00
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
13c25036ea eth/fetcher: since uncles are allowed, drop phase test 2015-06-18 20:10:07 +03:00
ecd19919c5 eth/fetcher: allow backward uncle imports too 2015-06-18 19:43:47 +03:00
90d45f0397 eth: fix test breakage from the previous commit 2015-06-18 18:25:27 +03:00
b91b581b80 eth, eth/fetcher: propagate after header verify, announce only on insert 2015-06-18 18:00:19 +03:00
629705ad53 eth: clean the block request packet handling a bit 2015-06-18 16:09:34 +03:00
5ec6ecc511 eth, eth/fetcher: move propagated block import into fetcher 2015-06-18 15:56:08 +03:00
a9ada0b5ba eth/fetcher: make tests thread safe 2015-06-18 15:56:08 +03:00
37c5ff392f eth/fetcher: build longest chain until proven otherwise 2015-06-18 15:56:08 +03:00
2a7411bc96 eth/fetcher: fix premature queue cleanup, general polishes 2015-06-18 15:56:08 +03:00
497a7f1717 eth, eth/fetcher: define and enforce propagation boundaries 2015-06-18 15:56:08 +03:00
026ee40650 eth/fetcher: deduplicate future blocks 2015-06-18 15:56:08 +03:00
11c8f83a58 eth, eth/fetcher: cache future propagated blocks too 2015-06-18 15:56:08 +03:00
057bc237ad eth, eth/fetcher: use an import queue to store out of order blocks 2015-06-18 15:56:07 +03:00
8b64e041d6 eth/fetcher: add test to check for duplicate downloads 2015-06-18 15:56:07 +03:00
2a1b722d04 eth/fetcher: fix timer reset bug, add initial tests 2015-06-18 15:56:07 +03:00
7c2af1c117 eth, eth/fetcher: separate notification sync mechanism 2015-06-18 15:56:07 +03:00
2cea410656 Merge pull request #1282 from obscuren/state-cleanup
core/state: cleanup & optimisations
2015-06-18 05:29:53 -07:00
430bcdb219 core/vm: clarified SSTORE 2015-06-18 12:25:02 +02:00
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
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
4365668462 eth/downloader: extend slow test to fix even slower CI server... 2015-06-18 00:42:02 +03:00
55dd8fd621 eth/downloader: always reenter processing if not exiting 2015-06-18 00:26:54 +03:00
2f4cbe22f5 eth, eth/downloader: fix processing interrupt caused by temp cancel 2015-06-18 00:04:57 +03:00
5afebc2a4b unit test coverage for NewDataArgs 2015-06-17 18:07:45 +02:00
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
753d62a4dd core: TMP testing code 2015-06-17 17:10:13 +02:00
ae36beb38f Merge pull request #1269 from bas-vk/console-batch
added batch mode to console
2015-06-17 07:56:09 -07:00
bdd63837ea core/state: removed trie copy 2015-06-17 13:39:19 +02:00
aa699a1283 core/state: removed state from state object 2015-06-17 13:27:51 +02:00
aaddc99c35 core/state: fixed state tests 2015-06-17 12:53:22 +02:00
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
a3fdef7529 Merge pull request #1274 from Gustav-Simonsson/update_ethash_godep
Update ethash godep
2015-06-17 03:05:51 -07:00
a977f3c0dc xeth, tests: fixed api 2015-06-17 11:44:40 +02:00
30b27336ea core/state: remove the need for common.Value 2015-06-17 11:30:42 +02:00
787a61bb27 core/state, core/vm: reworked storage get / set to use common.Hash 2015-06-17 11:24:40 +02:00
4a1e82cf3f eth/downloader: fix #1280, overlapping (good/bad) delivery hang 2015-06-17 12:03:16 +03:00
5721fcf668 core/state, core/vm: cleanup refunds 2015-06-17 10:20:33 +02:00
be303ba186 Update ethash Godep (again) 2015-06-17 00:56:25 +02:00
1f34daccc3 Added glog messages like Transaction 2015-06-16 12:47:34 -04:00
6add45cd10 Remove Extra Loggers 2015-06-16 12:30:07 -04:00
7ec8c257ff New DataArgs and eth_sendRawTransaction 2015-06-16 12:28:10 -04:00
a9d6846f92 Update ethash Godep 2015-06-16 12:09:39 +02:00
8f372c867d Update Ethereum JSON test files 2015-06-16 12:09:25 +02:00
e952bb65e7 thanks subtly :) 2015-06-16 00:06:28 -04:00
2642e091e9 NewSigArgs arg change. 2015-06-15 16:01:01 -04:00
dfd18d245a cmd/geth: bump 0.9.31 2015-06-15 19:29:22 +02:00
4699ebf534 Merge branch 'release/0.9.30' into develop 2015-06-15 19:29:06 +02:00
5daf8729be Merge branch 'release/0.9.30' 2015-06-15 19:28:48 +02:00
4673b04503 cmd/geth: bump version number 0.9.30 2015-06-15 19:14:34 +02:00
cc0b451119 Merge pull request #1260 from obscuren/tx-drop-low-tx
core: drop low gas tx
2015-06-15 09:09:44 -07:00
f2a2164184 Merge pull request #990 from zsfelfoldi/gasprice
eth: add GasPriceOracle
2015-06-15 08:44:25 -07:00
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
2628103f1d rpc/api: fixed default gas-(price) issue. 2015-06-15 17:21:08 +02:00
ad56aef5d2 Update utils.go 2015-06-15 11:10:40 -04:00
c3b80123e3 Update eth.go 2015-06-15 11:10:24 -04:00
f9f9352ceb Change eth_pushTx case to eth_sendRawTransaction 2015-06-15 10:50:07 -04:00
1e3f4877c0 Changed miner and gpo min gas price to 1 szabo 2015-06-15 16:48:59 +02:00
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
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
f06f220c7c added printing support for objects 2015-06-15 16:33:36 +02:00
d6233c7d2d Changed variable names 2015-06-15 10:07:32 -04:00
b42b70eb5f fixed rpc/api.GasPrice 2015-06-15 15:55:39 +02:00
610adfd83f fixed xeth.gpo = nil bug 2015-06-15 15:55:39 +02:00
3c7b64ce20 removed duplicate function after rebase 2015-06-15 15:55:39 +02:00
a977cecbe4 fixed gas price corr. factor 2015-06-15 15:55:38 +02:00
6e212bdc6d fallback for uninitialized GPO config values 2015-06-15 15:55:38 +02:00
2e8016c80d fixed initial base price bug 2015-06-15 15:55:38 +02:00
0930e190a7 added missing source 2015-06-15 15:55:38 +02:00
3f94d09c1f fixed saving receipts 2015-06-15 15:55:38 +02:00
70da79f04c p2p: improve disconnect logging 2015-06-15 15:03:46 +02:00
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
aa250e228a eth: don't refetch non fitting blocks to avoid duplicates 2015-06-15 15:18:31 +03:00
cf7c44a7f6 eth/downloader: detailed comment for the race corner case 2015-06-15 15:18:04 +03:00
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
9c03c374e3 eth/downloader: fix import statistic reset, fetch hashes async 2015-06-15 13:05:01 +03:00
6d817e16c1 core, miner: tx pool drops txs below ask price 2015-06-15 11:33:08 +02:00
b240983e2b eth, eth/downloader: do async block fetches, add dl tests 2015-06-15 12:26:05 +03:00
30a9939388 eth/downloader: sanity test for multi peer syncs 2015-06-15 09:22:37 +03:00
fc7abd9886 eth, eth/downloader: move block processing into the downlaoder 2015-06-15 09:22:37 +03:00
0fc71877a7 eth/downloader: add valid peer during attacks (check interference) 2015-06-15 09:22:37 +03:00
80833f8137 eth/downloader: instreument and test the sync peer drop 2015-06-15 09:22:37 +03:00
faae8b7dd8 eth: fix an accidental test compile error 2015-06-15 09:22:37 +03:00
2dd6a62f67 eth/downloader: support individual peers in the test suite 2015-06-15 09:22:36 +03:00
2937903299 eth/downloader: remove uneeded testing functions 2015-06-15 09:22:36 +03:00
66d3dc8690 eth, eth/downloader: move peer removal into downloader 2015-06-15 09:22:36 +03:00
f9a0a13fa9 eth_pushTx send raw signed encoded TX data to the chain through RPC 2015-06-14 18:07:03 -04:00
2a0528303f added batch mode to console 2015-06-13 19:02:46 +02:00
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
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
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
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
aaac1f0cdd Merge pull request #1254 from bas-vk/ipcwindowspathfix
Invalid named pipe name
2015-06-12 04:39:38 -07:00
287f990891 core/vm: Improved error reporting for trace logging 2015-06-12 13:35:14 +02:00
02d629af8f core/vm: fixed printable characters using unicode instead 2015-06-12 11:18:17 +02:00
55a796b7c3 removed obsolete console flag 2015-06-12 09:42:57 +02:00
359e6414e5 fixed windows ipc path issue 2015-06-12 09:32:37 +02:00
4bb9a61049 Merge pull request #1245 from bas-vk/ipcdatadirfix
ipc socket always uses default path
2015-06-11 12:01:07 -07:00
22080e1fdd ipc socket always used default path 2015-06-11 20:35:19 +02:00
e2c2d8e15e Merge pull request #1239 from bas-vk/rpc-apis
RPC refactoring
2015-06-11 07:41:43 -07:00
b3c07f167f fixed incomplete merge action 2015-06-11 15:06:12 +02:00
ec6a7b35f6 removed obsolete print statement 2015-06-11 15:00:33 +02:00
ebaa9b9feb removed binary files 2015-06-11 14:54:03 +02:00
7584e68c21 upgrade web3.js with _extend support 2015-06-11 14:43:05 +02:00
1fe617fa57 added net API 2015-06-11 14:40:38 +02:00
87dace1fa9 added miner API 2015-06-11 14:20:50 +02:00
aa258dcc5f added console binary 2015-06-11 14:18:54 +02:00
3c93034a32 fixed windows build problem 2015-06-11 14:18:08 +02:00
594a34a88d changed send methods for backwards compatability in geth console 2015-06-11 14:17:28 +02:00
1b59f89095 added console command 2015-06-11 14:17:27 +02:00
bbfa0a3dcb added API/IPC commandline flags 2015-06-11 14:15:33 +02:00
348f1562e2 restructured eth rpc API 2015-06-11 14:13:57 +02:00
7e41d7ac51 added shh API 2015-06-11 14:01:41 +02:00
bd38428f33 cleanup of javascript API 2015-06-11 14:01:41 +02:00
87b62f75a7 added txpool API 2015-06-11 14:01:41 +02:00
c6c443385b changed console welcome message 2015-06-11 14:01:41 +02:00
5f8e5a4875 upgrade web3.js with _extend support 2015-06-11 14:01:41 +02:00
cc9ae39933 added admin API 2015-06-11 14:01:41 +02:00
08d72a9245 added personal API 2015-06-11 14:01:41 +02:00
09d0d55fc5 added debug API 2015-06-11 14:01:41 +02:00
faab931ce1 only load supported api's 2015-06-11 14:01:40 +02:00
d2a87f6f72 added net API 2015-06-11 14:01:40 +02:00
4b9b633dfe added miner API 2015-06-11 14:01:40 +02:00
cb7f2d43b6 added console binary 2015-06-11 14:01:40 +02:00
8aea85e374 fixed windows build problem 2015-06-11 14:01:39 +02:00
0a600a03ee fixed unittest build problem 2015-06-11 14:01:39 +02:00
862117e4bd changed send methods for backwards compatability in geth console 2015-06-11 14:01:39 +02:00
a1a475fb92 added console command 2015-06-11 14:01:39 +02:00
2a0d888326 added API/IPC commandline flags 2015-06-11 14:01:39 +02:00
8ebf2d8fad added RPC/IPC support 2015-06-11 14:01:39 +02:00
2f55a1d798 restructured eth rpc API 2015-06-11 14:01:39 +02:00
6609d45ef4 Merge pull request #1228 from obscuren/vm-optimisations
core/vm: optimisations
2015-06-11 03:32:39 -07:00
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
37111aa4bd core: retry block now also parellise nonce checks 2015-06-11 12:06:05 +02:00
f599a1b5f1 core/vm: added a comment regarding the uint64 vs *big.Int 2015-06-11 11:59:30 +02:00
9e9bd35557 cmd/geth: Added optional debug flag for reprocess block 2015-06-11 11:44:39 +02:00
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
8482855bc7 Merge pull request #1218 from tgerring/rpcsign
Updated RPC sign test
2015-06-10 15:11:19 -07:00
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
5cfae0536f cmd/evm: print trace when running programs 2015-06-10 21:09:12 +02:00
e7627623b9 core/vm: reverse loop stack 2015-06-10 21:08:54 +02:00
f94c5473ad core/vm: fixed a bug where Data ignored the stack ptr 2015-06-10 21:08:04 +02:00
10af69b57c core, core/vm: moved logger and added gas cost to struct logging 2015-06-10 19:56:40 +02:00
3c1cccc801 eth/downloader: fetch the block hashes on the fly, when needed 2015-06-10 20:12:22 +03:00
e61db7145a eth: dedup fetches to ensure no blocks are pulled twice 2015-06-10 19:47:59 +03:00
355b1e3bb1 eth: randomly fetch announced block (don't hammer origin) 2015-06-10 19:47:59 +03:00
b9affbf9fe eth: discard fetched blocks that don't fit (no goroutine) 2015-06-10 19:47:59 +03:00
2e0694b606 Updated test 2015-06-10 12:35:35 -04:00
fc2a061d51 core/vm: unexported stack again. No longer required 2015-06-10 17:47:36 +02:00
065aff9ffa core/vm: documentation and name changes 2015-06-10 17:47:36 +02:00
4407524d13 core: fixed race condition for subscriptions 2015-06-10 17:13:32 +02:00
29f7902fee core: fixed test 2015-06-10 17:13:32 +02:00
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
c4af70d0cc cmd/geth: round the import ETA before converting to string 2015-06-10 18:07:23 +03:00
271fb20ecb cmd/geth, eth/downloader: rough guess at the import eta 2015-06-10 18:01:05 +03:00
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
f249ccaa89 cmd/evm: implements vm.Environment 2015-06-10 16:46:43 +02:00
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
cf3aabb9d3 miner: update gas used after tx proc for pending block 2015-06-10 13:52:38 +02:00
261a8077c4 p2p/discover: deflake TestUDP_successfulPing 2015-06-10 13:08:21 +02:00
1774c49456 core: log tx count for each set of blocks we're importing 2015-06-10 12:57:58 +02:00
6fb6e6679e core/vm, core/state: added storage to structured vm logging 2015-06-10 12:57:37 +02:00
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
ff5b3ef087 core/vm: added structured logging 2015-06-10 10:59:44 +02:00
468501cb86 core/vm: changed program counter to uint64 2015-06-10 10:44:46 +02:00
b3d5ce7d48 cmd/geth, eth/downloader: collect and report import progress too 2015-06-10 01:20:35 +03:00
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
6a5c9aff3b tests: check gas limit error 2015-06-09 22:49:33 +02:00
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
1cbbfbe7fa p2p: fix a close race in the dial test 2015-06-09 22:26:26 +03:00
7e58949c3f cmd/geth: develop version bump 0.9.29 2015-06-09 21:14:11 +02:00
667f5a09c3 Merge branch 'release/0.9.28' into develop 2015-06-09 21:12:44 +02:00
bac9a94ddf Merge branch 'release/0.9.28' 2015-06-09 21:12:25 +02:00
14994fa21b rpc: skip test if solc version doesn't match 2015-06-09 21:02:24 +02:00
bc6031e7bb core, xeth: moved nonce management burden from xeth to txpool 2015-06-09 21:01:02 +02:00
93f4852844 cmd/geth: bumped version number 0.9.28 2015-06-09 21:01:02 +02:00
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
4541c22964 event/filter: hack around data race in the test 2015-06-09 21:33:39 +03:00
d652a58ada core: fix a race condition accessing the gas limit 2015-06-09 21:13:21 +03:00
fecf214175 core: fix a lock annoyance and potential deadlock 2015-06-09 21:02:26 +03:00
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
73c355591f core, eth: document that result of GetTransactions is modifiable 2015-06-09 17:07:10 +02:00
8dc3048f65 eth/downloader: fix hash fetch timeout handling
Fixes #1206
2015-06-09 17:07:10 +02:00
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
2c24a73e25 eth: add protocol tests
The protocol tests were commented out when eth/downloader was introduced.
2015-06-09 17:07:10 +02:00
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
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
7aefe123e9 core/types: add Transaction.Size 2015-06-09 17:06:31 +02:00
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
d6f4c515f5 jsre: print function arguments too 2015-06-09 17:23:44 +03:00
c71ab2a6a3 Merge pull request #1219 from Gustav-Simonsson/precompiled_ec_recover_padding
Precompiled ec recover padding
2015-06-09 07:21:23 -07:00
7842559353 jsre: sort pretty print output, fields before funcs 2015-06-09 17:19:56 +03:00
6e3b58e491 Remove unneeded if check on EC recover padding 2015-06-09 16:03:05 +02:00
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
15166f880b Skip BlockTests/bcValidBlockTests SimpleTx3 2015-06-09 15:53:31 +02:00
ad5b5a4895 Pad precompiled EC recover input and add validations 2015-06-09 15:41:15 +02:00
d8e55a5cc3 Skip VMTests RandomTests temporarily until they are fixed 2015-06-09 15:40:43 +02:00
e885a2912b Update Ethereum JSON test files 2015-06-09 15:39:24 +02:00
ebf2aabd25 core: fix up a deadlock caused by double locking 2015-06-09 16:26:44 +03:00
60b780c21b Merge pull request #1217 from tgerring/rpcsign
Fix RPC sign
2015-06-09 06:19:39 -07:00
76148515fa skip sol on new compiler 2015-06-09 15:19:20 +02:00
ff84352fb7 p2p: fix close data race 2015-06-09 16:12:24 +03:00
f371e6c81a Merge pull request #1156 from tgerring/issue1145
Differentiate between 0 and unspecified gas/gasprice
2015-06-09 05:49:55 -07:00
046411866b Fixed signing + tests 2015-06-09 08:47:20 -04:00
ca8cb65b73 core: fix data race accessing ChainManager.currentBlock 2015-06-09 15:30:46 +03:00
07baf66200 core: fix data race in accessing ChainManager.td 2015-06-09 15:23:20 +03:00
1a96798642 gas -> gasprice 2015-06-09 08:13:26 -04:00
1c364b6beb gas -> gasprice 2015-06-09 08:13:25 -04:00
c8a9a4e76d Differentiate between 0 and unspecified gas/gasprice 2015-06-09 08:13:25 -04:00
d09ead546c eth: fix a data race in the hash announcement processing 2015-06-09 15:09:15 +03:00
f86707713c eth: fix data race accessing peer.td 2015-06-09 14:56:27 +03:00
3054fd4811 Merge pull request #1215 from obscuren/issue1202
core: skip genesis block for reprocess. Closes #1202
2015-06-09 04:46:13 -07:00
7da8ebdfd0 Fixed readme links and description 2015-06-09 13:45:35 +02:00
44147d057d eth: fix data race accessing peer.recentHash 2015-06-09 14:27:44 +03:00
190c1b688a core: skip genesis block for reprocess. Closes #1202 2015-06-09 13:24:32 +02:00
05cae69d72 Merge pull request #1188 from karalabe/newblockhashes-proposal
eth: implement the NewBlockHashes protocol proposal
2015-06-09 04:07:46 -07:00
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
3f4ce70d92 jsre: fix wrong separator comma placing due to non consistent field orders 2015-06-09 13:27:45 +03:00
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
a5b977aa90 core: write accounts to statedb. Closes #1210 2015-06-09 11:37:01 +02:00
0f1cdfa53a Merge pull request #1193 from tgerring/hotbackup
Improve export command
2015-06-08 16:32:38 -07:00
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
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
8216bb901c eth: clean up pending announce download map, polish logs 2015-06-09 00:37:10 +03:00
55b7c14554 Merge pull request #1199 from obscuren/settable_genesis_nonce
core: settable genesis nonce
2015-06-08 13:43:41 -07:00
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
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
9ed166c196 eth: split and handle explicitly vs. download requested blocks 2015-06-08 20:38:39 +03:00
44e5ff7d15 Fix blocktest 2015-06-08 12:55:15 -04:00
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
fdccce781e eth: fetch announced hashes from origin, periodically 2015-06-08 19:24:56 +03:00
8c012e103f eth: mark blocks as known when broadcasting hashes too 2015-06-08 18:44:02 +03:00
6f415b96b3 eth: implement the NewBlockHashes protocol proposal 2015-06-08 18:44:02 +03:00
4ed3509a02 eth/downloader: test registration rejection on head ban 2015-06-08 15:02:52 +03:00
c4f224932f eth/downloader: reject peer registration if head is banned 2015-06-08 14:46:31 +03:00
63c6cedb14 eth/downloader: cap the hash ban set, add test for it 2015-06-08 14:12:00 +03:00
4b2dd44711 eth/downloader: fix throttling test to be less timing dependent 2015-06-08 13:23:58 +03:00
2d627995cf eth/downloader: fix another rebase error 2015-06-08 13:23:58 +03:00
b40c796ff7 eth/downloader: preallocate the block cache 2015-06-08 13:23:58 +03:00
1d7bf3d39f eth/downloader: fix merge compile error 2015-06-08 13:23:58 +03:00
6d497f61c6 eth/downloader: don't block hash deliveries while pulling blocks 2015-06-08 13:23:58 +03:00
9da0232eef eth/downloader: update test for shitty travis 2015-06-08 13:23:58 +03:00
0275fcb3d3 eth/downloader: clean up and simplify the code a bit 2015-06-08 13:23:58 +03:00
abdfcda4dd eth/downloader: short circuit sync if head hash is banned 2015-06-08 13:23:58 +03:00
84bc93d8cb eth/downloader: accumulating hash bans for reconnecting attackers 2015-06-08 13:23:58 +03:00
eedb25b22a eth/downloader: clean up tests and unused variables 2015-06-08 13:23:57 +03:00
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
6c27e2aaf6 core: add bad block for the 'missing nonce check' fork 2015-06-08 02:54:10 +02:00
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
4ab0cedf42 Export should start with block 0 2015-06-06 10:59:56 -04:00
2729e6294a Improved error checking 2015-06-06 10:04:13 -04:00
ed621aae33 Cleanup 2015-06-06 09:50:23 -04:00
e822f440b0 added ARM builds 2015-06-06 14:33:08 +02:00
d65b64c884 Allow export command to take first and last args 2015-06-06 00:02:32 -04:00
89c9320d80 Allow exporting subset of chain 2015-06-05 23:01:54 -04:00
43ceb0f5c7 cmd/geth: version bump 0.9.27 2015-06-05 17:36:42 +02:00
7ab87f9f6e wip 2015-06-05 17:33:30 +02:00
b94a76d17e Merge pull request #1189 from karalabe/downloader-polishes
eth/downloader: handle timeouts more gracefully
2015-06-05 08:31:57 -07:00
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
94e525ae12 eth, eth/downloader: fix #1098, elevate empty hash errors to peer drops 2015-06-05 12:52:48 +03:00
328ef60b85 eth/downloader: differentiate stale and nonexistent deliveries 2015-06-05 12:37:48 +03:00
94e4aa6ea9 eth/downloader: log hard timeouts and reset capacity 2015-06-05 11:53:46 +03:00
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
fc6a5ae3ec p2p/nat: add timeout for UPnP SOAP requests 2015-06-04 22:25:43 +02:00
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
8b4605c336 Merge pull request #1186 from obscuren/log_fixes
tests: log coalescing fixes
2015-06-04 10:49:00 -07:00
246db4250b tests: use state logs instead own kept logs 2015-06-04 19:48:23 +02:00
45152dead5 Merge pull request #1181 from obscuren/txpool_fixes
cmd: transaction pool fixes and improvements
2015-06-04 10:47:23 -07:00
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
912cf7ba04 core: added fork test & double nonce test 2015-06-04 19:28:39 +02:00
0f51ee6c88 crypto: return common.Address rather than raw bytes 2015-06-04 19:28:39 +02:00
dcdb4554d7 core: documented changes in tx pool 2015-06-04 16:19:22 +02:00
cf5ad266f6 core: only change the nonce if the account nonce is lower 2015-06-04 15:44:42 +02:00
d754c25cc8 eth/downloader: drop log entry from peer, it's covered already 2015-06-04 16:22:55 +03:00
24cca2f18d eth/downloader: log after state updates, easier to debug 2015-06-04 15:10:43 +03:00
28c32d1b1b eth/downloader: fix #1178, don't request blocks beyond the cache bounds 2015-06-04 14:51:14 +03:00
2bb0e48a7b skipped failing natspec tests 2015-06-04 13:17:47 +02:00
9dd12a64a7 core: renamed txs to pending 2015-06-04 13:16:31 +02:00
9b27fb91c0 cmd/geth, common/natspec: updating tests (still failing?) 2015-06-04 11:41:20 +02:00
36c0db2ac9 xeth: use the correct nonce for creating transactions 2015-06-04 11:35:37 +02:00
140d883901 core: test updates 2015-06-03 22:53:33 +02:00
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
5197aed7db cmd/utils, eth: core.NewBlockProcessor no longer needs TxPool 2015-06-03 22:43:23 +02:00
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
5721c43585 core: update documentation comments for TxPool 2015-06-03 22:43:23 +02:00
ca31d71107 core: remove unused code from TxPool 2015-06-03 22:43:23 +02:00
08befff8f1 core: compute less transaction hashes in TxPool 2015-06-03 22:43:23 +02:00
770a0e7839 wip 2015-06-03 22:39:17 +02:00
b26f5e0bb7 types: block json unmarshal method added 2015-06-03 22:39:17 +02:00
fa4aefee44 core/vm: cleanup and renames 2015-06-03 22:39:17 +02:00
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
71d9367edc Merge pull request #1151 from fjl/parallel-nonce-2
core: re-add parallel nonce checks
2015-06-03 09:12:06 -07:00
122d2db095 Merge pull request #1150 from fjl/fix-jumpdest
core/vm: improve JUMPDEST analysis
2015-06-03 09:11:56 -07:00
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
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
c9ed9d253a tests/files: update tests to d309b4679a58d2 2015-06-03 16:25:06 +02:00
48fb0c3213 core/vm: check for 'no code' before doing any work 2015-06-03 16:25:06 +02:00
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
edbd902a1b Initialise curve N value in package init 2015-06-03 14:44:29 +02:00
3ec159ab6b eth/downloader: demote peers if they exceed the soft limits at 1 blocks already 2015-06-03 15:43:12 +03:00
c9a546c310 eth/downloader: add a basic block download congestion control 2015-06-03 14:40:11 +03:00
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
14e7192d9c crypto/sha3: pull in latest keccak from go crypto (45% speed increase) 2015-06-03 12:00:39 +03:00
9085b10508 Merge pull request #1169 from Gustav-Simonsson/unsupport_bruncles
Unsupport bruncles
2015-06-03 01:20:59 -07:00
0fa9d2431f Add new 0th gen uncle test 2015-06-02 14:47:23 +02:00
8a76b45253 Use older version of stSpecialTest until JUMPDEST fix is merged 2015-06-02 12:25:43 +02:00
8962af2e42 Update Ethereum JSON test files 2015-06-02 12:15:25 +02:00
55bf5051ad Unsupport bruncles 2015-06-01 22:43:05 +02:00
5a692ba4f6 Update Ethereum JSON test files 2015-06-01 22:34:44 +02:00
147a699c65 Add missing err checks on From() (skip RPC for now) 2015-06-01 22:12:03 +02:00
32e1b104f8 Add EC signature validations before call to libsecp256k1 2015-06-01 21:06:52 +02:00
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
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
5b14fdb94b Merge pull request #1161 from tgerring/bootnode
Updated SA boot node
2015-06-01 09:51:24 +02:00
057d36b049 Update bootnode 2015-05-31 13:48:27 -05:00
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
b7fc85d68e core: fix #1154, sort out data race accessing the future blocks 2015-05-29 23:46:10 +03:00
b4818a003a Update Ethereum JSON test files 2015-05-29 13:12:54 +02:00
0e703d92ac Merge branch 'release/0.9.26' 2015-05-28 18:21:14 +02:00
12b90600eb core: moved guards 2015-05-28 18:18:23 +02:00
2587b0ea62 Merge branch 'release/0.9.26' into develop 2015-05-28 18:01:54 +02:00
f082c1b895 Merge branch 'release/0.9.26' 2015-05-28 18:01:40 +02:00
d51d74eb55 cmd/geth: bump version v0.9.26 2015-05-28 17:43:05 +02:00
35806ccc1c build server fix 2015-05-28 17:18:13 +02:00
b25e8b7079 Merge pull request #1142 from obscuren/100-pct-block-prop
eth: 100% block propogation
2015-05-28 08:07:11 -07:00
e5d7627427 eth: 100% block propogation 2015-05-28 17:01:44 +02:00
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
b6e137b2b4 Merge pull request #1141 from obscuren/parallelisation-issue
Parallelisation issue
2015-05-28 07:37:37 -07:00
03178a77b6 Merge pull request #1132 from obscuren/log_optimisations
core: log optimisations
2015-05-28 07:35:07 -07:00
16038b4e67 core: added bad block 2015-05-28 16:26:19 +02:00
109f995684 core: log block hash during nonce error 2015-05-28 15:46:36 +02:00
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
9138955ba5 Validate account length and avoid slicing in logging 2015-05-28 15:20:05 +02:00
4baa5ca963 Merge pull request #1137 from obscuren/web3_update
cmd/geth: updated web3
2015-05-28 04:40:14 -07:00
598e454d46 cmd/geth: updated web3 2015-05-28 13:24:09 +02:00
9f467c387a Merge pull request #1123 from fjl/lean-blockchain-commands
cmd/geth: leaner blockchain commands
2015-05-28 04:17:47 -07:00
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
29b0480cfb core, eth/downloader: expose the bad hashes, check in downloader 2015-05-28 14:03:10 +03:00
e84bbcce3c cmd/geth: don't flush databases after import 2015-05-28 01:20:58 +02:00
e1fe75e3b6 cmd/utils: use constant for import batch size 2015-05-28 01:20:58 +02:00
a8bc2181c9 cmd/utils: skip batches with known blocks during import
This makes block importing restartable.
2015-05-28 01:20:58 +02:00
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
705beb4c25 cmd/utils: print errors only once if stdout and stderr are the same file 2015-05-28 01:09:26 +02:00
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
8e4512a5e7 p2p/nat: bump timeout in TestAutoDiscRace 2015-05-28 01:09:26 +02:00
651030c98d cmd/geth: move blockchain commands to chaincmd.go 2015-05-28 01:09:26 +02:00
62671c93c4 cmd/mist: use utils.SetupLogger 2015-05-28 01:09:26 +02:00
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
e3253b5d5e core: fixed an issue with storing receipts 2015-05-28 01:00:23 +02:00
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
5479be9f64 Merge pull request #1129 from obscuren/database_cache_removal
ethdb, common: cache removal
2015-05-27 10:00:08 -07:00
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
020006a8ed common, ethdb: removed caching and LastTD 2015-05-27 18:03:16 +02:00
5235e01b8d eth: hard disconnect if a peer is flaky 2015-05-27 18:58:51 +03:00
7595716816 core: adjust gas calculation 2015-05-27 17:01:28 +02:00
3f91ee4ff8 cmd/geth: expand admin.progress() to something meaningful 2015-05-27 16:46:46 +03:00
8951a03db3 Merge pull request #1121 from obscuren/miner_time_fix
Miner time fix
2015-05-27 04:51:42 -07:00
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
69f7a1da5a Merge pull request #1122 from Gustav-Simonsson/improve_validate_header_comments
Update ValidateHeader comments
2015-05-27 04:34:34 -07:00
912ae80350 miner: Added 5 blocks wait in prep for #1067 2015-05-27 13:33:52 +02:00
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
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
bf5f0b1d0c Update ValidateHeader comments 2015-05-27 13:30:24 +02:00
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
14955bd454 Revert "core: block.gasLimit - parent.gasLimit <= parent.gasLimit / GasLimitBoundDivisor"
This reverts commit be2b0501b5.
2015-05-27 13:01:06 +02:00
de12183d38 deep-mining-log: need ring buffer to be one bigger for all-blocks-mined case 2015-05-26 18:55:52 -07:00
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
f5ce848cfe Merge branch 'release/0.9.25' into develop 2015-05-27 02:07:13 +02:00
70867904a0 Merge branch 'release/0.9.25' 2015-05-27 02:07:03 +02:00
2c532a7255 cmd/geth: bump version 0.9.25 2015-05-27 02:06:52 +02:00
aada35af9b Merge pull request #1114 from obscuren/develop
core: block.gasLimit - parent.gasLimit <= parent.gasLimit / GasLimitB…
2015-05-26 17:04:42 -07:00
be2b0501b5 core: block.gasLimit - parent.gasLimit <= parent.gasLimit / GasLimitBoundDivisor 2015-05-27 01:52:03 +02:00
3590591e67 Merge pull request #1113 from obscuren/develop
core: block database version update
2015-05-26 16:47:10 -07:00
222249e622 cmd/geth: Flush instead of close. This solves a nil ptr error 2015-05-27 01:38:41 +02:00
b2f2806055 cmd/geth, core: Updated DB version & seedhash debug method 2015-05-27 01:38:41 +02:00
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
612f01400f p2p/discover: bond with seed nodes too (runs only if findnode failed) 2015-05-26 23:30:41 +02:00
3630432dfb p2p/discovery: fix a cornercase loop if no seeds or bootnodes are known 2015-05-26 23:30:40 +02:00
f539ed1e66 p2p/discover: force refresh if the table is empty 2015-05-26 23:30:40 +02:00
5076170f34 p2p/discover: permit temporary bond failures for previously known nodes 2015-05-26 23:30:40 +02:00
6078aa08eb p2p/discover: watch find failures, evacuate on too many, rebond if failed 2015-05-26 23:30:40 +02:00
64174f196f p2p/discover: add support for counting findnode failures 2015-05-26 23:30:40 +02:00
6a674ffea5 Merge pull request #1108 from karalabe/fine-seeding
Fine tune seeder and p2p peer handling
2015-05-26 22:03:11 +02:00
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
c37389f19c core: check negative value transactions. Closes #1109 2015-05-26 20:38:26 +02:00
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
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
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
4de8213887 cmd/geth: fix js console test for p2p server update 2015-05-26 19:35:31 +03:00
68898a4d6b p2p: fix Self() panic if listening is disabled 2015-05-26 19:16:05 +03:00
e1a0ee8fc5 cmd/geth, cmd/utils, eth, p2p: pass and honor a no discovery flag 2015-05-26 19:07:24 +03:00
278183c7e7 eth, p2p: start the p2p server even if maxpeers == 0 2015-05-26 17:49:37 +03:00
ceea1a7051 Merge branch 'develop' 2015-05-26 15:35:57 +02:00
eae0927597 core: prevent crash when last block fails 2015-05-26 15:35:51 +02:00
3083ec5e32 eth/downloader: silence "Added N blocks from..." if N == 0 2015-05-26 16:10:28 +03:00
2f2dd80e48 Merge branch 'develop' 2015-05-26 14:51:41 +02:00
d74ee40c86 cmd/geth: bumped version to 0.9.24 2015-05-26 14:51:28 +02:00
e6b143b00d Merge branch 'develop' 2015-05-26 14:50:37 +02:00
3386ecb59a Merge branch 'release/0.9.24' into develop 2015-05-26 14:49:06 +02:00
52b4e51366 Merge branch 'release/0.9.24' 2015-05-26 14:48:39 +02:00
0a85260bcd cmd/geth: bumped version to 0.9.24 2015-05-26 14:08:51 +02:00
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
fd38ea4149 Merge pull request #1099 from obscuren/fork_fix
Fork fix
2015-05-26 04:50:04 -07:00
6c2f6f5b03 tests: removed missing block test 2015-05-26 13:48:10 +02:00
a6b46420d0 core: ban hash 38f5bb...a714bc
Hash 38f5bbbffd74804820ffa4bab0cd540e9de229725afb98c1a7e57936f4a714bc
ignored.
2015-05-26 13:48:10 +02:00
f6f81169fe core/vm: Fork fix. Removal of appending 0 bytes in memset 2015-05-26 13:48:10 +02:00
03faccfb08 tests: updated 2015-05-26 13:48:10 +02:00
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
eafdc1f8e3 eth, eth/downloader: surface downloaded block origin, drop on error 2015-05-26 14:00:21 +03:00
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
b419e2631a core/vm: Cleanups & SUB output fix. Closes #1096 2015-05-26 12:42:33 +02:00
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
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
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
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
9f38ef5d97 p2p/discover: add ReadRandomNodes 2015-05-25 01:17:14 +02:00
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
7b93341836 Godeps: add github.com/davecgh/go-spew 2015-05-25 01:17:14 +02:00
dbdc5fd4b3 p2p: delete Server.Broadcast 2015-05-25 01:17:14 +02:00
2f249fea44 eth: stop p2p.Server on shutdown 2015-05-25 01:17:14 +02:00
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
c31f8e2bd7 compile solidity contracts with std library 2015-05-24 19:12:18 +02:00
f1ce5877ba do not export ring buffer struct 2015-05-23 12:09:59 -07:00
8a7fb5fd34 do not export constant for when to log a deep block you mined 2015-05-23 12:09:52 -07:00
97433f5ef1 expand acronym in log message from TD
to total difficulty
2015-05-22 19:12:59 -07:00
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
b2b9b3b567 Merge pull request #1077 from obscuren/disasm
core/vm, rpc: added disasm to `ext_` RPC
2015-05-22 06:51:38 -07:00
7381be8edb core/vm, rpc: added disasm to ext_ RPC 2015-05-22 15:38:46 +02:00
f7415c0bbc Merge pull request #1076 from obscuren/rpc_sign
core: added RPC sign back in
2015-05-22 04:08:51 -07:00
6539ccae7c core: added RPC sign back in 2015-05-22 13:00:04 +02:00
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
f5e112ae5a Merge pull request #1074 from bas-vk/issue1068
make registrar available in console
2015-05-22 02:22:49 -07:00
821b578f7e make registrar available in console 2015-05-22 09:13:45 +02:00
6ad817e17b Add StateTests/RandomTests and VMTests/RandomTests 2015-05-21 23:04:46 +02:00
13e662f6de Merge branch 'develop' 2015-05-21 19:53:35 +02:00
054abe20b8 miner: moved break INSIDE the switch ... 2015-05-21 19:53:27 +02:00
8c25a83708 Merge branch 'release/0.9.23' into develop 2015-05-21 18:59:26 +02:00
2c1c78a6d9 Merge branch 'release/0.9.23' 2015-05-21 18:58:57 +02:00
cbd3ae6906 p2p/discover: fix #838, evacuate self entries from the node db 2015-05-21 19:41:46 +03:00
af24c271c7 p2p/discover: fix database presistency test folder 2015-05-21 19:28:10 +03:00
3ea9868b65 miner: on downloader.Done/Fail stop immediately. Ignore pending evs 2015-05-21 18:14:32 +02:00
4600ecb5c7 cmd/geth: bump version 0.9.23 2015-05-21 18:02:15 +02:00
f1cc3619f5 Merge pull request #1055 from ethersphere/autodag
automatic DAG pregeneration for smooth epoch transitions
2015-05-21 09:01:57 -07:00
af28736bd0 Merge pull request #1064 from karalabe/downloader-attacks
Fix two additional download vulnerabilities
2015-05-21 09:00:12 -07:00
06a041589f eth, eth/downloader: remove duplicate consts, bump hash fetch to 2K 2015-05-21 18:16:04 +03:00
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
1da145675d Merge pull request #1063 from bas-vk/issue1053
prefix dapp key/value entries in extradb
2015-05-21 06:43:17 -07:00
a61e6788db prefix dapp key/value entries in extradb 2015-05-21 15:20:38 +02:00
90b672f1af Merge pull request #1062 from Gustav-Simonsson/tests_updates
Tests updates
2015-05-21 04:49:23 -07:00
bf7dcfce36 Merge pull request #1059 from obscuren/cleanup
Cleanup
2015-05-21 04:11:36 -07:00
907848997b miner: one-shot update loop 2015-05-21 11:57:00 +02:00
207bd55751 eth: reduced max open files for LevelDB 2015-05-21 11:45:35 +02:00
84cd618585 ethdb: documentation and corruption recovery 2015-05-21 11:43:05 +02:00
ef8744d9fc core: switched back to set.Set for uncle verification 2015-05-21 11:36:39 +02:00
ff1630834c xeth: removed Value 2015-05-21 11:36:05 +02:00
52db6d8be5 eth/downloader: circumvent a forged block chain with known parent attack 2015-05-21 08:37:27 +03:00
e8b22b9253 eth/downloader: prevent a peer from dripping bad hashes 2015-05-21 08:07:58 +03:00
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
8fe8ec84f6 Merge pull request #1049 from zsfelfoldi/receipts
Storing tx receipts in extraDb
2015-05-20 03:00:36 -07:00
0300eef94d Merge pull request #1048 from ethersphere/cli-fixes
CLI, JSRE admin and  Solc improvements
2015-05-20 02:31:52 -07:00
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
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
3c8227b935 eth: fix odd method names in peer set 2015-05-20 10:34:45 +03:00
6f54eb6d9a eth/downloader: fix test to it doesn't time out on a slow machine 2015-05-20 10:15:42 +03:00
00ec4132f8 Storing tx receipts in extraDb 2015-05-20 06:41:50 +02:00
e1d1417729 rpc: NewNotAvailableError instead of NewNotImplementedError if no solc 2015-05-20 05:29:28 +01:00
00f59f5014 fix eth.sign. now implemented in admin jsre until web3.js has it . 2015-05-20 04:38:20 +01:00
b0ae84aa0d multiple contract source for solidity compiler: returns contract array if multiple contracts. fixes #1023 2015-05-20 04:11:48 +01:00
ea893aca8f update web3.js to 0.4.2 2015-05-20 02:58:49 +01:00
d92172f3d4 add usage doc to wallet import 2015-05-20 02:47:13 +01:00
4201a18117 remove solc flair 2015-05-20 02:47:13 +01:00
22b694ee1e solc now in ethereum, fixes solc path setting; setSolc() didnt work 2015-05-20 02:47:13 +01:00
f9abcee0f9 fix solc tests unskip 2015-05-20 02:47:13 +01:00
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
f5af1fdca8 core/vm: RETURN op code returns pointer to memory rather than copy 2015-05-20 00:21:23 +02:00
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
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
b14ee6ce16 Merge pull request #1046 from tgerring/issue1045
Allow unlocking multiple accounts
2015-05-19 15:11:20 -07:00
8dac28f2e3 core: block cache Has method thread safe 2015-05-19 21:50:56 +02:00
87a05c8f38 core: skipped tests while cache disabled 2015-05-19 21:50:26 +02:00
32b8565022 Support multiple account unlock attempts 2015-05-19 14:46:32 -05:00
af8ada45e7 Allow unlocking multiple accounts #1045
Separate accounts with spaces when using --unlock
2015-05-19 13:40:41 -05:00
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
9b825e2728 Merge pull request #1036 from tgerring/issue884
JSON RPC null field updates
2015-05-19 06:44:31 -07:00
748263d2f0 Use bytes.Repeat() instead of 32-byte literal 2015-05-19 08:14:48 -05:00
7d9a13e0d5 core: disable cash tmp 2015-05-19 12:59:58 +02:00
6c2ad7b72e Merge pull request #1034 from obscuren/tx_pool_fix
Nonce fix for failing transactions
2015-05-18 12:28:51 -07:00
b7baceefda xeth: remove nonce on error. Fixes #1026 2015-05-18 20:52:25 +02:00
4755caeb2d eth: remote a superfluous peerSet method 2015-05-18 21:35:42 +03:00
5422fe5125 eth: make the peer set thread safe 2015-05-18 21:33:37 +03:00
bd0c0a633b Merge pull request #1022 from obscuren/parallel_nonce_checks
Parallelise nonce checks
2015-05-18 11:13:53 -07:00
d6adadc5e3 Merge pull request #1033 from tgerring/issue1010
Add "removedb" command to Geth
2015-05-18 11:12:58 -07:00
0864f1fc8e Remove unused confirm() method 2015-05-18 12:25:33 -05:00
f14feea436 Refactor user prompts into utils 2015-05-18 12:24:30 -05:00
36a4ba3248 Add user confirmation for removedb 2015-05-18 12:04:35 -05:00
40717465bc core: fixed tests 2015-05-18 18:16:53 +02:00
59c0d01418 core: chain manager no longer exports genesis block 2015-05-18 18:16:53 +02:00
bc5e60cd63 miner: stale block notification 2015-05-18 18:16:53 +02:00
fe41bd6fe8 Add "removedb" command to Geth
Removes the state and blockchain databases
2015-05-18 10:54:15 -05:00
a3a5f8b593 Merge pull request #1032 from tgerring/issue1025
Multiple CORS domains support
2015-05-18 08:49:35 -07:00
54b5c8273d XEth comment clarification 2015-05-18 10:41:56 -05:00
a2598e649d Permit multiple CORS domains
Separated by spaces
2015-05-18 10:31:03 -05:00
62d76b8e1f Cleanup 2015-05-18 10:11:27 -05:00
a528bd04db Return nil for certain fields on eth_getTransactionByHash when not part of a block 2015-05-18 10:09:00 -05:00
677796b351 Merge pull request #1031 from bas-vk/issue1012
fixed race condition in miner
2015-05-18 07:33:06 -07:00
6a72cd45e2 Add wrapper for BlockTests/bcWalletTest.json 2015-05-18 16:28:54 +02:00
1d51cada3c Handle call depth exception for CREATE 2015-05-18 16:23:20 +02:00
d381d9a74c Return nil for certain fields on eth_getBlockByNumber pending 2015-05-18 09:16:10 -05:00
60561cdca2 fixed issue when miner is not stopping af stop command 2015-05-18 16:09:01 +02:00
7778740315 fixed race condition in miner 2015-05-18 15:13:58 +02:00
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
36419defd1 Update Ethereum JSON test files 2015-05-18 12:45:24 +02:00
67d44519ce core: bugfix test 2. set => hash map 2015-05-18 10:49:09 +02:00
54f0f82dd1 ret 2015-05-18 10:14:48 +02:00
e323f0e831 core: tmp diagnostic logs 2015-05-18 10:13:50 +02:00
280b7f23af Merge branch 'hotfix/0.9.22' into develop 2015-05-17 21:35:29 +02:00
915fc0e581 Merge branch 'hotfix/0.9.22' 2015-05-17 21:35:15 +02:00
3a51d5e80c cmd/geth: fixed ver num 2015-05-17 21:34:28 +02:00
443d024843 Merge pull request #1021 from obscuren/global_chain_lock
core: global chain insert lock
2015-05-17 08:54:16 -07:00
27782bbade core: global chain insert lock 2015-05-17 00:55:02 +02:00
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
28ba374f27 cmd/geth: delete state db on upgradedb command 2015-05-16 17:43:19 +02:00
ad99089567 Merge branch 'hotfix/0.9.21.1' into develop 2015-05-16 13:04:43 +02:00
69f8a1b01a Merge branch 'hotfix/0.9.21-1' 2015-05-16 13:03:30 +02:00
ad7b0efbd3 cmd/geth: hotfix bump 2015-05-16 13:02:30 +02:00
d98a6f85fc core: further improved uncle error messages 2015-05-16 13:02:30 +02:00
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
fe64a13cea Adjust miner coinbase and not just miner worker coinbase 2015-05-16 12:56:06 +02:00
741fa8ca9c miner: mutex locks on cpu agent. Closes #1007 2015-05-16 12:55:56 +02:00
61e8296bd8 Adjust miner coinbase and not just miner worker coinbase 2015-05-15 21:23:09 -04:00
4b2ee6c30c Merge branch 'release/0.9.21' into develop 2015-05-16 00:27:35 +02:00
1564f1a020 Merge branch 'release/0.9.21' 2015-05-16 00:27:13 +02:00
7ea76fcf99 core, cmd/geth, cmd/mist: cleanup. bump version 0.9.21 2015-05-16 00:26:36 +02:00
79fa05867f xeth: set balance max balance to from in call. Closes #951 2015-05-16 00:03:08 +02:00
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
55d85d60fd eth, cmd/geth: start mining from console respects CLI flag 2015-05-15 20:26:15 +02:00
d3e84cc8b4 miner: properly check for mining operation on Register 2015-05-15 20:26:15 +02:00
5cec1aad15 core, miner: fork resolving and restart miner after sync op
Fork resolving fixes #940
2015-05-15 20:26:15 +02:00
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
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
412cf98bbc eth/downloader: fix #992, where tests may time out on a slow machine 2015-05-15 21:16:42 +03:00
f3ae8f50a5 eth/downloader: circumvent download race between crosscheck and hashes 2015-05-15 20:54:10 +03:00
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
619e8a4f03 Add StateTests/RandomTests but skip for now 2015-05-15 19:17:40 +02:00
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
32276e8b01 Update StateTests and nil create return on failed code deposit 2015-05-15 18:49:31 +02:00
4f0d88cb02 eth/downloader: fix cancel channel double close 2015-05-15 19:43:42 +03:00
830bdb1cfd Update Ethereum JSON tests 2015-05-15 16:08:00 +02:00
dadf01de60 unskip StateTests/stTransactionTest and use test tx nonce 2015-05-15 16:05:11 +02:00
7d71a75d77 Merge pull request #988 from karalabe/fix-downloader-vulnerabilities
Fix downloader vulnerabilities
2015-05-15 06:38:12 -07:00
5c1a7b965c eth/downloader: circumvent a fake blockchain attack 2015-05-15 15:04:15 +03:00
b517967f86 eth/downloader: don't penalize for stale cross checks 2015-05-15 15:03:08 +03:00
83226762c2 eth, eth/downloader: detect and handle madeup hash attacks 2015-05-15 15:01:58 +03:00
9ad515d2dc eth: drop a sync peer if it sends an invalid hash chain 2015-05-15 15:01:58 +03:00
72411eb24c eth/downloader: circumvent hash reordering attacks 2015-05-15 15:01:58 +03:00
bcc2980179 eth/downloader: check sync after failed attacks 2015-05-15 15:01:58 +03:00
366e9627e8 eth/downloader: add a test for detecting missing blocks 2015-05-15 15:01:58 +03:00
cd2fb09051 eth, eth/downloader: prevent hash repeater attack 2015-05-15 15:01:58 +03:00
c1f0d40e34 Merge pull request #987 from obscuren/develop
Miner updates and downloader events
2015-05-15 04:12:46 -07:00
158efbaa45 Merge pull request #984 from tgerring/issue924
Omit replies for RPC notification requests
2015-05-15 04:12:40 -07:00
cfb2b51b74 eth/downloader: fixed test 2015-05-15 12:47:32 +02:00
f6669db001 core: fixed mining strategy 2015-05-15 12:24:29 +02:00
b71091e337 eth, eth/downloader, miner: use download events to check miner start 2015-05-15 00:43:10 +02:00
0f76a1c6df core: changed how head events are checked 2015-05-15 00:42:06 +02:00
580bae0a86 core: improved uncle messages 2015-05-15 00:40:07 +02:00
44a7f997c3 Unreverse ordering 2015-05-14 15:50:39 -05:00
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
3ac34ee3c4 Merge pull request #975 from obscuren/develop
core: changed log message for forks. closes #952
2015-05-14 10:38:10 -07:00
69c78ddbb4 Merge pull request #983 from tgerring/issue958
Format contract code as hexdata
2015-05-14 10:38:01 -07:00
007bced276 Merge pull request #982 from tgerring/issue962
Check for error on DB fetch of tx
2015-05-14 10:37:30 -07:00
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
4ad8f1035b Format contract code as hexdata 2015-05-14 12:17:19 -05:00
12f82ab2ff Check for error on DB fetch of tx 2015-05-14 11:57:29 -05:00
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
b19bf3ec78 core: changed log message for forks. closes #952 2015-05-14 17:16:46 +02:00
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
90b94e64fc Merge pull request #971 from fjl/p2p-limit-tweaks
p2p: tweak connection limits
2015-05-14 08:15:51 -07:00
d2f119cf9b p2p/discover: limit open files for node database 2015-05-14 15:01:13 +02:00
206fe25971 p2p: remove testlog 2015-05-14 14:56:34 +02:00
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
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
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
fe87feccb1 eth/downloader: add a small additional check to the test 2015-05-14 15:44:54 +03:00
ebf1eb9359 eth/downloader: remove a previous leftover 2015-05-14 15:40:28 +03:00
3eda70c64c eth, eth/downloader: remove parent verification from the downlaoder 2015-05-14 15:38:49 +03:00
1fa48bc5e7 Introduced default unlock duration when an account is unlocked from the console 2015-05-14 14:25:48 +02:00
a4246c2da6 eth, eth/downloader: handle a potential unknown parent attack 2015-05-14 15:24:18 +03:00
7fa740996c Merge pull request #960 from fjl/nat-fixes
p2p/nat: fix UPnP auto discovery
2015-05-14 04:06:13 -07:00
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
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
cdeae22356 Merge pull request #949 from bas-vk/issue944
removed invalid filename characters
2015-05-14 04:04:43 -07:00
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
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
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
e7c7b54b82 Godeps: bump github.com/huin/goupnp to c57ae84 2015-05-14 12:29:41 +02:00
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
bdec8c3e41 Combined two loops 2015-05-14 05:02:15 -04:00
b24f16fa53 Make read of ethash hashrate atomic and update ethash godep 2015-05-14 04:05:49 +02:00
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
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
fca3333f7f Created separate family and ancestors environment objects 2015-05-13 20:46:23 -04:00
bc83761996 Fixed max uncle count error message 2015-05-13 20:29:57 -04:00
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
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
fad21fb4a5 Merge pull request #963 from Gustav-Simonsson/fix_keystore_crypto_comments
Update keystore code comments
2015-05-13 11:51:02 -07:00
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
8eef2b765a fix test. 2015-05-13 20:15:01 +02:00
a32693770c Manual send of multiple neighbours packets. Test receiving multiple neighbours packets. 2015-05-13 20:03:17 +02:00
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
56a5592ea0 Update keystore code comments 2015-05-13 18:33:31 +02:00
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
910a6d4e46 eth/downloader: fix nil panic caused by wrong variable use 2015-05-13 17:25:01 +03:00
de3a71cafd eth/downloader: remove a redundant sync progress check 2015-05-13 16:56:01 +03:00
48ee0777a5 eth/downloader: add a user sync notificaton 2015-05-13 16:03:05 +03:00
ec57aa64cd eth/downloader: sync the cancel channel during cancel too 2015-05-13 14:01:08 +03:00
ee0c892303 eth/downloader: fix deliveries to check for sync cancels 2015-05-13 13:47:21 +03:00
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
e30e9fe979 removed invalid filename characters 2015-05-13 12:38:12 +02:00
d2d5dbc6fb eth/downloader: fix active peer shadowing, polish func names 2015-05-13 13:13:43 +03:00
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
b5b53d8b32 Fix hex conversion in --unlock and log when successful 2015-05-13 01:11:17 +02:00
28d6b30c0f Merge branch 'release/0.9.20' into develop 2015-05-12 19:05:51 +02:00
8e24378cc1 Merge branch 'release/0.9.20' 2015-05-12 19:05:33 +02:00
8fe01b4bfa eth: 100% tx propagation 2015-05-12 19:01:01 +02:00
36ce54e5dc cmd/geth: bump version to 0.9.20 2015-05-12 19:01:01 +02:00
d6357aa616 Merge pull request #631 from Gustav-Simonsson/improve_key_store_crypto
Improve key store crypto
2015-05-12 10:00:35 -07:00
e389585f1f Change default keystore dir 2015-05-12 18:33:04 +02:00
231fe04f03 Fix address type in js test 2015-05-12 17:48:21 +02:00
58d6ec689f Merge pull request #933 from bas-vk/issue928
replaced path with platform aware filepath module
2015-05-12 08:23:46 -07:00
037772fc07 fix hex conversion bug in RPC for byte slices 2015-05-12 17:22:17 +02:00
8001e48115 Fix natspec test (again x2) types 2015-05-12 17:22:17 +02:00
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
fe9e95a3fd Fix natspec e2e test accounts type (again) 2015-05-12 17:22:17 +02:00
940952f757 Fix HEX hack in xeth accounts() 2015-05-12 17:22:17 +02:00
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
313eec33ad Revert "Add key header to unencrypted key file"
This reverts commit a94d4ba0b53c4558ab838aaed635a2ff66ddfa53.
2015-05-12 17:19:39 +02:00
8754f2b768 Fix common.Address / []byte type conversions 2015-05-12 17:19:39 +02:00
cd88295f5a Add key header to unencrypted key file 2015-05-12 17:19:39 +02:00
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
ac3371bcb6 Correct accounts hex in XETH API 2015-05-12 17:19:39 +02:00
da9fe951da Use common.Address type for accounts.Address 2015-05-12 17:19:39 +02:00
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
9918b6c84e Remove the awesome, ever misunderstood entropy mixing 2015-05-12 17:18:30 +02:00
f87094b660 Merge pull request #932 from obscuren/develop
xeth, rpc: implement eth_estimateGas. Closes #930
2015-05-12 07:26:38 -07:00
dca290d525 sol: skipped source checking step 2015-05-12 16:19:14 +02:00
ff99752ddd xeth: use same semantics as block processer for transient calls 2015-05-12 15:53:00 +02:00
899df30c24 fixed identing 2015-05-12 15:23:19 +02:00
95773b9673 removed redundant newlines in import block 2015-05-12 15:20:53 +02:00
260536a729 rpc: hexData => hexNum 2015-05-12 15:02:44 +02:00
b79dd188d9 replaced several path.* with filepath.* which is platform independent 2015-05-12 14:24:11 +02:00
66de3f0aa8 xeth, rpc: implement eth_estimateGas. Closes #930 2015-05-12 14:21:43 +02:00
96d4a7d087 eth, ethdb: lower the amount of open files & improve err messages for db
Closes #880
2015-05-12 14:14:56 +02:00
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
03bf902b92 compiler, cli/js: fix solidity compiler tests failing when a different version of solc installed 2015-05-12 12:36:54 +02:00
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
13f8f65a58 eth, ethdb: lower the amount of open files & improve err messages for db
Closes #880
2015-05-12 11:28:55 +02:00
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
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
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
48bd48876c eth, eth/downloader: moved pending queue error message to debug 2015-05-11 17:27:34 +02:00
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
064cf16099 eth/downloader: use count instead of peers, clearer 2015-05-11 17:21:22 +02:00
d37a2559b9 eth/downloader: revert to demotion, use harsher penalty 2015-05-11 17:21:22 +02:00
70c65835f4 eth/downloader: fix #910, thread safe peers & polishes 2015-05-11 17:21:22 +02:00
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
fe7e284709 Merge pull request #920 from tgerring/issue917
Return 32-byte hashes from GetWork
2015-05-11 07:43:56 -07:00
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
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
fa53c5e074 eth/downloader: use count instead of peers, clearer 2015-05-11 17:10:00 +03:00
51d4566cbf Only allow doSign to sign hashes, enforced by using the type common.Hash 2015-05-11 15:54:19 +02:00
ebbd8b0743 eth/downloader: revert to demotion, use harsher penalty 2015-05-11 16:47:58 +03:00
49559e6d5e Interactive signature creation refactored into separate doSign function. 2015-05-11 15:46:18 +02:00
685862d2ce eth/downloader: fix #910, thread safe peers & polishes 2015-05-11 14:26:20 +03:00
a9e1d38612 Merge branch 'develop' of github.com:ethereum/go-ethereum into develop
Conflicts:
	rpc/jeth.go
2015-05-11 12:47:14 +02:00
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
6ecba12650 miner: added log message for mining operation. #912 2015-05-11 11:39:33 +02:00
3c6c891680 core: optimise pending transaction processing 2015-05-11 11:39:33 +02:00
df323cdb4e rpc: display error message to stdout 2015-05-11 11:39:33 +02:00
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
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
0ad5898c0f rpc, xeth: fix #881, gracefully handle offline whisper 2015-05-11 11:53:53 +03:00
00280e62e3 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-05-10 03:39:47 +02:00
7d69679935 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum 2015-05-10 03:39:23 +02:00
7551264fa6 cmd/geth, cmd/mist: version 0.9.19 2015-05-10 03:38:46 +02:00
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
0e211ae203 ethdb: set open file limit to 128 for all leveldbs 2015-05-10 01:55:39 +02:00
bd95871a89 Merge pull request #893 from obscuren/develop
eth: added a cancel method for the downloader
2015-05-09 16:54:06 -07:00
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
45dc690947 cmd/mist: version bump 2015-05-09 13:37:22 +02:00
e289b0a1c1 Merge pull request #888 from obscuren/develop
miner, flags: Configurable gas price & log flag change
2015-05-09 04:13:16 -07:00
658ac3c257 cmd/geth: bump version 0.9.18 2015-05-09 12:54:27 +02:00
7eed47fad5 miner, tests: fixed block test 2015-05-09 12:51:40 +02:00
e3a08875f6 miner: start/stop mutex locked. Closes #887 2015-05-09 12:32:36 +02:00
a7705fc203 miner: moved gasprice to non-method 2015-05-09 12:13:46 +02:00
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
cb1fa523e4 cmd/geth, cmd/mist, eth, flags: renamed loglevel to verbosity 2015-05-09 12:00:51 +02:00
1fe70a66ba Signature test. 2015-05-08 19:37:35 +02:00
62dd9833ec Merge branch 'develop' of github.com:ethereum/go-ethereum into develop 2015-05-08 17:55:53 +02:00
3a01e3e39b Signing (almost) works. 2015-05-08 17:52:44 +02:00
c8fc4cebe6 version 0.9.17 2015-05-08 17:24:41 +02:00
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
7c678554b5 Merge pull request #885 from fjl/p2p-fixes
p2p: more last-minute fixes
2015-05-08 07:47:56 -07:00
edad47bf0e eth/downloader: fix leftover state between syncs 2015-05-08 17:39:03 +03:00
a487396b76 eth_sign added to API for signing arbitrary data. 2015-05-08 16:36:13 +02:00
e94aa421c6 New API call for signatures. 2015-05-08 16:17:19 +02:00
d4f0a67323 p2p: drop connections with no matching protocols 2015-05-08 16:09:55 +02:00
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
9c0f36c46d p2p: use maxDialingConns instead of maxAcceptConns as dial limit 2015-05-08 16:09:55 +02:00
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
23454dcfcb Merge pull request #840 from karalabe/throttled-dialing
p2p: throttled handshakes
2015-05-08 06:53:40 -07:00
bd5720f480 eth, eth/downloader: handle sync errors a bit more gracefully 2015-05-08 15:22:48 +03:00
f819ac7158 Merge pull request #882 from zsfelfoldi/develop
Otto.ToValue concurrency error fixed
2015-05-08 04:54:22 -07:00
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
d7dabce732 ToVal serialization fix 2015-05-08 13:29:48 +02:00
f6e71b5749 updated ethereum.js 2015-05-08 13:05:20 +02:00
351d6b0d44 jsre, cmd/geth: updated web3.js and altered settimeout 2015-05-08 13:05:20 +02:00
03473d48c1 Merge pull request #875 from Gustav-Simonsson/test_updates
Test updates
2015-05-08 03:50:14 -07:00
45c070fc8b Merge pull request #833 from ethersphere/frontier/solidity
solidity compiler and contract metadocs integration
2015-05-08 03:43:31 -07:00
1de1359e3b Otto.ToValue concurrency error fixed 2015-05-08 12:27:35 +02:00
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
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
9d188f73b5 eth, eth/downloader: make synchronize thread safe 2015-05-07 21:07:20 +03:00
3593662b0c Update ethash deps (more build fixes, tests) 2015-05-07 19:39:55 +02:00
60b5a94428 xeth: getTransactionByHash, try pool if db fails 2015-05-07 18:23:24 +02:00
dcfecebe1f core: get transaction by hash from transaction pool 2015-05-07 18:22:57 +02:00
258a7b9a93 xeth: check proper queue for pending transaction filter 2015-05-07 17:20:57 +02:00
b3c9b66f29 rpc: eth_transactionFilter => eth_newPendingTransactionFilter 2015-05-07 14:44:32 +02:00
7e160a677d xeth, core, event/filter, rpc: new block and transaction filters 2015-05-07 14:44:32 +02:00
8735e5addd p2p: increase the handshake timeout in the tests 2015-05-07 15:30:56 +03:00
4d5a719f25 cmd, eth, p2p: introduce pending peer cli arg, add tests 2015-05-07 15:30:56 +03:00
af93217775 p2p: reduce the concurrent handshakes to 10/10 in/out 2015-05-07 15:22:09 +03:00
2060bc8bac p2p: fix dial throttling race condition 2015-05-07 15:22:08 +03:00
29fef349ef p2p: fix a dialing race in the throttler 2015-05-07 15:22:08 +03:00
3953bf0031 p2p: limit the outbound dialing too 2015-05-07 15:22:08 +03:00
43901c9282 eth/downloader: fix priority queue reset, add throttling test 2015-05-07 14:40:50 +03:00
79eb40fc9f Add bcTotalDifficultyTest and unskip now working tx tests 2015-05-07 13:03:22 +02:00
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
2b716aec54 Update JSON test files 2015-05-07 12:44:29 +02:00
45f8304f3c eth/downloader: fix expiration not running while fetching 2015-05-07 12:59:19 +03:00
4800c94392 eth/downloader: prioritize block fetch based on chain position, cap memory use 2015-05-07 10:57:34 +03:00
97c37356fd updated ignore 2015-05-07 00:03:11 +02:00
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
a0cb1945ae Merge pull request #866 from fjl/p2p-last-minute
Last minute p2p fixes
2015-05-06 14:49:52 -07:00
3e2a928caa p2p: stop dialing at half the maximum peer count 2015-05-06 23:44:51 +02:00
7bc1f487b8 Unskip now working tests, remove debug print 2015-05-06 23:25:44 +02:00
2808409fbd Add genesis block total difficulty in tests 2015-05-06 23:22:49 +02:00
6a2fec5309 p2p, whisper: use glog for peer-level logging 2015-05-06 23:19:14 +02:00
b719801db0 cmd/geth: gofmt screwup fix 2015-05-06 23:10:46 +02:00
458d891c63 cmd/geth: version bump 2015-05-06 23:04:49 +02:00
bcfd788661 p2p/discover: bump packet timeouts to 500ms 2015-05-06 22:59:00 +02:00
fd4b75cfa8 p2p/nat: less confusing error logging 2015-05-06 22:58:03 +02:00
090f593bc0 Merge branch 'karalabe-cherry-trusted-peers' into develop 2015-05-06 22:54:33 +02:00
062fa049d0 fixed merge issue 2015-05-06 22:54:21 +02:00
24d44f35f2 Merge pull request #791 from fjl/discover-sha3-distance
p2p/discover: sha3-based node distance
2015-05-06 13:48:57 -07:00
323216ed85 Merge pull request #861 from obscuren/transaction_pool_fixes
core: transaction pool fixes & resending transactions
2015-05-06 11:23:58 -07:00
1f26a1b863 Merge pull request #859 from Gustav-Simonsson/ethash_reloaded
Ethash reloaded
2015-05-06 11:20:54 -07:00
05ac1209c7 cmd/geth: limit pendingTransactions to owned accounts. 2015-05-06 18:30:56 +02:00
eb4029257a cmd/mist: updated xeth transact 2015-05-06 18:30:56 +02:00
5ebc22807c cmd/geth: admin, switched price with limit in arguments 2015-05-06 18:30:56 +02:00
7fed424435 cmd/geth: implemented resending transaction with different gas settings 2015-05-06 18:30:55 +02:00
92f998c7ef core: use removeTx instead of delete 2015-05-06 18:30:55 +02:00
03bb88dec0 xeth, rpc: added nonce setting through RPC and xeth transact 2015-05-06 18:30:55 +02:00
054947def7 Add ethash linux & windows build fixes 2015-05-06 17:38:28 +02:00
aa884c052d Merge pull request #771 from zsfelfoldi/develop
jsre: support for setTimeout, sendAsync
2015-05-06 07:27:24 -07:00
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
c54d123b31 setTimeout and sendAsync implemented
added and eval queue for serializing JSRE vm execution
2015-05-06 15:58:27 +02:00
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
c750ef09e1 cmd/geth: fix #853 colorize console output in windows 2015-05-05 14:44:39 +03:00
f4341c7b7f Unskip working blocktests following ethash cache reusage 2015-05-05 08:34:29 +02:00
b1cc9cdc74 Integrate new ethash API and change geth makedag cmd 2015-05-05 08:24:15 +02:00
50659f4b48 Update ethash Godeps files 2015-05-05 07:50:04 +02:00
4accc187d5 eth, p2p: add trusted node list beside static list 2015-05-04 13:59:51 +03:00
2382da4179 cmd/mist: fix a stale error message 2015-05-04 13:11:43 +03:00
54db54931e p2p: add static node dialing test 2015-05-04 13:08:42 +03:00
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
37770ed0d3 core: added unix timestamp to debug output for block proc 2015-05-03 21:49:19 +02:00
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
ba2236fa51 cmd/geth, eth: bump version & tmp fix for incorrect TD peers 2015-05-03 14:11:47 +02:00
f2a2b2ac70 eth/downloader: put back hashes on block overflow error 2015-05-03 14:11:00 +02:00
493181ea09 eth/downloader: changed has to blockHashes for chain linking 2015-05-03 14:10:31 +02:00
c5b8acbaf0 core: print ignored blocks 2015-05-03 14:09:50 +02:00
25bc88113f eth/downloader: added additional tests 2015-05-03 14:09:33 +02:00
c6ad3aec05 eth,core: changed NewTicker to Tick 2015-05-03 13:27:37 +02:00
b298928c49 core: added 'ignored' status 2015-05-01 16:00:30 +02:00
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
e82ddd9198 p2p: correct a leftover trusted -> static 2015-04-30 19:34:33 +03:00
413ace37d3 eth, p2p: rename trusted nodes to static, drop inbound extra slots 2015-04-30 19:32:48 +03:00
8595198c1b eth/downloader: delete blocks from queue 2015-04-30 17:51:47 +02:00
15873fafc0 core: added a wait group to chain manager for graceful shutdown 2015-04-30 17:50:47 +02:00
701591b403 cmd, eth, p2p: fix review issues enumerated by Felix 2015-04-30 16:15:29 +03:00
1528dbc171 p2p: add trust check to handshake, test privileged connectivity
Conflicts:
	p2p/server_test.go
2015-04-30 16:06:47 +03:00
14f32a0c3a p2p: reduce the severity of a debug log 2015-04-30 16:04:09 +03:00
679c90b873 cmd/geth, cmd/utils, eth: internalize trusted node config file 2015-04-30 16:03:47 +03:00
de0549fabb cmd/geth, cmd/mist, cmd/utils, eth, p2p: support trusted peers 2015-04-30 16:03:10 +03:00
d457a1187d common: add Hash.Generate 2015-04-30 15:02:23 +02:00
72ab6d3255 p2p/discover: track sha3(ID) in Node 2015-04-30 15:02:23 +02:00
b34a8ef624 p2p, p2p/discover: protocol version 4 2015-04-30 14:57:34 +02:00
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
e4dba36892 core: check for parent in calc TD. TD = (N != 0 == parent.TD) || (== D) 2015-04-30 14:55:21 +02:00
28b39267d9 core, eth: verify td of received blocks 2015-04-30 13:50:59 +02:00
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
3fef601903 Merge pull request #830 from obscuren/downloader-missing-parent
eth/downloader: missing parent improvement
2015-04-29 15:52:25 -07:00
30b921ef46 cmd/geth: bump version to 0.9.14 2015-04-30 00:40:14 +02:00
88292f35db core: remove txs from queue in addition to removal of pending 2015-04-30 00:20:59 +02:00
2590a7dabb core: added some additional chain tests for shortest chain 2015-04-30 00:14:41 +02:00
04c209980b eth: rely on p2p to determine block propagation 2015-04-29 22:50:58 +02:00
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
9e63798d03 core/types, eth: meassure and display propagation times 2015-04-29 19:55:30 +02:00
f8c27d7159 eth/downloader: drop block 2015-04-29 19:55:04 +02:00
c930045834 core: fixed tetst to reflect (int, error) return by insertChain 2015-04-29 15:27:04 +02:00
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
735b029db9 core: return the index of the block that failed when inserting a chain 2015-04-29 14:00:24 +02:00
764e81bf12 Merge pull request #825 from obscuren/develop
core: chain fork fix
2015-04-29 04:47:26 -07:00
bac4440e17 Merge pull request #822 from fjl/makefile-improvements
Makefile improvements
2015-04-29 04:43:38 -07:00
13364a2dcf eth/downloader: reset the chain when parent is missing during processing 2015-04-29 13:40:39 +02:00
745c368987 cmd/geth: bump version number 2015-04-29 12:54:41 +02:00
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
af73d1d682 core/types: added fake parent hash / hash to String() output 2015-04-29 12:51:05 +02:00
4b7bdc3766 eth: check if downloader is busy before showing log message 2015-04-29 12:51:05 +02:00
7ac24d551b core: seperated proccing mutex and getting mutex 2015-04-29 12:51:04 +02:00
9f32117457 core: bump database version 2015-04-29 12:51:04 +02:00
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
04a09b7e2d core: set min gas price at startup 2015-04-29 12:51:04 +02:00
32373e3837 Merge pull request #828 from tgerring/pathfixes
Remove path separator literals
2015-04-29 01:54:47 -07:00
f8cdff9a5d Remove path separator literals 2015-04-29 00:30:25 -05:00
aa03e53ca8 Use Makefile for Travis tests 2015-04-29 02:13:37 +02:00
c6b983e449 Makefile: add test target 2015-04-29 02:13:37 +02:00
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
eb5e43022e cmd/geth, cmd/mist: use gitCommit in node name 2015-04-29 02:13:36 +02:00
71c28cfb0c Makefile: set main.gitCommit when building 2015-04-29 02:13:36 +02:00
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
26fbea5cb7 README: simplify build instructions 2015-04-29 02:13:35 +02:00
8fcd71920a Makefile: clean should also delete Godeps/_workspace/pkg 2015-04-29 01:28:35 +02:00
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
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
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
b569550a39 p2p/discover: fix api issues caused by leveldb update 2015-04-28 13:57:57 +03:00
91cb8cdd2a Merge pull request #793 from karalabe/discovery-node-cache
p2p/discover: persistent node database
2015-04-28 03:40:10 -07:00
e88b410b4d Merge pull request #819 from karalabe/leveldb-update
godeps: refresh leveldb, clean up stale dependencies
2015-04-28 02:40:49 -07:00
7e3b080f85 godeps: update leveldb and snappy, dump serpent-go 2015-04-28 12:18:01 +03:00
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
bac455c011 Merge branch 'kobigurk-develop' into develop 2015-04-28 11:16:22 +02:00
459d898705 eth, rpc, xeth: ext_hanhrate => eth_hashrate 2015-04-28 11:16:03 +02:00
46f63ef04f Merge branch 'develop' of https://github.com/kobigurk/go-ethereum into kobigurk-develop 2015-04-28 11:10:44 +02:00
a05c420371 Merge pull request #738 from karalabe/whisper-cleanup
Whisper cleanup, part 3
2015-04-28 01:54:05 -07:00
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
978ffd3097 rpc, xeth: finish cleaning up xeth 2015-04-28 10:49:05 +03:00
2b9fd6b40a whisper: add full filter test suite 2015-04-28 10:49:05 +03:00
406e74e2af whisper: fix a small data race duirng peer connection 2015-04-28 10:49:05 +03:00
70ded4cbf0 xeth: fix un-decoded whisper RPC topic string bug 2015-04-28 10:49:04 +03:00
e252dae499 rpc: use nil topic wildcards instead of "" 2015-04-28 10:49:04 +03:00
db615a85ec ui/qt/qwhisper, whisper, xeth: polish topic filter, fix wildcards 2015-04-28 10:49:04 +03:00
ae4bfc3cfb rpc, ui/qt/qwhisper, whisper, xeth: introduce complex topic filters 2015-04-28 10:49:04 +03:00
15586368e5 whisper: fix spurious From identity with untargeted messages 2015-04-28 10:49:04 +03:00
87447f9f3f whisper: fix payload loss in case of plaintext decrypt 2015-04-28 10:49:04 +03:00
7f48eb8737 whisper, xeth/whisper: surface TTL and hash to the API 2015-04-28 10:49:04 +03:00
19bc4624ea eth: pull in a lost merge change
Ref: 21c4c155ee
2015-04-28 10:49:04 +03:00
7948cc0029 rpc, whisper, xeth: fix RPC message retrieval data race 2015-04-28 10:47:35 +03:00
5aa523e32b whisper: fix send timestamp omission during envelope opening 2015-04-28 10:47:35 +03:00
3563c59b12 rpc, whisper, xeth: polish whisper RPC interface 2015-04-28 10:47:35 +03:00
4992765032 p2p/discover: fix goroutine leak due to blocking on sync.Once 2015-04-28 10:28:04 +03:00
182d484aa7 Merge pull request #817 from tgerring/rpcglog
Remove old logger from RPC pkg
2015-04-27 14:51:00 -07:00
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
3ad5243b18 Return Gas Price not Gas
And output as quantity, not data
2015-04-27 13:58:32 -05:00
34c94d5fcd Add loading of block test privkey if present 2015-04-27 20:30:26 +02:00
2a61611c4f Update JSON tests 2015-04-27 19:09:20 +02:00
437cf4b3ac p2p/discover: add node expirer and related tests 2015-04-27 17:38:28 +03:00
9a17dd91a4 Add link to Windows 64-bit geth dev build 2015-04-27 09:24:25 -05:00
b071e7f4db Remove old logger from RPC pkg 2015-04-27 09:18:55 -05:00
a136e2bb22 p2p/discover: parametrize nodedb version, add persistency tests 2015-04-27 15:28:17 +03:00
75fd738dea p2p/discover: drop a superfluous warning 2015-04-27 15:06:31 +03:00
706da56f75 p2p/discover: wrap the pinger to update the node db too 2015-04-27 14:56:42 +03:00
85b4b44235 p2p/discover: use iterator based seeding, drop old protocol test 2015-04-27 14:45:35 +03:00
8de8f61d36 p2p/discover: write the basic tests, catch RLP bug 2015-04-27 12:33:06 +03:00
0201c04b95 p2p/discovery: fix issues raised in the nodeDb PR 2015-04-27 10:19:16 +03:00
aa4c25778f Merge pull request #813 from obscuren/general_fixes
General fixes
2015-04-26 03:12:30 -07:00
7fd368c586 geth/main: removed crazy welcome message :-( 2015-04-26 11:30:33 +02:00
a237ff65ea web3: updated 2015-04-26 11:21:15 +02:00
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
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
ed036a2ce7 cmd/geth: bump version number 0.9.12 2015-04-24 23:57:05 +02:00
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
b0bf12ec87 Remove unneeded allocation 2015-04-24 19:40:28 +02:00
7ce3d06402 eth/downloader: removed update loop and synch channel 2015-04-24 18:28:46 +02:00
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
3bb6da9bd3 natspec: disabled natspec test 2015-04-24 17:44:22 +02:00
4d1887093d Use make instead of new for allocation 2015-04-24 17:41:38 +02:00
8646365b42 cmd/bootnode, eth, p2p, p2p/discover: use a fancier db design 2015-04-24 18:04:41 +03:00
1681ee9883 eth: added a few informative messages regarding downloading 2015-04-24 17:03:09 +02:00
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
168ff36676 Merge pull request #773 from ethersphere/frontier/cli
CLI and JS admin changes
2015-04-24 06:58:31 -07:00
a9e4b96573 eth/downloader: fixed tests 2015-04-24 15:56:18 +02:00
d84c2202e7 eth, eth/downloader: simplified synchronisation process 2015-04-24 15:38:10 +02:00
bd9c76097d eth/downloader: removed peer td management and best peer selection 2015-04-24 15:37:07 +02:00
31f82eb334 eth, eth/downloader: don't require td on downloader. Fixed tests 2015-04-24 15:04:58 +02:00
b86e7526e1 eth, eth/downloader: moved peer selection to protocol handler 2015-04-24 14:40:32 +02:00
81379cbc7b Merge pull request #804 from alexvandesande/avsa-geth
Simpler "welcome"
2015-04-24 04:57:05 -07:00
f229dc8f42 Merge branch 'avsa-geth' of https://github.com/alexvandesande/go-ethereum into avsa-geth 2015-04-24 13:51:29 +02:00
8716278ca8 Smaller frontier cover art 2015-04-24 13:50:23 +02:00
c5e9a0a71c cli: correct bootnodes flag usage help line 2015-04-24 12:46:53 +01:00
f1126dbb87 Smaller frontier cover art 2015-04-24 13:46:41 +02:00
cd2782f59c core: fixed wildcard topic filters. Closes #725 2015-04-24 13:45:21 +02:00
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
1b7c017076 cli: fatal error if no etherbase for mining 2015-04-24 12:45:11 +01:00
be843959cb backend: start miner in its go routine (no wait to generate DAG) 2015-04-24 12:45:11 +01:00
6512b23b98 cli: fatal error if rpc could not be started 2015-04-24 12:45:11 +01:00
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
22450c069b js console: add cors domain optional argument to startRpc 2015-04-24 12:45:11 +01:00
a3fb41981e cmd/admin: rename debug.block to debug.processBlock; move backtrace under debug 2015-04-24 12:45:11 +01:00
9caf880ff9 Update README.md 2015-04-24 13:40:20 +02:00
31811365e0 Merge pull request #800 from obscuren/ethereum_js_update
Ethereum js update
2015-04-24 04:34:51 -07:00
dc62fb2ee9 web3: updated 2015-04-24 11:39:43 +02:00
92c6327593 cmd/geth, jsre: updated ethereum.js => web3.js 2015-04-24 11:37:58 +02:00
6def110c37 cmd/bootnode, eth, p2p, p2p/discover: clean up the seeder and mesh into eth. 2015-04-24 11:33:55 +03:00
971702e7a1 p2p/discovery: fix broken tests due to API update 2015-04-24 11:23:20 +03:00
af923c965f p2p/discovery: use the seed table for finding nodes, auto drop stale ones 2015-04-24 11:23:20 +03:00
5f735d6fce cmd, eth, p2p, p2p/discover: init and clean up the seed cache 2015-04-24 11:23:20 +03:00
936c8e19ff p2p/discover: store nodes in leveldb 2015-04-24 11:23:20 +03:00
516f49c812 eth: cleanup 2015-04-23 23:30:25 +02:00
b6ec1c720f Merge pull request #797 from tgerring/bootnodes
Bootnodes update
2015-04-23 11:53:18 -07:00
f5e0388f62 Merge pull request #778 from bas-vk/issue764
Moved database update loop to eth/backend
2015-04-23 11:46:27 -07:00
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
24995f9ab7 Updated bootnodes
Update pub key for EU node and add new SA node
2015-04-23 13:06:07 -05:00
154570ebd3 Cleanup README developer info 2015-04-23 13:05:37 -05:00
c12180d005 Merge branch 'issue764' of https://github.com/bas-vk/go-ethereum into issue764 2015-04-23 18:01:15 +02:00
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
5cfa0e9187 bugfix, wrong hash stored in blockDb 2015-04-23 17:35:05 +02:00
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
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
2f8809df40 Merge pull request #769 from obscuren/develop
core: transaction queue
2015-04-23 02:59:56 -07:00
7f14fbd579 core: pending txs now re-validated once every second 2015-04-23 11:50:12 +02:00
48135657c4 miner: show error message for gas limit per account 2015-04-23 11:50:12 +02:00
d7bab21681 natspec: fixed test to work with new queued transactions 2015-04-23 11:50:12 +02:00
fba40e18d9 core: added accessor for queued transactions 2015-04-23 11:50:12 +02:00
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
888ece0cb2 core: fixed test 2015-04-23 11:50:12 +02:00
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
1506e00a23 core: improved error message for invalid nonce txs 2015-04-23 11:50:11 +02:00
7138404cb0 core: only post event once per tx & fixed test 2015-04-23 11:50:11 +02:00
4feb5f6f9c xeth, miner: updated some logging 2015-04-23 11:50:11 +02:00
5cb5df003d eth: start tx pool in a goroutine 2015-04-23 11:50:11 +02:00
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
2fe54ab233 Merge pull request #779 from Gustav-Simonsson/block_tests_reloaded
Block tests reloaded
2015-04-23 02:49:51 -07:00
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
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
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
359a9773a1 Merge pull request #783 from tgerring/issue777
Issue 777
2015-04-23 02:11:20 -07:00
69788cb973 Merge pull request #784 from tgerring/issue737
Rename eth_Version to eth_protocolVersion. Closes #737
2015-04-23 02:05:20 -07:00
9d2a156453 Fix ignore of unexpected files in key dir 2015-04-23 05:52:41 +02:00
7a223721a5 Add block header validations for block tests 2015-04-23 05:32:56 +02:00
49da462e92 Include ZeroByteAtTheEnd and RandomByteAtTheEnd tests 2015-04-22 23:16:19 +02:00
4e0a2c8e8c Validate block header UncleHash against calculated hash 2015-04-22 23:16:19 +02:00
ec6acacc53 Unskip BlockTests/bcInvalidHeaderTest.json wrongUncleHash 2015-04-22 23:16:19 +02:00
9834f855fa Finally, glorious HEX 2015-04-22 23:16:19 +02:00
24de35ef09 Add StateTests/stMemoryStressTest.json but skip for now 2015-04-22 23:16:19 +02:00
5c70333a12 Exclude TransactionWithSvalue0 as it expects invalid s value to be valid 2015-04-22 23:16:18 +02:00
8ec8bff11c Update github.com/ethereum/tests files 2015-04-22 23:16:18 +02:00
573bc3e05e Explicitly skip TransactionTests/tt10mbDataField.json 2015-04-22 23:16:17 +02:00
7254278c09 Add test wrapper for VMTests/vmInputLimits1.json 2015-04-22 23:16:17 +02:00
c745831118 Merge pull request #787 from ethereum/revert-785-revert-781-develop
Revert "Revert "refactor Dockerfile""
2015-04-22 21:36:01 +02:00
33083e6f6c Revert "Revert "refactor Dockerfile"" 2015-04-22 21:35:46 +02:00
73b3f2837f Handle bug in parent call response 2015-04-22 14:14:10 -05:00
95f172d4dc Merge pull request #785 from ethereum/revert-781-develop
Revert "refactor Dockerfile"
2015-04-22 20:52:47 +02:00
1a0b3d8c84 Revert "refactor Dockerfile" 2015-04-22 20:52:21 +02:00
41e3d01e63 Rename eth_Version to eth_protocolVersion. Closes #737 2015-04-22 13:42:09 -05:00
20bae2b8f6 Tests for magic words 2015-04-22 13:24:29 -05:00
2ea2261156 Accept num or hex as index 2015-04-22 13:24:10 -05:00
35ad9febce Update eth_getBlockByNumber to accept words 2015-04-22 13:14:10 -05:00
5f6c8832af Merge pull request #781 from caktux/develop
refactor Dockerfile
2015-04-22 13:46:04 -04:00
d2fab43abc Changed "Welcome to the Frontier" to something more geeky 2015-04-22 18:33:33 +02:00
39047d7d8b refactor Dockerfile 2015-04-22 11:38:54 -04:00
04e216319e Adding flags to facilitate cross compiling to ARM 2015-04-22 17:04:46 +02:00
35595560f0 Merge pull request #776 from fjl/win32-build-fixes
Win32 build fixes
2015-04-22 06:50:50 -07:00
c9e22976f5 change order of block insert and update LastBlock 2015-04-22 12:50:33 +02:00
07e85d8e14 Moved leveldb update loop to eth/backend 2015-04-22 12:46:41 +02:00
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
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
96e2b6bc07 miner: use 32bit atomic operations
64bit atomic operations are not available on all 32bit platforms.
2015-04-22 12:31:19 +02:00
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
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
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
13dc8627b5 Treat hexnums as big.Int instead of int64 2015-04-21 08:48:57 -05:00
9e03c48d43 move eth_hashrate to ext 2015-04-21 16:44:08 +03:00
63c5c7fb2d uses newHexNum for eth_hashrate 2015-04-21 16:44:08 +03:00
41b83fe1cd adds eth_hashrate RPC method 2015-04-21 16:44:08 +03:00
4ddbf81e74 Updated README to include windows builds 2015-04-21 12:38:01 +02:00
4ad8b28794 Merge pull request #760 from obscuren/develop
core: transaction fixes
2015-04-21 03:14:38 -07:00
6c2b703c58 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-21 12:14:07 +02:00
1dc91975ad Merge pull request #756 from Gustav-Simonsson/block_test_improvements
Block test improvements
2015-04-21 03:09:35 -07:00
f4cd66dc00 blockpool: deleted 2015-04-21 12:03:02 +02:00
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
8fce55b4c2 Merge pull request #763 from aboreum/develop
Remove "minGasPrice" field from JSON responses. Closes. #754
2015-04-21 02:30:40 -07:00
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
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
64e8aa6260 syncing to mainline ethereum 2015-04-20 22:19:49 -06:00
3ef1cd43f6 fix for: Please remove the "minGasPrice" from block returns #754 2015-04-20 22:08:50 -06:00
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
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
8d85e45c7d syncing to develop 2015-04-20 15:05:13 -06:00
59a7405a80 Broken link for detailed go build instructions #661 2015-04-20 14:47:12 -06:00
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
859187931b fix for: Broken link for detailed go build instructions #661 2015-04-20 14:31:26 -06:00
79bef9eb16 Merge branch 'develop' of github.com-obscure:obscuren/go-ethereum into develop 2015-04-20 21:57:00 +02:00
b8160cc6d4 core: shuffled some code 2015-04-20 20:37:40 +02:00
99e825ad96 Merge pull request #734 from bas-vk/issue-729
admin.StopRPC added to console
2015-04-20 10:34:50 -07:00
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
3b008723db cmd/geth, cmd/utils: invert --pprof once more 2015-04-20 19:14:49 +03:00
f28b2bb6ed core: upgraded block chain version 2015-04-20 18:12:05 +02:00
3b45fedb81 Merge branch 'ethersphere-frontier/natspec' into develop 2015-04-20 18:09:10 +02:00
36ec42e50c Merge branch 'frontier/natspec' of https://github.com/ethersphere/go-ethereum into ethersphere-frontier/natspec 2015-04-20 18:08:14 +02:00
c8e2b3710c cmd/geth, cmd/utils: use pprof disable flag, start globally 2015-04-20 18:59:41 +03:00
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
8830403acf cmd/geth, cmd/utils: add cli flags for pprof and whisper. 2015-04-20 18:45:37 +03:00
76025cc424 geth: added a admin.debug.block command which reprocess the block 2015-04-20 16:03:19 +02:00
72d065d491 core: force block process & fixed chain manager test 2015-04-20 16:02:50 +02:00
97a9753f87 core: added chain reset mechanism on bad blocks 2015-04-20 12:58:17 +02:00
45da3e17e2 core: added chain head reset to known block 2015-04-20 12:29:02 +02:00
52584596d4 geth: bump version number 2015-04-20 12:01:39 +02:00
97b0c4b697 core: moved TD calculation from proc to chain 2015-04-20 12:01:20 +02:00
fa729a0c55 miner: go fmt 2015-04-20 00:41:50 +02:00
5caf1aa1a9 Switched getWork third output from difficulty to target 2015-04-19 17:42:21 -04:00
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
2cc9211269 miner: fixed remote miner current work 2015-04-19 21:58:58 +02:00
71c974f3eb fix end to end test import cycle 2015-04-19 20:57:50 +01:00
e9874cbcc1 fixed resolver test 2015-04-19 20:57:50 +01:00
929428d602 URLhint support for URLs longer than 32 bytes 2015-04-19 20:57:49 +01:00
b6fe9e0c83 added missing source file 2015-04-19 20:57:49 +01:00
bb793c829f fixed incomplete merge 2015-04-19 20:57:49 +01:00
d8fb834386 test account is no longer permanently in genesis block, only put there when testing 2015-04-19 20:57:49 +01:00
dba2367157 NatSpec contracts are now not in the genesis block but added by the test 2015-04-19 20:57:49 +01:00
f255336c2c utils linked to natspec notice eval, test notice now using utils.toHex() 2015-04-19 20:57:49 +01:00
c4b7d4d3f7 NatSpec cli option, resolver tests passing 2015-04-19 20:57:49 +01:00
b46e152171 default fallback NatSpec messages 2015-04-19 20:57:49 +01:00
8e6a068d2d natspec test bugfix 2015-04-19 20:57:49 +01:00
b635cad9fe NatSpec passing end to end test 2015-04-19 20:57:49 +01:00
94489b2269 s 2015-04-19 20:57:49 +01:00
e2d333d209 NatSpec contracts in genesis block, end to end test (unfinished) 2015-04-19 20:57:49 +01:00
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
3a540425a3 reorg:
- statereg methods move to natspec/resolver/docserver
- fix failing test on invalid js input
2015-04-19 20:57:48 +01:00
5b0ea1044a add docserver using net/http Transport/Roundtrip 2015-04-19 20:57:48 +01:00
3136bae4a5 NatSpec, URL register storage retrieval
fixed 2/3 tests
2015-04-19 20:57:48 +01:00
97a602864a add common/resolver skeleton 2015-04-19 20:57:48 +01:00
45676382b6 natspec integrated to console frontend confirmTransaction 2015-04-19 20:57:48 +01:00
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
ea11dba00b Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-19 21:46:41 +02:00
5dd56bb474 geth: admin download status 2015-04-19 21:46:19 +02:00
2c1a6a349b miner: removed default timer & update dag when threads > 0 2015-04-19 21:45:40 +02:00
e6d36fe356 Merge pull request #748 from fjl/build-script-unix
Makefile: for non-gophers
2015-04-19 17:58:42 +02:00
ed07ffcde5 downloader: fixed tests with low ttl 2015-04-19 17:37:01 +02:00
dcf1a1988a moved 2015-04-19 17:14:15 +02:00
8eff550e8b Merge branch 'fjl-rlp-size-validation' into develop 2015-04-19 17:07:59 +02:00
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
4683f9c0a7 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-19 13:33:39 +02:00
cce4158cfc Removed debug println 2015-04-19 13:33:14 +02:00
3d497be9bd eth: drop blocks with low TD 2015-04-19 13:31:37 +02:00
6e1aa91aaf geth: added getBlockRlp for dumping block in rlp format 2015-04-19 13:30:55 +02:00
c58918c84a downloader: moved chunk ignoring. Fixes issue with catching up 2015-04-19 13:30:34 +02:00
61885aa965 Don't export types/functions 2015-04-19 10:01:50 +02:00
2c229bac00 Replaced channel pointer field with non pointer channel 2015-04-19 09:55:41 +02:00
9ec56637f9 Merge pull request #749 from fjl/fix-nodekey-persistence
Fix p2p node key persistence
2015-04-19 01:56:56 +02:00
4340996572 eth: temp 100% block propagation because of the current state of the net 2015-04-19 01:40:01 +02:00
5c59d95532 downloader: defer peer reset after download 2015-04-19 01:39:37 +02:00
4907d28967 crypto: update {Load,Save}ECDSA comments to mention hex encoding 2015-04-19 01:33:00 +02:00
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
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
86ecdcd5ff downloader: reset hashTtl on receive 2015-04-19 00:15:05 +02:00
71aa5fe8a3 Merge branch 'downloader-proto' into develop 2015-04-19 00:09:12 +02:00
164b878854 cleanup 2015-04-19 00:08:57 +02:00
c453f1f370 tests: hopefully improve test conversion helpers
(cherry picked from commit 035a30acbe)
2015-04-19 00:07:09 +02:00
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 898ba87984)
2015-04-19 00:06:52 +02:00
434dea3caf eth: removed debug messages to stdout 2015-04-19 00:03:26 +02:00
2ce21cefdc eth: use NewDB hook also for extra DB
(cherry picked from commit d5083033f1)
2015-04-18 23:59:31 +02:00
50e096e627 downloader: don't remove peers. keep them around 2015-04-18 23:56:08 +02:00
03b4cf74a2 geth: added identity flag which allows to set a custom node name 2015-04-18 23:53:30 +02:00
d34e4dc5ac Merge branch 'develop' into downloader-proto 2015-04-18 21:26:43 +02:00
84f1af6413 core: merge using equal block numbers rather than the current block 2015-04-18 21:23:42 +02:00
c8cc523d4d miner: reverted back to old event 2015-04-18 20:51:05 +02:00
a1d97ea4db typo 2015-04-18 20:35:49 +02:00
c6c22301fa miner: changed listener 2015-04-18 20:26:17 +02:00
6830ddb659 downloader: free up peers from work when the downloader resets 2015-04-18 20:25:55 +02:00
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
78e37e98e7 downloader: fixed a race condition for download status 2015-04-18 19:14:25 +02:00
0d536734fe eth: adapted to new synchronous api of downloader's AddBlock 2015-04-18 18:57:59 +02:00
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
60613b57d1 downloader: make sure that hashes are only accepted from the active peer 2015-04-18 17:35:03 +02:00
ff67fbf964 Merge branch 'develop' into downloader-proto 2015-04-18 15:14:56 +02:00
525cefa37a updated ethash 2015-04-18 15:14:44 +02:00
8244825bbf downloader: reset the queue if a peer response with an empty hash set 2015-04-18 15:14:12 +02:00
eef4776b5b eth: ignore NewBlockMsg with lower td 2015-04-18 14:25:22 +02:00
1bc2d83b6f core: improved uncle validation error message 2015-04-18 14:24:44 +02:00
8f873b762b downloader: all handlers check for isBusy 2015-04-18 03:15:26 +02:00
a6c0a75f9a eth: fixed proper BroadcastBlock for mined blocks 2015-04-18 02:38:13 +02:00
c39a7b5c0d Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-18 02:33:04 +02:00
89fd752659 rpc: set from. Closes #742 2015-04-18 02:32:55 +02:00
f1ae3dc4aa geth: bump version number 2015-04-18 02:27:50 +02:00
12e8d9c4dd eth: listen for mined blocks and propagate using the protocol manager 2015-04-18 02:27:37 +02:00
ecc74d76cc eth: drop blocks that are known 2015-04-18 02:24:24 +02:00
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
c2f410214c eth: began split up of peers and protocol manager 2015-04-18 01:11:09 +02:00
2339ee9910 Merge branch 'develop' into downloader-proto
Conflicts:
	eth/downloader/downloader.go
2015-04-18 01:10:32 +02:00
7dc6c33873 Merge pull request #736 from frozeman/develop
add extra space to miner icon
2015-04-17 22:17:50 +02:00
576393550d add extra space to miner icon 2015-04-17 15:00:37 +02:00
7180699d40 rlp: require declared number of input elements for array types 2015-04-17 14:45:10 +02:00
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
4d5a518a0b rlp: stop accepting lists for byte slices and byte arrays 2015-04-17 14:45:10 +02:00
574d5d6ae6 core/types: add rlp tag "nil" for Transaction.Recipient 2015-04-17 14:45:10 +02:00
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
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
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
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
509d0a8d78 whisper: fix comment for rlpenv 2015-04-17 14:45:09 +02:00
eedbb1ee9a p2p/discover: use rlp.DecodeBytes 2015-04-17 14:45:09 +02:00
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
56a48101dc cmd/rlpdump, cmd/utils, eth, p2p, whisper: use rlp input limit 2015-04-17 14:45:09 +02:00
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
4020258801 Merge pull request #718 from karalabe/whisper-cleanup
Whisper cleanup, part 2
2015-04-17 14:10:55 +02:00
73eb8e8c20 eth: basic implementation of the downloader 2015-04-17 13:54:18 +02:00
4afc22ba6e whisper: cleanup lefover scoping 2015-04-17 14:11:46 +03:00
bd14bd6c5b whisper: hide some internal types 2015-04-17 13:25:18 +03:00
d3ed3285e9 Merge pull request #733 from fjl/p2p-dial-timer
p2p: fix the dial timer
2015-04-17 11:32:55 +02:00
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
545ff1e3f3 Merge pull request #728 from tgerring/issue727
Fix RPC Call output when empty
2015-04-17 00:17:40 +02:00
2c2ddcbf88 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-17 00:11:58 +02:00
eac2df02d1 downloader: fixed a typo 2015-04-17 00:11:45 +02:00
b6d1724dd9 Merge pull request #730 from Gustav-Simonsson/update_transaction_tests
Update transaction tests
2015-04-17 00:09:10 +02:00
ead3dd9759 Stop accepted and alive connections (http keep-alive) when the rpc service is stopped 2015-04-16 19:23:57 +02:00
e5a03eb066 whisper: don't issue signature warning if none present 2015-04-16 18:24:39 +03:00
57f93d25bd admin.stopRPC support added which stops the RPC HTTP listener 2015-04-16 12:56:51 +02:00
e5e91e9eb3 whisper: track active peers, add peer cache expiry test 2015-04-16 13:05:35 +03:00
ee6531c5ff whisper: remove dead code, rename a few constants 2015-04-16 11:20:01 +03:00
205378016f downloader: added demotion / promotion in prep. for rep. system 2015-04-16 02:16:33 +02:00
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
3a51c3b584 Merge branch 'develop' into downloader-proto 2015-04-16 01:28:24 +02:00
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
dff39553d4 core: changed split detection to also account for number less than 2015-04-16 00:11:40 +02:00
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
2d8a2d0c99 Update JSON tests 2015-04-15 22:36:33 +02:00
6388767df0 Fix call output when empty 2015-04-15 12:45:20 -05:00
ec6cbb914b miner: start a newly registered agent if the miner is running. Closes #681 2015-04-15 17:04:22 +02:00
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
eaf73b55bc miner: moved bad uncle logging to ridiculous log level. Closes #720 2015-04-15 12:12:20 +02:00
6ceb253f74 whisper: use async handshakes to handle blocking peers 2015-04-15 13:01:22 +03:00
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
ccb4722a59 core/types: Changed bloom lookup to take anything bytes backed 2015-04-15 11:58:45 +02:00
46ea193a49 whisper: remove some unneeded testing complexity 2015-04-15 12:50:10 +03:00
bcf41797ca whisper: global message expiration tests, polishes 2015-04-15 10:50:31 +03:00
d82aaf617c rpc: changed logging to use glog 2015-04-15 00:09:13 +02:00
f46af4508b geth: fixed failing cli tests 2015-04-14 21:26:28 +02:00
8db7b2374c rpc: change eth_protocolVersion to eth_version. Closes #714 2015-04-14 20:47:21 +02:00
4fb7ab5d09 whisper: mock tests to use simulated peers 2015-04-14 19:00:57 +03:00
86372b20c0 whisper: add basic tests for the whiper peers 2015-04-14 18:21:56 +03:00
f6efdd8aad whisper: shorten constants to TTL and PoW 2015-04-14 15:16:02 +03:00
1a4cfc173e whisper, xeth/whisper, ui/qt/qwhispe: fix API polish breakages 2015-04-14 15:02:31 +03:00
e2b7498c9d whisper: add known message expiration to peers, cleanup 2015-04-14 14:28:59 +03:00
13eb46ea94 geth: added print block to admin 2015-04-14 12:49:30 +02:00
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
8310bcda61 state: fixed mutex lockes 2015-04-14 12:47:54 +02:00
474aa924ca p2p: added limiter function to limit package broadcasting 2015-04-14 12:47:31 +02:00
59bff46505 whisper: general cleanups, documentation 2015-04-14 13:24:43 +03:00
5205b2f19b whisper: fix anonymous broadcast drop, add broadcast tests 2015-04-14 12:12:47 +03:00
4af7743663 whisper: add utility functions for creating topics 2015-04-14 11:12:09 +03:00
b7e1b686aa Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-14 00:38:53 +02:00
2ea98d9b74 Merge pull request #704 from fjl/p2p-concurrency-fixups
p2p: more concurrency fixups
2015-04-14 00:38:47 +02:00
07eebc38b2 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-14 00:38:11 +02:00
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
f6f9a0d515 Merge pull request #709 from ligi/patch-1
Fix links
2015-04-13 23:46:17 +02:00
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
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
d423305f07 state: fixed nonce issue in managed state
Rlock => Lock when creating a new nonce
2015-04-13 22:57:03 +02:00
d61ec9ca76 rpc: removed hash from LogRes. Closes #701 2015-04-13 21:28:05 +02:00
0217652d1b p2p/discover: improve timer handling for reply timeouts 2015-04-13 18:08:11 +02:00
b8aeb04f6f p2p/discover: remove unused field Node.activeStamp 2015-04-13 17:44:14 +02:00
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
333e539ce2 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-13 17:35:46 +02:00
1fa844aaf5 Merge pull request #702 from ethersphere/frontier/blockpool
blockpool stability fixes:
2015-04-13 17:35:25 +02:00
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
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
97d2954e22 eth: added downloader for syncing up the chain 2015-04-13 17:22:32 +02:00
79a6782c1c p2p: fix goroutine leak when handshake read fails
This regression was introduced in b3c058a9e4.
2015-04-13 17:06:19 +02:00
ad4891a09a Merge pull request #689 from Gustav-Simonsson/add_transaction_tests
Add transaction tests
2015-04-13 16:55:21 +02:00
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
cb707ba50c whisper: push work in progress for bug report 2015-04-13 16:19:34 +03:00
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
faa2747809 Merge pull request #690 from karalabe/whisper-cleanup
Whisper cleanup, part 1
2015-04-13 13:39:59 +02:00
89358d25a4 whisper: start adding integration tests 2015-04-13 13:15:01 +03:00
9a53390f49 whisper: clean up and integrate topics 2015-04-13 12:16:51 +03:00
7b501906db whisper: separate out magic number from the code 2015-04-13 11:31:51 +03:00
49a513bdeb Added blockchain DB versioning support, closes #650 2015-04-13 10:13:52 +02:00
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
5467e7b312 whisper: fix comment entity capitalizations 2015-04-12 14:34:53 +03:00
6efa8db888 downloader: renamed chunks to queue 2015-04-12 13:24:38 +02:00
acf8452c33 downloader: implemented new downloader 2015-04-12 12:38:25 +02:00
61db7a71dd Merge pull request #695 from ethersphere/frontier/blockpool
bugfixes for headsection deadlocks
2015-04-11 10:46:34 +02:00
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
f047699afb Updated glog 2015-04-10 19:59:07 +02:00
3aa5437a10 Set input to nil for create 2015-04-10 19:59:01 +02:00
36fe11378c Bump 2015-04-10 18:21:27 +02:00
eb75a77151 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-10 18:21:09 +02:00
6107b53de0 Merge pull request #692 from ethersphere/frontier/blockpool
td update from node + bugfix
2015-04-10 18:20:23 +02:00
5d4f69f483 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-10 17:59:38 +02:00
92fbb61625 Merge pull request #691 from fjl/discovery-fixes
p2p: a bunch of fixes
2015-04-10 17:59:32 +02:00
3d29805322 Added pprof 2015-04-10 17:38:06 +02:00
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
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
56977c225e p2p: use RLock instead of Lock for pre-dial checks 2015-04-10 17:23:09 +02:00
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
f8a4cd7ec1 xeth/whisper, ui/qt/qwhisper: fix API update breaks. 2015-04-10 17:03:08 +03:00
0e4f21fc37 whisper: polish the Envelope a bit, prep for tests. 2015-04-10 16:52:01 +03:00
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
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
145330fdf2 p2p: properly decrement peer wait group counter for setup errors 2015-04-10 13:26:27 +02:00
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
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
7be05b4b9d p2p/discover: don't log packet content 2015-04-10 13:26:27 +02:00
9cd8c96157 p2p/discover: make packet processing less concurrent 2015-04-10 13:26:27 +02:00
7e54a9c07f whisper: rename test file according to Go style 2015-04-10 13:46:08 +03:00
a4c8e947b0 whisper: make the test app runnable & do something inside 2015-04-10 13:42:49 +03:00
6d20d634ca Enable more tx tests by expecting most common encoding of values 2015-04-10 12:34:55 +02:00
6dc2146ed7 Remove unneeded map assignments for working tx RLP tests 2015-04-10 12:03:46 +02:00
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
1e18f4544b Update JSON test files 2015-04-10 11:52:31 +02:00
fc1d1f9afd Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-10 11:03:46 +02:00
3755cfccb3 Skipped td test 2015-04-10 11:03:36 +02:00
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
d1729acd2b cmd/mist: fix another nil recipient address panic. 2015-04-10 11:43:08 +03:00
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
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
dc2b9fd458 bugfix as a result of PR 671 2015-04-09 20:06:27 +02:00
ec9fbf09aa Added some quotes .... 2015-04-09 18:24:22 +02:00
9f5d24be31 glog 2015-04-09 18:16:22 +02:00
b0f40beea6 Added proper contract for registrar 2015-04-09 17:59:05 +02:00
ab015959e1 bump 2015-04-09 17:54:20 +02:00
2747df3df1 added contracts 2015-04-09 17:42:43 +02:00
01ee012197 Merge branch 'ethersphere-frontier/blockpool' into develop 2015-04-09 17:40:28 +02:00
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
663fd8f849 Moved log to debug 2015-04-09 17:19:05 +02:00
46898f1e55 Merge branch 'frontier/blockpool' of https://github.com/ethersphere/go-ethereum into ethersphere-frontier/blockpool 2015-04-09 16:54:32 +02:00
0636e17dbe Added default registrar 2015-04-09 16:37:04 +02:00
be25396340 separate lock for blacklist 2015-04-09 13:58:35 +01:00
a009132c24 oops peer unlocked before return - fixes deadlock 2015-04-09 13:58:35 +01:00
0e2bc23148 uncomment future block TD check, add test for skipping TD check on future block 2015-04-09 13:58:35 +01:00
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
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
cbd0b42060 put back checkTD and unskip incorrectTD test 2015-04-09 13:58:35 +01:00
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
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
30830652ae fix TestPoolStatus test crashing, skip tests failing (due to @obscuren hotfixes) 2015-04-09 13:58:35 +01:00
c6b25a4046 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-09 13:24:08 +02:00
8d059e54f1 Updated xeth logger 2015-04-09 11:49:14 +02:00
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
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
ef393da933 removed utility function and implemented hex conversation in crypto functions 2015-04-09 10:59:37 +02:00
6da5b2fc5f reformat code with goimports 2015-04-09 10:26:26 +02:00
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
204ac81188 Moved handling of nonces to the managed state 2015-04-08 23:30:07 +02:00
b3a3fdf9a4 Support for import/export hex encoded keys, closes #635 2015-04-08 23:03:47 +02:00
6e2f78ebdd Default log to stderr 2015-04-08 22:18:16 +02:00
2e2860e4df Make sure mist runs ... :-) 2015-04-08 22:17:49 +02:00
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
a7750c929b Fixed tests to reflect log changes 2015-04-08 20:45:39 +02:00
f08e9cbe42 ignore invalid txs right after being added if they prove incorrect 2015-04-08 18:08:21 +02:00
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
5304f43067 Add path expansion support for command line arguments, closes 567 2015-04-08 15:43:55 +02:00
6284604b52 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-08 13:07:30 +02:00
a953f3ec97 Sync managed accounts to the network 2015-04-08 13:07:21 +02:00
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
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
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
d09d2b96fc fixed stop of miner 2015-04-08 00:30:23 +02:00
aa4ff52d84 Add IsOnCurve check to EC unmarshalling in ECIES decryption 2015-04-07 23:50:04 +02:00
7f32a08b60 Queued level db writes and batch writes. Closes #647 2015-04-07 22:19:01 +02:00
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
f597863927 Merge pull request #657 from Gustav-Simonsson/disable_libsecp256k1_debug_check
libsecp256k1 #define NDEBUG
2015-04-07 20:39:05 +02:00
941f051358 libsecp256k1 #define NDEBUG 2015-04-07 18:09:58 +02:00
3ddc109778 Merge branch 'Gustav-Simonsson-update_bitcoin_secp256k1_lib2' into develop 2015-04-07 15:20:51 +02:00
50bbdfe582 Link GMP 2015-04-07 15:20:24 +02:00
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
0196a97319 Merge branch 'tgerring-rpcfabian' into develop 2015-04-07 15:04:45 +02:00
3063aad7db merge conflict 2015-04-07 15:04:29 +02:00
50aa1f178c updated logging 2015-04-07 14:57:16 +02:00
688d118c7e Updated logging 2015-04-07 14:57:04 +02:00
d0c3f127ee More type fixes 2015-04-07 06:49:31 -05:00
01b2c90179 Updated ethash 2015-04-07 13:17:27 +02:00
c756633fb7 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-07 13:10:21 +02:00
43454053b0 Fixed tests 2015-04-07 13:10:12 +02:00
1aaeae292d Output format and nil fixes 2015-04-07 06:10:00 -05:00
2591883a18 Use logger.Error instead of 0 with glog 2015-04-07 12:48:19 +02:00
3f306f63d4 Forward and log EC recover err and remove dup pubkey len check 2015-04-07 12:48:19 +02:00
d9b37b6da7 Update Go wrapper around libbsecp256k1 2015-04-07 12:40:31 +02:00
7c583f8222 Merge pull request #653 from debris/circular_structure
fixed printing circular structures
2015-04-07 12:36:11 +02:00
99907f94dc Updated ethereum.js 2015-04-07 12:33:05 +02:00
7b6a8cc9ae Fixed pending states 2015-04-07 12:32:55 +02:00
f4d4f1ccb2 Update bitcoin secp256k1 lib 2015-04-07 12:14:05 +02:00
b09d62bac7 fixed printing circular structures 2015-04-07 05:27:47 +02:00
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
3040296beb updated ethash. closes 646 2015-04-05 18:00:22 +02:00
736aefe9b5 time lapse 2015-04-05 17:59:38 +02:00
69ece747d3 v bump 2015-04-05 15:15:19 +02:00
01e1b49831 reflect ethash changes 2015-04-05 15:15:05 +02:00
09d3f2cf2a Update ethash 2015-04-05 15:14:55 +02:00
5b9a0e7118 Disabled PoW check
@zelig we need to discuss this
2015-04-05 15:14:06 +02:00
50edd4243e removed hash rate from info log. Added hashrate js func 2015-04-05 13:05:10 +02:00
ac473a8623 Remove debug log 2015-04-04 23:27:23 +02:00
053d5552ab Updated logging 2015-04-04 23:04:19 +02:00
5dc5e66986 set backtrace during runtime 2015-04-04 22:16:29 +02:00
d651ff968a Temp removed unrequested block error
@zelig look in to this please
2015-04-04 22:06:50 +02:00
f4af9e95c2 Skipping test
@zelig this will need updating with the TD checking
2015-04-04 21:41:42 +02:00
eb1c26746d Changed R S to big int and fixed tests 2015-04-04 21:41:24 +02:00
eb8f0b85f7 Changed R & S to *big.Int 2015-04-04 21:32:24 +02:00
59597d23a5 Reject integers w/ appended zero's 2015-04-04 21:29:23 +02:00
c39484bc4b Added thread safe each 2015-04-04 20:34:10 +02:00
5c988c8ea0 Increased test coverage for args 2015-04-04 11:58:23 -05:00
eff6a43419 Removed debugging 2015-04-04 18:29:11 +02:00
7a18a39351 prevent deadlock 2015-04-04 18:23:51 +02:00
f9488cb763 bumped version number 2015-04-04 16:41:12 +02:00
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
29f120206e Added block cache delete method 2015-04-04 16:33:12 +02:00
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
435378e953 Improved test coverage for rpc types 2015-04-04 15:09:30 +02:00
71e62eb620 More test coverage for responses 2015-04-04 14:08:35 +02:00
c985ce4d78 Changed log to new logging 2015-04-04 13:41:58 +02:00
2683aac9b0 Make sure we're not mining on an invalid TS 2015-04-04 13:27:17 +02:00
2b9b9e7704 Allow "earliest" block height 2015-04-04 13:25:47 +02:00
4729826466 Merge branch 'develop' into rpcfabian 2015-04-04 13:24:21 +02:00
c20d04ca67 added verbosity to js admin 2015-04-04 13:24:19 +02:00
1889727144 Moved logging to logger.Core 2015-04-04 13:24:01 +02:00
218bfeb60e check for nil block (tmp).
@zelig this needs to be addressed in the block pool.
2015-04-04 12:40:48 +02:00
a0e44e3281 basic glog 2015-04-04 12:40:11 +02:00
60e097a5f4 Merge branch 'develop' into glog 2015-04-04 12:24:59 +02:00
bc5528b165 version bump 2015-04-03 17:49:33 +02:00
ec8a6e0a2b Merge branch 'develop' into glog 2015-04-03 17:19:22 +02:00
f9d94c7462 do not include BlockEqualTS as valid uncles 2015-04-03 17:19:09 +02:00
11d90d9b22 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-03 17:09:21 +02:00
36452afd4e glog wip 2015-04-03 17:09:11 +02:00
47feff3611 Merge pull request #627 from ethersphere/frontier/blockpool
Frontier/blockpool BUGFIX
2015-04-03 13:56:39 +02:00
4558e04c0d Merge commit 'f6bd4b16e38f9cacd57b57befdeeaed789a473c4' into develop 2015-04-03 12:29:13 +02:00
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
f49e398ebe bool => int 2015-04-03 12:28:55 +02:00
a6ca3d0261 Merge pull request #626 from tgerring/rpcfabian
RPC Tests updates
2015-04-03 11:58:18 +02:00
29a9c6bedd Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-03 11:28:32 +02:00
c59c826ab4 fixed stack level 2015-04-03 11:27:56 +02:00
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
fd5c5b2969 Merge commit '812cbff1a28d89b44a0c8c5a210ac61c7e19da35' into develop 2015-04-03 10:50:18 +02:00
4415a5bc68 updated coin 2015-04-03 10:50:07 +02:00
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
24c8fdc1d0 do not print Plain Object prototype fields in geth console 2015-04-03 01:47:05 +02:00
97d6b0bab8 Merge pull request #633 from debris/prototype_functions
printing object prototype functions in geth console
2015-04-03 01:29:53 +02:00
1f122626be printing object prototype functions in geth console 2015-04-03 00:49:18 +02:00
3e042317ad Return nil if block does not exist 2015-04-02 20:37:51 +02:00
1d74086b42 New UncleRes type 2015-04-02 17:55:42 +02:00
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
dd1791c9fd proper locking to prevent close of closed channel crash when multiple mining peers compete 2015-04-02 15:32:41 +01:00
9bdf0b655d Fix RLP decoding of tx metadata 2015-04-02 16:28:42 +02:00
537e2cfeb6 Return nil when requested uncle index is not valid 2015-04-02 16:12:19 +02:00
e882ba0c29 Return nil when requested index does not exist
Instead of error
2015-04-02 16:11:00 +02:00
aa71e27a3b Detect non-valid strings for blockheight 2015-04-02 15:53:04 +02:00
3908590578 Make "To" field optional in whisper filter 2015-04-02 15:37:35 +02:00
607fc788e3 Merge pull request #619 from tgerring/rpcfabian
RPC Fabian fixes
2015-04-02 15:13:30 +02:00
876ce0fb12 More nil checks 2015-04-02 14:54:28 +02:00
172b34351a HashArgs fix + tests 2015-04-02 14:49:33 +02:00
b9c9d6d798 Use HashArgs for eth_getTransactionByHash 2015-04-02 14:37:11 +02:00
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
1e28b424e7 Default gas 2015-04-02 14:00:49 +02:00
015453f5b3 Default Value to 0 for NewTxArgs 2015-04-02 13:55:53 +02:00
55b1c1546b Moved to function 2015-04-02 13:55:35 +02:00
118ad22ee5 Merge branch 'develop' into rpcfabian 2015-04-02 13:39:46 +02:00
81de8ed091 Format code as hexdata 2015-04-02 13:38:12 +02:00
b86450aaae Guard from nil pointers 2015-04-02 13:27:58 +02:00
e402e1dc2e New args types with stricter checking 2015-04-02 13:17:55 +02:00
79828531b1 updated ethereum.js 2015-04-02 13:13:11 +02:00
14c14fd61f Output empty block as nil 2015-04-02 13:05:13 +02:00
2efb89d544 Guard for nil *big.Int 2015-04-02 13:04:58 +02:00
60da9a1289 Put the old hammer back in <3 2015-04-02 13:03:33 +02:00
3f4c1aaf01 info => debug 2015-04-02 12:58:17 +02:00
0f3bf7ef4d Fixes for balance 2015-04-02 12:57:04 +02:00
585aec127c Don't ignore user-specified "include tx" param 2015-04-02 12:56:36 +02:00
edfd2757d9 Better decoding of uint* 2015-04-02 12:52:25 +02:00
b10e33c040 More types supported 2015-04-02 12:31:10 +02:00
cc45b4d8b5 Trim left only, not right 2015-04-02 12:30:42 +02:00
f89baa73e5 transactionRoot -> transactionsRoot 2015-04-02 12:30:22 +02:00
85ebbc9aa5 Default BlockNumber to -1 when missing 2015-04-02 11:57:26 +02:00
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
c71ca1a089 Better nil handling 2015-04-02 11:32:50 +02:00
f960fc066e fixed printing BigNumbers 2015-04-02 11:02:39 +02:00
bb3ae3026e print nonenumerable properties of object in geth console 2015-04-02 01:53:33 +02:00
b8124ec791 Removed old (unused) argument 2015-04-01 23:58:26 +02:00
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
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
ab5c007376 Updated ethereum.js 2015-04-01 23:28:45 +02:00
4391c38215 Changed getters on account objects. Closes #610
* GetCode
* GetNonce
* GetStorage
* GetBalance
2015-04-01 23:22:16 +02:00
5d8be9c30d Fixed decoding for uint64 into bytes 2015-04-01 23:08:00 +02:00
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
516ec28544 sha3 stack check 2015-04-01 17:51:22 +02:00
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
109b27b552 Merge commit '4e3ffbcf9bae7e44e45fd1b6e504b3645040d73c' into develop 2015-04-01 17:50:19 +02:00
eac4d582d7 Patches 2015-04-01 17:49:22 +02:00
1045015a3c Update nonce field 2015-04-01 17:48:53 +02:00
96cf776f81 Check stack for BALANCE. Closes #622 2015-04-01 17:45:38 +02:00
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
516423cdac Merge commit 'f801183b8bea24ce9988fbd06c2f17fedfc3587f' into develop 2015-04-01 17:41:58 +02:00
216ea425e4 corrected 2015-04-01 17:36:56 +02:00
8e961df283 bumped network protocol 2015-04-01 17:10:42 +02:00
fd171eff7f Merge pull request #592 from fjl/disco-ping-pong
Discovery bonding protocol
2015-04-01 17:10:10 +02:00
76218959ab eth: update cpp bootnode address 2015-04-01 17:00:12 +02:00
a77c431e37 p2p/discover: fix off by one error causing buckets to contain duplicates 2015-04-01 17:00:12 +02:00
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
b6f0b40037 Respect fullTx option #614 2015-04-01 16:49:07 +02:00
55b9689950 rename messages to types 2015-04-01 15:53:48 +02:00
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
bea3879d6f If nil, type doesn't matter 2015-04-01 15:45:56 +02:00
ac03ff6f05 Fix block size output #613 2015-04-01 15:44:09 +02:00
6e8ff578f1 Block nonce as data 2015-04-01 15:28:06 +02:00
93f832a1a7 Make block context optional nulls 2015-04-01 15:27:37 +02:00
0ce971d9d3 Add new formatting regex 2015-04-01 15:27:14 +02:00
101ea1a1e8 Make inner size before assinging. Closes #615 2015-04-01 14:15:20 +02:00
c8e5d53a39 Merge pull request #618 from tgerring/issue613
Issue #613
2015-04-01 13:57:35 +02:00
4a4da9a24e Merge pull request #588 from ethersphere/frontier/SEC-29
Frontier/sec 29
2015-04-01 13:55:42 +02:00
f56fc9cd9d change StatusMsgData.TD back to pointer type *big.Int 2015-04-01 12:36:49 +01:00
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
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
d677190f39 add tests for valid blocks msg handling 2015-04-01 12:32:42 +01:00
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
936ddf2ad1 Merge pull request #616 from bas-vk/develop
Frontier/513
2015-04-01 13:25:15 +02:00
dbf17105f6 Build transaction context in BlockRes 2015-04-01 13:18:51 +02:00
88f2a96ca3 Set fullTx option in constructor 2015-04-01 13:18:30 +02:00
1559bd9e1b changed big.Int instantiation 2015-04-01 13:15:21 +02:00
dba9b83aa0 Merge branch 'tgerring-hexify' into develop 2015-04-01 12:51:44 +02:00
b0e09ec827 merge conflict 2015-04-01 12:51:39 +02:00
6afc5e762a Merge branch 'hexify' of https://github.com/tgerring/go-ethereum into tgerring-hexify 2015-04-01 12:49:10 +02:00
720d978e35 Merge pull request #589 from tgerring/corssetting
Configurable CORS domain
2015-04-01 12:38:29 +02:00
6605d00d92 Frontier/513 2015-04-01 12:33:12 +02:00
02fb83782e #612 rename eth_protocol method 2015-04-01 12:28:48 +02:00
86ba7432a9 txMeta storage as struct 2015-04-01 12:14:35 +02:00
4e8f8cfab7 ethereum.js update 2015-04-01 11:51:05 +02:00
f2c6a937f3 Protocol bump 2015-04-01 11:50:19 +02:00
b860b67693 Remove extra type assetion 2015-04-01 11:45:29 +02:00
f468364e4d fixed tests 2015-04-01 11:42:02 +02:00
7b7392826d Improved response tests
Actually verifies output as by regex
2015-04-01 11:38:06 +02:00
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
d3e86f9208 Added gas generator defaults 2015-04-01 10:51:46 +02:00
25998cfc45 Re-enabled response tests (needs improvement) 2015-04-01 09:11:23 +02:00
bbca6250ff Merge branch 'rpccall' into hexify 2015-03-31 22:40:52 +02:00
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
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
a2501ecfcd Make new types Stringers 2015-03-31 19:02:46 +02:00
8f0e095f4c Index is zero-based #607 2015-03-31 17:56:06 +02:00
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
3a948b2dba Add hexdata and hexnum types 2015-03-31 17:39:58 +02:00
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
2ef0bc03ec Merge commit 'ec181b308addc30c04973e9058960d579c84eef5' into develop 2015-03-31 16:25:22 +02:00
8b51582b53 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-31 15:31:32 +02:00
3453f8c5d2 Added Code field 2015-03-31 15:30:55 +02:00
653c3deaa5 Merge pull request #606 from tgerring/bootnode
Update Go bootnode address
2015-03-31 14:41:17 +02:00
6daa455243 Update Go bootnode address 2015-03-31 14:14:29 +02:00
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
2f3a968136 New CallArgs
Requirements for calls differ from transactions
2015-03-30 16:20:30 +02:00
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
f23529c5cd General repo cleanup 2015-03-30 09:18:22 +02:00
35d00e00c5 Update Godeps 2015-03-29 22:19:38 +02:00
b6fde73ef1 Add settable domain to CORS handler #331 2015-03-29 21:56:04 +02:00
04a7c4ae1e Abstract http into rpc package
New RpcConfig object to pass growing config
2015-03-29 21:26:47 +02:00
24fc1f073d Add flag to control CORS header #394
* Disabled on CLI
* http://localhost on Mist
2015-03-29 21:21:14 +02:00
e1c6c01b4d Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-29 15:03:39 +02:00
b7a0bc7031 Merge branch 'ebuchman-fix_ecrecover' into develop 2015-03-29 15:03:30 +02:00
61c5edcb57 Cleanup. 2015-03-29 15:02:49 +02:00
af153e7884 Merge branch 'fix_ecrecover' of https://github.com/ebuchman/go-ethereum into ebuchman-fix_ecrecover 2015-03-29 13:34:41 +02:00
391d79ef44 Add ExtraData field to RPC output 2015-03-29 12:08:52 +02:00
eb79938060 Docker rename ethereum to geth 2015-03-28 22:17:08 +01:00
2ca6a800ad Remove old go cover location 2015-03-28 22:16:04 +01:00
82eeb5e02a Added Coveralls badges 2015-03-28 22:04:36 +01:00
129fabddb2 Prefer hex prefixed with 0x 2015-03-28 21:47:16 +01:00
d9f8b1e0c1 Report InvalidTypeError as -32602 to JSON RPC 2015-03-28 21:42:44 +01:00
e80ef9ff34 Cleanup 2015-03-28 21:41:34 +01:00
29930da522 eth_getStorageAt output hex should begin with 0x 2015-03-28 21:27:50 +01:00
3b20603eb1 Merge branch 'kobigurk-develop' into develop 2015-03-28 21:06:39 +01:00
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
b9ca5eef58 Merge pull request #579 from tgerring/rpcargs
RPC Args
2015-03-28 20:42:45 +01:00
696ff43db3 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-28 20:34:12 +01:00
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
3b7e4173ce Cleanup VM 2015-03-28 20:03:25 +01:00
2455e0bd18 Merge pull request #585 from aperseghin/patch-2
Minor fix
2015-03-28 11:54:20 +01:00
ed6ca5d007 Merge pull request #586 from aperseghin/patch-3
Update README.md
2015-03-28 11:54:10 +01:00
a4cbd1c7be ethereum -> geth 2015-03-28 00:32:23 +01:00
47af2f02cb eth_getTransactionCount now returns a hex string 2015-03-27 22:22:13 +03:00
3ea8c7301e PUSH gas fix 2015-03-27 16:53:05 +01:00
43d521e90e Decouple core from rpc 2015-03-27 16:36:01 +01:00
df648cbc60 Removed comments 2015-03-27 16:11:19 +01:00
8a22cd5e6c Removed defer/panic. #503 2015-03-27 16:09:57 +01:00
0ac346f707 Merge branch 'develop' into rpcargs 2015-03-27 16:03:49 +01:00
9f84c78eb5 BlockFilterArgs 2015-03-27 15:54:54 +01:00
db1c52918f Update README.md 2015-03-27 09:29:35 -04:00
00f8319faf Explicitly check memory's data store. #515 2015-03-27 14:22:38 +01:00
8e7549db0b Minor fix 2015-03-27 08:38:20 -04:00
eb102bf4bb Etherbase => etherbase 2015-03-27 12:14:00 +01:00
86c43d97bc Merge pull request #581 from aperseghin/patch-1
Update README.md
2015-03-27 12:12:38 +01:00
0b4b2b81f9 Merge pull request #580 from ethersphere/frontier/cli-key
settable etherbase
2015-03-27 12:12:05 +01:00
54a14d5c9d Merge pull request #584 from tgerring/issue577
Use ExtraDB for RPC storage. Fixes #577
2015-03-27 11:48:03 +01:00
09280c5f11 Merge pull request #565 from tgerring/responsetypes
Update response types + tests
2015-03-27 11:44:13 +01:00
2788fb4ce5 More explicit formatting for protocol version 2015-03-27 11:43:14 +01:00
e29396b691 Use ExtraDB for storage. Fixes #577 2015-03-27 09:36:18 +01:00
c38630af23 Test blockHeightFromJsonInvalid 2015-03-27 00:13:03 +01:00
e0781c2548 NewTxArgs accept numbers or strings for value/gas/gasprice 2015-03-27 00:07:28 +01:00
3fcef54f9b tidy 2015-03-26 22:58:12 +01:00
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
5838847a9a Update README.md
Rename ethereum executable to geth
2015-03-26 17:48:24 -04:00
6bd1f6cc49 Merge remote-tracking branch 'origin' into rpcargs
Conflicts:
	rpc/args.go
2015-03-26 22:42:46 +01:00
bb12dbe233 Prefer args as strings not objects 2015-03-26 22:35:42 +01:00
7eed7e1d96 Merge branch 'rpcargs' of github.com:tgerring/go-ethereum into rpcargs 2015-03-26 22:27:06 +01:00
2c5a32ebbc Undo XEth changes 2015-03-26 22:24:48 +01:00
49a912ce33 Undo xeth changes 2015-03-26 22:14:31 +01:00
b0b0939879 renamed ethereum => geth 2015-03-26 21:27:52 +01:00
829240c325 Merge pull request #550 from ethersphere/frontier/cli-key
import/export accounts
2015-03-26 21:08:15 +01:00
1f3814141b WhisperMessageArgs 2015-03-26 21:07:50 +01:00
9ca87afd0b WhisperFilterArgs 2015-03-26 20:52:09 +01:00
81f36df910 CompileArgs 2015-03-26 20:31:00 +01:00
ddcc8e1673 SubmitWorkArgs tests 2015-03-26 20:25:30 +01:00
b414a1303f WhisperIdentityArgs 2015-03-26 20:20:43 +01:00
1f1e98f96b FilterIdArgs 2015-03-26 20:10:31 +01:00
62ebf999bf FilterStringArgs tests 2015-03-26 20:04:03 +01:00
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
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
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
4ec38e3932 common: remove WriteFile and ReadAllFile (use ioutil instead) 2015-03-26 19:00:18 +00:00
23e41a57ad Applying: fix adming js test regression (maybe otto update?) 2015-03-26 19:00:18 +00:00
fee224f075 cli test: fix test newJSRE interactive argument 2015-03-26 19:00:18 +00:00
d1b52efdb5 cli: implement ethereum presale wallet import via cli 2015-03-26 19:00:18 +00:00
34d5a6c156 cli: help formatting 2015-03-26 19:00:18 +00:00
1c4c71dcff cli: fix liner not closing (spuriously opened) in noninteractive jsre 2015-03-26 19:00:18 +00:00
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
859f1f08ca blockpool: wrap intermittent status test in a loop 2015-03-26 19:00:18 +00:00
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
e21ce9a9b4 DbHexArgs tests 2015-03-26 19:39:40 +01:00
f68ca2b6e6 DbArgs tests 2015-03-26 19:34:32 +01:00
3ab9f26943 Accept number or string for BlockFilterArgs limit/offset 2015-03-26 19:17:25 +01:00
658204bafc bump 2015-03-26 17:55:30 +01:00
c32bca45ad Stack limit 2015-03-26 17:45:09 +01:00
d36501a6e5 Fixed miner
* Miners could stall because the worker wasn't aware the miner was done
2015-03-26 17:45:03 +01:00
6661bc35ef Accept number or string for BlockFilterArgs to/fromBlock 2015-03-26 17:27:29 +01:00
745dd5b7a5 Sha3Args 2015-03-26 16:19:33 +01:00
f695d01354 Convert error checks to Expect functions 2015-03-26 16:16:17 +01:00
3472823be9 HashIndexArgs 2015-03-26 14:17:32 +01:00
cb103c089a BlockNumIndexArgs 2015-03-26 13:57:41 +01:00
cd6b3fd28a GetDataArgs 2015-03-26 13:50:22 +01:00
a49c81547c DecodeParamError -> InvalidTypeError for unexpected input type 2015-03-26 13:45:06 +01:00
ca03e97697 Add InvalidTypeError 2015-03-26 13:33:44 +01:00
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
d0fa0a234d Merge commit 'a718515b3d43f00497231f981b5ea757b71d55ff' into develop 2015-03-26 13:14:24 +01:00
c139af5826 GetBalanceArgs 2015-03-26 13:10:31 +01:00
4523a00b91 GetTxCountArgs 2015-03-26 12:47:00 +01:00
c33dc3e328 moved helper 2015-03-26 12:40:09 +01:00
83b0cad766 fixed block filter args 2015-03-26 12:34:59 +01:00
b8a667deed debug log 2015-03-26 12:15:25 +01:00
4ba850639e updated web3.js light for console 2015-03-26 12:15:12 +01:00
9c4504dc41 GetStorageAtArgs 2015-03-26 12:11:28 +01:00
ace5b5a1bf updated web3.js 2015-03-26 12:06:45 +01:00
507830eb81 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-26 12:06:23 +01:00
eb433731aa Fixed filter and refactored code 2015-03-26 12:06:14 +01:00
300d36b864 improved NewTxArgs tests 2015-03-26 11:59:35 +01:00
ad2089b0a3 Add blockHeightFromJson convenience function 2015-03-26 11:59:16 +01:00
493e0d7be8 improved GetBlockByNumber tests 2015-03-26 11:07:14 +01:00
93af30a6f6 improved GetBlockByHashArgs tests 2015-03-26 11:06:45 +01:00
bd1a54f076 GetStorageArgs 2015-03-26 10:52:32 +01:00
966cfa4bdd NewTxArgs 2015-03-26 10:34:21 +01:00
c7dc379da5 GetBlockByHashArgs 2015-03-26 10:14:52 +01:00
7e1e264375 Don't return empty block for "pending" #568 2015-03-26 09:24:07 +01:00
98f970ba59 Updated example for new ethereum.js 2015-03-26 01:03:14 +01:00
88b9bc40d7 Godep issue? 2015-03-26 01:03:03 +01:00
e5a0a0ef48 Moved output to debug 2015-03-26 01:02:51 +01:00
7e4c488717 Fixed storage. Closes #516 2015-03-26 00:42:35 +01:00
505f1fbcbb added tx tests and fixed block tests 2015-03-25 17:05:29 +01:00
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
e22bcb78a5 Update response types + tests
To coincide with recent type conversion
2015-03-25 16:50:30 +01:00
181a21c67c rlp: encode nil array pointers as empty list or string 2015-03-25 16:46:29 +01:00
ff5578fc71 updated ethash 2015-03-25 14:58:12 +01:00
a2e3bf6f30 removed big num from pp 2015-03-25 14:51:10 +01:00
aa1eae67ec Merge pull request #560 from tgerring/xethcleanup
XEth cleanup
2015-03-25 13:55:46 +01:00
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
221f30c3aa updated ethereum.js 2015-03-25 13:52:45 +01:00
8b32f79445 Removed full path 2015-03-25 13:52:23 +01:00
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
18d1569ce5 header check for test 2015-03-25 12:11:29 +00:00
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
a1cae93d78 Improved pretty printer for console 2015-03-25 12:44:41 +01:00
2b93843d86 Improve protocol version reporting 2015-03-25 12:09:55 +01:00
c956bcb13c Move version to const and expose via Version() 2015-03-25 12:08:48 +01:00
6431d088ad bump 2015-03-25 11:54:11 +01:00
ff44347ea1 fixed test 2015-03-25 10:31:58 +01:00
dda1d60556 Store protocol version in the block db **NOT** extra db 2015-03-25 09:58:46 +01:00
3301f6ecef back to debug log 2015-03-24 23:55:48 +01:00
97bf9f1521 Temp fix for console output 2015-03-24 23:50:27 +01:00
3d5f48a160 updated deps 2015-03-24 21:25:11 +01:00
a6e659f74b Merge branch 'master' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-24 19:22:32 +01:00
a33a325ac1 Merge pull request #559 from Gustav-Simonsson/blocktests_update_ethash
Update ethash lib
2015-03-24 19:14:20 +01:00
d41341f77d WithState -> withState 2015-03-24 17:58:16 +01:00
82b5a8af49 DRY up height logic 2015-03-24 17:49:37 +01:00
c38a3b4cc7 Better error reporting in the console. Updated ethereum.js 2015-03-24 17:49:28 +01:00
865f31018b Shuffle 2015-03-24 17:45:31 +01:00
2106a63d60 Move Frontend interface to separate file 2015-03-24 16:42:33 +01:00
65d553d367 Update internal calls to use CurrentBlock() 2015-03-24 16:34:28 +01:00
59b6b619a2 Don't expose backend directly 2015-03-24 16:33:37 +01:00
b9b7442b74 Remove redundant fields 2015-03-24 16:08:18 +01:00
ad420d099a rename eth to backend 2015-03-24 16:01:44 +01:00
b0c4dc8df8 Update ethash lib 2015-03-24 15:51:51 +01:00
6d41402dce Backend no longer needed to resolve import cycle 2015-03-24 15:36:39 +01:00
9de1ad6546 fixed tests 2015-03-24 15:27:05 +01:00
ff9d66e096 Cleaned up changes 2015-03-24 15:23:16 +01:00
23bccbbc58 Modified according to poc 9 changes
* Refund of value
2015-03-24 15:15:17 +01:00
bbe795455a Secure trie shakey / key matching 2015-03-24 15:14:03 +01:00
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
d6da533345 Merge commit '24066dca4646c8a376aa5dfbceec0a4b3f872c11' into develop 2015-03-24 13:39:49 +01:00
0ec171ccdf Copy fix 2015-03-24 13:38:16 +01:00
eab8f7355d Event fixes for miner 2015-03-24 13:37:38 +01:00
576df064e5 Updated for PV59
* Value XFER are refunded back to the sender if the execution fails
2015-03-24 11:49:30 +01:00
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
4877e52c15 Merge commit '58c6cc8fd7ff8a27004ed62d912e0a61ae1b73bb' into develop 2015-03-24 11:22:58 +01:00
118b79eca7 Added gitter integration for travis 2015-03-24 10:41:04 +01:00
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
d8e21b39b3 Added copy function 2015-03-24 10:33:00 +01:00
0ee0094cc0 better block propagation 2015-03-23 22:59:19 +01:00
7b8a47f484 removed legacy code 2015-03-23 22:05:12 +01:00
0eaa023ffa Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-23 21:48:50 +01:00
bfb9ed881d Gas validation and clean up of legacy code 2015-03-23 21:48:45 +01:00
ebf4408d73 Decrement depth 2015-03-23 21:48:31 +01:00
e88a29ad02 Merge pull request #553 from ethersphere/jsonlog
natspec: minor fix in test
2015-03-23 18:57:57 +01:00
53af810851 natspec: minor fix in test 2015-03-23 17:36:04 +00:00
f2f65c1a65 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-23 18:30:11 +01:00
90c710fd26 Merge pull request #552 from ethersphere/jsonlog
Jsonlog
2015-03-23 18:27:06 +01:00
c8e9ca0483 fixed bad uncles 2015-03-23 18:27:05 +01:00
a983a215dc fix ethtest logging 2015-03-23 17:08:49 +00:00
e954c24af0 Implement RPC net_version 2015-03-23 18:06:05 +01:00
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
1cf6ca8f10 Add Close() method to EthereumApi
To close the handler for LDB
2015-03-23 17:41:50 +01:00
9880f99ccb fix p2p/testlog_test 2015-03-23 16:41:41 +00:00
1e61b75cbf tests + fixes 2015-03-23 17:33:01 +01:00
03cc5df9b7 eth: fix protocol version/network id copied from config to Ethereum field 2015-03-23 16:23:06 +00:00
0330077d76 moved state and vm to core 2015-03-23 16:59:09 +01:00
d7eaa97a29 moved to error 2015-03-23 16:55:40 +01:00
211cb03f83 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-23 16:47:05 +01:00
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
5707912e2f "pending" convention should be -2 instead of 0 2015-03-23 16:36:12 +01:00
253ecdc8bb Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-23 16:35:49 +01:00
9be7853e34 Fixed issues with stalled remote miner 2015-03-23 16:35:44 +01:00
2f8601ef38 Rename blockAge to blockHeight 2015-03-23 16:34:50 +01:00
becc503230 Correct difficulty calculation to use new difficulty minimum 2015-03-23 16:32:20 +01:00
5d31a475e9 Fix new types for blocktests and comment out non-working log level setter 2015-03-23 16:32:20 +01:00
60de4d6dd1 gofmt 2015-03-23 16:32:20 +01:00
08bb472c91 Add validation of post state accounts to block tests 2015-03-23 16:32:20 +01:00
33c5186fd0 In blocktest cmd, disable network and add RPC flag 2015-03-23 16:32:20 +01:00
dc3a9379f5 logging for possible uncles 2015-03-23 16:14:33 +01:00
3f6e1b2fd3 db_putHex/db_getHex + tests 2015-03-23 16:04:21 +01:00
524f8199bf added some nil checks for cache (testing specific) 2015-03-23 12:22:58 +01:00
6657d544db Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-23 12:12:53 +01:00
0be6d34048 finally merged *the missing* 2015-03-23 12:12:49 +01:00
dbb2af6016 Merge pull request #548 from tgerring/typescleanup
Fix Mist types build errors
2015-03-23 12:12:29 +01:00
91a2275ad3 Move RemoteAgent to miner pkg 2015-03-23 11:21:41 +01:00
439481d177 Rename Agent to RemoteAgent 2015-03-23 11:14:42 +01:00
01c0ba22ae Add DAG seed hash and difficulty to GetWork 2015-03-23 11:09:48 +01:00
0846e15667 go away! 2015-03-23 09:36:28 +01:00
ab6311c1bd Move remote mining agent to XEth 2015-03-23 09:35:42 +01:00
d76e8cb1f1 Consistent var names 2015-03-23 09:24:52 +01:00
16a58f8f2a Always return 3 strings 2015-03-23 08:55:06 +01:00
31879eca8c Stub corrected getWork response 2015-03-23 08:45:09 +01:00
3772f02569 Rename for filename typo 2015-03-23 08:29:41 +01:00
372e1cad5b Cleanup get/submitWork
getWork needs to return additional values
2015-03-23 08:28:54 +01:00
d2fa6e7753 vm: explicit error checks in ecrecover. closes #505 2015-03-22 14:54:40 -07:00
8affdf96e2 Merge pull request #547 from tgerring/commoncleanup
common/common.go cleanup
2015-03-22 21:46:46 +01:00
3133372a6a Merge pull request #536 from zsfelfoldi/develop
using robertkrimen/otto, godeps updated
2015-03-22 21:45:56 +01:00
59eab49cb8 Merge branch 'ethersphere-jsonlog' into develop 2015-03-22 21:43:58 +01:00
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
8ed4f226d1 check for nil ptrs 2015-03-22 15:44:00 +01:00
82956df523 Get work / submit work partially implemented.
* WIP missing arguments for submitting new work
* GetWork **done**
2015-03-22 15:38:01 +01:00
d186bf0dfe Fix Mist types build errors 2015-03-22 14:25:33 +01:00
bf73f02fe0 Remove common.go 2015-03-22 13:48:07 +01:00
360c66c65d Move Big* vars to big.go 2015-03-22 13:46:38 +01:00
2477d10aa0 Move MakeName to path 2015-03-22 13:46:21 +01:00
c0741edc34 Move OS-specific funcs to path.go 2015-03-22 13:44:17 +01:00
82a41a198e Move CurrencyToString to size 2015-03-22 13:35:13 +01:00
08b21acff1 Move ToHex/FromHex into bytes 2015-03-22 13:32:52 +01:00
9682a3ef3e Merge pull request #526 from ethersphere/frontier/blockpool
Frontier/blockpool
2015-03-22 13:11:16 +01:00
e349fb9350 bump 2015-03-22 12:20:27 +01:00
13781b922a converted to proper types 2015-03-22 12:12:29 +01:00
0edb33566f fix blockpool test logger 2015-03-22 02:18:07 +00:00
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
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
7f85608f30 Merge branch 'conversion' into develop 2015-03-21 18:18:19 +01:00
09766d1729 Merge pull request #535 from maran/fixReadmeLink
Fix link to build instructions in the readme
2015-03-21 18:16:55 +01:00
fcacfabe19 Added new ethereum.js 2015-03-21 15:09:03 +01:00
83728e4b64 Merge branch 'develop' into conversion
Conflicts:
	rpc/responses.go
2015-03-21 14:54:25 +01:00
004f5008ff Merge branch 'rpcfrontier' into develop 2015-03-21 14:53:12 +01:00
a7ad9c309b Merge branch 'develop' into conversion 2015-03-21 14:52:42 +01:00
38c7c589e4 Merge branch 'rpcfrontier' into develop 2015-03-21 14:52:31 +01:00
ce862ee758 Removed some comments 2015-03-21 14:51:45 +01:00
4300f2a0fa Fixed state tests 2015-03-21 14:47:50 +01:00
c28116cb3b Fixed incorrect recipient derived 2015-03-21 14:46:50 +01:00
06697775d1 Merge branch 'conversion' of github.com-obscure:ethereum/go-ethereum into conversion 2015-03-21 14:36:20 +01:00
9edb9a21bc Add json LogSystem #538 2015-03-21 07:26:44 +01:00
670021da15 Rename topic to topics #544 2015-03-21 07:08:33 +01:00
069c87b960 whisper: use common.Hash 2015-03-21 00:57:18 +01:00
7c4ff3abb4 eth: enable whisper again 2015-03-21 00:50:20 +01:00
483d43a15a whisper: use package rlp 2015-03-21 00:49:58 +01:00
a829a56587 rlp: add Stream.Raw 2015-03-21 00:49:31 +01:00
81800ca39e Merge remote-tracking branch 'ethereum/conversion' into conversion 2015-03-20 22:47:27 +01:00
b95ff54632 cmd/blocktest: delete package
Blocktests are now integrated in cmd/ethereum.
2015-03-20 22:46:41 +01:00
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
abce6804a0 Right pad bytes to prevent future programmers making bugs 2015-03-20 20:37:56 +01:00
f4e9638867 Merge branch 'ethersphere-frontier/blockpool' into conversion 2015-03-20 18:01:05 +01:00
ecd10d2cf7 iterator returned wrong value 2015-03-20 18:00:54 +01:00
1821d1af48 Merge branch 'frontier/blockpool' of https://github.com/ethersphere/go-ethereum into ethersphere-frontier/blockpool 2015-03-20 17:42:25 +01:00
54dac59285 wip 2015-03-20 17:42:09 +01:00
a59bb053f4 merge 2015-03-20 16:02:01 +01:00
deee9cb170 Added caching for block chain. Currently set to 10k 2015-03-20 15:54:42 +01:00
28e1971272 Merge branch 'rpcxeth' into rpcfrontier
Conflicts:
	rpc/api.go
2015-03-20 15:25:43 +01:00
0cde7a4d46 Add xethAtStateNum convenience method 2015-03-20 14:56:55 +01:00
efcc93e7da Move Account register to xeth 2015-03-20 14:12:07 +01:00
28ddc16a9b Merge remote-tracking branch 'ethereum/conversion' into conversion 2015-03-20 14:01:35 +01:00
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
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
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
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
85acdadcfa fixed jsre test 2015-03-20 13:48:23 +01:00
739c36ad4d inline GetStorageAt 2015-03-20 13:45:07 +01:00
28e5fc8352 Make pretty 2015-03-20 13:37:56 +01:00
8324b683b4 using robertkrimen/otto, godeps updated 2015-03-20 13:22:01 +01:00
7690285cbe Fix link to build instructions in the readme 2015-03-20 13:19:26 +01:00
66b29899c4 use common.Hash as pool key, no string conversion needed 2015-03-20 11:57:47 +00:00
4f5b362bda %#x => %x 2015-03-20 12:52:03 +01:00
91f9f355b2 test 2015-03-20 12:17:57 +01:00
41c493ace9 Merge branch 'rpcfrontier' of github.com-obscure:ethereum/go-ethereum into rpcfrontier 2015-03-20 12:07:19 +01:00
55fdf3e462 Listen to tx pre event and trigger 'pending' 2015-03-20 12:07:06 +01:00
d7564a9a25 fix common.Hash conversion 2015-03-20 10:41:41 +00:00
8987750a36 fix import in reorganised test 2015-03-20 10:41:41 +00:00
0578df9467 remove eth/wallet.go (only commented out content) 2015-03-20 10:41:41 +00:00
a578db5dae improve documentation and move one test 2015-03-20 10:41:41 +00:00
8767179d74 reduce logging output 2015-03-20 10:41:41 +00:00
63cae9b9ac uncomment status test, hack: skip the 2 unreliable fields 2015-03-20 10:41:41 +00:00
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
a9926a289d fix missing hexification on IdleTooLong error log 2015-03-20 10:41:40 +00:00
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
50661f0e68 peer suspension to disallow reconnect after disconnect on fatal error for set period (PeerSuspensionInterval) 2015-03-20 10:41:40 +00:00
01ff0b3176 fixed ethash 2015-03-20 11:40:46 +01:00
d8fe8f60e8 updated ethash 2015-03-20 11:19:12 +01:00
b3329bc698 inline Transact 2015-03-20 07:15:34 +01:00
aa3918efa7 Move transact gas check to XEth 2015-03-20 07:13:29 +01:00
e038a42d7a inline Call 2015-03-20 06:58:53 +01:00
1d6451f5c3 inline GetBlockByNumber 2015-03-20 06:57:23 +01:00
bde161382a inline GetBlockByHash 2015-03-20 06:53:24 +01:00
eb45211501 Merge branch 'rpcfrontier' of github.com:ethereum/go-ethereum into rpcfrontier 2015-03-20 06:45:44 +01:00
b56e20be27 Reorg for clarity 2015-03-20 00:24:23 -04:00
754160afea Move gas defaults to XEth 2015-03-20 00:23:48 -04:00
c3a3d38735 Add tests for errors 2015-03-20 00:08:29 -04:00
3cea7d87c1 Rename FilterOptions to BlockFilterArgs 2015-03-19 23:55:17 -04:00
d791fe4975 Remove unnecessary event mux 2015-03-19 23:34:35 -04:00
19360c0079 Move stateAt func to XEth 2015-03-19 23:28:45 -04:00
6669ef5b70 Rename for clarity 2015-03-19 23:20:54 -04:00
7b45f3377f inline MessagesChanged 2015-03-19 23:14:55 -04:00
2ef2b9f2e0 inline UninstallWhisperFilter 2015-03-19 23:13:52 -04:00
1f9b93647b inline NewWhisperFilter 2015-03-19 23:11:52 -04:00
4b5e592656 inline AllLogs 2015-03-19 23:10:23 -04:00
0bda63eb76 inline Logs 2015-03-19 23:08:26 -04:00
d2e7414230 inline FilterChanged 2015-03-19 23:07:25 -04:00
3e9632e256 inline NewFilterString 2015-03-19 23:06:32 -04:00
84b19971fa inline UninstallFilter 2015-03-19 23:05:23 -04:00
4663a55f12 inline NewFilter 2015-03-19 23:03:53 -04:00
7c30716828 Merge branch 'rpcinline' into rpcxeth
Conflicts:
	rpc/api.go
2015-03-19 23:01:10 -04:00
6c04c19eb4 Reorg filter logic to XEth 2015-03-19 22:58:07 -04:00
12d87226a7 Merge branch 'rpcutil' into rpcfrontier 2015-03-19 20:52:36 -04:00
cdfc03dc8e inline WhisperPost 2015-03-19 20:40:50 -04:00
0895190b64 inline GetBlockTransactionCountByHash 2015-03-19 20:31:40 -04:00
ff657edbb6 inline GetBlockTransactionCountByNumber 2015-03-19 20:30:42 -04:00
c57eb286d6 inline GetBlockUncleCountByHash 2015-03-19 20:29:46 -04:00
216175c265 inline GetBlockUncleCountByNumber 2015-03-19 20:28:25 -04:00
7e6c8a411d fixes 2015-03-19 20:26:09 -04:00
22546dcb55 inline UninstallWhisperFilter 2015-03-19 20:14:27 -04:00
b28e6d8306 inline WhisperMessages 2015-03-19 20:12:52 -04:00
cc91ba0add inline GetTransactionByHash 2015-03-19 20:12:12 -04:00
0eb9572d64 inline RemoveWhisperIdentity 2015-03-19 20:10:05 -04:00
85e03217de inline NewWhisperIdentity 2015-03-19 20:09:54 -04:00
57f6a3b5c0 inline DbGet 2015-03-19 20:06:35 -04:00
6fef616870 inline DbPut 2015-03-19 20:05:48 -04:00
d28cd0f040 inline GetCompilers 2015-03-19 20:04:40 -04:00
152b37ee11 inline GetData 2015-03-19 20:04:02 -04:00
e530c960a4 inline GetTxCountAt 2015-03-19 20:03:27 -04:00
3aea645106 inline GetStorage 2015-03-19 20:02:31 -04:00
7562bc1dbc inline GetBalance 2015-03-19 20:00:41 -04:00
b7745c6835 inline HasWhisperIdentity 2015-03-19 20:00:18 -04:00
6cc02aadbf Inline getStateWithNum 2015-03-19 19:58:59 -04:00
62236dd95e copy over loop 2015-03-19 23:20:41 +01:00
abc3d8d50a Make send internal 2015-03-19 18:06:26 -04:00
df5901fdc5 Removed more casts 2015-03-19 22:45:03 +01:00
013427bde2 Merge branch 'develop' into conversion 2015-03-19 21:18:29 +01:00
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
b4a51de602 Merge commit 'f144a95940a5df0809bb028eef7b337125423602' into develop 2015-03-19 21:14:51 +01:00
c7b616ac14 Remove util 2015-03-19 14:28:31 -04:00
1f2de6ecd5 Remove extra logger 2015-03-19 14:21:42 -04:00
d670c861d7 Move Log to LogRes 2015-03-19 14:19:52 -04:00
29eb220910 :-) 2015-03-19 17:18:55 +01:00
e861bbe0c1 Merge branch 'rpcfrontier' into develop 2015-03-19 17:00:01 +01:00
463491f8cd moved back to debug 2015-03-19 16:59:54 +01:00
b5a71d955c merge 2015-03-19 16:59:13 +01:00
e540a75030 re-enabled json logging 2015-03-19 16:30:01 +01:00
03b8ddd19c Merge branch 'rpcfrontier' into develop 2015-03-19 16:29:32 +01:00
14a2f42f37 fixed chain event. Closes #529 2015-03-19 16:19:54 +01:00
93ba3df4ff Removed frontier from version :-( 2015-03-19 15:36:38 +01:00
b52807f0c0 Removed frontier in version :-( 2015-03-19 15:36:00 +01:00
ce063e8d9c Merge remote-tracking branch 'ethereum/conversion' into conversion 2015-03-19 15:21:49 +01:00
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
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
a7bced779a p2p: log disconnect requests
This helps a lot with debugging.
2015-03-19 15:15:07 +01:00
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
4811f460e7 p2p: export ExpectMsg (for eth protocol testing) 2015-03-19 15:08:04 +01:00
797bbce15e Merge branch 'develop' into conversion 2015-03-19 15:07:47 +01:00
554f20930a Merge branch 'develop' into rpcfrontier 2015-03-19 15:07:33 +01:00
a756dbeb7b Removed uint casts 2015-03-19 15:06:56 +01:00
ad7e491214 improved test output 2015-03-19 15:04:29 +01:00
d4e5747d04 Merge branch 'develop' into conversion 2015-03-19 14:31:41 +01:00
cf45b939a0 fixed tests 2015-03-19 14:31:14 +01:00
e13c673980 Merge remote-tracking branch 'ethereum/conversion' into conversion 2015-03-19 12:17:43 +01:00
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
d7ab716eea Fixed mkdnode & added some tests 2015-03-19 10:57:02 +01:00
8b20c3cc97 Validate NewTx From field is not blank 2015-03-18 20:30:09 -04:00
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
e67d32b467 Merge commit '85fa3790ac9f67232f0e31e7f861c66ef0e0047e' into develop 2015-03-18 22:13:08 +01:00
da427e8843 Merge branch 'rpcutil' into rpcfrontier 2015-03-18 15:57:06 -04:00
0685810ec6 Tests 2015-03-18 15:48:40 -04:00
e02eedb43e BlockNumber as int fix 2015-03-18 15:48:34 -04:00
7cbcd81ddc Remove UnmarshalRawMessages 2015-03-18 15:42:57 -04:00
5f35e6778f Merge branch 'rpcfrontier' into conversion 2015-03-18 18:42:30 +01:00
af9da83ce2 Merge branch 'develop' into rpcfrontier 2015-03-18 18:42:21 +01:00
f0bb136099 Merge branch 'develop' into conversion 2015-03-18 18:42:01 +01:00
c12046d6bf Merge branch 'ethersphere-frontier/cli-private-network' into develop 2015-03-18 18:39:56 +01:00
79f90bf7c1 added frontier to version 2015-03-18 18:39:24 +01:00
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
f9a6038f5b merge 2015-03-18 18:23:37 +01:00
baca0c2251 Merge pull request #523 from fjl/docker-fast
Dockerfile: use fast™ build steps
2015-03-18 12:09:20 -04:00
3e52c9439a Merge pull request #522 from fjl/makedag
cmd/ethereum: add makedag command for testing
2015-03-18 16:40:50 +01:00
60c43d1952 Remove i2hex 2015-03-18 11:10:08 -04:00
7c9bc8517d Remove RpcServer 2015-03-18 11:08:49 -04:00
4d0ae8b0cb Merge branch 'conversion' of github.com-obscure:ethereum/go-ethereum into conversion 2015-03-18 14:16:07 +01:00
48dd601de0 prep template for fixed size hashes 2015-03-18 14:15:58 +01:00
064279c0ec cmd/ethereum, cmd/utils: partial fix for chain import 2015-03-18 14:04:44 +01:00
e30c323391 merge develop 2015-03-18 08:46:55 -04:00
d15f90645d Merge remote-tracking branch 'ethereum/conversion' into conversion 2015-03-18 13:39:01 +01:00
a59dd393e7 core: fix tests 2015-03-18 13:38:47 +01:00
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
c298148a7f core/types: use package rlp instead of common.Decode 2015-03-18 13:24:34 +01:00
b94a6a0193 rlp: add DecodeBytes
Über-convenience.
2015-03-18 13:17:39 +01:00
0a1eeca41e conversions. -compilable- 2015-03-18 13:00:01 +01:00
942980609f conversions 2015-03-18 11:44:25 +01:00
cd52ef315c Added Hex methods 2015-03-18 11:44:17 +01:00
ca8d184173 fix eth tests 2015-03-18 16:31:49 +07:00
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
67c9d9c2fa Remove JsonWrapper 2015-03-17 20:14:19 -04:00
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
c6f84325b1 Support JSON RPC batch requests 2015-03-17 17:46:22 -04:00
8fd243ee23 Add JSON RPC batch support
http://www.jsonrpc.org/specification#batch
2015-03-17 17:38:05 -04:00
7dbbe1bedc eth/backend: remove spurious and incorrent PeerInfo() 2015-03-18 04:01:47 +07:00
1872418316 eth: remove disused peer_util.go 2015-03-18 03:59:21 +07:00
142e81258c Merge branch 'develop' into conversion 2015-03-17 21:40:05 +01:00
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
048d4ec5be Merge branch 'rpcfrontier' into develop 2015-03-17 21:30:29 +01:00
917050dc30 Merge branch 'develop' into rpcfrontier 2015-03-17 21:27:34 +01:00
53104b09fa bump 2015-03-17 21:23:05 +01:00
786a58d8b0 Merge pull request #485 from ethersphere/frontier/nodeadmin.js
Frontier console node admin interface
2015-03-17 21:15:23 +01:00
86661de077 Fixed tests and bloom 2015-03-17 18:00:03 +01:00
c21293cd91 bloom 2015-03-17 16:05:17 +01:00
1513413412 Dockerfile: use fast™ build steps 2015-03-17 14:49:37 +01:00
b422835a59 cmd/ethereum: add makedag command for testing 2015-03-17 14:12:34 +01:00
fe819f3b9f Comment out whisper remove identity stubs 2015-03-17 09:11:01 -04:00
0fa7859b94 Fixed VM & Tests w/ conversion 2015-03-17 13:24:25 +01:00
ff55c6f5ba Merge branch 'develop' into conversion
Conflicts:
	common/types.go
2015-03-17 13:09:22 +01:00
b0ebccb31e fixed to 2015-03-17 12:56:29 +01:00
17c5ba2b6b core: actually convert transaction pool 2015-03-17 12:16:21 +01:00
9663493ba0 Merge commit 'dffaa678f966f87dcd011671a16b554b29a37549' into develop 2015-03-17 12:02:50 +01:00
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
ee7202fa00 Merge remote-tracking branch 'ethereum/conversion' into conversion 2015-03-17 12:01:40 +01:00
65eee2006d pow/ezp: use common.Hash 2015-03-17 12:01:21 +01:00
27f7aa0163 core: adapt Message for new Transaction.From signature 2015-03-17 12:00:29 +01:00
b95387a0dc core: convert transaction pool to common.{Address,Hash} 2015-03-17 11:59:26 +01:00
e91ab84dbe core/types: don't use Address zero value for invalid addresses 2015-03-17 11:58:31 +01:00
515d9432fc converted vm 2015-03-17 11:19:23 +01:00
d5de6489d7 core/types: fix Transaction.Hash and add support for encoding with package rlp 2015-03-17 01:34:18 +01:00
ad78db4d62 crypto: fix Sha3Hash and add a test for it 2015-03-17 01:32:35 +01:00
8ce6a36478 converted chain manager 2015-03-16 23:48:18 +01:00
94505146a2 updated vm env 2015-03-16 23:17:28 +01:00
843db4978e updated blockpool 2015-03-16 23:10:26 +01:00
176115e22e More empty param tests 2015-03-16 16:49:51 -04:00
4e181c5764 Moved gas 2015-03-16 21:46:47 +01:00
0339a13862 RPC empty args tests 2015-03-16 16:21:51 -04:00
719effa7ec Return error when filter params are not strings 2015-03-16 15:30:31 -04:00
03ac0f18ae Initial support to remove Whisper identities per #491 2015-03-16 14:46:46 -04:00
6aa390abfb Merge branch 'conversion' of github.com-obscure:ethereum/go-ethereum into conversion 2015-03-16 18:43:09 +01:00
91b0b14845 converted vm 2015-03-16 18:42:18 +01:00
e5e265d024 Merge branch 'develop' into rpcfrontier 2015-03-16 13:02:41 -04:00
16df850af2 core/types: use common.{Hash,Address} in for transactions 2015-03-16 17:43:42 +01:00
13ade2ed60 Merge branch 'conversion' of https://github.com/ethereum/go-ethereum 2015-03-16 17:29:08 +01:00
64490897f3 crypto: add Sha3Hash 2015-03-16 17:27:24 +01:00
bfcd2cf132 block conversion 2015-03-16 17:27:23 +01:00
e620bde405 conversion state 2015-03-16 17:09:08 +01:00
7330c97b5b DRY up the use of toHex in the project and move it to common 2015-03-16 16:56:11 +01:00
17cd7a5817 remove long-running mining test, ethutil -> common 2015-03-16 22:56:05 +07:00
b3e133dd15 Merge branch 'frontier/js' into frontier/nodeadmin.js 2015-03-16 22:50:29 +07:00
73af0302be we do not use the name Frontier Console 2015-03-16 22:49:39 +07:00
b4060da9eb ethutil -> common 2015-03-16 22:48:54 +07:00
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
76f215b0fe Getters shouldn't need to be pointer receiver 2015-03-16 16:44:27 +01:00
0dd9ac375b undo 2015-03-16 16:36:58 +01:00
22893b7ac9 removed compile 2015-03-16 16:31:16 +01:00
d338650089 compilable trie (tests fail) 2015-03-16 16:28:16 +01:00
5757f547a6 Allow latest/pending in filter options 2015-03-16 10:38:57 -04:00
20b7162a62 Added functions to Hash & Address
* Set, SetString, SetBytes
* StringTo*, BytesTo*
2015-03-16 13:23:06 +01:00
dc864ee3a5 Added ToString methods 2015-03-16 12:20:17 +01:00
3cf51d5479 tmp 2015-03-16 12:03:52 +01:00
f486c0ae56 new type + additional methods 2015-03-16 11:59:52 +01:00
b523441361 Moved ethutil => common 2015-03-16 11:27:38 +01:00
8139d444f8 Merge remote-tracking branch 'upstream/develop' into frontier/nodeadmin.js 2015-03-16 15:19:09 +07:00
0b8f66ed9e updated godep ethash 2015-03-15 21:47:59 +01:00
22fa59f131 moved to detail 2015-03-15 21:47:35 +01:00
ece5c2aade Merge branch 'frontier/js' into frontier/nodeadmin.js 2015-03-15 22:29:50 +07:00
8393dab470 menubar back to mist main.qml 2015-03-15 22:29:10 +07:00
d2e75cc957 cleaning up unused code 2015-03-15 15:25:09 +01:00
ff86d7d52a Merge branch 'frontier/js' into frontier/nodeadmin.js 2015-03-15 18:43:03 +07:00
7bc40aa963 jsre: remove assetpath using GOPATH from test 2015-03-15 18:42:17 +07:00
c87cc59bdf Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop
Conflicts:
	README.md
2015-03-15 12:20:58 +01:00
8f84ddbbec Linux build links 2015-03-15 12:20:07 +01:00
0f26a62334 Linux build links 2015-03-15 12:19:26 +01:00
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
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
e150832734 p2p: server>discover table Self=Node exported 2015-03-15 13:38:41 +07:00
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
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
31ffca6d8a remove jsre from mist 2015-03-15 13:18:58 +07:00
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
2a5fbced7f removed seed hash 2015-03-14 23:39:45 +01:00
282d8c20fd Merge branch 'fjl-block-tests' into develop 2015-03-14 23:37:37 +01:00
d9966d6158 merge 2015-03-14 23:37:21 +01:00
12cee1377f Increased filter ticker time to 5 minutes 2015-03-14 18:57:12 +01:00
95711bc2dd Updated ethash 2015-03-14 16:42:05 +01:00
387f6bba3e POW fixes 2015-03-14 16:37:57 +01:00
44636e5b82 typo 2015-03-14 13:21:20 +01:00
35bc7b0d8a Merge branch 'rpcfrontier' into develop 2015-03-14 12:44:24 +01:00
532a74f50e Improved errors. Closes #475 2015-03-14 12:43:10 +01:00
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
9754e7aca7 Support for addresses with or without 0x. Fixes #472 2015-03-14 11:40:13 +01:00
991993357c DRY up the use of fromHex and put it in ethutil 2015-03-14 11:39:35 +01:00
f49e17eb39 Return null coinbase when accounts not created
Was previously returning nonsensical “0x”
2015-03-13 14:32:11 -04:00
67f8f83a1b cmd/ethereum: add blocktest command 2015-03-13 18:41:09 +01:00
e463479b6c eth: add ResetWithGenesisBlock
This depends on a change in ethash which exposes UpdateCache.
2015-03-13 18:41:09 +01:00
6f8a2d6b84 eth: add hook for database creation 2015-03-13 18:41:09 +01:00
58d9d98daf cmd/utils: GetEthereum -> MakeEthConfig
This allows changing the config before starting Ethereum
with it.
2015-03-13 18:41:09 +01:00
a80be98f31 tests: add helper functions for block tests 2015-03-13 18:41:09 +01:00
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
b927c29469 GetBlockByNumber now properly looks for a number in the database 2015-03-13 18:29:42 +01:00
fee9aecfb2 more tests for remote update 2015-03-13 17:53:53 +01:00
ccda1aacb4 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-13 17:49:05 +01:00
03403399fc Return proper error 2015-03-13 17:47:11 +01:00
a0266489b4 Make remote dominant 2015-03-13 17:47:00 +01:00
a76d55c83a Merge pull request #467 from ethersphere/frontier/natspec
NatSpec integration
2015-03-13 16:47:16 +01:00
b663e8b29a Merge branch 'rpcfrontier' into develop 2015-03-13 16:36:27 +01:00
f1fcda4f2f Implemented managed state
* Reimplemented nonce management for known accounts.
2015-03-13 16:29:04 +01:00
e3b64d70c2 Rename db_put db_get 2015-03-13 10:56:41 -04:00
d3f96dc720 Consolidate error type switch 2015-03-13 10:03:48 -04:00
0932f84383 Fix eth_newBlockFilter 2015-03-13 10:03:19 -04:00
cda88ce31a Implemented a manage state for keeping track of nonces 2015-03-13 14:37:54 +01:00
aa9f981d5f Bump protocol version 58 2015-03-13 13:52:57 +01:00
e69d5b32e8 Increased genesis gas & gas floor limit to 3141592 2015-03-13 13:52:23 +01:00
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
d4ed66c83d Add web3_clientVersion 2015-03-12 19:20:46 -05:00
094f921e50 Convert to proper errors
Allow returning different JSON RPC error codes depending on error type
2015-03-12 19:07:03 -05:00
80592f244d more obvious failure for ethtest 2015-03-12 23:26:58 +01:00
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
3a88da578f Merge commit '6051345bc9ab8ccf74a49c43342771e0c2cba588' into develop 2015-03-12 22:32:05 +01:00
fa917387e4 Merge branch 'rpcfrontier' into develop 2015-03-12 22:31:13 +01:00
310ca62285 Removed some of that gas pre pay magic 2015-03-12 22:29:10 +01:00
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
2ae90e1eba Merge commit '3ff7a627d1921be0aeacdd8eb2853ba4537487eb' into develop 2015-03-12 20:01:46 +01:00
11390a986a run all test 2015-03-12 19:43:20 +01:00
347cb272be fixed ethtest 2015-03-12 19:41:56 +01:00
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
d1c872bace Merge commit '412e8b0e377bd89fc8fc858bd09c89deee805c1e' into develop 2015-03-12 19:15:12 +01:00
fb71c9f6ee Return 1 on fail 2015-03-12 18:22:56 +01:00
83cc08f670 Changed to big.Int.Not 2015-03-12 18:22:35 +01:00
14bdcd2c05 Fix arg names in tests 2015-03-12 11:50:03 -05:00
7235e84c75 #469 2015-03-12 11:09:25 -05:00
d11fabd2ef Update path to web3 library 2015-03-12 10:08:01 -05:00
f7c3c7eda4 Update ethereum.js
Added to git modules
2015-03-12 10:03:35 -05:00
b97c17f4ee Merge branch 'rpcfrontier' of github.com-obscure:ethereum/go-ethereum into rpcfrontier 2015-03-12 15:59:16 +01:00
2273155e7e Get transaction implemented
* Added a GetTransaction to XEth
* Implemented the `eth_getTransactionByHash` RPC method
2015-03-12 15:59:07 +01:00
b006b67768 Merge branch 'develop' into rpcfrontier 2015-03-12 09:24:34 -05:00
26a5636424 Merge branch 'develop' into rpcfrontier 2015-03-12 14:51:05 +01:00
3b3843e158 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-12 14:50:48 +01:00
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
2a0e5888fd Merge pull request #460 from tgerring/ethutil
Move MakeName to ethutil
2015-03-12 14:45:31 +01:00
4418e4ea6a Should on empty params #466 2015-03-12 08:42:31 -05:00
21fca93852 Output filter ID as hex 2015-03-12 08:20:07 -05:00
4342fe0f22 include new minified natspec with RE fix; fix test for the improved error messages 2015-03-12 19:08:30 +07:00
704914be08 Check for existance of key before delete 2015-03-12 00:01:18 -05:00
31a95151c9 updated rnd vm test => state test 2015-03-12 01:12:28 +01:00
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
96496888ed Merge commit '92c6150199395eea6c9893b631cc990e3ff72a33' into develop 2015-03-12 00:57:28 +01:00
7ee5cb0a81 Merge branch 'develop' into rpcfrontier 2015-03-12 00:26:40 +01:00
9fb52c517b Changed V to byte. Closes #456 2015-03-12 00:18:03 +01:00
6af078bd8c Merge pull request #462 from fjl/miner-coinbase
miner: provide coinbase when starting the miner
2015-03-11 23:56:48 +01:00
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
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
70f6f2af07 shh_uninstallFilter 2015-03-11 15:49:21 -05:00
c2181fdbf2 block&index args unmarshal plus test 2015-03-11 15:26:28 -05:00
5a9f712144 Comment out broken test (return type does not exist) 2015-03-11 14:43:39 -05:00
485e37e889 Move MakeName to ethutil 2015-03-11 14:29:07 -05:00
587f748d92 Merge branch 'fjl-unencrypted-keys' into develop 2015-03-11 17:47:17 +01:00
629f4b1d3c merge 2015-03-11 17:46:58 +01:00
239e17de12 Merge branch 'rpcfrontier' into develop 2015-03-11 17:37:17 +01:00
c01d4c2f4c Lowered default gas price and increased default gas limit 2015-03-11 17:36:35 +01:00
2da7af4ba0 Merge branch 'rpcfrontier' of github.com-obscure:ethereum/go-ethereum into rpcfrontier 2015-03-11 17:00:30 +01:00
e8d1b622d9 Default block number changes 2015-03-11 17:00:20 +01:00
90f34ed40a Rename Topic to Topics 2015-03-11 10:56:44 -05:00
61bf29be36 Check length of timestring before taking slice 2015-03-11 10:43:52 -05:00
08b1154033 Changed logging to use internal logger 2015-03-11 16:36:10 +01:00
477815c044 Improved error reporting and removed commented code 2015-03-11 16:33:39 +01:00
6b63759ded Reverted global 2015-03-11 16:33:04 +01:00
7add66c8bb Use the state to up the balance of the coinbase 2015-03-11 16:32:37 +01:00
9e89c803f1 Get Uncles 2015-03-11 10:27:32 -05:00
53ac85cfd3 BlockHash must be a string 2015-03-11 10:27:24 -05:00
d465e410ef TxIndex -> Index 2015-03-11 10:25:15 -05:00
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
6bca40274f Merge branch 'rpcfrontier' of github.com:ethereum/go-ethereum into rpcfrontier 2015-03-10 22:25:32 -05:00
9ce5229ddf Get transaction via block & index 2015-03-10 22:25:07 -05:00
ece29c5d8d Nil check block 2015-03-10 19:34:07 -05:00
074ee19fe5 Merge branch 'develop' into rpcfrontier 2015-03-11 01:11:20 +01:00
64933321fb Merge branch 'rpcfrontier' of github.com-obscure:ethereum/go-ethereum into rpcfrontier 2015-03-11 01:10:58 +01:00
58909117be Use ECDSA instead of elliptic 2015-03-11 01:10:25 +01:00
499f816e30 Output hex should be prepended with 0x 2015-03-10 19:10:02 -05:00
7e0ccc9de5 Merge branch 'develop' into rpcfrontier
Conflicts:
	rpc/api.go
	rpc/args.go
2015-03-11 01:08:42 +01:00
fda4d02f94 Left-pad odd length hex inputs and tests 2015-03-10 18:08:31 -05:00
eba4f389a6 don't log whisper start ups 2015-03-10 22:43:07 +01:00
7d77a2ffc3 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-10 22:42:24 +01:00
73171d18b9 Merge pull request #447 from fjl/accounts-integration
Accounts integration
2015-03-10 22:42:03 +01:00
eb1b4c8ffe Merge branch 'fjl-accounts-integration' into develop 2015-03-10 20:37:23 +01:00
ce595b9266 fallback 2015-03-10 20:28:20 +01:00
35841e5190 id to hex 2015-03-10 20:16:53 +01:00
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
f22684439a Updated RPC
* Added a generic RawMessage deserialiser
* Updated ethereum.js
* Updated coin test app
2015-03-10 20:14:38 +01:00
3d6519e45b Update response types 2015-03-10 12:52:45 -05:00
617804c327 Merge branch 'rpcfrontier' of github.com:ethereum/go-ethereum into rpcfrontier 2015-03-10 12:50:13 -05:00
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
972e2c1e31 cmd/utils: improve CLI help templates
Help for a specific command now shows available subcommands.
2015-03-10 16:44:48 +01:00
221fae4112 cmd/ethereum: show some help before prompting for encryption passphrase 2015-03-10 16:44:22 +01:00
2407f006ad Godeps: bump github.com/codegangsta/cli 2015-03-10 16:41:33 +01:00
0bb7377ebe cmd/ethereum: show more helpful message if no accounts exist 2015-03-10 15:44:05 +01:00
9d4e1e8f8b eth: return account errors directly 2015-03-10 15:42:58 +01:00
c3f94a4341 cmd/utils: remove extra space in fatal error message 2015-03-10 15:42:25 +01:00
4ba7871374 accounts: return ErrNoKeys if key directory does not exist 2015-03-10 15:41:08 +01:00
0f67f1e9de xeth: fix signing transaction after unlock 2015-03-10 14:55:00 +01:00
0395c174ca cmd/ethereum: fix line editing setup and history 2015-03-10 14:31:54 +01:00
bbe8b18660 Added unmarshalState 2015-03-10 13:40:49 +01:00
53f8f29744 Merge branch 'develop' into rpcfrontier 2015-03-10 12:39:59 +01:00
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
56524d13b5 removed debugger 2015-03-10 12:06:16 +01:00
b87442a9f7 Fixed error message. Closes #448 2015-03-10 11:29:22 +01:00
c0a8e3cd34 Merge branch 'poc-9' into develop 2015-03-10 11:25:32 +01:00
c9b6d268b4 Merge pull request #438 from ethersphere/poc9/cli
Poc9/cli (exportchain)
2015-03-10 11:24:47 +01:00
08d396fdba Merge pull request #437 from ethersphere/poc9/natspec
[WIP] Poc9/natspec
2015-03-10 11:24:30 +01:00
05c9351659 Merge branch 'accounts-integration' of https://github.com/fjl/go-ethereum into fjl-accounts-integration 2015-03-10 11:04:11 +01:00
80985f97da cmd/evm, core, ethdb, state, tests/helper: remove ReadConfig calls 2015-03-10 02:39:53 +01:00
3de51f76ee Allow integers for BlockNumber
If parsing fails, fall back to hex decoding
2015-03-09 20:38:37 -05:00
e6118f2d79 state: fix tests 2015-03-10 02:35:21 +01:00
9b3ae1fdb7 eth: fix tests 2015-03-10 02:34:52 +01:00
ae38871a54 cmd/ethereum: remove "prompter" in identifiers 2015-03-10 02:33:59 +01:00
62ebce304e crypto: delete old key management stuff 2015-03-10 02:12:55 +01:00
9f0e3bd286 cmd/ethereum: unlock accounts on JS REPL 2015-03-10 02:00:57 +01:00
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
0db4a0e898 Merge branch 'poc-9' into develop 2015-03-10 01:22:38 +01:00
0d64163fea Right pad zeros. Closes #446 2015-03-10 01:13:06 +01:00
9007f2bbdc reworked stack 2015-03-10 00:25:27 +01:00
d1e04f7388 cmd/ethereum: allow multiple js files 2015-03-10 00:24:11 +01:00
487f68ec48 accounts: add {Timed,}Unlock, remove SignLocked 2015-03-10 00:19:01 +01:00
0795fd2701 wip 2015-03-09 23:34:31 +01:00
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
cd51860bf0 cmd/utils: delete InitConfig, KeyTasks 2015-03-09 23:08:47 +01:00
697f6748b8 cmd/mist: use cli library and package accounts 2015-03-09 23:08:47 +01:00
c2e5dacf55 accounts: add Manager.HasAccount, delete Manager.Default 2015-03-09 23:08:46 +01:00
63758db379 eth: delete unused RpcServer field 2015-03-09 23:08:46 +01:00
6a7e02fc9f rpc/http: delete package 2015-03-09 23:08:46 +01:00
a11f1d6a7e rpc: add dataDir parameter and JSON-RPC handler 2015-03-09 23:08:46 +01:00
73d1ebe244 cmd/utils: add NewApp 2015-03-09 23:08:46 +01:00
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
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
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
a7538d0020 merge 2015-03-09 18:19:35 +01:00
27c42ea934 Add empty total difficulty to test blocks and clean up stopping the node 2015-03-09 18:03:35 +01:00
8560004f38 wip 2015-03-09 17:55:01 +01:00
676a0de58d Max size JSON data. Closes #418 2015-03-09 17:28:12 +01:00
9723191b19 Undo client_version changes 2015-03-09 11:04:38 -05:00
fb23a0cfe0 Remove support for compiling serpent 2015-03-09 10:55:18 -05:00
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
738d6e20f2 Added ui.Interface to xeth 2015-03-09 13:49:14 +01:00
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
21fd722abc Merge commit '3deb470b2d07d28040a381722022cdf8867a829a' into poc-9 2015-03-09 11:43:46 +01:00
19efebe91e Updated tests and fixed suicide 2015-03-09 11:28:35 +01:00
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
93cdffca3a Merge commit 'c1cafb56d5da57a44f1d766c5299f11664b93921' into poc-9 2015-03-09 01:02:12 +01:00
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
51eed7964e add export blockchain subcommand, remove BlockDo 2015-03-08 22:44:48 +07:00
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
30584c7cfb Merge commit 'e2c75b0fa17394553b93fe7ddd62c0f6a6441119' into poc-9 2015-03-08 15:29:27 +01:00
5dfc67efbd ignore 2015-03-08 15:29:23 +01:00
0743d68d4c rename constructor New 2015-03-08 20:17:20 +07:00
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
6684ef201a accounts: don't store address in unlocked and add commentary
This was suggested during review.
2015-03-08 02:47:05 +01:00
fb53a9362e accounts: AccountManager -> Manager 2015-03-08 01:58:35 +01:00
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
f6df3740a8 ignore 2015-03-08 01:31:19 +01:00
07955b3041 merge 2015-03-08 01:09:34 +01:00
405c0ca4b0 removed 2015-03-08 01:06:59 +01:00
e189758d55 Merge branch 'poc-9' of github.com-obscure:ethereum/go-ethereum into poc-9 2015-03-08 01:02:46 +01:00
8ea0444655 updated ethash 2015-03-08 01:02:39 +01:00
69920c735a Bump v 2015-03-08 00:59:26 +01:00
e26ebc3110 Updated ethereum.js 2015-03-08 00:54:18 +01:00
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
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
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
fca652eeea Fix logger import path 2015-03-07 10:48:38 -06:00
70cbfb199d Added deploy scripts from go-build 2015-03-07 13:16:13 +01:00
a2810c06d7 cmd/ethereum: add account commands 2015-03-07 12:39:52 +01:00
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
c27c2be584 Merge pull request #435 from zsfelfoldi/poc-9
Natspec + test
2015-03-06 20:11:43 +01:00
22b493a6ff Fixed tests 2015-03-06 20:10:59 +01:00
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
cd856cb213 Separated block db from state db. Partial fix for #416 2015-03-06 18:26:16 +01:00
ed84b58af5 Debug option for VM & command line flag 2015-03-06 16:58:52 +01:00
dc7022cd61 Increased args test coverage 2015-03-06 09:54:08 -06:00
548e104171 Merge branch 'poc-9' of github.com-obscure:ethereum/go-ethereum into poc-9 2015-03-06 16:40:21 +01:00
8d9be18b29 Queued approach to delivering chain events 2015-03-06 15:50:44 +01:00
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
e64f727529 Merge pull request #433 from fjl/newcli
Improved CLI
2015-03-06 14:02:16 +01:00
a91bf01429 Merge pull request #434 from fjl/poc-9
Godeps: bump github.com/ethereum/ethash
2015-03-06 13:31:41 +01:00
71e510540e Godeps: bump github.com/ethereum/ethash
This fixes the build.
2015-03-06 12:28:00 +00:00
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
b72ca57775 Merge branch 'ethersphere-blockpool3' into poc-9 2015-03-06 12:10:23 +01:00
2393de5d6b Godeps: add github.com/peterh/liner 2015-03-06 10:39:31 +01:00
23ad2f02c0 debug comments & pow handling 2015-03-06 10:22:40 +01:00
5da3d911cf Initial args tests 2015-03-06 00:03:22 -06:00
18b076861e Add web3_sha3 test 2015-03-05 22:41:55 -06:00
03dc760ca0 Tidy 2015-03-05 21:48:03 -06:00
ef9d825cfa Refactor & cleanup 2015-03-05 21:37:45 -06:00
38f6d60e6e cmd/ethereum: new JS repl with cross-platform line editing 2015-03-06 03:57:13 +01:00
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
b67ded9f27 Natspec + test 2015-03-06 03:43:34 +01:00
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
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
5f4a6069c5 Merge branch 'blockpool3' of https://github.com/ethersphere/go-ethereum into ethersphere-blockpool3 2015-03-05 21:53:42 +01:00
94e543bc39 Merge pull request #431 from tgerring/jsonlogs
Structured logging updates
2015-03-05 14:32:41 -06:00
580d09084d Merge branch 'ethersphere-blockpool2' into poc-9 2015-03-05 20:38:36 +01:00
e089478a1c Merge branch 'blockpool2' of https://github.com/ethersphere/go-ethereum into ethersphere-blockpool2 2015-03-05 20:38:19 +01:00
88ff13c241 Spec changes.
* All errors during state transition result in an invalid tx
2015-03-05 19:51:25 +01:00
9067b2848a fix wonky head section loop; correct status counts 2015-03-06 01:33:57 +07:00
9f5e9eb38d Resolve storage/storageat 2015-03-05 12:26:21 -06:00
a6599404e4 Revert to hex response 2015-03-05 11:14:47 -06:00
0d8d51084f Final name changes 2015-03-05 11:07:05 -06:00
5948adfa10 Added eth.chain.received.new_block 2015-03-05 10:58:36 -06:00
fbb307cca0 Added eth.chain.new_head 2015-03-05 10:58:13 -06:00
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
ca1093f848 Merge commit '4e8a9a1cd4a10370fc4a888af0fb2def6f1b961b' into poc-9 2015-03-05 17:51:26 +01:00
a7181bd304 merge 2015-03-05 17:49:29 +01:00
76e4e233ad Merge branch 'poc-9' of github.com-obscure:ethereum/go-ethereum into poc-9 2015-03-05 17:48:46 +01:00
f01d745d70 Merge pull request #429 from chfast/pr/fix_vm_tests
Fix VM tests
2015-03-05 17:46:57 +01:00
d44fe4ec62 Merge branch 'develop' into poc-9 2015-03-05 17:46:40 +01:00
72bf02bf15 Merge branch 'tendermint-develop_pull_request' into develop 2015-03-05 17:46:11 +01:00
357d17ae58 Start at 0 2015-03-05 17:46:00 +01:00
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
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
377c8a13de Merge branch 'develop' into poc-9 2015-03-05 17:37:18 +01:00
201b09f99a Merge branch 'alexvandesande-ui' into develop 2015-03-05 17:37:09 +01:00
44b83c6ea6 Removed unused variables 2015-03-05 17:37:00 +01:00
12ca70537f Merge branch 'fjl-p2p-handshake-2' into poc-9 2015-03-05 17:26:41 +01:00
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
fabaf4f1f0 wip math 2015-03-05 17:21:16 +01:00
90ceb5218c Update RPC methods
Re-order to match spec and explicitly list unimplemented methods
2015-03-05 08:58:46 -06:00
9329e175d8 fix wonky head section loop; correct status counts 2015-03-05 20:38:23 +07:00
0af08eca1f Fix VM tests not checked 2015-03-05 14:35:27 +01:00
45afbe5d9c Merge remote-tracking branch 'upstream/poc-9' into blockpool3 2015-03-05 16:55:11 +07:00
c47866d251 Miner fixes and updates (including miner) 2015-03-05 09:14:58 +01:00
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
1576551741 Output 0x0 instead of 0x 2015-03-04 14:13:31 -06:00
178798ef87 network back to local files 2015-03-04 16:31:48 -03:00
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
671e38fb65 Fixed Average Return calculation 2015-03-04 15:13:57 -03:00
e1bae3771e updated network app to latest build 2015-03-04 12:59:17 -03:00
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
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
22659a7fea p2p: restore read/write timeouts
They got lost in the transition to rlpxFrameRW.
2015-03-04 16:42:00 +01:00
9b0f00baf3 Output net_peerCount as hex 2015-03-04 08:41:13 -06:00
93141f4b6d Return block number as hex 2015-03-04 08:27:34 -06:00
c3deafabda Update NewTXArgs to accept hex 2015-03-04 08:22:59 -06:00
c92e48ce3f Add client_version RPC message 2015-03-04 07:54:10 -06:00
5f25c117eb Merge branch 'develop' into ui 2015-03-04 10:04:07 -03:00
cf880f78d5 network dashboard is now a local file 2015-03-04 10:02:11 -03:00
6e7e5d5fd5 eth, whisper: fix msg.Payload reads 2015-03-04 13:25:01 +01:00
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
21649100b1 p2p: verify protocol handshake node ID 2015-03-04 12:27:24 +01:00
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
2c505efd1e p2p/discover: add NodeID.Pubkey 2015-03-04 12:27:24 +01:00
d344054e5a p2p: make RLPx frame MAC 16 bytes as defined in the spec 2015-03-04 12:27:24 +01:00
d084aed5e9 p2p: delete frameRW 2015-03-04 12:27:24 +01:00
736e632215 p2p: use RLPx frames for messaging 2015-03-04 12:27:23 +01:00
51e01cceca p2p: encrypted and authenticated RLPx frame I/O 2015-03-04 12:27:23 +01:00
936dd0f3bc p2p: add basic RLPx frame I/O 2015-03-04 12:27:23 +01:00
15f491e500 Clean up REPL 2015-03-04 12:18:26 +01:00
5817dab89e Merge branch 'develop' into poc-9 2015-03-04 10:51:44 +01:00
a56243075a removed double flag. Closes #421 2015-03-04 10:51:17 +01:00
84a4f761f3 uncle validation 2015-03-04 10:49:56 +01:00
d4d505c868 Fixed genesis 2015-03-03 21:48:05 +01:00
08fd0715f9 updated genesis 2015-03-03 21:09:29 +01:00
26de12d9bf Changed nonce to a uint64 2015-03-03 21:04:31 +01:00
2b3c55f20d Merge pull request #413 from chfast/pr/jit_build_fixes
JIT build fixes
2015-03-03 20:39:51 +01:00
e9f1e868e2 Merge branch 'develop' into poc-9 2015-03-03 20:38:46 +01:00
827ea43478 removed all old filters 2015-03-03 20:38:28 +01:00
bb152612e0 Merge branch 'develop' into poc-9
Conflicts:
	cmd/utils/cmd.go
2015-03-03 20:34:48 +01:00
cfe3af099c Merge branch 'ethersphere-jsonlogs' into poc-9 2015-03-03 20:31:12 +01:00
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
2707891966 Merge branch 'ethersphere-blockpool2' into poc-9 2015-03-03 20:27:15 +01:00
d8a68dc0f1 Merge branch 'blockpool2' of https://github.com/ethersphere/go-ethereum into ethersphere-blockpool2 2015-03-03 20:26:59 +01:00
253eb778d1 Merge pull request #411 from ethersphere/readme
[WIP] Update Readme
2015-03-03 20:17:51 +01:00
988391fc37 Merge pull request #409 from tgerring/jsonlogs
Updated JSON log events
2015-03-03 20:16:55 +01:00
b1603f166e Merge pull request #408 from tgerring/removews
Remove Websockets RPC transport
2015-03-03 20:16:16 +01:00
8e995b97cc Fixes and debug added 2015-03-03 20:13:11 +01:00
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
8c2940a98b updating to new network health page 2015-03-03 15:00:34 -03:00
40ff3cac39 merge 2015-03-03 17:56:36 +01:00
53b5a45856 Merge branch 'xcthulhu-publictests' into poc-9 2015-03-03 17:55:29 +01:00
313fe3861b fixed pow stuff 2015-03-03 17:55:23 +01:00
22b132e28f Merge branch 'publictests' of https://github.com/xcthulhu/go-ethereum into xcthulhu-publictests 2015-03-03 17:20:34 +01:00
b0aaa77f02 changed message 2015-03-03 17:20:10 +01:00
ee0a1bec6c GasLimit check updated 2015-03-03 17:05:51 +01:00
c74c07eed1 Fixed error for invalid transaction 2015-03-03 16:20:38 +01:00
6518da7c01 Merge commit 'a6e04ab05150d1b5aa4adb297f3e5146b1559b02' into poc-9 2015-03-03 15:39:34 +01:00
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
651b2158ba Merge commit '42a210b571b9358df16da148d9724c2ef9abbca5' into poc-9 2015-03-03 15:16:52 +01:00
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
9f359dfffa Merge commit 'd9d40888ce9498b25925ccbf1447b1f62597aa2f' into poc-9 2015-03-03 13:56:59 +01:00
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
2a50931684 Merge commit '0867e4fae96c0b0d234f1710119a129f8b0d96f7' into poc-9 2015-03-03 13:29:59 +01:00
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
fa831206c6 Updated gast costs 2015-03-03 13:29:52 +01:00
e72173dc43 Fix JitVm build 2015-03-03 12:31:26 +01:00
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
ffa6b99ab6 Merge commit '4659b51b50394c596f0548eb53390c80ba96e392' into poc-9 2015-03-03 12:31:09 +01:00
524bf9e858 wup 2015-03-03 12:30:57 +01:00
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
e73d7725df Merge commit 'b7ec9fbb0e49e345a8a2566226a76d50b48266a7' into poc-9 2015-03-03 12:26:24 +01:00
b909a5ec18 Trie => SecureTrie 2015-03-03 12:25:44 +01:00
1650b59cd9 Delet => Delete 2015-03-03 12:21:27 +01:00
bf5365b317 Delet => Delete 2015-03-03 12:15:58 +01:00
ba0a758d8c Quad mem & log changes 2015-03-03 11:56:43 +01:00
49da6a8d80 Fixed test helper 2015-03-03 11:56:28 +01:00
34ee5ab9a8 Bloom expanded by 4 2015-03-03 11:56:12 +01:00
fa910966ed Redone rlp 2015-03-03 11:18:50 +01:00
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
2f647c443a Merge commit 'd0354b844028220b31f55c2cdbe9d4cc546d4b52' into poc-9 2015-03-03 11:11:24 +01:00
c1ef19bef9 quad mem 2015-03-03 11:11:11 +01:00
6c2856df23 add eth.chain.new_head log to core/chain_manager 2015-03-03 15:44:41 +07:00
fc47f0f27b add eth.chain.received.new_block log to eth protocol 2015-03-03 15:43:05 +07:00
76af536d0d block number is *big.Int, remoteID is string 2015-03-03 15:37:20 +07:00
34be795bc1 Merge remote-tracking branch 'tgerring/jsonlogs' into jsonlogs 2015-03-03 13:52:20 +07:00
7e224b6834 db name database -> blockchain in backend error message 2015-03-03 13:22:19 +07:00
de9f79133f Introducing ethash 2015-03-02 22:29:34 -05:00
080823bdee Only one uncle 2015-03-02 18:56:11 -05:00
21c373b55d Network Health Panel with mining 2015-03-02 18:39:07 -03:00
47278a6e4e log when added peer is behind (hash found in blockchain) 2015-03-03 03:39:21 +07:00
e7b33e9ae7 Move p2p.MakeName to ethutil.MakeVersion 2015-03-02 13:21:57 -06:00
af6971f823 Merge remote-tracking branch 'upstream/develop' into blockpool2 2015-03-03 02:13:41 +07:00
2dc1b7282a remove threatening coding standards section from README 2015-03-03 01:51:00 +07:00
1d8a427753 remove obsolete install script 2015-03-03 01:46:25 +07:00
deb2e50296 minor cleanup 2015-03-03 01:45:50 +07:00
c1bae04203 update README
- TLDR for godep install
- update executable section
- cleanup
- add several links to wiki
2015-03-03 01:44:29 +07:00
24003c76d1 Merge remote-tracking branch 'upstream/develop' into evmjit 2015-03-02 18:46:55 +01:00
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
9c6d9dfc5c Add required block number 2015-03-02 18:43:01 +01:00
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
fe7ab662f0 Merge commit '41c9dc973d2dc8614db6c1e3dbb2ec5564935368' into poc-9 2015-03-02 18:00:10 +01:00
200f66537c updated tests 2015-03-02 17:55:45 +01:00
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
fb2488235a Remove defunct calls 2015-03-02 09:36:48 -06:00
4f3f881c9b removed tests 2015-03-02 16:36:34 +01:00
540c79e6ad Rename "net" methods 2015-03-02 09:36:14 -06:00
b13735b400 updated tests 2015-03-02 16:34:03 +01:00
b383ff0b96 New gas prices model 2015-03-02 16:32:02 +01:00
ce7204fa17 rm failing tests 2015-03-02 16:20:38 +01:00
d9ea240122 rm failing random tests 2015-03-02 15:59:39 +01:00
67f3f4c1d8 vmGasCostchanges 2015-03-02 15:50:12 +01:00
a75af474f7 Fix logger import in tests 2015-03-02 08:27:26 -06:00
e31ec57f88 Add event eth.tx.received 2015-03-02 08:17:09 -06:00
0976c3024f Don't import logger as ethlogger 2015-03-02 08:15:28 -06:00
cb868a604c add secure trie tests 2015-03-02 14:32:29 +01:00
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
bc1d97b2a7 refine memory stress test 2015-03-02 11:45:29 +01:00
6e50a1e9f5 Filter accepts multiple topics per entry. Fixes #403 2015-03-01 19:08:26 +01:00
ac88ae86a3 GetOrNew for accessors. Fixes #404 2015-03-01 19:07:38 +01:00
cfe0370280 Remove Websockets RPC transport 2015-03-01 16:19:06 +01:00
60a2704b04 Implement eth.miner.new_block event 2015-03-01 16:09:59 +01:00
65cad14f9b Report debug hash rate 2015-02-28 23:09:49 +01:00
fdf939a6f9 Fixed miner threads for ethereum CLI 2015-02-28 23:01:41 +01:00
2dbdcf3636 move extrem memory test to stMemoryStressTest.json 2015-02-28 22:03:38 +01:00
5375dd6756 Merge pull request #69 from winsvega/develop
Fork block tests
2015-02-28 21:19:48 +01:00
cdb77f0ecd Merge pull request #402 from tgerring/rpcupdates
Set RPC listening address via param
2015-02-28 21:07:46 +01:00
43b5777709 Merge pull request #398 from tgerring/assetpath
Check source directory for assets as last resort
2015-02-28 21:06:57 +01:00
35f53abc78 more memmory hard quadratic complexity tests 2015-02-28 20:57:55 +01:00
73c52d1677 Merge branch 'ethersphere-blockpool2' into poc-9 2015-02-28 20:52:57 +01:00
ae45a39dc1 Secure trie 2015-02-28 20:52:29 +01:00
7ab13e0f17 Unused variable 2015-02-28 20:24:20 +01:00
6c0b194382 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-28 20:14:10 +01:00
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
6ea7aae29c Removed some methods from the JS REPL 2015-02-28 19:15:57 +01:00
11fbc41e4b Fork block tests 2015-02-28 20:54:09 +03:00
ba1f4bbe91 Exposing stuff for ethash 2015-02-27 20:56:24 -05:00
ea0517b539 Report RPC listening address in logs 2015-02-28 01:04:54 +01:00
f6e821fd33 Add flag to set RPC port 2015-02-28 01:00:42 +01:00
3820a65299 Merge branch 'publictests' of github.com:ebuchman/go-ethereum into ethash_pow 2015-02-27 16:13:31 -05:00
0efd6a881a public functions for making chains on the fly 2015-02-27 16:05:03 -05:00
8653db6df0 Introducign MixDigest and SeedHash 2015-02-27 15:59:33 -05:00
cb8d0fa874 more jump tests 2015-02-27 14:16:25 +01:00
fc3c7760a5 add more addmod mulmod overflow tests 2015-02-27 13:28:44 +01:00
b6155375ae add refund tests with CALL 2015-02-27 12:41:58 +01:00
ad3a21f260 Bump to latest versions for Docker 2015-02-27 00:52:01 +01:00
5a827417d9 Merge branch 'develop' of https://github.com/ethereum/go-ethereum into develop 2015-02-26 17:54:57 -05:00
a39c73672e bump last resort check out of ifelse 2015-02-26 21:04:26 +01:00
d90b71bc55 Check source directroy for assets as last resort 2015-02-26 21:01:40 +01:00
cc5c8a444d Report proper database directory. Closes #397 2015-02-26 20:36:54 +01:00
3a7c8d7ae4 Merge branch 'hotfix/0.8.5-2' into develop 2015-02-26 20:27:16 +01:00
0fd6a22a86 Merge branch 'hotfix/0.8.5-2' 2015-02-26 20:26:49 +01:00
3ab05ddd25 Bump 2015-02-26 20:26:37 +01:00
76f6d75ef8 Merge branch 'master' into hotfix/0.8.5-2 2015-02-26 20:21:41 +01:00
fa7deb10f6 Merge branch 'develop' 2015-02-26 20:21:16 +01:00
e235b57234 Fixed consensus issue for refunding
* Refund should _always_ go to the origin
2015-02-26 20:08:35 +01:00
c18ea4de14 Merge branch 'blockpool2' of https://github.com/ethersphere/go-ethereum into ethersphere-blockpool2 2015-02-26 18:39:38 +01:00
37e6870f64 wip 2015-02-26 18:39:05 +01:00
a622eccecb more mem tests - calldatacopy and return 2015-02-26 17:33:34 +01:00
a3b3d19d80 adjust test for new mem rule 2015-02-26 14:22:16 +01:00
d09cbfcf84 update to new quadratic memory cost rule 2015-02-26 13:52:05 +01:00
88913ec89b Merge remote-tracking branch 'origin' into develop 2015-02-26 12:38:57 +01:00
8058f2fdf0 low limit for difficulty is 1024 2015-02-26 12:38:32 +01:00
48276be277 Merge pull request #68 from winsvega/develop
Transaction WrongRLP tests
2015-02-26 12:26:59 +01:00
1e07358ac2 Transaction WrongRLP tests
more rlps with first zeros
2015-02-26 14:25:13 +03:00
a1c830cd3c Defautl block 2015-02-26 12:06:10 +01:00
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
5ab0eaa06d wip 2015-02-26 11:14:54 +01:00
9884eed0cf Merge pull request #392 from tgerring/rpcdefaultblock
Stub defaultBlock RPC methods
2015-02-26 11:14:33 +01:00
5b202a158a Merge pull request #391 from tgerring/osext
Cleanup DefaultAssetPath
2015-02-26 10:59:07 +01:00
a0cfe0d123 tests for mem at 32,64 KB +- 1, 31,32,33 for mstore and mstore8 2015-02-26 08:46:13 +01:00
57cea0c623 Update godeps 2015-02-26 02:48:55 +01:00
739b7cc2ac Cleanup imports 2015-02-26 02:36:06 +01:00
d5aed82b11 DRY DefaultAssetPath() 2015-02-26 02:32:27 +01:00
8eeab7ea3f Update osext import path 2015-02-26 02:24:20 +01:00
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
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
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
23f2658091 Remove unneeded initialisation of mutex 2015-02-25 19:30:57 +01:00
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
a431c4a665 Merge pull request #67 from winsvega/develop
Transaction RLP Tests
2015-02-25 18:26:21 +01:00
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
667cafc13e Transaction RLP Tests
wrong transaction RLPs correction
2015-02-25 19:28:22 +03:00
9f3cee021e Merge pull request #66 from winsvega/develop
Block Tests
2015-02-25 15:44:19 +01:00
6016b942d6 Block Tests
Encoded transaction comment
2015-02-25 17:37:25 +03:00
afb72dc795 Block Tests
Block Rlps with invalid transactions
2015-02-25 16:53:57 +03:00
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
cdc86965cb export Sendln/Sendf in logger 2015-02-25 20:04:51 +07:00
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
d46c7bcaf9 errs pkg for error code based errors 2015-02-25 19:21:59 +07:00
cfb120d179 more Pawel tests 2015-02-25 13:08:47 +01:00
fe73023940 Merge pull request #382 from ethereum/travis
Update Go and Qt versions in Travis
2015-02-25 13:00:35 +01:00
86b14058fd add memory tests 2015-02-25 12:50:24 +01:00
ce2b2422d6 Update Go and Qt versions 2015-02-25 11:40:52 +01:00
9e0ab22dd0 Stub defaultBlock methods 2015-02-25 09:57:49 +01:00
978a29ab72 use 50000 bytes for CALLDATACOPY 2015-02-24 23:05:39 +01:00
36e862c989 add Pawels tests 2015-02-24 22:48:19 +01:00
33c8c2bd7e add quadratic complexity tests 2015-02-24 22:46:56 +01:00
52ccaa605e Merge pull request #379 from tgerring/rpcupdates
RPC cleanup
2015-02-24 22:00:39 +01:00
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
2e3a6e2559 Consolidate related items 2015-02-24 19:54:18 +01:00
c8e9abff53 Remove errParseRequest 2015-02-24 19:22:08 +01:00
43acad81b3 Rename files 2015-02-24 19:11:01 +01:00
21becb0feb Cleanup RPC packcage 2015-02-24 19:05:03 +01:00
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
5a43173e55 Merge pull request #373 from tgerring/issue370
Convert gas values to integers
2015-02-24 17:49:14 +01:00
1e919a5e97 Move amounts to global vars 2015-02-24 17:32:11 +01:00
91a8c08f03 Merge pull request #368 from maran/feature/changeDataDir
Implement OS sensitive dataDirs
2015-02-24 17:30:44 +01:00
0b757ad12f Merge pull request #369 from tgerring/issue367
Allow zero and negative block numbers
2015-02-24 17:29:08 +01:00
0adff214c3 Merge pull request #376 from frozeman/topicsFix
topics fix
2015-02-24 17:27:14 +01:00
2a7ca69a82 Fix duplicate leading 0x 2015-02-24 16:46:43 +01:00
3fcdafebc2 topics fix 2015-02-24 16:18:27 +01:00
85f765a533 Merge remote-tracking branch 'upstream/develop' into evmjit 2015-02-24 11:27:22 +01:00
e8c84bdf56 Merge remote-tracking branch 'origin/develop' into develop 2015-02-24 10:15:10 +01:00
e48576ada3 remove impossible tests, add create hash collision test 2015-02-24 10:14:36 +01:00
4142708d9d Convert gas values to integers
Fixes #370
2015-02-24 08:51:58 +01:00
6e2d856d85 spelling error 2015-02-24 01:52:33 -05:00
9315ad3d2c spelling error 2015-02-24 01:46:06 -05:00
13b4ab10ae added genesis info 2015-02-24 01:36:54 -05:00
c72e2588f3 Update crypto.json 2015-02-23 18:40:06 -05:00
7c510109cd skipping test 2015-02-23 20:27:00 +01:00
359677b673 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-23 19:25:59 +01:00
747647e02a Merge branch 'master' into develop 2015-02-23 19:25:50 +01:00
0b57bad2de removed log 2015-02-23 19:25:41 +01:00
114c3b4efe Merge remote-tracking branch 'upstream/develop' into evmjit 2015-02-23 18:39:05 +01:00
e4f44139a1 Merge pull request #65 from romanman/develop
Introduce cryptography testing
2015-02-23 16:25:06 +01:00
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
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
dea6584018 Merge branch 'develop' into ui 2015-02-23 09:05:15 -03:00
bb3338df63 changes to sidebar sizes 2015-02-23 08:52:50 -03:00
6fd894aae0 Allow zero and negative block numbers
0 is genesis block. Xeth recognises -1 as current
2015-02-23 11:54:23 +01:00
cb52754e6c Merge remote-tracking branch 'origin/develop' into develop 2015-02-23 11:31:29 +01:00
40adb7feb6 Implement OS sensitive dataDirs 2015-02-23 11:28:20 +01:00
48606e05c1 fix transaction tests 2015-02-23 11:28:06 +01:00
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
94f1ca2e09 Format clean up 2015-02-22 14:10:28 -05:00
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
20aa6dde06 Merge branch 'develop' 2015-02-22 13:28:24 +01:00
eec4345a7c Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-22 13:27:57 +01:00
59a86d3171 Merge pull request #359 from fjl/p2p-identity
Persistent Node Key
2015-02-22 13:27:53 +01:00
98202e626c Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-22 13:27:13 +01:00
1be7e5048c Merge branch 'release/0.8.5' into develop 2015-02-22 13:27:03 +01:00
168ab2b065 consistent values please 2015-02-21 17:33:44 -05:00
b131b37451 added unpaded R value test 2015-02-21 14:43:06 -05:00
8620dc05de Merge pull request #364 from ethereum/travis
Don't print per-function testing results
2015-02-21 13:59:34 +01:00
d8f7cb2f55 Don't print per-function testing results 2015-02-21 13:48:09 +01:00
fd3793b8cf Correct stack size validation for MUL, CALLDATACOPY, EXTCODESIZE, BLOCKHASH 2015-02-21 05:34:02 +01:00
18216a6e33 undo gasMemCostChange, add some state tests 2015-02-20 20:50:32 +01:00
e968928613 eth: persist node key between sessions (#304) 2015-02-20 15:26:50 +01:00
e282ad25a8 eth: add poc-8.ethdev.com as second default bootstrap node 2015-02-20 15:24:43 +01:00
b392afac3c memGasCost checks 2015-02-20 15:05:11 +01:00
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
9446489cf3 core: chain manager forking tests 2015-02-17 22:02:15 -05:00
2ba65f4fba Merge branch 'develop' of https://github.com/ethereum/go-ethereum into develop 2015-02-17 19:25:18 -05:00
7ec1b7e90a Merge remote-tracking branch 'origin/develop' into develop 2015-02-16 20:20:50 +01:00
a8c4de17da python fail 2015-02-16 20:20:15 +01:00
4b81a98e4a Merge pull request #60 from winsvega/develop
ttWrongRLPTransaction
2015-02-16 20:11:33 +03:00
beff83ecd2 Merge branch 'develop' of https://github.com/ethereum/tests into develop 2015-02-16 20:09:49 +03:00
5797752572 new transaction wrong rlp test 2015-02-16 20:08:44 +03:00
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
5718f96934 cppjit fails 2015-02-16 15:56:10 +01:00
ea509a6d72 more performance tests 2015-02-16 15:47:52 +01:00
dda2eb84f7 add creation txs in block tests 2015-02-16 13:02:57 +01:00
957f334012 more transaction tests 2015-02-16 13:00:21 +01:00
94af56789a first block tests 2015-02-16 12:59:44 +01:00
4ee0f90b46 Merge pull request #59 from winsvega/develop
new solidity tests, manual altered transaction tests
2015-02-13 12:47:02 +01:00
ddc830be5c new tests
solidity test
wrong transaction rlp (manual)
2015-02-13 14:20:47 +03:00
4e3377333f Merge remote-tracking branch 'origin/develop' into develop 2015-02-13 09:10:27 +01:00
a681d1ec02 performance test 2015-02-13 09:09:11 +01:00
1000b02b18 bump 2015-02-12 00:56:22 -05:00
d0a2eca19b add more transaction tests 2015-02-11 09:00:25 +01:00
ec8404c375 Merge remote-tracking branch 'origin/develop' into develop 2015-02-11 08:40:42 +01:00
766ee65328 cppjit fails 2015-02-11 08:39:55 +01:00
bf2abc3b68 Update ttTransactionTest.json 2015-02-10 21:04:04 -05:00
5a89c6f803 Update ttTransactionTest.json
updated signature
2015-02-10 20:53:43 -05:00
74e1320a0b Update ttTransactionTest.json
updated RLP
2015-02-10 20:36:27 -05:00
eaec21f199 Update ttTransactionTest.json 2015-02-10 20:29:08 -05:00
d1a31850ce added transaction tests to index.js 2015-02-10 14:38:48 -05:00
cf002a4611 undo changed due to memory gas cost rule 2015-02-10 11:22:50 +01:00
be4f40741f cppjit fail 2015-02-10 10:43:36 +01:00
348d3af0fc more memory cost tests 2015-02-09 11:20:14 +01:00
907f229757 update memory rule 2015-02-09 10:29:47 +01:00
bcc5c51630 gas failure cppjit 2015-02-07 18:09:22 +01:00
cb877734f0 cppjit fails 2015-02-07 09:56:24 +01:00
9f52408e70 sha3 performance test 2015-02-06 17:43:35 +01:00
a3780032bf failing tests from random simulation as state tests and transaction tests 2015-02-06 15:38:55 +01:00
16ab949110 cppjit wrong cmake config fail 2015-02-05 18:40:37 +01:00
0c29650bfa debug version for cppjit in dockerfile 2015-02-05 17:01:24 +01:00
af21a32cef enabled tests 2015-02-05 12:31:49 +01:00
5235124460 enabled python in tests 2015-02-05 12:09:35 +01:00
2e2e36cc72 updated python and go to new build requirement. added script to create
dockers locally
2015-02-05 12:07:12 +01:00
83258456d3 remove false tests 2015-02-04 16:23:54 +01:00
936a8c0e3b python fail 2015-02-04 16:21:06 +01:00
7bfa609f38 Merge remote-tracking branch 'origin' into develop 2015-02-04 09:48:31 +01:00
822b05106d goFail 2015-02-04 09:48:16 +01:00
c37ea26dc7 updated blockchain require 2015-02-03 17:35:36 -05:00
901ddf7737 moved blockchain tests 2015-02-03 12:45:23 -05:00
2b3ea9770b cppjit fail 2015-02-03 13:13:10 +01:00
56559162d3 RefundOverflowTest 2015-02-03 01:00:32 +01:00
ca19e52266 Create badBlockChain.json 2015-01-31 18:40:02 -05:00
e76af886bf updated test loader 2015-01-31 18:26:29 -05:00
b4b280c4ff removed old folder 2015-01-31 17:51:22 -05:00
764ed01688 move folder 2015-01-31 17:48:45 -05:00
d1c8fa6bbd Rename basicBlockChain.js to basicBlockChain.json 2015-01-31 17:47:39 -05:00
8ce498ee53 Create basicBlockChain.js 2015-01-31 17:46:24 -05:00
e125e70fa0 bump 2015-01-30 16:07:55 -05:00
5f10d982ac Update genesishashestest.json
fixed initial_alloc
2015-01-30 16:09:25 -05:00
e8e8d12168 update genesis block 2015-01-29 23:05:42 +01:00
fad4ddbcaf delete wrong tests 2015-01-29 22:50:38 +01:00
a20a5b437d Merge pull request #50 from winsvega/develop
Transaction Tests
2015-01-28 06:28:45 +01:00
2da367a2be fix unchecked slice index on tx.From() 2015-01-26 10:57:23 -08:00
d0440eef25 fixes 2015-01-25 23:28:47 +01:00
5deca66a7d fixes 2015-01-25 23:15:41 +01:00
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
382694f593 Transaction Tests
New State Tests
2015-01-23 20:27:51 +03:00
52e174b1f7 make money with transaction gas overflow 2015-01-23 15:23:56 +01:00
fd450b7f9a python fail 2015-01-23 12:04:39 +01:00
04b611df1c python fails 2015-01-23 09:57:49 +01:00
64fc464e03 add python fail 2015-01-22 23:14:12 +01:00
26e84de180 cppjit fail 2015-01-22 17:27:02 +01:00
b4e7a5b1c6 python fail 2015-01-22 17:14:50 +01:00
7f1d2b28c1 cppjit failure 2015-01-22 16:36:43 +01:00
ab0473ef93 failing python test 2015-01-22 14:12:46 +01:00
4b3e56ec23 failing python test 2015-01-22 12:17:52 +01:00
be58138100 more SHA3 tests, and random failing tests for python 2015-01-20 10:33:26 +01:00
dabbb6df65 Merge branch 'develop' of https://github.com/ethereum/tests into develop 2015-01-19 15:17:20 +01:00
8871fb4e0e add python fail 2015-01-19 15:15:41 +01:00
eecee75336 fixed sudo access 2015-01-19 15:10:08 +01:00
6e8085b839 remove old requires 2015-01-18 22:14:53 -05:00
f5ec2470db use require-all 2015-01-18 21:54:29 -05:00
df335682e4 Merge pull request #48 from sveneh/develop
Testrunner deployment
2015-01-16 14:07:37 +01:00
44a12cd070 python fail callcode (insufficient balance) 2015-01-15 11:13:20 +01:00
1287fc3266 add test with large data in callcreate 2015-01-15 09:47:55 +01:00
a5946a969f update vmSystemOperationsTest 2015-01-14 22:38:33 +01:00
6bb10ccc3b fixed testrunner 2015-01-14 18:06:28 +01:00
d30ca5aa8c added a inputLimits tests (46725 test cases) 2015-01-14 17:55:49 +01:00
489994054a re-add vmSystemOperationsTest 2015-01-14 17:53:26 +01:00
fffd981058 uses docker in tesrunner 2015-01-14 17:53:13 +01:00
9326d0a6dd Dockers for go, cpp 2015-01-14 17:03:37 +01:00
74faa30af6 first version of automatic testrunner deployment. Uses ansible, vagrant
and virtualbox
2015-01-14 16:10:33 +01:00
762a93fec8 python fail 2015-01-14 09:21:49 +01:00
f9e891909d cppjit failing on byte? 2015-01-14 09:15:47 +01:00
a6e9bab298 python fail 2015-01-13 23:07:09 +01:00
3f5a075280 python fail 2015-01-13 22:45:12 +01:00
ebf4686858 go create return different address 2015-01-13 18:30:26 +01:00
aca3181b7e more cpp-jit fails 2015-01-13 18:28:18 +01:00
fd0230e5be cppjit fail 2015-01-13 18:20:08 +01:00
0d25bb85d9 cpp-jit fail 2015-01-13 18:13:52 +01:00
54eaf239ac more failing tests 2015-01-13 16:29:04 +01:00
8d7ddf5299 new cppjit failures 2015-01-13 14:54:39 +01:00
6fd011a3b6 cppjit fail 2015-01-13 14:16:47 +01:00
a9930bfd87 first failing cppjit tests 2015-01-13 13:32:26 +01:00
6a2e82a23d python failures, blockhash, invalid jump, invalid opcode 2015-01-13 09:17:56 +01:00
1818dffaec call to precompiled contract and balance 2015-01-13 08:44:44 +01:00
55c689722a addmod mulmod div by zero tests 2015-01-12 16:25:37 +01:00
dfe77eac84 remove wrong mulmod/addmod tests 2015-01-12 16:09:51 +01:00
1aebe33a34 ADDMOD and MULMOD divison by zero 2015-01-12 14:27:08 +01:00
d70a30c056 MULMOD with modul 0 gives division by zero error 2015-01-12 13:55:00 +01:00
2577b803f6 create should return 0 2015-01-12 13:22:18 +01:00
928dde590c create with high value should fail and return 0 2015-01-12 13:08:43 +01:00
5fbb24353a include invalid opcode 0x0c 2015-01-12 12:00:02 +01:00
9f0c292144 jump outside code 2015-01-12 09:36:56 +01:00
d812c685c9 CODECOPY with size larger than codesize 2015-01-12 09:10:11 +01:00
a0008c3508 correct CREATE with zero sized init code 2015-01-10 23:51:54 +01:00
e8a131e05c remove wrong tests 2015-01-09 21:38:57 +01:00
bf798c8dec wrong memmory needed calculation for CREATE in cpp 2015-01-09 20:39:00 +01:00
53dbdf3dd2 return input offset 2015-01-09 19:16:52 +01:00
c674306973 big offset zero size for create 2015-01-09 17:33:41 +01:00
314220a00d big offset zero size for sha3 and return 2015-01-09 17:06:53 +01:00
dd866afc2e LOG0 no mem expansion despite large offset 2015-01-09 15:46:00 +01:00
b227000f19 add blockhash vm tests 2015-01-09 10:56:40 +01:00
ac2ce00e28 add random test which fail on go 2015-01-08 22:41:40 +01:00
f73731d5a4 failing python tests 2015-01-08 22:10:55 +01:00
9b9f7cffde long jumpdest list 2015-01-08 16:39:57 +01:00
eb3451142e sdiv int256.min -1 2015-01-08 15:29:07 +01:00
73ba8a48ab sdiv with negative fractional result 2015-01-08 15:14:20 +01:00
1ad28d0494 add valid jumpdest with jumpdest at beginning 2015-01-08 13:04:29 +01:00
08a72727cd more dynamic jump tests 2015-01-08 11:23:39 +01:00
0aa66f02ef jump into push data is forbidden 2015-01-07 22:33:25 +01:00
b94c610e49 jumpdests tests, OOG at max call depth, ... 2015-01-07 15:54:14 +01:00
99e6e00c34 check address input greater then 2**160 2015-01-07 11:17:09 +01:00
55f6fe4f7b check address input greater then 2**160 2015-01-07 11:16:09 +01:00
6ce9799370 added BlockHash tests 2015-01-06 20:21:11 +01:00
93bf0d6f4e zeroMemExpansionTests 2015-01-06 16:33:47 +01:00
dc087ffa97 more jumpdest test 2015-01-06 14:48:57 +01:00
63d61cb380 added blockhash tests which return 0 2015-01-06 11:50:57 +01:00
128d417f47 protocol update about call depth 2015-01-05 17:26:11 +01:00
0ace267c4f clear random tests due to protocol changes 2015-01-05 13:37:01 +01:00
2e75a216c7 new jumpdest interpretation 2015-01-02 17:05:20 +01:00
7aab71f656 added complete exp tests 2015-01-02 16:55:59 +01:00
3340f4dbfc retuning gas prices of recursive bombs to test limits 2015-01-02 14:26:55 +01:00
456b5791bb more init code, systemoperations and transaction tests 2015-01-02 14:08:55 +01:00
1f5552feb4 added balance tests 2014-12-29 20:12:29 -05:00
4d37c1cea2 added trie tests for branches on
detel
2014-12-27 20:30:42 -05:00
2fdc7bfbd1 more random tests 2014-12-27 22:46:21 +01:00
98fe404e6a Merge remote-tracking branch 'origin/develop' into develop 2014-12-23 16:36:13 +01:00
aafb5f768b first failing random tests 2014-12-23 16:35:35 +01:00
8c34e93b51 added stackOverFlow test to initCode 2014-12-23 10:01:20 -05:00
8a285d258a Merge remote-tracking branch 'origin/develop' into develop 2014-12-20 13:08:18 +01:00
a4ccc6e72e CALLCODE <-> RETURN 2014-12-20 13:07:54 +01:00
6567f9d0b2 add refund tests 2014-12-18 23:39:30 -05:00
07cfec33f8 added trieTest anyorder 2014-12-18 18:31:19 -05:00
86c3b8cfad Merge branch 'develop' of https://github.com/ethereum/tests into develop 2014-12-18 21:43:06 +01:00
b227b10f5d more refund tests 2014-12-18 21:42:41 +01:00
71b5d6e0a3 updated index.js 2014-12-18 12:13:55 -05:00
aefcb9716e transaction tests and refund tests 2014-12-18 09:31:43 +01:00
ccbf120c36 added stInitCodeTest.json 2014-12-13 23:03:21 +01:00
cbf5afdef8 update recursive create 2014-12-12 22:03:54 +01:00
a70c4b51a4 Fix return tests. 2014-12-12 17:22:41 +01:00
f146467607 Add test file. 2014-12-12 16:33:51 +01:00
c2bd8d1d7a Alter "" to null. 2014-12-12 14:27:38 +01:00
ce6344b770 Trie testing. 2014-12-12 14:22:19 +01:00
779f25d36c first random test 2014-12-11 22:59:56 +01:00
68175386c0 update gas prices 2014-12-11 21:34:50 +01:00
ad322fbb58 Log as array 2014-12-08 06:01:17 +01:00
f989f42618 state log tests 2014-12-05 15:12:12 +01:00
4bc65d1129 add calldataload, codecopy, extcodecopy tests 2014-12-04 18:18:49 +01:00
12cfae18e3 add calldataload test 2014-12-04 15:57:56 +01:00
086caf3701 protocol update (CALLCODE <-> RETURN), topics in log are arrays not sets 2014-12-03 08:31:03 +01:00
e6c92673b9 update state tests with logs 2014-12-01 21:14:08 +01:00
4089b809fb update gas costs 2014-12-01 18:19:40 +01:00
cfdca62277 Merge pull request #42 from negedzuregal/fix
vmTest fix
2014-12-01 18:04:51 +01:00
f59f89d876 vmEnvironmentalInfoTest CALLDATACOPY, CODECOPY, EXTCODECOPY fix 2014-12-01 16:18:12 +01:00
68da13fe3e vmArithmeticTest exp fix 2014-12-01 11:10:57 +01:00
2e5175e818 add vmLogTest 2014-11-30 19:55:51 +01:00
b5b9408e64 updated genesis to new header w/o min_gas_price 2014-11-30 16:27:27 +01:00
8e69fbfa98 add special tests 2014-11-21 17:42:05 -08:00
90f4f942e6 typo 2014-11-20 19:01:09 -08:00
c5e5228e0d Removed log,post,out,gas,callcreates if exception occured 2014-11-20 17:04:06 +01:00
9c0232a2b9 MakeMoney test 2014-11-19 18:19:05 +01:00
3ba0007e86 Added log sections in all vmtests + log tests 2014-11-19 16:23:04 +01:00
d84be4fe07 Merge remote-tracking branch 'origin/develop' into develop 2014-11-19 10:00:24 +01:00
c8497ab257 new push32 test and renaming 2014-11-19 10:00:02 +01:00
76d25420e1 adding test 2014-11-17 18:59:30 -08:00
0be275e757 Merge remote-tracking branch 'origin/develop' into develop 2014-11-17 22:47:34 +01:00
1d42d1d7c6 fix ecrecover2 2014-11-17 22:46:51 +01:00
d90868c307 Merge pull request #39 from wanderer/develop
added test for max call depth on creation
2014-11-17 20:26:59 +01:00
6dbcf6b0d6 spelling fix 2014-11-17 14:06:43 -05:00
6fc07a7f81 added test for max call depth on creation 2014-11-15 21:39:59 -05:00
1f38c8c0a2 Merge pull request #38 from wanderer/develop
updated test  'jeff' in trietest.json
2014-11-14 20:10:21 -05:00
cd85ca17ed Update trietest.json 2014-11-14 19:59:34 -05:00
279b284c0d Merge pull request #37 from wanderer/develop
Update trietest.json
2014-11-14 17:43:49 -05:00
6cae937e5e Update trietest.json
'emptyValues' should have the same root as 'puppy'
2014-11-14 17:20:03 -05:00
89675a7153 Merge remote-tracking branch 'origin/develop' into develop 2014-11-13 23:17:49 +01:00
f1de1cc97a Fix CallRecursiveBomb2 2014-11-13 23:17:13 +01:00
32f0c47c68 Merge pull request #36 from wanderer/develop
converted back to arrary format
2014-11-13 15:26:49 -05:00
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
3da90d01f6 converted back to arrary format 2014-11-12 22:22:47 -05:00
78f1e4a945 rename tests since they are valid opcodes that exist 2014-11-12 19:11:06 -08:00
d06b792cd0 minor change in CallSha256_1_nonzeroValue test 2014-11-12 07:00:17 +01:00
d434ecdcc3 Added CallSha256_1_nonzeroValue test 2014-11-12 06:56:31 +01:00
2c06f34cc0 Store return value of call to precompiled contracts 2014-11-11 18:10:26 +01:00
4b0c3b29ae Fix gas cost for OOG calls 2014-11-11 17:51:14 +01:00
63bcca7604 fix: genesis test 2014-11-11 08:59:19 +01:00
6e0310c1ea Merge remote-tracking branch 'origin/develop' into develop 2014-11-11 08:34:36 +01:00
30c266caff jump to position outside code stops execution 2014-11-11 08:33:59 +01:00
2927763d68 RandomTests were removed 2014-11-10 14:10:22 -08:00
a0fa91b2b8 Merge branch 'develop' of https://github.com/ethereum/tests into develop 2014-11-10 22:22:05 +01:00
60924843f0 Unintended Exceptions work like OOG 2014-11-10 22:21:37 +01:00
fcba866721 add StateTests 2014-11-06 14:19:59 -08:00
a441074ba4 Updated precompiled contracts test 2014-11-06 17:54:36 +01:00
0afa72c82b Added precompiledContracts tests 2014-11-06 15:27:45 +01:00
6be83dd5a1 Update gas cost for PoC7 2014-11-06 13:31:34 +01:00
c18b8ab2d3 Merge remote-tracking branch 'origin/develop' into develop 2014-11-06 09:19:53 +01:00
66c2e1f642 Updated SIGNEXTEND tests 2014-11-06 09:19:22 +01:00
9a9325822e part of 9b4e768 - Delete vmNamecoin.json 2014-11-05 16:20:26 -08:00
e229374f46 Merge remote-tracking branch 'origin/develop' into develop 2014-11-05 20:59:49 +01:00
189527e563 added dynamic jump out of code 2014-11-05 20:59:20 +01:00
9b4e768995 Delete vmNamecoin.json 2014-11-05 20:41:54 +01:00
4669b5694b Merge remote-tracking branch 'origin/develop' into develop 2014-11-05 15:00:12 +01:00
a567fedaa7 added state systemOperationsTest 2014-11-05 14:59:08 +01:00
aaba185ceb Merge pull request #32 from ethers/indexjs
updates needed per restructure
2014-11-04 12:15:40 -08:00
fa782aed93 updates needed per restructure 2014-11-04 11:28:56 -08:00
79d7cbfc4a Merge remote-tracking branch 'origin/develop' into develop 2014-11-04 13:32:11 +01:00
9120274a46 Update tests to latest protocol changes (PoC7) 2014-11-04 13:31:27 +01:00
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
3aebe532e5 Updated vmNamecoin.json to new sstore prices 2014-11-03 13:58:21 +01:00
8a0be21839 Added example state test 2014-11-03 13:53:00 +01:00
83643addbc removed systemoperationstests 2014-11-03 13:36:25 +01:00
3930ca3a9a Restructered tests in folders in accordance to test suites 2014-11-03 13:22:15 +01:00
014d370b5d New SIGNEXTEND tets 2014-10-29 21:23:56 +01:00
155d449be2 New tests for BNOT and SIGNEXTEND 2014-10-29 20:59:05 +01:00
c9eae764b8 Update SSTORE gas cost and BNOT instead of NEG 2014-10-28 12:58:27 +01:00
ad2a75ac58 Added new recursive bombs 2014-10-23 16:05:49 +02:00
834c52af64 Changing gas cost to zero at stackunderflow 2014-10-23 12:01:05 +02:00
c73a8a89d2 Reverted back to original value. 2014-10-22 13:04:45 +02:00
b9a8c92422 fix spelling error 2014-10-21 17:02:52 -04:00
b48ae74af4 Added failing random tests 2014-10-21 17:26:26 +02:00
bee0a4100c Merge remote-tracking branch 'origin/master' into develop 2014-10-21 17:15:05 +02:00
5050d20b4d Merge pull request #26 from wanderer/develop
Add a package.json for node.js
2014-10-20 20:18:20 +02:00
ba35362876 turned tests into a node module 2014-10-19 23:59:47 -04:00
751668571e json was invalid and missing quotes 2014-10-16 17:08:20 -07:00
0e687cee47 Update vmEnvironmentalInfoTest.json 2014-10-16 17:13:24 +02:00
78a78e2e6c updated genesis_hash 2014-10-15 14:19:11 +02:00
b315da618b Merge pull request #23 from ethers/fix22
numbers should be strings #22
2014-10-14 10:33:26 +02:00
0a76a3a312 numbers should be strings #22 2014-10-13 14:45:30 -07:00
1f67385f13 Added some MUL tests 2014-10-11 13:18:00 +02:00
7a7e198395 Added some MUL tests 2014-10-11 13:11:59 +02:00
46eb6283ae tested new opcodes (JUMPDEST,CALLCODE) and created test for CALL/CREATE depth 2014-10-11 12:18:13 +02:00
8d38d62d10 INVALID stops the operation and doesn't cost gas 2014-10-10 18:09:41 +02:00
ed6eba7c8e Update + ABA recursive bomb which needs maximum recursion limit of 1024 2014-10-08 19:08:48 +02:00
2d72050db1 Applied recent protocol changes (PoC7) to existin tests 2014-10-08 14:37:18 +02:00
dfe66cab3f Merge remote-tracking branch 'origin/develop'
Conflicts:
	genesishashestest.json
2014-10-08 11:05:51 +02:00
1a67a96cff Merge pull request #18 from CJentzsch/develop
CallToNameRegistratorOutOfGas balance correction
2014-10-07 15:10:23 +01:00
ffd6bc97ad Merge remote-tracking branch 'origin/develop' into develop 2014-10-07 15:47:34 +02:00
9779d67b8c CallToNameRegistratorOutOfGas balance correction
Even if execution fails, the value gets transferred.
2014-10-07 15:45:53 +02:00
a4f5f45228 Merge pull request #17 from CJentzsch/develop
Added A calls B calls A contracts
2014-10-07 14:13:12 +01:00
b6d7cba499 Merge remote-tracking branch 'upstream/develop' into develop 2014-10-07 15:02:51 +02:00
865cb4083d Added A calls B calls A contracts 2014-10-07 15:02:36 +02:00
49a9f47aec Merge pull request #16 from CJentzsch/develop
corrected amount of used gas for CallToNameRegistratorOutOfGas
2014-10-07 10:56:17 +02:00
94a493b0d9 Merge remote-tracking branch 'upstream/develop' into develop 2014-10-07 10:51:32 +02:00
72853c4382 corrected amount of used gas for CallToNameRegistratorOutOfGas 2014-10-07 10:51:07 +02:00
3b0ec436e4 Merge pull request #15 from CJentzsch/develop
corrected tests and different style for storage
2014-10-07 05:52:43 +01:00
222068b9ba Merge remote-tracking branch 'upstream/develop' into develop 2014-10-06 21:17:28 +02:00
c1696531a6 corrected tests and different style for storage 2014-10-06 21:17:09 +02:00
aec3252b8e Merge pull request #14 from CJentzsch/develop
corrected gas limit in vmSystemOperationsTest
2014-10-06 09:39:46 +01:00
e17a909f70 Merge remote-tracking branch 'upstream/develop' into develop 2014-10-06 10:31:51 +02:00
33fcab5727 Bug fix, corrected gasLimit in vmSystemOperationsTest 2014-10-06 10:30:04 +02:00
25f9fd542a one more vm test 2014-10-04 15:47:00 -04:00
2d561a5373 separated out vmtests 2014-10-04 15:15:37 -04:00
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
6cae166f6f Delete tmp.json 2014-10-01 15:34:23 +02:00
4ff906fbc2 corrected CALLSTATELESS tests 2014-10-01 14:06:32 +02:00
5b3fee6806 Completed vm tests. Added ADDMOD, MULMOD, POST, CALLSTATELESS 2014-09-29 13:08:44 +02:00
9cdd218083 Added IOandFlowOperation-, PushDupSwap- and SystemOperations- tests. Removed empty storage from adresses. 2014-09-27 21:48:09 +02:00
28ed968b46 Added blockInfoTest 2014-09-23 15:49:22 +02:00
ffbd5a35b5 Added environmentalInfo- and sha3- test 2014-09-23 15:37:52 +02:00
54c14f1ff3 Added bitwise logic operation test 2014-09-22 13:06:57 +02:00
d0af113aab Added vm arithmetic test 2014-09-20 01:42:51 +02:00
cb8261a78b Update genesishashestest.json 2014-09-19 13:15:44 +02:00
4513623da1 Update keyaddrtest to be valid JSON 2014-07-22 12:24:46 +02:00
e8cb5c221d Added next/prev trie test 2014-07-21 23:30:33 -04:00
98823c04b3 Replaced with deterministic test 2014-07-14 02:51:31 -04:00
357eb21e4d Added my own random and namecoin tests (pyethereum) 2014-07-13 16:12:56 -04:00
00cd0cce8f Output hex strings. 2014-07-12 21:20:04 +02:00
ddfa3af45d Everything a string. 2014-07-10 11:28:35 +01:00
d659f469a9 Code fixes. 2014-07-10 10:16:25 +01:00
5e83ea8228 Prettier VM tests. 2014-07-06 16:17:12 +02:00
a09aae0efe Fix VM tests. 2014-07-06 15:46:01 +02:00
ec9a044a17 Merge pull request #10 from romanman/patch-1
Update vmtests.json
2014-07-04 15:56:52 +02:00
5e0123fbe1 Update vmtests.json 2014-07-04 10:23:04 +01:00
2b6da2f5f2 Update vmtests.json
arith testcase updated
2014-07-03 17:45:04 +01:00
4bb646117d Merge branch 'develop' of github.com:/ethereum/tests into develop 2014-07-02 19:43:22 +02:00
bba38980bd New tests. 2014-07-02 19:43:06 +02:00
a33b309d99 Testing submodules 2014-07-02 10:14:05 -04:00
50318217ca Testing submodules 2014-07-02 10:10:46 -04:00
57fa655522 Testing submodules 2014-07-02 10:09:08 -04:00
ea0eb0a8c8 Latest genesis block. 2014-07-01 15:19:34 +02:00
25bb76b69c Reset 2014-06-30 13:25:04 +02:00
74c6d8424e Updated wrong test 2014-06-30 12:10:06 +02:00
9ea3a60291 Fixed roots 2014-06-28 18:48:28 +02:00
5fc3ac0e92 Simple hex test. 2014-06-28 18:40:06 +02:00
edd3a00c2a Additional test for jeff. Now use the 0x... notation. 2014-06-28 18:22:18 +02:00
5021e0dd83 VM test framework updated. 2014-06-27 21:35:26 +02:00
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
714770ffb3 Added Gav's new address. 2014-06-11 11:32:42 +01:00
9345bc13d4 Merge branch 'master' of github.com:ethereum/tests into develop 2014-05-30 17:50:38 +02:00
a2257f3471 VM tests. 2014-05-30 17:50:18 +02:00
78576dd3d3 changes based on new account structure nonce, balance, storage, code 2014-05-30 17:19:09 +02:00
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
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
42e14ec54f revert to correct data 2014-05-21 23:27:40 +08:00
4300197a74 fix: wrong sha3 hash because of the wrong rlp hex 2014-05-21 22:42:23 +08:00
a0d01b1a0b fix: wrong rlp hex 2014-05-21 22:29:53 +08:00
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
c31a93c27a fix file name that seems to have been a typo 2014-05-20 15:42:39 -07:00
66bc3665c1 fix: represent integers as strings 2014-05-20 17:36:35 +02:00
ede5499da6 add: current initial alloc and genesis hashes 2014-05-20 17:21:09 +02:00
5131429abb Delete a comma
This should now be parseable as JSON.
2014-05-19 11:18:31 -04:00
f44a859331 add: case when value is long, ensure it's not get rlp encoded as node 2014-05-18 15:04:42 +08:00
e1ae4ad449 PoC-5 VM tests. 2014-05-12 14:40:47 +01:00
2b6c136dda Moved txt to json 2014-05-11 21:42:41 -04:00
cbccbf977c New commit 2014-05-08 21:54:48 -04:00
edbb8d407e Removed unneeded test, added new tests 2014-05-06 16:53:43 -04:00
45a0974f6f Merge pull request #3 from autolycus/develop
Fixed formatting and added test cases
2014-04-27 12:53:47 +01:00
5fd2a98fcb Added some new test cases for the rlp encoding. 2014-04-19 13:26:14 -07:00
4ba150954e Converted spaces to tabs to be compliant with the coding standards defined in cpp-ethereum 2014-04-19 12:48:42 -07:00
15dd8fd794 RLP tests and Trie updates. 2014-02-28 12:54:47 +00:00
33f80fef21 Hex encode tests done. 2014-02-28 11:39:35 +00:00
e1f5e12abb Fix RLP tests. 2014-02-28 11:22:49 +00:00
f87ce15ad2 Fix empty string. 2014-02-27 13:28:11 +00:00
c006ed4ffd Tests fix. 2014-02-24 10:24:39 +00:00
510ff56363 Updated the tests. 2014-02-21 18:54:08 +00:00
a0ec843832 Moved over to new format, but RLP tests still need updating. 2014-02-21 18:49:24 +00:00
660cd26f31 More docs. 2014-02-21 18:35:51 +00:00
6ad14c1a15 Added VM test suite.
Added TODO.
Renamed old files.
2014-02-21 18:33:39 +00:00
f91ad7b385 update trie algorithm 2014-01-08 11:26:58 -05:00
6da2954462 merge 2014-01-08 08:15:38 -05:00
cc4224675f Updated trie test 2014-01-07 14:35:26 -05:00
131c610da6 Merge pull request #1 from obscuren/master
Update trietest.txt
2014-01-01 06:40:54 -08:00
7613302b49 Update trietest.txt
New proposed explanatory format
2014-01-01 15:25:21 +01:00
121632bedd Added obscure's tests 2014-01-01 08:26:18 -05:00
ef6c5506c3 Fixed tests a bit 2013-12-31 19:04:48 -05:00
345e4bcfef Merge branch 'master' of github.com:ethereum/tests 2013-12-31 15:52:46 -05:00
2c81698f31 Added first three tests 2013-12-30 21:09:40 -05:00
e4bbea400f Initial commit 2013-12-30 18:09:03 -08:00
3100 changed files with 678076 additions and 2687472 deletions

6
.dockerignore Normal file
View File

@ -0,0 +1,6 @@
**/.git
**/*_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

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 [Bitchin' tricks](https://github.com/ethereum/go-ethereum/wiki/bitchin-tricks) wiki page 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.

20
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,20 @@
#### 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]
````

14
.gitignore vendored
View File

@ -6,10 +6,14 @@
/tmp
*/**/*un~
*/**/*.test
*un~
.DS_Store
*/**/.DS_Store
.ethtest
*/**/*tx_database*
*/**/*dapps*
build/_vendor/pkg
#*
.#*
@ -18,5 +22,11 @@
.project
.settings
cmd/ethereum/ethereum
cmd/mist/mist
# used by the Makefile
/build/_workspace/
/build/bin/
/geth*.zip
# travis
profile.tmp
profile.cov

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

101
.mailmap
View File

@ -9,4 +9,103 @@ Joseph Goulden <joegoulden@gmail.com>
Nick Savers <nicksavers@gmail.com>
Maran Hidskes <maran.hidskes@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 <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>

View File

@ -1,24 +1,184 @@
language: go
go:
- 1.4.1
before_install:
- sudo add-apt-repository ppa:beineri/opt-qt54 -y
- sudo apt-get update -qq
- sudo apt-get install -yqq libgmp3-dev libreadline6-dev qt54quickcontrols qt54webengine
install:
# - go get golang.org/x/tools/cmd/vet
- if ! go get code.google.com/p/go.tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi
- go get github.com/mattn/goveralls
before_script:
# - go vet ./...
# - go test -race ./...
script:
- ./gocoverage.sh
after_success:
- if [ "$COVERALLS_TOKEN" ]; then goveralls -coverprofile=profile.cov -service=travis-ci -repotoken $COVERALLS_TOKEN; fi
env:
global:
- PKG_CONFIG_PATH=/opt/qt54/lib/pkgconfig
- LD_LIBRARY_PATH=/opt/qt54/lib
- secure: "U2U1AmkU4NJBgKR/uUAebQY87cNL0+1JHjnLOmmXwxYYyj5ralWb1aSuSH3qSXiT93qLBmtaUkuv9fberHVqrbAeVlztVdUsKAq7JMQH+M99iFkC9UiRMqHmtjWJ0ok4COD1sRYixxi21wb/JrMe3M1iL4QJVS61iltjHhVdM64="
go_import_path: github.com/ethereum/go-ethereum
sudo: false
matrix:
include:
- os: linux
dist: trusty
sudo: required
go: 1.7.6
script:
- sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install fuse
- 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.8.3
script:
- sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install fuse
- 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 -misspell
- os: osx
go: 1.8.3
sudo: required
script:
- 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 -misspell
# This builder does the Ubuntu PPA and Linux Azure uploads
- os: linux
dist: trusty
sudo: required
go: 1.8.3
env:
- ubuntu-ppa
- azure-linux
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 CC=arm-linux-gnueabi-gcc go run build/ci.go install -arch arm
- GOARM=5 go run build/ci.go archive -arch arm -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds
- GOARM=6 CC=arm-linux-gnueabi-gcc go run build/ci.go install -arch arm
- GOARM=6 go run build/ci.go archive -arch arm -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds
- GOARM=7 CC=arm-linux-gnueabihf-gcc go run build/ci.go install -arch arm
- GOARM=7 go run build/ci.go archive -arch arm -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds
- CC=aarch64-linux-gnu-gcc go run build/ci.go install -arch arm64
- 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
sudo: required
services:
- docker
go: 1.8.3
env:
- azure-linux-mips
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
before_install:
- curl https://storage.googleapis.com/golang/go1.8.3.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-r14b-linux-x86_64.zip -o android-ndk-r14b.zip
- unzip -q android-ndk-r14b.zip && rm android-ndk-r14b.zip
- mv android-ndk-r14b $HOME
- export ANDROID_NDK=$HOME/android-ndk-r14b
- 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.8.3
env:
- azure-osx
- azure-ios
- cocoapods-ios
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
- 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.8.3
env:
- azure-purge
script:
- go run build/ci.go purge -store gethstore/builds -days 14
install:
- go get golang.org/x/tools/cmd/cover
script:
- go run build/ci.go install
- go run build/ci.go test -coverage
notifications:
webhooks:
urls:
- https://webhooks.gitter.im/e/e09ccdce1048c5e03445
on_success: change
on_failure: always

85
AUTHORS Normal file
View File

@ -0,0 +1,85 @@
# This is the official list of go-ethereum authors for copyright purposes.
Ales Katona <ales@coinbase.com>
Alex Leverington <alex@ethdev.com>
Alexandre Van de Sande <alex.vandesande@ethdev.com>
Aron Fischer <github@aron.guru>
Bas van Kervel <bas@ethdev.com>
Benjamin Brent <benjamin@benjaminbrent.com>
Brian Schroeder <bts@gmail.com>
Casey Detrio <cdetrio@gmail.com>
Christoph Jentzsch <jentzsch.software@gmail.com>
Daniel A. Nagy <nagy.da@gmail.com>
Diego Siqueira <DiSiqueira@users.noreply.github.com>
Elliot Shepherd <elliot@identitii.com>
Enrique Fynn <enriquefynn@gmail.com>
Ethan Buchman <ethan@coinculture.info>
Fabian Vogelsteller <fabian@frozeman.de>
Fabio Berger <fabioberger1991@gmail.com>
Felix Lange <fjl@twurst.com>
Frank Wang <eternnoir@gmail.com>
Gary Rong <garyrong0905@gmail.com>
Gregg Dourgarian <greggd@tempworks.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>
Jae Kwon <jkwon.work@gmail.com>
Jamie Pitts <james.pitts@gmail.com>
Jason Carver <jacarver@linkedin.com>
Jeff R. Allen <jra@nella.org>
Jeffrey Wilcke <jeffrey@ethereum.org>
Jens Agerberg <github@agerberg.me>
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>
Lefteris Karapetsas <lefteris@refu.co>
Leif Jurvetson <leijurv@gmail.com>
Lewis Marshall <lewis@lmars.net>
Louis Holbrook <dev@holbrook.no>
Luca Zeug <luclu@users.noreply.github.com>
Maran Hidskes <maran.hidskes@gmail.com>
Marek Kotewicz <marek.kotewicz@gmail.com>
Martin Holst Swende <martin@swende.se>
Matthew Di Ferrante <mattdf@users.noreply.github.com>
Matthew Wampler-Doty <matthew.wampler.doty@gmail.com>
Micah Zoltu <micah@zoltu.net>
Nchinda Nchinda <nchinda2@gmail.com>
Nick Dodson <silentcicero@outlook.com>
Nick Johnson <arachnid@notdot.net>
Paulo L F Casaretto <pcasaretto@gmail.com>
Peter Pratscher <pratscher@gmail.com>
Péter Szilágyi <peterke@gmail.com>
RJ Catalano <rj@erisindustries.com>
Ramesh Nair <ram@hiddentao.com>
Ricardo Catalinas Jiménez <r@untroubled.be>
Rémy Roy <remyroy@remyroy.com>
Shintaro Kaneko <kaneshin0120@gmail.com>
Stein Dekker <dekker.stein@gmail.com>
Steven Roose <stevenroose@gmail.com>
Taylor Gerring <taylor.gerring@gmail.com>
Thomas Bocek <tom@tomp2p.net>
Tosh Camille <tochecamille@gmail.com>
Valentin Wüstholz <wuestholz@users.noreply.github.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>
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>
Zahoor Mohamed <zahoor@zahoor.in>
Zsolt Felföldi <zsfelfoldi@gmail.com>
holisticode <holistic.computing@gmail.com>
ken10100147 <sunhongping@kanjian.com>
ligi <ligi@ligi.de>
xiekeyang <xiekeyang@users.noreply.github.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.

View File

@ -1,40 +1,15 @@
FROM ubuntu:14.04.1
FROM alpine:3.5
## Environment setup
ENV HOME /root
ENV GOPATH /root/go
ENV PATH /root/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
ADD . /go-ethereum
RUN \
apk add --update git go make gcc musl-dev linux-headers && \
(cd go-ethereum && make geth) && \
cp go-ethereum/build/bin/geth /usr/local/bin/ && \
apk del git go make gcc musl-dev linux-headers && \
rm -rf /go-ethereum && rm -rf /var/cache/apk/*
RUN mkdir -p /root/go
ENV DEBIAN_FRONTEND noninteractive
## Install base dependencies
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y git mercurial build-essential software-properties-common wget pkg-config libgmp3-dev libreadline6-dev libpcre3-dev libpcre++-dev
## Install Qt5.4 (not required for CLI)
# RUN add-apt-repository ppa:beineri/opt-qt54-trusty -y
# RUN apt-get update -y
# RUN apt-get install -y qt54quickcontrols qt54webengine mesa-common-dev libglu1-mesa-dev
# ENV PKG_CONFIG_PATH /opt/qt54/lib/pkgconfig
# Install Golang
RUN wget https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz
RUN tar -C /usr/local -xzf go*.tar.gz && go version
# this is a workaround, to make sure that docker's cache is invalidated whenever the git repo changes
ADD https://api.github.com/repos/ethereum/go-ethereum/git/refs/heads/develop file_does_not_exist
## Fetch and install go-ethereum
RUN go get -v github.com/tools/godep
RUN go get -v -d github.com/ethereum/go-ethereum/...
WORKDIR $GOPATH/src/github.com/ethereum/go-ethereum
RUN git checkout develop
RUN godep restore
RUN go install -v ./cmd/ethereum
## Run & expose JSON RPC
ENTRYPOINT ["ethereum", "-rpc=true", "-rpcport=8545"]
EXPOSE 8545
EXPOSE 30303
EXPOSE 30303/udp
ENTRYPOINT ["geth"]

118
Godeps/Godeps.json generated
View File

@ -1,118 +0,0 @@
{
"ImportPath": "github.com/ethereum/go-ethereum",
"GoVersion": "go1.4.1",
"Packages": [
"./..."
],
"Deps": [
{
"ImportPath": "bitbucket.org/kardianos/osext",
"Comment": "null-13",
"Rev": "5d3ddcf53a508cc2f7404eaebf546ef2cb5cdb6e"
},
{
"ImportPath": "code.google.com/p/go-uuid/uuid",
"Comment": "null-12",
"Rev": "7dda39b2e7d5e265014674c5af696ba4186679e9"
},
{
"ImportPath": "code.google.com/p/snappy-go/snappy",
"Comment": "null-15",
"Rev": "12e4b4183793ac4b061921e7980845e750679fd0"
},
{
"ImportPath": "github.com/ethereum/serpent-go",
"Rev": "5767a0dbd759d313df3f404dadb7f98d7ab51443"
},
{
"ImportPath": "github.com/howeyc/fsnotify",
"Comment": "v0.9.0-11-g6b1ef89",
"Rev": "6b1ef893dc11e0447abda6da20a5203481878dda"
},
{
"ImportPath": "github.com/huin/goupnp",
"Rev": "4191d8a85005844ea202fde52799681971b12dfe"
},
{
"ImportPath": "github.com/jackpal/go-nat-pmp",
"Rev": "a45aa3d54aef73b504e15eb71bea0e5565b5e6e1"
},
{
"ImportPath": "github.com/obscuren/otto",
"Rev": "cf13cc4228c5e5ce0fe27a7aea90bc10091c4f19"
},
{
"ImportPath": "github.com/obscuren/qml",
"Rev": "c288002b52e905973b131089a8a7c761d4a2c36a"
},
{
"ImportPath": "github.com/rakyll/globalconf",
"Rev": "415abc325023f1a00cd2d9fa512e0e71745791a2"
},
{
"ImportPath": "github.com/rakyll/goini",
"Rev": "907cca0f578a5316fb864ec6992dc3d9730ec58c"
},
{
"ImportPath": "github.com/robertkrimen/otto/ast",
"Rev": "dea31a3d392779af358ec41f77a07fcc7e9d04ba"
},
{
"ImportPath": "github.com/robertkrimen/otto/dbg",
"Rev": "dea31a3d392779af358ec41f77a07fcc7e9d04ba"
},
{
"ImportPath": "github.com/robertkrimen/otto/file",
"Rev": "dea31a3d392779af358ec41f77a07fcc7e9d04ba"
},
{
"ImportPath": "github.com/robertkrimen/otto/parser",
"Rev": "dea31a3d392779af358ec41f77a07fcc7e9d04ba"
},
{
"ImportPath": "github.com/robertkrimen/otto/registry",
"Rev": "dea31a3d392779af358ec41f77a07fcc7e9d04ba"
},
{
"ImportPath": "github.com/robertkrimen/otto/token",
"Rev": "dea31a3d392779af358ec41f77a07fcc7e9d04ba"
},
{
"ImportPath": "github.com/syndtr/goleveldb/leveldb",
"Rev": "832fa7ed4d28545eab80f19e1831fc004305cade"
},
{
"ImportPath": "golang.org/x/crypto/pbkdf2",
"Rev": "4ed45ec682102c643324fae5dff8dab085b6c300"
},
{
"ImportPath": "golang.org/x/crypto/ripemd160",
"Rev": "4ed45ec682102c643324fae5dff8dab085b6c300"
},
{
"ImportPath": "golang.org/x/crypto/scrypt",
"Rev": "4ed45ec682102c643324fae5dff8dab085b6c300"
},
{
"ImportPath": "golang.org/x/net/websocket",
"Rev": "59b0df9b1f7abda5aab0495ee54f408daf182ce7"
},
{
"ImportPath": "gopkg.in/check.v1",
"Rev": "64131543e7896d5bcc6bd5a76287eb75ea96c673"
},
{
"ImportPath": "gopkg.in/fatih/set.v0",
"Comment": "v0.1.0-3-g27c4092",
"Rev": "27c40922c40b43fe04554d8223a402af3ea333f3"
},
{
"ImportPath": "gopkg.in/qml.v1/cdata",
"Rev": "1116cb9cd8dee23f8d444ded354eb53122739f99"
},
{
"ImportPath": "gopkg.in/qml.v1/gl/glbase",
"Rev": "1116cb9cd8dee23f8d444ded354eb53122739f99"
}
]
}

5
Godeps/Readme generated
View File

@ -1,5 +0,0 @@
This directory tree is generated automatically by godep.
Please do not edit.
See https://github.com/tools/godep for more information.

2
Godeps/_workspace/.gitignore generated vendored
View File

@ -1,2 +0,0 @@
/pkg
/bin

View File

@ -1,20 +0,0 @@
Copyright (c) 2012 Daniel Theophanes
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.

View File

@ -1,32 +0,0 @@
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Extensions to the standard "os" package.
package osext
import "path/filepath"
// Executable returns an absolute path that can be used to
// re-invoke the current program.
// It may not be valid after the current program exits.
func Executable() (string, error) {
p, err := executable()
return filepath.Clean(p), err
}
// Returns same path as Executable, returns just the folder
// path. Excludes the executable name.
func ExecutableFolder() (string, error) {
p, err := Executable()
if err != nil {
return "", err
}
folder, _ := filepath.Split(p)
return folder, nil
}
// Depricated. Same as Executable().
func GetExePath() (exePath string, err error) {
return Executable()
}

View File

@ -1,20 +0,0 @@
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package osext
import (
"syscall"
"os"
"strconv"
)
func executable() (string, error) {
f, err := os.Open("/proc/" + strconv.Itoa(os.Getpid()) + "/text")
if err != nil {
return "", err
}
defer f.Close()
return syscall.Fd2path(int(f.Fd()))
}

View File

@ -1,25 +0,0 @@
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build linux netbsd openbsd
package osext
import (
"errors"
"os"
"runtime"
)
func executable() (string, error) {
switch runtime.GOOS {
case "linux":
return os.Readlink("/proc/self/exe")
case "netbsd":
return os.Readlink("/proc/curproc/exe")
case "openbsd":
return os.Readlink("/proc/curproc/file")
}
return "", errors.New("ExecPath not implemented for " + runtime.GOOS)
}

View File

@ -1,79 +0,0 @@
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build darwin freebsd
package osext
import (
"os"
"path/filepath"
"runtime"
"syscall"
"unsafe"
)
var initCwd, initCwdErr = os.Getwd()
func executable() (string, error) {
var mib [4]int32
switch runtime.GOOS {
case "freebsd":
mib = [4]int32{1 /* CTL_KERN */, 14 /* KERN_PROC */, 12 /* KERN_PROC_PATHNAME */, -1}
case "darwin":
mib = [4]int32{1 /* CTL_KERN */, 38 /* KERN_PROCARGS */, int32(os.Getpid()), -1}
}
n := uintptr(0)
// Get length.
_, _, errNum := syscall.Syscall6(syscall.SYS___SYSCTL, uintptr(unsafe.Pointer(&mib[0])), 4, 0, uintptr(unsafe.Pointer(&n)), 0, 0)
if errNum != 0 {
return "", errNum
}
if n == 0 { // This shouldn't happen.
return "", nil
}
buf := make([]byte, n)
_, _, errNum = syscall.Syscall6(syscall.SYS___SYSCTL, uintptr(unsafe.Pointer(&mib[0])), 4, uintptr(unsafe.Pointer(&buf[0])), uintptr(unsafe.Pointer(&n)), 0, 0)
if errNum != 0 {
return "", errNum
}
if n == 0 { // This shouldn't happen.
return "", nil
}
for i, v := range buf {
if v == 0 {
buf = buf[:i]
break
}
}
var err error
execPath := string(buf)
// execPath will not be empty due to above checks.
// Try to get the absolute path if the execPath is not rooted.
if execPath[0] != '/' {
execPath, err = getAbs(execPath)
if err != nil {
return execPath, err
}
}
// For darwin KERN_PROCARGS may return the path to a symlink rather than the
// actual executable.
if runtime.GOOS == "darwin" {
if execPath, err = filepath.EvalSymlinks(execPath); err != nil {
return execPath, err
}
}
return execPath, nil
}
func getAbs(execPath string) (string, error) {
if initCwdErr != nil {
return execPath, initCwdErr
}
// The execPath may begin with a "../" or a "./" so clean it first.
// Join the two paths, trailing and starting slashes undetermined, so use
// the generic Join function.
return filepath.Join(initCwd, filepath.Clean(execPath)), nil
}

View File

@ -1,79 +0,0 @@
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build darwin linux freebsd netbsd windows
package osext
import (
"fmt"
"os"
oexec "os/exec"
"path/filepath"
"runtime"
"testing"
)
const execPath_EnvVar = "OSTEST_OUTPUT_EXECPATH"
func TestExecPath(t *testing.T) {
ep, err := Executable()
if err != nil {
t.Fatalf("ExecPath failed: %v", err)
}
// we want fn to be of the form "dir/prog"
dir := filepath.Dir(filepath.Dir(ep))
fn, err := filepath.Rel(dir, ep)
if err != nil {
t.Fatalf("filepath.Rel: %v", err)
}
cmd := &oexec.Cmd{}
// make child start with a relative program path
cmd.Dir = dir
cmd.Path = fn
// forge argv[0] for child, so that we can verify we could correctly
// get real path of the executable without influenced by argv[0].
cmd.Args = []string{"-", "-test.run=XXXX"}
cmd.Env = []string{fmt.Sprintf("%s=1", execPath_EnvVar)}
out, err := cmd.CombinedOutput()
if err != nil {
t.Fatalf("exec(self) failed: %v", err)
}
outs := string(out)
if !filepath.IsAbs(outs) {
t.Fatalf("Child returned %q, want an absolute path", out)
}
if !sameFile(outs, ep) {
t.Fatalf("Child returned %q, not the same file as %q", out, ep)
}
}
func sameFile(fn1, fn2 string) bool {
fi1, err := os.Stat(fn1)
if err != nil {
return false
}
fi2, err := os.Stat(fn2)
if err != nil {
return false
}
return os.SameFile(fi1, fi2)
}
func init() {
if e := os.Getenv(execPath_EnvVar); e != "" {
// first chdir to another path
dir := "/"
if runtime.GOOS == "windows" {
dir = filepath.VolumeName(".")
}
os.Chdir(dir)
if ep, err := Executable(); err != nil {
fmt.Fprint(os.Stderr, "ERROR: ", err)
} else {
fmt.Fprint(os.Stderr, ep)
}
os.Exit(0)
}
}

View File

@ -1,34 +0,0 @@
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package osext
import (
"syscall"
"unicode/utf16"
"unsafe"
)
var (
kernel = syscall.MustLoadDLL("kernel32.dll")
getModuleFileNameProc = kernel.MustFindProc("GetModuleFileNameW")
)
// GetModuleFileName() with hModule = NULL
func executable() (exePath string, err error) {
return getModuleFileName()
}
func getModuleFileName() (string, error) {
var n uint32
b := make([]uint16, syscall.MAX_PATH)
size := uint32(len(b))
r0, _, e1 := getModuleFileNameProc.Call(0, uintptr(unsafe.Pointer(&b[0])), uintptr(size))
n = uint32(r0)
if n == 0 {
return "", e1
}
return string(utf16.Decode(b[0:n])), nil
}

View File

@ -1,27 +0,0 @@
Copyright (c) 2009 Google Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,53 +0,0 @@
// Copyright 2011 Google Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package uuid
import (
"crypto/md5"
"crypto/sha1"
"hash"
)
// Well known Name Space IDs and UUIDs
var (
NameSpace_DNS = Parse("6ba7b810-9dad-11d1-80b4-00c04fd430c8")
NameSpace_URL = Parse("6ba7b811-9dad-11d1-80b4-00c04fd430c8")
NameSpace_OID = Parse("6ba7b812-9dad-11d1-80b4-00c04fd430c8")
NameSpace_X500 = Parse("6ba7b814-9dad-11d1-80b4-00c04fd430c8")
NIL = Parse("00000000-0000-0000-0000-000000000000")
)
// NewHash returns a new UUID dervied from the hash of space concatenated with
// data generated by h. The hash should be at least 16 byte in length. The
// first 16 bytes of the hash are used to form the UUID. The version of the
// UUID will be the lower 4 bits of version. NewHash is used to implement
// NewMD5 and NewSHA1.
func NewHash(h hash.Hash, space UUID, data []byte, version int) UUID {
h.Reset()
h.Write(space)
h.Write([]byte(data))
s := h.Sum(nil)
uuid := make([]byte, 16)
copy(uuid, s)
uuid[6] = (uuid[6] & 0x0f) | uint8((version&0xf)<<4)
uuid[8] = (uuid[8] & 0x3f) | 0x80 // RFC 4122 variant
return uuid
}
// NewMD5 returns a new MD5 (Version 3) UUID based on the
// supplied name space and data.
//
// NewHash(md5.New(), space, data, 3)
func NewMD5(space UUID, data []byte) UUID {
return NewHash(md5.New(), space, data, 3)
}
// NewSHA1 returns a new SHA1 (Version 5) UUID based on the
// supplied name space and data.
//
// NewHash(sha1.New(), space, data, 5)
func NewSHA1(space UUID, data []byte) UUID {
return NewHash(sha1.New(), space, data, 5)
}

View File

@ -1,101 +0,0 @@
// Copyright 2011 Google Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package uuid
import "net"
var (
interfaces []net.Interface // cached list of interfaces
ifname string // name of interface being used
nodeID []byte // hardware for version 1 UUIDs
)
// NodeInterface returns the name of the interface from which the NodeID was
// derived. The interface "user" is returned if the NodeID was set by
// SetNodeID.
func NodeInterface() string {
return ifname
}
// SetNodeInterface selects the hardware address to be used for Version 1 UUIDs.
// If name is "" then the first usable interface found will be used or a random
// Node ID will be generated. If a named interface cannot be found then false
// is returned.
//
// SetNodeInterface never fails when name is "".
func SetNodeInterface(name string) bool {
if interfaces == nil {
var err error
interfaces, err = net.Interfaces()
if err != nil && name != "" {
return false
}
}
for _, ifs := range interfaces {
if len(ifs.HardwareAddr) >= 6 && (name == "" || name == ifs.Name) {
if setNodeID(ifs.HardwareAddr) {
ifname = ifs.Name
return true
}
}
}
// We found no interfaces with a valid hardware address. If name
// does not specify a specific interface generate a random Node ID
// (section 4.1.6)
if name == "" {
if nodeID == nil {
nodeID = make([]byte, 6)
}
randomBits(nodeID)
return true
}
return false
}
// NodeID returns a slice of a copy of the current Node ID, setting the Node ID
// if not already set.
func NodeID() []byte {
if nodeID == nil {
SetNodeInterface("")
}
nid := make([]byte, 6)
copy(nid, nodeID)
return nid
}
// SetNodeID sets the Node ID to be used for Version 1 UUIDs. The first 6 bytes
// of id are used. If id is less than 6 bytes then false is returned and the
// Node ID is not set.
func SetNodeID(id []byte) bool {
if setNodeID(id) {
ifname = "user"
return true
}
return false
}
func setNodeID(id []byte) bool {
if len(id) < 6 {
return false
}
if nodeID == nil {
nodeID = make([]byte, 6)
}
copy(nodeID, id)
return true
}
// NodeID returns the 6 byte node id encoded in uuid. It returns nil if uuid is
// not valid. The NodeID is only well defined for version 1 and 2 UUIDs.
func (uuid UUID) NodeID() []byte {
if len(uuid) != 16 {
return nil
}
node := make([]byte, 6)
copy(node, uuid[10:])
return node
}

View File

@ -1,132 +0,0 @@
// Copyright 2014 Google Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package uuid
import (
"encoding/binary"
"sync"
"time"
)
// A Time represents a time as the number of 100's of nanoseconds since 15 Oct
// 1582.
type Time int64
const (
lillian = 2299160 // Julian day of 15 Oct 1582
unix = 2440587 // Julian day of 1 Jan 1970
epoch = unix - lillian // Days between epochs
g1582 = epoch * 86400 // seconds between epochs
g1582ns100 = g1582 * 10000000 // 100s of a nanoseconds between epochs
)
var (
mu sync.Mutex
lasttime uint64 // last time we returned
clock_seq uint16 // clock sequence for this run
timeNow = time.Now // for testing
)
// UnixTime converts t the number of seconds and nanoseconds using the Unix
// epoch of 1 Jan 1970.
func (t Time) UnixTime() (sec, nsec int64) {
sec = int64(t - g1582ns100)
nsec = (sec % 10000000) * 100
sec /= 10000000
return sec, nsec
}
// GetTime returns the current Time (100s of nanoseconds since 15 Oct 1582) and
// adjusts the clock sequence as needed. An error is returned if the current
// time cannot be determined.
func GetTime() (Time, error) {
defer mu.Unlock()
mu.Lock()
return getTime()
}
func getTime() (Time, error) {
t := timeNow()
// If we don't have a clock sequence already, set one.
if clock_seq == 0 {
setClockSequence(-1)
}
now := uint64(t.UnixNano()/100) + g1582ns100
// If time has gone backwards with this clock sequence then we
// increment the clock sequence
if now <= lasttime {
clock_seq = ((clock_seq + 1) & 0x3fff) | 0x8000
}
lasttime = now
return Time(now), nil
}
// ClockSequence returns the current clock sequence, generating one if not
// already set. The clock sequence is only used for Version 1 UUIDs.
//
// The uuid package does not use global static storage for the clock sequence or
// the last time a UUID was generated. Unless SetClockSequence a new random
// clock sequence is generated the first time a clock sequence is requested by
// ClockSequence, GetTime, or NewUUID. (section 4.2.1.1) sequence is generated
// for
func ClockSequence() int {
defer mu.Unlock()
mu.Lock()
return clockSequence()
}
func clockSequence() int {
if clock_seq == 0 {
setClockSequence(-1)
}
return int(clock_seq & 0x3fff)
}
// SetClockSeq sets the clock sequence to the lower 14 bits of seq. Setting to
// -1 causes a new sequence to be generated.
func SetClockSequence(seq int) {
defer mu.Unlock()
mu.Lock()
setClockSequence(seq)
}
func setClockSequence(seq int) {
if seq == -1 {
var b [2]byte
randomBits(b[:]) // clock sequence
seq = int(b[0])<<8 | int(b[1])
}
old_seq := clock_seq
clock_seq = uint16(seq&0x3fff) | 0x8000 // Set our variant
if old_seq != clock_seq {
lasttime = 0
}
}
// Time returns the time in 100s of nanoseconds since 15 Oct 1582 encoded in
// uuid. It returns false if uuid is not valid. The time is only well defined
// for version 1 and 2 UUIDs.
func (uuid UUID) Time() (Time, bool) {
if len(uuid) != 16 {
return 0, false
}
time := int64(binary.BigEndian.Uint32(uuid[0:4]))
time |= int64(binary.BigEndian.Uint16(uuid[4:6])) << 32
time |= int64(binary.BigEndian.Uint16(uuid[6:8])&0xfff) << 48
return Time(time), true
}
// ClockSequence returns the clock sequence encoded in uuid. It returns false
// if uuid is not valid. The clock sequence is only well defined for version 1
// and 2 UUIDs.
func (uuid UUID) ClockSequence() (int, bool) {
if len(uuid) != 16 {
return 0, false
}
return int(binary.BigEndian.Uint16(uuid[8:10])) & 0x3fff, true
}

View File

@ -1,43 +0,0 @@
// Copyright 2011 Google Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package uuid
import (
"io"
)
// randomBits completely fills slice b with random data.
func randomBits(b []byte) {
if _, err := io.ReadFull(rander, b); err != nil {
panic(err.Error()) // rand should never fail
}
}
// xvalues returns the value of a byte as a hexadecimal digit or 255.
var xvalues = []byte{
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 255, 255, 255, 255, 255, 255,
255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
}
// xtob converts the the first two hex bytes of x into a byte.
func xtob(x string) (byte, bool) {
b1 := xvalues[x[0]]
b2 := xvalues[x[1]]
return (b1 << 4) | b2, b1 != 255 && b2 != 255
}

View File

@ -1,163 +0,0 @@
// Copyright 2011 Google Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package uuid
import (
"bytes"
"crypto/rand"
"fmt"
"io"
"strings"
)
// A UUID is a 128 bit (16 byte) Universal Unique IDentifier as defined in RFC
// 4122.
type UUID []byte
// A Version represents a UUIDs version.
type Version byte
// A Variant represents a UUIDs variant.
type Variant byte
// Constants returned by Variant.
const (
Invalid = Variant(iota) // Invalid UUID
RFC4122 // The variant specified in RFC4122
Reserved // Reserved, NCS backward compatibility.
Microsoft // Reserved, Microsoft Corporation backward compatibility.
Future // Reserved for future definition.
)
var rander = rand.Reader // random function
// New returns a new random (version 4) UUID as a string. It is a convenience
// function for NewRandom().String().
func New() string {
return NewRandom().String()
}
// Parse decodes s into a UUID or returns nil. Both the UUID form of
// xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx and
// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx are decoded.
func Parse(s string) UUID {
if len(s) == 36+9 {
if strings.ToLower(s[:9]) != "urn:uuid:" {
return nil
}
s = s[9:]
} else if len(s) != 36 {
return nil
}
if s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' {
return nil
}
uuid := make([]byte, 16)
for i, x := range []int{
0, 2, 4, 6,
9, 11,
14, 16,
19, 21,
24, 26, 28, 30, 32, 34} {
if v, ok := xtob(s[x:]); !ok {
return nil
} else {
uuid[i] = v
}
}
return uuid
}
// Equal returns true if uuid1 and uuid2 are equal.
func Equal(uuid1, uuid2 UUID) bool {
return bytes.Equal(uuid1, uuid2)
}
// String returns the string form of uuid, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
// , or "" if uuid is invalid.
func (uuid UUID) String() string {
if uuid == nil || len(uuid) != 16 {
return ""
}
b := []byte(uuid)
return fmt.Sprintf("%08x-%04x-%04x-%04x-%012x",
b[:4], b[4:6], b[6:8], b[8:10], b[10:])
}
// URN returns the RFC 2141 URN form of uuid,
// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, or "" if uuid is invalid.
func (uuid UUID) URN() string {
if uuid == nil || len(uuid) != 16 {
return ""
}
b := []byte(uuid)
return fmt.Sprintf("urn:uuid:%08x-%04x-%04x-%04x-%012x",
b[:4], b[4:6], b[6:8], b[8:10], b[10:])
}
// Variant returns the variant encoded in uuid. It returns Invalid if
// uuid is invalid.
func (uuid UUID) Variant() Variant {
if len(uuid) != 16 {
return Invalid
}
switch {
case (uuid[8] & 0xc0) == 0x80:
return RFC4122
case (uuid[8] & 0xe0) == 0xc0:
return Microsoft
case (uuid[8] & 0xe0) == 0xe0:
return Future
default:
return Reserved
}
panic("unreachable")
}
// Version returns the verison of uuid. It returns false if uuid is not
// valid.
func (uuid UUID) Version() (Version, bool) {
if len(uuid) != 16 {
return 0, false
}
return Version(uuid[6] >> 4), true
}
func (v Version) String() string {
if v > 15 {
return fmt.Sprintf("BAD_VERSION_%d", v)
}
return fmt.Sprintf("VERSION_%d", v)
}
func (v Variant) String() string {
switch v {
case RFC4122:
return "RFC4122"
case Reserved:
return "Reserved"
case Microsoft:
return "Microsoft"
case Future:
return "Future"
case Invalid:
return "Invalid"
}
return fmt.Sprintf("BadVariant%d", int(v))
}
// SetRand sets the random number generator to r, which implents io.Reader.
// If r.Read returns an error when the package requests random data then
// a panic will be issued.
//
// Calling SetRand with nil sets the random number generator to the default
// generator.
func SetRand(r io.Reader) {
if r == nil {
rander = rand.Reader
return
}
rander = r
}

View File

@ -1,390 +0,0 @@
// Copyright 2011 Google Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package uuid
import (
"bytes"
"fmt"
"os"
"strings"
"testing"
"time"
)
type test struct {
in string
version Version
variant Variant
isuuid bool
}
var tests = []test{
{"f47ac10b-58cc-0372-8567-0e02b2c3d479", 0, RFC4122, true},
{"f47ac10b-58cc-1372-8567-0e02b2c3d479", 1, RFC4122, true},
{"f47ac10b-58cc-2372-8567-0e02b2c3d479", 2, RFC4122, true},
{"f47ac10b-58cc-3372-8567-0e02b2c3d479", 3, RFC4122, true},
{"f47ac10b-58cc-4372-8567-0e02b2c3d479", 4, RFC4122, true},
{"f47ac10b-58cc-5372-8567-0e02b2c3d479", 5, RFC4122, true},
{"f47ac10b-58cc-6372-8567-0e02b2c3d479", 6, RFC4122, true},
{"f47ac10b-58cc-7372-8567-0e02b2c3d479", 7, RFC4122, true},
{"f47ac10b-58cc-8372-8567-0e02b2c3d479", 8, RFC4122, true},
{"f47ac10b-58cc-9372-8567-0e02b2c3d479", 9, RFC4122, true},
{"f47ac10b-58cc-a372-8567-0e02b2c3d479", 10, RFC4122, true},
{"f47ac10b-58cc-b372-8567-0e02b2c3d479", 11, RFC4122, true},
{"f47ac10b-58cc-c372-8567-0e02b2c3d479", 12, RFC4122, true},
{"f47ac10b-58cc-d372-8567-0e02b2c3d479", 13, RFC4122, true},
{"f47ac10b-58cc-e372-8567-0e02b2c3d479", 14, RFC4122, true},
{"f47ac10b-58cc-f372-8567-0e02b2c3d479", 15, RFC4122, true},
{"urn:uuid:f47ac10b-58cc-4372-0567-0e02b2c3d479", 4, Reserved, true},
{"URN:UUID:f47ac10b-58cc-4372-0567-0e02b2c3d479", 4, Reserved, true},
{"f47ac10b-58cc-4372-0567-0e02b2c3d479", 4, Reserved, true},
{"f47ac10b-58cc-4372-1567-0e02b2c3d479", 4, Reserved, true},
{"f47ac10b-58cc-4372-2567-0e02b2c3d479", 4, Reserved, true},
{"f47ac10b-58cc-4372-3567-0e02b2c3d479", 4, Reserved, true},
{"f47ac10b-58cc-4372-4567-0e02b2c3d479", 4, Reserved, true},
{"f47ac10b-58cc-4372-5567-0e02b2c3d479", 4, Reserved, true},
{"f47ac10b-58cc-4372-6567-0e02b2c3d479", 4, Reserved, true},
{"f47ac10b-58cc-4372-7567-0e02b2c3d479", 4, Reserved, true},
{"f47ac10b-58cc-4372-8567-0e02b2c3d479", 4, RFC4122, true},
{"f47ac10b-58cc-4372-9567-0e02b2c3d479", 4, RFC4122, true},
{"f47ac10b-58cc-4372-a567-0e02b2c3d479", 4, RFC4122, true},
{"f47ac10b-58cc-4372-b567-0e02b2c3d479", 4, RFC4122, true},
{"f47ac10b-58cc-4372-c567-0e02b2c3d479", 4, Microsoft, true},
{"f47ac10b-58cc-4372-d567-0e02b2c3d479", 4, Microsoft, true},
{"f47ac10b-58cc-4372-e567-0e02b2c3d479", 4, Future, true},
{"f47ac10b-58cc-4372-f567-0e02b2c3d479", 4, Future, true},
{"f47ac10b158cc-5372-a567-0e02b2c3d479", 0, Invalid, false},
{"f47ac10b-58cc25372-a567-0e02b2c3d479", 0, Invalid, false},
{"f47ac10b-58cc-53723a567-0e02b2c3d479", 0, Invalid, false},
{"f47ac10b-58cc-5372-a56740e02b2c3d479", 0, Invalid, false},
{"f47ac10b-58cc-5372-a567-0e02-2c3d479", 0, Invalid, false},
{"g47ac10b-58cc-4372-a567-0e02b2c3d479", 0, Invalid, false},
}
var constants = []struct {
c interface{}
name string
}{
{Person, "Person"},
{Group, "Group"},
{Org, "Org"},
{Invalid, "Invalid"},
{RFC4122, "RFC4122"},
{Reserved, "Reserved"},
{Microsoft, "Microsoft"},
{Future, "Future"},
{Domain(17), "Domain17"},
{Variant(42), "BadVariant42"},
}
func testTest(t *testing.T, in string, tt test) {
uuid := Parse(in)
if ok := (uuid != nil); ok != tt.isuuid {
t.Errorf("Parse(%s) got %v expected %v\b", in, ok, tt.isuuid)
}
if uuid == nil {
return
}
if v := uuid.Variant(); v != tt.variant {
t.Errorf("Variant(%s) got %d expected %d\b", in, v, tt.variant)
}
if v, _ := uuid.Version(); v != tt.version {
t.Errorf("Version(%s) got %d expected %d\b", in, v, tt.version)
}
}
func TestUUID(t *testing.T) {
for _, tt := range tests {
testTest(t, tt.in, tt)
testTest(t, strings.ToUpper(tt.in), tt)
}
}
func TestConstants(t *testing.T) {
for x, tt := range constants {
v, ok := tt.c.(fmt.Stringer)
if !ok {
t.Errorf("%x: %v: not a stringer", x, v)
} else if s := v.String(); s != tt.name {
v, _ := tt.c.(int)
t.Errorf("%x: Constant %T:%d gives %q, expected %q\n", x, tt.c, v, s, tt.name)
}
}
}
func TestRandomUUID(t *testing.T) {
m := make(map[string]bool)
for x := 1; x < 32; x++ {
uuid := NewRandom()
s := uuid.String()
if m[s] {
t.Errorf("NewRandom returned duplicated UUID %s\n", s)
}
m[s] = true
if v, _ := uuid.Version(); v != 4 {
t.Errorf("Random UUID of version %s\n", v)
}
if uuid.Variant() != RFC4122 {
t.Errorf("Random UUID is variant %d\n", uuid.Variant())
}
}
}
func TestNew(t *testing.T) {
m := make(map[string]bool)
for x := 1; x < 32; x++ {
s := New()
if m[s] {
t.Errorf("New returned duplicated UUID %s\n", s)
}
m[s] = true
uuid := Parse(s)
if uuid == nil {
t.Errorf("New returned %q which does not decode\n", s)
continue
}
if v, _ := uuid.Version(); v != 4 {
t.Errorf("Random UUID of version %s\n", v)
}
if uuid.Variant() != RFC4122 {
t.Errorf("Random UUID is variant %d\n", uuid.Variant())
}
}
}
func clockSeq(t *testing.T, uuid UUID) int {
seq, ok := uuid.ClockSequence()
if !ok {
t.Fatalf("%s: invalid clock sequence\n", uuid)
}
return seq
}
func TestClockSeq(t *testing.T) {
// Fake time.Now for this test to return a monotonically advancing time; restore it at end.
defer func(orig func() time.Time) { timeNow = orig }(timeNow)
monTime := time.Now()
timeNow = func() time.Time {
monTime = monTime.Add(1 * time.Second)
return monTime
}
SetClockSequence(-1)
uuid1 := NewUUID()
uuid2 := NewUUID()
if clockSeq(t, uuid1) != clockSeq(t, uuid2) {
t.Errorf("clock sequence %d != %d\n", clockSeq(t, uuid1), clockSeq(t, uuid2))
}
SetClockSequence(-1)
uuid2 = NewUUID()
// Just on the very off chance we generated the same sequence
// two times we try again.
if clockSeq(t, uuid1) == clockSeq(t, uuid2) {
SetClockSequence(-1)
uuid2 = NewUUID()
}
if clockSeq(t, uuid1) == clockSeq(t, uuid2) {
t.Errorf("Duplicate clock sequence %d\n", clockSeq(t, uuid1))
}
SetClockSequence(0x1234)
uuid1 = NewUUID()
if seq := clockSeq(t, uuid1); seq != 0x1234 {
t.Errorf("%s: expected seq 0x1234 got 0x%04x\n", uuid1, seq)
}
}
func TestCoding(t *testing.T) {
text := "7d444840-9dc0-11d1-b245-5ffdce74fad2"
urn := "urn:uuid:7d444840-9dc0-11d1-b245-5ffdce74fad2"
data := UUID{
0x7d, 0x44, 0x48, 0x40,
0x9d, 0xc0,
0x11, 0xd1,
0xb2, 0x45,
0x5f, 0xfd, 0xce, 0x74, 0xfa, 0xd2,
}
if v := data.String(); v != text {
t.Errorf("%x: encoded to %s, expected %s\n", data, v, text)
}
if v := data.URN(); v != urn {
t.Errorf("%x: urn is %s, expected %s\n", data, v, urn)
}
uuid := Parse(text)
if !Equal(uuid, data) {
t.Errorf("%s: decoded to %s, expected %s\n", text, uuid, data)
}
}
func TestVersion1(t *testing.T) {
uuid1 := NewUUID()
uuid2 := NewUUID()
if Equal(uuid1, uuid2) {
t.Errorf("%s:duplicate uuid\n", uuid1)
}
if v, _ := uuid1.Version(); v != 1 {
t.Errorf("%s: version %s expected 1\n", uuid1, v)
}
if v, _ := uuid2.Version(); v != 1 {
t.Errorf("%s: version %s expected 1\n", uuid2, v)
}
n1 := uuid1.NodeID()
n2 := uuid2.NodeID()
if !bytes.Equal(n1, n2) {
t.Errorf("Different nodes %x != %x\n", n1, n2)
}
t1, ok := uuid1.Time()
if !ok {
t.Errorf("%s: invalid time\n", uuid1)
}
t2, ok := uuid2.Time()
if !ok {
t.Errorf("%s: invalid time\n", uuid2)
}
q1, ok := uuid1.ClockSequence()
if !ok {
t.Errorf("%s: invalid clock sequence\n", uuid1)
}
q2, ok := uuid2.ClockSequence()
if !ok {
t.Errorf("%s: invalid clock sequence", uuid2)
}
switch {
case t1 == t2 && q1 == q2:
t.Errorf("time stopped\n")
case t1 > t2 && q1 == q2:
t.Errorf("time reversed\n")
case t1 < t2 && q1 != q2:
t.Errorf("clock sequence chaned unexpectedly\n")
}
}
func TestNodeAndTime(t *testing.T) {
// Time is February 5, 1998 12:30:23.136364800 AM GMT
uuid := Parse("7d444840-9dc0-11d1-b245-5ffdce74fad2")
node := []byte{0x5f, 0xfd, 0xce, 0x74, 0xfa, 0xd2}
ts, ok := uuid.Time()
if ok {
c := time.Unix(ts.UnixTime())
want := time.Date(1998, 2, 5, 0, 30, 23, 136364800, time.UTC)
if !c.Equal(want) {
t.Errorf("Got time %v, want %v", c, want)
}
} else {
t.Errorf("%s: bad time\n", uuid)
}
if !bytes.Equal(node, uuid.NodeID()) {
t.Errorf("Expected node %v got %v\n", node, uuid.NodeID())
}
}
func TestMD5(t *testing.T) {
uuid := NewMD5(NameSpace_DNS, []byte("python.org")).String()
want := "6fa459ea-ee8a-3ca4-894e-db77e160355e"
if uuid != want {
t.Errorf("MD5: got %q expected %q\n", uuid, want)
}
}
func TestSHA1(t *testing.T) {
uuid := NewSHA1(NameSpace_DNS, []byte("python.org")).String()
want := "886313e1-3b8a-5372-9b90-0c9aee199e5d"
if uuid != want {
t.Errorf("SHA1: got %q expected %q\n", uuid, want)
}
}
func TestNodeID(t *testing.T) {
nid := []byte{1, 2, 3, 4, 5, 6}
SetNodeInterface("")
s := NodeInterface()
if s == "" || s == "user" {
t.Errorf("NodeInterface %q after SetInteface\n", s)
}
node1 := NodeID()
if node1 == nil {
t.Errorf("NodeID nil after SetNodeInterface\n", s)
}
SetNodeID(nid)
s = NodeInterface()
if s != "user" {
t.Errorf("Expected NodeInterface %q got %q\n", "user", s)
}
node2 := NodeID()
if node2 == nil {
t.Errorf("NodeID nil after SetNodeID\n", s)
}
if bytes.Equal(node1, node2) {
t.Errorf("NodeID not changed after SetNodeID\n", s)
} else if !bytes.Equal(nid, node2) {
t.Errorf("NodeID is %x, expected %x\n", node2, nid)
}
}
func testDCE(t *testing.T, name string, uuid UUID, domain Domain, id uint32) {
if uuid == nil {
t.Errorf("%s failed\n", name)
return
}
if v, _ := uuid.Version(); v != 2 {
t.Errorf("%s: %s: expected version 2, got %s\n", name, uuid, v)
return
}
if v, ok := uuid.Domain(); !ok || v != domain {
if !ok {
t.Errorf("%s: %d: Domain failed\n", name, uuid)
} else {
t.Errorf("%s: %s: expected domain %d, got %d\n", name, uuid, domain, v)
}
}
if v, ok := uuid.Id(); !ok || v != id {
if !ok {
t.Errorf("%s: %d: Id failed\n", name, uuid)
} else {
t.Errorf("%s: %s: expected id %d, got %d\n", name, uuid, id, v)
}
}
}
func TestDCE(t *testing.T) {
testDCE(t, "NewDCESecurity", NewDCESecurity(42, 12345678), 42, 12345678)
testDCE(t, "NewDCEPerson", NewDCEPerson(), Person, uint32(os.Getuid()))
testDCE(t, "NewDCEGroup", NewDCEGroup(), Group, uint32(os.Getgid()))
}
type badRand struct{}
func (r badRand) Read(buf []byte) (int, error) {
for i, _ := range buf {
buf[i] = byte(i)
}
return len(buf), nil
}
func TestBadRand(t *testing.T) {
SetRand(badRand{})
uuid1 := New()
uuid2 := New()
if uuid1 != uuid2 {
t.Errorf("execpted duplicates, got %q and %q\n", uuid1, uuid2)
}
SetRand(nil)
uuid1 = New()
uuid2 = New()
if uuid1 == uuid2 {
t.Errorf("unexecpted duplicates, got %q\n", uuid1)
}
}

View File

@ -1,124 +0,0 @@
// Copyright 2011 The Snappy-Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package snappy
import (
"encoding/binary"
"errors"
)
// ErrCorrupt reports that the input is invalid.
var ErrCorrupt = errors.New("snappy: corrupt input")
// DecodedLen returns the length of the decoded block.
func DecodedLen(src []byte) (int, error) {
v, _, err := decodedLen(src)
return v, err
}
// decodedLen returns the length of the decoded block and the number of bytes
// that the length header occupied.
func decodedLen(src []byte) (blockLen, headerLen int, err error) {
v, n := binary.Uvarint(src)
if n == 0 {
return 0, 0, ErrCorrupt
}
if uint64(int(v)) != v {
return 0, 0, errors.New("snappy: decoded block is too large")
}
return int(v), n, nil
}
// Decode returns the decoded form of src. The returned slice may be a sub-
// slice of dst if dst was large enough to hold the entire decoded block.
// Otherwise, a newly allocated slice will be returned.
// It is valid to pass a nil dst.
func Decode(dst, src []byte) ([]byte, error) {
dLen, s, err := decodedLen(src)
if err != nil {
return nil, err
}
if len(dst) < dLen {
dst = make([]byte, dLen)
}
var d, offset, length int
for s < len(src) {
switch src[s] & 0x03 {
case tagLiteral:
x := uint(src[s] >> 2)
switch {
case x < 60:
s += 1
case x == 60:
s += 2
if s > len(src) {
return nil, ErrCorrupt
}
x = uint(src[s-1])
case x == 61:
s += 3
if s > len(src) {
return nil, ErrCorrupt
}
x = uint(src[s-2]) | uint(src[s-1])<<8
case x == 62:
s += 4
if s > len(src) {
return nil, ErrCorrupt
}
x = uint(src[s-3]) | uint(src[s-2])<<8 | uint(src[s-1])<<16
case x == 63:
s += 5
if s > len(src) {
return nil, ErrCorrupt
}
x = uint(src[s-4]) | uint(src[s-3])<<8 | uint(src[s-2])<<16 | uint(src[s-1])<<24
}
length = int(x + 1)
if length <= 0 {
return nil, errors.New("snappy: unsupported literal length")
}
if length > len(dst)-d || length > len(src)-s {
return nil, ErrCorrupt
}
copy(dst[d:], src[s:s+length])
d += length
s += length
continue
case tagCopy1:
s += 2
if s > len(src) {
return nil, ErrCorrupt
}
length = 4 + int(src[s-2])>>2&0x7
offset = int(src[s-2])&0xe0<<3 | int(src[s-1])
case tagCopy2:
s += 3
if s > len(src) {
return nil, ErrCorrupt
}
length = 1 + int(src[s-3])>>2
offset = int(src[s-2]) | int(src[s-1])<<8
case tagCopy4:
return nil, errors.New("snappy: unsupported COPY_4 tag")
}
end := d + length
if offset > d || end > len(dst) {
return nil, ErrCorrupt
}
for ; d < end; d++ {
dst[d] = dst[d-offset]
}
}
if d != dLen {
return nil, ErrCorrupt
}
return dst[:d], nil
}

View File

@ -1,174 +0,0 @@
// Copyright 2011 The Snappy-Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package snappy
import (
"encoding/binary"
)
// We limit how far copy back-references can go, the same as the C++ code.
const maxOffset = 1 << 15
// emitLiteral writes a literal chunk and returns the number of bytes written.
func emitLiteral(dst, lit []byte) int {
i, n := 0, uint(len(lit)-1)
switch {
case n < 60:
dst[0] = uint8(n)<<2 | tagLiteral
i = 1
case n < 1<<8:
dst[0] = 60<<2 | tagLiteral
dst[1] = uint8(n)
i = 2
case n < 1<<16:
dst[0] = 61<<2 | tagLiteral
dst[1] = uint8(n)
dst[2] = uint8(n >> 8)
i = 3
case n < 1<<24:
dst[0] = 62<<2 | tagLiteral
dst[1] = uint8(n)
dst[2] = uint8(n >> 8)
dst[3] = uint8(n >> 16)
i = 4
case int64(n) < 1<<32:
dst[0] = 63<<2 | tagLiteral
dst[1] = uint8(n)
dst[2] = uint8(n >> 8)
dst[3] = uint8(n >> 16)
dst[4] = uint8(n >> 24)
i = 5
default:
panic("snappy: source buffer is too long")
}
if copy(dst[i:], lit) != len(lit) {
panic("snappy: destination buffer is too short")
}
return i + len(lit)
}
// emitCopy writes a copy chunk and returns the number of bytes written.
func emitCopy(dst []byte, offset, length int) int {
i := 0
for length > 0 {
x := length - 4
if 0 <= x && x < 1<<3 && offset < 1<<11 {
dst[i+0] = uint8(offset>>8)&0x07<<5 | uint8(x)<<2 | tagCopy1
dst[i+1] = uint8(offset)
i += 2
break
}
x = length
if x > 1<<6 {
x = 1 << 6
}
dst[i+0] = uint8(x-1)<<2 | tagCopy2
dst[i+1] = uint8(offset)
dst[i+2] = uint8(offset >> 8)
i += 3
length -= x
}
return i
}
// Encode returns the encoded form of src. The returned slice may be a sub-
// slice of dst if dst was large enough to hold the entire encoded block.
// Otherwise, a newly allocated slice will be returned.
// It is valid to pass a nil dst.
func Encode(dst, src []byte) ([]byte, error) {
if n := MaxEncodedLen(len(src)); len(dst) < n {
dst = make([]byte, n)
}
// The block starts with the varint-encoded length of the decompressed bytes.
d := binary.PutUvarint(dst, uint64(len(src)))
// Return early if src is short.
if len(src) <= 4 {
if len(src) != 0 {
d += emitLiteral(dst[d:], src)
}
return dst[:d], nil
}
// Initialize the hash table. Its size ranges from 1<<8 to 1<<14 inclusive.
const maxTableSize = 1 << 14
shift, tableSize := uint(32-8), 1<<8
for tableSize < maxTableSize && tableSize < len(src) {
shift--
tableSize *= 2
}
var table [maxTableSize]int
// Iterate over the source bytes.
var (
s int // The iterator position.
t int // The last position with the same hash as s.
lit int // The start position of any pending literal bytes.
)
for s+3 < len(src) {
// Update the hash table.
b0, b1, b2, b3 := src[s], src[s+1], src[s+2], src[s+3]
h := uint32(b0) | uint32(b1)<<8 | uint32(b2)<<16 | uint32(b3)<<24
p := &table[(h*0x1e35a7bd)>>shift]
// We need to to store values in [-1, inf) in table. To save
// some initialization time, (re)use the table's zero value
// and shift the values against this zero: add 1 on writes,
// subtract 1 on reads.
t, *p = *p-1, s+1
// If t is invalid or src[s:s+4] differs from src[t:t+4], accumulate a literal byte.
if t < 0 || s-t >= maxOffset || b0 != src[t] || b1 != src[t+1] || b2 != src[t+2] || b3 != src[t+3] {
s++
continue
}
// Otherwise, we have a match. First, emit any pending literal bytes.
if lit != s {
d += emitLiteral(dst[d:], src[lit:s])
}
// Extend the match to be as long as possible.
s0 := s
s, t = s+4, t+4
for s < len(src) && src[s] == src[t] {
s++
t++
}
// Emit the copied bytes.
d += emitCopy(dst[d:], s-t, s-s0)
lit = s
}
// Emit any final pending literal bytes and return.
if lit != len(src) {
d += emitLiteral(dst[d:], src[lit:])
}
return dst[:d], nil
}
// MaxEncodedLen returns the maximum length of a snappy block, given its
// uncompressed length.
func MaxEncodedLen(srcLen int) int {
// Compressed data can be defined as:
// compressed := item* literal*
// item := literal* copy
//
// The trailing literal sequence has a space blowup of at most 62/60
// since a literal of length 60 needs one tag byte + one extra byte
// for length information.
//
// Item blowup is trickier to measure. Suppose the "copy" op copies
// 4 bytes of data. Because of a special check in the encoding code,
// we produce a 4-byte copy only if the offset is < 65536. Therefore
// the copy op takes 3 bytes to encode, and this type of item leads
// to at most the 62/60 blowup for representing literals.
//
// Suppose the "copy" op copies 5 bytes of data. If the offset is big
// enough, it will take 5 bytes to encode the copy op. Therefore the
// worst case here is a one-byte literal followed by a five-byte copy.
// That is, 6 bytes of input turn into 7 bytes of "compressed" data.
//
// This last factor dominates the blowup, so the final estimate is:
return 32 + srcLen + srcLen/6
}

View File

@ -1,38 +0,0 @@
// Copyright 2011 The Snappy-Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Package snappy implements the snappy block-based compression format.
// It aims for very high speeds and reasonable compression.
//
// The C++ snappy implementation is at http://code.google.com/p/snappy/
package snappy
/*
Each encoded block begins with the varint-encoded length of the decoded data,
followed by a sequence of chunks. Chunks begin and end on byte boundaries. The
first byte of each chunk is broken into its 2 least and 6 most significant bits
called l and m: l ranges in [0, 4) and m ranges in [0, 64). l is the chunk tag.
Zero means a literal tag. All other values mean a copy tag.
For literal tags:
- If m < 60, the next 1 + m bytes are literal bytes.
- Otherwise, let n be the little-endian unsigned integer denoted by the next
m - 59 bytes. The next 1 + n bytes after that are literal bytes.
For copy tags, length bytes are copied from offset bytes ago, in the style of
Lempel-Ziv compression algorithms. In particular:
- For l == 1, the offset ranges in [0, 1<<11) and the length in [4, 12).
The length is 4 + the low 3 bits of m. The high 3 bits of m form bits 8-10
of the offset. The next byte is bits 0-7 of the offset.
- For l == 2, the offset ranges in [0, 1<<16) and the length in [1, 65).
The length is 1 + m. The offset is the little-endian unsigned integer
denoted by the next 2 bytes.
- For l == 3, this tag is a legacy format that is no longer supported.
*/
const (
tagLiteral = 0x00
tagCopy1 = 0x01
tagCopy2 = 0x02
tagCopy4 = 0x03
)

View File

@ -1,261 +0,0 @@
// Copyright 2011 The Snappy-Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package snappy
import (
"bytes"
"flag"
"fmt"
"io"
"io/ioutil"
"math/rand"
"net/http"
"os"
"path/filepath"
"strings"
"testing"
)
var download = flag.Bool("download", false, "If true, download any missing files before running benchmarks")
func roundtrip(b, ebuf, dbuf []byte) error {
e, err := Encode(ebuf, b)
if err != nil {
return fmt.Errorf("encoding error: %v", err)
}
d, err := Decode(dbuf, e)
if err != nil {
return fmt.Errorf("decoding error: %v", err)
}
if !bytes.Equal(b, d) {
return fmt.Errorf("roundtrip mismatch:\n\twant %v\n\tgot %v", b, d)
}
return nil
}
func TestEmpty(t *testing.T) {
if err := roundtrip(nil, nil, nil); err != nil {
t.Fatal(err)
}
}
func TestSmallCopy(t *testing.T) {
for _, ebuf := range [][]byte{nil, make([]byte, 20), make([]byte, 64)} {
for _, dbuf := range [][]byte{nil, make([]byte, 20), make([]byte, 64)} {
for i := 0; i < 32; i++ {
s := "aaaa" + strings.Repeat("b", i) + "aaaabbbb"
if err := roundtrip([]byte(s), ebuf, dbuf); err != nil {
t.Errorf("len(ebuf)=%d, len(dbuf)=%d, i=%d: %v", len(ebuf), len(dbuf), i, err)
}
}
}
}
}
func TestSmallRand(t *testing.T) {
rand.Seed(27354294)
for n := 1; n < 20000; n += 23 {
b := make([]byte, n)
for i, _ := range b {
b[i] = uint8(rand.Uint32())
}
if err := roundtrip(b, nil, nil); err != nil {
t.Fatal(err)
}
}
}
func TestSmallRegular(t *testing.T) {
for n := 1; n < 20000; n += 23 {
b := make([]byte, n)
for i, _ := range b {
b[i] = uint8(i%10 + 'a')
}
if err := roundtrip(b, nil, nil); err != nil {
t.Fatal(err)
}
}
}
func benchDecode(b *testing.B, src []byte) {
encoded, err := Encode(nil, src)
if err != nil {
b.Fatal(err)
}
// Bandwidth is in amount of uncompressed data.
b.SetBytes(int64(len(src)))
b.ResetTimer()
for i := 0; i < b.N; i++ {
Decode(src, encoded)
}
}
func benchEncode(b *testing.B, src []byte) {
// Bandwidth is in amount of uncompressed data.
b.SetBytes(int64(len(src)))
dst := make([]byte, MaxEncodedLen(len(src)))
b.ResetTimer()
for i := 0; i < b.N; i++ {
Encode(dst, src)
}
}
func readFile(b *testing.B, filename string) []byte {
src, err := ioutil.ReadFile(filename)
if err != nil {
b.Fatalf("failed reading %s: %s", filename, err)
}
if len(src) == 0 {
b.Fatalf("%s has zero length", filename)
}
return src
}
// expand returns a slice of length n containing repeated copies of src.
func expand(src []byte, n int) []byte {
dst := make([]byte, n)
for x := dst; len(x) > 0; {
i := copy(x, src)
x = x[i:]
}
return dst
}
func benchWords(b *testing.B, n int, decode bool) {
// Note: the file is OS-language dependent so the resulting values are not
// directly comparable for non-US-English OS installations.
data := expand(readFile(b, "/usr/share/dict/words"), n)
if decode {
benchDecode(b, data)
} else {
benchEncode(b, data)
}
}
func BenchmarkWordsDecode1e3(b *testing.B) { benchWords(b, 1e3, true) }
func BenchmarkWordsDecode1e4(b *testing.B) { benchWords(b, 1e4, true) }
func BenchmarkWordsDecode1e5(b *testing.B) { benchWords(b, 1e5, true) }
func BenchmarkWordsDecode1e6(b *testing.B) { benchWords(b, 1e6, true) }
func BenchmarkWordsEncode1e3(b *testing.B) { benchWords(b, 1e3, false) }
func BenchmarkWordsEncode1e4(b *testing.B) { benchWords(b, 1e4, false) }
func BenchmarkWordsEncode1e5(b *testing.B) { benchWords(b, 1e5, false) }
func BenchmarkWordsEncode1e6(b *testing.B) { benchWords(b, 1e6, false) }
// testFiles' values are copied directly from
// https://code.google.com/p/snappy/source/browse/trunk/snappy_unittest.cc.
// The label field is unused in snappy-go.
var testFiles = []struct {
label string
filename string
}{
{"html", "html"},
{"urls", "urls.10K"},
{"jpg", "house.jpg"},
{"pdf", "mapreduce-osdi-1.pdf"},
{"html4", "html_x_4"},
{"cp", "cp.html"},
{"c", "fields.c"},
{"lsp", "grammar.lsp"},
{"xls", "kennedy.xls"},
{"txt1", "alice29.txt"},
{"txt2", "asyoulik.txt"},
{"txt3", "lcet10.txt"},
{"txt4", "plrabn12.txt"},
{"bin", "ptt5"},
{"sum", "sum"},
{"man", "xargs.1"},
{"pb", "geo.protodata"},
{"gaviota", "kppkn.gtb"},
}
// The test data files are present at this canonical URL.
const baseURL = "https://snappy.googlecode.com/svn/trunk/testdata/"
func downloadTestdata(basename string) (errRet error) {
filename := filepath.Join("testdata", basename)
f, err := os.Create(filename)
if err != nil {
return fmt.Errorf("failed to create %s: %s", filename, err)
}
defer f.Close()
defer func() {
if errRet != nil {
os.Remove(filename)
}
}()
resp, err := http.Get(baseURL + basename)
if err != nil {
return fmt.Errorf("failed to download %s: %s", baseURL+basename, err)
}
defer resp.Body.Close()
_, err = io.Copy(f, resp.Body)
if err != nil {
return fmt.Errorf("failed to write %s: %s", filename, err)
}
return nil
}
func benchFile(b *testing.B, n int, decode bool) {
filename := filepath.Join("testdata", testFiles[n].filename)
if stat, err := os.Stat(filename); err != nil || stat.Size() == 0 {
if !*download {
b.Fatal("test data not found; skipping benchmark without the -download flag")
}
// Download the official snappy C++ implementation reference test data
// files for benchmarking.
if err := os.Mkdir("testdata", 0777); err != nil && !os.IsExist(err) {
b.Fatalf("failed to create testdata: %s", err)
}
for _, tf := range testFiles {
if err := downloadTestdata(tf.filename); err != nil {
b.Fatalf("failed to download testdata: %s", err)
}
}
}
data := readFile(b, filename)
if decode {
benchDecode(b, data)
} else {
benchEncode(b, data)
}
}
// Naming convention is kept similar to what snappy's C++ implementation uses.
func Benchmark_UFlat0(b *testing.B) { benchFile(b, 0, true) }
func Benchmark_UFlat1(b *testing.B) { benchFile(b, 1, true) }
func Benchmark_UFlat2(b *testing.B) { benchFile(b, 2, true) }
func Benchmark_UFlat3(b *testing.B) { benchFile(b, 3, true) }
func Benchmark_UFlat4(b *testing.B) { benchFile(b, 4, true) }
func Benchmark_UFlat5(b *testing.B) { benchFile(b, 5, true) }
func Benchmark_UFlat6(b *testing.B) { benchFile(b, 6, true) }
func Benchmark_UFlat7(b *testing.B) { benchFile(b, 7, true) }
func Benchmark_UFlat8(b *testing.B) { benchFile(b, 8, true) }
func Benchmark_UFlat9(b *testing.B) { benchFile(b, 9, true) }
func Benchmark_UFlat10(b *testing.B) { benchFile(b, 10, true) }
func Benchmark_UFlat11(b *testing.B) { benchFile(b, 11, true) }
func Benchmark_UFlat12(b *testing.B) { benchFile(b, 12, true) }
func Benchmark_UFlat13(b *testing.B) { benchFile(b, 13, true) }
func Benchmark_UFlat14(b *testing.B) { benchFile(b, 14, true) }
func Benchmark_UFlat15(b *testing.B) { benchFile(b, 15, true) }
func Benchmark_UFlat16(b *testing.B) { benchFile(b, 16, true) }
func Benchmark_UFlat17(b *testing.B) { benchFile(b, 17, true) }
func Benchmark_ZFlat0(b *testing.B) { benchFile(b, 0, false) }
func Benchmark_ZFlat1(b *testing.B) { benchFile(b, 1, false) }
func Benchmark_ZFlat2(b *testing.B) { benchFile(b, 2, false) }
func Benchmark_ZFlat3(b *testing.B) { benchFile(b, 3, false) }
func Benchmark_ZFlat4(b *testing.B) { benchFile(b, 4, false) }
func Benchmark_ZFlat5(b *testing.B) { benchFile(b, 5, false) }
func Benchmark_ZFlat6(b *testing.B) { benchFile(b, 6, false) }
func Benchmark_ZFlat7(b *testing.B) { benchFile(b, 7, false) }
func Benchmark_ZFlat8(b *testing.B) { benchFile(b, 8, false) }
func Benchmark_ZFlat9(b *testing.B) { benchFile(b, 9, false) }
func Benchmark_ZFlat10(b *testing.B) { benchFile(b, 10, false) }
func Benchmark_ZFlat11(b *testing.B) { benchFile(b, 11, false) }
func Benchmark_ZFlat12(b *testing.B) { benchFile(b, 12, false) }
func Benchmark_ZFlat13(b *testing.B) { benchFile(b, 13, false) }
func Benchmark_ZFlat14(b *testing.B) { benchFile(b, 14, false) }
func Benchmark_ZFlat15(b *testing.B) { benchFile(b, 15, false) }
func Benchmark_ZFlat16(b *testing.B) { benchFile(b, 16, false) }
func Benchmark_ZFlat17(b *testing.B) { benchFile(b, 17, false) }

View File

@ -1,5 +0,0 @@
/tmp
*/**/*un~
*un~
.DS_Store
*/**/.DS_Store

View File

@ -1,3 +0,0 @@
[submodule "serp"]
path = serpent
url = https://github.com/ethereum/serpent.git

View File

@ -1,12 +0,0 @@
[serpent](https://github.com/ethereum/serpent) go bindings.
## Build instructions
```
go get -d github.com/ethereum/serpent-go
cd $GOPATH/src/github.com/ethereum/serpent-go
git submodule init
git submodule update
```
You're now ready to go :-)

View File

@ -1,16 +0,0 @@
#include "serpent/bignum.cpp"
#include "serpent/util.cpp"
#include "serpent/tokenize.cpp"
#include "serpent/parser.cpp"
#include "serpent/compiler.cpp"
#include "serpent/funcs.cpp"
#include "serpent/lllparser.cpp"
#include "serpent/rewriter.cpp"
#include "serpent/opcodes.cpp"
#include "serpent/optimize.cpp"
#include "serpent/functions.cpp"
#include "serpent/preprocess.cpp"
#include "serpent/rewriteutils.cpp"
#include "cpp/api.cpp"

View File

@ -1,26 +0,0 @@
#include <string>
#include "serpent/lllparser.h"
#include "serpent/bignum.h"
#include "serpent/util.h"
#include "serpent/tokenize.h"
#include "serpent/parser.h"
#include "serpent/compiler.h"
#include "cpp/api.h"
const char *compileGo(char *code, int *err)
{
try {
std::string c = binToHex(compile(std::string(code)));
return c.c_str();
}
catch(std::string &error) {
*err = 1;
return error.c_str();
}
catch(...) {
return "Unknown error";
}
}

View File

@ -1,14 +0,0 @@
#ifndef CPP_API_H
#define CPP_API_H
#ifdef __cplusplus
extern "C" {
#endif
const char *compileGo(char *code, int *err);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,27 +0,0 @@
package serpent
// #cgo CXXFLAGS: -I. -Ilangs/ -std=c++0x -Wall -fno-strict-aliasing
// #cgo LDFLAGS: -lstdc++
//
// #include "cpp/api.h"
//
import "C"
import (
"encoding/hex"
"errors"
"unsafe"
)
func Compile(str string) ([]byte, error) {
var err C.int
out := C.GoString(C.compileGo(C.CString(str), (*C.int)(unsafe.Pointer(&err))))
if err == C.int(1) {
return nil, errors.New(out)
}
bytes, _ := hex.DecodeString(out)
return bytes, nil
}

View File

@ -1,12 +0,0 @@
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
*.un~
Session.vim
.netrwhist
*~
*.o
serpent
libserpent.a
pyserpent.so
dist
*.egg-info

View File

@ -1,5 +0,0 @@
include *.cpp
include *.h
include *py
include README.md
include Makefile

View File

@ -1,55 +0,0 @@
PLATFORM_OPTS =
PYTHON = /usr/include/python2.7
CXXFLAGS = -fPIC
# -g3 -O0
BOOST_INC = /usr/include
BOOST_LIB = /usr/lib
TARGET = pyserpent
COMMON_OBJS = bignum.o util.o tokenize.o lllparser.o parser.o opcodes.o optimize.o functions.o rewriteutils.o preprocess.o rewriter.o compiler.o funcs.o
HEADERS = bignum.h util.h tokenize.h lllparser.h parser.h opcodes.h functions.h optimize.h rewriteutils.h preprocess.h rewriter.h compiler.h funcs.h
PYTHON_VERSION = 2.7
serpent : serpentc lib
lib:
ar rvs libserpent.a $(COMMON_OBJS)
g++ $(CXXFLAGS) -shared $(COMMON_OBJS) -o libserpent.so
serpentc: $(COMMON_OBJS) cmdline.o
rm -rf serpent
g++ -Wall $(COMMON_OBJS) cmdline.o -o serpent
bignum.o : bignum.cpp bignum.h
opcodes.o : opcodes.cpp opcodes.h
util.o : util.cpp util.h bignum.o
tokenize.o : tokenize.cpp tokenize.h util.o
lllparser.o : lllparser.cpp lllparser.h tokenize.o util.o
parser.o : parser.cpp parser.h tokenize.o util.o
rewriter.o : rewriter.cpp rewriter.h lllparser.o util.o rewriteutils.o preprocess.o opcodes.o functions.o
preprocessor.o: rewriteutils.o functions.o
compiler.o : compiler.cpp compiler.h util.o
funcs.o : funcs.cpp funcs.h
cmdline.o: cmdline.cpp
pyext.o: pyext.cpp
clean:
rm -f serpent *\.o libserpent.a libserpent.so
install:
cp serpent /usr/local/bin
cp libserpent.a /usr/local/lib
cp libserpent.so /usr/local/lib
rm -rf /usr/local/include/libserpent
mkdir -p /usr/local/include/libserpent
cp $(HEADERS) /usr/local/include/libserpent

View File

@ -1,3 +0,0 @@
Installation:
```make && sudo make install```

View File

@ -1,112 +0,0 @@
#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>
#include "bignum.h"
//Integer to string conversion
std::string unsignedToDecimal(unsigned branch) {
if (branch < 10) return nums.substr(branch, 1);
else return unsignedToDecimal(branch / 10) + nums.substr(branch % 10,1);
}
//Add two strings representing decimal values
std::string decimalAdd(std::string a, std::string b) {
std::string o = a;
while (b.length() < a.length()) b = "0" + b;
while (o.length() < b.length()) o = "0" + o;
bool carry = false;
for (int i = o.length() - 1; i >= 0; i--) {
o[i] = o[i] + b[i] - '0';
if (carry) o[i]++;
if (o[i] > '9') {
o[i] -= 10;
carry = true;
}
else carry = false;
}
if (carry) o = "1" + o;
return o;
}
//Helper function for decimalMul
std::string decimalDigitMul(std::string a, int dig) {
if (dig == 0) return "0";
else return decimalAdd(a, decimalDigitMul(a, dig - 1));
}
//Multiply two strings representing decimal values
std::string decimalMul(std::string a, std::string b) {
std::string o = "0";
for (unsigned i = 0; i < b.length(); i++) {
std::string n = decimalDigitMul(a, b[i] - '0');
if (n != "0") {
for (unsigned j = i + 1; j < b.length(); j++) n += "0";
}
o = decimalAdd(o, n);
}
return o;
}
//Modexp
std::string decimalModExp(std::string b, std::string e, std::string m) {
if (e == "0") return "1";
else if (e == "1") return b;
else if (decimalMod(e, "2") == "0") {
std::string o = decimalModExp(b, decimalDiv(e, "2"), m);
return decimalMod(decimalMul(o, o), m);
}
else {
std::string o = decimalModExp(b, decimalDiv(e, "2"), m);
return decimalMod(decimalMul(decimalMul(o, o), b), m);
}
}
//Is a greater than b? Flag allows equality
bool decimalGt(std::string a, std::string b, bool eqAllowed) {
if (a == b) return eqAllowed;
return (a.length() > b.length()) || (a.length() >= b.length() && a > b);
}
//Subtract the two strings representing decimal values
std::string decimalSub(std::string a, std::string b) {
if (b == "0") return a;
if (b == a) return "0";
while (b.length() < a.length()) b = "0" + b;
std::string c = b;
for (unsigned i = 0; i < c.length(); i++) c[i] = '0' + ('9' - c[i]);
std::string o = decimalAdd(decimalAdd(a, c).substr(1), "1");
while (o.size() > 1 && o[0] == '0') o = o.substr(1);
return o;
}
//Divide the two strings representing decimal values
std::string decimalDiv(std::string a, std::string b) {
std::string c = b;
if (decimalGt(c, a)) return "0";
int zeroes = -1;
while (decimalGt(a, c, true)) {
zeroes += 1;
c = c + "0";
}
c = c.substr(0, c.size() - 1);
std::string quot = "0";
while (decimalGt(a, c, true)) {
a = decimalSub(a, c);
quot = decimalAdd(quot, "1");
}
for (int i = 0; i < zeroes; i++) quot += "0";
return decimalAdd(quot, decimalDiv(a, b));
}
//Modulo the two strings representing decimal values
std::string decimalMod(std::string a, std::string b) {
return decimalSub(a, decimalMul(decimalDiv(a, b), b));
}
//String to int conversion
unsigned decimalToUnsigned(std::string a) {
if (a.size() == 0) return 0;
else return (a[a.size() - 1] - '0')
+ decimalToUnsigned(a.substr(0,a.size()-1)) * 10;
}

View File

@ -1,41 +0,0 @@
#ifndef ETHSERP_BIGNUM
#define ETHSERP_BIGNUM
const std::string nums = "0123456789";
const std::string tt256 =
"115792089237316195423570985008687907853269984665640564039457584007913129639936"
;
const std::string tt256m1 =
"115792089237316195423570985008687907853269984665640564039457584007913129639935"
;
const std::string tt255 =
"57896044618658097711785492504343953926634992332820282019728792003956564819968";
const std::string tt176 =
"95780971304118053647396689196894323976171195136475136";
std::string unsignedToDecimal(unsigned branch);
std::string decimalAdd(std::string a, std::string b);
std::string decimalMul(std::string a, std::string b);
std::string decimalSub(std::string a, std::string b);
std::string decimalDiv(std::string a, std::string b);
std::string decimalMod(std::string a, std::string b);
std::string decimalModExp(std::string b, std::string e, std::string m);
bool decimalGt(std::string a, std::string b, bool eqAllowed=false);
unsigned decimalToUnsigned(std::string a);
#define utd unsignedToDecimal
#define dtu decimalToUnsigned
#endif

View File

@ -1,132 +0,0 @@
#include <stdio.h>
#include <string>
#include <iostream>
#include <vector>
#include <map>
#include "funcs.h"
int main(int argv, char** argc) {
if (argv == 1) {
std::cerr << "Must provide a command and arguments! Try parse, rewrite, compile, assemble\n";
return 0;
}
if (argv == 2 && std::string(argc[1]) == "--help" || std::string(argc[1]) == "-h" ) {
std::cout << argc[1] << "\n";
std::cout << "serpent command input\n";
std::cout << "where input -s for from stdin, a file, or interpreted as serpent code if does not exist as file.";
std::cout << "where command: \n";
std::cout << " parse: Just parses and returns s-expression code.\n";
std::cout << " rewrite: Parse, use rewrite rules print s-expressions of result.\n";
std::cout << " compile: Return resulting compiled EVM code in hex.\n";
std::cout << " assemble: Return result from step before compilation.\n";
return 0;
}
std::string flag = "";
std::string command = argc[1];
std::string input;
std::string secondInput;
if (std::string(argc[1]) == "-s") {
flag = command.substr(1);
command = argc[2];
input = "";
std::string line;
while (std::getline(std::cin, line)) {
input += line + "\n";
}
secondInput = argv == 3 ? "" : argc[3];
}
else {
if (argv == 2) {
std::cerr << "Not enough arguments for serpent cmdline\n";
throw(0);
}
input = argc[2];
secondInput = argv == 3 ? "" : argc[3];
}
bool haveSec = secondInput.length() > 0;
if (command == "parse" || command == "parse_serpent") {
std::cout << printAST(parseSerpent(input), haveSec) << "\n";
}
else if (command == "rewrite") {
std::cout << printAST(rewrite(parseLLL(input, true)), haveSec) << "\n";
}
else if (command == "compile_to_lll") {
std::cout << printAST(compileToLLL(input), haveSec) << "\n";
}
else if (command == "rewrite_chunk") {
std::cout << printAST(rewriteChunk(parseLLL(input, true)), haveSec) << "\n";
}
else if (command == "compile_chunk_to_lll") {
std::cout << printAST(compileChunkToLLL(input), haveSec) << "\n";
}
else if (command == "build_fragtree") {
std::cout << printAST(buildFragmentTree(parseLLL(input, true))) << "\n";
}
else if (command == "compile_lll") {
std::cout << binToHex(compileLLL(parseLLL(input, true))) << "\n";
}
else if (command == "dereference") {
std::cout << printAST(dereference(parseLLL(input, true)), haveSec) <<"\n";
}
else if (command == "pretty_assemble") {
std::cout << printTokens(prettyAssemble(parseLLL(input, true))) <<"\n";
}
else if (command == "pretty_compile_lll") {
std::cout << printTokens(prettyCompileLLL(parseLLL(input, true))) << "\n";
}
else if (command == "pretty_compile") {
std::cout << printTokens(prettyCompile(input)) << "\n";
}
else if (command == "pretty_compile_chunk") {
std::cout << printTokens(prettyCompileChunk(input)) << "\n";
}
else if (command == "assemble") {
std::cout << assemble(parseLLL(input, true)) << "\n";
}
else if (command == "serialize") {
std::cout << binToHex(serialize(tokenize(input, Metadata(), false))) << "\n";
}
else if (command == "flatten") {
std::cout << printTokens(flatten(parseLLL(input, true))) << "\n";
}
else if (command == "deserialize") {
std::cout << printTokens(deserialize(hexToBin(input))) << "\n";
}
else if (command == "compile") {
std::cout << binToHex(compile(input)) << "\n";
}
else if (command == "compile_chunk") {
std::cout << binToHex(compileChunk(input)) << "\n";
}
else if (command == "encode_datalist") {
std::vector<Node> tokens = tokenize(input);
std::vector<std::string> o;
for (int i = 0; i < (int)tokens.size(); i++) {
o.push_back(tokens[i].val);
}
std::cout << binToHex(encodeDatalist(o)) << "\n";
}
else if (command == "decode_datalist") {
std::vector<std::string> o = decodeDatalist(hexToBin(input));
std::vector<Node> tokens;
for (int i = 0; i < (int)o.size(); i++)
tokens.push_back(token(o[i]));
std::cout << printTokens(tokens) << "\n";
}
else if (command == "tokenize") {
std::cout << printTokens(tokenize(input));
}
else if (command == "biject") {
if (argv == 3)
std::cerr << "Not enough arguments for biject\n";
int pos = decimalToUnsigned(secondInput);
std::vector<Node> n = prettyCompile(input);
if (pos >= (int)n.size())
std::cerr << "Code position too high\n";
Metadata m = n[pos].metadata;
std::cout << "Opcode: " << n[pos].val << ", file: " << m.file <<
", line: " << m.ln << ", char: " << m.ch << "\n";
}
}

View File

@ -1,554 +0,0 @@
#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>
#include "util.h"
#include "bignum.h"
#include "opcodes.h"
struct programAux {
std::map<std::string, std::string> vars;
int nextVarMem;
bool allocUsed;
bool calldataUsed;
int step;
int labelLength;
};
struct programVerticalAux {
int height;
std::string innerScopeName;
std::map<std::string, int> dupvars;
std::map<std::string, int> funvars;
std::vector<mss> scopes;
};
struct programData {
programAux aux;
Node code;
int outs;
};
programAux Aux() {
programAux o;
o.allocUsed = false;
o.calldataUsed = false;
o.step = 0;
o.nextVarMem = 32;
return o;
}
programVerticalAux verticalAux() {
programVerticalAux o;
o.height = 0;
o.dupvars = std::map<std::string, int>();
o.funvars = std::map<std::string, int>();
o.scopes = std::vector<mss>();
return o;
}
programData pd(programAux aux = Aux(), Node code=token("_"), int outs=0) {
programData o;
o.aux = aux;
o.code = code;
o.outs = outs;
return o;
}
Node multiToken(Node nodes[], int len, Metadata met) {
std::vector<Node> out;
for (int i = 0; i < len; i++) {
out.push_back(nodes[i]);
}
return astnode("_", out, met);
}
Node finalize(programData c);
Node popwrap(Node node) {
Node nodelist[] = {
node,
token("POP", node.metadata)
};
return multiToken(nodelist, 2, node.metadata);
}
// Grabs variables
mss getVariables(Node node, mss cur=mss()) {
Metadata m = node.metadata;
// Tokens don't contain any variables
if (node.type == TOKEN)
return cur;
// Don't descend into call fragments
else if (node.val == "lll")
return getVariables(node.args[1], cur);
// At global scope get/set/ref also declare
else if (node.val == "get" || node.val == "set" || node.val == "ref") {
if (node.args[0].type != TOKEN)
err("Variable name must be simple token,"
" not complex expression!", m);
if (!cur.count(node.args[0].val)) {
cur[node.args[0].val] = utd(cur.size() * 32 + 32);
//std::cerr << node.args[0].val << " " << cur[node.args[0].val] << "\n";
}
}
// Recursively process children
for (unsigned i = 0; i < node.args.size(); i++) {
cur = getVariables(node.args[i], cur);
}
return cur;
}
// Turns LLL tree into tree of code fragments
programData opcodeify(Node node,
programAux aux=Aux(),
programVerticalAux vaux=verticalAux()) {
std::string symb = "_"+mkUniqueToken();
Metadata m = node.metadata;
// Get variables
if (!aux.vars.size()) {
aux.vars = getVariables(node);
aux.nextVarMem = aux.vars.size() * 32 + 32;
}
// Numbers
if (node.type == TOKEN) {
return pd(aux, nodeToNumeric(node), 1);
}
else if (node.val == "ref" || node.val == "get" || node.val == "set") {
std::string varname = node.args[0].val;
// Determine reference to variable
Node varNode = tkn(aux.vars[varname], m);
//std::cerr << varname << " " << printSimple(varNode) << "\n";
// Set variable
if (node.val == "set") {
programData sub = opcodeify(node.args[1], aux, vaux);
if (!sub.outs)
err("Value to set variable must have nonzero arity!", m);
// What if we are setting a stack variable?
if (vaux.dupvars.count(node.args[0].val)) {
int h = vaux.height - vaux.dupvars[node.args[0].val];
if (h > 16) err("Too deep for stack variable (max 16)", m);
Node nodelist[] = {
sub.code,
token("SWAP"+unsignedToDecimal(h), m),
token("POP", m)
};
return pd(sub.aux, multiToken(nodelist, 3, m), 0);
}
// Setting a memory variable
else {
Node nodelist[] = {
sub.code,
varNode,
token("MSTORE", m),
};
return pd(sub.aux, multiToken(nodelist, 3, m), 0);
}
}
// Get variable
else if (node.val == "get") {
// Getting a stack variable
if (vaux.dupvars.count(node.args[0].val)) {
int h = vaux.height - vaux.dupvars[node.args[0].val];
if (h > 16) err("Too deep for stack variable (max 16)", m);
return pd(aux, token("DUP"+unsignedToDecimal(h)), 1);
}
// Getting a memory variable
else {
Node nodelist[] =
{ varNode, token("MLOAD", m) };
return pd(aux, multiToken(nodelist, 2, m), 1);
}
}
// Refer variable
else if (node.val == "ref") {
if (vaux.dupvars.count(node.args[0].val))
err("Cannot ref stack variable!", m);
return pd(aux, varNode, 1);
}
}
// Comments do nothing
else if (node.val == "comment") {
Node nodelist[] = { };
return pd(aux, multiToken(nodelist, 0, m), 0);
}
// Custom operation sequence
// eg. (ops bytez id msize swap1 msize add 0 swap1 mstore) == alloc
if (node.val == "ops") {
std::vector<Node> subs2;
int depth = 0;
for (unsigned i = 0; i < node.args.size(); i++) {
std::string op = upperCase(node.args[i].val);
if (node.args[i].type == ASTNODE || opinputs(op) == -1) {
programVerticalAux vaux2 = vaux;
vaux2.height = vaux.height - i - 1 + node.args.size();
programData sub = opcodeify(node.args[i], aux, vaux2);
aux = sub.aux;
depth += sub.outs;
subs2.push_back(sub.code);
}
else {
subs2.push_back(token(op, m));
depth += opoutputs(op) - opinputs(op);
}
}
if (depth < 0 || depth > 1) err("Stack depth mismatch", m);
return pd(aux, astnode("_", subs2, m), 0);
}
// Code blocks
if (node.val == "lll" && node.args.size() == 2) {
if (node.args[1].val != "0") aux.allocUsed = true;
std::vector<Node> o;
o.push_back(finalize(opcodeify(node.args[0])));
programData sub = opcodeify(node.args[1], aux, vaux);
Node code = astnode("____CODE", o, m);
Node nodelist[] = {
token("$begincode"+symb+".endcode"+symb, m), token("DUP1", m),
token("$begincode"+symb, m), sub.code, token("CODECOPY", m),
token("$endcode"+symb, m), token("JUMP", m),
token("~begincode"+symb, m), code,
token("~endcode"+symb, m), token("JUMPDEST", m)
};
return pd(sub.aux, multiToken(nodelist, 11, m), 1);
}
// Stack variables
if (node.val == "with") {
programData initial = opcodeify(node.args[1], aux, vaux);
programVerticalAux vaux2 = vaux;
vaux2.dupvars[node.args[0].val] = vaux.height;
vaux2.height += 1;
if (!initial.outs)
err("Initial variable value must have nonzero arity!", m);
programData sub = opcodeify(node.args[2], initial.aux, vaux2);
Node nodelist[] = {
initial.code,
sub.code
};
programData o = pd(sub.aux, multiToken(nodelist, 2, m), sub.outs);
if (sub.outs)
o.code.args.push_back(token("SWAP1", m));
o.code.args.push_back(token("POP", m));
return o;
}
// Seq of multiple statements
if (node.val == "seq") {
std::vector<Node> children;
int lastOut = 0;
for (unsigned i = 0; i < node.args.size(); i++) {
programData sub = opcodeify(node.args[i], aux, vaux);
aux = sub.aux;
if (sub.outs == 1) {
if (i < node.args.size() - 1) sub.code = popwrap(sub.code);
else lastOut = 1;
}
children.push_back(sub.code);
}
return pd(aux, astnode("_", children, m), lastOut);
}
// 2-part conditional (if gets rewritten to unless in rewrites)
else if (node.val == "unless" && node.args.size() == 2) {
programData cond = opcodeify(node.args[0], aux, vaux);
programData action = opcodeify(node.args[1], cond.aux, vaux);
aux = action.aux;
if (!cond.outs) err("Condition of if/unless statement has arity 0", m);
if (action.outs) action.code = popwrap(action.code);
Node nodelist[] = {
cond.code,
token("$endif"+symb, m), token("JUMPI", m),
action.code,
token("~endif"+symb, m), token("JUMPDEST", m)
};
return pd(aux, multiToken(nodelist, 6, m), 0);
}
// 3-part conditional
else if (node.val == "if" && node.args.size() == 3) {
programData ifd = opcodeify(node.args[0], aux, vaux);
programData thend = opcodeify(node.args[1], ifd.aux, vaux);
programData elsed = opcodeify(node.args[2], thend.aux, vaux);
aux = elsed.aux;
if (!ifd.outs)
err("Condition of if/unless statement has arity 0", m);
// Handle cases where one conditional outputs something
// and the other does not
int outs = (thend.outs && elsed.outs) ? 1 : 0;
if (thend.outs > outs) thend.code = popwrap(thend.code);
if (elsed.outs > outs) elsed.code = popwrap(elsed.code);
Node nodelist[] = {
ifd.code,
token("ISZERO", m),
token("$else"+symb, m), token("JUMPI", m),
thend.code,
token("$endif"+symb, m), token("JUMP", m),
token("~else"+symb, m), token("JUMPDEST", m),
elsed.code,
token("~endif"+symb, m), token("JUMPDEST", m)
};
return pd(aux, multiToken(nodelist, 12, m), outs);
}
// While (rewritten to this in rewrites)
else if (node.val == "until") {
programData cond = opcodeify(node.args[0], aux, vaux);
programData action = opcodeify(node.args[1], cond.aux, vaux);
aux = action.aux;
if (!cond.outs)
err("Condition of while/until loop has arity 0", m);
if (action.outs) action.code = popwrap(action.code);
Node nodelist[] = {
token("~beg"+symb, m), token("JUMPDEST", m),
cond.code,
token("$end"+symb, m), token("JUMPI", m),
action.code,
token("$beg"+symb, m), token("JUMP", m),
token("~end"+symb, m), token("JUMPDEST", m),
};
return pd(aux, multiToken(nodelist, 10, m));
}
// Memory allocations
else if (node.val == "alloc") {
programData bytez = opcodeify(node.args[0], aux, vaux);
aux = bytez.aux;
if (!bytez.outs)
err("Alloc input has arity 0", m);
aux.allocUsed = true;
Node nodelist[] = {
bytez.code,
token("MSIZE", m), token("SWAP1", m), token("MSIZE", m),
token("ADD", m),
token("0", m), token("SWAP1", m), token("MSTORE", m)
};
return pd(aux, multiToken(nodelist, 8, m), 1);
}
// All other functions/operators
else {
std::vector<Node> subs2;
int depth = opinputs(upperCase(node.val));
if (depth == -1)
err("Not a function or opcode: "+node.val, m);
if ((int)node.args.size() != depth)
err("Invalid arity for "+node.val, m);
for (int i = node.args.size() - 1; i >= 0; i--) {
programVerticalAux vaux2 = vaux;
vaux2.height = vaux.height - i - 1 + node.args.size();
programData sub = opcodeify(node.args[i], aux, vaux2);
aux = sub.aux;
if (!sub.outs)
err("Input "+unsignedToDecimal(i)+" has arity 0", sub.code.metadata);
subs2.push_back(sub.code);
}
subs2.push_back(token(upperCase(node.val), m));
int outdepth = opoutputs(upperCase(node.val));
return pd(aux, astnode("_", subs2, m), outdepth);
}
}
// Adds necessary wrappers to a program
Node finalize(programData c) {
std::vector<Node> bottom;
Metadata m = c.code.metadata;
// If we are using both alloc and variables, we need to pre-zfill
// some memory
if ((c.aux.allocUsed || c.aux.calldataUsed) && c.aux.vars.size() > 0) {
Node nodelist[] = {
token("0", m),
token(unsignedToDecimal(c.aux.nextVarMem - 1)),
token("MSTORE8", m)
};
bottom.push_back(multiToken(nodelist, 3, m));
}
// The actual code
bottom.push_back(c.code);
return astnode("_", bottom, m);
}
//LLL -> code fragment tree
Node buildFragmentTree(Node node) {
return finalize(opcodeify(node));
}
// Builds a dictionary mapping labels to variable names
programAux buildDict(Node program, programAux aux, int labelLength) {
Metadata m = program.metadata;
// Token
if (program.type == TOKEN) {
if (isNumberLike(program)) {
aux.step += 1 + toByteArr(program.val, m).size();
}
else if (program.val[0] == '~') {
aux.vars[program.val.substr(1)] = unsignedToDecimal(aux.step);
}
else if (program.val[0] == '$') {
aux.step += labelLength + 1;
}
else aux.step += 1;
}
// A sub-program (ie. LLL)
else if (program.val == "____CODE") {
programAux auks = Aux();
for (unsigned i = 0; i < program.args.size(); i++) {
auks = buildDict(program.args[i], auks, labelLength);
}
for (std::map<std::string,std::string>::iterator it=auks.vars.begin();
it != auks.vars.end();
it++) {
aux.vars[(*it).first] = (*it).second;
}
aux.step += auks.step;
}
// Normal sub-block
else {
for (unsigned i = 0; i < program.args.size(); i++) {
aux = buildDict(program.args[i], aux, labelLength);
}
}
return aux;
}
// Applies that dictionary
Node substDict(Node program, programAux aux, int labelLength) {
Metadata m = program.metadata;
std::vector<Node> out;
std::vector<Node> inner;
if (program.type == TOKEN) {
if (program.val[0] == '$') {
std::string tokStr = "PUSH"+unsignedToDecimal(labelLength);
out.push_back(token(tokStr, m));
int dotLoc = program.val.find('.');
if (dotLoc == -1) {
std::string val = aux.vars[program.val.substr(1)];
inner = toByteArr(val, m, labelLength);
}
else {
std::string start = aux.vars[program.val.substr(1, dotLoc-1)],
end = aux.vars[program.val.substr(dotLoc + 1)],
dist = decimalSub(end, start);
inner = toByteArr(dist, m, labelLength);
}
out.push_back(astnode("_", inner, m));
}
else if (program.val[0] == '~') { }
else if (isNumberLike(program)) {
inner = toByteArr(program.val, m);
out.push_back(token("PUSH"+unsignedToDecimal(inner.size())));
out.push_back(astnode("_", inner, m));
}
else return program;
}
else {
for (unsigned i = 0; i < program.args.size(); i++) {
Node n = substDict(program.args[i], aux, labelLength);
if (n.type == TOKEN || n.args.size()) out.push_back(n);
}
}
return astnode("_", out, m);
}
// Compiled fragtree -> compiled fragtree without labels
Node dereference(Node program) {
int sz = treeSize(program) * 4;
int labelLength = 1;
while (sz >= 256) { labelLength += 1; sz /= 256; }
programAux aux = buildDict(program, Aux(), labelLength);
return substDict(program, aux, labelLength);
}
// Dereferenced fragtree -> opcodes
std::vector<Node> flatten(Node derefed) {
std::vector<Node> o;
if (derefed.type == TOKEN) {
o.push_back(derefed);
}
else {
for (unsigned i = 0; i < derefed.args.size(); i++) {
std::vector<Node> oprime = flatten(derefed.args[i]);
for (unsigned j = 0; j < oprime.size(); j++) o.push_back(oprime[j]);
}
}
return o;
}
// Opcodes -> bin
std::string serialize(std::vector<Node> codons) {
std::string o;
for (unsigned i = 0; i < codons.size(); i++) {
int v;
if (isNumberLike(codons[i])) {
v = decimalToUnsigned(codons[i].val);
}
else if (codons[i].val.substr(0,4) == "PUSH") {
v = 95 + decimalToUnsigned(codons[i].val.substr(4));
}
else {
v = opcode(codons[i].val);
}
o += (char)v;
}
return o;
}
// Bin -> opcodes
std::vector<Node> deserialize(std::string ser) {
std::vector<Node> o;
int backCount = 0;
for (unsigned i = 0; i < ser.length(); i++) {
unsigned char v = (unsigned char)ser[i];
std::string oper = op((int)v);
if (oper != "" && backCount <= 0) o.push_back(token(oper));
else if (v >= 96 && v < 128 && backCount <= 0) {
o.push_back(token("PUSH"+unsignedToDecimal(v - 95)));
}
else o.push_back(token(unsignedToDecimal(v)));
if (v >= 96 && v < 128 && backCount <= 0) {
backCount = v - 95;
}
else backCount--;
}
return o;
}
// Fragtree -> bin
std::string assemble(Node fragTree) {
return serialize(flatten(dereference(fragTree)));
}
// Fragtree -> tokens
std::vector<Node> prettyAssemble(Node fragTree) {
return flatten(dereference(fragTree));
}
// LLL -> bin
std::string compileLLL(Node program) {
return assemble(buildFragmentTree(program));
}
// LLL -> tokens
std::vector<Node> prettyCompileLLL(Node program) {
return prettyAssemble(buildFragmentTree(program));
}
// Converts a list of integer values to binary transaction data
std::string encodeDatalist(std::vector<std::string> vals) {
std::string o;
for (unsigned i = 0; i < vals.size(); i++) {
std::vector<Node> n = toByteArr(strToNumeric(vals[i]), Metadata(), 32);
for (unsigned j = 0; j < n.size(); j++) {
int v = decimalToUnsigned(n[j].val);
o += (char)v;
}
}
return o;
}
// Converts binary transaction data into a list of integer values
std::vector<std::string> decodeDatalist(std::string ser) {
std::vector<std::string> out;
for (unsigned i = 0; i < ser.length(); i+= 32) {
std::string o = "0";
for (unsigned j = i; j < i + 32; j++) {
int vj = (int)(unsigned char)ser[j];
o = decimalAdd(decimalMul(o, "256"), unsignedToDecimal(vj));
}
out.push_back(o);
}
return out;
}

View File

@ -1,43 +0,0 @@
#ifndef ETHSERP_COMPILER
#define ETHSERP_COMPILER
#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>
#include "util.h"
// Compiled fragtree -> compiled fragtree without labels
Node dereference(Node program);
// LLL -> fragtree
Node buildFragmentTree(Node program);
// Dereferenced fragtree -> opcodes
std::vector<Node> flatten(Node derefed);
// opcodes -> bin
std::string serialize(std::vector<Node> codons);
// Fragtree -> bin
std::string assemble(Node fragTree);
// Fragtree -> opcodes
std::vector<Node> prettyAssemble(Node fragTree);
// LLL -> bin
std::string compileLLL(Node program);
// LLL -> opcodes
std::vector<Node> prettyCompileLLL(Node program);
// bin -> opcodes
std::vector<Node> deserialize(std::string ser);
// Converts a list of integer values to binary transaction data
std::string encodeDatalist(std::vector<std::string> vals);
// Converts binary transaction data into a list of integer values
std::vector<std::string> decodeDatalist(std::string ser);
#endif

View File

@ -1,11 +0,0 @@
#include <libserpent/funcs.h>
#include <libserpent/bignum.h>
#include <iostream>
using namespace std;
int main() {
cout << printAST(compileToLLL(get_file_contents("examples/namecoin.se"))) << "\n";
cout << decimalSub("10234", "10234") << "\n";
cout << decimalSub("10234", "10233") << "\n";
}

View File

@ -1,11 +0,0 @@
x = msg.data[0]
steps = 0
while x > 1:
steps += 1
if (x % 2) == 0:
x /= 2
else:
x = 3 * x + 1
return(steps)

View File

@ -1,274 +0,0 @@
# Ethereum forks Counterparty in 340 lines of serpent
# Not yet tested
# assets[i] = a registered asset, assets[i].holders[j] = former or current i-holder
data assets[2^50](creator, name, calldate, callprice, dividend_paid, holders[2^50], holdersCount)
data nextAssetId
# holdersMap: holdersMap[addr][asset] = 1 if addr holds asset
data holdersMap[2^160][2^50]
# balances[x][y] = how much of y x holds
data balances[2^160][2^50]
# orders[a][b] = heap of indices to (c, d, e)
# = c offers to sell d units of a at a price of e units of b per 10^18 units
# of a
data orderbooks[2^50][2^50]
# store of general order data
data orders[2^50](seller, asset_sold, quantity, price)
data ordersCount
# data feeds
data feeds[2^50](owner, value)
data feedCount
# heap
data heap
extern heap: [register, push, pop, top, size]
data cfds[2^50](maker, acceptor, feed, asset, strike, leverage, min, max, maturity)
data cfdCount
data bets[2^50](maker, acceptor, feed, asset, makerstake, acceptorstake, eqtest, maturity)
data betCount
def init():
heap = create('heap.se')
# Add units (internal method)
def add(to, asset, value):
assert msg.sender == self
self.balances[to][asset] += value
# Add the holder to the holders list
if not self.holdersMap[to][asset]:
self.holdersMap[to][asset] = 1
c = self.assets[asset].holdersCount
self.assets[asset].holders[c] = to
self.assets[asset].holdersCount = c + 1
# Register a new asset
def register_asset(q, name, calldate, callprice):
newid = self.nextAssetId
self.assets[newid].creator = msg.sender
self.assets[newid].name = name
self.assets[newid].calldate = calldate
self.assets[newid].callprice = callprice
self.assets[newid].holders[0] = msg.sender
self.assets[newid].holdersCount = 1
self.balances[msg.sender][newid] = q
self.holdersMap[msg.sender][newid] = 1
# Send
def send(to, asset, value):
fromval = self.balances[msg.sender][asset]
if fromval >= value:
self.balances[msg.sender][asset] -= value
self.add(to, asset, value)
# Order
def mkorder(selling, buying, quantity, price):
# Make sure you have enough to pay for the order
assert self.balances[msg.sender][selling] >= quantity:
# Try to match existing orders
o = orderbooks[buying][selling]
if not o:
o = self.heap.register()
orderbooks[selling][buying] = o
sz = self.heap.size(o)
invprice = 10^36 / price
while quantity > 0 and sz > 0:
orderid = self.heap.pop()
p = self.orders[orderid].price
if p > invprice:
sz = 0
else:
q = self.orders[orderid].quantity
oq = min(q, quantity)
b = self.orders[orderid].seller
self.balances[msg.sender][selling] -= oq * p / 10^18
self.add(msg.sender, buying, oq)
self.add(b, selling, oq * p / 10^18)
self.orders[orderid].quantity = q - oq
if oq == q:
self.orders[orderid].seller = 0
self.orders[orderid].price = 0
self.orders[orderid].asset_sold = 0
quantity -= oq
sz -= 1
assert quantity > 0
# Make the order
c = self.ordersCount
self.orders[c].seller = msg.sender
self.orders[c].asset_sold = selling
self.orders[c].quantity = quantity
self.orders[c].price = price
self.ordersCount += 1
# Add it to the heap
o = orderbooks[selling][buying]
if not o:
o = self.heap.register()
orderbooks[selling][buying] = o
self.balances[msg.sender][selling] -= quantity
self.heap.push(o, price, c)
return(c)
def cancel_order(id):
if self.orders[id].seller == msg.sender:
self.orders[id].seller = 0
self.orders[id].price = 0
self.balances[msg.sender][self.orders[id].asset_sold] += self.orders[id].quantity
self.orders[id].quantity = 0
self.orders[id].asset_sold = 0
def register_feed():
c = self.feedCount
self.feeds[c].owner = msg.sender
self.feedCount = c + 1
return(c)
def set_feed(id, v):
if self.feeds[id].owner == msg.sender:
self.feeds[id].value = v
def mk_cfd_offer(feed, asset, strike, leverage, min, max, maturity):
b = self.balances[msg.sender][asset]
req = max((strike - min) * leverage, (strike - max) * leverage)
assert b >= req
self.balances[msg.sender][asset] = b - req
c = self.cfdCount
self.cfds[c].maker = msg.sender
self.cfds[c].feed = feed
self.cfds[c].asset = asset
self.cfds[c].strike = strike
self.cfds[c].leverage = leverage
self.cfds[c].min = min
self.cfds[c].max = max
self.cfds[c].maturity = maturity
self.cfdCount = c + 1
return(c)
def accept_cfd_offer(c):
assert not self.cfds[c].acceptor and self.cfds[c].maker
asset = self.cfds[c].asset
strike = self.cfds[c].strike
min = self.cfds[c].min
max = self.cfds[c].max
leverage = self.cfds[c].leverage
b = self.balances[msg.sender][asset]
req = max((min - strike) * leverage, (max - strike) * leverage)
assert b >= req
self.balances[msg.sender][asset] = b - req
self.cfds[c].acceptor = msg.sender
self.cfds[c].maturity += block.timestamp
def claim_cfd_offer(c):
asset = self.cfds[c].asset
strike = self.cfds[c].strike
min = self.cfds[c].min
max = self.cfds[c].max
leverage = self.cfds[c].leverage
v = self.feeds[self.cfds[c].feed].value
assert v <= min or v >= max or block.timestamp >= self.cfds[c].maturity
maker_req = max((strike - min) * leverage, (strike - max) * leverage)
acceptor_req = max((min - strike) * leverage, (max - strike) * leverage)
paydelta = (strike - v) * leverage
self.add(self.cfds[c].maker, asset, maker_req + paydelta)
self.add(self.cfds[c].acceptor, asset, acceptor_req - paydelta)
self.cfds[c].maker = 0
self.cfds[c].acceptor = 0
self.cfds[c].feed = 0
self.cfds[c].asset = 0
self.cfds[c].strike = 0
self.cfds[c].leverage = 0
self.cfds[c].min = 0
self.cfds[c].max = 0
self.cfds[c].maturity = 0
def withdraw_cfd_offer(c):
if self.cfds[c].maker == msg.sender and not self.cfds[c].acceptor:
asset = self.cfds[c].asset
strike = self.cfds[c].strike
min = self.cfds[c].min
max = self.cfds[c].max
leverage = self.cfds[c].leverage
maker_req = max((strike - min) * leverage, (strike - max) * leverage)
self.balances[self.cfds[c].maker][asset] += maker_req
self.cfds[c].maker = 0
self.cfds[c].acceptor = 0
self.cfds[c].feed = 0
self.cfds[c].asset = 0
self.cfds[c].strike = 0
self.cfds[c].leverage = 0
self.cfds[c].min = 0
self.cfds[c].max = 0
self.cfds[c].maturity = 0
def mk_bet_offer(feed, asset, makerstake, acceptorstake, eqtest, maturity):
assert self.balances[msg.sender][asset] >= makerstake
c = self.betCount
self.bets[c].maker = msg.sender
self.bets[c].feed = feed
self.bets[c].asset = asset
self.bets[c].makerstake = makerstake
self.bets[c].acceptorstake = acceptorstake
self.bets[c].eqtest = eqtest
self.bets[c].maturity = maturity
self.balances[msg.sender][asset] -= makerstake
self.betCount = c + 1
return(c)
def accept_bet_offer(c):
assert self.bets[c].maker and not self.bets[c].acceptor
asset = self.bets[c].asset
acceptorstake = self.bets[c].acceptorstake
assert self.balances[msg.sender][asset] >= acceptorstake
self.balances[msg.sender][asset] -= acceptorstake
self.bets[c].acceptor = msg.sender
def claim_bet_offer(c):
assert block.timestamp >= self.bets[c].maturity
v = self.feeds[self.bets[c].feed].value
totalstake = self.bets[c].makerstake + self.bets[c].acceptorstake
if v == self.bets[c].eqtest:
self.add(self.bets[c].maker, self.bets[c].asset, totalstake)
else:
self.add(self.bets[c].acceptor, self.bets[c].asset, totalstake)
self.bets[c].maker = 0
self.bets[c].feed = 0
self.bets[c].asset = 0
self.bets[c].makerstake = 0
self.bets[c].acceptorstake = 0
self.bets[c].eqtest = 0
self.bets[c].maturity = 0
def cancel_bet(c):
assert not self.bets[c].acceptor and msg.sender == self.bets[c].maker
self.balances[msg.sender][self.bets[c].asset] += self.bets[c].makerstake
self.bets[c].maker = 0
self.bets[c].feed = 0
self.bets[c].asset = 0
self.bets[c].makerstake = 0
self.bets[c].acceptorstake = 0
self.bets[c].eqtest = 0
self.bets[c].maturity = 0
def dividend(holder_asset, divvying_asset, ratio):
i = 0
sz = self.assets[holder_asset].holdersCount
t = 0
holders = array(sz)
payments = array(sz)
while i < sz:
holders[i] = self.assets[holder_asset].holders[i]
payments[i] = self.balances[holders[i]][holder_asset] * ratio / 10^18
t += payments[i]
i += 1
if self.balances[msg.sender][divvying_asset] >= t:
i = 0
while i < sz:
self.add(holders[i], divvying_asset, payments[i])
i += 1
self.balances[msg.sender][divvying_asset] -= t

View File

@ -1,69 +0,0 @@
data heaps[2^50](owner, size, nodes[2^50](key, value))
data heapIndex
def register():
i = self.heapIndex
self.heaps[i].owner = msg.sender
self.heapIndex = i + 1
return(i)
def push(heap, key, value):
assert msg.sender == self.heaps[heap].owner
sz = self.heaps[heap].size
self.heaps[heap].nodes[sz].key = key
self.heaps[heap].nodes[sz].value = value
k = sz + 1
while k > 1:
bottom = self.heaps[heap].nodes[k].key
top = self.heaps[heap].nodes[k/2].key
if bottom < top:
tvalue = self.heaps[heap].nodes[k/2].value
bvalue = self.heaps[heap].nodes[k].value
self.heaps[heap].nodes[k].key = top
self.heaps[heap].nodes[k].value = tvalue
self.heaps[heap].nodes[k/2].key = bottom
self.heaps[heap].nodes[k/2].value = bvalue
k /= 2
else:
k = 0
self.heaps[heap].size = sz + 1
def pop(heap):
sz = self.heaps[heap].size
assert sz
prevtop = self.heaps[heap].nodes[1].value
self.heaps[heap].nodes[1].key = self.heaps[heap].nodes[sz].key
self.heaps[heap].nodes[1].value = self.heaps[heap].nodes[sz].value
self.heaps[heap].nodes[sz].key = 0
self.heaps[heap].nodes[sz].value = 0
top = self.heaps[heap].nodes[1].key
k = 1
while k * 2 < sz:
bottom1 = self.heaps[heap].nodes[k * 2].key
bottom2 = self.heaps[heap].nodes[k * 2 + 1].key
if bottom1 < top and (bottom1 < bottom2 or k * 2 + 1 >= sz):
tvalue = self.heaps[heap].nodes[1].value
bvalue = self.heaps[heap].nodes[k * 2].value
self.heaps[heap].nodes[k].key = bottom1
self.heaps[heap].nodes[k].value = bvalue
self.heaps[heap].nodes[k * 2].key = top
self.heaps[heap].nodes[k * 2].value = tvalue
k = k * 2
elif bottom2 < top and bottom2 < bottom1 and k * 2 + 1 < sz:
tvalue = self.heaps[heap].nodes[1].value
bvalue = self.heaps[heap].nodes[k * 2 + 1].value
self.heaps[heap].nodes[k].key = bottom2
self.heaps[heap].nodes[k].value = bvalue
self.heaps[heap].nodes[k * 2 + 1].key = top
self.heaps[heap].nodes[k * 2 + 1].value = tvalue
k = k * 2 + 1
else:
k = sz
self.heaps[heap].size = sz - 1
return(prevtop)
def top(heap):
return(self.heaps[heap].nodes[1].value)
def size(heap):
return(self.heaps[heap].size)

View File

@ -1,53 +0,0 @@
data campaigns[2^80](recipient, goal, deadline, contrib_total, contrib_count, contribs[2^50](sender, value))
def create_campaign(id, recipient, goal, timelimit):
if self.campaigns[id].recipient:
return(0)
self.campaigns[id].recipient = recipient
self.campaigns[id].goal = goal
self.campaigns[id].deadline = block.timestamp + timelimit
def contribute(id):
# Update contribution total
total_contributed = self.campaigns[id].contrib_total + msg.value
self.campaigns[id].contrib_total = total_contributed
# Record new contribution
sub_index = self.campaigns[id].contrib_count
self.campaigns[id].contribs[sub_index].sender = msg.sender
self.campaigns[id].contribs[sub_index].value = msg.value
self.campaigns[id].contrib_count = sub_index + 1
# Enough funding?
if total_contributed >= self.campaigns[id].goal:
send(self.campaigns[id].recipient, total_contributed)
self.clear(id)
return(1)
# Expired?
if block.timestamp > self.campaigns[id].deadline:
i = 0
c = self.campaigns[id].contrib_count
while i < c:
send(self.campaigns[id].contribs[i].sender, self.campaigns[id].contribs[i].value)
i += 1
self.clear(id)
return(2)
def progress_report(id):
return(self.campaigns[id].contrib_total)
# Clearing function for internal use
def clear(id):
if self == msg.sender:
self.campaigns[id].recipient = 0
self.campaigns[id].goal = 0
self.campaigns[id].deadline = 0
c = self.campaigns[id].contrib_count
self.campaigns[id].contrib_count = 0
self.campaigns[id].contrib_total = 0
i = 0
while i < c:
self.campaigns[id].contribs[i].sender = 0
self.campaigns[id].contribs[i].value = 0
i += 1

View File

@ -1,136 +0,0 @@
# 0: current epoch
# 1: number of proposals
# 2: master currency
# 3: last winning market
# 4: last txid
# 5: long-term ema currency units purchased
# 6: last block when currency units purchased
# 7: ether allocated to last round
# 8: last block when currency units claimed
# 9: ether allocated to current round
# 1000+: [proposal address, market ID, totprice, totvolume]
init:
# We technically have two levels of epoch here. We have
# one epoch of 1000, to synchronize with the 1000 epoch
# of the market, and then 100 of those epochs make a
# meta-epoch (I'll nominate the term "seculum") over
# which the futarchy protocol will take place
contract.storage[0] = block.number / 1000
# The master currency of the futarchy. The futarchy will
# assign currency units to whoever the prediction market
# thinks will best increase the currency's value
master_currency = create('subcurrency.se')
contract.storage[2] = master_currency
code:
curepoch = block.number / 1000
prevepoch = contract.storage[0]
if curepoch > prevepoch:
if (curepoch % 100) > 50:
# Collect price data
# We take an average over 50 subepochs to determine
# the price of each asset, weighting by volume to
# prevent abuse
contract.storage[0] = curepoch
i = 0
numprop = contract.storage[1]
while i < numprop:
market = contract.storage[1001 + i * 4]
price = call(market, 2)
volume = call(market, 3)
contract.storage[1002 + i * 4] += price
contract.storage[1003 + i * 4] += volume * price
i += 1
if (curepoch / 100) > (prevepoch / 100):
# If we are entering a new seculum, we determine the
# market with the highest total average price
best = 0
bestmarket = 0
besti = 0
i = 0
while i < numprop:
curtotprice = contract.storage[1002 + i * 4]
curvolume = contract.storage[1002 + i * 4]
curavgprice = curtotprice / curvolume
if curavgprice > best:
best = curavgprice
besti = i
bestmarket = contract.storage[1003 + i * 4]
i += 1
# Reset the number of proposals to 0
contract.storage[1] = 0
# Reward the highest proposal
call(contract.storage[2], [best, 10^9, 0], 3)
# Record the winning market so we can later appropriately
# compensate the participants
contract.storage[2] = bestmarket
# The amount of ether allocated to the last round
contract.storage[7] = contract.storage[9]
# The amount of ether allocated to the next round
contract.storage[9] = contract.balance / 2
# Make a proposal [0, address]
if msg.data[0] == 0 and curepoch % 100 < 50:
pid = contract.storage[1]
market = create('market.se')
c1 = create('subcurrency.se')
c2 = create('subcurrency.se')
call(market, [c1, c2], 2)
contract.storage[1000 + pid * 4] = msg.data[1]
contract.storage[1001 + pid * 4] = market
contract.storage[1] += 1
# Claim ether [1, address]
# One unit of the first currency in the last round's winning
# market entitles you to a quantity of ether that was decided
# at the start of that epoch
elif msg.data[0] == 1:
first_subcurrency = call(contract.storage[2], 3)
# We ask the first subcurrency contract what the last transaction was. The
# way to make a claim is to send the amount of first currency units that
# you wish to claim with, and then immediately call this contract. For security
# it makes sense to set up a tx which sends both messages in sequence atomically
data = call(first_subcurrency, [], 0, 4)
from = data[0]
to = data[1]
value = data[2]
txid = data[3]
if txid > contract.storage[4] and to == contract.address:
send(to, contract.storage[7] * value / 10^9)
contract.storage[4] = txid
# Claim second currency [2, address]
# One unit of the second currency in the last round's winning
# market entitles you to one unit of the futarchy's master
# currency
elif msg.data[0] == 2:
second_subcurrency = call(contract.storage[2], 3)
data = call(first_subcurrency, [], 0, 4)
from = data[0]
to = data[1]
value = data[2]
txid = data[3]
if txid > contract.storage[4] and to == contract.address:
call(contract.storage[2], [to, value], 2)
contract.storage[4] = txid
# Purchase currency for ether (target releasing 10^9 units per seculum)
# Price starts off 1 eth for 10^9 units but increases hyperbolically to
# limit issuance
elif msg.data[0] == 3:
pre_ema = contract.storage[5]
post_ema = pre_ema + msg.value
pre_reserve = 10^18 / (10^9 + pre_ema / 10^9)
post_reserve = 10^18 / (10^9 + post_ema / 10^9)
call(contract.storage[2], [msg.sender, pre_reserve - post_reserve], 2)
last_sold = contract.storage[6]
contract.storage[5] = pre_ema * (100000 + last_sold - block.number) + msg.value
contract.storage[6] = block.number
# Claim all currencies as the ether miner of the current block
elif msg.data[0] == 2 and msg.sender == block.coinbase and block.number > contract.storage[8]:
i = 0
numproposals = contract.storage[1]
while i < numproposals:
market = contract.storage[1001 + i * 3]
fc = call(market, 4)
sc = call(market, 5)
call(fc, [msg.sender, 1000], 2)
call(sc, [msg.sender, 1000], 2)
i += 1
contract.storage[8] = block.number

View File

@ -1,55 +0,0 @@
# 0: size
# 1-n: elements
init:
contract.storage[1000] = msg.sender
code:
# Only owner of the heap is allowed to modify it
if contract.storage[1000] != msg.sender:
stop
# push
if msg.data[0] == 0:
sz = contract.storage[0]
contract.storage[sz + 1] = msg.data[1]
k = sz + 1
while k > 1:
bottom = contract.storage[k]
top = contract.storage[k/2]
if bottom < top:
contract.storage[k] = top
contract.storage[k/2] = bottom
k /= 2
else:
k = 0
contract.storage[0] = sz + 1
# pop
elif msg.data[0] == 1:
sz = contract.storage[0]
if !sz:
return(0)
prevtop = contract.storage[1]
contract.storage[1] = contract.storage[sz]
contract.storage[sz] = 0
top = contract.storage[1]
k = 1
while k * 2 < sz:
bottom1 = contract.storage[k * 2]
bottom2 = contract.storage[k * 2 + 1]
if bottom1 < top and (bottom1 < bottom2 or k * 2 + 1 >= sz):
contract.storage[k] = bottom1
contract.storage[k * 2] = top
k = k * 2
elif bottom2 < top and bottom2 < bottom1 and k * 2 + 1 < sz:
contract.storage[k] = bottom2
contract.storage[k * 2 + 1] = top
k = k * 2 + 1
else:
k = sz
contract.storage[0] = sz - 1
return(prevtop)
# top
elif msg.data[0] == 2:
return(contract.storage[1])
# size
elif msg.data[0] == 3:
return(contract.storage[0])

View File

@ -1,117 +0,0 @@
# Creates a decentralized market between any two subcurrencies
# Here, the first subcurrency is the base asset and the second
# subcurrency is the asset priced against the base asset. Hence,
# "buying" refers to trading the first for the second, and
# "selling" refers to trading the second for the first
# storage 0: buy orders
# storage 1: sell orders
# storage 1000: first subcurrency
# storage 1001: last first subcurrency txid
# storage 2000: second subcurrency
# storage 2001: last second subcurrency txid
# storage 3000: current epoch
# storage 4000: price
# storage 4001: volume
init:
# Heap for buy orders
contract.storage[0] = create('heap.se')
# Heap for sell orders
contract.storage[1] = create('heap.se')
code:
# Initialize with [ first_subcurrency, second_subcurrency ]
if !contract.storage[1000]:
contract.storage[1000] = msg.data[0] # First subcurrency
contract.storage[1001] = -1
contract.storage[2000] = msg.data[1] # Second subcurrency
contract.storage[2001] = -1
contract.storage[3000] = block.number / 1000
stop
first_subcurrency = contract.storage[1000]
second_subcurrency = contract.storage[2000]
buy_heap = contract.storage[0]
sell_heap = contract.storage[1]
# This contract operates in "epochs" of 100 blocks
# At the end of each epoch, we process all orders
# simultaneously, independent of order. This algorithm
# prevents front-running, and generates a profit from
# the spread. The profit is permanently kept in the
# market (ie. destroyed), making both subcurrencies
# more valuable
# Epoch transition code
if contract.storage[3000] < block.number / 100:
done = 0
volume = 0
while !done:
# Grab the top buy and sell order from each heap
topbuy = call(buy_heap, 1)
topsell = call(sell_heap, 1)
# An order is recorded in the heap as:
# Buys: (2^48 - 1 - price) * 2^208 + units of first currency * 2^160 + from
# Sells: price * 2^208 + units of second currency * 2^160 + from
buyprice = -(topbuy / 2^208)
buyfcvalue = (topbuy / 2^160) % 2^48
buyer = topbuy % 2^160
sellprice = topsell / 2^208
sellscvalue = (topsell / 2^160) % 2^48
seller = topsell % 2^160
# Heap empty, or no more matching orders
if not topbuy or not topsell or buyprice < sellprice:
done = 1
else:
# Add to volume counter
volume += buyfcvalue
# Calculate how much of the second currency the buyer gets, and
# how much of the first currency the seller gets
sellfcvalue = sellscvalue / buyprice
buyscvalue = buyfcvalue * sellprice
# Send the currency units along
call(second_subcurrency, [buyer, buyscvalue], 2)
call(first_subcurrency, [seller, sellfcvalue], 2)
if volume:
contract.storage[4000] = (buyprice + sellprice) / 2
contract.storage[4001] = volume
contract.storage[3000] = block.number / 100
# Make buy order [0, price]
if msg.data[0] == 0:
# We ask the first subcurrency contract what the last transaction was. The
# way to make a buy order is to send the amount of first currency units that
# you wish to buy with, and then immediately call this contract. For security
# it makes sense to set up a tx which sends both messages in sequence atomically
data = call(first_subcurrency, [], 0, 4)
from = data[0]
to = data[1]
value = data[2]
txid = data[3]
price = msg.data[1]
if txid > contract.storage[1001] and to == contract.address:
contract.storage[1001] = txid
# Adds the order to the heap
call(buy_heap, [0, -price * 2^208 + (value % 2^48) * 2^160 + from], 2)
# Make sell order [1, price]
elif msg.data[0] == 1:
# Same mechanics as buying
data = call(second_subcurrency, [], 0, 4)
from = data[0]
to = data[1]
value = data[2]
txid = data[3]
price = msg.data[1]
if txid > contract.storage[2001] and to == contract.address:
contract.storage[2001] = txid
call(sell_heap, [0, price * 2^208 + (value % 2^48) * 2^160 + from], 2)
# Ask for price
elif msg.data[0] == 2:
return(contract.storage[4000])
# Ask for volume
elif msg.data[0] == 3:
return(contract.storage[1000])
# Ask for first currency
elif msg.data[0] == 4:
return(contract.storage[2000])
# Ask for second currency
elif msg.data[0] == 5:
return(contract.storage[4001])

View File

@ -1,35 +0,0 @@
# Initialization
# Admin can issue and delete at will
init:
contract.storage[0] = msg.sender
code:
# If a message with one item is sent, that's a balance query
if msg.datasize == 1:
addr = msg.data[0]
return(contract.storage[addr])
# If a message with two items [to, value] are sent, that's a transfer request
elif msg.datasize == 2:
from = msg.sender
fromvalue = contract.storage[from]
to = msg.data[0]
value = msg.data[1]
if fromvalue >= value and value > 0 and to > 4:
contract.storage[from] = fromvalue - value
contract.storage[to] += value
contract.storage[2] = from
contract.storage[3] = to
contract.storage[4] = value
contract.storage[5] += 1
return(1)
return(0)
elif msg.datasize == 3 and msg.sender == contract.storage[0]:
# Admin can issue at will by sending a [to, value, 0] message
if msg.data[2] == 0:
contract.storage[msg.data[0]] += msg.data[1]
# Change admin [ newadmin, 0, 1 ]
# Set admin to 0 to disable administration
elif msg.data[2] == 1:
contract.storage[0] = msg.data[0]
# Fetch last transaction
else:
return([contract.storage[2], contract.storage[3], contract.storage[4], contract.storage[5]], 4)

View File

@ -1,39 +0,0 @@
from __future__ import print_function
import pyethereum
t = pyethereum.tester
s = t.state()
# Create currencies
c1 = s.contract('subcurrency.se')
print("First currency: %s" % c1)
c2 = s.contract('subcurrency.se')
print("First currency: %s" % c2)
# Allocate units
s.send(t.k0, c1, 0, [t.a0, 1000, 0])
s.send(t.k0, c1, 0, [t.a1, 1000, 0])
s.send(t.k0, c2, 0, [t.a2, 1000000, 0])
s.send(t.k0, c2, 0, [t.a3, 1000000, 0])
print("Allocated units")
# Market
m = s.contract('market.se')
s.send(t.k0, m, 0, [c1, c2])
# Place orders
s.send(t.k0, c1, 0, [m, 1000])
s.send(t.k0, m, 0, [0, 1200])
s.send(t.k1, c1, 0, [m, 1000])
s.send(t.k1, m, 0, [0, 1400])
s.send(t.k2, c2, 0, [m, 1000000])
s.send(t.k2, m, 0, [1, 800])
s.send(t.k3, c2, 0, [m, 1000000])
s.send(t.k3, m, 0, [1, 600])
print("Orders placed")
# Next epoch and ping
s.mine(100)
print("Mined 100")
s.send(t.k0, m, 0, [])
print("Updating")
# Check
assert s.send(t.k0, c2, 0, [t.a0]) == [800000]
assert s.send(t.k0, c2, 0, [t.a1]) == [600000]
assert s.send(t.k0, c1, 0, [t.a2]) == [833]
assert s.send(t.k0, c1, 0, [t.a3]) == [714]
print("Balance checks passed")

View File

@ -1,12 +0,0 @@
# Database updateable only by the original creator
data creator
def init():
self.creator = msg.sender
def update(k, v):
if msg.sender == self.creator:
self.storage[k] = v
def query(k):
return(self.storage[k])

View File

@ -1,40 +0,0 @@
# So I looked up on Wikipedia what Jacobian form actually is, and noticed that it's
# actually a rather different and more clever construction than the naive version
# that I created. It may possible to achieve a further 20-50% savings by applying
# that version.
extern all: [call]
data JORDANMUL
data JORDANADD
data EXP
def init():
self.JORDANMUL = create('jacobian_mul.se')
self.JORDANADD = create('jacobian_add.se')
self.EXP = create('modexp.se')
def call(h, v, r, s):
N = -432420386565659656852420866394968145599
P = -4294968273
h = mod(h, N)
r = mod(r, P)
s = mod(s, N)
Gx = 55066263022277343669578718895168534326250603453777594175500187360389116729240
Gy = 32670510020758816978083085130507043184471273380659243275938904335757337482424
x = r
xcubed = mulmod(mulmod(x, x, P), x, P)
beta = self.EXP.call(addmod(xcubed, 7, P), div(P + 1, 4), P)
# Static-gascost ghetto conditional
y_is_positive = mod(v, 2) xor mod(beta, 2)
y = beta * y_is_positive + (P - beta) * (1 - y_is_positive)
GZ = self.JORDANMUL.call(Gx, 1, Gy, 1, N - h, outsz=4)
XY = self.JORDANMUL.call(x, 1, y, 1, s, outsz=4)
COMB = self.JORDANADD.call(GZ[0], GZ[1], GZ[2], GZ[3], XY[0], XY[1], XY[2], XY[3], 1, outsz=5)
COMB[4] = self.EXP.call(r, N - 2, N)
Q = self.JORDANMUL.call(data=COMB, datasz=5, outsz=4)
ox = mulmod(Q[0], self.EXP.call(Q[1], P - 2, P), P)
oy = mulmod(Q[2], self.EXP.call(Q[3], P - 2, P), P)
return([ox, oy], 2)

File diff suppressed because one or more lines are too long

View File

@ -1,32 +0,0 @@
extern all: [call]
data DOUBLE
def init():
self.DOUBLE = create('jacobian_double.se')
def call(axn, axd, ayn, ayd, bxn, bxd, byn, byd):
if !axn and !ayn:
o = [bxn, bxd, byn, byd]
if !bxn and !byn:
o = [axn, axd, ayn, ayd]
if o:
return(o, 4)
with P = -4294968273:
if addmod(mulmod(axn, bxd, P), P - mulmod(axd, bxn, P), P) == 0:
if addmod(mulmod(ayn, byd, P), P - mulmod(ayd, byn, P), P) == 0:
return(self.DOUBLE.call(axn, axd, ayn, ayd, outsz=4), 4)
else:
return([0, 1, 0, 1], 4)
with mn = mulmod(addmod(mulmod(byn, ayd, P), P - mulmod(ayn, byd, P), P), mulmod(bxd, axd, P), P):
with md = mulmod(mulmod(byd, ayd, P), addmod(mulmod(bxn, axd, P), P - mulmod(axn, bxd, P), P), P):
with msqn = mulmod(mn, mn, P):
with msqd = mulmod(md, md, P):
with msqman = addmod(mulmod(msqn, axd, P), P - mulmod(msqd, axn, P), P):
with msqmad = mulmod(msqd, axd, P):
with xn = addmod(mulmod(msqman, bxd, P), P - mulmod(msqmad, bxn, P), P):
with xd = mulmod(msqmad, bxd, P):
with mamxn = mulmod(mn, addmod(mulmod(axn, xd, P), P - mulmod(xn, axd, P), P), P):
with mamxd = mulmod(md, mulmod(axd, xd, P), P):
with yn = addmod(mulmod(mamxn, ayd, P), P - mulmod(mamxd, ayn, P), P):
with yd = mulmod(mamxd, ayd, P):
return([xn, xd, yn, yd], 4)

View File

@ -1,16 +0,0 @@
def call(axn, axd, ayn, ayd):
if !axn and !ayn:
return([0, 1, 0, 1], 4)
with P = -4294968273:
# No need to add (A, 1) because A = 0 for bitcoin
with mn = mulmod(mulmod(mulmod(axn, axn, P), 3, P), ayd, P):
with md = mulmod(mulmod(axd, axd, P), mulmod(ayn, 2, P), P):
with msqn = mulmod(mn, mn, P):
with msqd = mulmod(md, md, P):
with xn = addmod(mulmod(msqn, axd, P), P - mulmod(msqd, mulmod(axn, 2, P), P), P):
with xd = mulmod(msqd, axd, P):
with mamxn = mulmod(addmod(mulmod(axn, xd, P), P - mulmod(axd, xn, P), P), mn, P):
with mamxd = mulmod(mulmod(axd, xd, P), md, P):
with yn = addmod(mulmod(mamxn, ayd, P), P - mulmod(mamxd, ayn, P), P):
with yd = mulmod(mamxd, ayd, P):
return([xn, xd, yn, yd], 4)

View File

@ -1,37 +0,0 @@
# Expected gas cost
#
# def expect(n, point_at_infinity=False):
# n = n % (2**256 - 432420386565659656852420866394968145599)
# if point_at_infinity:
# return 79
# if n == 0:
# return 34479
# L = int(1 + math.log(n) / math.log(2))
# H = len([x for x in b.encode(n, 2) if x == '1'])
# return 34221 + 94 * L + 343 * H
data DOUBLE
data ADD
def init():
self.DOUBLE = create('jacobian_double.se')
self.ADD = create('jacobian_add.se')
def call(axn, axd, ayn, ayd, n):
n = mod(n, -432420386565659656852420866394968145599)
if !axn * !ayn + !n: # Constant-gas version of !axn and !ayn or !n
return([0, 1, 0, 1], 4)
with o = [0, 0, 1, 0, 1, 0, 0, 0, 0]:
with b = 2 ^ 255:
while gt(b, 0):
if n & b:
~call(20000, self.DOUBLE, 0, o + 31, 129, o + 32, 128)
o[5] = axn
o[6] = axd
o[7] = ayn
o[8] = ayd
~call(20000, self.ADD, 0, o + 31, 257, o + 32, 128)
else:
~call(20000, self.DOUBLE, 0, o + 31, 129, o + 32, 128)
b = div(b, 2)
return(o + 32, 4)

View File

@ -1,11 +0,0 @@
def call(b, e, m):
with o = 1:
with bit = 2 ^ 255:
while gt(bit, 0):
# A touch of loop unrolling for 20% efficiency gain
o = mulmod(mulmod(o, o, m), b ^ !(!(e & bit)), m)
o = mulmod(mulmod(o, o, m), b ^ !(!(e & div(bit, 2))), m)
o = mulmod(mulmod(o, o, m), b ^ !(!(e & div(bit, 4))), m)
o = mulmod(mulmod(o, o, m), b ^ !(!(e & div(bit, 8))), m)
bit = div(bit, 16)
return(o)

View File

@ -1,78 +0,0 @@
import bitcoin as b
import math
import sys
def signed(o):
return map(lambda x: x - 2**256 if x >= 2**255 else x, o)
def hamming_weight(n):
return len([x for x in b.encode(n, 2) if x == '1'])
def binary_length(n):
return len(b.encode(n, 2))
def jacobian_mul_substitute(A, B, C, D, N):
if A == 0 and C == 0 or (N % b.N) == 0:
return {"gas": 86, "output": [0, 1, 0, 1]}
else:
output = b.jordan_multiply(((A, B), (C, D)), N)
return {
"gas": 35262 + 95 * binary_length(N % b.N) + 355 * hamming_weight(N % b.N),
"output": signed(list(output[0]) + list(output[1]))
}
def jacobian_add_substitute(A, B, C, D, E, F, G, H):
if A == 0 or E == 0:
gas = 149
elif (A * F - B * E) % b.P == 0:
if (C * H - D * G) % b.P == 0:
gas = 442
else:
gas = 177
else:
gas = 301
output = b.jordan_add(((A, B), (C, D)), ((E, F), (G, H)))
return {
"gas": gas,
"output": signed(list(output[0]) + list(output[1]))
}
def modexp_substitute(base, exp, mod):
return {
"gas": 5150,
"output": signed([pow(base, exp, mod) if mod > 0 else 0])
}
def ecrecover_substitute(z, v, r, s):
P, A, B, N, Gx, Gy = b.P, b.A, b.B, b.N, b.Gx, b.Gy
x = r
beta = pow(x*x*x+A*x+B, (P + 1) / 4, P)
BETA_PREMIUM = modexp_substitute(x, (P + 1) / 4, P)["gas"]
y = beta if v % 2 ^ beta % 2 else (P - beta)
Gz = b.jordan_multiply(((Gx, 1), (Gy, 1)), (N - z) % N)
GZ_PREMIUM = jacobian_mul_substitute(Gx, 1, Gy, 1, (N - z) % N)["gas"]
XY = b.jordan_multiply(((x, 1), (y, 1)), s)
XY_PREMIUM = jacobian_mul_substitute(x, 1, y, 1, s % N)["gas"]
Qr = b.jordan_add(Gz, XY)
QR_PREMIUM = jacobian_add_substitute(Gz[0][0], Gz[0][1], Gz[1][0], Gz[1][1],
XY[0][0], XY[0][1], XY[1][0], XY[1][1]
)["gas"]
Q = b.jordan_multiply(Qr, pow(r, N - 2, N))
Q_PREMIUM = jacobian_mul_substitute(Qr[0][0], Qr[0][1], Qr[1][0], Qr[1][1],
pow(r, N - 2, N))["gas"]
R_PREMIUM = modexp_substitute(r, N - 2, N)["gas"]
OX_PREMIUM = modexp_substitute(Q[0][1], P - 2, P)["gas"]
OY_PREMIUM = modexp_substitute(Q[1][1], P - 2, P)["gas"]
Q = b.from_jordan(Q)
return {
"gas": 991 + BETA_PREMIUM + GZ_PREMIUM + XY_PREMIUM + QR_PREMIUM +
Q_PREMIUM + R_PREMIUM + OX_PREMIUM + OY_PREMIUM,
"output": signed(Q)
}

View File

@ -1,129 +0,0 @@
import bitcoin as b
import random
import sys
import math
from pyethereum import tester as t
import substitutes
import time
vals = [random.randrange(2**256) for i in range(12)]
test_points = [list(p[0]) + list(p[1]) for p in
[b.jordan_multiply(((b.Gx, 1), (b.Gy, 1)), r) for r in vals]]
G = [b.Gx, 1, b.Gy, 1]
Z = [0, 1, 0, 1]
def neg_point(p):
return [p[0], b.P - p[1], p[2], b.P - p[3]]
s = t.state()
s.block.gas_limit = 10000000
t.gas_limit = 1000000
c = s.contract('modexp.se')
print "Starting modexp tests"
for i in range(0, len(vals) - 2, 3):
o1 = substitutes.modexp_substitute(vals[i], vals[i+1], vals[i+2])
o2 = s.profile(t.k0, c, 0, funid=0, abi=vals[i:i+3])
#assert o1["gas"] == o2["gas"], (o1, o2)
assert o1["output"] == o2["output"], (o1, o2)
c = s.contract('jacobian_add.se')
print "Starting addition tests"
for i in range(2):
P = test_points[i * 2]
Q = test_points[i * 2 + 1]
NP = neg_point(P)
o1 = substitutes.jacobian_add_substitute(*(P + Q))
o2 = s.profile(t.k0, c, 0, funid=0, abi=P + Q)
#assert o1["gas"] == o2["gas"], (o1, o2)
assert o1["output"] == o2["output"], (o1, o2)
o1 = substitutes.jacobian_add_substitute(*(P + NP))
o2 = s.profile(t.k0, c, 0, funid=0, abi=P + NP)
#assert o1["gas"] == o2["gas"], (o1, o2)
assert o1["output"] == o2["output"], (o1, o2)
o1 = substitutes.jacobian_add_substitute(*(P + P))
o2 = s.profile(t.k0, c, 0, funid=0, abi=P + P)
#assert o1["gas"] == o2["gas"], (o1, o2)
assert o1["output"] == o2["output"], (o1, o2)
o1 = substitutes.jacobian_add_substitute(*(P + Z))
o2 = s.profile(t.k0, c, 0, funid=0, abi=P + Z)
#assert o1["gas"] == o2["gas"], (o1, o2)
assert o1["output"] == o2["output"], (o1, o2)
o1 = substitutes.jacobian_add_substitute(*(Z + P))
o2 = s.profile(t.k0, c, 0, funid=0, abi=Z + P)
#assert o1["gas"] == o2["gas"], (o1, o2)
assert o1["output"] == o2["output"], (o1, o2)
c = s.contract('jacobian_mul.se')
print "Starting multiplication tests"
mul_tests = [
Z + [0],
Z + [vals[0]],
test_points[0] + [0],
test_points[1] + [b.N],
test_points[2] + [1],
test_points[2] + [2],
test_points[2] + [3],
test_points[2] + [4],
test_points[3] + [5],
test_points[3] + [6],
test_points[4] + [7],
test_points[4] + [2**254],
test_points[4] + [vals[1]],
test_points[4] + [vals[2]],
test_points[4] + [vals[3]],
test_points[5] + [2**256 - 1],
]
for i, test in enumerate(mul_tests):
print 'trying mul_test %i' % i, test
o1 = substitutes.jacobian_mul_substitute(*test)
o2 = s.profile(t.k0, c, 0, funid=0, abi=test)
# assert o1["gas"] == o2["gas"], (o1, o2, test)
assert o1["output"] == o2["output"], (o1, o2, test)
c = s.contract('ecrecover.se')
print "Starting ecrecover tests"
for i in range(5):
print 'trying ecrecover_test', vals[i*2], vals[i*2+1]
k = vals[i*2]
h = vals[i*2+1]
V, R, S = b.ecdsa_raw_sign(b.encode(h, 256, 32), k)
aa = time.time()
o1 = substitutes.ecrecover_substitute(h, V, R, S)
print 'sub', time.time() - aa
a = time.time()
o2 = s.profile(t.k0, c, 0, funid=0, abi=[h, V, R, S])
print time.time() - a
# assert o1["gas"] == o2["gas"], (o1, o2, h, V, R, S)
assert o1["output"] == o2["output"], (o1, o2, h, V, R, S)
# Explicit tests
data = [[
0xf007a9c78a4b2213220adaaf50c89a49d533fbefe09d52bbf9b0da55b0b90b60,
0x1b,
0x5228fc9e2fabfe470c32f459f4dc17ef6a0a81026e57e4d61abc3bc268fc92b5,
0x697d4221cd7bc5943b482173de95d3114b9f54c5f37cc7f02c6910c6dd8bd107
]]
for datum in data:
o1 = substitutes.ecrecover_substitute(*datum)
o2 = s.profile(t.k0, c, 0, funid=0, abi=datum)
#assert o1["gas"] == o2["gas"], (o1, o2, datum)
assert o1["output"] == o2["output"], (o1, o2, datum)

View File

@ -1,45 +0,0 @@
if msg.data[0] == 0:
new_id = contract.storage[-1]
# store [from, to, value, maxvalue, timeout] in contract storage
contract.storage[new_id] = msg.sender
contract.storage[new_id + 1] = msg.data[1]
contract.storage[new_id + 2] = 0
contract.storage[new_id + 3] = msg.value
contract.storage[new_id + 4] = 2^254
# increment next id
contract.storage[-1] = new_id + 10
# return id of this channel
return(new_id)
# Increase payment on channel: [1, id, value, v, r, s]
elif msg.data[0] == 1:
# Ecrecover native extension; will be a different address in testnet and live
ecrecover = 0x46a8d0b21b1336d83b06829f568d7450df36883f
# Message data parameters
id = msg.data[1] % 2^160
value = msg.data[2]
# Determine sender from signature
h = sha3([id, value], 2)
sender = call(ecrecover, [h, msg.data[3], msg.data[4], msg.data[5]], 4)
# Check sender matches and new value is greater than old
if sender == contract.storage[id]:
if value > contract.storage[id + 2] and value <= contract.storage[id + 3]:
# Update channel, increasing value and setting timeout
contract.storage[id + 2] = value
contract.storage[id + 4] = block.number + 1000
# Cash out channel: [2, id]
elif msg.data[0] == 2:
id = msg.data[1] % 2^160
# Check if timeout has run out
if block.number >= contract.storage[id + 3]:
# Send funds
send(contract.storage[id + 1], contract.storage[id + 2])
# Send refund
send(contract.storage[id], contract.storage[id + 3] - contract.storage[id + 2])
# Clear storage
contract.storage[id] = 0
contract.storage[id + 1] = 0
contract.storage[id + 2] = 0
contract.storage[id + 3] = 0
contract.storage[id + 4] = 0

View File

@ -1,19 +0,0 @@
# An implementation of a contract for storing a key/value binding
init:
# Set owner
contract.storage[0] = msg.sender
code:
# Check ownership
if msg.sender == contract.storage[0]:
# Get: returns (found, val)
if msg.data[0] == 0:
s = sha3(msg.data[1])
return([contract.storage[s], contract.storage[s+1]], 2)
# Set: sets map[k] = v
elif msg.data[0] == 1:
s = sha3(msg.data[1])
contract.storage[s] = 1
contract.storage[s + 1] = msg.data[2]
# Suicide
elif msg.data[2] == 1:
suicide(0)

View File

@ -1,14 +0,0 @@
init:
contract.storage[0] = msg.sender
code:
if msg.sender != contract.storage[0]:
stop
i = 0
while i < ~calldatasize():
to = ~calldataload(i)
value = ~calldataload(i+20) / 256^12
datasize = ~calldataload(i+32) / 256^30
data = alloc(datasize)
~calldatacopy(data, i+34, datasize)
~call(tx.gas - 25, to, value, data, datasize, 0, 0)
i += 34 + datasize

View File

@ -1,166 +0,0 @@
# Exists in state:
# (i) last committed block
# (ii) chain of uncommitted blocks (linear only)
# (iii) transactions, each tx with an associated block number
#
# Uncommitted block =
# [ numtxs, numkvs, tx1 (N words), tx2 (N words) ..., [k1, v1], [k2, v2], [k3, v3] ... ]
#
# Block checking process
#
# Suppose last committed state is m
# Last uncommitted state is n
# Contested block is b
#
# 1. Temporarily apply all state transitions from
# m to b
# 2. Run code, get list of changes
# 3. Check is list of changes matches deltas
# * if yes, do nothing
# * if no, set last uncommitted state to pre-b
#
# Storage variables:
#
# Last committed block: 0
# Last uncommitted block: 1
# Contract holding code: 2
# Uncommitted map: 3
# Transaction length (parameter): 4
# Block b: 2^160 + b * 2^40:
# + 1: submission blknum
# + 2: submitter
# + 3: data in uncommitted block format above
# Last committed storage:
# sha3(k): index k
# Initialize: [0, c, txlength], set address of the code-holding contract and the transaction
# length
if not contract.storage[2]:
contract.storage[2] = msg.data[1]
contract.storage[4] = msg.data[2]
stop
# Sequentially commit all uncommitted blocks that are more than 1000 mainchain-blocks old
last_committed_block = contract.storage[0]
last_uncommitted_block = contract.storage[1]
lcb_storage_index = 2^160 + last_committed_block * 2^40
while contract.storage[lcb_storage_index + 1] < block.number - 1000 and last_committed_block < last_uncommitted_block:
kvpairs = contract.storage[lcb_storage_index]
i = 0
while i < kvpairs:
k = contract.storage[lcb_storage_index + 3 + i * 2]
v = contract.storage[lcb_storage_index + 4 + i * 2]
contract.storage[sha3(k)] = v
i += 1
last_committed_block += 1
lcb_storage_index += 2^40
contract.storage[0] = last_committed_block
# Propose block: [ 0, block number, data in block format above ... ]
if msg.data[0] == 0:
blknumber = msg.data[1]
# Block number must be correct
if blknumber != contract.storage[1]:
stop
# Deposit requirement
if msg.value < 10^19:
stop
# Store the proposal in storage as
# [ 0, main-chain block number, sender, block data...]
start_index = 2^160 + blknumber * 2^40
numkvs = (msg.datasize - 2) / 2
contract.storage[start_index + 1] = block.number
1ontract.storage[start_index + 2] = msg.sender
i = 0
while i < msg.datasize - 2:
contract.storage[start_index + 3 + i] = msg.data[2 + i]
i += 1
contract.storage[1] = blknumber + 1
# Challenge block: [ 1, b ]
elif msg.data[0] == 1:
blknumber = msg.data[1]
txwidth = contract.storage[4]
last_uncommitted_block = contract.storage[1]
last_committed_block = contract.storage[0]
# Cannot challenge nonexistent or committed blocks
if blknumber <= last_uncommitted_block or blknumber > last_committed_block:
stop
# Create a contract to serve as a map that maintains keys and values
# temporarily
tempstore = create('map.se')
contract.storage[3] = tempstore
# Unquestioningly apply the state transitions from the last committed block
# up to b
b = last_committed_block
cur_storage_index = 2^160 + last_committed_block * 2^40
while b < blknumber:
numtxs = contract.storage[cur_storage_index + 3]
numkvs = contract.storage[cur_storage_index + 4]
kv0index = cur_storage_index + 5 + numtxs * txwidth
i = 0
while i < numkvs:
k = contract.storage[kv0index + i * 2]
v = contract.storage[kx0index + i * 2 + 1]
call(tempstore, [1, k, v], 3)
i += 1
b += 1
cur_storage_index += 2^40
# Run the actual code, and see what state transitions it outputs
# The way that the code is expected to work is to:
#
# (1) take as input the list of transactions (the contract should
# use msg.datasize to determine how many txs there are, and it should
# be aware of the value of txwidth)
# (2) call this contract with [2, k] to read current state data
# (3) call this contract with [3, k, v] to write current state data
# (4) return as output a list of all state transitions that it made
# in the form [kvcount, k1, v1, k2, v2 ... ]
#
# The reason for separating (2) from (3) is that sometimes the state
# transition may end up changing a given key many times, and we don't
# need to inefficiently store that in storage
numkvs = contract.storage[cur_storage_index + 3]
numtxs = contract.storage[cur_storage_index + 4]
# Populate input array
inpwidth = numtxs * txwidth
inp = array(inpwidth)
i = 0
while i < inpwidth:
inp[i] = contract.storage[cur_storage_index + 5 + i]
i += 1
out = call(contract.storage[2], inp, inpwidth, numkvs * 2 + 1)
# Check that the number of state transitions is the same
if out[0] != kvcount:
send(msg.sender, 10^19)
contract.storage[0] = last_committed_block
stop
kv0index = cur_storage_index + 5 + numtxs * txwidth
i = 0
while i < kvcount:
# Check that each individual state transition matches
k = contract.storage[kv0index + i * 2 + 1]
v = contract.storage[kv0index + i * 2 + 2]
if k != out[i * 2 + 1] or v != out[i * 2 + 2]:
send(msg.sender, 10^19)
contract.storage[0] = last_committed_block
stop
i += 1
# Suicide tempstore
call(tempstore, 2)
# Read data [2, k]
elif msg.data[0] == 2:
tempstore = contract.storage[3]
o = call(tempstore, [0, msg.data[1]], 2, 2)
if o[0]:
return(o[1])
else:
return contract.storage[sha3(msg.data[1])]
# Write data [3, k, v]
elif msg.data[0] == 3:
tempstore = contract.storage[3]
call(tempstore, [1, msg.data[1], msg.data[2]], 3, 2)

View File

@ -1,31 +0,0 @@
type f: [a, b, c, d, e]
macro f($a) + f($b):
f(add($a, $b))
macro f($a) - f($b):
f(sub($a, $b))
macro f($a) * f($b):
f(mul($a, $b) / 10000)
macro f($a) / f($b):
f(sdiv($a * 10000, $b))
macro f($a) % f($b):
f(smod($a, $b))
macro f($v) = f($w):
$v = $w
macro unfify(f($a)):
$a / 10000
macro fify($a):
f($a * 10000)
a = fify(5)
b = fify(2)
c = a / b
e = c + (a / b)
return(unfify(e))

View File

@ -1,116 +0,0 @@
macro smin($a, $b):
with $1 = $a:
with $2 = $b:
if(slt($1, $2), $1, $2)
macro smax($a, $b):
with $1 = $a:
with $2 = $b:
if(slt($1, $2), $2, $1)
def omul(x, y):
o = expose(mklong(x) * mklong(y))
return(slice(o, 1), o[0]+1)
def oadd(x, y):
o = expose(mklong(x) + mklong(y))
return(slice(o, 1), o[0]+1)
def osub(x, y):
o = expose(mklong(x) - mklong(y))
return(slice(o, 1), o[0]+1)
def odiv(x, y):
o = expose(mklong(x) / mklong(y))
return(slice(o, 1), o[0]+1)
def comb(a:a, b:a, sign):
sz = smax(a[0], b[0])
msz = smin(a[0], b[0])
c = array(sz + 2)
c[0] = sz
i = 0
carry = 0
while i < msz:
m = a[i + 1] + sign * b[i + 1] + carry
c[i + 1] = mod(m + 2^127, 2^128) - 2^127
carry = (div(m + 2^127, 2^128) + 2^127) % 2^128 - 2^127
i += 1
u = if(a[0] > msz, a, b)
s = if(a[0] > msz, 1, sign)
while i < sz:
m = s * u[i + 1] + carry
c[i + 1] = mod(m + 2^127, 2^128) - 2^127
carry = (div(m + 2^127, 2^128) + 2^127) % 2^128 - 2^127
i += 1
if carry:
c[0] += 1
c[sz + 1] = carry
return(c, c[0]+1)
def mul(a:a, b:a):
c = array(a[0] + b[0] + 2)
c[0] = a[0] + b[0]
i = 0
while i < a[0]:
j = 0
carry = 0
while j < b[0]:
m = c[i + j + 1] + a[i + 1] * b[j + 1] + carry
c[i + j + 1] = mod(m + 2^127, 2^128) - 2^127
carry = (div(m + 2^127, 2^128) + 2^127) % 2^128 - 2^127
j += 1
if carry:
c[0] = a[0] + b[0] + 1
c[i + j + 1] += carry
i += 1
return(c, c[0]+1)
macro long($a) + long($b):
long(self.comb($a:$a[0]+1, $b:$b[0]+1, 1, outsz=$a[0]+$b[0]+2))
macro long($a) - long($b):
long(self.comb($a:$a[0]+1, $b:$b[0]+1, -1, outsz=$a[0]+$b[0]+2))
macro long($a) * long($b):
long(self.mul($a:$a[0]+1, $b:$b[0]+1, outsz=$a[0]+$b[0]+2))
macro long($a) / long($b):
long(self.div($a:$a[0]+1, $b:$b[0]+1, outsz=$a[0]+$b[0]+2))
macro mulexpand(long($a), $k, $m):
long:
with $c = array($a[0]+k+2):
$c[0] = $a[0]+$k
with i = 0:
while i < $a[0]:
v = $a[i+1] * $m + $c[i+$k+1]
$c[i+$k+1] = mod(v + 2^127, 2^128) - 2^127
$c[i+$k+2] = div(v + 2^127, 2^128)
i += 1
$c
def div(a:a, b:a):
asz = a[0]
bsz = b[0]
while b[bsz] == 0 and bsz > 0:
bsz -= 1
c = array(asz+2)
c[0] = asz+1
while 1:
while a[asz] == 0 and asz > 0:
asz -= 1
if asz < bsz:
return(c, c[0]+1)
sub = expose(mulexpand(long(b), asz - bsz, a[asz] / b[bsz]))
c[asz - bsz+1] = a[asz] / b[bsz]
a = expose(long(a) - long(sub))
a[asz-1] += 2^128 * a[asz]
a[asz] = 0
macro mklong($i):
long([2, mod($i + 2^127, 2^128) - 2^127, div($i + 2^127, 2^128)])
macro expose(long($i)):
$i

View File

@ -1,2 +0,0 @@
def double(v):
return(v*2)

View File

@ -1,187 +0,0 @@
# mutuala - subcurrency
# We want to issue a currency that reduces in value as you store it through negative interest.
# That negative interest would be stored in a commons account. It's like the p2p version of a
# capital tax
# the same things goes for transactions - you pay as you use the currency. However, the more
# you pay, the more you get to say about what the tax is used for
# each participant can propose a recipient for a payout to be made out of the commons account,
# others can vote on it by awarding it tax_credits.
# TODO should proposal have expiration timestamp?, after which the tax_credits are refunded
# TODO multiple proposals can take more credits that available in the Commons, how to handle this
# TODO how to handle lost accounts, after which no longer possible to get 2/3 majority
shared:
COMMONS = 42
ADMIN = 666
CAPITAL_TAX_PER_DAY = 7305 # 5% per year
PAYMENT_TAX = 20 # 5%
ACCOUNT_LIST_OFFSET = 2^160
ACCOUNT_MAP_OFFSET = 2^161
PROPOSAL_LIST_OFFSET = 2^162
PROPOSAL_MAP_OFFSET = 2^163
init:
contract.storage[ADMIN] = msg.sender
contract.storage[ACCOUNT_LIST_OFFSET - 1] = 1
contract.storage[ACCOUNT_LIST_OFFSET] = msg.sender
contract.storage[ACCOUNT_MAP_OFFSET + msg.sender] = 10^12
contract.storage[ACCOUNT_MAP_OFFSET + msg.sender + 1] = block.timestamp
# contract.storage[COMMONS] = balance commons
# contract.storage[ACCOUNT_LIST_OFFSET - 1] = number of accounts
# contract.storage[ACCOUNT_LIST_OFFSET + n] = account n
# contract.storage[PROPOSAL_LIST_OFFSET - 1] contains the number of proposals
# contract.storage[PROPOSAL_LIST_OFFSET + n] = proposal n
# per account:
# contract.storage[ACCOUNT_MAP_OFFSET + account] = balance
# contract.storage[ACCOUNT_MAP_OFFSET + account+1] = timestamp_last_transaction
# contract.storage[ACCOUNT_MAP_OFFSET + account+2] = tax_credits
# per proposal:
# contract.storage[PROPOSAL_MAP_OFFSET + proposal_id] = recipient
# contract.storage[PROPOSAL_MAP_OFFSET + proposal_id+1] = amount
# contract.storage[PROPOSAL_MAP_OFFSET + proposal_id+2] = total vote credits
code:
if msg.data[0] == "suicide" and msg.sender == contract.storage[ADMIN]:
suicide(msg.sender)
elif msg.data[0] == "balance":
addr = msg.data[1]
return(contract.storage[ACCOUNT_MAP_OFFSET + addr])
elif msg.data[0] == "pay":
from = msg.sender
fromvalue = contract.storage[ACCOUNT_MAP_OFFSET + from]
to = msg.data[1]
if to == 0 or to >= 2^160:
return([0, "invalid address"], 2)
value = msg.data[2]
tax = value / PAYMENT_TAX
if fromvalue >= value + tax:
contract.storage[ACCOUNT_MAP_OFFSET + from] = fromvalue - (value + tax)
contract.storage[ACCOUNT_MAP_OFFSET + to] += value
# tax
contract.storage[COMMONS] += tax
contract.storage[ACCOUNT_MAP_OFFSET + from + 2] += tax
# check timestamp field to see if target account exists
if contract.storage[ACCOUNT_MAP_OFFSET + to + 1] == 0:
# register new account
nr_accounts = contract.storage[ACCOUNT_LIST_OFFSET - 1]
contract.storage[ACCOUNT_LIST_OFFSET + nr_accounts] = to
contract.storage[ACCOUNT_LIST_OFFSET - 1] += 1
contract.storage[ACCOUNT_MAP_OFFSET + to + 1] = block.timestamp
return(1)
else:
return([0, "insufficient balance"], 2)
elif msg.data[0] == "hash":
proposal_id = sha3(msg.data[1])
return(proposal_id)
elif msg.data[0] == "propose":
from = msg.sender
# check if sender has an account and has tax credits
if contract.storage[ACCOUNT_MAP_OFFSET + from + 2] == 0:
return([0, "sender has no tax credits"], 2)
proposal_id = sha3(msg.data[1])
# check if proposal doesn't already exist
if contract.storage[PROPOSAL_MAP_OFFSET + proposal_id]:
return([0, "proposal already exists"])
to = msg.data[2]
# check if recipient is a valid address and has an account (with timestamp)
if to == 0 or to >= 2^160:
return([0, "invalid address"], 2)
if contract.storage[ACCOUNT_MAP_OFFSET + to + 1] == 0:
return([0, "invalid to account"], 2)
value = msg.data[3]
# check if there is enough money in the commons account
if value > contract.storage[COMMONS]:
return([0, "not enough credits in commons"], 2)
# record proposal in list
nr_proposals = contract.storage[PROPOSAL_LIST_OFFSET - 1]
contract.storage[PROPOSAL_LIST_OFFSET + nr_proposals] = proposal_id
contract.storage[PROPOSAL_LIST_OFFSET - 1] += 1
# record proposal in map
contract.storage[PROPOSAL_MAP_OFFSET + proposal_id] = to
contract.storage[PROPOSAL_MAP_OFFSET + proposal_id + 1] = value
return(proposal_id)
elif msg.data[0] == "vote":
from = msg.sender
proposal_id = sha3(msg.data[1])
value = msg.data[2]
# check if sender has an account and has tax credits
if value < contract.storage[ACCOUNT_MAP_OFFSET + from + 2]:
return([0, "sender doesn't have enough tax credits"], 2)
# check if proposal exist
if contract.storage[PROPOSAL_MAP_OFFSET + proposal_id] == 0:
return([0, "proposal doesn't exist"], 2)
# increase votes
contract.storage[PROPOSAL_MAP_OFFSET + proposal_id + 2] += value
# withdraw tax credits
contract.storage[ACCOUNT_MAP_OFFSET + from + 2] -= value
# did we reach 2/3 threshold?
if contract.storage[PROPOSAL_MAP_OFFSET + proposal_id + 2] >= contract.storage[COMMONS] * 2 / 3:
# got majority
to = contract.storage[PROPOSAL_MAP_OFFSET + proposal_id]
amount = contract.storage[PROPOSAL_MAP_OFFSET + proposal_id + 1]
# adjust balances
contract.storage[ACCOUNT_MAP_OFFSET + to] += amount
contract.storage[COMMONS] -= amount
# reset proposal
contract.storage[PROPOSAL_MAP_OFFSET + proposal_id] = 0
contract.storage[PROPOSAL_MAP_OFFSET + proposal_id + 1] = 0
contract.storage[PROPOSAL_MAP_OFFSET + proposal_id + 2] = 0
return(1)
return(proposal_id)
elif msg.data[0] == "tick":
nr_accounts = contract.storage[ACCOUNT_LIST_OFFSET - 1]
account_idx = 0
tax_paid = 0
# process all accounts and see if they have to pay their daily capital tax
while account_idx < nr_accounts:
cur_account = contract.storage[ACCOUNT_LIST_OFFSET + account_idx]
last_timestamp = contract.storage[ACCOUNT_MAP_OFFSET + cur_account + 1]
time_diff = block.timestamp - last_timestamp
if time_diff >= 86400:
tax_days = time_diff / 86400
balance = contract.storage[ACCOUNT_MAP_OFFSET + cur_account]
tax = tax_days * (balance / CAPITAL_TAX_PER_DAY)
if tax > 0:
# charge capital tax, but give tax credits in return
contract.storage[ACCOUNT_MAP_OFFSET + cur_account] -= tax
contract.storage[ACCOUNT_MAP_OFFSET + cur_account + 1] += tax_days * 86400
contract.storage[ACCOUNT_MAP_OFFSET + cur_account + 2] += tax
contract.storage[COMMONS] += tax
tax_paid += 1
account_idx += 1
return(tax_paid) # how many accounts did we charge tax on
else:
return([0, "unknown command"], 2)

View File

@ -1,7 +0,0 @@
def register(k, v):
if !self.storage[k]: # Is the key not yet taken?
# Then take it!
self.storage[k] = v
return(1)
else:
return(0) // Otherwise do nothing

View File

@ -1,43 +0,0 @@
macro padd($x, psuc($y)):
psuc(padd($x, $y))
macro padd($x, z()):
$x
macro dec(psuc($x)):
dec($x) + 1
macro dec(z()):
0
macro pmul($x, z()):
z()
macro pmul($x, psuc($y)):
padd(pmul($x, $y), $x)
macro pexp($x, z()):
one()
macro pexp($x, psuc($y)):
pmul($x, pexp($x, $y))
macro fac(z()):
one()
macro fac(psuc($x)):
pmul(psuc($x), fac($x))
macro one():
psuc(z())
macro two():
psuc(psuc(z()))
macro three():
psuc(psuc(psuc(z())))
macro five():
padd(three(), two())
return([dec(pmul(three(), pmul(three(), three()))), dec(fac(five()))], 2)

View File

@ -1,4 +0,0 @@
extern mul2: [double]
x = create("mul2.se")
return(x.double(5))

View File

@ -1,33 +0,0 @@
def kall():
argcount = ~calldatasize() / 32
if argcount == 1:
return(~calldataload(1))
args = array(argcount)
~calldatacopy(args, 1, argcount * 32)
low = array(argcount)
lsz = 0
high = array(argcount)
hsz = 0
i = 1
while i < argcount:
if args[i] < args[0]:
low[lsz] = args[i]
lsz += 1
else:
high[hsz] = args[i]
hsz += 1
i += 1
low = self.kall(data=low, datasz=lsz, outsz=lsz)
high = self.kall(data=high, datasz=hsz, outsz=hsz)
o = array(argcount)
i = 0
while i < lsz:
o[i] = low[i]
i += 1
o[lsz] = args[0]
j = 0
while j < hsz:
o[lsz + 1 + j] = high[j]
j += 1
return(o, argcount)

View File

@ -1,46 +0,0 @@
# Quicksort pairs
# eg. input of the form [ 30, 1, 90, 2, 70, 3, 50, 4]
# outputs [ 30, 1, 50, 4, 70, 3, 90, 2 ]
#
# Note: this can be used as a generalized sorting algorithm:
# map every object to [ key, ref ] where `ref` is the index
# in memory to all of the properties and `key` is the key to
# sort by
def kall():
argcount = ~calldatasize() / 64
if argcount == 1:
return([~calldataload(1), ~calldataload(33)], 2)
args = array(argcount * 2)
~calldatacopy(args, 1, argcount * 64)
low = array(argcount * 2)
lsz = 0
high = array(argcount * 2)
hsz = 0
i = 2
while i < argcount * 2:
if args[i] < args[0]:
low[lsz] = args[i]
low[lsz + 1] = args[i + 1]
lsz += 2
else:
high[hsz] = args[i]
high[hsz + 1] = args[i + 1]
hsz += 2
i = i + 2
low = self.kall(data=low, datasz=lsz, outsz=lsz)
high = self.kall(data=high, datasz=hsz, outsz=hsz)
o = array(argcount * 2)
i = 0
while i < lsz:
o[i] = low[i]
i += 1
o[lsz] = args[0]
o[lsz + 1] = args[1]
j = 0
while j < hsz:
o[lsz + 2 + j] = high[j]
j += 1
return(o, argcount * 2)

View File

@ -1,94 +0,0 @@
# SchellingCoin implementation
#
# Epoch length: 100 blocks
# Target savings depletion rate: 0.1% per epoch
data epoch
data hashes_submitted
data output
data quicksort_pairs
data accounts[2^160]
data submissions[2^80](hash, deposit, address, value)
extern any: [call]
def init():
self.epoch = block.number / 100
self.quicksort_pairs = create('quicksort_pairs.se')
def any():
if block.number / 100 > epoch:
# Sort all values submitted
N = self.hashes_submitted
o = array(N * 2)
i = 0
j = 0
while i < N:
v = self.submissions[i].value
if v:
o[j] = v
o[j + 1] = i
j += 2
i += 1
values = self.quicksort_pairs.call(data=o, datasz=j, outsz=j)
# Calculate total deposit, refund non-submitters and
# cleanup
deposits = array(j / 2)
addresses = array(j / 2)
i = 0
total_deposit = 0
while i < j / 2:
base_index = HASHES + values[i * 2 + 1] * 3
deposits[i] = self.submissions[i].deposit
addresses[i] = self.submissions[i].address
if self.submissions[values[i * 2 + 1]].value:
total_deposit += deposits[i]
else:
send(addresses[i], deposits[i] * 999 / 1000)
i += 1
inverse_profit_ratio = total_deposit / (contract.balance / 1000) + 1
# Reward everyone
i = 0
running_deposit_sum = 0
halfway_passed = 0
while i < j / 2:
new_deposit_sum = running_deposit_sum + deposits[i]
if new_deposit_sum > total_deposit / 4 and running_deposit_sum < total_deposit * 3 / 4:
send(addresses[i], deposits[i] + deposits[i] / inverse_profit_ratio * 2)
else:
send(addresses[i], deposits[i] - deposits[i] / inverse_profit_ratio)
if not halfway_passed and new_deposit_sum > total_deposit / 2:
self.output = self.submissions[i].value
halfway_passed = 1
self.submissions[i].value = 0
running_deposit_sum = new_deposit_sum
i += 1
self.epoch = block.number / 100
self.hashes_submitted = 0
def submit_hash(h):
if block.number % 100 < 50:
cur = self.hashes_submitted
pos = HASHES + cur * 3
self.submissions[cur].hash = h
self.submissions[cur].deposit = msg.value
self.submissions[cur].address = msg.sender
self.hashes_submitted = cur + 1
return(cur)
def submit_value(index, v):
if sha3([msg.sender, v], 2) == self.submissions[index].hash:
self.submissions[index].value = v
return(1)
def request_balance():
return(contract.balance)
def request_output():
return(self.output)

View File

@ -1,171 +0,0 @@
# Hedged zero-supply dollar implementation
# Uses SchellingCoin as price-determining backend
#
# Stored variables:
#
# 0: Schelling coin contract
# 1: Last epoch
# 2: Genesis block of contract
# 3: USD exposure
# 4: ETH exposure
# 5: Cached price
# 6: Last interest rate
# 2^160 + k: interest rate accumulator at k epochs
# 2^161 + ADDR * 3: eth-balance of a particular address
# 2^161 + ADDR * 3 + 1: usd-balance of a particular address
# 2^161 + ADDR * 3 + 1: last accessed epoch of a particular address
#
# Transaction types:
#
# [1, to, val]: send ETH
# [2, to, val]: send USD
# [3, wei_amount]: convert ETH to USD
# [4, usd_amount]: converts USD to ETH
# [5]: deposit
# [6, amount]: withdraw
# [7]: my balance query
# [7, acct]: balance query for any acct
# [8]: global state query
# [9]: liquidation test any account
#
# The purpose of the contract is to serve as a sort of cryptographic
# bank account where users can store both ETH and USD. ETH must be
# stored in zero or positive quantities, but USD balances can be
# positive or negative. If the USD balance is negative, the invariant
# usdbal * 10 >= ethbal * 9 must be satisfied; if any account falls
# below this value, then that account's balances are zeroed. Note
# that there is a 2% bounty to ping the app if an account does go
# below zero; one weakness is that if no one does ping then it is
# quite possible for accounts to go negative-net-worth, then zero
# themselves out, draining the reserves of the "bank" and potentially
# bankrupting it. A 0.1% fee on ETH <-> USD trade is charged to
# minimize this risk. Additionally, the bank itself will inevitably
# end up with positive or negative USD exposure; to mitigate this,
# it automatically updates interest rates on USD to keep exposure
# near zero.
data schelling_coin
data last_epoch
data starting_block
data usd_exposure
data eth_exposure
data price
data last_interest_rate
data interest_rate_accum[2^50]
data accounts[2^160](eth, usd, last_epoch)
extern sc: [submit_hash, submit_value, request_balance, request_output]
def init():
self.schelling_coin = create('schellingcoin.se')
self.price = self.schelling_coin.request_output()
self.interest_rate_accum[0] = 10^18
self.starting_block = block.number
def any():
sender = msg.sender
epoch = (block.number - self.starting_block) / 100
last_epoch = self.last_epoch
usdprice = self.price
# Update contract epochs
if epoch > last_epoch:
delta = epoch - last_epoch
last_interest_rate = self.last_interest_rate
usd_exposure - self.usd_exposure
last_accum = self.interest_rate_accum[last_epoch]
if usd_exposure < 0:
self.last_interest_rate = last_interest_rate - 10000 * delta
elif usd_exposure > 0:
self.last_interest_rate = last_interest_rate + 10000 * delta
self.interest_rate_accum[epoch] = last_accum + last_accum * last_interest_rate * delta / 10^9
# Proceeds go to support the SchellingCoin feeding it price data, ultimately providing the depositors
# of the SchellingCoin an interest rate
bal = max(self.balance - self.eth_exposure, 0) / 10000
usdprice = self.schelling_coin.request_output()
self.price = usdprice
self.last_epoch = epoch
ethbal = self.accounts[msg.sender].eth
usdbal = self.accounts[msg.sender].usd
# Apply interest rates to sender and liquidation-test self
if msg.sender != self:
self.ping(self)
def send_eth(to, value):
if value > 0 and value <= ethbal and usdbal * usdprice * 2 + (ethbal - value) >= 0:
self.accounts[msg.sender].eth = ethbal - value
self.ping(to)
self.accounts[to].eth += value
return(1)
def send_usd(to, value):
if value > 0 and value <= usdbal and (usdbal - value) * usdprice * 2 + ethbal >= 0:
self.accounts[msg.sender].usd = usdbal - value
self.ping(to)
self.accounts[to].usd += value
return(1)
def convert_to_eth(usdvalue):
ethplus = usdvalue * usdprice * 999 / 1000
if usdvalue > 0 and (usdbal - usdvalue) * usdprice * 2 + (ethbal + ethplus) >= 0:
self.accounts[msg.sender].eth = ethbal + ethplus
self.accounts[msg.sender].usd = usdbal - usdvalue
self.eth_exposure += ethplus
self.usd_exposure -= usdvalue
return([ethbal + ethplus, usdbal - usdvalue], 2)
def convert_to_usd(ethvalue):
usdplus = ethvalue / usdprice * 999 / 1000
if ethvalue > 0 and (usdbal + usdplus) * usdprice * 2 + (ethbal - ethvalue) >= 0:
self.accounts[msg.sender].eth = ethbal - ethvalue
self.accounts[msg.sender].usd = usdbal + usdplus
self.eth_exposure -= ethvalue
self.usd_exposure += usdplus
return([ethbal - ethvalue, usdbal + usdplus], 2)
def deposit():
self.accounts[msg.sender].eth = ethbal + msg.value
self.eth_exposure += msg.value
return(ethbal + msg.value)
def withdraw(value):
if value > 0 and value <= ethbal and usdbal * usdprice * 2 + (ethbal - value) >= 0:
self.accounts[msg.sender].eth -= value
self.eth_exposure -= value
return(ethbal - value)
def balance(acct):
self.ping(acct)
return([self.accounts[acct].eth, self.accounts[acct].usd], 2)
def global_state_query(acct):
interest = self.last_interest_rate
usd_exposure = self.usd_exposure
eth_exposure = self.eth_exposure
eth_balance = self.balance
return([epoch, usdprice, interest, usd_exposure, eth_exposure, eth_balance], 6)
def ping(acct):
account_last_epoch = self.accounts[acct].last_epoch
if account_last_epoch != epoch:
cur_usd_balance = self.accounts[acct].usd
new_usd_balance = cur_usd_balance * self.interest_rate_accum[epoch] / self.interest_rate_accum[account_last_epoch]
self.accounts[acct].usd = new_usd_balance
self.accounts[acct].last_epoch = epoch
self.usd_exposure += new_usd_balance - cur_usd_balance
ethbal = self.accounts[acct].eth
if new_usd_balance * usdval * 10 + ethbal * 9 < 0:
self.accounts[acct].eth = 0
self.accounts[acct].usd = 0
self.accounts[msg.sender].eth += ethbal / 50
self.eth_exposure += -ethbal + ethbal / 50
self.usd_exposure += new_usd_balance
return(1)
return(0)

View File

@ -1 +0,0 @@
return(sha3([msg.sender, msg.data[0]], 2))

View File

@ -1,3 +0,0 @@
def register(k, v):
if !self.storage[k]:
self.storage[k] = v

View File

@ -1,11 +0,0 @@
def init():
self.storage[msg.sender] = 1000000
def balance_query(k):
return(self.storage[addr])
def send(to, value):
fromvalue = self.storage[msg.sender]
if fromvalue >= value:
self.storage[from] = fromvalue - value
self.storage[to] += value

View File

@ -1,35 +0,0 @@
#include <stdio.h>
#include <iostream>
#include <vector>
#include "funcs.h"
#include "bignum.h"
#include "util.h"
#include "parser.h"
#include "lllparser.h"
#include "compiler.h"
#include "rewriter.h"
#include "tokenize.h"
Node compileToLLL(std::string input) {
return rewrite(parseSerpent(input));
}
Node compileChunkToLLL(std::string input) {
return rewriteChunk(parseSerpent(input));
}
std::string compile(std::string input) {
return compileLLL(compileToLLL(input));
}
std::vector<Node> prettyCompile(std::string input) {
return prettyCompileLLL(compileToLLL(input));
}
std::string compileChunk(std::string input) {
return compileLLL(compileChunkToLLL(input));
}
std::vector<Node> prettyCompileChunk(std::string input) {
return prettyCompileLLL(compileChunkToLLL(input));
}

View File

@ -1,35 +0,0 @@
#include <stdio.h>
#include <iostream>
#include <vector>
#include "bignum.h"
#include "util.h"
#include "parser.h"
#include "lllparser.h"
#include "compiler.h"
#include "rewriter.h"
#include "tokenize.h"
// Function listing:
//
// parseSerpent (serpent -> AST) std::string -> Node
// parseLLL (LLL -> AST) std::string -> Node
// rewrite (apply rewrite rules) Node -> Node
// compileToLLL (serpent -> LLL) std::string -> Node
// compileLLL (LLL -> EVMhex) Node -> std::string
// prettyCompileLLL (LLL -> EVMasm) Node -> std::vector<Node>
// prettyCompile (serpent -> EVMasm) std::string -> std::vector>Node>
// compile (serpent -> EVMhex) std::string -> std::string
// get_file_contents (filename -> file) std::string -> std::string
// exists (does file exist?) std::string -> bool
Node compileToLLL(std::string input);
Node compileChunkToLLL(std::string input);
std::string compile(std::string input);
std::vector<Node> prettyCompile(std::string input);
std::string compileChunk(std::string input);
std::vector<Node> prettyCompileChunk(std::string input);

View File

@ -1,203 +0,0 @@
#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>
#include "util.h"
#include "lllparser.h"
#include "bignum.h"
#include "optimize.h"
#include "rewriteutils.h"
#include "preprocess.h"
#include "functions.h"
std::string getSignature(std::vector<Node> args) {
std::string o;
for (unsigned i = 0; i < args.size(); i++) {
if (args[i].val == ":" && args[i].args[1].val == "s")
o += "s";
else if (args[i].val == ":" && args[i].args[1].val == "a")
o += "a";
else
o += "i";
}
return o;
}
// Convert a list of arguments into a node containing a
// < datastart, datasz > pair
Node packArguments(std::vector<Node> args, std::string sig,
int funId, Metadata m) {
// Plain old 32 byte arguments
std::vector<Node> nargs;
// Variable-sized arguments
std::vector<Node> vargs;
// Variable sizes
std::vector<Node> sizes;
// Is a variable an array?
std::vector<bool> isArray;
// Fill up above three argument lists
int argCount = 0;
for (unsigned i = 0; i < args.size(); i++) {
Metadata m = args[i].metadata;
if (args[i].val == "=") {
// do nothing
}
else {
// Determine the correct argument type
char argType;
if (sig.size() > 0) {
if (argCount >= (signed)sig.size())
err("Too many args", m);
argType = sig[argCount];
}
else argType = 'i';
// Integer (also usable for short strings)
if (argType == 'i') {
if (args[i].val == ":")
err("Function asks for int, provided string or array", m);
nargs.push_back(args[i]);
}
// Long string
else if (argType == 's') {
if (args[i].val != ":")
err("Must specify string length", m);
vargs.push_back(args[i].args[0]);
sizes.push_back(args[i].args[1]);
isArray.push_back(false);
}
// Array
else if (argType == 'a') {
if (args[i].val != ":")
err("Must specify array length", m);
vargs.push_back(args[i].args[0]);
sizes.push_back(args[i].args[1]);
isArray.push_back(true);
}
else err("Invalid arg type in signature", m);
argCount++;
}
}
int static_arg_size = 1 + (vargs.size() + nargs.size()) * 32;
// Start off by saving the size variables and calculating the total
msn kwargs;
kwargs["funid"] = tkn(utd(funId), m);
std::string pattern =
"(with _sztot "+utd(static_arg_size)+" "
" (with _sizes (alloc "+utd(sizes.size() * 32)+") "
" (seq ";
for (unsigned i = 0; i < sizes.size(); i++) {
std::string sizeIncrement =
isArray[i] ? "(mul 32 _x)" : "_x";
pattern +=
"(with _x $sz"+utd(i)+"(seq "
" (mstore (add _sizes "+utd(i * 32)+") _x) "
" (set _sztot (add _sztot "+sizeIncrement+" )))) ";
kwargs["sz"+utd(i)] = sizes[i];
}
// Allocate memory, and set first data byte
pattern +=
"(with _datastart (alloc (add _sztot 32)) (seq "
" (mstore8 _datastart $funid) ";
// Copy over size variables
for (unsigned i = 0; i < sizes.size(); i++) {
int v = 1 + i * 32;
pattern +=
" (mstore "
" (add _datastart "+utd(v)+") "
" (mload (add _sizes "+utd(v-1)+"))) ";
}
// Store normal arguments
for (unsigned i = 0; i < nargs.size(); i++) {
int v = 1 + (i + sizes.size()) * 32;
pattern +=
" (mstore (add _datastart "+utd(v)+") $"+utd(i)+") ";
kwargs[utd(i)] = nargs[i];
}
// Loop through variable-sized arguments, store them
pattern +=
" (with _pos (add _datastart "+utd(static_arg_size)+") (seq";
for (unsigned i = 0; i < vargs.size(); i++) {
std::string copySize =
isArray[i] ? "(mul 32 (mload (add _sizes "+utd(i * 32)+")))"
: "(mload (add _sizes "+utd(i * 32)+"))";
pattern +=
" (unsafe_mcopy _pos $vl"+utd(i)+" "+copySize+") "
" (set _pos (add _pos "+copySize+")) ";
kwargs["vl"+utd(i)] = vargs[i];
}
// Return a 2-item array containing the start and size
pattern += " (array_lit _datastart _sztot))))))))";
std::string prefix = "_temp_"+mkUniqueToken();
// Fill in pattern, return triple
return subst(parseLLL(pattern), kwargs, prefix, m);
}
// Create a node for argument unpacking
Node unpackArguments(std::vector<Node> vars, Metadata m) {
std::vector<std::string> varNames;
std::vector<std::string> longVarNames;
std::vector<bool> longVarIsArray;
// Fill in variable and long variable names, as well as which
// long variables are arrays and which are strings
for (unsigned i = 0; i < vars.size(); i++) {
if (vars[i].val == ":") {
if (vars[i].args.size() != 2)
err("Malformed def!", m);
longVarNames.push_back(vars[i].args[0].val);
std::string tag = vars[i].args[1].val;
if (tag == "s")
longVarIsArray.push_back(false);
else if (tag == "a")
longVarIsArray.push_back(true);
else
err("Function value can only be string or array", m);
}
else {
varNames.push_back(vars[i].val);
}
}
std::vector<Node> sub;
if (!varNames.size() && !longVarNames.size()) {
// do nothing if we have no arguments
}
else {
std::vector<Node> varNodes;
for (unsigned i = 0; i < longVarNames.size(); i++)
varNodes.push_back(token(longVarNames[i], m));
for (unsigned i = 0; i < varNames.size(); i++)
varNodes.push_back(token(varNames[i], m));
// Copy over variable lengths and short variables
for (unsigned i = 0; i < varNodes.size(); i++) {
int pos = 1 + i * 32;
std::string prefix = (i < longVarNames.size()) ? "_len_" : "";
sub.push_back(asn("untyped", asn("set",
token(prefix+varNodes[i].val, m),
asn("calldataload", tkn(utd(pos), m), m),
m)));
}
// Copy over long variables
if (longVarNames.size() > 0) {
std::vector<Node> sub2;
int pos = varNodes.size() * 32 + 1;
Node tot = tkn("_tot", m);
for (unsigned i = 0; i < longVarNames.size(); i++) {
Node var = tkn(longVarNames[i], m);
Node varlen = longVarIsArray[i]
? asn("mul", tkn("32", m), tkn("_len_"+longVarNames[i], m))
: tkn("_len_"+longVarNames[i], m);
sub2.push_back(asn("untyped",
asn("set", var, asn("alloc", varlen))));
sub2.push_back(asn("calldatacopy", var, tot, varlen));
sub2.push_back(asn("set", tot, asn("add", tot, varlen)));
}
std::string prefix = "_temp_"+mkUniqueToken();
sub.push_back(subst(
astnode("with", tot, tkn(utd(pos), m), asn("seq", sub2)),
msn(),
prefix,
m));
}
}
return asn("seq", sub, m);
}

View File

@ -1,39 +0,0 @@
#ifndef ETHSERP_FUNCTIONS
#define ETHSERP_FUNCTIONS
#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>
#include "util.h"
#include "lllparser.h"
#include "bignum.h"
#include "optimize.h"
#include "rewriteutils.h"
#include "preprocess.h"
class argPack {
public:
argPack(Node a, Node b, Node c) {
pre = a;
datastart = b;
datasz = c;
}
Node pre;
Node datastart;
Node datasz;
};
// Get a signature from a function
std::string getSignature(std::vector<Node> args);
// Convert a list of arguments into a <pre, mstart, msize> node
// triple, given the signature of a function
Node packArguments(std::vector<Node> args, std::string sig,
int funId, Metadata m);
// Create a node for argument unpacking
Node unpackArguments(std::vector<Node> vars, Metadata m);
#endif

View File

@ -1,70 +0,0 @@
#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>
#include "util.h"
#include "lllparser.h"
#include "tokenize.h"
struct _parseOutput {
Node node;
int newpos;
};
// Helper, returns subtree and position of start of next node
_parseOutput _parse(std::vector<Node> inp, int pos) {
Metadata met = inp[pos].metadata;
_parseOutput o;
// Bracket: keep grabbing tokens until we get to the
// corresponding closing bracket
if (inp[pos].val == "(" || inp[pos].val == "[") {
std::string fun, rbrack;
std::vector<Node> args;
pos += 1;
if (inp[pos].val == "[") {
fun = "access";
rbrack = "]";
}
else rbrack = ")";
// First argument is the function
while (inp[pos].val != ")") {
_parseOutput po = _parse(inp, pos);
if (fun.length() == 0 && po.node.type == 1) {
std::cerr << "Error: first arg must be function\n";
fun = po.node.val;
}
else if (fun.length() == 0) {
fun = po.node.val;
}
else {
args.push_back(po.node);
}
pos = po.newpos;
}
o.newpos = pos + 1;
o.node = astnode(fun, args, met);
}
// Normal token, return it and advance to next token
else {
o.newpos = pos + 1;
o.node = token(inp[pos].val, met);
}
return o;
}
// stream of tokens -> lisp parse tree
Node parseLLLTokenStream(std::vector<Node> inp) {
_parseOutput o = _parse(inp, 0);
return o.node;
}
// Parses LLL
Node parseLLL(std::string s, bool allowFileRead) {
std::string input = s;
std::string file = "main";
if (exists(s) && allowFileRead) {
file = s;
input = get_file_contents(s);
}
return parseLLLTokenStream(tokenize(s, Metadata(file, 0, 0), true));
}

View File

@ -1,13 +0,0 @@
#ifndef ETHSERP_LLLPARSER
#define ETHSERP_LLLPARSER
#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>
#include "util.h"
// LLL text -> parse tree
Node parseLLL(std::string s, bool allowFileRead=false);
#endif

View File

@ -1,154 +0,0 @@
#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>
#include "opcodes.h"
#include "util.h"
#include "bignum.h"
Mapping mapping[] = {
Mapping("STOP", 0x00, 0, 0),
Mapping("ADD", 0x01, 2, 1),
Mapping("MUL", 0x02, 2, 1),
Mapping("SUB", 0x03, 2, 1),
Mapping("DIV", 0x04, 2, 1),
Mapping("SDIV", 0x05, 2, 1),
Mapping("MOD", 0x06, 2, 1),
Mapping("SMOD", 0x07, 2, 1),
Mapping("ADDMOD", 0x08, 3, 1),
Mapping("MULMOD", 0x09, 3, 1),
Mapping("EXP", 0x0a, 2, 1),
Mapping("SIGNEXTEND", 0x0b, 2, 1),
Mapping("LT", 0x10, 2, 1),
Mapping("GT", 0x11, 2, 1),
Mapping("SLT", 0x12, 2, 1),
Mapping("SGT", 0x13, 2, 1),
Mapping("EQ", 0x14, 2, 1),
Mapping("ISZERO", 0x15, 1, 1),
Mapping("AND", 0x16, 2, 1),
Mapping("OR", 0x17, 2, 1),
Mapping("XOR", 0x18, 2, 1),
Mapping("NOT", 0x19, 1, 1),
Mapping("BYTE", 0x1a, 2, 1),
Mapping("SHA3", 0x20, 2, 1),
Mapping("ADDRESS", 0x30, 0, 1),
Mapping("BALANCE", 0x31, 1, 1),
Mapping("ORIGIN", 0x32, 0, 1),
Mapping("CALLER", 0x33, 0, 1),
Mapping("CALLVALUE", 0x34, 0, 1),
Mapping("CALLDATALOAD", 0x35, 1, 1),
Mapping("CALLDATASIZE", 0x36, 0, 1),
Mapping("CALLDATACOPY", 0x37, 3, 0),
Mapping("CODESIZE", 0x38, 0, 1),
Mapping("CODECOPY", 0x39, 3, 0),
Mapping("GASPRICE", 0x3a, 0, 1),
Mapping("EXTCODESIZE", 0x3b, 1, 1),
Mapping("EXTCODECOPY", 0x3c, 4, 0),
Mapping("PREVHASH", 0x40, 0, 1),
Mapping("COINBASE", 0x41, 0, 1),
Mapping("TIMESTAMP", 0x42, 0, 1),
Mapping("NUMBER", 0x43, 0, 1),
Mapping("DIFFICULTY", 0x44, 0, 1),
Mapping("GASLIMIT", 0x45, 0, 1),
Mapping("POP", 0x50, 1, 0),
Mapping("MLOAD", 0x51, 1, 1),
Mapping("MSTORE", 0x52, 2, 0),
Mapping("MSTORE8", 0x53, 2, 0),
Mapping("SLOAD", 0x54, 1, 1),
Mapping("SSTORE", 0x55, 2, 0),
Mapping("JUMP", 0x56, 1, 0),
Mapping("JUMPI", 0x57, 2, 0),
Mapping("PC", 0x58, 0, 1),
Mapping("MSIZE", 0x59, 0, 1),
Mapping("GAS", 0x5a, 0, 1),
Mapping("JUMPDEST", 0x5b, 0, 0),
Mapping("LOG0", 0xa0, 2, 0),
Mapping("LOG1", 0xa1, 3, 0),
Mapping("LOG2", 0xa2, 4, 0),
Mapping("LOG3", 0xa3, 5, 0),
Mapping("LOG4", 0xa4, 6, 0),
Mapping("CREATE", 0xf0, 3, 1),
Mapping("CALL", 0xf1, 7, 1),
Mapping("CALLCODE", 0xf2, 7, 1),
Mapping("RETURN", 0xf3, 2, 0),
Mapping("SUICIDE", 0xff, 1, 0),
Mapping("---END---", 0x00, 0, 0),
};
std::map<std::string, std::vector<int> > opcodes;
std::map<int, std::string> reverseOpcodes;
// Fetches everything EXCEPT PUSH1..32
std::pair<std::string, std::vector<int> > _opdata(std::string ops, int opi) {
if (!opcodes.size()) {
int i = 0;
while (mapping[i].op != "---END---") {
Mapping mi = mapping[i];
opcodes[mi.op] = triple(mi.opcode, mi.in, mi.out);
i++;
}
for (i = 1; i <= 16; i++) {
opcodes["DUP"+unsignedToDecimal(i)] = triple(0x7f + i, i, i+1);
opcodes["SWAP"+unsignedToDecimal(i)] = triple(0x8f + i, i+1, i+1);
}
for (std::map<std::string, std::vector<int> >::iterator it=opcodes.begin();
it != opcodes.end();
it++) {
reverseOpcodes[(*it).second[0]] = (*it).first;
}
}
ops = upperCase(ops);
std::string op;
std::vector<int> opdata;
op = reverseOpcodes.count(opi) ? reverseOpcodes[opi] : "";
opdata = opcodes.count(ops) ? opcodes[ops] : triple(-1, -1, -1);
return std::pair<std::string, std::vector<int> >(op, opdata);
}
int opcode(std::string op) {
return _opdata(op, -1).second[0];
}
int opinputs(std::string op) {
return _opdata(op, -1).second[1];
}
int opoutputs(std::string op) {
return _opdata(op, -1).second[2];
}
std::string op(int opcode) {
return _opdata("", opcode).first;
}
std::string lllSpecials[][3] = {
{ "ref", "1", "1" },
{ "get", "1", "1" },
{ "set", "2", "2" },
{ "with", "3", "3" },
{ "comment", "0", "2147483647" },
{ "ops", "0", "2147483647" },
{ "lll", "2", "2" },
{ "seq", "0", "2147483647" },
{ "if", "3", "3" },
{ "unless", "2", "2" },
{ "until", "2", "2" },
{ "alloc", "1", "1" },
{ "---END---", "0", "0" },
};
std::map<std::string, std::pair<int, int> > lllMap;
// Is a function name one of the valid functions above?
bool isValidLLLFunc(std::string f, int argc) {
if (lllMap.size() == 0) {
for (int i = 0; ; i++) {
if (lllSpecials[i][0] == "---END---") break;
lllMap[lllSpecials[i][0]] = std::pair<int, int>(
dtu(lllSpecials[i][1]), dtu(lllSpecials[i][2]));
}
}
return lllMap.count(f)
&& argc >= lllMap[f].first
&& argc <= lllMap[f].second;
}

View File

@ -1,45 +0,0 @@
#ifndef ETHSERP_OPCODES
#define ETHSERP_OPCODES
#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>
#include "util.h"
class Mapping {
public:
Mapping(std::string Op, int Opcode, int In, int Out) {
op = Op;
opcode = Opcode;
in = In;
out = Out;
}
std::string op;
int opcode;
int in;
int out;
};
extern Mapping mapping[];
extern std::map<std::string, std::vector<int> > opcodes;
extern std::map<int, std::string> reverseOpcodes;
std::pair<std::string, std::vector<int> > _opdata(std::string ops, int opi);
int opcode(std::string op);
int opinputs(std::string op);
int opoutputs(std::string op);
std::string op(int opcode);
extern std::string lllSpecials[][3];
extern std::map<std::string, std::pair<int, int> > lllMap;
bool isValidLLLFunc(std::string f, int argc);
#endif

View File

@ -1,98 +0,0 @@
#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>
#include "util.h"
#include "lllparser.h"
#include "bignum.h"
// Compile-time arithmetic calculations
Node optimize(Node inp) {
if (inp.type == TOKEN) {
Node o = tryNumberize(inp);
if (decimalGt(o.val, tt256, true))
err("Value too large (exceeds 32 bytes or 2^256)", inp.metadata);
return o;
}
for (unsigned i = 0; i < inp.args.size(); i++) {
inp.args[i] = optimize(inp.args[i]);
}
// Arithmetic-specific transform
if (inp.val == "+") inp.val = "add";
if (inp.val == "*") inp.val = "mul";
if (inp.val == "-") inp.val = "sub";
if (inp.val == "/") inp.val = "sdiv";
if (inp.val == "^") inp.val = "exp";
if (inp.val == "**") inp.val = "exp";
if (inp.val == "%") inp.val = "smod";
// Degenerate cases for add and mul
if (inp.args.size() == 2) {
if (inp.val == "add" && inp.args[0].type == TOKEN &&
inp.args[0].val == "0") {
Node x = inp.args[1];
inp = x;
}
if (inp.val == "add" && inp.args[1].type == TOKEN &&
inp.args[1].val == "0") {
Node x = inp.args[0];
inp = x;
}
if (inp.val == "mul" && inp.args[0].type == TOKEN &&
inp.args[0].val == "1") {
Node x = inp.args[1];
inp = x;
}
if (inp.val == "mul" && inp.args[1].type == TOKEN &&
inp.args[1].val == "1") {
Node x = inp.args[0];
inp = x;
}
}
// Arithmetic computation
if (inp.args.size() == 2
&& inp.args[0].type == TOKEN
&& inp.args[1].type == TOKEN) {
std::string o;
if (inp.val == "add") {
o = decimalMod(decimalAdd(inp.args[0].val, inp.args[1].val), tt256);
}
else if (inp.val == "sub") {
if (decimalGt(inp.args[0].val, inp.args[1].val, true))
o = decimalSub(inp.args[0].val, inp.args[1].val);
}
else if (inp.val == "mul") {
o = decimalMod(decimalMul(inp.args[0].val, inp.args[1].val), tt256);
}
else if (inp.val == "div" && inp.args[1].val != "0") {
o = decimalDiv(inp.args[0].val, inp.args[1].val);
}
else if (inp.val == "sdiv" && inp.args[1].val != "0"
&& decimalGt(tt255, inp.args[0].val)
&& decimalGt(tt255, inp.args[1].val)) {
o = decimalDiv(inp.args[0].val, inp.args[1].val);
}
else if (inp.val == "mod" && inp.args[1].val != "0") {
o = decimalMod(inp.args[0].val, inp.args[1].val);
}
else if (inp.val == "smod" && inp.args[1].val != "0"
&& decimalGt(tt255, inp.args[0].val)
&& decimalGt(tt255, inp.args[1].val)) {
o = decimalMod(inp.args[0].val, inp.args[1].val);
}
else if (inp.val == "exp") {
o = decimalModExp(inp.args[0].val, inp.args[1].val, tt256);
}
if (o.length()) return token(o, inp.metadata);
}
return inp;
}
// Is a node degenerate (ie. trivial to calculate) ?
bool isDegenerate(Node n) {
return optimize(n).type == TOKEN;
}
// Is a node purely arithmetic?
bool isPureArithmetic(Node n) {
return isNumberLike(optimize(n));
}

View File

@ -1,19 +0,0 @@
#ifndef ETHSERP_OPTIMIZER
#define ETHSERP_OPTIMIZER
#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>
#include "util.h"
// Compile-time arithmetic calculations
Node optimize(Node inp);
// Is a node degenerate (ie. trivial to calculate) ?
bool isDegenerate(Node n);
// Is a node purely arithmetic?
bool isPureArithmetic(Node n);
#endif

View File

@ -1,430 +0,0 @@
#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>
#include "util.h"
#include "parser.h"
#include "tokenize.h"
// Extended BEDMAS precedence order
int precedence(Node tok) {
std::string v = tok.val;
if (v == ".") return -1;
else if (v == "!" || v == "not") return 1;
else if (v=="^" || v == "**") return 2;
else if (v=="*" || v=="/" || v=="%") return 3;
else if (v=="+" || v=="-") return 4;
else if (v=="<" || v==">" || v=="<=" || v==">=") return 5;
else if (v=="&" || v=="|" || v=="xor" || v=="==" || v == "!=") return 6;
else if (v=="&&" || v=="and") return 7;
else if (v=="||" || v=="or") return 8;
else if (v=="=") return 10;
else if (v=="+=" || v=="-=" || v=="*=" || v=="/=" || v=="%=") return 10;
else if (v==":" || v == "::") return 11;
else return 0;
}
// Token classification for shunting-yard purposes
int toktype(Node tok) {
if (tok.type == ASTNODE) return COMPOUND;
std::string v = tok.val;
if (v == "(" || v == "[" || v == "{") return LPAREN;
else if (v == ")" || v == "]" || v == "}") return RPAREN;
else if (v == ",") return COMMA;
else if (v == "!" || v == "~" || v == "not") return UNARY_OP;
else if (precedence(tok) > 0) return BINARY_OP;
else if (precedence(tok) < 0) return TOKEN_SPLITTER;
if (tok.val[0] != '"' && tok.val[0] != '\'') {
for (unsigned i = 0; i < tok.val.length(); i++) {
if (chartype(tok.val[i]) == SYMB) {
err("Invalid symbol: "+tok.val, tok.metadata);
}
}
}
return ALPHANUM;
}
// Converts to reverse polish notation
std::vector<Node> shuntingYard(std::vector<Node> tokens) {
std::vector<Node> iq;
for (int i = tokens.size() - 1; i >= 0; i--) {
iq.push_back(tokens[i]);
}
std::vector<Node> oq;
std::vector<Node> stack;
Node prev, tok;
int prevtyp = 0, toktyp = 0;
while (iq.size()) {
prev = tok;
prevtyp = toktyp;
tok = iq.back();
toktyp = toktype(tok);
iq.pop_back();
// Alphanumerics go straight to output queue
if (toktyp == ALPHANUM) {
oq.push_back(tok);
}
// Left parens go on stack and output queue
else if (toktyp == LPAREN) {
while (stack.size() && toktype(stack.back()) == TOKEN_SPLITTER) {
oq.push_back(stack.back());
stack.pop_back();
}
if (prevtyp != ALPHANUM && prevtyp != RPAREN) {
oq.push_back(token("id", tok.metadata));
}
stack.push_back(tok);
oq.push_back(tok);
}
// If rparen, keep moving from stack to output queue until lparen
else if (toktyp == RPAREN) {
while (stack.size() && toktype(stack.back()) != LPAREN) {
oq.push_back(stack.back());
stack.pop_back();
}
if (stack.size()) {
stack.pop_back();
}
oq.push_back(tok);
}
else if (toktyp == UNARY_OP) {
stack.push_back(tok);
}
// If token splitter, just push it to the stack
else if (toktyp == TOKEN_SPLITTER) {
while (stack.size() && toktype(stack.back()) == TOKEN_SPLITTER) {
oq.push_back(stack.back());
stack.pop_back();
}
stack.push_back(tok);
}
// If binary op, keep popping from stack while higher bedmas precedence
else if (toktyp == BINARY_OP) {
if (tok.val == "-" && prevtyp != ALPHANUM && prevtyp != RPAREN) {
stack.push_back(tok);
oq.push_back(token("0", tok.metadata));
}
else {
int prec = precedence(tok);
while (stack.size()
&& (toktype(stack.back()) == BINARY_OP
|| toktype(stack.back()) == UNARY_OP
|| toktype(stack.back()) == TOKEN_SPLITTER)
&& precedence(stack.back()) <= prec) {
oq.push_back(stack.back());
stack.pop_back();
}
stack.push_back(tok);
}
}
// Comma means finish evaluating the argument
else if (toktyp == COMMA) {
while (stack.size() && toktype(stack.back()) != LPAREN) {
oq.push_back(stack.back());
stack.pop_back();
}
}
}
while (stack.size()) {
oq.push_back(stack.back());
stack.pop_back();
}
return oq;
}
// Converts reverse polish notation into tree
Node treefy(std::vector<Node> stream) {
std::vector<Node> iq;
for (int i = stream.size() -1; i >= 0; i--) {
iq.push_back(stream[i]);
}
std::vector<Node> oq;
while (iq.size()) {
Node tok = iq.back();
iq.pop_back();
int typ = toktype(tok);
// If unary, take node off end of oq and wrap it with the operator
// If binary, do the same with two nodes
if (typ == UNARY_OP || typ == BINARY_OP || typ == TOKEN_SPLITTER) {
std::vector<Node> args;
int rounds = (typ == UNARY_OP) ? 1 : 2;
for (int i = 0; i < rounds; i++) {
if (oq.size() == 0) {
err("Line malformed, not enough args for "+tok.val,
tok.metadata);
}
args.push_back(oq.back());
oq.pop_back();
}
std::vector<Node> args2;
while (args.size()) {
args2.push_back(args.back());
args.pop_back();
}
oq.push_back(astnode(tok.val, args2, tok.metadata));
}
// If rparen, keep grabbing until we get to an lparen
else if (typ == RPAREN) {
std::vector<Node> args;
while (1) {
if (toktype(oq.back()) == LPAREN) break;
args.push_back(oq.back());
oq.pop_back();
if (!oq.size()) err("Bracket without matching", tok.metadata);
}
oq.pop_back();
args.push_back(oq.back());
oq.pop_back();
// We represent a[b] as (access a b)
if (tok.val == "]")
args.push_back(token("access", tok.metadata));
if (args.back().type == ASTNODE)
args.push_back(token("fun", tok.metadata));
std::string fun = args.back().val;
args.pop_back();
// We represent [1,2,3] as (array_lit 1 2 3)
if (fun == "access" && args.size() && args.back().val == "id") {
fun = "array_lit";
args.pop_back();
}
std::vector<Node> args2;
while (args.size()) {
args2.push_back(args.back());
args.pop_back();
}
// When evaluating 2 + (3 * 5), the shunting yard algo turns that
// into 2 ( id 3 5 * ) +, effectively putting "id" as a dummy
// function where the algo was expecting a function to call the
// thing inside the brackets. This reverses that step
if (fun == "id" && args2.size() == 1) {
oq.push_back(args2[0]);
}
else {
oq.push_back(astnode(fun, args2, tok.metadata));
}
}
else oq.push_back(tok);
// This is messy, but has to be done. Import/inset other files here
std::string v = oq.back().val;
if ((v == "inset" || v == "import" || v == "create")
&& oq.back().args.size() == 1
&& oq.back().args[0].type == TOKEN) {
int lastSlashPos = tok.metadata.file.rfind("/");
std::string root;
if (lastSlashPos >= 0)
root = tok.metadata.file.substr(0, lastSlashPos) + "/";
else
root = "";
std::string filename = oq.back().args[0].val;
filename = filename.substr(1, filename.length() - 2);
if (!exists(root + filename))
err("File does not exist: "+root + filename, tok.metadata);
oq.back().args.pop_back();
oq.back().args.push_back(parseSerpent(root + filename));
}
//Useful for debugging
//for (int i = 0; i < oq.size(); i++) {
// std::cerr << printSimple(oq[i]) << " ";
//}
//std::cerr << " <-\n";
}
// Output must have one argument
if (oq.size() == 0) {
err("Output blank", Metadata());
}
else if (oq.size() > 1) {
return asn("multi", oq, oq[0].metadata);
}
return oq[0];
}
// Parses one line of serpent
Node parseSerpentTokenStream(std::vector<Node> s) {
return treefy(shuntingYard(s));
}
// Count spaces at beginning of line
int spaceCount(std::string s) {
unsigned pos = 0;
while (pos < s.length() && (s[pos] == ' ' || s[pos] == '\t'))
pos++;
return pos;
}
// Is this a command that takes an argument on the same line?
bool bodied(std::string tok) {
return tok == "if" || tok == "elif" || tok == "while"
|| tok == "with" || tok == "def" || tok == "extern"
|| tok == "data" || tok == "assert" || tok == "return"
|| tok == "fun" || tok == "scope" || tok == "macro"
|| tok == "type";
}
// Are the two commands meant to continue each other?
bool bodiedContinued(std::string prev, std::string tok) {
return (prev == "if" && tok == "elif")
|| (prev == "elif" && tok == "else")
|| (prev == "elif" && tok == "elif")
|| (prev == "if" && tok == "else");
}
// Is a line of code empty?
bool isLineEmpty(std::string line) {
std::vector<Node> tokens = tokenize(line);
if (!tokens.size() || tokens[0].val == "#" || tokens[0].val == "//")
return true;
return false;
}
// Parse lines of serpent (helper function)
Node parseLines(std::vector<std::string> lines, Metadata metadata, int sp) {
std::vector<Node> o;
int origLine = metadata.ln;
unsigned i = 0;
while (i < lines.size()) {
metadata.ln = origLine + i;
std::string main = lines[i];
if (isLineEmpty(main)) {
i += 1;
continue;
}
int spaces = spaceCount(main);
if (spaces != sp) {
err("Indent mismatch", metadata);
}
// Tokenize current line
std::vector<Node> tokens = tokenize(main.substr(sp), metadata);
// Remove comments
std::vector<Node> tokens2;
for (unsigned j = 0; j < tokens.size(); j++) {
if (tokens[j].val == "#" || tokens[j].val == "//") break;
tokens2.push_back(tokens[j]);
}
bool expectingChildBlock = false;
if (tokens2.size() > 0 && tokens2.back().val == ":") {
tokens2.pop_back();
expectingChildBlock = true;
}
// Parse current line
Node out = parseSerpentTokenStream(tokens2);
// Parse child block
int childIndent = 999999;
std::vector<std::string> childBlock;
while (1) {
i++;
if (i >= lines.size())
break;
bool ile = isLineEmpty(lines[i]);
if (!ile) {
int spaces = spaceCount(lines[i]);
if (spaces <= sp) break;
childBlock.push_back(lines[i]);
if (spaces < childIndent) childIndent = spaces;
}
else childBlock.push_back("");
}
// Child block empty?
bool cbe = true;
for (unsigned i = 0; i < childBlock.size(); i++) {
if (childBlock[i].length() > 0) { cbe = false; break; }
}
// Add child block to AST
if (expectingChildBlock) {
if (cbe)
err("Expected indented child block!", out.metadata);
out.type = ASTNODE;
metadata.ln += 1;
out.args.push_back(parseLines(childBlock, metadata, childIndent));
metadata.ln -= 1;
}
else if (!cbe)
err("Did not expect indented child block!", out.metadata);
else if (out.args.size() && out.args[out.args.size() - 1].val == ":") {
Node n = out.args[out.args.size() - 1];
out.args.pop_back();
out.args.push_back(n.args[0]);
out.args.push_back(n.args[1]);
}
// Bring back if / elif into AST
if (bodied(tokens[0].val)) {
if (out.val != "multi") {
// token not being used in bodied form
}
else if (out.args[0].val == "id")
out = astnode(tokens[0].val, out.args[1].args, out.metadata);
else if (out.args[0].type == TOKEN) {
std::vector<Node> out2;
for (unsigned i = 1; i < out.args.size(); i++)
out2.push_back(out.args[i]);
out = astnode(tokens[0].val, out2, out.metadata);
}
else
out = astnode("fun", out.args, out.metadata);
}
// Multi not supported
if (out.val == "multi")
err("Multiple expressions or unclosed bracket", out.metadata);
// Convert top-level colon expressions into non-colon expressions;
// makes if statements and the like equivalent indented or not
//if (out.val == ":" && out.args[0].type == TOKEN)
// out = asn(out.args[0].val, out.args[1], out.metadata);
//if (bodied(tokens[0].val) && out.args[0].val == ":")
// out = asn(tokens[0].val, out.args[0].args);
if (o.size() == 0 || o.back().type == TOKEN) {
o.push_back(out);
continue;
}
// This is a little complicated. Basically, the idea here is to build
// constructions like [if [< x 5] [a] [elif [< x 10] [b] [else [c]]]]
std::vector<Node> u;
u.push_back(o.back());
if (bodiedContinued(o.back().val, out.val)) {
while (1) {
if (!bodiedContinued(u.back().val, out.val)) {
u.pop_back();
break;
}
if (!u.back().args.size()
|| !bodiedContinued(u.back().val, u.back().args.back().val)) {
break;
}
u.push_back(u.back().args.back());
}
u.back().args.push_back(out);
while (u.size() > 1) {
Node v = u.back();
u.pop_back();
u.back().args.pop_back();
u.back().args.push_back(v);
}
o.pop_back();
o.push_back(u[0]);
}
else o.push_back(out);
}
if (o.size() == 1)
return o[0];
else if (o.size())
return astnode("seq", o, o[0].metadata);
else
return astnode("seq", o, Metadata());
}
// Parses serpent code
Node parseSerpent(std::string s) {
std::string input = s;
std::string file = "main";
if (exists(s)) {
file = s;
input = get_file_contents(s);
}
return parseLines(splitLines(input), Metadata(file, 0, 0), 0);
}
using namespace std;

View File

@ -1,13 +0,0 @@
#ifndef ETHSERP_PARSER
#define ETHSERP_PARSER
#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>
#include "util.h"
// Serpent text -> parse tree
Node parseSerpent(std::string s);
#endif

View File

@ -1,299 +0,0 @@
#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>
#include "util.h"
#include "lllparser.h"
#include "bignum.h"
#include "rewriteutils.h"
#include "optimize.h"
#include "preprocess.h"
#include "functions.h"
#include "opcodes.h"
// Convert a function of the form (def (f x y z) (do stuff)) into
// (if (first byte of ABI is correct) (seq (setup x y z) (do stuff)))
Node convFunction(Node node, int functionCount) {
std::string prefix = "_temp"+mkUniqueToken()+"_";
Metadata m = node.metadata;
if (node.args.size() != 2)
err("Malformed def!", m);
// Collect the list of variable names and variable byte counts
Node unpack = unpackArguments(node.args[0].args, m);
// And the actual code
Node body = node.args[1];
// Main LLL-based function body
return astnode("if",
astnode("eq",
astnode("get", token("__funid", m), m),
token(unsignedToDecimal(functionCount), m),
m),
astnode("seq", unpack, body, m));
}
// Populate an svObj with the arguments needed to determine
// the storage position of a node
svObj getStorageVars(svObj pre, Node node, std::string prefix,
int index) {
Metadata m = node.metadata;
if (!pre.globalOffset.size()) pre.globalOffset = "0";
std::vector<Node> h;
std::vector<std::string> coefficients;
// Array accesses or atoms
if (node.val == "access" || node.type == TOKEN) {
std::string tot = "1";
h = listfyStorageAccess(node);
coefficients.push_back("1");
for (unsigned i = h.size() - 1; i >= 1; i--) {
// Array sizes must be constant or at least arithmetically
// evaluable at compile time
if (!isPureArithmetic(h[i]))
err("Array size must be fixed value", m);
// Create a list of the coefficient associated with each
// array index
coefficients.push_back(decimalMul(coefficients.back(), h[i].val));
}
}
// Tuples
else {
int startc;
// Handle the (fun <fun_astnode> args...) case
if (node.val == "fun") {
startc = 1;
h = listfyStorageAccess(node.args[0]);
}
// Handle the (<fun_name> args...) case, which
// the serpent parser produces when the function
// is a simple name and not a complex astnode
else {
startc = 0;
h = listfyStorageAccess(token(node.val, m));
}
svObj sub = pre;
sub.globalOffset = "0";
// Evaluate tuple elements recursively
for (unsigned i = startc; i < node.args.size(); i++) {
sub = getStorageVars(sub,
node.args[i],
prefix+h[0].val.substr(2)+".",
i-startc);
}
coefficients.push_back(sub.globalOffset);
for (unsigned i = h.size() - 1; i >= 1; i--) {
// Array sizes must be constant or at least arithmetically
// evaluable at compile time
if (!isPureArithmetic(h[i]))
err("Array size must be fixed value", m);
// Create a list of the coefficient associated with each
// array index
coefficients.push_back(decimalMul(coefficients.back(), h[i].val));
}
pre.offsets = sub.offsets;
pre.coefficients = sub.coefficients;
pre.nonfinal = sub.nonfinal;
pre.nonfinal[prefix+h[0].val.substr(2)] = true;
}
pre.coefficients[prefix+h[0].val.substr(2)] = coefficients;
pre.offsets[prefix+h[0].val.substr(2)] = pre.globalOffset;
pre.indices[prefix+h[0].val.substr(2)] = index;
if (decimalGt(tt176, coefficients.back()))
pre.globalOffset = decimalAdd(pre.globalOffset, coefficients.back());
return pre;
}
// Preprocess input containing functions
//
// localExterns is a map of the form, eg,
//
// { x: { foo: 0, bar: 1, baz: 2 }, y: { qux: 0, foo: 1 } ... }
//
// localExternSigs is a map of the form, eg,
//
// { x : { foo: iii, bar: iis, baz: ia }, y: { qux: i, foo: as } ... }
//
// Signifying that x.foo = 0, x.baz = 2, y.foo = 1, etc
// and that x.foo has three integers as arguments, x.bar has two
// integers and a variable-length string, and baz has an integer
// and an array
//
// globalExterns is a one-level map, eg from above
//
// { foo: 1, bar: 1, baz: 2, qux: 0 }
//
// globalExternSigs is a one-level map, eg from above
//
// { foo: as, bar: iis, baz: ia, qux: i}
//
// Note that globalExterns and globalExternSigs may be ambiguous
// Also, a null signature implies an infinite tail of integers
preprocessResult preprocessInit(Node inp) {
Metadata m = inp.metadata;
if (inp.val != "seq")
inp = astnode("seq", inp, m);
std::vector<Node> empty = std::vector<Node>();
Node init = astnode("seq", empty, m);
Node shared = astnode("seq", empty, m);
std::vector<Node> any;
std::vector<Node> functions;
preprocessAux out = preprocessAux();
out.localExterns["self"] = std::map<std::string, int>();
int functionCount = 0;
int storageDataCount = 0;
for (unsigned i = 0; i < inp.args.size(); i++) {
Node obj = inp.args[i];
// Functions
if (obj.val == "def") {
if (obj.args.size() == 0)
err("Empty def", m);
std::string funName = obj.args[0].val;
// Init, shared and any are special functions
if (funName == "init" || funName == "shared" || funName == "any") {
if (obj.args[0].args.size())
err(funName+" cannot have arguments", m);
}
if (funName == "init") init = obj.args[1];
else if (funName == "shared") shared = obj.args[1];
else if (funName == "any") any.push_back(obj.args[1]);
else {
// Other functions
functions.push_back(convFunction(obj, functionCount));
out.localExterns["self"][obj.args[0].val] = functionCount;
out.localExternSigs["self"][obj.args[0].val]
= getSignature(obj.args[0].args);
functionCount++;
}
}
// Extern declarations
else if (obj.val == "extern") {
std::string externName = obj.args[0].val;
Node al = obj.args[1];
if (!out.localExterns.count(externName))
out.localExterns[externName] = std::map<std::string, int>();
for (unsigned i = 0; i < al.args.size(); i++) {
if (al.args[i].val == ":") {
std::string v = al.args[i].args[0].val;
std::string sig = al.args[i].args[1].val;
out.globalExterns[v] = i;
out.globalExternSigs[v] = sig;
out.localExterns[externName][v] = i;
out.localExternSigs[externName][v] = sig;
}
else {
std::string v = al.args[i].val;
out.globalExterns[v] = i;
out.globalExternSigs[v] = "";
out.localExterns[externName][v] = i;
out.localExternSigs[externName][v] = "";
}
}
}
// Custom macros
else if (obj.val == "macro") {
// Rules for valid macros:
//
// There are only four categories of valid macros:
//
// 1. a macro where the outer function is something
// which is NOT an existing valid function/extern/datum
// 2. a macro of the form set(c(x), d) where c must NOT
// be an existing valid function/extern/datum
// 3. something of the form access(c(x)), where c must NOT
// be an existing valid function/extern/datum
// 4. something of the form set(access(c(x)), d) where c must
// NOT be an existing valid function/extern/datum
bool valid = false;
Node pattern = obj.args[0];
Node substitution = obj.args[1];
if (opcode(pattern.val) < 0 && !isValidFunctionName(pattern.val))
valid = true;
if (pattern.val == "set" &&
opcode(pattern.args[0].val) < 0 &&
!isValidFunctionName(pattern.args[0].val))
valid = true;
if (pattern.val == "access" &&
opcode(pattern.args[0].val) < 0 &&
!isValidFunctionName(pattern.args[0].val))
if (pattern.val == "set" &&
pattern.args[0].val == "access" &&
opcode(pattern.args[0].args[0].val) < 0 &&
!isValidFunctionName(pattern.args[0].args[0].val))
valid = true;
if (valid) {
out.customMacros.push_back(rewriteRule(pattern, substitution));
}
}
// Variable types
else if (obj.val == "type") {
std::string typeName = obj.args[0].val;
std::vector<Node> vars = obj.args[1].args;
for (unsigned i = 0; i < vars.size(); i++)
out.types[vars[i].val] = typeName;
}
// Storage variables/structures
else if (obj.val == "data") {
out.storageVars = getStorageVars(out.storageVars,
obj.args[0],
"",
storageDataCount);
storageDataCount += 1;
}
else any.push_back(obj);
}
std::vector<Node> main;
if (shared.args.size()) main.push_back(shared);
if (init.args.size()) main.push_back(init);
std::vector<Node> code;
if (shared.args.size()) code.push_back(shared);
for (unsigned i = 0; i < any.size(); i++)
code.push_back(any[i]);
for (unsigned i = 0; i < functions.size(); i++)
code.push_back(functions[i]);
Node codeNode;
if (functions.size() > 0) {
codeNode = astnode("with",
token("__funid", m),
astnode("byte",
token("0", m),
astnode("calldataload", token("0", m), m),
m),
astnode("seq", code, m),
m);
}
else codeNode = astnode("seq", code, m);
main.push_back(astnode("~return",
token("0", m),
astnode("lll",
codeNode,
token("0", m),
m),
m));
Node result;
if (main.size() == 1) result = main[0];
else result = astnode("seq", main, inp.metadata);
return preprocessResult(result, out);
}
preprocessResult processTypes (preprocessResult pr) {
preprocessAux aux = pr.second;
Node node = pr.first;
if (node.type == TOKEN && aux.types.count(node.val)) {
node = asn(aux.types[node.val], node, node.metadata);
}
else if (node.val == "untyped")
return preprocessResult(node.args[0], aux);
else {
for (unsigned i = 0; i < node.args.size(); i++) {
node.args[i] =
processTypes(preprocessResult(node.args[i], aux)).first;
}
}
return preprocessResult(node, aux);
}
preprocessResult preprocess(Node n) {
return processTypes(preprocessInit(n));
}

View File

@ -1,58 +0,0 @@
#ifndef ETHSERP_PREPROCESSOR
#define ETHSERP_PREPROCESSOR
#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>
#include "util.h"
// Storage variable index storing object
struct svObj {
std::map<std::string, std::string> offsets;
std::map<std::string, int> indices;
std::map<std::string, std::vector<std::string> > coefficients;
std::map<std::string, bool> nonfinal;
std::string globalOffset;
};
class rewriteRule {
public:
rewriteRule(Node p, Node s) {
pattern = p;
substitution = s;
}
Node pattern;
Node substitution;
};
// Preprocessing result storing object
class preprocessAux {
public:
preprocessAux() {
globalExterns = std::map<std::string, int>();
localExterns = std::map<std::string, std::map<std::string, int> >();
localExterns["self"] = std::map<std::string, int>();
}
std::map<std::string, int> globalExterns;
std::map<std::string, std::string> globalExternSigs;
std::map<std::string, std::map<std::string, int> > localExterns;
std::map<std::string, std::map<std::string, std::string> > localExternSigs;
std::vector<rewriteRule> customMacros;
std::map<std::string, std::string> types;
svObj storageVars;
};
#define preprocessResult std::pair<Node, preprocessAux>
// Populate an svObj with the arguments needed to determine
// the storage position of a node
svObj getStorageVars(svObj pre, Node node, std::string prefix="",
int index=0);
// Preprocess a function (see cpp for details)
preprocessResult preprocess(Node inp);
#endif

Some files were not shown because too many files have changed in this diff Show More