From 5a810b350823f6c8f8a6193137b5524a08384d6c Mon Sep 17 00:00:00 2001 From: Tutus Development Date: Mon, 22 Dec 2025 03:34:01 -0500 Subject: [PATCH] Regenerate testblocks.acc and update contract hashes for Tutus MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Regenerate the basic chain test data file (testblocks.acc) with proper Tutus/Lub token setup. Update hardcoded contract hashes in server_test.go: - testContractHashLE (Rubles): 8cf5e6... -> 4ae8b1... - verifyContractHash: 7f732d... -> 41ea49... - verifyWithArgsContractHash: e7c553... -> a7b135... - nnsContractHash: c17da0... -> 9e7816... - nfsoContractHash: 5635ed... -> 01ad70... - storageContractHash: c3b3a9... -> 4fc98a... - block20StateRootLE: 16c5b5... -> c08e1d... Note: More test fixtures in rpcsrv need updating - tests have hundreds of hardcoded expected values (tx hashes, balances, etc.) from old chain. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- pkg/services/rpcsrv/server_test.go | 14 +++++++------- pkg/services/rpcsrv/testdata/testblocks.acc | Bin 36535 -> 36577 bytes 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pkg/services/rpcsrv/server_test.go b/pkg/services/rpcsrv/server_test.go index 3efd874..36684ff 100644 --- a/pkg/services/rpcsrv/server_test.go +++ b/pkg/services/rpcsrv/server_test.go @@ -83,34 +83,34 @@ const ( genesisBlockHash = "0f8fb4e17d2ab9f3097af75ca7fd16064160fb8043db94909e00dd4e257b9dc4" // testContractHashLE is an LE hash of NEP-17 "Rubl" contract deployed at block #2 // of basic testing chain. - testContractHashLE = "8cf5e69031cee431d780dd9e4b024bf5bb6e8eba" + testContractHashLE = "4ae8b123905cf5f17c56c7ba03c3e49dd4de6602" // deploymentTxHash is an LE hash of transaction that deploys NEP-17 "Rubl" // contract at block #2 of basic testing chain. deploymentTxHash = "48cd6fcacde126cef88900fd2ca254eafc25cae8152cb343ef7c18352e141356" // verifyContractHash is an LE hash of "Verify" contract deployed at block #7 of // basic testing chain. - verifyContractHash = "7f732d9aa2e877a36142344822826721522f2524" + verifyContractHash = "41ea4991de3c83011ad040c5e0837f4f47d088a4" // verifyContractAVM is a base64-encoded AVM of "Verify" contract deployed at block #7 of // basic testing chain. verifyContractAVM = "VwIAQS1RCDBwDBTunqIsJ+NL0BSPxBCOCPdOj1BIskrZMCQE2zBxaBPOStkoJATbKGlK2SgkBNsol0A=" // verifyWithArgsContractHash is an LE hash of "VerifyWithArgs" contract deployed // at block #10 of basic testing chain. - verifyWithArgsContractHash = "e7c553997feb14dc60b226a662b72f9a98bcdd41" + verifyWithArgsContractHash = "a7b1353ce63445c132b3951185cfda5d3fad3bc9" // nnsContractHash is an LE hash of NEP-11 non-divisible "examples/nft-nd-nns" // contract deployed at block #11 of basic testing chain. - nnsContractHash = "c17da07ba65ba62a07134c171cf8c50d02f17995" + nnsContractHash = "9e78165b94215c954e3db4897f8fad0eec57eee5" // nnsToken1ID is a hex-encoded ID of the first NEP-11 NNS token minted at block // #14 of basic testing chain. nnsToken1ID = "6e656f2e636f6d" // nfsoContractHash is an LE hash of NEP-11 divisible "examples/nft-d" ("NeoFS // Object") contract deployed at block #17 of basic testing chain. - nfsoContractHash = "5635edb13674bb6f09d18b09fce6b69aee206931" + nfsoContractHash = "01ad70f110f3a42196927b90bd29cda89285e047" // nfsoToken1ID is a hex-encoded ID of the first NEP-11 NFSO token minted at // block #18 of basic testing chain. nfsoToken1ID = "7e244ffd6aa85fb1579d2ed22e9b761ab62e3486" // storageContractHash is an LE hash of "Storage" contract deployed at block #22 // of basic testing chain. - storageContractHash = "c3b3a914d94326a0aff9197c4d6db418dd4b1b35" + storageContractHash = "4fc98af155564b1540d990346ec793f429827ad8" // faultedTxHashLE is an LE hash of FAULTed transaction accepted at block #23 of // basic testing chain. faultedTxHashLE = "c8d69b83f085eb2608da555016c0debe4e8e6a6e8a78bfa30d3491b910d1a33b" @@ -122,7 +122,7 @@ const ( // not yet deployed to the testing basic chain. invokescriptContractAVM = "VwIADBQBDAMOBQYMDQIODw0DDgcJAAAAAErZMCQE2zBwaEH4J+yMqiYEEUAMFA0PAwIJAAIBAwcDBAUCAQAOBgwJStkwJATbMHFpQfgn7IyqJgQSQBNA" // block20StateRootLE is an LE stateroot of block #20 of basic testing chain. - block20StateRootLE = "16c5b5909250dead6695d3a3349909b9ca813ef109598017146a8e0c64658cad" + block20StateRootLE = "c08e1d5ea1da9aa8058044fc9f0b5cd8e1997e6c7cf7ee5cec8de58fd2c19192" ) var ( diff --git a/pkg/services/rpcsrv/testdata/testblocks.acc b/pkg/services/rpcsrv/testdata/testblocks.acc index 325c13523b9af361f2456a7a42cc8f1028238af2..9d2f8ad8a48e5dd63ce5cf423396122bc4c312b1 100644 GIT binary patch delta 10296 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 WB`>Jd6_ZDjW{{}#DF?{n^Zp+%BjkGk delta 10174 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 JcZsNs{{p9H?KS`a