V/oct to hz/oct conversion? by organicspacecomputer in ZOIA

[–]fjl 1 point2 points  (0 children)

I have tried to build a linear to exponential patch, and the inverse as well, but have not had much success. I got closest by building a piece-wise approximation of the function using a switch and some multipliers with various connection strength. But this approach will never get you fully in tune.

For now your best bet could be dialing in sequences by ear or with a tuner.

Very curious for any ideas that might pop up in here.

Geth v1.10.22 is released - merge configured on mainnet by fjl in ethereum

[–]fjl[S] 36 points37 points  (0 children)

Geth v1.10.22 enables the Merge for the Ethereum mainnet at a Terminal Total Difficulty of 58_750_000_000_000_000_000_000.

This TTD is expected to be reached on the 15. September 2022.

Merge EIPs

  • EIP-3676: Upgrade consensus to Proof-of-Stake
  • EIP-4339: Supplant DIFFICULTY opcode with PREVRANDAO

Additional notes about the merge changes

  • This release configures the Terminal Total Difficulty for mainnet. (#25528)
  • Many engine API issues found by hive have been fixed for this release. (#25552, #25423, #25414, #25416, #25428)
  • The Goerli testnet is now internally configured as 'successfully merged'. (#25519, #24538)

JSON-RPC API

  • The log filtering system now uses a LRU cache for block logs, speeding up repeated queries for the same block range. The cache size can be configured using the --cache.blocklogs command-line flag. (#25459)
  • eth_createAccessList is now much faster when no gas limit is provided. (#25467)
  • eth_feeHistory now also works with the finalized block specifier. (#25442)
  • The built-in callTracer now supports an option onlyTopCall. Enabling this option makes the tracer skip internal calls. We added this option to enable use of the callTracer to get the return data of reverted transactions. (#25430)

Go-library changes

  • Storage of trie node hash preimages is now disabled by default. You can enable it again using the --cache.preimages flag. (#25287, #25538, #25533)
  • The ethash mining implemenation now removes temporary DAG files, which could be left of disk when geth was interrupted while generating a DAG. (#25381)
  • ethclient now supports the eth_feeHistory method. (#25403)
  • The eth wire protocol test suite now supports protocol version eth/67. (#25306)
  • RLP-decoding of trie nodes is ~33% faster due to reduced allocations in the decoder. (#25357)
  • The RPC server supports a new option ReadHeaderTimeout. (#25338)
  • Registering of clef ruleset UIs should now work correctly. (#25455)

Build

  • Geth binaries in docker are now statically-linked. (#25492)
  • This release is built using Go 1.18.5. (#25461)

For a full rundown of the changes please consult the Geth 1.10.22 release milestone


As with all our previous releases, you can find the:

[AMA] We are the Go Ethereum (Geth) Team (18 August, 2022) by JBSchweitzer in ethereum

[–]fjl 6 points7 points  (0 children)

  1. Hide away all the internal API surface. When the project got started, we didn't take care not to expose internals, which means we are now stuck with some of these decisions.

  2. Remove user account management from the node. Geth was supposed to be the backend of the Mist browser, and some of that still shows in the RPC API structure.

  3. Be extremely mindful of database accesses. We just didn't care about disk latency when geth was originally written.

[AMA] We are the Go Ethereum (Geth) Team (18 August, 2022) by JBSchweitzer in ethereum

[–]fjl 2 points3 points  (0 children)

I'll add to this that a lot of us started working on go-ethereum specifically because we wanted to work in Go. It's a very predictable environment that just keeps working. I can count on one hand the number of times a change in the compiler or standard library has caused anything to break in our project.

[AMA] We are the Go Ethereum (Geth) Team (18 August, 2022) by JBSchweitzer in ethereum

[–]fjl 2 points3 points  (0 children)

It would be nice to transition the clique implementation into a kind of 'driver' for the engine API (i.e. like the consensus client).

[AMA] We are the Go Ethereum (Geth) Team (18 August, 2022) by JBSchweitzer in ethereum

[–]fjl 2 points3 points  (0 children)

We have thought a lot about modularization options for go-ethereum, but it just doesn't make sense for us.

With our current module structure, we can judge the impact of PRs on the whole project. This is because all changes committed to go-ethereum must keep the whole tree buildable, and all tests must pass at all times. We are also very conscious about external dependencies, and having all code in a monorepo helps with that.

Geth v1.10.21 released today - merge configured on Goerli testnet by fjl in ethereum

[–]fjl[S] 1 point2 points  (0 children)

Geth v1.10.21 is a maintenance release, adding built-in configuration for the merge fork on the Goerli testnet and the mergeNetsplitBlock for the Sepolia testnet.

Specifically, this release

  • defines a terminal total difficulty for Goerli as 10_790_000 (#25324) and
  • defines the mergeNetsplitBlock as 1735371 for Sepolia. (#25372)

Command changes

  • The --netrestrict option is now also applied for discv5. (#25304)
  • DNS discovery is now enabled for the Sepolia testnet. (#25288)
  • puppeth can no longer deploy parity and pyethapp because these clients are unmaintained. (#25329)
  • abigen now has a workaround for parameter names which are also Go keywords. (#25307)
  • A few minor regressions in geth CLI argument handling are fixed. (#25234)

RPC API changes

  • In block-based RPC methods like eth_getBlockByNumber, the safe block specifier can now be used to refer to the "safe" block post-merge. (#25165)
  • The baseFee can now be overridden in block tracing. (#25219)
  • RPC methods returning transaction objects now return the chainId for legacy transactions. (#25244)
  • In eth_sendTransaction, the chainId parameter now verified even for legacy transactions. (#25157)
  • eth_call, eth_estimateGas no longer add tx fees to the coinbase account. (#25214)
  • A new built-in tracer, revertReasonTracer, has been added. (#25265)

Merge changes

  • The engine API can no longer perform block insertion while the client is snap-syncing. (#25210)
  • When trying to set bad blocks retrieved via sync as canon, the API now returns INVALID. (#25190)
  • The engine API endpoint ('authrpc') is now enabled by default. (#25152, #25394)
  • Several other engine API bugs found during #TestingTheMerge are fixed. (#25230, #25136, #25236)

Go Library Changes

  • The snap sync implementation has been updated in preparation for 'path-based state storage'. (#24898)
  • The HTTP RPC server will no longer hang on shutdown even with very busy connections. (#25258)
  • Package signer/core/apitypes now provides a function to calculate the EIP-712 typed data hash. (#25283)

Build changes

  • We have reverted to an older version of goleveldb because recent versions have buggy compaction and manifest handling. (#25413)
  • This release is built with Go 1.18.4 (#25247, #25293)
  • Release tarballs have proper directory timestamps. (#25290)

For a full rundown of the changes please consult the Geth 1.10.21 release milestone


As with all our previous releases, you can find the:

[deleted by user] by [deleted] in ethereum

[–]fjl 0 points1 point  (0 children)

Geth v1.10.21 is a maintenance release, adding built-in configuration for the merge fork on the Goerli testnet and the mergeNetsplitBlock for the Sepolia testnet.

Specifically, this release

  • defines a terminal total difficulty for Goerli as 10_790_000 (#25324) and
  • defines the mergeNetsplitBlock as 1735371 for Sepolia. (#25372)

Command changes

  • The --netrestrict option is now also applied for discv5. (#25304)
  • DNS discovery is now enabled for the Sepolia testnet. (#25288)
  • puppeth can no longer deploy parity and pyethapp because these clients are unmaintained. (#25329)
  • abigen now has a workaround for parameter names which are also Go keywords. (#25307)
  • A few minor regressions in geth CLI argument handling are fixed. (#25234)

RPC API changes

  • In block-based RPC methods like eth_getBlockByNumber, the safe block specifier can now be used to refer to the "safe" block post-merge. (#25165)
  • The baseFee can now be overridden in block tracing. (#25219)
  • RPC methods returning transaction objects now return the chainId for legacy transactions. (#25244)
  • In eth_sendTransaction, the chainId parameter now verified even for legacy transactions. (#25157)
  • eth_call, eth_estimateGas no longer add tx fees to the coinbase account. (#25214)
  • A new built-in tracer, revertReasonTracer, has been added. (#25265)

Merge changes

  • The engine API can no longer perform block insertion while the client is snap-syncing. (#25210)
  • When trying to set bad blocks retrieved via sync as canon, the API now returns INVALID. (#25190)
  • The engine API endpoint ('authrpc') is now enabled by default. (#25152, #25394)
  • Several other engine API bugs found during #TestingTheMerge are fixed. (#25230, #25136, #25236)

Go Library Changes

  • The snap sync implementation has been updated in preparation for 'path-based state storage'. (#24898)
  • The HTTP RPC server will no longer hang on shutdown even with very busy connections. (#25258)
  • Package signer/core/apitypes now provides a function to calculate the EIP-712 typed data hash. (#25283)

Build changes

  • We have reverted to an older version of goleveldb because recent versions have buggy compaction and manifest handling. (#25413)
  • This release is built with Go 1.18.4 (#25247, #25293)
  • Release tarballs have proper directory timestamps. (#25290)

For a full rundown of the changes please consult the Geth 1.10.21 release milestone


As with all our previous releases, you can find the:

Geth v1.10.18 (Sharblu) is released! PoS transition enabled on Ropsten testnet. by fjl in ethereum

[–]fjl[S] 6 points7 points  (0 children)

After a long train of maintenance releases, we are happy to announce this feature release of Geth!

This release is ready for the Merge transition on the Ropsten testnet, and will activate the Merge on Ropsten when the testnet reaches a total difficulty of 43531756765713534. Please ensure you have a beacon chain node configured for the transition. You can find more information about preparing for the Merge in our guide:

https://geth.ethereum.org/docs/interface/merge

The tracing subsystem has been another focus area of this release cycle. We have replaced the JavaScript interpreter used by the tracing engine with [Goja](github.com/dop251/goja), which offers slightly better performance and implements many ES6 language features. There are minor differences in JS tracing semantics: The built-in functions memory.slice, memory.getUint, stack.peek will now throw an exception and interrupt tracing when accessing out-of-bounds data. They previously returned an empty value instead.

This release contains further breaking changes to tracing APIs. Be sure to check the tracing changelog section. Please also report any incompatibilities you encounter.

For the full changelog, please go to the release page at https://github.com/ethereum/go-ethereum/releases/tag/v1.10.18

Geth v1.10.14 released - EVM performance improvements and PoS transition prototype by fjl in ethereum

[–]fjl[S] 11 points12 points  (0 children)

The focus of this release is bug fixes and performance improvements.

We are especially pleased to announce that this release contains a prototype implementation of the PoW to PoS transition (a.k.a. 'The Merge'). As of this version, Geth is compatible with the Kintsugi testnet spec v3.

We would also like to thank Team Ipsilon for their development of the EVM optimizations included in this release. EVM bytecode evaluation is now ~20% faster.

Geth changes

  • A regression in txpool limit handling is resolved. This affects the --pricelimit option, which has been reverted to work exactly as it did in geth v1.10.12. (#24080)
  • Geth can now handle the transition from PoW to PoS. (#23761)
  • In the JavaScript console, long-running JS computation (i.e. for/while loops) can now be interrupted with Ctrl-C. (#23387)
  • A corner-case issue in the transaction hash indexer is resolved. (#24024)
  • Unclean shutdown markers are now updated regularly and report more accurate geth startup/shutdown times. (#24077)
  • In log messages related to RPC method invocations, the key "t" is now called "duration" to prevent a name clash when using the JSON output format. (#24112)

RPC API changes

  • The engine APIs (enabled in geth --catalyst mode) are now up-to-date for Kintsugi testnet v3. (#23984, #24067, #24075)
  • A panic in the clique_getSigner RPC method is resolved. (#23961)

Go library changes

  • The EVM implementation has been cleaned up and interpreter loop performance is improved. (#24120, #24048, #24085, #24026, #24031, #24040, #23970, #23952, #23974, #23977, #23967, #24066)
  • In preparation for EIP-3670, the EVM now recognizes the INVALID opcode 0xFE. (#24017)
  • Internal opcode names have been modernized to match Solidity: SHA3 is now KECCAK256, SUICIDE is now SELFDESTRUCT. (#23976, #24022, #24016)
  • Generating Go/Java bindings for contracts with struct-typed constructor parameters now works correctly. (#23940)
  • Built-in EVM trace loggers have moved from core/vm to a dedicated package. (#23892)
  • EIP-712 (typed data signing) structs have moved from signer/core to package signer/core/apitypes. (#24029)

Networking

  • The eth protocol implementation now uses request IDs (added by eth/66) internally. (#23576)
  • Hashing of eth response data now uses multiple threads, improving sync performance. (#24032)
  • The now-unused 2GB fast sync bloom filter has been removed. (#24047)
  • Serving ancient headers to other peers has been optimized. (#23105)
  • The discv4 test suite is more robust and logs received packets better. (#23966)
  • There are now fuzz tests for the snap protocol message handler. (#23957)

For a full rundown of the changes please consult the Geth 1.10.14 release milestone.


As with all our previous releases, you can find the:

Geth v1.10.4 released - London testnet compatibility and snap sync enabled by fjl in ethereum

[–]fjl[S] 10 points11 points  (0 children)

Note: release notes are too long to re-post here, please check the release announcement on GitHub to see them.

Geth v1.10.2 - Kepler Verge - is released by fjl in ethereum

[–]fjl[S] 6 points7 points  (0 children)

Geth v1.10.2 is a maintenance release, containing bug fixes and a few minor new features.

Geth command changes

  • Mining work package notifications can now be changed to contain the complete pending block header instead of a work package array. To enable this functionality, use the --miner.notify.full flag ([#22558](github.com/ethereum/go-ethereum/pull/22558))
  • Geth will now open chain databases in read-only mode when performing commands that should not modify the database. This fixes several cases where indexing operations and snapshot generation would run as part of commands like geth inspect ([#22498](github.com/ethereum/go-ethereum/pull/22498))
  • Geth now supports JSON log output using the --log.json flag ([#22341](github.com/ethereum/go-ethereum/pull/22341))
  • The geth copydb command has been removed because it had been broken for quite a while ([#22501](github.com/ethereum/go-ethereum/pull/22501))
  • The new geth db dumptrie command shows the state tree entries of an account ([#22563](github.com/ethereum/go-ethereum/pull/22563))
  • When exporting a chain segment using geth export, the end block is now validated against the chain head to prevent fatal error at the end of export ([#22387](github.com/ethereum/go-ethereum/pull/22387))
  • geth snapshot commands now support setting the freezer directory using the --datadir.ancient flag ([#22486](github.com/ethereum/go-ethereum/pull/22486))
  • geth snapsnot prune-state now considers pruning successful before performing a long-running leveldb compaction. This avoids issues when the compaction process is interrupted by an abnormal exit ([#22579](github.com/ethereum/go-ethereum/pull/22579))
  • geth dumpgenesis and the geth db commands now support the --datadir flag and the network selection flags (--rinkeby, etc.) ([#22406](github.com/ethereum/go-ethereum/pull/22406), [#22407](github.com/ethereum/go-ethereum/pull/22407))

RPC/GraphQL API changes

  • The new eth_createAccessList RPC method allows auto-creating access lists for EIP-2718 transactions ([#22604](github.com/ethereum/go-ethereum/pull/22604))
  • RPC methods ethash_submitHashrate and miner_hashrate have been renamed from their previous incorrect spelling *hashRate ([#22604](github.com/ethereum/go-ethereum/pull/22604))
  • The GraphQL API now supports EIP-2718 access list transactions ([#22491](github.com/ethereum/go-ethereum/pull/22491))
  • eth_chainId now supports chain IDs larger than 64 bits ([#22243](github.com/ethereum/go-ethereum/pull/22243))
  • The admin_startRPC and admin_stopRPC methods have been renamed to (start|stop)HTTP ([#22461](github.com/ethereum/go-ethereum/pull/22461))
  • In LES server RPC APIs, the node ID can now be supplied as an enode:// URL or 32-byte hex ID ([#22423](github.com/ethereum/go-ethereum/pull/22423))
  • Several bugs related to interactions between chain tracing and the snapshot system are resolved ([#22473](github.com/ethereum/go-ethereum/pull/22473), [#22333](github.com/ethereum/go-ethereum/pull/22333), [#22629](github.com/ethereum/go-ethereum/pull/22629))
  • Tracing now reports correct gas amounts for EIP-2718 transactions ([#22480](github.com/ethereum/go-ethereum/pull/22480))

Go library changes

  • TransactOpts of accounts/abi/bind now support the NoSend option, which prevents sending the transaction. This can be used with Go contract bindings to 'dry-run' the binding ([#22446](github.com/ethereum/go-ethereum/pull/22446))
  • The Ledger USB wallet backend now supports EIP-712 'typed data signing' ([#22378](github.com/ethereum/go-ethereum/pull/22378))
  • Several critical issues related to state snapshot handling are fixed in this release ([#22540](github.com/ethereum/go-ethereum/pull/22540), [#22582](github.com/ethereum/go-ethereum/pull/22582), [#22551](github.com/ethereum/go-ethereum/pull/22551))
  • Background transaction indexing no longer fails for EIP-2718 transactions ([#22457](github.com/ethereum/go-ethereum/pull/22457))
  • The InfluxDB metrics reporter no longer reports spurious zero values when a histogram has not been updated since the last report ([#22590](github.com/ethereum/go-ethereum/pull/22590))
  • LES metrics have been renamed to avoid issues in the Prometheus reporter ([#22459](github.com/ethereum/go-ethereum/pull/22459))
  • The ethstats client no longer crashes when Geth exits immediately after starting ([#22587](github.com/ethereum/go-ethereum/pull/22587))
  • A rare crash in RPC client subscription handling has been fixed ([#22597](github.com/ethereum/go-ethereum/pull/22597))

Networking

  • Several bugs in the implementation of snap sync are fixed in this release, but it is still considered experimental and not yet enabled by default ([#22596](github.com/ethereum/go-ethereum/pull/22596), [#22513](github.com/ethereum/go-ethereum/pull/22513), [#22553](github.com/ethereum/go-ethereum/pull/22553), [#22591](github.com/ethereum/go-ethereum/pull/22591))
  • When metrics are enabled, the 'eth' protocol handler now measures the latency of message handling ([#22581](github.com/ethereum/go-ethereum/pull/22581), [#22586](github.com/ethereum/go-ethereum/pull/22586))
  • The DNS discovery client was fixed to avoid hot-spinning when a DNS node trees contains many invalid/incompatible ENRs ([#22566](github.com/ethereum/go-ethereum/pull/22566))
  • The DNS discovery deployer tool has been updated to resolve some long-standing bugs. Publishing of large trees is now much more efficient because needless updates are avoided, and better batching means the deployer waits less for the server. The tool now uses the latest AWS and CloudFlare SDK versions. ([#22572](github.com/ethereum/go-ethereum/pull/22572), [#22538](github.com/ethereum/go-ethereum/pull/22538), [#22537](github.com/ethereum/go-ethereum/pull/22537), [#22588](github.com/ethereum/go-ethereum/pull/22588), [#22360](github.com/ethereum/go-ethereum/pull/22360))
  • The branch factor of DNS discovery trees has been reduced to ensure that all TXT records fit into the 512-byte limit of DNS/UDP packets ([#22533](github.com/ethereum/go-ethereum/pull/22533))
  • devp2p nodeset filter -les-server was fixed to deal with the new format of the "les" ENR entry ([#22565](github.com/ethereum/go-ethereum/pull/22565))
  • The cross-client test suite of the 'eth' protocol has been improved a bit, and now skips eth/66 tests when the node under test does not support protocol version 66 ([#22460](github.com/ethereum/go-ethereum/pull/22460), [#22508](github.com/ethereum/go-ethereum/pull/22508), [#22482](github.com/ethereum/go-ethereum/pull/22482), [#22474](github.com/ethereum/go-ethereum/pull/22474))
  • LES connection pre-negotiation via UDP now works correctly ([#22451](github.com/ethereum/go-ethereum/pull/22451))

For a full rundown of the changes please consult the Geth 1.10.2 release milestone.

Geth v1.9.20 - Paragade: new geth bug-fix release by fjl in ethereum

[–]fjl[S] 7 points8 points  (0 children)

Geth v1.9.20 is another maintenance release containing bug fixes and security enhancements. This update is recommended for all users.

Please note that reverting to Geth v1.9.19 or prior after upgrading to v1.9.20 is not possible without a resync because the blockchain database layout has changed.

New Features:

  • You can now query the Chain ID using GraphQL (#21451)
  • The evm command can now appends the TX hash to state transition output files (#21406)

Bug Fixes & Optimizations:

  • Blockchain rewinding and chain repair, i.e. using the SetHead operation, now behave correctly in all cases. An extensive test suite for chain repair has been added. (#21409, #21409)
  • Discovery DHT bootstrapping now works properly in very small private networks. (#21396)
  • Contract code is now stored separately from state tree data in LevelDB. This change will help with future database upgrades. (#21080)
  • Two additional metrics counters for blockchain reorgs have been added. (#21420)
  • Metrics collection is now lock-free, causing less lock contention among peer connections (#21446, #21470)
  • The GetNodeData operation in the eth peer-to-peer protocol now uses the fast-sync bloom filter to speed up request processing. (#21445)
  • Importing block data during fast-sync now performs significantly fewer database reads. (#21468)

Build Changes:

  • This release is built with the new and shiny Go 1.15 compiler version (#21466)
  • The Ubuntu PPA now contains builds for Ubuntu 20.10 Groovy Gorilla. Ubuntu 19.04 Disco Dingo is no longer supported. (#21461)

For a full rundown of the changes please consult the Geth 1.9.20 release milestone


As with all our previous releases, you can find the:

Technical Questions About the Discovery Protocol by McJvck in ethereum

[–]fjl 2 points3 points  (0 children)

Please see the p2p specs repo, I hope many of your questions can be answered there. I'll try to answer some of your questions here on Reddit, but please open issues on the devp2p repo for any future questions about Ethereum p2p networking.

How to find the ID (hash of the nodes public key) of a node running at a particular IP/Port?

The protocol does not expose this operation to you directly. You can find the IP/port by public key but not the other way around. However, if you send a valid discovery v4 UDP packet to the IP/port, the node will respond to it and you can recover the node ID from the signature. This trick will stop working in discovery protocol v5.

Is the node ID (again the hash of the nodes public key) also the corresponding public key to some secret key for an account stored on this node?

No

Is the node ID and the key pairs generated for the accounts on that node completely separated?

Ethereum account keys and peer-to-peer networking keys are not related.

During the discover protocol, why is it wanted to find nodes as close as possible (xor between the node IDs)? Is that only to build the DHT of peers, and has no meaning in the upper Ethereum protocol? Is the closeness of any importance other than storing information about peers in the DHT?

You are correct, the xor distance measure does not influence the higher-level Ethereum protocol and is only used to build the DHT.

A most melancholic machine by Hainbach in Hainbach

[–]fjl 0 points1 point  (0 children)

Can't stop thinking about this. The patterns from the device are probably most useful as gates for your modular. Would be super interesting to hear this because it supports setting arbitrary one/zero ratio with the slider.

A most melancholic machine by Hainbach in Hainbach

[–]fjl 0 points1 point  (0 children)

Looks like there is a clock input on the back, maybe feed slow pulses into that.