2015-10-29 17:53:24 +00:00
|
|
|
// Copyright 2015 The go-ethereum Authors
|
|
|
|
// This file is part of go-ethereum.
|
|
|
|
//
|
|
|
|
// go-ethereum is free software: you can redistribute it and/or modify
|
|
|
|
// it under the terms of the GNU General Public License as published by
|
|
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
|
|
// (at your option) any later version.
|
|
|
|
//
|
|
|
|
// go-ethereum is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
// GNU General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU General Public License
|
|
|
|
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// Contains the geth command usage template and generator.
|
|
|
|
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"io"
|
2017-05-25 07:15:51 +00:00
|
|
|
"sort"
|
2015-10-29 17:53:24 +00:00
|
|
|
|
|
|
|
"github.com/ethereum/go-ethereum/cmd/utils"
|
2016-01-26 13:39:21 +00:00
|
|
|
"github.com/ethereum/go-ethereum/internal/debug"
|
2020-07-14 08:35:32 +00:00
|
|
|
"github.com/ethereum/go-ethereum/internal/flags"
|
2020-11-25 20:00:23 +00:00
|
|
|
"gopkg.in/urfave/cli.v1"
|
2015-10-29 17:53:24 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
// AppHelpFlagGroups is the application flags, grouped by functionality.
|
2020-07-14 08:35:32 +00:00
|
|
|
var AppHelpFlagGroups = []flags.FlagGroup{
|
2015-10-29 17:53:24 +00:00
|
|
|
{
|
|
|
|
Name: "ETHEREUM",
|
|
|
|
Flags: []cli.Flag{
|
2017-04-13 14:12:37 +00:00
|
|
|
configFileFlag,
|
2015-10-29 17:53:24 +00:00
|
|
|
utils.DataDirFlag,
|
2019-03-08 13:56:20 +00:00
|
|
|
utils.AncientFlag,
|
2021-01-19 08:26:42 +00:00
|
|
|
utils.MinFreeDiskSpaceFlag,
|
2016-03-07 22:38:56 +00:00
|
|
|
utils.KeyStoreDirFlag,
|
2021-01-05 10:18:22 +00:00
|
|
|
utils.USBFlag,
|
2019-05-31 09:30:28 +00:00
|
|
|
utils.SmartCardDaemonPathFlag,
|
2015-10-29 17:53:24 +00:00
|
|
|
utils.NetworkIdFlag,
|
2021-01-05 13:31:23 +00:00
|
|
|
utils.MainnetFlag,
|
2018-11-16 15:58:24 +00:00
|
|
|
utils.GoerliFlag,
|
2020-04-09 09:09:58 +00:00
|
|
|
utils.RinkebyFlag,
|
2021-02-25 14:26:57 +00:00
|
|
|
utils.YoloV3Flag,
|
2020-04-09 09:09:58 +00:00
|
|
|
utils.RopstenFlag,
|
2017-04-13 14:12:37 +00:00
|
|
|
utils.SyncModeFlag,
|
cmd,eth: 16400 Add an option to stop geth once in sync. WIP for light mode (#17321)
* cmd, eth: Added in the flag to step geth once sync based on input
* cmd, eth: 16400 Add an option to stop geth once in sync.
* cmd: 16400 Add an option to stop geth once in sync. WIP
* cmd/geth/main, les/fletcher: added in light mode support
* cmd/geth/main, les/fletcher: Cleaned Comments and code for light mode
* cmd: 16400 Fixed formatting issue and cleaned code
* cmd, eth, les: 16400 Fixed formatting issues
* cmd, eth, les: Performed gofmt to update formatting
* cmd, eth, les: Fixed bugs resulting formatting
* cmd/geth, eth/, les: switched to downloader event
* eth: Fixed styling and gen_config
* eth/: Fix nil error in config file
* cmd/geth: Updated countdown log
* les/fetcher.go: Removed depcreated channel
* eth/downloader.go: Removed deprecated select
* cmd/geth, cmd/utils: Fixed minor issues
* eth: Reverted config files to proper format
* eth: Fixed typo in config file
* cmd/geth, eth/down: Updated code to use header time stamp
* eth/downloader: Changed the time threshold to 10 minutes
* cmd/geth, eth/downloader: Updated downloading event to pass latest header
* cmd/geth: Updated main to use right timer object
* cmd/geth: Removed unused failed event
* cmd/geth: added in correct time field with type assertion
* cmd/geth, cmd/utils: Updated flag to use boolean
* cmd/geth, cmd/utils, eth/downloader: Cleaned up code based on recommendations
* cmd/geth: Removed unneeded import
* cmd/geth, eth/downloader: fixed event field and suggested changes
* cmd/geth, cmd/utils: Updated flag and linting issue
2019-01-30 07:40:36 +00:00
|
|
|
utils.ExitWhenSyncedFlag,
|
2018-02-05 16:40:32 +00:00
|
|
|
utils.GCModeFlag,
|
2020-05-11 15:58:43 +00:00
|
|
|
utils.TxLookupLimitFlag,
|
2017-04-13 14:12:37 +00:00
|
|
|
utils.EthStatsURLFlag,
|
2015-10-29 17:53:24 +00:00
|
|
|
utils.IdentityFlag,
|
2019-07-10 02:08:59 +00:00
|
|
|
utils.LightKDFFlag,
|
|
|
|
utils.WhitelistFlag,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
2019-07-10 05:54:06 +00:00
|
|
|
Name: "LIGHT CLIENT",
|
2019-07-10 02:08:59 +00:00
|
|
|
Flags: []cli.Flag{
|
2019-07-10 05:54:06 +00:00
|
|
|
utils.LightServeFlag,
|
|
|
|
utils.LightIngressFlag,
|
|
|
|
utils.LightEgressFlag,
|
|
|
|
utils.LightMaxPeersFlag,
|
2019-07-09 17:30:24 +00:00
|
|
|
utils.UltraLightServersFlag,
|
|
|
|
utils.UltraLightFractionFlag,
|
|
|
|
utils.UltraLightOnlyAnnounceFlag,
|
2020-07-13 09:02:54 +00:00
|
|
|
utils.LightNoPruneFlag,
|
2021-02-25 12:55:07 +00:00
|
|
|
utils.LightNoSyncServeFlag,
|
2016-10-19 11:55:13 +00:00
|
|
|
},
|
|
|
|
},
|
2018-07-09 08:41:28 +00:00
|
|
|
{
|
|
|
|
Name: "DEVELOPER CHAIN",
|
2017-10-24 10:40:42 +00:00
|
|
|
Flags: []cli.Flag{
|
|
|
|
utils.DeveloperFlag,
|
|
|
|
utils.DeveloperPeriodFlag,
|
|
|
|
},
|
|
|
|
},
|
2017-03-06 09:37:32 +00:00
|
|
|
{
|
|
|
|
Name: "ETHASH",
|
|
|
|
Flags: []cli.Flag{
|
|
|
|
utils.EthashCacheDirFlag,
|
|
|
|
utils.EthashCachesInMemoryFlag,
|
|
|
|
utils.EthashCachesOnDiskFlag,
|
2020-03-31 08:44:04 +00:00
|
|
|
utils.EthashCachesLockMmapFlag,
|
2017-03-06 09:37:32 +00:00
|
|
|
utils.EthashDatasetDirFlag,
|
2017-03-06 15:20:25 +00:00
|
|
|
utils.EthashDatasetsInMemoryFlag,
|
2017-03-06 09:37:32 +00:00
|
|
|
utils.EthashDatasetsOnDiskFlag,
|
2020-03-31 08:44:04 +00:00
|
|
|
utils.EthashDatasetsLockMmapFlag,
|
2017-03-06 09:37:32 +00:00
|
|
|
},
|
|
|
|
},
|
2017-05-26 10:40:47 +00:00
|
|
|
{
|
|
|
|
Name: "TRANSACTION POOL",
|
|
|
|
Flags: []cli.Flag{
|
2018-08-21 17:30:06 +00:00
|
|
|
utils.TxPoolLocalsFlag,
|
2017-07-05 14:06:05 +00:00
|
|
|
utils.TxPoolNoLocalsFlag,
|
2017-07-28 13:09:39 +00:00
|
|
|
utils.TxPoolJournalFlag,
|
|
|
|
utils.TxPoolRejournalFlag,
|
2017-05-26 10:40:47 +00:00
|
|
|
utils.TxPoolPriceLimitFlag,
|
|
|
|
utils.TxPoolPriceBumpFlag,
|
|
|
|
utils.TxPoolAccountSlotsFlag,
|
|
|
|
utils.TxPoolGlobalSlotsFlag,
|
|
|
|
utils.TxPoolAccountQueueFlag,
|
|
|
|
utils.TxPoolGlobalQueueFlag,
|
|
|
|
utils.TxPoolLifetimeFlag,
|
|
|
|
},
|
|
|
|
},
|
2016-10-19 11:55:13 +00:00
|
|
|
{
|
|
|
|
Name: "PERFORMANCE TUNING",
|
|
|
|
Flags: []cli.Flag{
|
2015-10-29 17:53:24 +00:00
|
|
|
utils.CacheFlag,
|
2018-02-05 16:40:32 +00:00
|
|
|
utils.CacheDatabaseFlag,
|
2018-11-12 16:47:34 +00:00
|
|
|
utils.CacheTrieFlag,
|
2020-07-28 13:30:31 +00:00
|
|
|
utils.CacheTrieJournalFlag,
|
|
|
|
utils.CacheTrieRejournalFlag,
|
2018-02-05 16:40:32 +00:00
|
|
|
utils.CacheGCFlag,
|
2019-11-26 07:48:29 +00:00
|
|
|
utils.CacheSnapshotFlag,
|
2019-04-01 08:52:11 +00:00
|
|
|
utils.CacheNoPrefetchFlag,
|
2020-11-18 09:51:33 +00:00
|
|
|
utils.CachePreimagesFlag,
|
2015-10-29 17:53:24 +00:00
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: "ACCOUNT",
|
|
|
|
Flags: []cli.Flag{
|
|
|
|
utils.UnlockedAccountFlag,
|
|
|
|
utils.PasswordFileFlag,
|
accounts, eth, clique, signer: support for external signer API (#18079)
* 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
2019-02-05 10:23:57 +00:00
|
|
|
utils.ExternalSignerFlag,
|
2019-04-04 11:03:10 +00:00
|
|
|
utils.InsecureUnlockAllowedFlag,
|
2015-10-29 17:53:24 +00:00
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: "API AND CONSOLE",
|
|
|
|
Flags: []cli.Flag{
|
2019-06-12 08:24:24 +00:00
|
|
|
utils.IPCDisabledFlag,
|
|
|
|
utils.IPCPathFlag,
|
2020-05-05 08:19:17 +00:00
|
|
|
utils.HTTPEnabledFlag,
|
|
|
|
utils.HTTPListenAddrFlag,
|
|
|
|
utils.HTTPPortFlag,
|
|
|
|
utils.HTTPApiFlag,
|
2021-02-02 09:05:46 +00:00
|
|
|
utils.HTTPPathPrefixFlag,
|
2020-05-05 08:19:17 +00:00
|
|
|
utils.HTTPCORSDomainFlag,
|
|
|
|
utils.HTTPVirtualHostsFlag,
|
2015-12-16 09:58:01 +00:00
|
|
|
utils.WSEnabledFlag,
|
|
|
|
utils.WSListenAddrFlag,
|
|
|
|
utils.WSPortFlag,
|
|
|
|
utils.WSApiFlag,
|
2021-02-02 09:05:46 +00:00
|
|
|
utils.WSPathPrefixFlag,
|
2016-03-14 08:38:54 +00:00
|
|
|
utils.WSAllowedOriginsFlag,
|
2019-06-12 08:24:24 +00:00
|
|
|
utils.GraphQLEnabledFlag,
|
|
|
|
utils.GraphQLCORSDomainFlag,
|
|
|
|
utils.GraphQLVirtualHostsFlag,
|
2020-10-13 11:33:10 +00:00
|
|
|
utils.RPCGlobalGasCapFlag,
|
|
|
|
utils.RPCGlobalTxFeeCapFlag,
|
2021-03-03 07:42:59 +00:00
|
|
|
utils.AllowUnprotectedTxs,
|
2015-10-29 17:53:24 +00:00
|
|
|
utils.JSpathFlag,
|
|
|
|
utils.ExecFlag,
|
2016-05-06 09:40:23 +00:00
|
|
|
utils.PreloadJSFlag,
|
2015-10-29 17:53:24 +00:00
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: "NETWORKING",
|
|
|
|
Flags: []cli.Flag{
|
|
|
|
utils.BootnodesFlag,
|
2020-02-13 13:38:30 +00:00
|
|
|
utils.DNSDiscoveryFlag,
|
2015-10-29 17:53:24 +00:00
|
|
|
utils.ListenPortFlag,
|
|
|
|
utils.MaxPeersFlag,
|
|
|
|
utils.MaxPendingPeersFlag,
|
|
|
|
utils.NATFlag,
|
|
|
|
utils.NoDiscoverFlag,
|
2016-10-19 11:04:55 +00:00
|
|
|
utils.DiscoveryV5Flag,
|
2017-04-13 14:12:37 +00:00
|
|
|
utils.NetrestrictFlag,
|
2015-10-29 17:53:24 +00:00
|
|
|
utils.NodeKeyFileFlag,
|
|
|
|
utils.NodeKeyHexFlag,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: "MINER",
|
|
|
|
Flags: []cli.Flag{
|
|
|
|
utils.MiningEnabledFlag,
|
|
|
|
utils.MinerThreadsFlag,
|
2018-08-08 09:15:08 +00:00
|
|
|
utils.MinerNotifyFlag,
|
2021-03-26 17:30:10 +00:00
|
|
|
utils.MinerNotifyFullFlag,
|
2018-08-15 08:01:49 +00:00
|
|
|
utils.MinerGasPriceFlag,
|
|
|
|
utils.MinerGasTargetFlag,
|
2018-08-29 09:21:12 +00:00
|
|
|
utils.MinerGasLimitFlag,
|
2018-08-15 08:01:49 +00:00
|
|
|
utils.MinerEtherbaseFlag,
|
|
|
|
utils.MinerExtraDataFlag,
|
2018-08-21 19:56:54 +00:00
|
|
|
utils.MinerRecommitIntervalFlag,
|
2018-08-28 13:59:05 +00:00
|
|
|
utils.MinerNoVerfiyFlag,
|
2015-10-29 17:53:24 +00:00
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: "GAS PRICE ORACLE",
|
|
|
|
Flags: []cli.Flag{
|
2017-04-06 14:20:42 +00:00
|
|
|
utils.GpoBlocksFlag,
|
|
|
|
utils.GpoPercentileFlag,
|
2020-09-09 15:38:47 +00:00
|
|
|
utils.GpoMaxGasPriceFlag,
|
2015-10-29 17:53:24 +00:00
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: "VIRTUAL MACHINE",
|
|
|
|
Flags: []cli.Flag{
|
2017-01-17 11:19:50 +00:00
|
|
|
utils.VMEnableDebugFlag,
|
2018-09-20 07:44:35 +00:00
|
|
|
utils.EVMInterpreterFlag,
|
|
|
|
utils.EWASMInterpreterFlag,
|
2015-10-29 17:53:24 +00:00
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
2016-04-21 09:14:57 +00:00
|
|
|
Name: "LOGGING AND DEBUGGING",
|
|
|
|
Flags: append([]cli.Flag{
|
|
|
|
utils.FakePoWFlag,
|
2017-04-13 14:12:37 +00:00
|
|
|
utils.NoCompactionFlag,
|
2016-04-21 09:14:57 +00:00
|
|
|
}, debug.Flags...),
|
2015-10-29 17:53:24 +00:00
|
|
|
},
|
2018-07-02 12:51:02 +00:00
|
|
|
{
|
2019-03-25 08:01:18 +00:00
|
|
|
Name: "METRICS AND STATS",
|
|
|
|
Flags: metricsFlags,
|
2018-07-02 12:51:02 +00:00
|
|
|
},
|
2017-04-13 14:12:37 +00:00
|
|
|
{
|
2020-05-05 08:19:17 +00:00
|
|
|
Name: "ALIASED (deprecated)",
|
2021-02-24 13:07:58 +00:00
|
|
|
Flags: []cli.Flag{
|
2021-01-05 10:18:22 +00:00
|
|
|
utils.NoUSBFlag,
|
2020-05-05 08:19:17 +00:00
|
|
|
utils.LegacyRPCEnabledFlag,
|
|
|
|
utils.LegacyRPCListenAddrFlag,
|
|
|
|
utils.LegacyRPCPortFlag,
|
|
|
|
utils.LegacyRPCCORSDomainFlag,
|
|
|
|
utils.LegacyRPCVirtualHostsFlag,
|
|
|
|
utils.LegacyRPCApiFlag,
|
2021-02-24 13:07:58 +00:00
|
|
|
},
|
2017-04-13 14:12:37 +00:00
|
|
|
},
|
Statediffing geth
* Write state diff to CSV (#2)
* port statediff from https://github.com/jpmorganchase/quorum/blob/9b7fd9af8082795eeeb6863d9746f12b82dd5078/statediff/statediff.go; minor fixes
* integrating state diff extracting, building, and persisting into geth processes
* work towards persisting created statediffs in ipfs; based off github.com/vulcanize/eth-block-extractor
* Add a state diff service
* Remove diff extractor from blockchain
* Update imports
* Move statediff on/off check to geth cmd config
* Update starting state diff service
* Add debugging logs for creating diff
* Add statediff extractor and builder tests and small refactoring
* Start to write statediff to a CSV
* Restructure statediff directory
* Pull CSV publishing methods into their own file
* Reformatting due to go fmt
* Add gomega to vendor dir
* Remove testing focuses
* Update statediff tests to use golang test pkg
instead of ginkgo
- builder_test
- extractor_test
- publisher_test
* Use hexutil.Encode instead of deprecated common.ToHex
* Remove OldValue from DiffBigInt and DiffUint64 fields
* Update builder test
* Remove old storage value from updated accounts
* Remove old values from created/deleted accounts
* Update publisher to account for only storing current account values
* Update service loop and fetching previous block
* Update testing
- remove statediff ginkgo test suite file
- move mocks to their own dir
* Updates per go fmt
* Updates to tests
* Pass statediff mode and path in through cli
* Return filename from publisher
* Remove some duplication in builder
* Remove code field from state diff output
this is the contract byte code, and it can still be obtained by querying
the db by the codeHash
* Consolidate acct diff structs for updated & updated/deleted accts
* Include block number in csv filename
* Clean up error logging
* Cleanup formatting, spelling, etc
* Address PR comments
* Add contract address and storage value to csv
* Refactor accumulating account row in csv publisher
* Add DiffStorage struct
* Add storage key to csv
* Address PR comments
* Fix publisher to include rows for accounts that don't have store updates
* Update builder test after merging in release/1.8
* Update test contract to include storage on contract intialization
- so that we're able to test that storage diffing works for created and
deleted accounts (not just updated accounts).
* Factor out a common trie iterator method in builder
* Apply goimports to statediff
* Apply gosimple changes to statediff
* Gracefully exit geth command(#4)
* Statediff for full node (#6)
* Open a trie from the in-memory database
* Use a node's LeafKey as an identifier instead of the address
It was proving difficult to find look the address up from a given path
with a full node (sometimes the value wouldn't exist in the disk db).
So, instead, for now we are using the node's LeafKey with is a Keccak256
hash of the address, so if we know the address we can figure out which
LeafKey it matches up to.
* Make sure that statediff has been processed before pruning
* Use blockchain stateCache.OpenTrie for storage diffs
* Clean up log lines and remove unnecessary fields from builder
* Apply go fmt changes
* Add a sleep to the blockchain test
* Address PR comments
* Address PR comments
* refactoring/reorganizing packages
* refactoring statediff builder and types and adjusted to relay proofs and paths (still need to make this optional)
* refactoring state diff service and adding api which allows for streaming state diff payloads over an rpc websocket subscription
* make proofs and paths optional + compress service loop into single for loop (may be missing something here)
* option to process intermediate nodes
* make state diff rlp serializable
* cli parameter to limit statediffing to select account addresses + test
* review fixes and fixes for issues ran into in integration
* review fixes; proper method signature for api; adjust service so that statediff processing is halted/paused until there is at least one subscriber listening for the results
* adjust buffering to improve stability; doc.go; fix notifier
err handling
* relay receipts with the rest of the data + review fixes/changes
* rpc method to get statediff at specific block; requires archival node or the block be within the pruning range
* review fixes
* fixes after rebase
* statediff verison meta
* fix linter issues
* include total difficulty to the payload
* fix state diff builder: emit actual leaf nodes instead of value nodes; diff on the leaf not on the value; emit correct path for intermediate nodes
* adjust statediff builder tests to changes and extend to test intermediate nodes; golint
* add genesis block to test; handle block 0 in StateDiffAt
* rlp files for mainnet blocks 0-3, for tests
* builder test on mainnet blocks
* common.BytesToHash(path) => crypto.Keaccak256(hash) in builder; BytesToHash produces same hash for e.g. []byte{} and []byte{\x00} - prefix \x00 steps are inconsequential to the hash result
* complete tests for early mainnet blocks
* diff type for representing deleted accounts
* fix builder so that we handle account deletions properly and properly diff storage when an account is moved to a new path; update params
* remove cli params; moving them to subscriber defined
* remove unneeded bc methods
* update service and api; statediffing params are now defined by user through api rather than by service provider by cli
* update top level tests
* add ability to watch specific storage slots (leaf keys) only
* comments; explain logic
* update mainnet blocks test
* update api_test.go
* storage leafkey filter test
* cleanup chain maker
* adjust chain maker for tests to add an empty account in block1 and switch to EIP-158 afterwards (now we just need to generate enough accounts until one causes the empty account to be touched and removed post-EIP-158 so we can simulate and test that process...); also added 2 new blocks where more contract storage is set and old slots are set to zero so they are removed so we can test that
* found an account whose creation causes the empty account to be moved to a new path; this should count as 'touching; the empty account and cause it to be removed according to eip-158... but it doesn't
* use new contract in unit tests that has self-destruct ability, so we can test eip-158 since simply moving an account to new path doesn't count as 'touchin' it
* handle storage deletions
* tests for eip-158 account removal and storage value deletions; there is one edge case left to test where we remove 1 account when only two exist such that the remaining account is moved up and replaces the root branch node
* finish testing known edge cases
* add endpoint to fetch all state and storage nodes at a given blockheight; useful for generating a recent atate cache/snapshot that we can diff forward from rather than needing to collect all diffs from genesis
* test for state trie builder
* minor changes/fixes
* update version meta
* if statediffing is on, lock tries in triedb until the statediffing service signals they are done using them
* update version meta
* fix mock blockchain; golint; bump patch
* increase maxRequestContentLength; bump patch
* log the sizes of the state objects we are sending
* CI build (#20)
* CI: run build on PR and on push to master
* CI: debug building geth
* CI: fix coping file
* CI: fix coping file v2
* CI: temporary upload file to release asset
* CI: get release upload_url by tag, upload asset to current relase
* CI: fix tag name
* fix ci build on statediff_at_anyblock-1.9.11 branch
* fix publishing assets in release
* bump version meta
* use context deadline for timeout in eth_call
* collect and emit codehash=>code mappings for state objects
* subscription endpoint for retrieving all the codehash=>code mappings that exist at provided height
* bump version meta
* Implement WriteStateDiffAt
* Writes state diffs directly to postgres
* Adds CLI flags to configure PG
* Refactors builder output with callbacks
* Copies refactored postgres handling code from ipld-eth-indexer
* rename PostgresCIDWriter.{index->upsert}*
* less ambiguous
* go.mod update
* rm unused
* cleanup
* output code & codehash iteratively
* had to rf some types for this
* prometheus metrics output
* duplicate recent eth-indexer changes
* migrations and metrics...
* [wip] prom.Init() here? another CLI flag?
* cleanup
* tidy & DRY
* statediff WriteLoop service + CLI flag
* [wip] update test mocks
* todo - do something meaningful to test write loop
* logging
* use geth log
* port tests to go testing
* drop ginkgo/gomega
* fix and cleanup tests
* fail before defer statement
* delete vendor/ dir
* unused
* bump version meta
* fixes after rebase onto 1.9.23
* bump version meta
* fix API registration
* bump version meta
* use golang 1.15.5 version (#34)
* bump version meta; add 0.0.11 branch to actions
* bump version meta; update github actions workflows
* statediff: refactor metrics
* Remove redundant statediff/indexer/prom tooling and use existing
prometheus integration.
* cleanup
* "indexer" namespace for metrics
* add reporting loop for db metrics
* doc
* metrics for statediff stats
* metrics namespace/subsystem = statediff/{indexer,service}
* statediff: use a worker pool (for direct writes)
* fix test
* fix chain event subscription
* log tweaks
* func name
* unused import
* intermediate chain event channel for metrics
* cleanup
* bump version meta
* update github actions; linting
* add poststate and status to receipt ipld indexes
* bump statediff version
* stateDiffFor endpoints for fetching or writing statediff object by blockhash; bump statediff version
* fixes after rebase on to v1.10.1
* update github actions and version meta; go fmt
* add leaf key to removed 'nodes'
* include Postgres migrations and schema
* service documentation
* touching up
2019-01-28 21:31:01 +00:00
|
|
|
{
|
|
|
|
Name: "STATE DIFF",
|
|
|
|
Flags: []cli.Flag{
|
|
|
|
utils.StateDiffFlag,
|
|
|
|
utils.StateDiffDBFlag,
|
|
|
|
utils.StateDiffDBNodeIDFlag,
|
|
|
|
utils.StateDiffDBClientNameFlag,
|
|
|
|
utils.StateDiffWritingFlag,
|
|
|
|
utils.StateDiffWorkersFlag,
|
|
|
|
},
|
|
|
|
},
|
2015-10-29 17:53:24 +00:00
|
|
|
{
|
2017-06-13 09:49:07 +00:00
|
|
|
Name: "MISC",
|
2020-05-05 08:19:17 +00:00
|
|
|
Flags: []cli.Flag{
|
|
|
|
utils.SnapshotFlag,
|
all: bloom-filter based pruning mechanism (#21724)
* cmd, core, tests: initial state pruner
core: fix db inspector
cmd/geth: add verify-state
cmd/geth: add verification tool
core/rawdb: implement flatdb
cmd, core: fix rebase
core/state: use new contract code layout
core/state/pruner: avoid deleting genesis state
cmd/geth: add helper function
core, cmd: fix extract genesis
core: minor fixes
contracts: remove useless
core/state/snapshot: plugin stacktrie
core: polish
core/state/snapshot: iterate storage concurrently
core/state/snapshot: fix iteration
core: add comments
core/state/snapshot: polish code
core/state: polish
core/state/snapshot: rebase
core/rawdb: add comments
core/rawdb: fix tests
core/rawdb: improve tests
core/state/snapshot: fix concurrent iteration
core/state: run pruning during the recovery
core, trie: implement martin's idea
core, eth: delete flatdb and polish pruner
trie: fix import
core/state/pruner: add log
core/state/pruner: fix issues
core/state/pruner: don't read back
core/state/pruner: fix contract code write
core/state/pruner: check root node presence
cmd, core: polish log
core/state: use HEAD-127 as the target
core/state/snapshot: improve tests
cmd/geth: fix verification tool
cmd/geth: use HEAD as the verification default target
all: replace the bloomfilter with martin's fork
cmd, core: polish code
core, cmd: forcibly delete state root
core/state/pruner: add hash64
core/state/pruner: fix blacklist
core/state: remove blacklist
cmd, core: delete trie clean cache before pruning
cmd, core: fix lint
cmd, core: fix rebase
core/state: fix the special case for clique networks
core/state/snapshot: remove useless code
core/state/pruner: capping the snapshot after pruning
cmd, core, eth: fixes
core/rawdb: update db inspector
cmd/geth: polish code
core/state/pruner: fsync bloom filter
cmd, core: print warning log
core/state/pruner: adjust the parameters for bloom filter
cmd, core: create the bloom filter by size
core: polish
core/state/pruner: sanitize invalid bloomfilter size
cmd: address comments
cmd/geth: address comments
cmd/geth: address comment
core/state/pruner: address comments
core/state/pruner: rename homedir to datadir
cmd, core: address comments
core/state/pruner: address comment
core/state: address comments
core, cmd, tests: address comments
core: address comments
core/state/pruner: release the iterator after each commit
core/state/pruner: improve pruner
cmd, core: adjust bloom paramters
core/state/pruner: fix lint
core/state/pruner: fix tests
core: fix rebase
core/state/pruner: remove atomic rename
core/state/pruner: address comments
all: run go mod tidy
core/state/pruner: avoid false-positive for the middle state roots
core/state/pruner: add checks for middle roots
cmd/geth: replace crit with error
* core/state/pruner: fix lint
* core: drop legacy bloom filter
* core/state/snapshot: improve pruner
* core/state/snapshot: polish concurrent logs to report ETA vs. hashes
* core/state/pruner: add progress report for pruning and compaction too
* core: fix snapshot test API
* core/state: fix some pruning logs
* core/state/pruner: support recovering from bloom flush fail
Co-authored-by: Péter Szilágyi <peterke@gmail.com>
2021-02-08 11:16:30 +00:00
|
|
|
utils.BloomFilterSizeFlag,
|
2020-05-05 08:19:17 +00:00
|
|
|
cli.HelpFlag,
|
|
|
|
},
|
2015-10-29 17:53:24 +00:00
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
// Override the default app help template
|
2020-07-14 08:35:32 +00:00
|
|
|
cli.AppHelpTemplate = flags.AppHelpTemplate
|
2017-05-25 07:15:51 +00:00
|
|
|
|
2015-10-29 17:53:24 +00:00
|
|
|
// Override the default app help printer, but only for the global app help
|
|
|
|
originalHelpPrinter := cli.HelpPrinter
|
|
|
|
cli.HelpPrinter = func(w io.Writer, tmpl string, data interface{}) {
|
2020-07-14 08:35:32 +00:00
|
|
|
if tmpl == flags.AppHelpTemplate {
|
2015-10-29 17:53:24 +00:00
|
|
|
// Iterate over all the flags and add any uncategorized ones
|
|
|
|
categorized := make(map[string]struct{})
|
|
|
|
for _, group := range AppHelpFlagGroups {
|
|
|
|
for _, flag := range group.Flags {
|
|
|
|
categorized[flag.String()] = struct{}{}
|
|
|
|
}
|
|
|
|
}
|
2020-05-05 08:19:17 +00:00
|
|
|
deprecated := make(map[string]struct{})
|
|
|
|
for _, flag := range utils.DeprecatedFlags {
|
|
|
|
deprecated[flag.String()] = struct{}{}
|
|
|
|
}
|
|
|
|
// Only add uncategorized flags if they are not deprecated
|
2019-02-14 23:02:11 +00:00
|
|
|
var uncategorized []cli.Flag
|
2015-10-29 17:53:24 +00:00
|
|
|
for _, flag := range data.(*cli.App).Flags {
|
|
|
|
if _, ok := categorized[flag.String()]; !ok {
|
2020-05-05 08:19:17 +00:00
|
|
|
if _, ok := deprecated[flag.String()]; !ok {
|
|
|
|
uncategorized = append(uncategorized, flag)
|
|
|
|
}
|
2015-10-29 17:53:24 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
if len(uncategorized) > 0 {
|
|
|
|
// Append all ungategorized options to the misc group
|
|
|
|
miscs := len(AppHelpFlagGroups[len(AppHelpFlagGroups)-1].Flags)
|
|
|
|
AppHelpFlagGroups[len(AppHelpFlagGroups)-1].Flags = append(AppHelpFlagGroups[len(AppHelpFlagGroups)-1].Flags, uncategorized...)
|
|
|
|
|
|
|
|
// Make sure they are removed afterwards
|
|
|
|
defer func() {
|
|
|
|
AppHelpFlagGroups[len(AppHelpFlagGroups)-1].Flags = AppHelpFlagGroups[len(AppHelpFlagGroups)-1].Flags[:miscs]
|
|
|
|
}()
|
|
|
|
}
|
|
|
|
// Render out custom usage screen
|
2020-07-14 08:35:32 +00:00
|
|
|
originalHelpPrinter(w, tmpl, flags.HelpData{App: data, FlagGroups: AppHelpFlagGroups})
|
|
|
|
} else if tmpl == flags.CommandHelpTemplate {
|
2017-05-25 07:15:51 +00:00
|
|
|
// Iterate over all command specific flags and categorize them
|
|
|
|
categorized := make(map[string][]cli.Flag)
|
|
|
|
for _, flag := range data.(cli.Command).Flags {
|
|
|
|
if _, ok := categorized[flag.String()]; !ok {
|
2020-07-14 08:35:32 +00:00
|
|
|
categorized[flags.FlagCategory(flag, AppHelpFlagGroups)] = append(categorized[flags.FlagCategory(flag, AppHelpFlagGroups)], flag)
|
2017-05-25 07:15:51 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// sort to get a stable ordering
|
2020-07-14 08:35:32 +00:00
|
|
|
sorted := make([]flags.FlagGroup, 0, len(categorized))
|
2017-05-25 07:15:51 +00:00
|
|
|
for cat, flgs := range categorized {
|
2020-07-14 08:35:32 +00:00
|
|
|
sorted = append(sorted, flags.FlagGroup{Name: cat, Flags: flgs})
|
2017-05-25 07:15:51 +00:00
|
|
|
}
|
2020-07-14 08:35:32 +00:00
|
|
|
sort.Sort(flags.ByCategory(sorted))
|
2017-05-25 07:15:51 +00:00
|
|
|
|
|
|
|
// add sorted array to data and render with default printer
|
|
|
|
originalHelpPrinter(w, tmpl, map[string]interface{}{
|
|
|
|
"cmd": data,
|
|
|
|
"categorizedFlags": sorted,
|
|
|
|
})
|
2015-10-29 17:53:24 +00:00
|
|
|
} else {
|
|
|
|
originalHelpPrinter(w, tmpl, data)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|