Felix Lange and Péter Szilágyi
936c8e19ff
p2p/discover: store nodes in leveldb
2015-04-24 11:23:20 +03:00
Felix Lange
c745831118
Merge pull request #787 from ethereum/revert-785-revert-781-develop
...
Revert "Revert "refactor Dockerfile""
2015-04-22 21:36:01 +02:00
Felix Lange
33083e6f6c
Revert "Revert "refactor Dockerfile""
2015-04-22 21:35:46 +02:00
Felix Lange
95f172d4dc
Merge pull request #785 from ethereum/revert-781-develop
...
Revert "refactor Dockerfile"
2015-04-22 20:52:47 +02:00
Felix Lange
1a0b3d8c84
Revert "refactor Dockerfile"
2015-04-22 20:52:21 +02:00
Felix Lange
e1f616fadf
cmd/geth: improve the JS tests
...
These changes ensure that the JS tests run without networking
and fixes the block chain export and its associated test.
2015-04-22 12:31:19 +02:00
Felix Lange
635b66acdc
p2p: return zero node from Self if the server is not running
...
This helps with fixing the tests for cmd/geth to run without networking.
2015-04-22 12:31:19 +02:00
Felix Lange
96e2b6bc07
miner: use 32bit atomic operations
...
64bit atomic operations are not available on all 32bit platforms.
2015-04-22 12:31:19 +02:00
Felix Lange
9d152d6191
common: delete BinaryLength
...
The test is failing the 32bit build and the function
is not used anywhere.
2015-04-22 12:31:19 +02:00
Felix Lange
2f4cc72119
Merge pull request #765 from Gustav-Simonsson/more_block_test_improvements
...
Further fixes to block test wrapper
2015-04-22 11:53:02 +02:00
Felix Lange
4907d28967
crypto: update {Load,Save}ECDSA comments to mention hex encoding
2015-04-19 01:33:00 +02:00
Felix Lange
da4a0e0555
eth: fix node key persistence
...
crypto.LoadECDSA has been modified to expect hex data.
The key was being saved as raw bytes, causing the file
to be rewritten on every start.
2015-04-19 01:28:41 +02:00
Felix Lange
48f23746f0
Makefile: for non-gophers
...
Many people need or want to build go-ethereum from the git repository,
mostly to stay up to date with recent changes. We cannot expect that
people without Go experience grok the Go workspace concept.
With the Makefile, building from github requires only
three steps (provided that a Go toolchain is installed):
- git clone https://github.com/ethereum/go-ethereum
- ... install C libraries (libgmp, etc.) ...
- make
2015-04-19 00:42:34 +02:00
Felix Lange and Gustav Simonsson
c453f1f370
tests: hopefully improve test conversion helpers
...
(cherry picked from commit 035a30acbe )
2015-04-19 00:07:09 +02:00
Felix Lange and Gustav Simonsson
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
Felix Lange and Gustav Simonsson
2ce21cefdc
eth: use NewDB hook also for extra DB
...
(cherry picked from commit d5083033f1 )
2015-04-18 23:59:31 +02:00
Felix Lange
7dc6c33873
Merge pull request #736 from frozeman/develop
...
add extra space to miner icon
2015-04-17 22:17:50 +02:00
Felix Lange
7180699d40
rlp: require declared number of input elements for array types
2015-04-17 14:45:10 +02:00
Felix Lange
9c7281c17e
p2p: make DiscReason bigger than byte
...
We decode into [1]DiscReason in a few places. That doesn't work anymore
because package rlp no longer accepts RLP lists for byte arrays.
2015-04-17 14:45:10 +02:00
Felix Lange
4d5a518a0b
rlp: stop accepting lists for byte slices and byte arrays
2015-04-17 14:45:10 +02:00
Felix Lange
574d5d6ae6
core/types: add rlp tag "nil" for Transaction.Recipient
2015-04-17 14:45:10 +02:00
Felix Lange
cad64fb911
rlp: stricter rules for structs and pointers
...
The rules have changed as follows:
* When decoding into pointers, empty values no longer produce
a nil pointer. This can be overriden for struct fields using the
struct tag "nil".
* When decoding into structs, the input list must contain an element
for each field.
2015-04-17 14:45:09 +02:00
Felix Lange
1e2c93aa2d
rlp: reject non-minimal input strings
...
Input strings of length 1 containing a byte < 56 are non-minimal and
should be encoded as a single byte instead. Reject such strings.
2015-04-17 14:45:09 +02:00
Felix Lange
6e9f8035a1
rlp: stricter validation of canonical integer format
...
All integers (including size information in type tags) need to be
encoded using the smallest possible encoding. This commit expands the
stricter validation introduced for *big.Int in commit 59597d23a5
to all integer types and size tags.
2015-04-17 14:45:09 +02:00
Felix Lange
6788f955c2
rlp: fix handling of single byte zero when decoding into a pointer
...
A single zero byte carries information and should not set the pointer
to nil. This is arguably a corner case. While here, fix the comment
to explain pointer reuse.
2015-04-17 14:45:09 +02:00
Felix Lange
509d0a8d78
whisper: fix comment for rlpenv
2015-04-17 14:45:09 +02:00
Felix Lange
eedbb1ee9a
p2p/discover: use rlp.DecodeBytes
2015-04-17 14:45:09 +02:00
Felix Lange
2750ec47b7
rlp: fix integer overflow in list element size validation
...
It is not safe to add anything to s.size.
2015-04-17 14:45:09 +02:00
Felix Lange
56a48101dc
cmd/rlpdump, cmd/utils, eth, p2p, whisper: use rlp input limit
2015-04-17 14:45:09 +02:00
Felix Lange
c35f4fd0bd
rlp: check top-level value sizes against input limit
...
This is a preliminary fix for #420 (SEC-18 RLP decoder unsafe
allocation). If a sane input limit is set on the rlp.Stream,
it should no longer be possible to cause huge []byte allocations.
2015-04-17 14:42:41 +02:00
Felix Lange
4020258801
Merge pull request #718 from karalabe/whisper-cleanup
...
Whisper cleanup, part 2
2015-04-17 14:10:55 +02:00
Felix Lange
5528abc795
p2p: fix the dial timer
...
The dial timer was not reset properly when the peer count reached
MaxPeers.
2015-04-17 08:17:01 +02:00
Felix Lange
f6f9a0d515
Merge pull request #709 from ligi/patch-1
...
Fix links
2015-04-13 23:46:17 +02:00
Felix Lange
0217652d1b
p2p/discover: improve timer handling for reply timeouts
2015-04-13 18:08:11 +02:00
Felix Lange
b8aeb04f6f
p2p/discover: remove unused field Node.activeStamp
2015-04-13 17:44:14 +02:00
Felix Lange
b9929d289d
p2p: fix unsynchronized map access during Server shutdown
...
removePeer can be called even after listenLoop and dialLoop have returned.
2015-04-13 17:37:32 +02:00
Felix Lange
995fab2ebc
p2p: fix yet another disconnect hang
...
Peer.readLoop will only terminate if the connection is closed. Fix the
hang by closing the connection before waiting for readLoop to terminate.
This also removes the british disconnect procedure where we're waiting
for the remote end to close the connection. I have confirmed with
@subtly that cpp-ethereum doesn't adhere to it either.
2015-04-13 17:34:08 +02:00
Felix Lange
79a6782c1c
p2p: fix goroutine leak when handshake read fails
...
This regression was introduced in b3c058a9e4 .
2015-04-13 17:06:19 +02:00
Felix Lange
faa2747809
Merge pull request #690 from karalabe/whisper-cleanup
...
Whisper cleanup, part 1
2015-04-13 13:39:59 +02:00
Felix Lange
c5332537f5
p2p: limit number of lingering inbound pre-handshake connections
...
This is supposed to apply some back pressure so Server is not accepting
more connections than it can actually handle. The current limit is 50.
This doesn't really need to be configurable, but we'll see how it
behaves in our test nodes and adjust accordingly.
2015-04-10 17:24:41 +02:00
Felix Lange
56977c225e
p2p: use RLock instead of Lock for pre-dial checks
2015-04-10 17:23:09 +02:00
Felix Lange
b3c058a9e4
p2p: improve disconnect signaling at handshake time
...
As of this commit, p2p will disconnect nodes directly after the
encryption handshake if too many peer connections are active.
Errors in the protocol handshake packet are now handled more politely
by sending a disconnect packet before closing the connection.
2015-04-10 16:57:56 +02:00
Felix Lange
99a1db2d40
p2p: don't mess with the socket deadline in Peer.readLoop
...
netWrapper already sets a read deadline in ReadMsg.
2015-04-10 13:26:28 +02:00
Felix Lange
145330fdf2
p2p: properly decrement peer wait group counter for setup errors
2015-04-10 13:26:27 +02:00
Felix Lange
f1d710af00
p2p: fix Peer shutdown deadlocks
...
There were multiple synchronization issues in the disconnect handling,
all caused by the odd special-casing of Peer.readLoop errors. Remove the
special handling of read errors and make readLoop part of the Peer
WaitGroup.
Thanks to @Gustav-Simonsson for pointing at arrows in a diagram
and playing rubber-duck.
2015-04-10 13:26:27 +02:00
Felix Lange
22d1f0faf1
p2p: improve peer selection logic
...
This commit introduces a new (temporary) peer selection
strategy based on random lookups.
While we're here, also implement the TODOs in dialLoop.
2015-04-10 13:26:27 +02:00
Felix Lange
7be05b4b9d
p2p/discover: don't log packet content
2015-04-10 13:26:27 +02:00
Felix Lange
9cd8c96157
p2p/discover: make packet processing less concurrent
2015-04-10 13:26:27 +02:00
Felix Lange
76218959ab
eth: update cpp bootnode address
2015-04-01 17:00:12 +02:00
Felix Lange
a77c431e37
p2p/discover: fix off by one error causing buckets to contain duplicates
2015-04-01 17:00:12 +02:00
Felix Lange
de7af720d6
p2p/discover: implement node bonding
...
This a fix for an attack vector where the discovery protocol could be
used to amplify traffic in a DDOS attack. A malicious actor would send a
findnode request with the IP address and UDP port of the target as the
source address. The recipient of the findnode packet would then send a
neighbors packet (which is 16x the size of findnode) to the victim.
Our solution is to require a 'bond' with the sender of findnode. If no
bond exists, the findnode packet is not processed. A bond between nodes
α and β is created when α replies to a ping from β.
This (initial) version of the bonding implementation might still be
vulnerable against replay attacks during the expiration time window.
We will add stricter source address validation later.
2015-04-01 17:00:12 +02:00
Felix Lange
92928309b2
p2p/discover: add version number to ping packet
...
The primary motivation for doing this right now is that old PoC 8
nodes and newer PoC 9 nodes keep discovering each other, causing
handshake failures.
2015-04-01 15:53:04 +02:00
Felix Lange
653c3deaa5
Merge pull request #606 from tgerring/bootnode
...
Update Go bootnode address
2015-03-31 14:41:17 +02:00
Felix Lange
181a21c67c
rlp: encode nil array pointers as empty list or string
2015-03-25 16:46:29 +01:00
Felix Lange
7f0c2545a9
Merge pull request #561 from ethersphere/frontier/blockpool
...
bugfix with idle too long triggered after peer switch
2015-03-25 13:55:05 +01:00
Felix Lange
069c87b960
whisper: use common.Hash
2015-03-21 00:57:18 +01:00
Felix Lange
7c4ff3abb4
eth: enable whisper again
2015-03-21 00:50:20 +01:00
Felix Lange
483d43a15a
whisper: use package rlp
2015-03-21 00:49:58 +01:00
Felix Lange
a829a56587
rlp: add Stream.Raw
2015-03-21 00:49:31 +01:00
Felix Lange
81800ca39e
Merge remote-tracking branch 'ethereum/conversion' into conversion
2015-03-20 22:47:27 +01:00
Felix Lange
b95ff54632
cmd/blocktest: delete package
...
Blocktests are now integrated in cmd/ethereum.
2015-03-20 22:46:41 +01:00
Felix Lange
b41185a68f
rlp: fix nil pointer decoding
...
The generic pointer decoder did not advance the input position
for empty values. This can lead to strange issues and even
infinite loops.
2015-03-20 22:33:40 +01:00
Felix Lange
28ddc16a9b
Merge remote-tracking branch 'ethereum/conversion' into conversion
2015-03-20 14:01:35 +01:00
Felix Lange
c161d73d42
common: drop accessors for Value.Val
...
I don't see why we would need two different accessors for a public field.
2015-03-20 14:00:26 +01:00
Felix Lange
dcb9614dfe
common: drop unused kind field from Value
...
This makes Value 24 bytes smaller on 64bit systems.
2015-03-20 14:00:26 +01:00
Felix Lange
f7d1d601e9
common: make Value encodable with package rlp
...
Value.{Encode,Decode} are gone. It implements rlp.Encoder and rlp.Decoder
instead, so Value can be decoded into directly.
2015-03-20 14:00:26 +01:00
Felix Lange
c388e7eac0
crypto: remove use of common.Value.Encode
...
This seems to be the last remaining use of it.
2015-03-20 14:00:26 +01:00
Felix Lange
ce063e8d9c
Merge remote-tracking branch 'ethereum/conversion' into conversion
2015-03-19 15:21:49 +01:00
Felix Lange
e80dda6051
eth, whisper: adapt for RLP encoder switch in package p2p
...
I have rewritten the protocol test to use p2p.MsgPipe because
p2p.NewMsg is gone.
2015-03-19 15:18:31 +01:00
Felix Lange
b9e0b11e7d
p2p: interrupt MsgPipe payload read/write
...
This is better because protocols might not actually read the payload for
some errors (msg too big, etc.) which can be a pain to test with the old
behaviour.
2015-03-19 15:16:06 +01:00
Felix Lange
a7bced779a
p2p: log disconnect requests
...
This helps a lot with debugging.
2015-03-19 15:15:07 +01:00
Felix Lange
5ba51594c7
p2p: use package rlp to encode messages
...
Message encoding functions have been renamed to catch any uses.
The switch to the new encoder can cause subtle incompatibilities.
If there are any users outside of our tree, they will at least be
alerted that there was a change.
NewMsg no longer exists. The replacements for EncodeMsg are called
Send and SendItems.
2015-03-19 15:11:02 +01:00
Felix Lange
4811f460e7
p2p: export ExpectMsg (for eth protocol testing)
2015-03-19 15:08:04 +01:00
Felix Lange
e13c673980
Merge remote-tracking branch 'ethereum/conversion' into conversion
2015-03-19 12:17:43 +01:00
Felix Lange
965c9babe3
rlp: fix encoding of one element strings and byte slices
...
The encoder was missing a special case for one element strings whose
element is below 0x7f. Such strings must be encoded as a single byte
without a string header.
2015-03-19 12:15:43 +01:00
Felix Lange
3e52c9439a
Merge pull request #522 from fjl/makedag
...
cmd/ethereum: add makedag command for testing
2015-03-18 16:40:50 +01:00
Felix Lange
064279c0ec
cmd/ethereum, cmd/utils: partial fix for chain import
2015-03-18 14:04:44 +01:00
Felix Lange
d15f90645d
Merge remote-tracking branch 'ethereum/conversion' into conversion
2015-03-18 13:39:01 +01:00
Felix Lange
a59dd393e7
core: fix tests
2015-03-18 13:38:47 +01:00
Felix Lange
b5b83db450
core: use package rlp to encode blocks
...
This also changes the chain export format so there is no
enclosing list around the blocks, which enables streaming export.
2015-03-18 13:36:48 +01:00
Felix Lange
c298148a7f
core/types: use package rlp instead of common.Decode
2015-03-18 13:24:34 +01:00
Felix Lange
b94a6a0193
rlp: add DecodeBytes
...
Über-convenience.
2015-03-18 13:17:39 +01:00
Felix Lange
cb009a5c4d
rlp: don't panic for nil *big.Int
...
All other pointer types can handle nil just fine.
2015-03-17 23:49:49 +01:00
Felix Lange
786a58d8b0
Merge pull request #485 from ethersphere/frontier/nodeadmin.js
...
Frontier console node admin interface
2015-03-17 21:15:23 +01:00
Felix Lange
1513413412
Dockerfile: use fast™ build steps
2015-03-17 14:49:37 +01:00
Felix Lange
b422835a59
cmd/ethereum: add makedag command for testing
2015-03-17 14:12:34 +01:00
Felix Lange
17c5ba2b6b
core: actually convert transaction pool
2015-03-17 12:16:21 +01:00
Felix Lange
ee7202fa00
Merge remote-tracking branch 'ethereum/conversion' into conversion
2015-03-17 12:01:40 +01:00
Felix Lange
65eee2006d
pow/ezp: use common.Hash
2015-03-17 12:01:21 +01:00
Felix Lange
27f7aa0163
core: adapt Message for new Transaction.From signature
2015-03-17 12:00:29 +01:00
Felix Lange
b95387a0dc
core: convert transaction pool to common.{Address,Hash}
2015-03-17 11:59:26 +01:00
Felix Lange
e91ab84dbe
core/types: don't use Address zero value for invalid addresses
2015-03-17 11:58:31 +01:00
Felix Lange
d5de6489d7
core/types: fix Transaction.Hash and add support for encoding with package rlp
2015-03-17 01:34:18 +01:00
Felix Lange
ad78db4d62
crypto: fix Sha3Hash and add a test for it
2015-03-17 01:32:35 +01:00
Felix Lange
16df850af2
core/types: use common.{Hash,Address} in for transactions
2015-03-16 17:43:42 +01:00
Felix Lange
13ade2ed60
Merge branch 'conversion' of https://github.com/ethereum/go-ethereum
2015-03-16 17:29:08 +01:00
Felix Lange
64490897f3
crypto: add Sha3Hash
2015-03-16 17:27:24 +01:00
Felix Lange
67f8f83a1b
cmd/ethereum: add blocktest command
2015-03-13 18:41:09 +01:00
Felix Lange
e463479b6c
eth: add ResetWithGenesisBlock
...
This depends on a change in ethash which exposes UpdateCache.
2015-03-13 18:41:09 +01:00
Felix Lange
6f8a2d6b84
eth: add hook for database creation
2015-03-13 18:41:09 +01:00