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

[R4R]enforce backoff time for out-turn validator #23

Merged
merged 1 commit into from
Aug 7, 2020
Merged

Conversation

unclezoro
Copy link
Collaborator

@unclezoro unclezoro commented Aug 4, 2020

Currently it is specified in the consensus protocol that out-of-turn validators have to wait a randomized amount of time before sealing the block. It is currently implemented in the client-side node software and works with the assumption that validators would run the canonical version.
However, given that validators would be economically incentivized to seal blocks as soon as possible, it would be possible that the validators would run a modified version of the node software to ignore such a delay.

This pr targets to enforce the wait time through the use of a verifiable delay function:

  1. Take the height of the block as the seed of the randomizer.
  2. generate the back-off metrics and shuffle it by above randomizer.
  3. use the distance between the validator and the in-turn validator as index of the back-off metrics to decide the back-off delay time.

And as we have applied the consensus engine on testnet, this should be a hard fork.

@unclezoro unclezoro changed the base branch from master to develop August 5, 2020 02:49
@unclezoro unclezoro force-pushed the back_off branch 2 times, most recently from 546f569 to bfd693a Compare August 5, 2020 09:35
@unclezoro unclezoro merged commit a8c9e53 into develop Aug 7, 2020
@unclezoro unclezoro deleted the back_off branch August 8, 2020 02:50
unclezoro added a commit to unclezoro/bsc that referenced this pull request Apr 13, 2021
add consensus engine Parlia implement

add async write rotate log handler

add precompile light client contracts

prepare for release 1.0.0-alpha.0 for Rialto network #1

Signed-off-by: fudongbai <[email protected]>

add key features to the readme

update 'running a node' part of readme (#2)

more strick condition for system transaction

add gov init transaction

fix validator failed to sync a block produced by itself

update stale depth

add gas limit check in parlia implement

remove redundant gaslimit check

fix debug_traceTransaction crashed issue (bnb-chain#13)

add bep2p tokens for faucet (#5)

add cross chain contract to system contract

allow slash failed (bnb-chain#15)

update metaversion to beta.0

add changelog for v1.0.0-beta.0

add chain id into sign bytes to avoid replay attack (bnb-chain#18)

reestimate the gas consumption for system tx when there is 41 validators (bnb-chain#19)

prepare for 1.0.0-beta.1 (bnb-chain#20)

resolve best practice advice

enforce backoff time for out-turn validator (bnb-chain#23)

framework for upgrade system contract

improve upgrade config

refactor upgrade config

add beforeUpgrade and afterUpgrade

add multiple upgrade config

resolve comment

add upgrade height for rialto

fix deplay check

fix hex code of new smart contract

fix index out of range

fix not return error when blockTimeVerifyForRamanujanFork failed

update chapel ramanujan fork

prepare for release 1.0.1-beta

add niels fork

eth/tracers: revert reason in call_tracer + error for failed internal calls (#21387)

* tests: add testdata of call tracer

* eth/tracers: return revert reason in call_tracer

* eth/tracers: regenerate assets

* eth/tracers: add error message even if no exec occurrs, fixes #21438

Co-authored-by: Martin Holst Swende <[email protected]>

remove disclaim

prepare for release 1.0.2

R4R: add max gas allwance calculation (bnb-chain#36)

* calculate max gas allwance

* return error for missing from

prepare release 1.0.3

use fixed gas price since bsc network is idle

upgrade to golang1.15.5

Disable noisy log from consensus engine

Hide some smart contract tracing logs from parlia consensus engine

Create PULL_REQUEST_TEMPLATE

add change log for release v1.0.4

add curl in docker image

les: fix GetProofsV2 bug (#21896)

fix potential deadlock of pub/sub module

add rpc method request gauge

add x-forward-for message in log

support fork id in header; elegant upgrade

avoid false warn log

consensus/ethash: use 64bit indexes for the DAG generation (#21793)

* Bit boundary fix for the DAG generation routine

* Fix unnecessary conversion warnings

Co-authored-by: Sergey Pavlov <[email protected]>

signer/storage: fix a badly ordered error check (#21379)

core: fix txpool off-by-one error (#21683)

internal/ethapi: fix nil deref + fix estimateGas console bindings (#21601)

* tried to fix

* fix for js api

* fix for nil pointer ex

* rev space

* rev space

* input call formatter

rpc: fix issue with null JSON-RPC messages (#21497)

accounts/abi: fix a bug in getTypeSize method (#21501)

* accounts/abi: fix a bug in getTypeSize method

e.g. for "Tuple[2]" type, the element of the array is a tuple type and the size of the tuple may not be 32.

* accounts/abi: add unit test of getTypeSize method

p2p/enode: avoid crashing for invalid IP (#21981)

The database panicked for invalid IPs. This is usually no problem
because all code paths leading to node DB access verify the IP, but it's
dangerous because improper validation can turn this panic into a DoS
vulnerability. The quick fix here is to just turn database accesses
using invalid IP into a noop. This isn't great, but I'm planning to
remove the node DB for discv5 long-term, so it should be fine to have
this quick fix for half a year.

Fixes #21849

p2p/discover: fix deadlock in discv5 message dispatch (#21858)

This fixes a deadlock that could occur when a response packet arrived
after a call had already received enough responses and was about to
signal completion to the dispatch loop.

Co-authored-by: Felix Lange <[email protected]>

R4R: apply mirror sync upgrade (bnb-chain#56)

* apply mirror sync upgrade

remove 0x

update rialto genesis hash

update tokenhub code

* update tokenhub code

* update relayer incentive contract code

* update upgrade height and remove mainnet upgrade

prepare for release v1.0.5 (bnb-chain#64)

[R4R]appay mirror/sync fork to main-net; release for 1.0.6 (bnb-chain#68)

* appay mirror/sync fork to main-net; release for 1.0.6

* fix upgrade do not work

change the fork waring to debug to avoid confusion (bnb-chain#73)

add jq to docker file (bnb-chain#84)

add tini for docker image (bnb-chain#90)

Co-authored-by: swift.du <[email protected]>

add directbroadcast flag (bnb-chain#99)

limit range get log

R4R: add batch query methods (bnb-chain#115)

* add batch query method

* GetTransactionDataAndReceipt

* add new rpc to goclient

* fix web3 console

* rename tx_data to txData

[R4R]apply max commit tx time for miner worker (bnb-chain#112)

* apply max commit tx time for miner worker

* update to 200 ms

validator only write database state when enough distance (bnb-chain#116)

add health check endpoint (bnb-chain#120)

prepare for release v1.0.7

update receiptsCacheLimit to 10000
swlfigo added a commit to swlfigo/bsc-official that referenced this pull request Jun 12, 2023
redhdx added a commit to redhdx/bsc that referenced this pull request May 30, 2024
* builder: implement BEP322 builder-api (bnb-chain#7)

* feat: mev-builder

* consesus: add a interface to set validator at runtime
* core/txpool: add bundlepool to maintain bundle txs
* core/type: define bundle
* internal/ethapi: add sendBundle, bundlePrice, unregis
* ethclient: add SendBundle
* miner: add fillTransacitonsAndBundles, add Bidder to sendBid to validators
* add README.builder.md
---------

Co-authored-by: raina <[email protected]>

* fix: index out of range (bnb-chain#10)

* feat: call mev_params before send bid (bnb-chain#12)

* fix: NPE and wrong profit (bnb-chain#13)

* doc: update README.builder.md (bnb-chain#14)

* fix: concurrent map write issue (bnb-chain#15)

* fix: wrongly switch sync mode from full sync to snap sync issue (bnb-chain#17)

* fix: add missing part when preparing env in `SimulateBundle` (bnb-chain#19)

* feat: sendBundle return bundle hash (bnb-chain#20)

* fix: some builder issues (bnb-chain#22)

* fix: allow fast node to rewind after abnormal shutdown (bnb-chain#2401)

(cherry picked from commit fb435eb)

* fix: bundlepool concurrent read and write and commit blob tx issue

* feat: set MaxBundleAliveBlock as bundle's default ddl

---------

Co-authored-by: buddho <[email protected]>
Co-authored-by: irrun <[email protected]>

* fix: typo in `BundlePool.AllBundles` (bnb-chain#24)

* feat: add `reconnectLoop` for mev validators (bnb-chain#25)

* feat: add `reconnectLoop` for mev validators

* fix lint issue

* fix review comments

* fix review comments

* feat: ethclient of bundle (bnb-chain#23)

* fix: a nil pointer when query bundle price (bnb-chain#28)

* feat: set unrevertible tx hashes when sendBid

---------

Co-authored-by: Roshan <[email protected]>
Co-authored-by: raina <[email protected]>
Co-authored-by: Roshan <[email protected]>
Co-authored-by: buddho <[email protected]>
Co-authored-by: zoro <[email protected]>
baixuexue123 pushed a commit to baixuexue123/bsc that referenced this pull request Jun 14, 2024
galaio pushed a commit to galaio/bsc that referenced this pull request Jul 31, 2024
This commit squashes the op-geth fork history into a more maintainable
diff for rebasing upon upstream geth.

reference-optimistic-geth changes (origins of op-geth in early Bedrock
development stage):
- Deposit TX Type
- Enable deposit tx in EVM/tx pool
- Change deposit nonce to not be the max nonce
- Extend PayloadAttributesV1 with a Transactions field
- Force deposits at the start of each L2 block
- Fix height check
- noTxPool flag, reproduce block in verifier mode without tx pool interference
- Fix RPC json marshalling (ref op-geth PR 4)
- Deposit txs block height check in block body validation (ref op-geth PR 5)
- core: do not try to reinject deposit txs into tx-pool (ref-op-geth PR 6)
- deposit source hash field instead of L2 block height and tx index combination
- Include invalid deposits, rewind state, but always persist mint (bnb-chain#10)
- Provide gas to Call/Create in deposit transactions (bnb-chain#12)
- Add docker builds (ref-op-geth PR 16, 17)
- Don't panic on deposit transaction signature values or chain ID (ref-op-geth PR 18)
- core: Add version to DepositTx (ref-op-geth PR 19)
- Enable Geth build/lint/test in CircleCI (ref-op-geth PR 23)
- core: Include guaranteed gas in the gas pool (ref-op-geth PR 21)
- core: handle base fee, l1 availability fee, tx fee (ref-op-geth PR 27)
- fix: deposit tx hash
- fix l1 fee cache, rpc, tracing and tx pool
- core: remove deposit-tx sub-type (a.k.a. deposit version byte)
- eth/catalyst: allow engine user to reorg own chain
- miner: restore ability to reorg deep as block builder
- params: print Optimism consensus type in banner
- core/types: remove unused protected() method, see upstream PR 23376
- core: do not mutate original balance value in tx pool l1 cost adjustment
- core: subtract deposit gas from pool, so other txs do not use the same gas. And fail tx processing if deposits reach gas limit
- core/types: deposits do not tip, avoid basefee subtraction
- Unmeter the L1 Attributes Transaction
- miner: handle force tx errors as critical, clean up diff
- ci: Switch branch
- eth,miner: return STATUS_INVALID when failing to process forced transactions in request (ref-op-geth PR 40)
- verifier: forward tx to sequencer based on flag
- txpool: add flag to disable tx gossip (ref-op-geth PR 42)
- Add op-geth version in addition to geth version (ref-op-geth PR 43)
- ci: CircleCI improvements (ref-op-geth PR 44)
- Rename to op-geth
- Build latest tag on optimism branch

op-geth changes:
- Expose cache config in simulated backend (bnb-chain#2)
- Add EIP-1559 parameters
- eth/catalyst: update payload id computation (bnb-chain#1)
- make eip1559 configurable (bnb-chain#4)
- post-merge network should not log warnings about missing transition information (bnb-chain#5)
- Make the simulator more configurable (bnb-chain#6)
- fix OPB-6 - IsDepositTx check instead of artificial nonce value check (bnb-chain#7)
- Simulated backend - enable proof of stake consensus type and fix performance issue (bnb-chain#8)
- accounts: simulated backend consensus engine option and immediate tx indexing
- consensus/beacon: recognize all blocks as reached TTD with 0 TTD in chain config
- Add --rollup.historicalhttp CLI flag and fix backend iface
- Flags and interfaces for historical RPC requests (bnb-chain#12)
- Redirect historical RPC requests (bnb-chain#13)
- Use the pre-existing ethereum.NotFound error (bnb-chain#18)
- Add historical endpoint to TraceBlockByNumber and TraceBlockByHash (bnb-chain#19)
- Add historical endpoint to TraceTransaction (bnb-chain#20)
- Add historical endpoint to TraceCall (bnb-chain#21)
- optimism: fee params from info txi, update l1 cost func GPO params read (bnb-chain#15)
- add hardcoded addresses for fee payouts (bnb-chain#23)
- dynamic gas limit via engine API (bnb-chain#22)

Co-authored-by: Matthew Slipper <[email protected]>
Co-authored-by: Joshua Gutow <[email protected]>
Co-authored-by: protolambda <[email protected]>
Co-authored-by: Mark Tyneway <[email protected]>
Co-authored-by: Maurelian <[email protected]>
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.

None yet

3 participants