Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1032 commits
Select commit Hold shift + click to select a range
b6ae09a
accounts/abi/bind/v2: replace rng in test #33612 (#1964)
gzliudan Jan 27, 2026
2e0e142
params: fix wrong comment #33503 (#1965)
gzliudan Jan 27, 2026
7c5cd0a
core/vm: improved stack swap performance #30249 (#1970)
gzliudan Jan 27, 2026
5190df6
core/vm: use uint64 in Memory for indices everywhere #30252 (#1971)
gzliudan Jan 27, 2026
b1c239d
common, core: fix goimports warning (#1972)
wit765 Jan 27, 2026
1050445
vm: simplify error handling in vm.EVM.create() #30292 (#1973)
gzliudan Jan 27, 2026
ab39386
core/types: fix panic on invalid signature length #33647 (#1979)
gzliudan Jan 27, 2026
b5e617f
internal/debug: add integration with Grafana Pyroscope #33623 (#1983)
gzliudan Jan 29, 2026
0206909
core/txpool/legacypool: add metric for accounts in txpool #33646 (#1980)
gzliudan Jan 29, 2026
ecb0408
core/state: ensure deterministic hook emission order in Finalise #336…
gzliudan Jan 29, 2026
7fd5927
accounts/scwallet: fix panic in decryptAPDU #33606 (#1982)
gzliudan Jan 29, 2026
84aedaa
core/txpool/legacypool: fix stale counter #33653 (#1990)
gzliudan Jan 29, 2026
4768d00
eth/filters, cmd: add config of eth_getLogs address limit #33320 #323…
gzliudan Jan 29, 2026
a74b7e2
core/vm: reuse Memory instances #30137 #33056 (#1974)
gzliudan Jan 29, 2026
222d180
trie: update func `ForEachWithOrder` #27496 #27909 (#1163)
gzliudan Jan 29, 2026
d12f980
trie: remove parameter 'fromLevel' in Prove #27512 (#1165)
gzliudan Jan 29, 2026
e77ac51
all: replace Div/Mul with Rsh/Lsh if possible #29911 (#1966)
gzliudan Jan 29, 2026
7ce60a2
rpc: add a rpc.rangelimit flag #33163 (#1957)
gzliudan Jan 29, 2026
76a5332
common: fix block numbers for EIP-1559 and cancun (#2020)
gzliudan Jan 30, 2026
9cf795c
perf: improve state reader with error handling and committed flag #27…
gzliudan Feb 3, 2026
d749d54
feate(core, trie): add UpdateContractCode to the Trie interface #2747…
gzliudan Feb 5, 2026
a51eaa7
fix(core, trie): revert error removal in (*state.Trie).Commit #27544 …
gzliudan Feb 5, 2026
934c8d0
perf(all): use `big.Int.Sign()` to compare with 0 (#1969)
gzliudan Feb 5, 2026
44b4a51
feat(ethclient): add support for eth_simulateV1 #32856 (#1992)
gzliudan Feb 5, 2026
798b0cd
fix(accounts): not use magic numbers for rpc.BlockNumber (#2016)
gzliudan Feb 5, 2026
1655f80
core/vm: add read only protection for opcodes #33637 (#1984)
gzliudan Feb 5, 2026
d74c23c
perf(core): use uint256 in state #28598 (#1977)
gzliudan Feb 5, 2026
99749a2
feat(crypto): use the ziren keccak precompile and implement ziren kec…
gzliudan Feb 5, 2026
9dba15a
feat(core): implement EIP-7623 increase calldata cost 30946 (#2031)
gzliudan Feb 5, 2026
67a6e34
perf(node, p2p): avoid unnecessary check len of map (#1995)
gzliudan Feb 5, 2026
46765b8
test(node): more linters #24783 (#1996)
gzliudan Feb 5, 2026
5199446
style(node): fix typos (#1997)
gzliudan Feb 5, 2026
acc9371
fix(node): fix HTTP server always force closing #25755 (#1998)
gzliudan Feb 5, 2026
f08ea31
refactor(node): remove unused err var #32398 (#2001)
gzliudan Feb 5, 2026
bfc69a0
add private chain test checkbox (#1989)
wanwiset25 Feb 5, 2026
5340ce7
all: make nodes publish coinbase address to stats server (#1967)
wanwiset25 Feb 5, 2026
9d79d44
fix(p2p): a few minor code inspection fixes #18393 (#2004)
gzliudan Feb 6, 2026
5c2ac4d
refactor(p2p): enable goimports and varcheck linters #16446 (#2005)
gzliudan Feb 6, 2026
6fc4373
style(p2p): changed if-else blocks to conform with golint #16660 (#2006)
gzliudan Feb 6, 2026
59e9c72
styel(p2p): golint updates for this or self warning #16577 (#2007)
gzliudan Feb 6, 2026
70e17f0
fix(p2p): fix websocket log line parsing in exec p2p/simulations adap…
gzliudan Feb 6, 2026
a46e6a9
feat(p2p): ENR updates for discovery v4 compatibility #16679 (#2010)
gzliudan Feb 6, 2026
d8ce54d
feat(p2p): add egress/ingress traffic metrics to discv5 udp transport…
gzliudan Feb 6, 2026
75c05e5
feat(params): start osaka fork #31125 (#2013)
gzliudan Feb 6, 2026
7e12f03
refactor(core): harden SetupGenesisBlock flows (#2019)
gzliudan Feb 6, 2026
29ad6db
ci: validate gofmt, tidy, and generated files before test (#2022)
gzliudan Feb 6, 2026
07ed26f
build: move tidy check to `doTidy()` (#2023)
gzliudan Feb 6, 2026
c25fa8d
docs: udpate solidity version for mainnet (#2024)
gzliudan Feb 6, 2026
2e2d123
chore: add local hook 'make generate' for pre-commit (#2025)
gzliudan Feb 6, 2026
872c124
test(params): move params.V2TestsGasLimit to engine_v2_tests package …
gzliudan Feb 6, 2026
6120def
useful logging (#1986)
wanwiset25 Feb 6, 2026
0a7e7dd
chore: add conventional-pre-commit hook (#2027)
gzliudan Feb 6, 2026
ec78122
ci: improve github pull request template (#2026)
gzliudan Feb 6, 2026
f744e86
feat(core): add ContractCode to the OpContext #30466 (#2030)
gzliudan Feb 6, 2026
e39a523
refactor(all): cleanup the APIs for initializing genesis #25473 #2674…
gzliudan Feb 6, 2026
b53fa6c
skip gaslimit check on genesis block (#1968)
wanwiset25 Feb 9, 2026
81ac9cf
fix(core): fix genesis error in #2019 (#2034)
gzliudan Feb 10, 2026
d7a42cb
refactor(core): clean up EVM environmental structure #31061 (#1985)
gzliudan Feb 10, 2026
cf99bd0
refactor(node): use standalone flock dependency #19376 #26633 (#1993)
gzliudan Feb 10, 2026
42f49e3
test(node): fix flaky jwt-test #30388 (#1999)
gzliudan Feb 10, 2026
e654047
fix(node): fix data race on httpConfig.prefix #32047 (#2000)
gzliudan Feb 10, 2026
b95923e
fix(node): fix vhosts for adminAPI #32488 (#2002)
gzliudan Feb 10, 2026
4f7159b
fix(cmd): fix disabling discovery through config file #33279 (#2003)
gzliudan Feb 10, 2026
7dc82dd
fix(p2p): don't discard reason sent by Disconnect() #16559 (#2009)
gzliudan Feb 10, 2026
ec697dd
core/vm: implement EIP-7939: CLZ opcode #31989 (#2012)
gzliudan Feb 10, 2026
81d0db2
fix(common): fix race condition in countdown timer StopTimer method (…
gzliudan Feb 10, 2026
35d5bbd
fix(core): remove panic when address is not present #30414 (#2029)
gzliudan Feb 10, 2026
85f2beb
refactor(all): move genesis initialization to blockchain #25523 (#2018)
gzliudan Feb 10, 2026
50210d9
refactor(all): remove term whitelist and blacklist (#1994)
gzliudan Feb 10, 2026
cc21093
feat(core): implement EIP-2935 #29465 #30924 (#2033)
gzliudan Feb 12, 2026
e96ec6a
fix(core): remove vm.AccountRef (#2055)
gzliudan Feb 12, 2026
d318152
chore(common): setup EIP-7702 block number for devnet (#2021)
benjamin202410 Feb 12, 2026
07d3c42
fix(trie): no persisted clean trie cache file #27525 (#1170)
gzliudan Feb 13, 2026
398d9b6
refactor(core): make signature of ContractCode hash-independent #2720…
gzliudan Feb 13, 2026
3730370
fix(eth): do system contract processing prior to parallel-tracing #30…
gzliudan Feb 17, 2026
cfca45a
refactor(all): rework EVM constructor #30745 (#2065)
gzliudan Feb 17, 2026
bba58ec
fix(eth): fix state hooks in API #30830 (#2066)
gzliudan Feb 17, 2026
296d612
fix(eth): align traceBlockParallel with Prague parent-hash pre-exec (…
gzliudan Feb 17, 2026
e324a78
fix(consensus): fix private chain initialization (#1987)
wanwiset25 Feb 18, 2026
f77d4e5
test(consensus): add tests for getTCEpochInfo() (#2045)
wanwiset25 Feb 20, 2026
81416e0
fix(consensus): use signer pubkey to check for unique signatures and …
wanwiset25 Feb 20, 2026
9f72080
refactor(core): remove unnecessary parameters #30776 (#2068)
gzliudan Feb 20, 2026
fc6c692
fix(internal): process prague system calls in eth_simulate #31176 (#2…
gzliudan Feb 23, 2026
3211c8e
perf(core): speed up push and interpreter loop #30662 (#2032)
gzliudan Feb 23, 2026
677f923
refactor(all): track state changes in state db #27349 (#1947)
gzliudan Feb 24, 2026
edec80c
refactor(core): make stateobject.create selfcontain #28459 (#2074)
gzliudan Feb 24, 2026
fabfd1c
perf(core): track state change set with account address #27815 (#2076)
gzliudan Feb 24, 2026
d754f36
core/state: remove account reset operation v2 #29520 (#1934)
gzliudan Feb 24, 2026
ff37f85
fix(internal/ethapi): include AuthorizationList in gas estimation cal…
gzliudan Feb 28, 2026
2331549
chore(.gitattributes): enable solidity highlighting on github #16425 …
gzliudan Feb 28, 2026
197735a
fix(cmd): fix wrong flag names in influxdb metrics error messages #33…
gzliudan Feb 28, 2026
6d11ab7
perf(metrics): reduce allocations for metrics #33699 (#2037)
gzliudan Feb 28, 2026
7fce11d
fix(metrics): add missing ResettingTimer case in GetAll() #33749 (#2038)
gzliudan Feb 28, 2026
466e368
fix(internal): fix error code for revert in eth_simulateV1 #33007 (#2…
gzliudan Feb 28, 2026
f781cee
feat(rlp): add RawList for working with un-decoded lists #33755 (#2040)
gzliudan Feb 28, 2026
11471fd
fix(metrics): add missing GaugeInfo case in GetAll() #33748 (#2041)
gzliudan Feb 28, 2026
240b318
feat(core): extends tracing.Hooks with OnSystemCallStartV2 #30786 (#2…
gzliudan Feb 28, 2026
3367939
chore(version): update version to v2.7.0-devnet (#2058)
gzliudan Feb 28, 2026
3454841
fix(core): hex encode validators/validator/penalties in Header JSON (…
gzliudan Feb 28, 2026
906efdd
chore(p2p): changes necessary by swarm-network-rewrite #16898 (#2051)
gzliudan Feb 28, 2026
fe317dc
feat(ethclient): add tracing API methods #31510 (#2050)
gzliudan Feb 28, 2026
01aafc9
fix(ethclient): use common.Hash to debug_traceTransaction #32404 (#2048)
gzliudan Feb 28, 2026
2515d6c
fix(trie): fix embedded node size validation #33803 (#2047)
gzliudan Feb 28, 2026
2a96ecf
feat(accounts): add support for Ledger Nano Gen5 #33297 (#2042)
gzliudan Feb 28, 2026
f11cf2c
fix(crypto): fix ECIES invalid-curve handling #33669 (#2043)
gzliudan Feb 28, 2026
5f3613e
fix(eth): add index to callTracer log #33629 (#2044)
gzliudan Feb 28, 2026
ad0eea0
refactor(crypto): vendor in golang.org/x/crypto/sha3 #33323 (#2046)
gzliudan Feb 28, 2026
5b8c6ef
feat(p2p): swarm POC3 #17041 (#2059)
gzliudan Feb 28, 2026
2611f1d
fix(all): fix typo foudation (#2063)
gzliudan Feb 28, 2026
b991bd8
test(ethclient): port ethclient tests from upstream (#2060)
gzliudan Mar 1, 2026
e250435
fix(crypto): remove keccak_ziren.go (#2113)
gzliudan Mar 3, 2026
41fb331
chore(AGENTS.md): add AGENTS.md with guidelines for AI agents #33890 …
gzliudan Mar 3, 2026
bad22c2
chore: enable reward, penalty and dynamic gas on devnet (#2121)
benjamin202410 Mar 5, 2026
3fad5e1
refactor(ethclient): implement new sim backend #28202 (#2062)
gzliudan Mar 6, 2026
2eed6c0
fix(consensus): hardening header verification #33860 (#2071)
gzliudan Mar 6, 2026
69ab9b8
fix(crypto): fix coordinate check (#2072)
gzliudan Mar 6, 2026
3eb198b
refactor(core): storage journal entry should revert dirtyness too #29…
gzliudan Mar 6, 2026
275424c
fix(core): revert pending storage updates if they revert to original …
gzliudan Mar 6, 2026
5695f8a
perf(core): reduce alloc #33576 (#2085)
gzliudan Mar 6, 2026
c3f1825
build(build): upgrade to golangci-lint v2.10.1 #33875 (#2112)
gzliudan Mar 6, 2026
daad965
build(build): upgrade -dlgo version to 1.25.7 #33874 (#2114)
gzliudan Mar 6, 2026
45aadcd
build(build): upgrade toolchain to go 1.25.7 (#2115)
gzliudan Mar 6, 2026
436166e
feat(internal/ethapi): add eth_getStorageValues method #32591 (#2116)
gzliudan Mar 6, 2026
b71279d
feat(metrics): allow changing influxdb interval #33767 (#2118)
gzliudan Mar 6, 2026
d542efe
feat(core/vm): implement EIP-7823 - Set upper bounds for MODEXP #3181…
gzliudan Mar 6, 2026
0b47621
fix(miner): avoid XDPoS-only paths on non-XDPoS engines (#2049)
gzliudan Mar 6, 2026
92ffb4d
test(ethclient): port gethclient tests from upstream (#2053)
gzliudan Mar 6, 2026
4f59928
fix(core): remove slot dirtyness if it's set back to origin value #29…
gzliudan Mar 6, 2026
ed95075
fix(params): accept legacy foudationwalletaddr in chain config, fix #…
gzliudan Mar 6, 2026
973efe6
feat(start.sh): add configurable miner gas limit with default value (…
anunay-xin Mar 7, 2026
e02bc07
refactor(core): semantic journalling #28880 (#2081)
gzliudan Mar 7, 2026
4e902c2
ci: add Slack notification for PR readiness (#2148)
anunay-xin Mar 10, 2026
8331c14
refactor(params): rename AllXDPoSProtocolChanges to AllDevChainProto…
gzliudan Mar 10, 2026
0581dec
fix(common/countdown): stabilize reset timing assertions (#2120)
gzliudan Mar 10, 2026
5bb1f03
feat(core/vm): implement EIP-7883 - ModExp Gas Cost Increase #31606 #…
gzliudan Mar 10, 2026
d4a6f43
refactor(core/txpool): migrate tx subscription to SubscribeTransactio…
gzliudan Mar 10, 2026
c8f241c
docs(core/txpool/legacypool): fix typos #28258 (#2126)
gzliudan Mar 10, 2026
e9043cc
refactor(txpool/legacypool): remove ErrAlreadyKnown in legacypool #28…
gzliudan Mar 10, 2026
bad1116
test(consensus,core): skip long-running tests in short mode (#2129)
gzliudan Mar 10, 2026
d1860fa
test(build,Makefile): switch quick-test from --quick to -short (#2130)
gzliudan Mar 10, 2026
f5e2d16
refactor‌(core/txpool/legacypool): tiny #28654 (#2131)
gzliudan Mar 10, 2026
9d6e8fc
refactor(core/txpool/legacypool): use uint256.Int instead of big.Int …
gzliudan Mar 10, 2026
d8fd092
refactor(miner): polish miner configuration #19480 (#2135)
gzliudan Mar 10, 2026
be40f8a
chore(cicd,common): unify XDC runtime binary across networks (#2147)
gzliudan Mar 10, 2026
9eb90bc
feat(eth): log full node id after register peer (#2149)
gzliudan Mar 10, 2026
de14295
refactor(core/txpool): don't inject lazy resolved transactions into t…
gzliudan Mar 11, 2026
338d1b4
feat(eth,miner): wire miner gas tip updates from RPC #28933 (#2136)
gzliudan Mar 11, 2026
ae6da05
fix(miner): recompute timestamp after sleep (#2052)
gzliudan Mar 11, 2026
5bc3632
feat(core/txpool): respect nolocals-setting #28435 (#2128)
gzliudan Mar 11, 2026
b5eec52
perf(core/txpool): pre-filter dynamic fees during pending tx retrieva…
gzliudan Mar 11, 2026
8850835
perf(core/txpool,miner): speed up pending transaction ordering with u…
gzliudan Mar 11, 2026
7d67a4e
refactor(txpool,eth,miner): use pending filter struct #29026 (#2160)
gzliudan Mar 11, 2026
c762053
refactor(txpool): remove wrapper type #27841 (#2124)
gzliudan Mar 11, 2026
be36b32
fix(consensus): fix config object not reference to same one and concu…
benjamin202410 Mar 12, 2026
2137fb3
rollback devnet and reset switch block (#2178)
benjamin202410 Mar 17, 2026
a9be217
fix(core/txpool): coordinate reset lifecycle and shutdown signaling #…
gzliudan Mar 17, 2026
df8c94c
docs(core,eth): fix typos #29024 #29036 (#2161)
gzliudan Mar 17, 2026
5b0e2e4
fix(core/txpool): clarify tx validation error messages #29081 (#2163)
gzliudan Mar 17, 2026
1ac34cb
refactor(core/txpool): no need to log loud rotate if no local txs #29…
gzliudan Mar 17, 2026
7d3e739
perf(core/txpool): use the cached address in ValidateTransactionWithS…
gzliudan Mar 17, 2026
eef6327
perf(core/txpool/legacypool): use maps.Keys and maps.Copy #30091 (#2165)
gzliudan Mar 17, 2026
5b5c39d
feat(core/txpool): improve error responses #30715 (#2170)
gzliudan Mar 17, 2026
bd355d7
fix(core/txpool/legacypool): prevent uint256 overflow panic in execut…
gzliudan Mar 17, 2026
08d7dbc
refactor(core/txpool): remove unused parameter local #30871 (#2171)
gzliudan Mar 17, 2026
129b1c8
fix(core/txpool/legacypool): fix flaky test TestAllowedTxSize #30975 …
gzliudan Mar 17, 2026
cd5ce5a
fix(core): use sync.Once for SenderCacher initialization #31029 (#2173)
gzliudan Mar 17, 2026
5625cf6
test(ethclient/simulated): add rollback transaction coverage #31020 (…
gzliudan Mar 17, 2026
6f02401
fix(core/txpool): avoid blocking reset completion on close #31030 (#2…
gzliudan Mar 17, 2026
bfe9a3e
refactor(eth): remove duplicated chain config source #19344 (#2177)
gzliudan Mar 17, 2026
13548d5
refactor(core/txpool): remove locals-tracking from pools #30559 (#2176)
gzliudan Mar 17, 2026
3a505d5
fix(eth): initialize engine with finalized chain config, fix #2138 (#…
gzliudan Mar 17, 2026
1e5d6e5
docs(core/txpool): notice ` Clear` is not for production #31567 (#2184)
gzliudan Mar 17, 2026
fe01006
migrate deployment notification to new slack (#2193)
wanwiset25 Mar 18, 2026
ec0f96d
feat(core/txpool,eth): align local tx tracking with geth #31202 #3161…
gzliudan Mar 18, 2026
e647c71
feat(core/txpool): reject stale transaction for local tracking #31473…
gzliudan Mar 18, 2026
5086800
fix(core/txpool): allow tx and authority regardless of admission orde…
gzliudan Mar 18, 2026
8be617c
fix(core/txpool): fix nonce assignment in local tracker #31496 (#2183)
gzliudan Mar 18, 2026
42bd369
ci(workflow): finalise deployment notification (#2207)
wanwiset25 Mar 18, 2026
8d93eb6
fix(contracts): use pool nonce for imported block sign tx (#2213)
gzliudan Mar 19, 2026
4321de6
ci(workflow): handle all cases of wip (#2162)
anunay-xin Mar 19, 2026
001bd7e
fix(eth/hooks,contracts): use parent-state randomize data for checkpo…
gzliudan Mar 21, 2026
9579593
fix(constants): update Devnet chain ID and block parameters for devne…
anunay-xin Mar 21, 2026
7aa089e
fix(consensus/XDPoS): fix results ordering and false `unknown ancesto…
gzliudan Mar 23, 2026
eaee813
fix grabbing the wrong PR link (#2208)
wanwiset25 Mar 24, 2026
f234f06
fix(core/txpool/legacypool): fix data race of txlookup access #31641 …
gzliudan Mar 24, 2026
bcf66d9
refactor(core/txpool/legacypool): refactor truncatePending #31715 (#2…
gzliudan Mar 24, 2026
873ac80
fix(core/txpool): initialize journal writer for tx tracker #32921 (#2…
gzliudan Mar 24, 2026
6e14502
test(core/txpool/legacypool): fix flaky test TestAllowedTxSize #31836…
gzliudan Mar 24, 2026
d361dd1
refactor: use errors.New for static errors (#2212)
gzliudan Mar 24, 2026
3b33f34
fix(core/txpool/legacypool): fix validTxMeter to count transactions #…
gzliudan Mar 24, 2026
0f0d1f8
refactor(core/txpool/legacypool): move queue out of main txpool #3227…
gzliudan Mar 24, 2026
1c5b9e6
feat(core): implement eip-7954 increase Maximum Contract Size #33832 …
gzliudan Mar 24, 2026
b9a255a
feat(core,txpool,miner,params): implement eip-7825 tx gas limit cap #…
gzliudan Mar 24, 2026
4873b33
fix(core/txpool/legacypool): reset gauges on clear #33654 (#2219)
gzliudan Mar 24, 2026
d259236
chore(build): bump go toolchain to v1.25.8 (#2224)
gzliudan Mar 24, 2026
8160253
feat(internal/ethapi): add block override to estimateGas #30695 (#2226)
gzliudan Mar 24, 2026
dcb10b4
fix(core): fix TestStateProcessorErrors wrong error under Osaka/Pragu…
gzliudan Mar 24, 2026
83d644b
fix(core/txpool/legacypool): fix data race of pricedList access #3175…
gzliudan Mar 24, 2026
c32608a
fix(internal/ethapi): skip tx gas limit check for calls #32641 (#2211)
gzliudan Mar 24, 2026
9f5d8ea
fix(core/txpool/legacypool): clarify and fix non-executable tx heartb…
gzliudan Mar 24, 2026
e8dfa61
fix(miner): fix min tip filtering across basefee boundary (#2230)
gzliudan Mar 25, 2026
159933f
fix(core/txpool/legacypool): fix pricedList updates #32906 (#2218)
gzliudan Mar 25, 2026
86e1c63
perf(core): reduce allocations for transaction comparison #31912 (#2214)
gzliudan Mar 25, 2026
7197a82
perf(core/txpool/legacypool): reduce unnecessary allocations during a…
gzliudan Mar 25, 2026
06a19d1
fix(downloader): prevent infinite loop in reorg protection header del…
benjamin202410 Mar 30, 2026
868da56
fix(devnet): fix devnet chain configuration and improve chain initial…
wanwiset25 Mar 31, 2026
dc86bf7
feat(internal/ethapi): createAccessList with stateOverrides #31497 (#…
gzliudan Apr 2, 2026
a006503
fix(eth/gasestimator): cap osaka estimate hi at maxtxgas #32348 (#2235)
gzliudan Apr 2, 2026
af5191f
fix(cmd/XDC,internal/cmdtest): stabilize flaky unlock timeout (#2236)
gzliudan Apr 2, 2026
1cd3a0c
feat(core,miner): implement EIP-7934 - RLP execution block size limit…
gzliudan Apr 2, 2026
d8284d1
fix(core/txpool): fix error `pool attempted to unreserve non-reserved…
gzliudan Apr 2, 2026
3f4a9d2
docs(solidity): clarify EVM-based compiler compatibility (#2247)
gzliudan Apr 2, 2026
e7e4711
chore(pre-commit,docs): scope hooks by stage and improve dev guide (#…
gzliudan Apr 2, 2026
26efad5
docs(xdc): align json-rpc docs with current node behavior (#2249)
gzliudan Apr 2, 2026
d12e4ec
chore(params,cicd): update testnet bootnodes list (#2255)
gzliudan Apr 2, 2026
5520241
chore(params,cicd): update mainnet bootnodes list (#2256)
gzliudan Apr 2, 2026
a7dedb0
chore(cicd): deduplicate genesis sources (#2264)
gzliudan Apr 2, 2026
95e3f7a
fix(eth/tracers): remove duplicate prague pre-call in parallel tracin…
gzliudan Apr 2, 2026
afc867d
fix(internal/ethapi): limit eth_simulateV1 call count #34616 (#2254)
gzliudan Apr 2, 2026
ece436f
fix(eth/gasestimator,internal/ethapi): fix block overrides in estimat…
gzliudan Apr 2, 2026
b950374
refactor(core/txpool/legacypool): simplify LegacyPool.Get nil path #3…
gzliudan Apr 2, 2026
f5fe86c
fix(accounts/keystore): fix flaky TestUpdatedKeyfileContents notifica…
gzliudan Apr 2, 2026
45b2e79
fix(consensus): fix error `invalid merkle root` on pre-tip-signing re…
gzliudan Apr 16, 2026
669d1ca
refactor(cmd/evm,eth/tracers): refactor structlogger and make it stre…
gzliudan Apr 16, 2026
62eae1f
test: cleanup tests #25641 (#2267)
gzliudan Apr 20, 2026
816982c
feat(core/vm): implement EIP-8024 #33095 #33361 #33614 #33785 #33787 …
gzliudan Apr 20, 2026
748667d
fix(core/vm/runtime): invoke tx-end hook #30711 (#2269)
gzliudan Apr 20, 2026
a3425c4
fix(core): include build metadata in bad block logs (#2270)
gzliudan Apr 20, 2026
829ba4f
feat(eth): log remote address when registering peers (#2271)
gzliudan Apr 20, 2026
3ff3c87
fix(cicd): exec start script from entrypoint (#2273)
gzliudan Apr 20, 2026
959265a
fix(eth): reorder ethereum shutdown sequence (#2277)
gzliudan Apr 20, 2026
53d2fac
fix(eth/downloader): avoid blocking completed state sync spindown (#2…
gzliudan Apr 20, 2026
4d3ab0a
chore(docker): remove unused docker direcotry (#2279)
gzliudan Apr 20, 2026
1feb6dd
fix(p2p,docs): handle pair-peer peer accounting (#2280)
gzliudan Apr 20, 2026
840b300
refactor(core): extract historical balance bypass rules (#2283)
gzliudan Apr 20, 2026
d7549ae
chore(core/vm): remove unnecessary comment #30887 (#2288)
gzliudan Apr 20, 2026
e6a6a56
fix(core,txpool,ethapi): reject overflowing tx values (#2289)
gzliudan Apr 20, 2026
0d5c4bb
fix(core/vm): make all opcodes proper type #30925 (#2290)
gzliudan Apr 20, 2026
07c219a
fix(core/vm,core/tracing): correct outdated comments (#2291)
gzliudan Apr 20, 2026
7498669
refactor(core/vm): remove unused SetTracer helper (#2292)
gzliudan Apr 20, 2026
5193655
fix(core/vm): trace before memory expansion #31074 (#2294)
gzliudan Apr 20, 2026
1afb409
feat(core): state journal wrapper #30441 #33978 (#2295)
gzliudan Apr 20, 2026
f356ffe
fix(consensus/XDPoS,core): stop fabricating verify batch blocks, clos…
gzliudan Apr 21, 2026
0227ca9
fix(core,eth/tracers): resolve coinbase owner per transaction (#2285)
gzliudan Apr 27, 2026
77db1c8
fix(core/vm): remove eip-7702 extcode overrides #31089 (#2293)
gzliudan Apr 27, 2026
9e463a7
refactor(core,eth,internal): switch EVM tx context in ApplyMessage #3…
gzliudan Apr 27, 2026
872a426
fix(p2p,eth): synchronize pair peer teardown (#2325)
gzliudan Apr 28, 2026
7045e7f
fix(core): align test with ApplyTransactionWithEVM signature (#2331)
gzliudan Apr 28, 2026
e9fc066
fix(core/vm): triple modexp cost post-cancun #32231 (#2319)
gzliudan Apr 28, 2026
bac5b6f
fix(devnet): update Network ID and genesis parameters for Devnet (#2…
anunay-xin Apr 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
# Auto detect text files and perform LF normalization
* text=auto
*.sol linguist-language=Solidity
37 changes: 37 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# GitHub Copilot Instructions – XDC Network client

- This repository is a fork of `go-ethereum` (geth). When reviewing code, prefer patterns and APIs used in upstream geth where possible, and call out unnecessary divergence from upstream.

- The codebase is mostly Go. Follow standard Go best practices: idiomatic Go style, `gofmt` formatting, clear error handling (no ignored errors), no unused imports or variables, avoid global state where not necessary, and keep functions small and focused.

## Branch & PR policy

- Treat `dev-upgrade` as the main staging branch for protocol / infra upgrades.
- **Always review PRs whose base branch is `dev-upgrade`** and:
- Check that the PR description clearly explains the change, scope, and any compatibility impact.
- Verify that tests are added/updated and relevant CI checks are enabled.
- Flag missing labels (e.g., `consensus`, `rpc`, `db`, `refactor`) when helpful for maintainers.
- Call out any change that might require a migration guide, release note, or coordination with node operators.

## Code review focus

- **Consensus & protocol safety:** Changes under `consensus/`, `core/`, `eth/`, `params/` or wire protocol code must not break block validation, fork choice, or network compatibility. Flag any change that alters block structure, receipts, or state transition rules without clear rationale and migration notes.

- **Performance & allocations:** For hot paths (e.g., block processing, tx pool, EVM execution, database access), check for unnecessary allocations, blocking I/O, or quadratic loops. Prefer reuse of buffers and efficient iteration.

- **Security:** Treat all RPC, P2P, and transaction inputs as untrusted. Ensure bounds checks, nil checks, and validation of user-supplied data. Avoid introducing custom cryptography; reuse existing primitives and helpers from upstream or audited libraries.

- **EVM & JSON-RPC compatibility:** Maintain compatibility with standard Ethereum JSON-RPC methods unless the project docs explicitly state a deviation. Call out breaking RPC changes or inconsistent behavior vs. Ethereum where not documented.

- **Database & state:** Be careful with changes in `core/rawdb`, `trie`, and state handling. Flag anything that might corrupt state, change database schema without migration code, or break fast-sync/snap-sync logic.

## General expectations

- For every non-trivial change, check that:
- There are unit and/or integration tests covering the new behavior.
- Existing tests still pass logically (not just compile).
- Logging is informative but not excessively noisy on hot paths.

- When suggesting changes, prefer small, incremental refactors over large rewrites, and always preserve backward compatibility for network peers unless the PR is clearly marked as a consensus or protocol upgrade.

- In review comments, be concise and concrete: point to specific lines, explain the impact on consensus, performance, or security, and propose idiomatic Go alternatives where appropriate.
24 changes: 16 additions & 8 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
# Proposed changes
Describe the big picture of your changes here to communicate to the maintainers why we should accept this pull request.

<!-- Describe the big picture of your changes here to communicate to the maintainers why we should accept this pull request. -->

## Types of changes

What types of changes does your code introduce to XDC network?
_Put an `✅` in the boxes that apply_

- [ ] Bugfix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation Update (if none of the other choices apply)
- [ ] Regular KTLO or any of the maintaince work. e.g code style
- [ ] CICD Improvement
- [ ] build: Changes that affect the build system or external dependencies
- [ ] ci: Changes to CI configuration files and scripts
- [ ] chore: Changes that don't change source code or tests
- [ ] docs: Documentation only changes
- [ ] feat: A new feature
- [ ] fix: A bug fix
- [ ] perf: A code change that improves performance
- [ ] refactor: A code change that neither fixes a bug nor adds a feature
- [ ] revert: Revert something
- [ ] style: Changes that do not affect the meaning of the code
- [ ] test: Adding missing tests or correcting existing tests

## Impacted Components
Which part of the codebase this PR will touch base on,

Which parts of the codebase do this PR touch?
_Put an `✅` in the boxes that apply_

- [ ] Consensus
Expand All @@ -27,9 +33,11 @@ _Put an `✅` in the boxes that apply_
- [ ] Not sure (Please specify below)

## Checklist

_Put an `✅` in the boxes once you have confirmed below actions (or provide reasons on not doing so) that_

- [ ] This PR has sufficient test coverage (unit/integration test) OR I have provided reason in the PR description for not having test coverage
- [ ] Tested on a private network from the genesis block and monitored the chain operating correctly for multiple epochs.
- [ ] Provide an end-to-end test plan in the PR description on how to manually test it on the devnet/testnet.
- [ ] Tested the backwards compatibility.
- [ ] Tested with XDC nodes running this version co-exist with those running the previous version.
Expand Down
145 changes: 91 additions & 54 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ on:
types: [opened, synchronize, reopened]
push:
branches:
- '*'
- "*"
tags:
- '*'
- "*"

env:
GOPROXY: https://proxy.golang.org
GOPROXY: https://proxy.golang.org,direct
GO111MODULE: on
tf_version: "1.3.0"
tf_init_cli_options: "-input=false"
Expand Down Expand Up @@ -51,11 +51,33 @@ jobs:
uses: actions/checkout@v4
with:
path: ${{ env.GOPATH }}/src/XDPoSChain
# Cache build tools to avoid downloading them each time
- uses: actions/cache@v4
with:
path: ${{ env.GOPATH }}/src/XDPoSChain/build/cache
key: ${{ runner.os }}-build-tools-cache-${{ hashFiles('**/build/checksums.txt') }}
- name: Set up Go
uses: actions/setup-go@v5
with:
cache: false
go-version: '1.23.x'
go-version: "1.25.x"
- name: Check gofmt
run: |
unformatted=$(git ls-files '*.go' | xargs -r gofmt -l)
if [ -n "$unformatted" ]; then
echo "Unformatted files:"
echo "$unformatted"
exit 1
fi
echo "All Go files are properly formatted."
- name: Check go mod tidy
run: |
set -euo pipefail
go mod tidy -diff 2>&1 | sed '/^go: downloading/d'
echo "go.mod and go.sum are tidy."
- name: Validate generated files
run: |
go run build/ci.go generate
- name: Run tests
run: ${{ matrix.script }}
env:
Expand All @@ -70,7 +92,7 @@ jobs:
- name: Login to Docker Hub
run: echo ${{ secrets.DOCKER_PASSWORD }} | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
- name: Build Docker image
run: docker build -t xinfinorg/xdposchain:${GITHUB_REF#refs/tags/} -f cicd/Dockerfile .
run: docker build --build-arg GIT_COMMIT=${GITHUB_SHA} -t xinfinorg/xdposchain:${GITHUB_REF#refs/tags/} -f cicd/Dockerfile .
- name: Push Docker image
run: docker push xinfinorg/xdposchain:${GITHUB_REF#refs/tags/}

Expand All @@ -92,7 +114,7 @@ jobs:
docker pull xinfinorg/devnet:latest
docker tag xinfinorg/devnet:latest xinfinorg/devnet:previous
docker rmi xinfinorg/devnet:latest
docker build -t xinfinorg/devnet:latest -f cicd/Dockerfile .
docker build --build-arg GIT_COMMIT=${GITHUB_SHA} -t xinfinorg/devnet:latest -f cicd/Dockerfile .
docker tag xinfinorg/devnet:latest $image_name
docker push $image_name
docker push xinfinorg/devnet:latest
Expand All @@ -109,63 +131,78 @@ jobs:
- name: Set up kubectl
uses: azure/setup-kubectl@v4
with:
version: 'v1.19.11'
- name: Decode and configure kubeconfig
version: "v1.19.11"
- name: Apply new image version to Kubernetes deployments
run: |
mkdir -p $HOME/.kube
echo "${{ secrets.KUBE_CONFIG }}" | base64 --decode > $HOME/.kube/config
chmod 600 $HOME/.kube/config
git_hash=$(git rev-parse --short "$GITHUB_SHA")
kubectl set image deployment/devnet1 devnet1=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/devnet2 devnet2=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/devnet3 devnet3=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/devnet4 devnet4=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/devnet5 devnet5=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/devnet6 devnet6=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/devnet7 devnet7=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/devnet8 devnet8=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/devnet9 devnet9=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/devnet10 devnet10=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/devnet11 devnet11=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/devnet12 devnet12=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/devnet13 devnet13=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/devnet14 devnet14=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/devnet15 devnet15=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/devnet16 devnet16=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/devnet17 devnet17=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/devnet18 devnet18=xinfinorg/devnet:dev-upgrade-${git_hash} || true
echo done
masternodes=$(kubectl get deployment -o json | jq -r '.items[] | select(.metadata.name | test("^masternode[0-9]")) | .metadata.name' | sort)
rpcs=$(kubectl get deployment -o json| jq -r '.items[] | select(.metadata.name | test("rpc")) | "\(.metadata.name)"')
echo "Masternodes: $masternodes"
echo "RPCs: $rpcs"

rpc_k8_apply:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/dev-upgrade' && !startsWith(github.ref, 'refs/tags/')
needs: devnet_build_push
steps:
- uses: actions/checkout@v4
- name: Set up kubectl
uses: azure/setup-kubectl@v4
with:
version: 'v1.19.11'
- name: Decode and configure kubeconfig
run: |
mkdir -p $HOME/.kube
echo "${{ secrets.KUBE_CONFIG }}" | base64 --decode > $HOME/.kube/config
chmod 600 $HOME/.kube/config
git_hash=$(git rev-parse --short "$GITHUB_SHA")
kubectl set image deployment/devnetrpc devnetrpc=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/devnetrpc2 devnetrpc2=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/testnetrpc testnetrpc=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/testnetrpc2 testnetrpc=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/mainnetrpc mainnetrpc=xinfinorg/devnet:dev-upgrade-${git_hash} || true
kubectl set image deployment/mainnetrpc2 mainnetrpc=xinfinorg/devnet:dev-upgrade-${git_hash} || true
echo done
# Skip masternode1 through masternode25, update the rest.
readarray -t mn_array <<< "$masternodes"
total=${#mn_array[@]}
echo "Total masternode deployments: $total, skipping masternode1..masternode25"

for name in "${mn_array[@]}"; do
if [[ $name =~ ^masternode[0-9] ]]; then
num=${name#masternode}
num=${num%%-*}
if [[ $num =~ ^[0-9]+$ ]] && (( num >= 1 && num <= 25 )); then
echo "Skipping deployment: $name"
continue
fi
fi

echo "Updating deployment: $name"
kubectl set image "deployment/$name" "$name=xinfinorg/devnet:dev-upgrade-${git_hash}" || true
done


while read -r name; do
kubectl set image deployment/$name $name=xinfinorg/devnet:dev-upgrade-${git_hash} || true
done <<< "$rpcs"

devnet_send_notification:
runs-on: ubuntu-latest
needs: devnet_k8_apply
if: github.ref == 'refs/heads/dev-upgrade' && !startsWith(github.ref, 'refs/tags/')
steps:
- uses: actions/checkout@v4
- name: Send deployment notification
run: |
curl --location --request POST "66.94.98.186:8080/deploy?environment=devnet&service=xdc&version=${GITHUB_SHA}"
- uses: actions/checkout@v4
- name: Send deployment notification
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SLACK_WEBHOOK: ${{ secrets.SLACK_DEPLOYMENT_WEBHOOK_URL }}
REPO: ${{ github.repository }}
run: |
# Extract PR number from merge commit message, e.g. "refactor(core): remove locals #30559 (#2176)"
# Matches the last (#NNNN) pattern to get your repo's PR, not the upstream reference
PR_NUMBER=$(git log -1 --format='%s' | grep -oP '\(#\K[0-9]+(?=\))' | tail -1 || true)

PR_LINE="Commit: <https://github.com/${REPO}/commit/${GITHUB_SHA}|${GITHUB_SHA::7}>"
if [ -n "$PR_NUMBER" ]; then
PR_LINE+=$'\nMerged PR: <https://github.com/'"${REPO}"'/pull/'"${PR_NUMBER}"'|#'"${PR_NUMBER}"'>'
fi

curl -X POST -H 'Content-type: application/json' \
--data "$(jq -n \
--arg pr_line "$PR_LINE" \
--arg sha "$GITHUB_SHA" \
'{
"text": ":rocket: Deployment: devnet",
"blocks": [
{
"type": "header",
"text": {"type": "plain_text", "text": ":rocket: Deployment: devnet"}
},
{
"type": "section",
"text": {"type": "mrkdwn", "text": ("Service: *xdc*\nEnvironment: *devnet*\nVersion: `" + $sha + "`\n" + $pr_line)}
}
]
}')" \
"$SLACK_WEBHOOK"
63 changes: 63 additions & 0 deletions .github/workflows/pr-notify-slack.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Notify Slack when a PR is ready for review (not draft, title does not contain WIP/wip/Wip.).
# Triggers: new PR (non-draft, no WIP), draft -> ready, or title edited to remove WIP.
name: PR notify Slack

on:
pull_request_target:
types: [opened, reopened, ready_for_review, edited]
workflow_dispatch:

jobs:
test-webhook:
runs-on: ubuntu-latest
if: github.event_name == 'workflow_dispatch'
steps:
- name: Test Slack webhook
env:
SLACK_PULL_REQUEST_WEBHOOK_URL: ${{ secrets.SLACK_PULL_REQUEST_WEBHOOK_URL }}
run: |
if [ -z "$SLACK_PULL_REQUEST_WEBHOOK_URL" ]; then
echo "SLACK_PULL_REQUEST_WEBHOOK_URL secret is not set. Add it in repo Settings → Secrets → Actions."
exit 1
fi
BODY=$(jq -n --arg text "Test: PR notify Slack webhook is working (from ${{ github.repository }})" '{text: $text}')
curl -sS -X POST -H 'Content-Type: application/json' --data "$BODY" "$SLACK_PULL_REQUEST_WEBHOOK_URL"
echo ""
echo "If you see this and no curl error, check your Slack channel for the test message."

notify:
runs-on: ubuntu-latest
if: |
github.event.pull_request.draft == false &&
!startsWith(github.event.pull_request.title, 'wip') &&
!startsWith(github.event.pull_request.title, '[wip]') &&
(
github.event.action != 'edited' ||
(
github.event.changes.title &&
(
startsWith(github.event.changes.title.from, 'wip') ||
startsWith(github.event.changes.title.from, '[wip]')
)
)
)
steps:
- name: Send Slack notification
env:
SLACK_PULL_REQUEST_WEBHOOK_URL: ${{ secrets.SLACK_PULL_REQUEST_WEBHOOK_URL }}
run: |
if [ -z "$SLACK_PULL_REQUEST_WEBHOOK_URL" ]; then
echo "SLACK_PULL_REQUEST_WEBHOOK_URL secret is not set; skipping notification."
exit 0
fi
PR_URL="${{ github.event.pull_request.html_url }}"
PR_TITLE="${{ github.event.pull_request.title }}"
PR_AUTHOR="${{ github.event.pull_request.user.login }}"
# Slack mrkdwn: <url|text> for link
BODY=$(jq -n \
--arg url "$PR_URL" \
--arg title "$PR_TITLE" \
--arg author "$PR_AUTHOR" \
'{text: ("PR ready for review: <" + $url + "|" + $title + "> by " + $author)}')
curl -sS -X POST -H 'Content-Type: application/json' --data "$BODY" "$SLACK_PULL_REQUEST_WEBHOOK_URL"
if: env.SLACK_PULL_REQUEST_WEBHOOK_URL != ''
Loading
Loading