aboutsummaryrefslogtreecommitdiffstats
path: root/consensus
Commit message (Collapse)AuthorAgeFilesLines
* cosensus, core, eth, params, trie: fixes + clique history capPéter Szilágyi2019-05-163-5/+22
|
* core: fix import errors on clique crashes + empty blocks (#19544)Péter Szilágyi2019-05-101-0/+113
| | | | | | | | | | * core: fix import errors on clique crashes + empty blocks * cosensus/clique, core: add test for the mirrored state issue * core: address todo question wrt log count * core: raise a louder warning for non-clique known blocks
* consensus,core,miner: avoid overhead of creating a new block (#19301)Martin Holst Swende2019-04-303-5/+30
| | | | | | | | * consensus,core,miner: avoid overhead of creating a new block * consensus: nitpick dot * consensus: fix some comment formatting nits
* consensus,core: shortcut uncle validationMartin Holst Swende2019-04-081-0/+3
|
* all: simplify timestamps to uint64 (#19372)Martin Holst Swende2019-04-034-21/+16
| | | | | | | | | | | | | | * all: simplify timestamps to uint64 * tests: update definitions * clef, faucet, mobile: leftover uint64 fixups * ethash: fix tests * graphql: update schema for timestamp * ethash: remove unused variable
* Merge pull request #19021 from karalabe/database-cleanupPéter Szilágyi2019-03-071-2/+2
|\ | | | | all: clean up and properly abstract database accesses
| * all: clean up and proerly abstract database accessPéter Szilágyi2019-03-061-2/+2
| |
* | consensus/clique: fix test copy paste error, test what's documentedPéter Szilágyi2019-03-061-2/+2
|/
* signer, clef: implement EIP191/712 (#17789)Paul Berg2019-02-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Named functions and defined a basic EIP191 content type list * Written basic content type functions * Added ecRecover method in the clef api * Updated the extapi changelog and addded indications in the README * Changed the version of the external API * Added tests for 0x45 * Implementing UnmarshalJSON() for TypedData * Working on TypedData * Solved the auditlog issue * Changed method to signTypedData * Changed mimes and implemented the 'encodeType' function for EIP-712 * Polished docstrings, ran goimports and swapped fmt.Errorf with errors.New where possible * Drafted recursive encodeData * Ran goimports and gofmt * Drafted first version of EIP-712, including tests * Temporarily switched to using common.Address in tests * Drafted text/validator and and rewritten []byte as hexutil.Bytes * Solved stringified address encoding issue * Changed the property type required by signData from bytes to interface{} * Fixed bugs in 'data/typed' signs * Brought legal warning back after temporarily disabling it for development * Added example RPC calls for account_signData and account_signTypedData * Named functions and defined a basic EIP191 content type list * Written basic content type functions * Added ecRecover method in the clef api * Updated the extapi changelog and addded indications in the README * Added tests for 0x45 * Implementing UnmarshalJSON() for TypedData * Working on TypedData * Solved the auditlog issue * Changed method to signTypedData * Changed mimes and implemented the 'encodeType' function for EIP-712 * Polished docstrings, ran goimports and swapped fmt.Errorf with errors.New where possible * Drafted recursive encodeData * Ran goimports and gofmt * Drafted first version of EIP-712, including tests * Temporarily switched to using common.Address in tests * Drafted text/validator and and rewritten []byte as hexutil.Bytes * Solved stringified address encoding issue * Changed the property type required by signData from bytes to interface{} * Fixed bugs in 'data/typed' signs * Brought legal warning back after temporarily disabling it for development * Added example RPC calls for account_signData and account_signTypedData * Polished and fixed PR * Polished and fixed PR * Solved malformed data panics and also wrote tests * Solved malformed data panics and also wrote tests * Added alphabetical sorting to type dependencies * Added alphabetical sorting to type dependencies * Added pretty print to data/typed UI * Added pretty print to data/typed UI * signer: more tests for typed data * signer: more tests for typed data * Fixed TestMalformedData4 errors and renamed IsValid to Validate * Fixed TestMalformedData4 errors and renamed IsValid to Validate * Fixed more new failing tests and deanonymised some functions * Fixed more new failing tests and deanonymised some functions * Added types to EIP712 output in cliui * Added types to EIP712 output in cliui * Fixed regexp issues * Fixed regexp issues * Added pseudo-failing test * Added pseudo-failing test * Fixed false positive test * Fixed false positive test * Added PrettyPrint method * Added PrettyPrint method * signer: refactor formatting and UI * signer: make ui use new message format for signing * Fixed breaking changes * Fixed rules_test failing test * Added extra regexp for reference types * signer: more hard types * Fixed failing test, formatted files * signer: use golang/x keccak * Fixed goimports error * clef, signer: address some review concerns * Implemented latest recommendations * Fixed comments and uintint256 issue * accounts, signer: fix mimetypes, add interface to sign data with passphrase * signer, accounts: remove duplicated code, pass hash preimages to signing * signer: prevent panic in type assertions, make cliui print rawdata as quotable-safe * signer: linter fixes, remove deprecated crypto dependency * accounts: fix goimport
* accounts, eth, clique, signer: support for external signer API (#18079)Martin Holst Swende2019-02-052-38/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | * accounts, eth, clique: implement external backend + move sighash calc to backend * signer: implement account_Version on external API * accounts/external: enable ipc, add copyright * accounts, internal, signer: formatting * node: go fmt * flags: disallow --dev in combo with --externalsigner * accounts: remove clique-specific signing method, replace with more generic * accounts, consensus: formatting + fix error in tests * signer/core: remove (test-) import cycle * clique: remove unused import * accounts: remove CliqueHash and avoid dependency on package crypto * consensus/clique: unduplicate header encoding
* vendor, crypto, swarm: switch over to upstream sha3 packageDave McGregor2019-01-043-9/+9
|
* consensus/clique: fix comment typo (#18103)mr_franklin2018-11-141-1/+1
|
* consensus: extend getWork API with block number (#18038)gary rong2018-11-084-8/+12
|
* all: protect self-mined block during reorg (#17656)gary rong2018-09-201-1/+1
|
* consensus/clique: hide no transaction error (#17614)gary rong2018-09-191-6/+2
|
* consensus, ethdb, metrics: implement forced-meter (#17667)gary rong2018-09-171-2/+2
|
* Merge pull request #17675 from holiman/eip1234Péter Szilágyi2018-09-171-60/+82
|\ | | | | Eip1234
| * ethash: documentation + cleanupMartin Holst Swende2018-09-171-8/+13
| |
| * ethash: less copy-paste for EIP 1234Martin Holst Swende2018-09-161-116/+67
| |
| * consensus: implement Constantinople EIP 1234EOS Classic2018-09-121-4/+70
| |
* | consensus/clique, core: chain maker clique + error testsPéter Szilágyi2018-09-113-71/+184
|/
* consensus/clique: only trust snapshot for genesis or les checkpointPéter Szilágyi2018-09-101-1/+1
|
* consensus/ethash: increase timeout in test (#17526)Anton Evangelatov2018-09-031-2/+14
| | | | This is an attempt to fix the flaky consensus/ethash tests under macOS.
* consensus: fix comment typo (#17562)ult-bobonovski2018-09-031-1/+1
|
* consensus, miner: stale block mining support (#17506)gary rong2018-08-287-107/+244
| | | | | | | | | | * consensus, miner: stale block supporting * consensus, miner: refactor seal signature * cmd, consensus, eth: add miner noverify flag * cmd, consensus, miner: polish
* consensus/ethash: remove unnecessary type declaration (#17529)Mymskmkt2018-08-281-4/+4
|
* miner: fix state commit, track old work packages too (#17490)gary rong2018-08-236-9/+45
| | | | | | | | | | * miner: commit state which is relative with sealing result * consensus, core, miner, mobile: introduce sealHash interface * miner: evict pending task with threshold * miner: go fmt
* consensus/clique, light: light client snapshots on RinkebyPéter Szilágyi2018-08-212-16/+17
|
* consensus/ethash: reduce notify test aggressivenessPéter Szilágyi2018-08-171-1/+1
|
* consensus/ethash: use DAGs for remote mining, generate asyncPéter Szilágyi2018-08-153-24/+83
|
* cmd, consensus/ethash, eth: miner push notificationsPéter Szilágyi2018-08-106-62/+206
|
* consensus/ethash: move remote agent logic to ethash internal (#15853)gary rong2018-08-037-16/+483
| | | | | | | | | | | | | | | | | | | | | | | | | | * consensus/ethash: start remote ggoroutine to handle remote mining * consensus/ethash: expose remote miner api * consensus/ethash: expose submitHashrate api * miner, ethash: push empty block to sealer without waiting execution * consensus, internal: add getHashrate API for ethash * consensus: add three method for consensus interface * miner: expose consensus engine running status to miner * eth, miner: specify etherbase when miner created * miner: commit new work when consensus engine is started * consensus, miner: fix some logics * all: delete useless interfaces * consensus: polish a bit
* consensus/clique: replace bubble sort by golang stable sorthadv2018-07-241-11/+13
|
* consensus: move test use only var/func to test(#17004)Wenbiao Zheng2018-07-244-11/+11
|
* all: switch out defunct set library to different one (#16873)Ralph Caraveo III2018-07-161-3/+3
| | | | | | * keystore, ethash, eth, miner, rpc, whisperv6: tech debt with now defunct set. * whisperv5: swap out gopkg.in/fatih/set.v0 with supported set
* consensus/ethash: fix the algorithm of fakeBlockNumber in comments (#17166)Kwuaint2018-07-121-2/+2
| | | correct the algorithm in the comments for fakeBlockNumber, from "min" to "max".
* consensus/clique: fixed documentation copy-paste issue (#17137)LeoLiao2018-07-091-1/+1
|
* consensus/ethash: fixed documentation typo (#17121)Zak Cole2018-07-041-1/+1
| | | "proot-of-work" to "proof-of-work"
* consensus/ethash: reduce keccak hash allocations (#16857)Felix Lange2018-06-041-6/+17
| | | | | | | | | | Use Read instead of Sum to avoid internal allocations and copying the state. name old time/op new time/op delta CacheGeneration-8 764ms ± 1% 579ms ± 1% -24.22% (p=0.000 n=20+17) SmallDatasetGeneration-8 75.2ms ±12% 60.6ms ±10% -19.37% (p=0.000 n=20+20) HashimotoLight-8 1.58ms ±11% 1.55ms ± 8% ~ (p=0.322 n=20+19) HashimotoFullSmall-8 4.90µs ± 1% 4.88µs ± 1% -0.31% (p=0.013 n=19+18)
* core, consensus: fix some typos in comment code and output loghadv2018-05-191-1/+1
|
* all: get rid of error when creating memory database (#16716)gary rong2018-05-091-1/+1
| | | | | | | | * all: get rid of error when create mdb * core: clean up variables definition * all: inline mdb definition
* core/rawdb: separate raw database access to own package (#16666)Péter Szilágyi2018-05-071-1/+2
|
* consensus/ethash: fixed typo (#16665)YH-Zhou2018-05-031-1/+1
|
* build: enable goimports and varcheck linters (#16446)thomasmodeneis2018-04-181-1/+2
|
* consensus/ethash: fixed typo (#16253)Kyuntae Ethan Kim2018-03-051-1/+1
|
* travis, build, consensus: drop support for Go 1.7Péter Szilágyi2018-02-286-155/+61
|
* metrics: pull library and introduce ResettingTimer and InfluxDB reporter ↵Anton Evangelatov2018-02-231-1/+1
| | | | | | | | | | | | | | | | | | | | (#15910) * go-metrics: fork library and introduce ResettingTimer and InfluxDB reporter. * vendor: change nonsense/go-metrics to ethersphere/go-metrics * go-metrics: add tests. move ResettingTimer logic from reporter to type. * all, metrics: pull in metrics package in go-ethereum * metrics/test: make sure metrics are enabled for tests * metrics: apply gosimple rules * metrics/exp, internal/debug: init expvar endpoint when starting pprof server * internal/debug: tiny comment formatting fix
* core, trie: intermediate mempool between trie and database (#15857)Péter Szilágyi2018-02-061-0/+4
| | | This commit reduces database I/O by not writing every state trie to disk.
* consensus/ethash: improve cache/dataset handling (#15864)Felix Lange2018-01-238-213/+208
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * consensus/ethash: add maxEpoch constant * consensus/ethash: improve cache/dataset handling There are two fixes in this commit: Unmap the memory through a finalizer like the libethash wrapper did. The release logic was incorrect and freed the memory while it was being used, leading to crashes like in #14495 or #14943. Track caches and datasets using simplelru instead of reinventing LRU logic. This should make it easier to see whether it's correct. * consensus/ethash: restore 'future item' logic in lru * consensus/ethash: use mmap even in test mode This makes it possible to shorten the time taken for TestCacheFileEvict. * consensus/ethash: shuffle func calc*Size comments around * consensus/ethash: ensure future cache/dataset is in the lru cache * consensus/ethash: add issue link to the new test * consensus/ethash: fix vet * consensus/ethash: fix test * consensus: tiny issue + nitpick fixes
* consensus/ethash: fix byzantium difficulty comment typo (#15842)gary rong2018-01-101-1/+1
|
* all: switch gas limits from big.Int to uint64Péter Szilágyi2018-01-032-14/+14
|
* consensus/ethash: fix overdue link (#15786)sunxiaojun20142017-12-311-1/+1
|
* accounts, consensus, core, eth: make chain maker consensus agnostic (#15497)gary rong2017-12-224-12/+41
| | | | | | | | | | * accounts, consensus, core, eth: make chain maker consensus agnostic * consensus, core: move CalcDifficulty to Engine interface * consensus: add docs for calcDifficulty function * consensus, core: minor comment fixups
* Merge pull request #15629 from holiman/relax_futuretimePéter Szilágyi2017-12-141-4/+5
|\ | | | | consensus/ethash: relax requirements when determining future-blocks
| * consensus/ethash: relax requirements when determining future-blocksMartin Holst Swende2017-12-081-4/+5
| |
* | all: use gometalinter.v2, fix new gosimple issues (#15650)Zach2017-12-131-1/+1
|/
* cmd, consensus, eth: split ethash related config to it own (#15520)gary rong2017-11-244-52/+80
| | | | | | | | | | * cmd, consensus, eth: split ethash related config to it own * eth, consensus: minor polish * eth, consenus, console: compress pow testing config field to single one * consensus, eth: document pow mode
* cmd/puppeth: etherchain light block explorer for PoW netsPéter Szilágyi2017-11-211-4/+4
|
* build: enable unconvert linter (#15456)ferhat elmas2017-11-111-2/+2
| | | | | | | | | * build: enable unconvert linter - fixes #15453 - update code base for failing cases * cmd/puppeth: replace syscall.Stdin with os.Stdin.Fd() for unconvert linter
* cmd, consensus, core, miner: instatx clique for --dev (#15323)Péter Szilágyi2017-10-242-4/+10
| | | | | | | | * cmd, consensus, core, miner: instatx clique for --dev * cmd, consensus, clique: support configurable --dev block times * cmd, core: allow --dev to use persistent storage too
* ethash: fix typoErnesto del Toro2017-10-131-3/+3
|
* consensus/clique: add fork hash enforcement (#15236)Péter Szilágyi2017-10-102-1/+6
|
* consensus, core, params: rebrand Metro to ByzantiumPéter Szilágyi2017-09-141-10/+10
|
* consensus, core, tests: implement Metropolis EIP 649Péter Szilágyi2017-08-241-5/+20
|
* consensus: revert time.Until changeEgon Elbre2017-08-071-1/+1
|
* consensus: fix megacheck warningsEgon Elbre2017-08-072-3/+3
|
* Merge pull request #14733 from karalabe/metro-eip100Péter Szilágyi2017-07-171-12/+69
|\ | | | | consensus/ethash, core: implement Metropolis EIP 100
| * consensus, core: EIP 100 polishes, fix chain maker diffPéter Szilágyi2017-06-301-29/+38
| | | | | | | | | | | | | | | | | | | | | | | | This PR polishes the EIP 100 difficulty adjustment algorithm to match the same mechanisms as the Homestead was implemented to keep the code uniform. It also avoids a few memory allocs by reusing big1 and big2, pulling it out of the common package and into ethash. The commit also fixes chain maker to forward the uncle hash when creating a simulated chain (it wasn't needed until now so we just skipped a copy there).
| * consensus/ethash: implement Metropolis EIP 100Jeffrey Wilcke2017-06-301-0/+48
| |
* | tests: update tests and implement general state tests (#14734)Felix Lange2017-07-111-2/+3
|/ | | | | | | | | | | | | | 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.
* Merge pull request #14596 from markya0616/valid_clique_votePéter Szilágyi2017-06-232-10/+23
|\ | | | | consensus/clique: choose valid votes
| * consensus/clique: minor cleanupsPéter Szilágyi2017-06-231-6/+7
| |
| * consensus/clique: choose valid votesmark.lin2017-06-142-11/+23
| |
* | consensus/clique: fix typo and don't add snapshot into recents againmark.lin2017-06-201-8/+7
| |
* | rlp, trie, contracts, compression, consensus: improve comments (#14580)S. Matthew English2017-06-129-22/+15
| |
* | consensus: Fix `makedag` epochKonrad Feldmeier2017-06-121-2/+2
|/ | | | | | | | | `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`.
* consensus/clique: cache block signatures for fast checksPéter Szilágyi2017-05-302-23/+34
|
* consensus/ethash: fix TestCalcDifficultyFelix Lange2017-05-241-1/+1
|
* consensus, core, core/vm, parems: review fixesJeffrey Wilcke2017-05-181-1/+1
|
* consensus/ethash: set time to current instead of parent timeJeffrey Wilcke2017-05-181-1/+1
|
* consensus, core/*, params: metropolis preparation refactorJeffrey Wilcke2017-05-182-23/+30
| | | | | | | | | | | | | | | | | | | | | | | | 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)
* common/bitutil, consensus/ethash: reusable bitutil packagePéter Szilágyi2017-05-052-86/+2
|
* Hive-test fixes (#14419)Martin Holst Swende2017-05-041-0/+9
| | | | | | | | | | * 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
* consensus/clique: fix overflow on recent signer check around genesisPéter Szilágyi2017-05-031-1/+1
|
* consensus/ethash: fix a timestamp update racePéter Szilágyi2017-05-021-2/+4
|
* consensus/ethash: close mmap before rename, windows limitationPéter Szilágyi2017-04-141-5/+8
|
* consensus/ethash: simplify concurrency in VerifyHeadersFelix Lange2017-04-131-81/+48
| | | | | This change removes a convoluted use of sync/atomic from VerifyHeaders. It also fixes the annoying error about future blocks.
* consensus, core, ethstats: use engine specific block beneficiary (#14318)Péter Szilágyi2017-04-123-0/+17
| | | | | | * consensus, core, ethstats: use engine specific block beneficiary * core, eth, les, miner: use explicit beneficiary during mining
* consensus/clique, internal/web3ext: support hash based API queries (#14321)Péter Szilágyi2017-04-125-30/+56
| | | | | | * consensus/clique, internal/web3ext: support hash based API queries * consensus/clique: make RPC return types public
* consensus/clique: Proof of Authority (#3753)Péter Szilágyi2017-04-106-29/+1465
| | | | This PR is a prototype implementation of plugable consensus engines and the Clique PoA protocol ethereum/EIPs#225
* consensus, eth: don't CPU mine by default during remote miningPéter Szilágyi2017-04-072-1/+11
|
* consensus, core: drop all the legacy custom core error typesPéter Szilágyi2017-04-062-21/+57
|
* core, consensus: pluggable consensus engines (#3817)Péter Szilágyi2017-04-0514-0/+3671
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.