Commit Graph

254 Commits

Author SHA1 Message Date
obscuren
cc436c4b28 eth: additional cleanups to the subprotocol, improved block propagation
* Improved block propagation by sending blocks only to peers to which, as
  far as we know, the peer does not know about.
* Made sub protocol its own manager
* SubProtocol now contains the p2p.Protocol which is used instead of
  a function-returning-protocol thing.
2015-04-18 02:21:07 +02:00
obscuren
c2f410214c eth: began split up of peers and protocol manager 2015-04-18 01:11:09 +02:00
obscuren
2339ee9910 Merge branch 'develop' into downloader-proto
Conflicts:
	eth/downloader/downloader.go
2015-04-18 01:10:32 +02:00
Felix Lange
56a48101dc cmd/rlpdump, cmd/utils, eth, p2p, whisper: use rlp input limit 2015-04-17 14:45:09 +02:00
obscuren
73eb8e8c20 eth: basic implementation of the downloader 2015-04-17 13:54:18 +02:00
obscuren
eac2df02d1 downloader: fixed a typo 2015-04-17 00:11:45 +02:00
obscuren
205378016f downloader: added demotion / promotion in prep. for rep. system 2015-04-16 02:16:33 +02:00
obscuren
eda10c7317 downloader: updated downloader and fixed issues with catch up
Properly ignore blocks coming from peers not in our peer list (blocked)
and do never request anything from bad peers. Added some checks to
account for blocks known when requesting hashes (missing parents).
2015-04-16 01:29:32 +02:00
obscuren
3a51c3b584 Merge branch 'develop' into downloader-proto 2015-04-16 01:28:24 +02:00
obscuren
c4678ffd77 downloader: updated downloader and fixed issues with catch up
Properly ignore blocks coming from peers not in our peer list (blocked)
and do never request anything from bad peers. Added some checks to
account for blocks known when requesting hashes (missing parents).
2015-04-16 00:14:31 +02:00
obscuren
9800c84348 eth: limit the amount of peers that will receive Block/Tx messages
All transaction and block messages are now limited using `sqrt(peers)`
2015-04-14 12:49:15 +02:00
obscuren
333e539ce2 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-13 17:35:46 +02:00
Jeffrey Wilcke
1fa844aaf5 Merge pull request #702 from ethersphere/frontier/blockpool
blockpool stability fixes:
2015-04-13 17:35:25 +02:00
obscuren
97d2954e22 eth: added downloader for syncing up the chain 2015-04-13 17:22:32 +02:00
obscuren
a8a2b2a488 downloader: added missing blocks catchup functionality
When a parent is missing in the block list an attempt should be made to
fetch the missing parent and grandparents.
2015-04-13 16:38:32 +02:00
zelig
3d57e377a4 blockpool stability fixes:
- follow up locks and fix them
- chainManager: call SetQueued for parentErr future blocks, uncomment TD checks, unskip test
- make ErrIncorrectTD non-fatal to be forgiving to genuine mistaken nodes (temp) but demote them to guard against stuck best peers.
- add purging to bounded nodeCache (config nodeCacheSize)
- use nodeCache when creating blockpool entries and let non-best peers add blocks (performance boost)
- minor error in addError
- reduce idleBestPeerTimeout to 1 minute
- correct status counts and unskip status passing status test
- glogified logging
2015-04-13 13:13:55 +01:00
Bas van Kervel
49a513bdeb Added blockchain DB versioning support, closes #650 2015-04-13 10:13:52 +02:00
obscuren
7dcb9825c3 downloader: return an error for peer.fetch and return chunk to queue
If a peer was somehow already fetching and somehow managed to end up in
the `available` pool it should return it's work.
2015-04-12 13:36:01 +02:00
obscuren
6efa8db888 downloader: renamed chunks to queue 2015-04-12 13:24:38 +02:00
obscuren
acf8452c33 downloader: implemented new downloader 2015-04-12 12:38:25 +02:00
obscuren
764a802eaa Disabled TD check
@zelig: Temporarily commented out TD check untill the rest of the network has
been fixed.
2015-04-09 17:39:02 +02:00
obscuren
663fd8f849 Moved log to debug 2015-04-09 17:19:05 +02:00
obscuren
204ac81188 Moved handling of nonces to the managed state 2015-04-08 23:30:07 +02:00
obscuren
6184781b49 Improved transaction pool
The transaction pool will now some easily be able to pre determine the
validity of a transaction by checking the following:

* Account existst
* gas limit higher than the instrinsic gas
* enough funds to pay upfront costs
* nonce check
2015-04-08 20:47:32 +02:00
obscuren
a953f3ec97 Sync managed accounts to the network 2015-04-08 13:07:21 +02:00
obscuren
688d118c7e Updated logging 2015-04-07 14:57:04 +02:00
obscuren
09d3f2cf2a Update ethash 2015-04-05 15:14:55 +02:00
obscuren
c985ce4d78 Changed log to new logging 2015-04-04 13:41:58 +02:00
obscuren
216ea425e4 corrected 2015-04-01 17:36:56 +02:00
obscuren
8e961df283 bumped network protocol 2015-04-01 17:10:42 +02:00
Felix Lange
76218959ab eth: update cpp bootnode address 2015-04-01 17:00:12 +02:00
zelig
f56fc9cd9d change StatusMsgData.TD back to pointer type *big.Int 2015-04-01 12:36:49 +01:00
zelig
6ffea34d8b check TxMsg
- add validation on TxMsg checking for nil
- add test for nil transaction
- add test for zero value transaction (no extra validation needed)
2015-04-01 12:32:42 +01:00
zelig
82da6bf4d2 test for invalid rlp encoding of block in BlocksMsg
- rename Validate -> ValidateFields not to confure consensus block validation
- add nil transaction and nil uncle header validation
- remove bigint field checks: rlp already decodes *big.Int to big.NewInt(0)
- add test for nil header, nil transaction
2015-04-01 12:32:42 +01:00
zelig
d677190f39 add tests for valid blocks msg handling 2015-04-01 12:32:42 +01:00
zelig
e1be34bce1 eth: SEC-29 eth wire protocol decoding invalid message data crashes client
- add validate method to types.Block
- validate after Decode -> error
- add tests for NewBlockMsg
2015-04-01 12:32:42 +01:00
obscuren
f2c6a937f3 Protocol bump 2015-04-01 11:50:19 +02:00
Taylor Gerring
6daa455243 Update Go bootnode address 2015-03-31 14:14:29 +02:00
zelig
b375bbee5f settable etherbase
- etherbase flag for block reward destination
- coinbase => etherbase
- CLI- eth Config -> eth, xeth -> RPC / Miner
- use primary instead of coinbase as the unlock magic wildcard
- accounts: firstAddr/Coinbase -> Primary
2015-03-26 21:52:22 +00:00
Jeffrey Wilcke
aa1eae67ec Merge pull request #560 from tgerring/xethcleanup
XEth cleanup
2015-03-25 13:55:46 +01:00
Taylor Gerring
2b93843d86 Improve protocol version reporting 2015-03-25 12:09:55 +01:00
obscuren
dda1d60556 Store protocol version in the block db **NOT** extra db 2015-03-25 09:58:46 +01:00
obscuren
576df064e5 Updated for PV59
* Value XFER are refunded back to the sender if the execution fails
2015-03-24 11:49:30 +01:00
obscuren
0ee0094cc0 better block propagation 2015-03-23 22:59:19 +01:00
Taylor Gerring
e954c24af0 Implement RPC net_version 2015-03-23 18:06:05 +01:00
Taylor Gerring
60020add74 Merge pull request #551 from ethersphere/frontier/eth-version-exports
eth: fix protocol version/network id copied from config to Ethereum field
2015-03-23 18:00:54 +01:00
zelig
03cc5df9b7 eth: fix protocol version/network id copied from config to Ethereum field 2015-03-23 16:23:06 +00:00
obscuren
0330077d76 moved state and vm to core 2015-03-23 16:59:09 +01:00
obscuren
8b1b9fc99d Merge branch 'jsonlog' of https://github.com/ethersphere/go-ethereum into ethersphere-jsonlog
Conflicts:
	eth/backend.go
2015-03-22 21:43:36 +01:00
obscuren
82956df523 Get work / submit work partially implemented.
* WIP missing arguments for submitting new work
* GetWork **done**
2015-03-22 15:38:01 +01:00
zelig
78cff9e3a4 independent flag for json structured logging
- logjson flag remove logformat flag
- passed to eth Config
- logsystem not a field of Ethereum
- LogSystem does not need to expose GetLogLevel/SetLogLevel
- message struct just implements more generic LogMsg interface
- LogMsg is a fmt.Stringer with Level()
- jsonMsg ([]byte) implements LogMsg
- remove "raw" systems
- move level logic inside StdLogSystem
- logsystems only print their kind of msg: jsonLogSystem prints jsonMsg, StdLogSystem prints stdMsg
2015-03-22 02:16:54 +00:00
Felix Lange
7c4ff3abb4 eth: enable whisper again 2015-03-21 00:50:20 +01:00
obscuren
f4e9638867 Merge branch 'ethersphere-frontier/blockpool' into conversion 2015-03-20 18:01:05 +01:00
obscuren
ecd10d2cf7 iterator returned wrong value 2015-03-20 18:00:54 +01:00
obscuren
54dac59285 wip 2015-03-20 17:42:09 +01:00
zelig
0578df9467 remove eth/wallet.go (only commented out content) 2015-03-20 10:41:41 +00:00
zelig
391e89d70a use own total difficulty to limit best peer
- update blockpool td by subscribing to ChainHeadEvent
- if ahead of best peer, demote it
- addPeer now take own td as current td
- removePeer now take own td as current td
- add relevant tests to peers_test
- eth: backend now calls blockpool with eth.eventMux and chainManager.Td
2015-03-20 10:41:40 +00:00
zelig
50661f0e68 peer suspension to disallow reconnect after disconnect on fatal error for set period (PeerSuspensionInterval) 2015-03-20 10:41:40 +00:00
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
obscuren
f0bb136099 Merge branch 'develop' into conversion 2015-03-18 18:42:01 +01:00
obscuren
0a1eeca41e conversions. -compilable- 2015-03-18 13:00:01 +01:00
zelig
ca8d184173 fix eth tests 2015-03-18 16:31:49 +07:00
zelig
b6aa88c099 private network support
- protocolversion, networkid global int flags to cli and mist
- fix bug with protocolversion check using wrong db
- log protocolversion & networkid in backend
2015-03-18 14:44:58 +07:00
zelig
7dbbe1bedc eth/backend: remove spurious and incorrent PeerInfo() 2015-03-18 04:01:47 +07:00
zelig
1872418316 eth: remove disused peer_util.go 2015-03-18 03:59:21 +07:00
zelig
b3e133dd15 Merge branch 'frontier/js' into frontier/nodeadmin.js 2015-03-16 22:50:29 +07:00
obscuren
b523441361 Moved ethutil => common 2015-03-16 11:27:38 +01:00
zelig
8ad0f1b8a3 eth:
- NodeInfo, PeerInfo types, PeersInfo(), NodeInfo() in eth/backend to support node admin IF
- start net only if MaxPeers > 0, close extraDb in Stop()
- defer s.extraDb.Close()
2015-03-15 13:39:52 +07:00
obscuren
d9966d6158 merge 2015-03-14 23:37:21 +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
obscuren
b663e8b29a Merge branch 'rpcfrontier' into develop 2015-03-13 16:36:27 +01:00
obscuren
aa9f981d5f Bump protocol version 58 2015-03-13 13:52:57 +01:00
Taylor Gerring
d4ed66c83d Add web3_clientVersion 2015-03-12 19:20:46 -05:00
obscuren
ef6706696c Add additional extra database for non-protocol related data
* Add transaction to extra database after a successful block process
2015-03-12 14:50:35 +01:00
Felix Lange
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
Felix Lange
269cfbb8ac Merge branch origin/develop into accounts-integration
Conflicts:
	cmd/blocktest/main.go
	cmd/mist/debugger.go
	cmd/utils/cmd.go
2015-03-10 17:14:31 +01:00
Felix Lange
9d4e1e8f8b eth: return account errors directly 2015-03-10 15:42:58 +01:00
Felix Lange
9b3ae1fdb7 eth: fix tests 2015-03-10 02:34:52 +01:00
Felix Lange
9bf513e993 Merge ethereum/poc-9 into accounts-integration
Conflicts:
	cmd/utils/cmd.go
	cmd/utils/flags.go
	core/manager.go
	eth/backend.go
	rpc/http/server.go
	xeth/xeth.go
2015-03-09 23:25:46 +01:00
Felix Lange
63758db379 eth: delete unused RpcServer field 2015-03-09 23:08:46 +01:00
Gustav Simonsson
27c42ea934 Add empty total difficulty to test blocks and clean up stopping the node 2015-03-09 18:03:35 +01:00
Felix Lange
fb53a9362e accounts: AccountManager -> Manager 2015-03-08 01:58:35 +01:00
Taylor Gerring
fca652eeea Fix logger import path 2015-03-07 10:48:38 -06:00
Felix Lange
d66f93cecd accounts, core, eth, xeth: use account manager for everything
The account manager is now responsible for picking the
default account and the coinbase.
2015-03-07 12:38:33 +01:00
obscuren
22b493a6ff Fixed tests 2015-03-06 20:10:59 +01:00
obscuren
cd856cb213 Separated block db from state db. Partial fix for #416 2015-03-06 18:26:16 +01:00
obscuren
ed84b58af5 Debug option for VM & command line flag 2015-03-06 16:58:52 +01:00
obscuren
548e104171 Merge branch 'poc-9' of github.com-obscure:ethereum/go-ethereum into poc-9 2015-03-06 16:40:21 +01:00
Gustav Simonsson
bc45e5c6de Integrate eth_accounts and eth_transact to use new account manager
* Add from to eth_transact / xeth.Transact and add static pass in lieu
  of integrating with native Mist window for user passphrase entry
* Make eth_accounts return AccountManager.Accounts()
* Add a Generate Key menu item in Mist
2015-03-06 13:10:42 +00:00
Felix Lange
e64f727529 Merge pull request #433 from fjl/newcli
Improved CLI
2015-03-06 14:02:16 +01:00
obscuren
23ad2f02c0 debug comments & pow handling 2015-03-06 10:22:40 +01:00
Felix Lange
bdba044a80 ethutil: remove Config variable
Various functions throughout the codebase used it to grab settings. This
has to stop because I want to use them without reading the config file.

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

* ethdb.NewLDBDatabase
* ethrepl.NewJSRepl
* vm.New
2015-03-06 02:46:56 +01:00
obscuren
ba0c41436c Merge branch 'p2p-handshake-2' of https://github.com/fjl/go-ethereum into fjl-p2p-handshake-2 2015-03-05 17:21:32 +01:00
obscuren
c47866d251 Miner fixes and updates (including miner) 2015-03-05 09:14:58 +01:00
Felix Lange
215c763d53 eth, p2p: delete p2p.Blacklist
It is unused and untested right now. We can
bring it back later if required.
2015-03-04 16:54:36 +01:00
Felix Lange
6e7e5d5fd5 eth, whisper: fix msg.Payload reads 2015-03-04 13:25:01 +01:00
obscuren
15f491e500 Clean up REPL 2015-03-04 12:18:26 +01:00
obscuren
bb152612e0 Merge branch 'develop' into poc-9
Conflicts:
	cmd/utils/cmd.go
2015-03-03 20:34:48 +01:00
obscuren
f0b2ea64fc Merge branch 'jsonlogs' of https://github.com/ethersphere/go-ethereum into ethersphere-jsonlogs
Conflicts:
	eth/block_pool.go
	eth/block_pool_test.go
	eth/protocol_test.go
	miner/worker.go
2015-03-03 20:30:05 +01:00