Go implementation of the Ethereum protocol
Find a file
Daniel Liu 9f504a6243
rpc: tighter shutdown synchronization in client subscription #22597 (#955)
This fixes a rare issue where the client subscription forwarding loop
would attempt send on the subscription's channel after Unsubscribe has
returned, leading to a panic if the subscription channel was already
closed by the user. Example:

    sub, _ := client.Subscribe(..., channel, ...)
    sub.Unsubscribe()
    close(channel)

The race occurred because Unsubscribe called quitWithServer to tell the
forwarding loop to stop sending on sub.channel, but did not wait for the
loop to actually come down. This is fixed by adding an additional channel
to track the shutdown, on which Unsubscribe now waits.

Fixes #22322

Co-authored-by: Felix Lange <fjl@twurst.com>
2025-04-24 18:17:45 +08:00
.github Update ci.yml 2025-03-11 14:01:00 +04:00
accounts all: refactor package node #21105 (#923) 2025-04-10 18:52:49 +08:00
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 crypto: switch over to upstream sha3 package (#18390) 2024-12-09 17:48:59 +08:00
build build: support auto-completion for bash 2025-04-07 16:37:05 +08:00
cicd all: update parameters for rollback 2025-04-12 11:38:27 +08:00
cmd cmd/XDC, cmd/utils: set network flag early (#938) 2025-04-24 18:09:59 +08:00
common update devnet reward parameter (#980) 2025-04-24 03:03:32 -07:00
compression/rle compression/rle: fix staticcheck warning SA9004: constant has no explicit type 2024-10-30 21:12:32 +08:00
consensus Reward float upgrade (#940) 2025-04-16 02:03:41 -07:00
console console: handle eth.coinbase throws #19374 (#953) 2025-04-24 18:11:48 +08:00
containers/docker containers: drop vagrant support, noone's maintaining it 2018-03-14 13:23:40 +02:00
contracts core/state: fix state iterator (#19127) 2025-03-28 22:34:59 +08:00
core core: simplify code of trading and lending state (#949) 2025-04-24 18:00:21 +08:00
crypto crypto/secp256k1: update libsecp256k1 (#31242) 2025-03-19 18:02:46 +08:00
docker all: normalize flag's name 2024-11-25 16:39:29 +08:00
eth eth: some typo mistake (#16802) (#948) 2025-04-21 16:36:20 +08:00
ethclient api/bind: add CallOpts.BlockHash to allow calling contracts at a specific block hash (#28084) 2025-01-24 16:54:12 +08:00
ethdb all: add build tags for wasip1 (#31090) 2025-03-19 18:02:46 +08:00
ethstats all: refactor package node #21105 (#923) 2025-04-10 18:52:49 +08:00
event all: fix staticcheck warning ST1006: don't use generic name self 2024-10-25 21:30:54 +08:00
genesis all: update parameters for rollback 2025-04-12 11:38:27 +08:00
internal all: refactor package node #21105 (#923) 2025-04-10 18:52:49 +08:00
log log: fix issues with benchmarks (#30667) 2024-11-15 10:02:43 +08:00
metrics all: add build tags for wasip1 (#31090) 2025-03-19 18:02:46 +08:00
miner trie: use trie.NewStackTrie instead of new(trie.Trie) (#22246) 2025-04-07 16:44:32 +08:00
node node: serve JSON-RPC on custom path prefix #22184 (#952) 2025-04-24 11:34:26 +08:00
p2p p2p: fix goroutine leaks in unit tests #20666 (#954) 2025-04-22 15:14:21 +08:00
params update devnet reward parameter (#980) 2025-04-24 03:03:32 -07:00
rlp all: get rid of custom MaxUint64 and MaxUint64 (#30636) 2024-12-28 09:06:31 +08:00
rpc rpc: tighter shutdown synchronization in client subscription #22597 (#955) 2025-04-24 18:17:45 +08:00
swarm remove swarm as unused like eth 2024-05-13 21:34:40 +08:00
tests cmd, core, eth, trie: add trie read caching layer (#18087) (#946) 2025-04-16 17:27:43 +08:00
trie cmd, core, eth, trie: add trie read caching layer (#18087) (#946) 2025-04-16 17:27:43 +08:00
XDCx all: refactor package node #21105 (#923) 2025-04-10 18:52:49 +08:00
XDCxDAO all: add read-only option to database 2025-01-24 14:24:39 +08:00
XDCxlending all: refactor package node #21105 (#923) 2025-04-10 18:52:49 +08:00
.dockerignore dockerignore, internal/build: forward correct git folder 2017-11-12 22:52:41 +02:00
.gitattributes FIx Bad block error. 2021-09-17 17:59:06 +05:30
.gitignore build: support golangci-lint v1.63.4 2025-01-11 23:56:59 +08:00
.golangci.yml build: support golangci-lint v1.63.4 2025-01-11 23:56:59 +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
Dockerfile fix docker build warning 2025-03-31 06:03:42 +04:00
Dockerfile.bootnode fix docker build warning 2025-03-31 06:03:42 +04:00
Dockerfile.node fix docker build warning 2025-03-31 06:03:42 +04:00
go.mod all: update to go version 1.23 2025-03-01 16:42:11 +08:00
go.sum crypto/kz4844: pass blobs by ref (#29050) 2025-02-11 18:26:56 +08:00
interfaces.go ethclient: add FeeHistory support (#25403) 2024-11-01 11:36:53 +08:00
Makefile Makefile: add devtools and help targets, remove gc target 2025-04-07 16:38:00 +08:00
README.md merge from master 2023-07-30 16:50:45 +10: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 ).

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