Go implementation of the Ethereum protocol
Find a file
Daniel Liu e02bc0723a
refactor(core): semantic journalling #28880 (#2081)
This is a follow-up to #29520, and a preparatory PR to a more thorough
change in the journalling system.

This PR hides the journal-implementation details away, so that the
statedb invokes methods like `JournalCreate`, instead of explicitly
appending journal-events in a list. This means that it's up to the
journal whether to implement it as a sequence of events or
aggregate/merge events.

This PR also makes it so that management of valid snapshots is moved
inside the journal, exposed via the methods `Snapshot() int` and
`RevertToSnapshot(revid int, s *StateDB)`.

JournalSetCode journals the setting of code: it is implicit that the
previous values were "no code" and emptyCodeHash. Therefore, we can
simplify the setCode journal.

The self-destruct journalling is a bit strange: we allow the
selfdestruct operation to be journalled several times. This makes it so
that we also are forced to store whether the account was already
destructed.

What we can do instead, is to only journal the first destruction, and
after that only journal balance-changes, but not journal the
selfdestruct itself.

This simplifies the journalling, so that internals about state
management does not leak into the journal-API.

Preimages were, for some reason, integrated into the journal management,
despite not being a consensus-critical data structure. This PR undoes
that.

---------

Co-authored-by: Martin HS <martin@swende.se>
Co-authored-by: Gary Rong <garyrong0905@gmail.com>
2026-03-07 17:42:10 +05:30
.github ci: improve github pull request template (#2026) 2026-02-07 00:15:01 +05:30
accounts refactor(ethclient): implement new sim backend #28202 (#2062) 2026-03-06 11:09:10 +05:30
assets/images update README and include a logo photo 2022-07-24 21:44:58 +10:00
beacon beacon/types: add beacon chain data types (#27292) 2024-12-28 09:06:31 +08:00
bmt refactor(crypto): vendor in golang.org/x/crypto/sha3 #33323 (#2046) 2026-02-28 17:23:57 +04:00
build build(build): upgrade -dlgo version to 1.25.7 #33874 (#2114) 2026-03-06 11:21:15 +05:30
cicd feat(start.sh): add configurable miner gas limit with default value (#2140) 2026-03-07 17:26:11 +08:00
cmd feat(metrics): allow changing influxdb interval #33767 (#2118) 2026-03-06 11:24:00 +05:30
common chore: enable reward, penalty and dynamic gas on devnet (#2121) 2026-03-04 20:54:18 -08:00
consensus fix(consensus): hardening header verification #33860 (#2071) 2026-03-06 11:10:32 +05:30
console console/prompt: use PromptInput in PromptConfirm method #33445 (#1953) 2026-01-19 12:15:27 +05:30
contracts fix(all): fix typo foudation (#2063) 2026-02-28 18:00:55 +04:00
core refactor(core): semantic journalling #28880 (#2081) 2026-03-07 17:42:10 +05:30
crypto fix(crypto): fix coordinate check (#2072) 2026-03-06 11:14:31 +05:30
docker all: normalize flag's name 2024-11-25 16:39:29 +08:00
docs fix(all): fix typo foudation (#2063) 2026-02-28 18:00:55 +04:00
eth fix(all): fix typo foudation (#2063) 2026-02-28 18:00:55 +04:00
ethclient test(ethclient): port gethclient tests from upstream (#2053) 2026-03-06 13:20:03 +05:30
ethdb all: use slices.Sort() to sort strings (#1712) 2025-12-07 15:49:13 +05:30
ethstats fix(core): fix genesis error in #2019 (#2034) 2026-02-10 12:22:17 +08:00
event all: move main transaction pool into a subpool #27463 (#1890) 2026-01-05 15:43:50 +05:30
genesis fix(all): fix typo foudation (#2063) 2026-02-28 18:00:55 +04:00
internal feat(internal/ethapi): add eth_getStorageValues method #32591 (#2116) 2026-03-06 11:22:36 +05:30
log all: use 0x-prefix string for type Address in log message (#1874) 2025-12-19 08:55:21 +04:00
metrics feat(metrics): allow changing influxdb interval #33767 (#2118) 2026-03-06 11:24:00 +05:30
miner fix(miner): avoid XDPoS-only paths on non-XDPoS engines (#2049) 2026-03-06 11:24:39 +05:30
node refactor(all): remove term whitelist and blacklist (#1994) 2026-02-10 17:09:21 +05:30
p2p feat(p2p): swarm POC3 #17041 (#2059) 2026-02-28 17:30:04 +04:00
params fix(params): accept legacy foudationwalletaddr in chain config, fix #2063 (#2141) 2026-03-07 06:37:24 +08:00
rlp feat(rlp): add RawList for working with un-decoded lists #33755 (#2040) 2026-02-28 16:53:16 +04:00
rpc refactor(all): remove term whitelist and blacklist (#1994) 2026-02-10 17:09:21 +05:30
tests refactor(crypto): vendor in golang.org/x/crypto/sha3 #33323 (#2046) 2026-02-28 17:23:57 +04:00
trie refactor(crypto): vendor in golang.org/x/crypto/sha3 #33323 (#2046) 2026-02-28 17:23:57 +04:00
version chore(version): update version to v2.7.0-devnet (#2058) 2026-02-28 16:56:10 +04:00
XDCx refactor(crypto): vendor in golang.org/x/crypto/sha3 #33323 (#2046) 2026-02-28 17:23:57 +04:00
XDCxDAO all: fix whitespace error of golangci-lint, remove extra empty lines (#1676) 2025-11-17 11:16:09 +05:30
XDCxlending refactor(crypto): vendor in golang.org/x/crypto/sha3 #33323 (#2046) 2026-02-28 17:23:57 +04:00
.dockerignore dockerignore, internal/build: forward correct git folder 2017-11-12 22:52:41 +02:00
.gitattributes chore(.gitattributes): enable solidity highlighting on github #16425 (#2035) 2026-02-28 16:49:11 +04:00
.gitignore build: support golangci-lint v1.63.4 2025-01-11 23:56:59 +08:00
.golangci.yml build: upgrade golangci-lint to v2.0.2 #31530 (#1466) 2025-09-10 17:22:29 +08:00
.pre-commit-config.yaml chore: add conventional-pre-commit hook (#2027) 2026-02-07 00:12:08 +05:30
AGENTS.md chore(AGENTS.md): add AGENTS.md with guidelines for AI agents #33890 #33921 (#2083) 2026-03-03 17:26:58 +08:00
COPYING all: update license information 2015-07-07 14:12:44 +02:00
COPYING.LESSER all: update license information 2015-07-07 14:12:44 +02:00
go.mod build(build): upgrade toolchain to go 1.25.7 (#2115) 2026-03-06 11:22:02 +05:30
go.sum fix(crypto): remove keccak_ziren.go (#2113) 2026-03-03 11:15:42 +08:00
interfaces.go refactor(ethclient): implement new sim backend #28202 (#2062) 2026-03-06 11:09:10 +05:30
Makefile build(build): upgrade toolchain to go 1.25.7 (#2115) 2026-03-06 11:22:02 +05:30
README.md docs: add document for JSONRPC API (#1027) 2025-05-19 15:30:52 +08:00

XDPoSChain

XinFin XDPoSchain
Enterprise ready hybrid blockchain for global trade and finance


XinFin Hybrid Blockchain

XinFin Hybrid Blockchain is an Enterprise ready Blockchain for global trade and finance

Visit: XinFin.org Contribute: Developer Docs

XinFin Network XDPoS is community driven project to achieve the following

  • XinFin DPOS (XDPoS) consensus that selects 108 set of Masternodes to achieve a high throughput Energy efficient consensus with instant block finality

  • KYC Enforcement on Masternodes for Enterprise Adoption and compliance

  • Ability to port/relay limited set of data and transactions from privacy channels to public channel

  • Interoperability between applications hosted on Private Blockchains like Corda, Hyperledger, Quorum(JP Morgan) using relayers to XinFin Network

  • Customer Centric and consortium driven Governance to equally benefit the validators as well as providing comfort for large scale enterprise applications to be hosted on the Network. This achieves

    • Rapid Upgradability

    • DApps Standardisation for rapid commercialisation

    • Compliance with major global jurisdictions.

KYC for masternodes

OVERVIEW

To add a layer of KYC for masternodes in the current system and a sense of ownership amongst the masternodes hence tying such a cluster of masternodes to physical entity which can held accountable for its actions.

Design

We established a bidirectional connection between a candidate and its owner inorder to retrieve a candidate belonging to a specific owner & vice versa.

All the masternodes are recognized by the KYC of their owners and hence are considered as a single verified entity ( for eg. while voting for invalid KYC, only one vote is considered per such cluster )

The contract is very strict in handing out penalty for invalid KYC, it results loss of all funds invested in all of its candidates.

For eg. say A proposes condidates B,C,D by paying for its proposal cost. If at a later stage if some predecided amount of owners ( investors ) vote that a KYC for a A is invalid then A & all of its candidates (B,C,D) will lose their position & all their funds will be lost ( will remain with contract wallet ).

Documents

Document

For developers

Continues integration & delivery

See https://github.com/XinFinOrg/XDPoSChain/tree/dev-upgrade/cicd

To contribute

Simple create a pull request along with proper reasoning, we'll get back to you.

Our Channels : Telegram Developer Group or XDC.Dev