Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
df771dc
metrics: add more peer, block/vote metrics (#2933)
galaio Mar 5, 2025
3f5cfc5
cmd/geth: add example for `geth bls account generate-proof` (#2938)
buddh0 Mar 12, 2025
204ae1c
metrics: add more block/vote stats; (#2949)
galaio Mar 12, 2025
09e56d9
go.mod: update crypto to solve CVE-2025-22869 (#2948)
buddh0 Mar 12, 2025
be727f4
BEP-520: Short Block Interval Phase One: 1.5 seconds (#2932)
buddh0 Mar 14, 2025
849bfe0
pbs: enable GreedyMergeTx by default (#2955)
zzzckck Mar 18, 2025
328de50
pbs: enable GreedyMergeTx by default (#2955)
zzzckck Mar 18, 2025
f06d86b
build(deps): bump golang.org/x/net from 0.34.0 to 0.36.0 (#2951)
dependabot[bot] Mar 18, 2025
b83c606
pbs: fix a inaccurate bid result log (#2959)
zzzckck Mar 18, 2025
9967a29
pool: debug log instead of warn (#2960)
emailtovamos Mar 19, 2025
530e8d3
miner: stop GreedyMergeTx before worker picking bids (#2957)
buddh0 Mar 19, 2025
4e1e994
build(deps): bump golang.org/x/net from 0.34.0 to 0.36.0 (#2951)
dependabot[bot] Mar 18, 2025
3be156e
go.mod: go mod tidy
zzzckck Mar 19, 2025
185a241
metric: add more block monitor metrics; (#2961)
galaio Mar 19, 2025
af2e1ad
fix: gas compare in bid simulator (#2967)
irrun Mar 21, 2025
082b26f
fix: gas compare in bid simulator (#2967)
irrun Mar 21, 2025
0d07985
mev: no interrupt if it is too later (#2971)
zzzckck Mar 22, 2025
488fe1c
miner: add metrics for bid simulation (#2974)
buddh0 Mar 22, 2025
9f1f714
release: prepare for release v1.5.8 (#2972)
zzzckck Mar 22, 2025
294c732
mev: some code improvements (#2976)
zzzckck Mar 23, 2025
0753de7
build(deps): bump github.com/golang-jwt/jwt/v4 from 4.5.1 to 4.5.2 (#…
dependabot[bot] Mar 24, 2025
c5b4bbd
chore: remove redundant words in comment (#2968)
wellweek Mar 24, 2025
56d17b8
Merge tag 'v1.5.8' into develop
buddh0 Mar 25, 2025
f1b8e0b
Merge pull request #2983 from buddh0/merge-v1.5.8
zzzckck Mar 25, 2025
6b9d4cf
refactor: replace golang.org/x/exp with stdlib (#2943)
StevenMia Mar 25, 2025
e1a22cf
config: update BSC Testnet hardfork time: Lorentz (#2991)
zzzckck Mar 25, 2025
0eb6b5a
core/state: fix concurrent map read and write for stateUpdate.account…
buddh0 Mar 25, 2025
dcd4806
core/systemcontracts: update url for lorentz hardfork (#2992)
buddh0 Mar 25, 2025
e14751f
cmd/jsutils: add tool GetMevStatus (#2993)
buddh0 Mar 26, 2025
1d98244
release: prepare for release v1.5.9 (#2988)
zzzckck Mar 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,37 @@
# Changelog
## v1.5.9
### FEATURE
[\#2932](https://github.com/bnb-chain/bsc/pull/2932) BEP-520: Short Block Interval Phase One: 1.5 seconds
[\#2991](https://github.com/bnb-chain/bsc/pull/2991) config: update BSC Testnet hardfork time: Lorentz

### BUGFIX
[\#2990](https://github.com/bnb-chain/bsc/pull/2990) core/state: fix concurrent map read and write for stateUpdate.accounts

### IMPROVEMENT
[\#2933](https://github.com/bnb-chain/bsc/pull/2933) metrics: add more peer, block/vote metrics
[\#2938](https://github.com/bnb-chain/bsc/pull/2938) cmd/geth: add example for geth bls account generate-proof
[\#2949](https://github.com/bnb-chain/bsc/pull/2949) metrics: add more block/vote stats;
[\#2948](https://github.com/bnb-chain/bsc/pull/2948) go.mod: update crypto to solve CVE-2025-22869
[\#2960](https://github.com/bnb-chain/bsc/pull/2960) pool: debug log instead of warn
[\#2961](https://github.com/bnb-chain/bsc/pull/2961) metric: add more block monitor metrics;
[\#2992](https://github.com/bnb-chain/bsc/pull/2992) core/systemcontracts: update url for lorentz hardfork
[\#2993](https://github.com/bnb-chain/bsc/pull/2993) cmd/jsutils: add tool GetMevStatus

## v1.5.8
### FEATURE
* [\#2955](https://github.com/bnb-chain/bsc/pull/2955) pbs: enable GreedyMergeTx by default

### BUGFIX
* [\#2967](https://github.com/bnb-chain/bsc/pull/2967) fix: gas compare in bid simulator

### IMPROVEMENT
* [\#2951](https://github.com/bnb-chain/bsc/pull/2951) bump golang.org/x/net from 0.34.0 to 0.36.0
* [\#0000](https://github.com/bnb-chain/bsc/pull/0000) golang: upgrade toolchain to v1.23.0 (commit:3be156eec)
* [\#2957](https://github.com/bnb-chain/bsc/pull/2957) miner: stop GreedyMergeTx before worker picking bids
* [\#2959](https://github.com/bnb-chain/bsc/pull/2959) pbs: fix a inaccurate bid result log
* [\#2971](https://github.com/bnb-chain/bsc/pull/2971) mev: no interrupt if it is too later
* [\#2974](https://github.com/bnb-chain/bsc/pull/2974) miner: add metrics for bid simulation

## v1.5.7
v1.5.7 conduct small upstream code merge to follow the latest pectra hard fork and apply some bug fix. There are two PR for the code merge:
* [\#2897](https://github.com/bnb-chain/bsc/pull/2897) upstream: merge tag 'geth-v1.15.1' into bsc-develop
Expand Down
1 change: 1 addition & 0 deletions cmd/geth/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,7 @@ func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) {
}
if ctx.IsSet(utils.OverrideMinBlocksForBlobRequests.Name) {
params.MinBlocksForBlobRequests = ctx.Uint64(utils.OverrideMinBlocksForBlobRequests.Name)
params.MinTimeDurationForBlobRequests = uint64(float64(params.MinBlocksForBlobRequests) * 1.5 /*lorentzBlockInterval*/)
}
if ctx.IsSet(utils.OverrideDefaultExtraReserveForBlobRequests.Name) {
params.DefaultExtraReserveForBlobRequests = ctx.Uint64(utils.OverrideDefaultExtraReserveForBlobRequests.Name)
Expand Down
9 changes: 6 additions & 3 deletions cmd/geth/testdata/bls-account-usage-demo.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,13 @@ ${workspace}/build/bin/geth bls account list --blspassword ./bls-password.txt -

echo "4. import a bls account by passing a keystore file------------------------------------------"
keystoreFile=`ls bls1/bls/keystore`
${workspace}/build/bin/geth bls account import --importedaccountpassword ./bls-password1.txt --blspassword ./bls-password.txt --datadir ./bls ./bls1/bls/keystore/${keystoreFile}
${workspace}/build/bin/geth bls account list --blspassword ./bls-password.txt --datadir ./bls
${workspace}/build/bin/geth bls account import --importedaccountpassword ./bls-password1.txt --blspassword ./bls-password.txt --datadir ./bls ./bls1/bls/keystore/${keystoreFile}
publicKey=`${workspace}/build/bin/geth bls account list --blspassword ./bls-password.txt --datadir ./bls |grep public | tail -1 | awk '{print $NF}'`

echo "5. generate ownership proof for the selected BLS account from the BLS wallet----------------"
${workspace}/build/bin/geth bls account generate-proof --blspassword ./bls-password.txt --datadir ./bls --chain-id 56 0x04d63aBCd2b9b1baa327f2Dda0f873F197ccd186 ${publicKey}

echo "5. clearup----------------------------------------------------------------------------------"
echo "6. clearup----------------------------------------------------------------------------------"
rm -rf bls
rm -rf bls1
rm -rf bls-password.txt
Expand Down
110 changes: 105 additions & 5 deletions cmd/jsutils/getchainstatus.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ function printUsage() {
console.log(" GetBlobTxs: get BlobTxs of a block range");
console.log(" GetFaucetStatus: get faucet status of BSC testnet");
console.log(" GetKeyParameters: dump some key governance parameter");
console.log(" GetMevStatus: get mev blocks of a block range");
console.log("\nOptions:");
console.log(" --rpc specify the url of RPC endpoint");
console.log(" --startNum the start block number");
Expand All @@ -43,6 +44,7 @@ function printUsage() {
console.log(" node getchainstatus.js GetFaucetStatus --rpc https://bsc-testnet-dataseed.bnbchain.org --startNum 40000001 --endNum 40000010")
console.log(" node getchainstatus.js GetKeyParameters --rpc https://bsc-testnet-dataseed.bnbchain.org") // default: latest block
console.log(" node getchainstatus.js GetEip7623 --rpc https://bsc-testnet-dataseed.bnbchain.org --startNum 40000001 --endNum 40000010")
console.log(" node getchainstatus.js GetMevStatus --rpc https://bsc-testnet-dataseed.bnbchain.org --startNum 40000001 --endNum 40000010")
}

program.usage = printUsage;
Expand Down Expand Up @@ -162,7 +164,38 @@ const validatorMap = new Map([
["0xfA4d592F9B152f7a10B5DE9bE24C27a74BCE431A","MyTWFMM"]
]);


const builderMap = new Map([
// BSC mainnet
// blockrazor
["0x5532CdB3c0c4278f9848fc4560b495b70bA67455", "blockrazor dublin"],
["0xBA4233f6e478DB76698b0A5000972Af0196b7bE1", "blockrazor frankfurt"],
["0x539E24781f616F0d912B60813aB75B7b80b75C53", "blockrazor nyc"],
["0x49D91b1Ab0CC6A1591c2e5863E602d7159d36149", "blockrazor relay"],
["0x50061047B9c7150f0Dc105f79588D1B07D2be250", "blockrazor tokyo"],
["0x0557E8CB169F90F6eF421a54e29d7dd0629Ca597", "blockrazor virginia"],
["0x488e37fcB2024A5B2F4342c7dE636f0825dE6448", "blockrazor x"],
// puissant
["0x48a5Ed9abC1a8FBe86ceC4900483f43a7f2dBB48", "puissant ap"],
["0x487e5Dfe70119C1b320B8219B190a6fa95a5BB48", "puissant eu"],
["0x48FeE1BB3823D72fdF80671ebaD5646Ae397BB48", "puissant us"],
["0x48B4bBEbF0655557A461e91B8905b85864B8BB48", "puissant x"],
["0x4827b423D03a349b7519Dda537e9A28d31ecBB48", "puissant y"],
["0x48B2665E5E9a343409199D70F7495c8aB660BB48", "puissant:z"],
// blockroute
["0xD4376FdC9b49d90e6526dAa929f2766a33BFFD52", "blockroute dublin"],
["0x2873fc7aD9122933BECB384f5856f0E87918388d", "blockroute frankfurt"],
["0x432101856a330aafdeB049dD5fA03a756B3f1c66", "blockroute japan"],
["0x2B217a4158933AAdE6D6494e3791D454B4D13AE7", "blockroute nyc"],
["0x0da52E9673529b6E06F444FbBED2904A37f66415", "blockroute relay"],
["0xE1ec1AeCE7953ecB4539749B9AA2eEF63354860a", "blockroute singapore"],
["0x89434FC3a09e583F2cb4e47A8B8fe58De8BE6a15", "blockroute virginia"],
["0x10353562E662E333C0c2007400284e0e21cF74fF", "blockroute x"],
// txboost
["0x6Dddf681C908705472D09B1D7036B2241B50e5c7", "puissant ap"],
["0x76736159984AE865a9b9Cc0Df61484A49dA68191", "puissant eu"],
["0x5054b21D8baea3d602dca8761B235ee10bc0231E", "puissant us"],
// Chapel
]);

// 1.cmd: "GetMaxTxCountInBlockRange", usage:
// node getchainstatus.js GetMaxTxCountInBlockRange --rpc https://bsc-testnet-dataseed.bnbchain.org \
Expand Down Expand Up @@ -347,7 +380,7 @@ async function getPerformanceData() {
if (difficulty == 2) {
inturnBlocks += 1
}
let timestamp = eval(eval(header.timestamp).toString(10))
let timestamp = eval(eval(header.milliTimestamp).toString(10))
if (parliaEnabled) {
let justifiedNumber = await provider.send("parlia_getJustifiedNumber", [ethers.toQuantity(i)]);
if (justifiedNumber + 1 == i) {
Expand All @@ -363,11 +396,11 @@ async function getPerformanceData() {

let startHeader = await provider.send("eth_getHeaderByNumber", [
ethers.toQuantity(program.startNum)]);
let startTime = eval(eval(startHeader.timestamp).toString(10))
let startTime = eval(eval(startHeader.milliTimestamp).toString(10))
let endHeader = await provider.send("eth_getHeaderByNumber", [
ethers.toQuantity(program.endNum)]);
let endTime = eval(eval(endHeader.timestamp).toString(10))
let timeCost = endTime - startTime
let endTime = eval(eval(endHeader.milliTimestamp).toString(10))
let timeCost = (endTime - startTime)/1000
let avgBlockTime = timeCost/blockCount
let inturnBlocksRatio = inturnBlocks/blockCount
let justifiedBlocksRatio = justifiedBlocks/blockCount
Expand Down Expand Up @@ -550,6 +583,71 @@ async function getEip7623() {
console.log(`Script executed in: ${duration} seconds`);
}

// 10.cmd: "getMevStatus", usage:
// node getchainstatus.js GetMeVStatus \
// --rpc https://bsc-testnet-dataseed.bnbchain.org \
// --startNum 40000001 --endNum 40000005
async function getMevStatus() {
let localCount = 0
let blockrazorCount = 0
let puissantCount = 0
let blockrouteCount = 0
let txboostCount = 0
var startBlock = parseInt(program.startNum)
var endBlock = parseInt(program.endNum)
if (isNaN(endBlock) || isNaN(startBlock) || startBlock == 0) {
console.error("invalid input, --startNum", program.startNum, "--end", program.endNum)
return
}
// if --endNum is not specified, set it to the latest block number.
if (endBlock == 0) {
endBlock = await provider.getBlockNumber();
}
if (startBlock > endBlock) {
console.error("invalid input, startBlock:", startBlock, " endBlock:", endBlock);
return
}

for (let i = startBlock; i <= endBlock; i++) {
let blockData = await provider.getBlock(i);
let miner = validatorMap.get(blockData.miner)
const payBidTxReverseIdxMax = 3
let mevBlock = false
for (let idx = 0; idx <= payBidTxReverseIdxMax && blockData.transactions.length - 1 - idx >= 0; idx++) {
var txIndex = blockData.transactions.length - 1 - idx
let txHash = blockData.transactions[txIndex]
let txData = await provider.getTransaction(txHash);
if (builderMap.has(txData.to)) {
let builder = builderMap.get(txData.to)
if (builder.search("blockrazor") != -1) {
blockrazorCount++
} else if (builder.search("puissant") != -1) {
puissantCount++
} else if (builder.search("blockroute") != -1) {
blockrouteCount++
} else if (builder.search("txboost") != -1) {
txboostCount++
}
mevBlock = true
console.log("blockNum:", i, " miner:", miner, " builder:("+builderMap.get(txData.to)+")", txData.to);
break
}
}
if (!mevBlock) {
localCount++
console.log("blockNum:", i, " miner:", miner, " builder:local");
}
}
console.log("Get Mev Status between [", program.startNum, ",", program.endNum, "]");
let total = program.endNum - program.startNum + 1
console.log("total =", total)
console.log("local =", localCount, " ratio =", (localCount / total).toFixed(2))
console.log("blockrazor =", blockrazorCount, " ratio =", (blockrazorCount / total).toFixed(2))
console.log("puissant =", puissantCount, " ratio =", (puissantCount / total).toFixed(2))
console.log("blockroute =", blockrouteCount, " ratio =", (blockrouteCount / total).toFixed(2))
console.log("txboost =", txboostCount, " ratio =", (txboostCount / total).toFixed(2))
};

const main = async () => {
if (process.argv.length <= 2) {
console.error('invalid process.argv.length', process.argv.length);
Expand Down Expand Up @@ -579,6 +677,8 @@ const main = async () => {
await getKeyParameters()
} else if (cmd === "GetEip7623"){
await getEip7623()
} else if (cmd === "GetMevStatus"){
await getMevStatus()
} else {
console.log("unsupported cmd", cmd);
printUsage()
Expand Down
2 changes: 1 addition & 1 deletion common/bidutil/bidutil.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ func BidBetterBefore(parentHeader *types.Header, blockPeriod uint64, delayLeftOv
// BidMustBefore returns the time when the next bid must be received,
// only considering the consensus delay but not bid simulation duration.
func BidMustBefore(parentHeader *types.Header, blockPeriod uint64, delayLeftOver time.Duration) time.Time {
nextHeaderTime := time.Unix(int64(parentHeader.Time+blockPeriod), 0)
nextHeaderTime := time.UnixMilli(int64(parentHeader.MilliTimestamp() + blockPeriod))
nextHeaderTime = nextHeaderTime.Add(-delayLeftOver)
return nextHeaderTime
}
10 changes: 10 additions & 0 deletions common/format.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,3 +80,13 @@ func (t PrettyAge) String() string {
}
return result
}

func FormatMilliTime(n int64) string {
if n < 0 {
return "invalid"
}
if n == 0 {
return ""
}
return time.UnixMilli(n).Format("2006-01-02 15:04:05.000")
}
1 change: 0 additions & 1 deletion consensus/consensus.go
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,5 @@ type PoSA interface {
GetFinalizedHeader(chain ChainHeaderReader, header *types.Header) *types.Header
VerifyVote(chain ChainHeaderReader, vote *types.VoteEnvelope) error
IsActiveValidatorAt(chain ChainHeaderReader, header *types.Header, checkVoteKeyFn func(bLSPublicKey *types.BLSPublicKey) bool) bool
BlockInterval() uint64
NextProposalBlock(chain ChainHeaderReader, header *types.Header, proposer common.Address) (uint64, uint64, error)
}
5 changes: 1 addition & 4 deletions consensus/misc/eip1559/eip1559_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,7 @@ func copyConfig(original *params.ChainConfig) *params.ChainConfig {
func config() *params.ChainConfig {
config := copyConfig(params.TestChainConfig)
config.Ethash = nil
config.Parlia = &params.ParliaConfig{
Period: 3,
Epoch: 200,
}
config.Parlia = &params.ParliaConfig{}
config.LondonBlock = big.NewInt(5)
return config
}
Expand Down
2 changes: 1 addition & 1 deletion consensus/misc/eip4844/eip4844.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ func CalcExcessBlobGas(config *params.ChainConfig, parent *types.Header, headTim
func CalcBlobFee(config *params.ChainConfig, header *types.Header) *big.Int {
var frac uint64
switch config.LatestFork(header.Time) {
case forks.Prague:
case forks.Lorentz, forks.Prague:
frac = config.BlobScheduleConfig.Prague.UpdateFraction
case forks.Cancun:
frac = config.BlobScheduleConfig.Cancun.UpdateFraction
Expand Down
13 changes: 0 additions & 13 deletions consensus/parlia/abi.go
Original file line number Diff line number Diff line change
Expand Up @@ -1501,19 +1501,6 @@ const validatorSetABI = `
],
"stateMutability": "view"
},
{
"type": "function",
"name": "EPOCH",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "ERROR_FAIL_CHECK_VALIDATORS",
Expand Down
Loading