diff --git a/.github/workflows/packager.yml b/.github/workflows/packager.yml index f2aef42485..bad6be092c 100644 --- a/.github/workflows/packager.yml +++ b/.github/workflows/packager.yml @@ -61,6 +61,116 @@ jobs: - name: Copying systemd file run: cp -rp packaging/templates/systemd/bor.service packaging/deb/bor/lib/systemd/system/bor.service + - name: Prepping ${{ env.NETWORK }} ${{ env.NODE }} bootnode for ${{ env.ARCH }} + run: cp -rp packaging/deb/bor packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }} + env: + ARCH: amd64 + NODE: bootnode + NETWORK: mumbai + - name: Putting toml for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/testnet-v4/sentry/sentry/bor/config.toml packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/var/lib/bor/ + env: + ARCH: amd64 + NODE: bootnode + NETWORK: mumbai + - name: Copying the preinst for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/preinst packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/preinst + env: + ARCH: amd64 + NODE: bootnode + NETWORK: mumbai + - name: Copying the postinst for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/postinst.profile packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/postinst + env: + ARCH: amd64 + NODE: bootnode + NETWORK: mumbai + - name: Copying the prerm for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/prerm packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/prerm + env: + ARCH: amd64 + NODE: bootnode + NETWORK: mumbai + - name: Copying the postrm for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/postrm packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/postrm + env: + ARCH: amd64 + NODE: bootnode + NETWORK: mumbai + - name: Copying systemd file for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/systemd/bor_bootnode.service packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/lib/systemd/system/ + env: + ARCH: amd64 + NODE: bootnode + NETWORK: mumbai + - name: Copying profile control file for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/control.profile.amd64 packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/control + env: + ARCH: amd64 + NODE: bootnode + NETWORK: mumbai + - name: Running package build for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: dpkg-deb --build --root-owner-group packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }} + env: + ARCH: amd64 + NODE: bootnode + NETWORK: mumbai + + - name: Prepping ${{ env.NETWORK }} ${{ env.NODE }} bootnode for ${{ env.ARCH }} + run: cp -rp packaging/deb/bor packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }} + env: + ARCH: amd64 + NODE: bootnode + NETWORK: mainnet + - name: Putting toml for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/mainnet-v1/sentry/sentry/bor/config.toml packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/var/lib/bor/ + env: + ARCH: amd64 + NODE: bootnode + NETWORK: mainnet + - name: Copying the preinst for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/preinst packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/preinst + env: + ARCH: amd64 + NODE: bootnode + NETWORK: mainnet + - name: Copying the postinst for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/postinst.profile packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/postinst + env: + ARCH: amd64 + NODE: bootnode + NETWORK: mainnet + - name: Copying the prerm for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/prerm packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/prerm + env: + ARCH: amd64 + NODE: bootnode + NETWORK: mainnet + - name: Copying the postrm for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/postrm packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/postrm + env: + ARCH: amd64 + NODE: bootnode + NETWORK: mainnet + - name: Copying systemd file for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/systemd/bor_bootnode.service packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/lib/systemd/system/ + env: + ARCH: amd64 + NODE: bootnode + NETWORK: mainnet + - name: Copying profile control file for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/control.profile.amd64 packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/control + env: + ARCH: amd64 + NODE: bootnode + NETWORK: mainnet + - name: Running package build for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: dpkg-deb --build --root-owner-group packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }} + env: + ARCH: amd64 + NODE: bootnode + NETWORK: mainnet + - name: Prepping ${{ env.NETWORK }} ${{ env.NODE }} node for ${{ env.ARCH }} run: cp -rp packaging/deb/bor packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }} env: @@ -416,6 +526,116 @@ jobs: - name: Updating the control file to use with the arm64 profile run: cp -rp packaging/templates/package_scripts/control.profile.arm64 packaging/deb/bor/DEBIAN/control + - name: Prepping ${{ env.NETWORK }} ${{ env.NODE }} bootnode for ${{ env.ARCH }} + run: cp -rp packaging/deb/bor packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }} + env: + ARCH: arm64 + NODE: bootnode + NETWORK: mumbai + - name: Putting toml for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/testnet-v4/sentry/sentry/bor/config.toml packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/var/lib/bor/ + env: + ARCH: arm64 + NODE: bootnode + NETWORK: mumbai + - name: Copying the preinst for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/preinst packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/preinst + env: + ARCH: arm64 + NODE: bootnode + NETWORK: mumbai + - name: Copying the postinst for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/postinst.profile packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/postinst + env: + ARCH: arm64 + NODE: bootnode + NETWORK: mumbai + - name: Copying the prerm for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/prerm packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/prerm + env: + ARCH: arm64 + NODE: bootnode + NETWORK: mumbai + - name: Copying the postrm for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/postrm packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/postrm + env: + ARCH: arm64 + NODE: bootnode + NETWORK: mumbai + - name: Copying systemd file for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/systemd/bor_bootnode.service packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/lib/systemd/system/ + env: + ARCH: arm64 + NODE: bootnode + NETWORK: mumbai + - name: Copying profile control file for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/control.profile.amd64 packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/control + env: + ARCH: arm64 + NODE: bootnode + NETWORK: mumbai + - name: Running package build for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: dpkg-deb --build --root-owner-group packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }} + env: + ARCH: arm64 + NODE: bootnode + NETWORK: mumbai + + - name: Prepping ${{ env.NETWORK }} ${{ env.NODE }} bootnode for ${{ env.ARCH }} + run: cp -rp packaging/deb/bor packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }} + env: + ARCH: arm64 + NODE: bootnode + NETWORK: mainnet + - name: Putting toml for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/mainnet-v1/sentry/sentry/bor/config.toml packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/var/lib/bor/ + env: + ARCH: arm64 + NODE: bootnode + NETWORK: mainnet + - name: Copying the preinst for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/preinst packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/preinst + env: + ARCH: arm64 + NODE: bootnode + NETWORK: mainnet + - name: Copying the postinst for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/postinst.profile packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/postinst + env: + ARCH: arm64 + NODE: bootnode + NETWORK: mainnet + - name: Copying the prerm for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/prerm packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/prerm + env: + ARCH: arm64 + NODE: bootnode + NETWORK: mainnet + - name: Copying the postrm for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/postrm packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/postrm + env: + ARCH: arm64 + NODE: bootnode + NETWORK: mainnet + - name: Copying systemd file for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/systemd/bor_bootnode.service packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/lib/systemd/system/ + env: + ARCH: arm64 + NODE: bootnode + NETWORK: mainnet + - name: Copying profile control file for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: cp -rp packaging/templates/package_scripts/control.profile.amd64 packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }}/DEBIAN/control + env: + ARCH: arm64 + NODE: bootnode + NETWORK: mainnet + - name: Running package build for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} + run: dpkg-deb --build --root-owner-group packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }} + env: + ARCH: arm64 + NODE: bootnode + NETWORK: mainnet + - name: Setting up bor for ${{ env.NODE }} on ${{ env.NETWORK }} on ${{ env.ARCH }} run: cp -rp packaging/deb/bor packaging/deb/bor-${{ env.NETWORK }}-${{ env.NODE }}-config_${{ env.GIT_TAG }}-${{ env.ARCH }} env: diff --git a/builder/files/genesis-mainnet-v1.json b/builder/files/genesis-mainnet-v1.json index b01313bd57..d4c89c67f0 100644 --- a/builder/files/genesis-mainnet-v1.json +++ b/builder/files/genesis-mainnet-v1.json @@ -16,6 +16,11 @@ "bor": { "jaipurBlock": 23850000, "delhiBlock": 38189056, + "parallelUniverseBlock": 0, + "indoreBlock": 44934656, + "stateSyncConfirmationDelay": { + "44934656": 128 + }, "period": { "0": 2 }, diff --git a/builder/files/genesis-testnet-v4.json b/builder/files/genesis-testnet-v4.json index 3fc61e2f64..34407a391a 100644 --- a/builder/files/genesis-testnet-v4.json +++ b/builder/files/genesis-testnet-v4.json @@ -17,9 +17,9 @@ "jaipurBlock": 22770000, "delhiBlock": 29638656, "parallelUniverseBlock": 0, - "indoreBlock": 36877056, + "indoreBlock": 37075456, "stateSyncConfirmationDelay": { - "36877056": 128 + "37075456": 128 }, "period": { "0": 2, diff --git a/consensus/bor/bor.go b/consensus/bor/bor.go index 48752ef669..44dd48f867 100644 --- a/consensus/bor/bor.go +++ b/consensus/bor/bor.go @@ -1200,6 +1200,7 @@ func (c *Bor) CommitStates( stateSyncDelay := c.config.CalculateStateSyncDelay(number) to = time.Unix(int64(header.Time-stateSyncDelay), 0) + log.Debug("Post Indore", "lastStateIDBig", lastStateIDBig, "to", to, "stateSyncDelay", stateSyncDelay) } else { lastStateIDBig, err = c.GenesisContractsClient.LastStateId(nil, number-1, header.ParentHash) if err != nil { @@ -1207,6 +1208,7 @@ func (c *Bor) CommitStates( } to = time.Unix(int64(chain.Chain.GetHeaderByNumber(number-c.config.CalculateSprint(number)).Time), 0) + log.Debug("Pre Indore", "lastStateIDBig", lastStateIDBig, "to", to) } lastStateID := lastStateIDBig.Uint64() diff --git a/internal/cli/server/chains/mainnet.go b/internal/cli/server/chains/mainnet.go index b2570e9b2f..3d10dfb3b5 100644 --- a/internal/cli/server/chains/mainnet.go +++ b/internal/cli/server/chains/mainnet.go @@ -29,8 +29,13 @@ var mainnetBor = &Chain{ BerlinBlock: big.NewInt(14750000), LondonBlock: big.NewInt(23850000), Bor: ¶ms.BorConfig{ - JaipurBlock: big.NewInt(23850000), - DelhiBlock: big.NewInt(38189056), + JaipurBlock: big.NewInt(23850000), + DelhiBlock: big.NewInt(38189056), + ParallelUniverseBlock: big.NewInt(0), + IndoreBlock: big.NewInt(44934656), + StateSyncConfirmationDelay: map[string]uint64{ + "44934656": 128, + }, Period: map[string]uint64{ "0": 2, }, diff --git a/internal/cli/server/chains/mumbai.go b/internal/cli/server/chains/mumbai.go index 0e13edc05b..693105b35e 100644 --- a/internal/cli/server/chains/mumbai.go +++ b/internal/cli/server/chains/mumbai.go @@ -32,9 +32,9 @@ var mumbaiTestnet = &Chain{ JaipurBlock: big.NewInt(22770000), DelhiBlock: big.NewInt(29638656), ParallelUniverseBlock: big.NewInt(0), - IndoreBlock: big.NewInt(36877056), + IndoreBlock: big.NewInt(37075456), StateSyncConfirmationDelay: map[string]uint64{ - "36877056": 128, + "37075456": 128, }, Period: map[string]uint64{ "0": 2, diff --git a/internal/cli/server/chains/test_files/chain_legacy_test.json b/internal/cli/server/chains/test_files/chain_legacy_test.json index b67dfd30d5..a9f6a0923a 100644 --- a/internal/cli/server/chains/test_files/chain_legacy_test.json +++ b/internal/cli/server/chains/test_files/chain_legacy_test.json @@ -50,9 +50,9 @@ "jaipurBlock": 22770000, "delhiBlock": 29638656, "parallelUniverseBlock": 0, - "indoreBlock": 36877056, + "indoreBlock": 37075456, "stateSyncConfirmationDelay": { - "36877056": 128 + "37075456": 128 } } }, diff --git a/internal/cli/server/chains/test_files/chain_test.json b/internal/cli/server/chains/test_files/chain_test.json index 5b1f9ada40..e367547b6a 100644 --- a/internal/cli/server/chains/test_files/chain_test.json +++ b/internal/cli/server/chains/test_files/chain_test.json @@ -52,9 +52,9 @@ "jaipurBlock":22770000, "delhiBlock": 29638656, "parallelUniverseBlock": 0, - "indoreBlock": 36877056, + "indoreBlock": 37075456, "stateSyncConfirmationDelay": { - "36877056": 128 + "37075456": 128 } } }, diff --git a/metrics/prometheus/collector.go b/metrics/prometheus/collector.go index 8187f4af02..160b72bde2 100644 --- a/metrics/prometheus/collector.go +++ b/metrics/prometheus/collector.go @@ -27,7 +27,6 @@ import ( var ( typeGaugeTpl = "# TYPE %s gauge\n" - typeCounterTpl = "# TYPE %s counter\n" typeSummaryTpl = "# TYPE %s summary\n" keyValueTpl = "%s %v\n\n" keyCounterTpl = "%s %v\n" @@ -82,11 +81,16 @@ func (c *collector) addMeter(name string, m metrics.Meter) { func (c *collector) addTimer(name string, m metrics.Timer) { pv := []float64{0.5, 0.75, 0.95, 0.99, 0.999, 0.9999} ps := m.Percentiles(pv) - c.writeCounter(name, m.Count()) + + var sum float64 = 0 c.buff.WriteString(fmt.Sprintf(typeSummaryTpl, mutateKey(name))) for i := range pv { c.writeSummaryPercentile(name, strconv.FormatFloat(pv[i], 'f', -1, 64), ps[i]) + sum += ps[i] } + + c.writeSummarySum(name, fmt.Sprintf("%f", sum)) + c.writeSummaryCounter(name, len(ps)) c.buff.WriteRune('\n') } @@ -118,12 +122,6 @@ func (c *collector) writeGaugeCounter(name string, value interface{}) { c.buff.WriteString(fmt.Sprintf(keyValueTpl, name, value)) } -func (c *collector) writeCounter(name string, value interface{}) { - name = mutateKey(name + "_count") - c.buff.WriteString(fmt.Sprintf(typeCounterTpl, name)) - c.buff.WriteString(fmt.Sprintf(keyValueTpl, name, value)) -} - func (c *collector) writeSummaryCounter(name string, value interface{}) { name = mutateKey(name + "_count") c.buff.WriteString(fmt.Sprintf(keyCounterTpl, name, value)) diff --git a/metrics/prometheus/collector_test.go b/metrics/prometheus/collector_test.go index b1cc2aaf89..979fdbc6a3 100644 --- a/metrics/prometheus/collector_test.go +++ b/metrics/prometheus/collector_test.go @@ -80,9 +80,6 @@ test_histogram_count 6 # TYPE test_meter gauge test_meter 9999999 -# TYPE test_timer_count counter -test_timer_count 6 - # TYPE test_timer summary test_timer {quantile="0.5"} 2.25e+07 test_timer {quantile="0.75"} 4.8e+07 @@ -90,6 +87,8 @@ test_timer {quantile="0.95"} 1.2e+08 test_timer {quantile="0.99"} 1.2e+08 test_timer {quantile="0.999"} 1.2e+08 test_timer {quantile="0.9999"} 1.2e+08 +test_timer_sum 550500000.000000 +test_timer_count 6 # TYPE test_resetting_timer summary test_resetting_timer {quantile="0.50"} 12000000 diff --git a/miner/worker.go b/miner/worker.go index 219322362a..c46d0b2c8d 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -599,9 +599,7 @@ func (w *worker) mainLoop(ctx context.Context) { select { case req := <-w.newWorkCh: //nolint:contextcheck - if w.isRunning() { - w.commitWork(req.ctx, req.interrupt, req.noempty, req.timestamp) - } + w.commitWork(req.ctx, req.interrupt, req.noempty, req.timestamp) case req := <-w.getWorkCh: //nolint:contextcheck @@ -988,13 +986,7 @@ func (w *worker) commitTransactions(env *environment, txs *types.TransactionsByP var depsWg sync.WaitGroup - var EnableMVHashMap bool - - if w.chainConfig.Bor.IsParallelUniverse(env.header.Number) { - EnableMVHashMap = true - } else { - EnableMVHashMap = false - } + EnableMVHashMap := false // create and add empty mvHashMap in statedb if EnableMVHashMap { diff --git a/packaging/templates/package_scripts/control b/packaging/templates/package_scripts/control index 8e50843583..4000915de1 100644 --- a/packaging/templates/package_scripts/control +++ b/packaging/templates/package_scripts/control @@ -1,5 +1,5 @@ Source: bor -Version: 0.3.9-stable +Version: 0.4.0 Section: develop Priority: standard Maintainer: Polygon diff --git a/packaging/templates/package_scripts/control.arm64 b/packaging/templates/package_scripts/control.arm64 index 64682b7b31..94c5bf09c0 100644 --- a/packaging/templates/package_scripts/control.arm64 +++ b/packaging/templates/package_scripts/control.arm64 @@ -1,5 +1,5 @@ Source: bor -Version: 0.3.9-stable +Version: 0.4.0 Section: develop Priority: standard Maintainer: Polygon diff --git a/packaging/templates/package_scripts/control.profile.amd64 b/packaging/templates/package_scripts/control.profile.amd64 index 66dc5f4f30..1a285a6af0 100644 --- a/packaging/templates/package_scripts/control.profile.amd64 +++ b/packaging/templates/package_scripts/control.profile.amd64 @@ -1,5 +1,5 @@ Source: bor-profile -Version: 0.3.9-stable +Version: 0.4.0 Section: develop Priority: standard Maintainer: Polygon diff --git a/packaging/templates/package_scripts/control.profile.arm64 b/packaging/templates/package_scripts/control.profile.arm64 index 5c9a9ca472..f1658add4c 100644 --- a/packaging/templates/package_scripts/control.profile.arm64 +++ b/packaging/templates/package_scripts/control.profile.arm64 @@ -1,5 +1,5 @@ Source: bor-profile -Version: 0.3.9-stable +Version: 0.4.0 Section: develop Priority: standard Maintainer: Polygon diff --git a/packaging/templates/package_scripts/control.validator b/packaging/templates/package_scripts/control.validator index dbe6ad6c63..97fc1adcbd 100644 --- a/packaging/templates/package_scripts/control.validator +++ b/packaging/templates/package_scripts/control.validator @@ -1,5 +1,5 @@ Source: bor-profile -Version: 0.3.9-stable +Version: 0.4.0 Section: develop Priority: standard Maintainer: Polygon diff --git a/packaging/templates/package_scripts/control.validator.arm64 b/packaging/templates/package_scripts/control.validator.arm64 index 90da8544e4..f88dd5836d 100644 --- a/packaging/templates/package_scripts/control.validator.arm64 +++ b/packaging/templates/package_scripts/control.validator.arm64 @@ -1,5 +1,5 @@ Source: bor-profile -Version: 0.3.9-stable +Version: 0.4.0 Section: develop Priority: standard Maintainer: Polygon diff --git a/params/config.go b/params/config.go index 599d83bb6c..3a016a8d49 100644 --- a/params/config.go +++ b/params/config.go @@ -353,9 +353,9 @@ var ( JaipurBlock: big.NewInt(22770000), DelhiBlock: big.NewInt(29638656), ParallelUniverseBlock: big.NewInt(0), - IndoreBlock: big.NewInt(36877056), + IndoreBlock: big.NewInt(37075456), StateSyncConfirmationDelay: map[string]uint64{ - "36877056": 128, + "37075456": 128, }, Period: map[string]uint64{ "0": 2, @@ -412,6 +412,11 @@ var ( JaipurBlock: big.NewInt(23850000), DelhiBlock: big.NewInt(38189056), ParallelUniverseBlock: big.NewInt(0), + IndoreBlock: big.NewInt(44934656), + StateSyncConfirmationDelay: map[string]uint64{ + "44934656": 128, + }, + Period: map[string]uint64{ "0": 2, }, diff --git a/params/version.go b/params/version.go index 178c503e94..f1f644eb41 100644 --- a/params/version.go +++ b/params/version.go @@ -21,10 +21,10 @@ import ( ) const ( - VersionMajor = 0 // Major version component of the current release - VersionMinor = 3 // Minor version component of the current release - VersionPatch = 9 // Patch version component of the current release - VersionMeta = "stable" // Version metadata to append to the version string + VersionMajor = 0 // Major version component of the current release + VersionMinor = 4 // Minor version component of the current release + VersionPatch = 0 // Patch version component of the current release + VersionMeta = "" // Version metadata to append to the version string ) var GitCommit string diff --git a/tests/bor/bor_test.go b/tests/bor/bor_test.go index 24c579caad..dd3359cb28 100644 --- a/tests/bor/bor_test.go +++ b/tests/bor/bor_test.go @@ -577,112 +577,90 @@ func TestFetchStateSyncEvents_2(t *testing.T) { require.Equal(t, uint64(6), lastStateID.Uint64()) } -// Abs returns the absolute value of x. -func Abs(x int) int { - if x < 0 { - return -x - } - return x -} - func TestOutOfTurnSigning(t *testing.T) { - log.Root().SetHandler(log.LvlFilterHandler(log.LvlInfo, log.StreamHandler(os.Stderr, log.TerminalFormat(true)))) - fdlimit.Raise(2048) + init := buildEthereumInstance(t, rawdb.NewMemoryDatabase()) + chain := init.ethereum.BlockChain() + engine := init.ethereum.Engine() + _bor := engine.(*bor.Bor) - // Generate a batch of accounts to seal and fund with - faucets := make([]*ecdsa.PrivateKey, 128) - for i := 0; i < len(faucets); i++ { - faucets[i], _ = crypto.GenerateKey() - } + defer _bor.Close() - // Create an Ethash network based off of the Ropsten config - // Generate a batch of accounts to seal and fund with - genesis := InitGenesis(t, faucets, "./testdata/genesis_2val.json", 8) + _, heimdallSpan := loadSpanFromFile(t) + proposer := valset.NewValidator(addr, 10) + heimdallSpan.ValidatorSet.Validators = append(heimdallSpan.ValidatorSet.Validators, proposer) - var ( - stacks []*node.Node - nodes []*eth.Ethereum - enodes []*enode.Node - ) - for i := 0; i < 2; i++ { - // Start the node and wait until it's up - stack, ethBackend, err := InitMiner(genesis, keys[i], true) - if err != nil { - panic(err) - } - defer stack.Close() + // add the block producer + h, ctrl := getMockedHeimdallClient(t, heimdallSpan) + defer ctrl.Finish() - for stack.Server().NodeInfo().Ports.Listener == 0 { - time.Sleep(250 * time.Millisecond) - } - // Connect the node to all the previous ones - for _, n := range enodes { - stack.Server().AddPeer(n) - } - // Start tracking the node and its enode - stacks = append(stacks, stack) - nodes = append(nodes, ethBackend) - enodes = append(enodes, stack.Server().Self()) - } + h.EXPECT().Close().AnyTimes() - // Iterate over all the nodes and start mining - time.Sleep(3 * time.Second) - for _, node := range nodes { - if err := node.StartMining(1); err != nil { - panic(err) + spanner := getMockedSpanner(t, heimdallSpan.ValidatorSet.Validators) + _bor.SetSpanner(spanner) + _bor.SetHeimdallClient(h) + + db := init.ethereum.ChainDb() + block := init.genesis.ToBlock(db) + + setDifficulty := func(header *types.Header) { + if IsSprintStart(header.Number.Uint64()) { + header.Difficulty = big.NewInt(int64(len(heimdallSpan.ValidatorSet.Validators))) } } - for { - - // for block 1 to 8, the primary validator is node0 - blockHeaderVal0 := nodes[0].BlockChain().CurrentHeader() - blockHeaderVal1 := nodes[1].BlockChain().CurrentHeader() - - // we remove peer connection between node0 and node1 - if blockHeaderVal0.Number.Uint64() == 1 { - stacks[0].Server().RemovePeer(enodes[1]) - } - - if blockHeaderVal1.Number.Uint64() == 9 { - break - } - + for i := uint64(1); i < spanSize; i++ { + block = buildNextBlock(t, _bor, chain, block, nil, init.genesis.Config.Bor, nil, heimdallSpan.ValidatorSet.Validators, setDifficulty) + insertNewBlock(t, chain, block) } - // function to get timestamp difference between two nodes of the same blockNumber - timeDiff := func(blockNum int) int { - blockHeaderVal0 := nodes[0].BlockChain().GetHeaderByNumber(uint64(blockNum)) - blockHeaderVal1 := nodes[1].BlockChain().GetHeaderByNumber(uint64(blockNum)) + // insert spanSize-th block + // This account is one the out-of-turn validators for 1st (0-indexed) span + signer := "c8deb0bea5c41afe8e37b4d1bd84e31adff11b09c8c96ff4b605003cce067cd9" + signerKey, _ := hex.DecodeString(signer) + newKey, _ := crypto.HexToECDSA(signer) + newAddr := crypto.PubkeyToAddress(newKey.PublicKey) + expectedSuccessionNumber := 2 - return Abs(int(blockHeaderVal0.Time - blockHeaderVal1.Time)) + parentTime := block.Time() + + setParentTime := func(header *types.Header) { + header.Time = parentTime + 1 } - // check block 10 miner ; expected author is node1 signer - blockHeaderVal0 := nodes[0].BlockChain().GetHeaderByNumber(3) - blockHeaderVal1 := nodes[1].BlockChain().GetHeaderByNumber(3) + const turn = 1 - // check both nodes have the same block 10 - assert.Equal(t, blockHeaderVal0.Difficulty, common.Big2) + setDifficulty = func(header *types.Header) { + header.Difficulty = big.NewInt(int64(len(heimdallSpan.ValidatorSet.Validators)) - turn) + } - // check node0 has block mined by node1 - assert.Equal(t, blockHeaderVal1.Difficulty, common.Big1) + block = buildNextBlock(t, _bor, chain, block, signerKey, init.genesis.Config.Bor, nil, heimdallSpan.ValidatorSet.Validators, setParentTime, setDifficulty) + _, err := chain.InsertChain([]*types.Block{block}) + require.Equal(t, + bor.BlockTooSoonError{Number: spanSize, Succession: expectedSuccessionNumber}, + *err.(*bor.BlockTooSoonError)) - // node seperated at block 1, so at block 3, node0 should be at 3 seconds, and node1 should be at 5( 1 + 2*2 ) seconds - assert.Equal(t, timeDiff(3), 2) + expectedDifficulty := uint64(len(heimdallSpan.ValidatorSet.Validators) - expectedSuccessionNumber - turn) // len(validators) - succession + header := block.Header() - // check block 10 miner ; expected author is node1 signer - blockHeaderVal0 = nodes[0].BlockChain().GetHeaderByNumber(7) - blockHeaderVal1 = nodes[1].BlockChain().GetHeaderByNumber(7) + diff := bor.CalcProducerDelay(header.Number.Uint64(), expectedSuccessionNumber, init.genesis.Config.Bor) + header.Time += diff - // check both nodes have the same block 10 - assert.Equal(t, blockHeaderVal0.Difficulty, common.Big2) + sign(t, header, signerKey, init.genesis.Config.Bor) - // check node0 has block mined by node1 - assert.Equal(t, blockHeaderVal1.Difficulty, common.Big1) + block = types.NewBlockWithHeader(header) - // node seperated at block 1, so at block 7, node0 should be at 7 seconds, and node1 should be at 13( 1 + 2*6 ) seconds - assert.Equal(t, timeDiff(7), 6) + _, err = chain.InsertChain([]*types.Block{block}) + require.NotNil(t, err) + require.Equal(t, + bor.WrongDifficultyError{Number: spanSize, Expected: expectedDifficulty, Actual: 3, Signer: newAddr.Bytes()}, + *err.(*bor.WrongDifficultyError)) + + header.Difficulty = new(big.Int).SetUint64(expectedDifficulty) + sign(t, header, signerKey, init.genesis.Config.Bor) + block = types.NewBlockWithHeader(header) + + _, err = chain.InsertChain([]*types.Block{block}) + require.Nil(t, err) } func TestSignerNotFound(t *testing.T) { @@ -1121,18 +1099,11 @@ func TestJaipurFork(t *testing.T) { res, _ := loadSpanFromFile(t) - currentValidators := []*valset.Validator{valset.NewValidator(addr, 10)} - - spanner := getMockedSpanner(t, currentValidators) + spanner := getMockedSpanner(t, res.Result.ValidatorSet.Validators) _bor.SetSpanner(spanner) for i := uint64(1); i < sprintSize; i++ { - if IsSpanEnd(i) { - currentValidators = res.Result.ValidatorSet.Validators - } - - block = buildNextBlock(t, _bor, chain, block, nil, init.genesis.Config.Bor, nil, currentValidators) - + block = buildNextBlock(t, _bor, chain, block, nil, init.genesis.Config.Bor, nil, res.Result.ValidatorSet.Validators) insertNewBlock(t, chain, block) if block.Number().Uint64() == init.genesis.Config.Bor.JaipurBlock.Uint64()-1 {