good morning!!!!

Skip to content
Snippets Groups Projects
  1. Nov 12, 2019
  2. Jul 14, 2019
  3. May 13, 2019
  4. Mar 06, 2019
  5. Dec 10, 2018
  6. Sep 24, 2018
    • Felix Lange's avatar
      all: new p2p node representation (#17643) · 30cd5c18
      Felix Lange authored
      Package p2p/enode provides a generalized representation of p2p nodes
      which can contain arbitrary information in key/value pairs. It is also
      the new home for the node database. The "v4" identity scheme is also
      moved here from p2p/enr to remove the dependency on Ethereum crypto from
      that package.
      
      Record signature handling is changed significantly. The identity scheme
      registry is removed and acceptable schemes must be passed to any method
      that needs identity. This means records must now be validated explicitly
      after decoding.
      
      The enode API is designed to make signature handling easy and safe: most
      APIs around the codebase work with enode.Node, which is a wrapper around
      a valid record. Going from enr.Record to enode.Node requires a valid
      signature.
      
      * p2p/discover: port to p2p/enode
      
      This ports the discovery code to the new node representation in
      p2p/enode. The wire protocol is unchanged, this can be considered a
      refactoring change. The Kademlia table can now deal with nodes using an
      arbitrary identity scheme. This requires a few incompatible API changes:
      
        - Table.Lookup is not available anymore. It used to take a public key
          as argument because v4 protocol requires one. Its replacement is
          LookupRandom.
        - Table.Resolve takes *enode.Node instead of NodeID. This is also for
          v4 protocol compatibility because nodes cannot be looked up by ID
          alone.
        - Types Node and NodeID are gone. Further commits in the series will be
          fixes all over the the codebase to deal with those removals.
      
      * p2p: port to p2p/enode and discovery changes
      
      This adapts package p2p to the changes in p2p/discover. All uses of
      discover.Node and discover.NodeID are replaced by their equivalents from
      p2p/enode.
      
      New API is added to retrieve the enode.Node instance of a peer. The
      behavior of Server.Self with discovery disabled is improved. It now
      tries much harder to report a working IP address, falling back to
      127.0.0.1 if no suitable address can be determined through other means.
      These changes were needed for tests of other packages later in the
      series.
      
      * p2p/simulations, p2p/testing: port to p2p/enode
      
      No surprises here, mostly replacements of discover.Node, discover.NodeID
      with their new equivalents. The 'interesting' API changes are:
      
       - testing.ProtocolSession tracks complete nodes, not just their IDs.
       - adapters.NodeConfig has a new method to create a complete node.
      
      These changes were needed to make swarm tests work.
      
      Note that the NodeID change makes the code incompatible with old
      simulation snapshots.
      
      * whisper/whisperv5, whisper/whisperv6: port to p2p/enode
      
      This port was easy because whisper uses []byte for node IDs and
      URL strings in the API.
      
      * eth: port to p2p/enode
      
      Again, easy to port because eth uses strings for node IDs and doesn't
      care about node information in any way.
      
      * les: port to p2p/enode
      
      Apart from replacing discover.NodeID with enode.ID, most changes are in
      the server pool code. It now deals with complete nodes instead
      of (Pubkey, IP, Port) triples. The database format is unchanged for now,
      but we should probably change it to use the node database later.
      
      * node: port to p2p/enode
      
      This change simply replaces discover.Node and discover.NodeID with their
      new equivalents.
      
      * swarm/network: port to p2p/enode
      
      Swarm has its own node address representation, BzzAddr, containing both
      an overlay address (the hash of a secp256k1 public key) and an underlay
      address (enode:// URL).
      
      There are no changes to the BzzAddr format in this commit, but certain
      operations such as creating a BzzAddr from a node ID are now impossible
      because node IDs aren't public keys anymore.
      
      Most swarm-related changes in the series remove uses of
      NewAddrFromNodeID, replacing it with NewAddr which takes a complete node
      as argument. ToOverlayAddr is removed because we can just use the node
      ID directly.
  7. Sep 20, 2018
  8. May 18, 2018
  9. May 09, 2018
  10. Feb 05, 2018
  11. Jan 30, 2018
  12. Jan 03, 2018
  13. Dec 22, 2017
  14. Oct 25, 2017
  15. Sep 05, 2017
  16. Aug 18, 2017
  17. Jul 05, 2017
  18. Apr 25, 2017
  19. Apr 12, 2017
    • Felix Lange's avatar
      cmd/geth: add --config file flag (#13875) · 30d706c3
      Felix Lange authored
      * p2p/discover, p2p/discv5: add marshaling methods to Node
      
      * p2p/netutil: make Netlist decodable from TOML
      
      * common/math: encode nil HexOrDecimal256 as 0x0
      
      * cmd/geth: add --config file flag
      
      * cmd/geth: add missing license header
      
      * eth: prettify Config again, fix tests
      
      * eth: use gasprice.Config instead of duplicating its fields
      
      * eth/gasprice: hide nil default from dumpconfig output
      
      * cmd/geth: hide genesis block in dumpconfig output
      
      * node: make tests compile
      
      * console: fix tests
      
      * cmd/geth: make TOML keys look exactly like Go struct fields
      
      * p2p: use discovery by default
      
      This makes the zero Config slightly more useful. It also fixes package
      node tests because Node detects reuse of the datadir through the
      NodeDatabase.
      
      * cmd/geth: make ethstats URL settable through config file
      
      * cmd/faucet: fix configuration
      
      * cmd/geth: dedup attach tests
      
      * eth: add comment for DefaultConfig
      
      * eth: pass downloader.SyncMode in Config
      
      This removes the FastSync, LightSync flags in favour of a more
      general SyncMode flag.
      
      * cmd/utils: remove jitvm flags
      
      * cmd/utils: make mutually exclusive flag error prettier
      
      It now reads:
      
         Fatal: flags --dev, --testnet can't be used at the same time
      
      * p2p: fix typo
      
      * node: add DefaultConfig, use it for geth
      
      * mobile: add missing NoDiscovery option
      
      * cmd/utils: drop MakeNode
      
      This exposed a couple of places that needed to be updated to use
      node.DefaultConfig.
      
      * node: fix typo
      
      * eth: make fast sync the default mode
      
      * cmd/utils: remove IPCApiFlag (unused)
      
      * node: remove default IPC path
      
      Set it in the frontends instead.
      
      * cmd/geth: add --syncmode
      
      * cmd/utils: make --ipcdisable and --ipcpath mutually exclusive
      
      * cmd/utils: don't enable WS, HTTP when setting addr
      
      * cmd/utils: fix --identity
      30d706c3
  20. Apr 04, 2017
  21. Mar 23, 2017
    • Felix Lange's avatar
      core: refactor genesis handling · 37dd9086
      Felix Lange authored
      This commit solves several issues concerning the genesis block:
      
      * Genesis/ChainConfig loading was handled by cmd/geth code. This left
        library users in the cold. They could specify a JSON-encoded
        string and overwrite the config, but didn't get any of the additional
        checks performed by geth.
      * Decoding and writing of genesis JSON was conflated in
        WriteGenesisBlock. This made it a lot harder to embed the genesis
        block into the forthcoming config file loader. This commit changes
        things so there is a single Genesis type that represents genesis
        blocks. All uses of Write*Genesis* are changed to use the new type
        instead.
      * If the chain config supplied by the user was incompatible with the
        current chain (i.e. the chain had already advanced beyond a scheduled
        fork), it got overwritten. This is not an issue in practice because
        previous forks have always had the highest total difficulty. It might
        matter in the future though. The new code reverts the local chain to
        the point of the fork when upgrading configuration.
      
      The change to genesis block data removes compression library
      dependencies from package core.
      37dd9086
  22. Mar 09, 2017
  23. Jan 17, 2017
  24. Jan 05, 2017
  25. Dec 10, 2016
    • Bas van Kervel's avatar
      core: bugfix state change race condition in txpool (#3412) · 4e36b1e3
      Bas van Kervel authored
      The transaction pool keeps track of the current nonce in its local pendingState. When a
      new block comes in the pendingState is reset. During the reset it fetches multiple times
      the current state through the use of the currentState callback. When a second block comes
      in during the reset its possible that the state changes during the reset. If that block
      holds transactions that are currently in the pool the local pendingState that is used to
      determine nonces can get out of sync.
      4e36b1e3
  26. Nov 13, 2016
  27. Nov 09, 2016
  28. Sep 02, 2016
  29. Jul 15, 2016
  30. May 09, 2016
    • Felix Lange's avatar
      core, eth, miner: improve shutdown synchronisation · 56ed6152
      Felix Lange authored
      Shutting down geth prints hundreds of annoying error messages in some
      cases. The errors appear because the Stop method of eth.ProtocolManager,
      miner.Miner and core.TxPool is asynchronous. Left over peer sessions
      generate events which are processed after Stop even though the database
      has already been closed.
      
      The fix is to make Stop synchronous using sync.WaitGroup.
      
      For eth.ProtocolManager, in order to make use of WaitGroup safe, we need
      a way to stop new peer sessions from being added while waiting on the
      WaitGroup. The eth protocol Run function now selects on a signaling
      channel and adds to the WaitGroup only if ProtocolManager is not
      shutting down.
      
      For miner.worker and core.TxPool the number of goroutines is static,
      WaitGroup can be used in the usual way without additional
      synchronisation.
      56ed6152
  31. Apr 15, 2016
  32. Apr 12, 2016
    • Felix Lange's avatar
      accounts, crypto: move keystore to package accounts · 85e6c40c
      Felix Lange authored
      The account management API was originally implemented as a thin layer
      around crypto.KeyStore, on the grounds that several kinds of key stores
      would be implemented later on. It turns out that this won't happen so
      KeyStore is a superflous abstraction.
      
      In this commit crypto.KeyStore and everything related to it moves to
      package accounts and is unexported.
      85e6c40c
  33. Mar 31, 2016
    • Jeffrey Wilcke's avatar
      accounts/a/b/backends, core: chain maker homestead block set to 0 · 9055c16e
      Jeffrey Wilcke authored
      The chain maker and the simulated backend now run with a homestead phase
      beginning at block 0 (i.e. there's no frontier).
      
      This commit also fixes up #2388
      9055c16e
    • Jeffrey Wilcke's avatar
      core: added basic chain configuration · f0cbebb1
      Jeffrey Wilcke authored
      Added chain configuration options and write out during genesis database
      insertion. If no "config" was found, nothing is written to the database.
      
      Configurations are written on a per genesis base. This means
      that any chain (which is identified by it's genesis hash) can have their
      own chain settings.
      f0cbebb1
  34. Nov 18, 2015
    • Jeffrey Wilcke's avatar
      core, eth, rpc: split out block validator and state processor · a1d9ef48
      Jeffrey Wilcke authored
      This removes the burden on a single object to take care of all
      validation and state processing. Now instead the validation is done by
      the `core.BlockValidator` (`types.Validator`) that takes care of both
      header and uncle validation through the `ValidateBlock` method and state
      validation through the `ValidateState` method. The state processing is
      done by a new object `core.StateProcessor` (`types.Processor`) and
      accepts a new state as input and uses that to process the given block's
      transactions (and uncles for rewords) to calculate the state root for
      the next block (P_n + 1).
      a1d9ef48
  35. Oct 28, 2015
  36. Oct 19, 2015
Loading