From 1a70f24a7e326424fd145a13076748d4b78afe77 Mon Sep 17 00:00:00 2001 From: Support Bot Date: Thu, 10 Sep 2026 08:50:58 +0000 Subject: [PATCH] fix: add Hoodeth ERC20 operation hash prefixes WHAT: Configure chain-specific ERC20 operation hash prefixes for Hoodeth mainnet and testnet.\n\nWHY: EthLikeToken signing uses the network prefix for token operation hashes; Hoodeth networks previously omitted it, causing wallet token sends to use an inconsistent generic fallback. Ticket: SPT-445 Session-Id: 7e1eab36-9635-413e-a503-6c4eeff422db Task-Id: ea069a0e-c9f9-4d16-8a15-a1c84c0f165f --- modules/statics/src/networks.ts | 2 ++ modules/statics/test/unit/networks.ts | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/modules/statics/src/networks.ts b/modules/statics/src/networks.ts index b067137bf5..bacbbbdcb0 100644 --- a/modules/statics/src/networks.ts +++ b/modules/statics/src/networks.ts @@ -1971,6 +1971,7 @@ class HoodethTestnet extends Testnet implements EthereumNetwork { explorerUrl = 'https://explorer.testnet.chain.robinhood.com/tx/'; accountExplorerUrl = 'https://explorer.testnet.chain.robinhood.com/address/'; chainId = 46630; + tokenOperationHashPrefix = '46630-ERC20'; batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; nativeCoinOperationHashPrefix = '46630'; } @@ -1981,6 +1982,7 @@ class Hoodeth extends Mainnet implements EthereumNetwork { explorerUrl = 'https://robinhoodchain.blockscout.com/tx/'; accountExplorerUrl = 'https://robinhoodchain.blockscout.com/address/'; chainId = 4663; + tokenOperationHashPrefix = '4663-ERC20'; batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; nativeCoinOperationHashPrefix = '4663'; } diff --git a/modules/statics/test/unit/networks.ts b/modules/statics/test/unit/networks.ts index 99fe196a20..dedb47f868 100644 --- a/modules/statics/test/unit/networks.ts +++ b/modules/statics/test/unit/networks.ts @@ -92,6 +92,17 @@ Object.entries(Networks).forEach(([category, networks]) => { }); }); +describe('Hoodeth Network', function () { + it('should use chain-specific ERC20 operation hash prefixes', function () { + Networks.main.hoodeth.chainId.should.equal(4663); + Networks.main.hoodeth.nativeCoinOperationHashPrefix.should.equal('4663'); + Networks.main.hoodeth.tokenOperationHashPrefix.should.equal('4663-ERC20'); + Networks.test.hoodeth.chainId.should.equal(46630); + Networks.test.hoodeth.nativeCoinOperationHashPrefix.should.equal('46630'); + Networks.test.hoodeth.tokenOperationHashPrefix.should.equal('46630-ERC20'); + }); +}); + describe('Cosmos-family addressPrefix', function () { const cases: Array<[string, AccountNetwork, string]> = [ ['main.atom', Networks.main.atom, 'cosmos'],