* switch receipts to cbor
* switch receipts to cbor
* rpcdaemon to cache chainconfig
* rpcdaemon to cache chainconfig
* rpcdaemon to cache chainconfig
* rpcdaemon to cache chainconfig
* Starting to look at performance
* Fixes issue #1142 - incorrect error strings
* Uses a recent fix in Geth callTracer code to return balance to self-destruct traces
* Add headers persistence
* Print flushBuffer
* Fix indexing problem
* Not skip hard-coded headers if the files are empty
* Fix lint
* print anchor state after init
* Properly construct file names
* Add check sub-command
* Fix lint
* Fix lint
* Fix lint
* Print more info when recovering
* Fix recovering
* Fix recovery
* Add anchors also as tips
* 2-level priority queue for tips
* Initialise tipQueue in anchor
* update maxTipHeight
* fix type
* Add anchors to the anchorQueue and rebuild anchorQueue on deletion
* Fix NPE
* fix recovery
* User buffersize, add hard coded headers to buffer
* Reinit anchorQueue
* Schedule requests after recovery
* No fix
* Remove duplicates
* Report duplicate headers
* Log buffer additions
* Fix for duplicate headers
* Try to fix duplicate headers again
* remove TODO comment
* Use LLRB instead of heap for anchors
* Print reserveTip info
* Correctly replace anchors in the tree
* Remove excessive logging
* Print tips attached to the anchor
* Print tips better
* limitTips instead of reserveTip
* Print forked headers
* Use pointers in llrb
* Print tipStretch
* Print limitTips
* Mininise AnchorItem
* Put anchors into the tree
* Fix totalDiff calculation, but is it needed?
* Remove totalDifficulty from anchors
* CheckInitiation
* Fix tests
* Fix lint, print more at check initiation
* Better output for hard-coded anchors
* Print hard-coded anchors better
* Prioritise anchors with short stretches
* Prioritise by chainSize
* Use linked list instead of heap for requestQueue
* Fix problem of no requests
* Push front
* Fix lint
* Not verify PoW for too far in the past and future
* Fix Calculation of totalDifficulty when Connect
* Fix hard tips
* Another fix for tips
* Adding some testdata for RPC tracing
* Adding command line option to allow switching trace export format
* Moved types into a separate file for clarity
* Added endpoints and stub functions for other trace routines
* Added experimental end points for issuance, blockReward, and uncleReward
* Moved supporting functions for filtering to _filtering file
* Moved Filter function to _filtering file
* Reordering functions for clarity
* Cleaning up
* Implemented trace_get - 7 of 8 tests pass
* Implemented trace_transaction - 2 of 8 tests pass
* Updating test cases
* Turning off lint temporarily. Will be turned back on
* Extended trace_filter (parity traces, reward traces) - 10 of 13 tests pass
* Implemented trace_block - 4 of 6 tests passed
* Cleanup test cases
* Added refundAddress and selfDestructedAddress to self destruct traces
* Total hack fix to missing gasUsed in some tests. Fixes tests, needs to be replaced
* Process BlockHeadersMsg
* Print invalidations
* Print reason for parent-child mismatch
* Fix off by one error
* Fix ExtendDown
* Replace tipLimiter with an LRU cache
* Retrieve 256 headers at a time
* Hard coding of tips, process new block hashes
* extract headers
* Write hard-coded headers into a file
* Add total difficulty
* Insert hard coded headers
* Log i
* Initiate download from hard-coded anchors
* Print the state of anchors
* Add hard-coded headers as tips
* Spare the peers
* Refine LRU caching of tips
* Print length of anchor trees
* Limit requests to 192 headers
* range error fix
* Print better, retain at least one tip in the LRU cache
* Skip duplicate line ends
* Throttle requests, display peer name
* Back off, intermediate tip queue
* Print block header timestamp
* Better logging
* Log less
* More logging of evictions
* Fix queue push
* Fix queue pop
* Exclude duplicate tips
* Fix tips logging
* Fix moving
* Add port flag
* Check headers
* Print extra
* Add mixDigest to serialisation
* Fix difficulty in hard-coded headers
* Avoid duplicate header requests
* Update peer characteristics on NewBlockMsg
* Remove backoff when peer responds
* Fix tests
* Fix lint
* Fix lint
* added tls auth
* added client side
* put --tls
* fixed flag
* Add key/cert generation instructions, turn off Common Name verification
* Add CLI arguments and Warning
* Lint
* Update the doc about Internal IP
Co-authored-by: Alexey Akhunov <akhounov@gmail.com>
* Rewrite of README for clarity and expanding implementation table
* Small cleanups for web3_api.go
* Changed GetReceipts function to non-export (getRecipts) and cleaned up comments
* Added a comment for GetLogsByHash
* Add support for eth_protocolVersion and eth_chainId
* Adding comments and re-ordering fields to agree with Parity's ordering
* Added support for eth_listening. Moved net_version to same file as others
* Setup for adding eth_gasPrice
* Fixes issue #1110 - eth_getStorageAt returning inconsistent values
* Adds support for various eth_getUncle calls
* Adding a couple of comments
* Adding support for eth_getTransactionCount
* Cleaning up README's
* Cleaning up README for rpcdaemon
Co-authored-by: tjayrush <jrush@greathill.com>
* Removed old TODOs
* Adding support for web3_clientVersion and web3_sha3
* Fixing formatting
* Adding new endpoints to README
* Responding to comments by removing date from compile-time values
* Added missing README entry for getTransactionByHash
* Adding support for eth_getTransactioBy* RPC routines
* Added missing README entry for getTransactionByHash
* Adding support for eth_getTransactioBy* RPC routines
* Copying code from ./internal/ethapi/api.go with modifications
* it compiles
* after recent master
* fix linters warnings
* grpcV7
* go mod tidy
* unmarshall adresses or adress
* fix linters
* after cr
* after cr
* after cr
* after cr
* fix tests
* remove dev version
* it compiles
* mod tidy
* fix bin deps
* use stable version of grpc
* switch back to master constructor
* switch back to master constructor
* add a bit docs
* add a bit docs
Co-authored-by: Alexey Akhunov <akhounov@gmail.com>
Co-authored-by: alex.sharov <AskAlexSharov@gmail.com>
* Use Append for changesets and receipts
* Fix lint
* Delete all receipts on unwind
* Fix lint
* Fix unwind keys for changeset
* Fix test
* Use writeReceipts flag
* Revert to Append
* Delete receipts too when resetting
* First algorithm
* Update doc
* Second algorithm implemented
* Prepend (unfinished)
* More on prepend
* More fixes
* Change CalcDifficulty interface
* fix make test
* Fix formatting
* Another test
* More on Preprend
* Another test for Prepend
* More tests for Prepend
* More tests for Prepend
* Move files to turbo
* Add another test for Prepend
* Started adding Append algorithm
* More work on Append
* Start changing the terminology
* Split trees into segments
* More fixes
* Fix compilation
* Connect
* FindAnchors, FindTip
* Tip has anchor and not anchorParent field
* Remove Prepend and Append
* Add Connect
* NewAnchor algorithm
* More to recovery from files
* Add more to AddAnchor
* Request more headers
* Header fix-sizes serialisation
* Upgrade CI to 1.15
* Fix lint
* Fix lint
* replace RLP with fixed-sized serialisation
* Fix lint
* More algos
* Fix lint
* Cut down the stateGrowth generation
* Fix NPE
* Fix for lastTimestamp
* Adjust to the current state
* Potential fix
* Fix for shorter keys in the state
* Extract code
* Iterate over code
* First
* More on SA interpreter
* Fixup
* Add cfg action to hack binary that invokes the SaInterpreter. Added an operation handler for PUSH1
* refactor cfg tests into separate file
* Move cfg tests into separate file
* More refactoring into new file
* dataflow interpreter
* work on cfg0
* finish cfg0
* df works on base examples
* refactor into dataflow spec
* add bounded stack
* add harder example
* fix switch pass thru
* fix switch pass thru
* bug fix, and better printing
* manual merge
* restore call to test gencfg
* abstract interpretation based cfg analysis
* fix post signature
* use uint256 instead uint64, add post function
* preprocess stmts
* initial implementation of resolve
* fix resolve
* fix resolve
* print stmts for edges
* print stmts for edges
* print states
* print states
* bug fixes, debugging
* fix jumpi dest - first working impl
* reachability analysis to filter out dead edges
* add all transfer functions
* larger contract bytecodes from solc compiler
* simple solidity contract goes thru
* add deposit contract bytecode
* rename deposit contract test
* fix new contract arg
* Address non-determinism leading to imprecise results
* improve debugging output
* improve debugging output
* improve debugging output
* fix for bug causing incorrect analysis results
* fix for bug causing incorrect analysis results
* fix for bug causing incorrect analysis results
* add more test cases
* fix coverage bug
* debugging for non-termination
* fix bad fixpoint check
* fix data inference
* fix transfer function for halting stmts
* switch to deposit contract test, disable debugging
* add anly counter to viz, fix stmt.valid check
* show all preds, adjust anlycounter behavior
* dfs instead of bfs to fail earlier
* viz improvements
* add worklist size to viz
* add test case for private functions
* valueset analysis
* add more checks to fail earlier in the analysis to help debugging, improve debugging output, catch additional bad jumps
* delete old code
* delete old code
* delete old code
* fix up minor changes to jump table
* copy over comments from cgf-1 branch
* remove minor diffs
* add recompiled deposit contract
* graph viz
* cleanup/refactoring
* initial impl of viz
* script to run cfg anly and generate dot file
* div example
* accept bytecode from cmd line
* add minimal deposit contract example
* replace valueset analysis with stackset analysis
* get in sync with master
* sync with master
* fix linting
* fix linting
* fix linting
* reformatting
* fix linting
* fix linting
* fix linting
* fix linting
* fix linting
* fix linting
* fix linting
Co-authored-by: Alexey Akhunov <akhounov@gmail.com>
* v0
* more docs, less customization
* more docs, less customization
* more docs, less customization
* don't store db reference
* rely on fact that lmdb key/value valid until end of transaction
* clean
* clean
* Update Supported JSON-RPC calls in README
* Fix Hyperlinks
* Update list
* Include net / net_version
* Rename net.go to net_api.go
* Fix hyperlink for renamed net_api.go file
* v0
* v1
* v3
* v4
* clean
* temporary fix of txpool
* Add debug logs about tx start/commit
* Add debug logs about tx start/commit
* Add debug logs about tx start/commit
* add condition
* tx pool to not hold own db
* try to enable TxPool in integration
* exclude tx pool from tx
* exclude tx pool from integration
* reduce limit
* fix integration
* clean
* clean
* clean
* clean
* clean
* exclude tx pool unwind
* exclude tx pool unwind in integration
* fix integration tx pool
* fix commit
* fix current stage after unwind
* fix current stage after unwind
* fix linter
* move unwind of tx_pool after unwind of unwind of senders, then all stages from body to tx_pool will be inside tx.
* move body and headers unwind out of tx
* fix unwind order after reboot
* add support external tx to exec stage
* clean
* clean
* clean
* clean
* clean
* add logs
* better id check
* better id check
* timer-based logs
* timer-based logs
* delegate progress calculation to user
* delegate progress calculation to user
* delegate progress calculation to user
* clear
* add logs to senders recovery
* use default dir in integration
* more logs
* more logs
* share config object
* create default config and logger
* move db connection to common func
* move server start to cli package
* clear
* clear
* rename cli to rpc
* use unified SetupLogger func
* make all root flag persistent
* use common flags in different packages
* use common flags in different packages
* move TraceTx method to eth package
* use native slice flags
* create package "turbo"
* disable geth api
* disable geth api
* move more data types to turbo/adapter package
* add support for customApiList
* run more
* run more
* run more
* dog-food
* move DoCall
* move DoCall
* fix tests
* fix test
* cmd/utils: grant snapshot cache to trie if disabled
* eth: fix up default non-mainnet cache distribution
# Conflicts:
# cmd/utils/flags.go
# eth/config.go
* chaincmd should make config nodes instead of full nodes
* add documentation for using makeConfigNode instead of makeFullNode;
* add documentation to functions
* code style
# Conflicts:
# cmd/geth/config.go
This PR significantly changes the APIs for instantiating Ethereum nodes in
a Go program. The new APIs are not backwards-compatible, but we feel that
this is made up for by the much simpler way of registering services on
node.Node. You can find more information and rationale in the design
document: https://gist.github.com/renaynay/5bec2de19fde66f4d04c535fd24f0775.
There is also a new feature in Node's Go API: it is now possible to
register arbitrary handlers on the user-facing HTTP server. In geth, this
facility is used to enable GraphQL.
There is a single minor change relevant for geth users in this PR: The
GraphQL API is no longer available separately from the JSON-RPC HTTP
server. If you want GraphQL, you need to enable it using the
./geth --http --graphql flag combination.
The --graphql.port and --graphql.addr flags are no longer available.
# Conflicts:
# cmd/faucet/faucet.go
# cmd/geth/chaincmd.go
# cmd/geth/config.go
# cmd/geth/consolecmd.go
# cmd/geth/main.go
# cmd/utils/flags.go
# cmd/wnode/main.go
# core/rawdb/freezer.go
# eth/api_backend.go
# eth/backend.go
# ethclient/ethclient_test.go
# ethstats/ethstats.go
# graphql/service.go
# internal/ethapi/backend.go
# les/api_backend.go
# les/api_test.go
# les/checkpointoracle/oracle.go
# les/client.go
# les/commons.go
# les/server.go
# miner/stresstest/stress_clique.go
# miner/stresstest/stress_ethash.go
# mobile/geth.go
# node/api.go
# node/node.go
# node/node_example_test.go
# node/node_test.go
# node/rpcstack.go
# node/rpcstack_test.go
# node/service.go
# node/service_test.go
# node/utils_test.go
# p2p/simulations/examples/ping-pong.go
# p2p/testing/peerpool.go
# p2p/testing/protocolsession.go
# p2p/testing/protocoltester.go
# whisper/mailserver/server_test.go
# whisper/whisperv6/api_test.go
# whisper/whisperv6/filter_test.go
# whisper/whisperv6/whisper.go
# whisper/whisperv6/whisper_test.go
* geth,utils: implement configurable developer account options
Prior to this change --dev (developer) mode
generated one account with an empty password,
irrespective of existing --password and --miner.etherbase
options.
This change makes --dev mode compatible with these
existing flags.
--dev mode may now be used in conjunction with
--password and --miner.etherbase flags to configure
the developer faucet using an existing keystore or
in creating a new account.
Signed-off-by: meows <b5c6@protonmail.com>
* main: remove key/pass flags from usage developer section
These flags are included already in other sections,
and it is not desired to duplicate them.
They were originally included in this section
along with added support for these flags in the
developer mode.
Signed-off-by: meows <b5c6@protonmail.com>
This adds a test suite for discovery v4. The test suite is a port of the Hive suite for
discovery, and will replace the current suite on Hive soon-ish. The tests can be
run locally with this command:
devp2p discv4 test -remote enode//...
Co-authored-by: Felix Lange <fjl@twurst.com>
# Conflicts:
# cmd/devp2p/discv4cmd.go
# go.sum
Exposing /debug/metrics and /debug/metrics/prometheus was dependent
on --pprof, which also exposes other HTTP APIs. This change makes it possible
to run the metrics server on an independent endpoint without enabling pprof.
# Conflicts:
# cmd/utils/flags.go
# internal/debug/flags.go
# metrics/exp/exp.go
# mobile/geth.go
This PR reduces the bandwidth used by the light client to compute the
recommended gas price. The current mechanism for suggesting the price is:
- retrieve recent 20 blocks
- get the lowest gas price of these blocks
- sort the price array and return the middle(60%) one
This works for full nodes, which have all blocks available locally.
However, this is very expensive for the light client because the light
client needs to retrieve block bodies from the network.
The PR changes the default options for light client. With the new config,
the light client only retrieves the two latest blocks, but in order to
collect more sample transactions, the 3 lowest prices are collected from
each block.
This PR also changes the behavior for empty blocks. If the block is empty,
the lastest price is reused for sampling.
# Conflicts:
# eth/gasprice/gasprice.go