Releases: GraphLinq/GraphLinq-Chain
Release list
v1.11.8 — Sécurité : méthodes de contrôle RPC (miner/clique/debug) restreintes à l'IPC local
Correctif de sécurité — cause racine du fork du 15/07
La résolution du fork du 2026-07-15 a été causée par une méthode RPC de contrôle exposée publiquement. Le RPC geth était accessible sur Internet avec le namespace miner actif, et miner_setEtherbase était appelable par n'importe quel pair distant. Un attaquant a changé l'etherbase d'un validateur vers sa propre adresse → ce validateur a scellé un bloc créditant les frais à une adresse hors-bloc → state root non-reproductible (bloc 7170205, corrigé en v1.11.7).
Ce qui change
Les méthodes mutantes de contrôle ne fonctionnent désormais que via l'IPC local (la console du node-manager) et sont refusées sur HTTP/WS public (via rpc.PeerInfoFromContext). Les namespaces restent enregistrés — les outils de lecture continuent de marcher ; seuls les setters abusables sont restreints par transport :
- miner :
Start,Stop,SetEtherbase,SetGasPrice,SetGasLimit,SetExtra,SetRecommitInterval - clique :
Propose,Discard(contrôlent le set de signataires autorisés) - debug :
SetHead(rembobine/desync la chaîne),ChaindbCompact(I/O lourd)
Validé
miner_setEtherbase/clique_propose/debug_setHeadvia HTTP → refusésminer_setEtherbasevia IPC → fonctionne
Déploiement
Mettre à jour le binaire node (release v1.11.8 / commit 6521f9f4c) et redémarrer. Recommandé également : firewaller le RPC (chaîne DOCKER-USER) pour ne l'ouvrir qu'aux IP de confiance.
v1.11.7 — Fix bloc 7170205 (fork du 15/07) + garde-fou fee→signataire
Correctif consensus — requis pour synchroniser au-delà du bloc 7170205
La résolution du fork du 2026-07-15 a produit un bloc (7170205) que le build précédent ne pouvait pas re-exécuter de façon déterministe : tout nœud en synchronisation depuis le genesis se bloquait à 7170204 avec invalid merkle root. Cette release est obligatoire pour toute resynchronisation complète (validateurs, exchanges, intégrateurs).
Ce qui change
1. Réconciliation du bloc 7170205 (81028b72)
Le bloc avait été scellé avec le fee de la transaction crédité à un compte frais (créé par l'etherbase du producteur), dont l'adresse est perdue, alors que la ré-exécution crédite le signataire recouvré. Le state root calculé différait donc du root committé 0x96004a05…. Le correctif déplace le tip vers le bon compte (par son hash de trie), uniquement pour ce bloc et sur le chain id 614 — il ne peut affecter aucun autre bloc ni aucune autre chaîne.
2. Garde-fou (cause racine) (de5a7f9d)
Les frais de transaction sont désormais crédités au signataire Clique et non à un etherbase configuré séparément. Un producteur dont l'etherbase ≠ signataire ne peut plus créer de bloc non-reproductible.
Déploiement
- Validateurs : rolling restart sur ce binaire. Pas de reorg, pas de rollback — l'historique est intact.
- Exchanges / intégrateurs (dont MEXC) : mettre à jour le binaire, puis resynchroniser avec
--snapshot=false. La synchro depuis zéro passe alors sans blocage.
Validé : un nœud parti du bloc 0 est allé jusqu'au head réseau sans aucun bad block.
v1.11.6 New rpcs ERC20
Add rpc functions
// eth_getERC20Balance returns the amount of ERC20 tokens for the given address in the state of the chain.
// eth_getAllERC20Balances returns the amount of ERC20 tokens for the given address in the state of the chain.
// eth_getERC20Informations returns the name, symbol, total supply and decimals of the ERC20 token at the given address.
// eth_getContractType returns the type of the contract at the given address.
v1.11.5
GraphLinq Genesis --graphlinq
Integration of genesis block --graphlinq
GenesisQ
GraphLinq - PoASRC
Proof of Authority Signer Reward Consensus - Graphlinq stable release.