Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge v1.12.1 pre #248

Closed
wants to merge 196 commits into from
Closed

Merge v1.12.1 pre #248

wants to merge 196 commits into from

Conversation

Tristan-Wilson
Copy link
Member

Draft PR for now until upstream actually makes the release.

holiman and others added 30 commits May 25, 2023 12:02
* core: replace noarg fmt.Errorf with errors.New

Signed-off-by: jsvisa <delweng@gmail.com>

* console: replace noarg fmt.Errorf with errors.New

Signed-off-by: jsvisa <delweng@gmail.com>

* core: go autoimport

Signed-off-by: jsvisa <delweng@gmail.com>

* core: dry

Signed-off-by: jsvisa <delweng@gmail.com>

---------

Signed-off-by: jsvisa <delweng@gmail.com>
* accounts: replace noarg fmt.Errorf with errors.New

Signed-off-by: jsvisa <delweng@gmail.com>

* accounts: go autoimport

Signed-off-by: jsvisa <delweng@gmail.com>

---------

Signed-off-by: jsvisa <delweng@gmail.com>
This change implements async log retrievals via feeding logs in channels, instead of returning slices. This is a first step to implement #15063.  

---------

Signed-off-by: jsvisa <delweng@gmail.com>
Co-authored-by: Sina Mahmoodi <itz.s1na@gmail.com>
Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Sina Mahmoodi <1591639+s1na@users.noreply.github.com>
RPC methods `eth_getHeaderBy*` returned a size value which was meant for internal
processes. Please instead use `size` field returned by `eth_getBlockBy*` if you're interested
in the RLP encoded storage size of the block.

Signed-off-by: jsvisa <delweng@gmail.com>
This change splits up the multiple API functions / namespaces currently defined in the eth package into different per-namespace files.
Signed-off-by: jsvisa <delweng@gmail.com>
Co-authored-by: Sina Mahmoodi <1591639+s1na@users.noreply.github.com>
eth: make StorageRangeAt take a block hash or number

Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Sina Mahmoodi <itz.s1na@gmail.com>
This is a minor optimization/refactoring of Feed.

---------

Co-authored-by: Felix Lange <fjl@twurst.com>
…mplementation (#27310)

Deserialize hex keys early to shortcut on invalid input, and re-use the account storageTrie for each proof for each proof in the account, preventing repeated deep-copying of the trie.

Closes #27308

 --------

Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
Drop the notions of uncles, and disables activities while syncing

-  Disable activities (e.g. generate pending state) while node is syncing,
-  Disable empty block submission (but empty block is still kept for payload building),
-  Drop uncle notion since (ethash is already deprecated)
* p2p/discover: remove ReadRandomNodes

Even though it's public, this method is not callable by code outside of
package p2p/discover because one can't get a valid instance of Table.

* p2p/discover: add Table.Nodes

* p2p/discover: make Table settings configurable

In unit tests and externally developed cmd/devp2p test runs, it can be
useful to tune the timer intervals used by Table.
Continuing with a series of PRs to make the Trie interface more generic, this PR moves
the RLP encoding of storage slots inside the StateTrie and light.Trie implementations,
as other types of tries don't use RLP.
This changes the journal logic to mark the state object dirty immediately when it
is reset. 

We're mostly adding this change to appease the fuzzer. Marking it dirty immediately
makes no difference in practice because accounts will always be modified by EVM
right after creation.
…(#27397)

* eth/downloader: drop beacon head updates if the syncer is restarting

* eth/donwloader: v2 of the goroutine spike preventer
* core/state: remove cached snap data if reset occurs

* core/state: address comment from peter

* core/state: skip revert in case data is nil
* core: crypto: implement BLOBHASH and pointEval precompile

* core: crypto: fixed nitpicks, moved precompile return value

* core/vm: fix review comments
… (#27323)

* core/state/snapshot, core/types, eth: move account definition to type

* core, eth: revert snapshot Account API change
* cmd/evm: make evm blocktest output logs if so instructed

* Apply suggestions from code review

Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>

---------

Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
This fix a minor implementation issue with the newly introduced isGapped function and it is described in ticket: ethereum/go-ethereum#27401
core/state/pruner/pruner.go: Trie.NodeIterator() now also returns an
error in upstream, and we moved a lot of the pruning logic into
dumpRawTrieDescendents, so the changes to handle the error from
NodeIterator could not be automatically applied. Resolved by applying
them in dumpRawTrieDescendants.
internal/ethapi/api.go: Upstream decodeHash added a 3rd return value,
and this update had a conflict with our handling of fallback to classic
in BlockChainAPI.GetStorageAt (419f466). Resolve by keeping our
implementation of this function, assigning to _ the new return value as
done upstream.
….12.1-pre

eth/backend.go: Upstream added OverrideVerkle in eth.New near a call to
core.NewBlockChain, which we added a parameter to, causing automatic
conflict resolution to fail. Resolve by putting OverrideVerkle before
the call to NewBlockChain.
….12.1-pre

core/state/pruner/pruner.go: Upstream removed the Cachedir parameter
from pruner.RecoverPruning, and we had changed code related to checking
the bloom filter in 43e8c2f. Keep our bloom filter logic and remove
the Cachedir argument to RecoverPruning as in upstream.
Upstream in 8bbb16b, cachingDB.OpenStorageTrie was modified to take
the address instead of the address hash as one of its parameters. In
pruner.go dumpRawTrieDescendants, which is a function we added, there
was a call to OpenStorageTrie that needed to be updated. Followed the
same pattern for getting the address from the address hash in
nodeIterator.step() to resolve.
….12.1-pre

params/config.go: Upstream added IsDevMode to ChainConfig, text conflict
with ArbitrumChainParams. Keep both.
….12.1-pre

core/block_validator_test.go: Removal of some tests upstream conflicted
with our change to NewBlockChain parameters, which was used in the
tests. Resolved by removing the tests.
….12.1-pre

internal/ethapi/api_test.go: In newTestBackend, upstream changed some
arguments to a call to core.NewBlockChain, which we've added an extra
parameter (ChainConfig) to. Use upstreams change, and set ChainConfig to
nil.
….12.1-pre

eth/tracers/internal/tracetest/calltrace_test.go: Some of the expected
tracer responses in the tests were changed upstream, and so we needed to
re-add the arbitrum-specific fields to the responses.
….12.1-pre

core/state/statedb.go, core/vm/instructions.go: Our addition of balance
tracking around Suicidied accounts had a trivial text conflict when
upstream renamed Suicide to SelfDestruct. Keep the balance tracking and
use the new name.

core/vm/interface.go: We added GetSuicides to the StateDB interface and
it conflicts with upstream name changes. Rename our function to
GetSelfDestructs.
core/evm.go, core/vm/evm.go, core/state_transition.go: Conflicts in
BlockContext and Message structs arbitrum fields and new Blob fields.
Keep both.

core/genesis.go: Conflict with upstream rearranging Genesis.ToBlock fork
check to include IsCancun in addition to IsShanghai, and our addition of
the ArbOSFormatVersion to IsShanghai.

core/state_processor.go: Upstream changed line before to
applyTransaction which we have added a resultFilter parameter to. Keep
updated line from upstream and also the resultFilter.

core/state_processor_test.go: Fixed some calls to core.NewBlockChain
modified upstream that needed to include our ChainConfig param.

Regenerated tests/gen_sttransaction.go and core/gen_genesis.go using the
instructions in their respective files, there were no changes, so the
automatic merge of these files was successful.
les/peer.go: We had used core.DefaultTriesInMemory instead of
TriesInMemory in 6f5ee42 to fix a build issue, and upstream removed
the surrounding if block checking UltraLightOnlyAnnounce. Allow the if
to be removed and keep using core.DefaultTriesInMemory.
In 5b27b2a we added SyncProgressMap which used b.eth.Downloader()
which was since removed upstream in d4d88f9. Make
LesApiBackend.SyncProgressMap just use LesApiBackend.SyncProgress.
core/state/statedb.go: In our commit adding deterministic statedb
(b185d0b) we added some logic in StateDB.IntermediateRoot behind a
check for deterministic mode, and moved some existing logic into the
else clause. Upstream, stateObject.updateRoot had its one parameter
removed, so to resolve this we used our code from IntermediateRoot, with
the updateRoot arguments removed.
arbitrum/recordingdb.go: In 88f3d61 upstream added a block number
parameter to StateDB.Commit, so in this change we plumb the block number
through to RecordingDatabase.addStateVerify.
….12.1-pre

miner/worker.go: Minor conflict around upstream changing
worker.CommitTransaction's call to core.ApplyTransaction's tx argument
to tx.Tx, and our change adding an extra return value to
ApplyTransaction. Combine both changes.
….12.1-pre

core/evm.go, core/vm/evm.go: Upstream changed DataGas to BlobGas, some
trivial conflicts with Arbitrum added struct fields.
graphql/graphql.go: Minor conflict in imports.
@cla-bot
Copy link

cla-bot bot commented Aug 11, 2023

We require contributors to sign our Contributor License Agreement. In order for us to review and merge your code, please sign the linked documents below to get yourself added. https://na3.docusign.net/Member/PowerFormSigning.aspx?PowerFormId=b15c81cc-b5ea-42a6-9107-3992526f2898&env=na3&acct=6e152afc-6284-44af-a4c1-d8ef291db402&v=2

node/defaults.go, node/node.go: Resolve conflict around addition of
BatchRequestLimit and BatchResponseMaxSize parameters upstream with our
addition of the AuthModules and AuthOrigins node configuration (keep
both).
@cla-bot
Copy link

cla-bot bot commented Aug 11, 2023

We require contributors to sign our Contributor License Agreement. In order for us to review and merge your code, please sign the linked documents below to get yourself added. https://na3.docusign.net/Member/PowerFormSigning.aspx?PowerFormId=b15c81cc-b5ea-42a6-9107-3992526f2898&env=na3&acct=6e152afc-6284-44af-a4c1-d8ef291db402&v=2

@taariq
Copy link

taariq commented Sep 7, 2023

@Tristan-Wilson any timeline for upstream to make the release?

@Tristan-Wilson
Copy link
Member Author

Tristan-Wilson commented Sep 20, 2023

@taariq Looks like upstream has made several new releases that I'll have to catch up to when I get a chance. In any case, I looked at your ticket VolumeFi/paloma#754 and if you're using Offchain's go-ethereum fork because you're using nitro it's not vulnerable to the issue since we don't use the p2p subsystem.

@Tristan-Wilson
Copy link
Member Author

Closing in favor of #258

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.