Main article
Lorentz is an upgrade hardfork on the BNB Smart Chain mainnet that activates on April 29, 2025.
Lorentz introduces one single change: BEP-520: Short Block Interval Phase One: 1.5 seconds
Chainstack nodes are Lorentz-ready Chainstack nodes are prepared for the Lorentz network upgrade.
Here’s what you need to know:
Block time halved from 3 seconds to 1.5 seconds
Gas limit per block halved from 140 million to 70 million
Epoch extended from 200 blocks to 500 blocks
Consecutive block validation per validator increased from 4 blocks to 8 blocks
The most important changes that may affect you as a dApp developer are gas limit per block and faster block times.
The gas limit per block is an obvious one—slashing 140 million gas to 70 million gas means you can fit fewer heavy compute transactions in a block.
Now let’s focus on faster block times
1.5 second block time
Going from 3 seconds to 1.5 seconds means you will need to be ingesting the blocks at 2x the pre-fork speed. Chainstack infrastructure is handling the nodes, so just make sure your client-side service is ready for that.
Now let’s have a look at the block structure.
Lorentz block structure
Compare post-fork and post-node-upgrade:
"baseFeePerGas" : "0x0" ,
"blobGasUsed" : "0x0" ,
"difficulty" : "0x2" ,
"excessBlobGas" : "0x0" ,
"extraData" : "0xd883010509846765746888676f312e32332e37856c696e7578000000c011f0d2f8b27fb860a72b39a61672bf9410fecd9432d18ab0285d4475cc22583b71cf485b0c35d4109d83576db2dd1244484e36a6d9133f46159499e3db3db964b9dd4b9b2c7e185dbc2e3716df7b77befbd89ee2df8dd3d66c54f4a1fad622e1480dc019e35373c8f84c840303fa92a0db41c2b264c7bf23960962bc8e3d92f3538671c28f705760f0d700b17982d0fc840303fa93a0be106c47b19b9cc0341e36e6635202c3ed9b8548511f5f6c9bff56e9168f41b5801c415589572c27ab7d9ba60074e2148896ec1c10881891a52f43ead9084310fa58d5d44846a51c87a42d0f94194df1dc6e226747a693e64694bf9dce51610cd600" ,
"gasLimit" : "0x42c1d80" ,
"gasUsed" : "0xe464f9" ,
"hash" : "0xe58794d2ee429567b8107cbad4a67eb70929616748c4a0f4d76df436e5c56f6b" ,
"logsBloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" ,
"milliTimestamp" : "0x1965c14398c" ,
"miner" : "0xd447b49cd040d20bc21e49ffea6487f5638e4346" ,
"mixHash" : "0x00000000000000000000000000000000000000000000000000000000000001f4" ,
"nonce" : "0x0000000000000000" ,
"number" : "0x303fa94" ,
"parentBeaconBlockRoot" : "0x0000000000000000000000000000000000000000000000000000000000000000" ,
"parentHash" : "0xbe106c47b19b9cc0341e36e6635202c3ed9b8548511f5f6c9bff56e9168f41b5" ,
"receiptsRoot" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421" ,
"requestsHash" : "0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ,
"sha3Uncles" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" ,
"size" : "0x37f" ,
"stateRoot" : "0x7c7abdcf4b9b0e660e5a3002f9946be0be54b1e99e3208e621598b443f254e37" ,
"timestamp" : "0x6807302f" ,
"totalDifficulty" : "0x6043378" ,
"transactions" : [ ] ,
"transactionsRoot" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421" ,
"uncles" : [ ] ,
"withdrawals" : [ ] ,
"withdrawalsRoot" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"
And pre-fork and pre-node-upgrade:
"baseFeePerGas" : "0x0" ,
"blobGasUsed" : "0x0" ,
"difficulty" : "0x2" ,
"excessBlobGas" : "0x0" ,
"extraData" : "0xd883010508846765746888676f312e32342e30856c696e7578000000ce18f5d3f8b5831effffb8609291fcd043ec871f0f8c00a11ef5a4e74164698519f3b391ed741010d736594d024b346d36092761a54899cdee613aa5063c028128f9a26884426ae237ea09ff38735645774849ccaf3e644655dcecf65e723ea971cb7aeeab8a25dd1185fa52f84c8402e52cffa04a0bda48a3d029c68c6663306c341213aad0ba3ff5d16f8c3251a59895641b4a8402e52d00a05e4a10dd4dcaa30a1eb6c194ae42abbda4f49632a0bbd37e4d6b48b45c9093f48030faf0179c11484aa23403d9619926beda9cb93ea4fc6e40e5e03ab46b64839b2474871bc03cd01bb57497c3fd7c97af75a42f7095dda366761ec21014bdb6df01" ,
"gasLimit" : "0x8583b00" ,
"gasUsed" : "0xe464f9" ,
"hash" : "0xe58794d2ee429567b8107cbad4a67eb70929616748c4a0f4d76df436e5c56f6b" ,
"logsBloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" ,
"miner" : "0xd447b49cd040d20bc21e49ffea6487f5638e4346" ,
"mixHash" : "0x0000000000000000000000000000000000000000000000000000000000000000" ,
"nonce" : "0x0000000000000000" ,
"number" : "0x303fa94" ,
"parentBeaconBlockRoot" : "0x0000000000000000000000000000000000000000000000000000000000000000" ,
"parentHash" : "0xbe106c47b19b9cc0341e36e6635202c3ed9b8548511f5f6c9bff56e9168f41b5" ,
"receiptsRoot" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421" ,
"sha3Uncles" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" ,
"size" : "0x37f" ,
"stateRoot" : "0x7c7abdcf4b9b0e660e5a3002f9946be0be54b1e99e3208e621598b443f254e37" ,
"timestamp" : "0x6807302f" ,
"totalDifficulty" : "0x6043378" ,
"transactions" : [ ] ,
"transactionsRoot" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421" ,
"uncles" : [ ] ,
"withdrawalsRoot" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"
Field Pre-fork (v1.5.7) Post-fork (v1.5.11 / Lorentz) Comment gasLimit
140,000,000 gas (0x8583b00) 70,000,000 gas (0x42c1d80) Block gas limit is halved, but blocks are produced twice as often (every 1.5s instead of 3s). This maintains the same overall throughput while improving transaction confirmation times. milliTimestamp
Not present Added (e.g., 0x1965c14398c) Introduced by BEP-520 to support 1.5-second block spacing without breaking the EVM’s second-based timestamp system. mixHash
All zeros (unused in PoSA; legacy field from PoW) Low 2 bytes contain sub-second remainder (0x01f4 = 500ms, 0x0000 = 0ms, etc.) Allows clients to reconstruct the full millisecond timestamp while maintaining the same header size. requestsHash
Not present Present (e3b0…b855 = empty SHA-256) Introduced in EIP-7685 and implemented on BSC as part of BEP-466 and exposed with the upgrade node version.
Let’s have a look at milliTimestamp
.
The milliTimestamp
field is introduced to keep the original timestamp
in integer seconds. With the switch from 3 seconds to 1.5 seconds, the value becomes more granular, allowing for precise millisecond-level timing while maintaining backward compatibility with the existing second-based timestamp system.
The original timestamp
value is preserved post-fork, and the previously unused mixHash
value now contains the last bytes of the sub-second timestamp to complement the original timestamp
value.
This means you can retrieve the post-fork block timestamp either via the milliTimestamp
field or via the timestamp
+ mixHash
calculation.
The timestamp
+ mixHash
calculation algorithm:
1. Convert timestamp to decimal seconds: 0x6807302f
> 1745301551 s
2. Multiply by 1000 to get milliseconds: 1745301551 × 1000 > 1745301551000 ms
3. Extract the ms remainder from mixHash
: 0x…01f4
> 0x1f4
> 500 ms
4. Add them together: 1745301551000 + 500 > 1745301551500 ms
5. Convert back to hex if desired 0x1965c14398c
Or in Python:
timestamp = int ( "0x6807302f" , 16 )
ms = int ( "0x1f4" , 16 )
milli_ts = timestamp * 1000 + ms
hex ( milli_ts)
And there you have it. Unless your service heavily relies on block numbers or block timestamps, you don’t have much to worry about.
About the author
Ake Director of Developer Experience @ Chainstack
Talk to me all things Web3
20 years in technology | 8+ years in Web3 full time years experience
Trusted advisor helping developers navigate the complexities of blockchain infrastructure