Skip to content

core: prohibit Conflicts attribute duplicate#4292

Merged
AnnaShaleva merged 1 commit into
masterfrom
fix-conflicts
Jun 4, 2026
Merged

core: prohibit Conflicts attribute duplicate#4292
AnnaShaleva merged 1 commit into
masterfrom
fix-conflicts

Conversation

@AnnaShaleva
Copy link
Copy Markdown
Member

@AnnaShaleva AnnaShaleva commented Jun 1, 2026

Close #4289.

Close #4289.

Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
@AnnaShaleva AnnaShaleva requested a review from roman-khimov as a code owner June 1, 2026 17:00
@AnnaShaleva AnnaShaleva requested a review from Turalchik June 1, 2026 17:00
@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 1, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 83.51%. Comparing base (c41054f) to head (33b7b96).

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #4292   +/-   ##
=======================================
  Coverage   83.51%   83.51%           
=======================================
  Files         359      359           
  Lines       44168    44177    +9     
=======================================
+ Hits        36885    36895   +10     
  Misses       5467     5467           
+ Partials     1816     1815    -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@AnnaShaleva
Copy link
Copy Markdown
Member Author

AnnaShaleva commented Jun 1, 2026

Dups checker script (can be applied to NeoGo as a git patch): checkDups.patch

N3 mainnet is checked up to 10338659, has 2 txs with duplicate Conflicts attribute:

  • at 6899665: abb2eac1488c893afb43159109cd016319e6db3413eb3d6a43f94552efb6efa0
  • at 6899690: 971addf41148ba0d75fcb2770b5a1d08672c1ee847c7d9d09e8389d463012c25
Details
anna@kiwi:~/Documents/GitProjects/nspcc-dev/neo-go$ ./bin/neo-go db checkConflicts -i ../../n3_acc_files/mainnet_9815977.acc 
processing block 0
processing block 500000
processing block 1000000
processing block 1500000
processing block 2000000
processing block 2500000
processing block 3000000
processing block 3500000
processing block 4000000
processing block 4500000
processing block 5000000
processing block 5500000
processing block 6000000
processing block 6500000
	6899665: abb2eac1488c893afb43159109cd016319e6db3413eb3d6a43f94552efb6efa0
	6899690: 971addf41148ba0d75fcb2770b5a1d08672c1ee847c7d9d09e8389d463012c25
processing block 7000000
processing block 7500000
processing block 8000000
processing block 8500000
processing block 9000000
processing block 9500000
9815978

The rest of blocks are checked via RPC:

...
processing block 10230000
processing block 10260000
processing block 10290000
processing block 10320000
    x_test.go:56: 
        	Error Trace:	/home/anna/Documents/GitProjects/nspcc-dev/neo-go/x_test.go:56
        	Error:      	Received unexpected error:
        	            	Unknown block (-101)
        	Test:       	TestAnalyzeConflicts
        	Messages:   	10338659
--- FAIL: TestAnalyzeConflicts (123.01s)

The transactions:

anna@kiwi:~/Documents/GitProjects/nspcc-dev/neo-go$ curl -d '{ "jsonrpc": "2.0", "id": 1, "method": "getrawtransaction", "params": ["0xabb2eac1488c893afb43159109cd016319e6db3413eb3d6a43f94552efb6efa0", 1] }' http://seed1.neo.org:10332 | json_pp
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2190    0  2045  100   145   6286    445 --:--:-- --:--:-- --:--:--  6738
{
   "id" : 1,
   "jsonrpc" : "2.0",
   "result" : {
      "attributes" : [
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         }
      ],
      "blockhash" : "0x2a2dabed6877c0c20f5a94c086f50959f60d8bc5dba930d8d729076d3971e6f6",
      "blocktime" : 1740745181970,
      "confirmations" : 3438782,
      "hash" : "0xabb2eac1488c893afb43159109cd016319e6db3413eb3d6a43f94552efb6efa0",
      "netfee" : "47684",
      "nonce" : 0,
      "script" : "CwKghgEADBTagfvxHLQuD3O0iRLd08YXP5hT9QsUwB8MCHRyYW5zZmVyDBT1Y+pAvCg9TQ4FxI6jBbPyoHNA70FifVtS",
      "sender" : "NfqLD2oai2aoNViiV8G3FWWZ2sHTYuy4Hj",
      "signers" : [
         {
            "account" : "0xf553983f17c6d3dd1289b4730f2eb41cf1fb81da",
            "scopes" : "None"
         }
      ],
      "size" : 656,
      "sysfee" : "37684",
      "validuntilblock" : 6900567,
      "version" : 0,
      "witnesses" : [
         {
            "invocation" : "DEAY2eNsTz11ICK5S0Pf6/wahcZUoa9a/MfnM10s2AygGyI0ItD635ipzXwrbRe9mczH85ezahi2gXtYdXiZMzcC",
            "verification" : "DCEC84r6KdzSxD67N0vQ6FWU6DoDg8y8kYWgDDmATSValMNBVuezJw=="
         }
      ]
   }
}
anna@kiwi:~/Documents/GitProjects/nspcc-dev/neo-go$ curl -d '{ "jsonrpc": "2.0", "id": 1, "method": "getrawtransaction", "params": ["0x971addf41148ba0d75fcb2770b5a1d08672c1ee847c7d9d09e8389d463012c25", 1] }' http://seed1.neo.org:10332 | json_pp
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2196    0  2051  100   145   6542    462 --:--:-- --:--:-- --:--:--  7015
{
   "id" : 1,
   "jsonrpc" : "2.0",
   "result" : {
      "attributes" : [
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         },
         {
            "hash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
            "type" : "Conflicts"
         }
      ],
      "blockhash" : "0x5f3da83d4c2523a30b77cfb83f479e349c494a70243b5870eb4fcba7e5a7f2f0",
      "blocktime" : 1740745586353,
      "confirmations" : 3438774,
      "hash" : "0x971addf41148ba0d75fcb2770b5a1d08672c1ee847c7d9d09e8389d463012c25",
      "netfee" : "47684",
      "nonce" : 0,
      "script" : "DAR0ZXN0EQwU2oH78Ry0Lg9ztIkS3dPGFz+YU/ULFMAfDAh0cmFuc2ZlcgwU9WPqQLwoPU0OBcSOowWz8qBzQO9BYn1bUg==",
      "sender" : "NfqLD2oai2aoNViiV8G3FWWZ2sHTYuy4Hj",
      "signers" : [
         {
            "account" : "0xf553983f17c6d3dd1289b4730f2eb41cf1fb81da",
            "scopes" : "None"
         }
      ],
      "size" : 657,
      "sysfee" : "4977750",
      "validuntilblock" : 6900567,
      "version" : 0,
      "witnesses" : [
         {
            "invocation" : "DEBdK51MlblA89XDrUgz9oBVkxOx/LNCgw8EsRqmALW5eAoFgc9poWBLR4wOGU/ofsJmmJsNZioyWeDYp0oyjl8A",
            "verification" : "DCEC84r6KdzSxD67N0vQ6FWU6DoDg8y8kYWgDDmATSValMNBVuezJw=="
         }
      ]
   }
}

N3 testnet is checked up to 16541169, doesn't have duplicates.

Details
anna@kiwi:~/Documents/GitProjects/nspcc-dev/neo-go$ ./bin/neo-go db checkConflicts -i ../../n3_acc_files/t5_16010229.acc 
processing block 0
processing block 500000
processing block 1000000
processing block 1500000
processing block 2000000
processing block 2500000
processing block 3000000
processing block 3500000
processing block 4000000
processing block 4500000
processing block 5000000
processing block 5500000
processing block 6000000
processing block 6500000
processing block 7000000
processing block 7500000
processing block 8000000
processing block 8500000
processing block 9000000
processing block 9500000
processing block 10000000
processing block 10500000
processing block 11000000
processing block 11500000
processing block 12000000
processing block 12500000
processing block 13000000
processing block 13500000
processing block 14000000
processing block 14500000
processing block 15000000
processing block 15500000
processing block 16000000
16010230

The rest of blocks are checked via RPC using simple unit-test:

=== RUN   TestAnalyzeConflicts
block count: 16541085
processing block 16500000
    x_test.go:56: 
        	Error Trace:	/home/anna/Documents/GitProjects/nspcc-dev/neo-go/x_test.go:56
        	Error:      	Received unexpected error:
        	            	Unknown block (-101)
        	Test:       	TestAnalyzeConflicts
        	Messages:   	16541170

NeoFS mainnet is checked up to 19793860, doesn't have duplicates.

Details
anna@kiwi:~/Documents/GitProjects/nspcc-dev/neo-go$ ./bin/neo-go db checkConflicts -i ../../n3_acc_files/neofs_mainnet_19793860.acc 
processing block 0
processing block 500000
processing block 1000000
processing block 1500000
processing block 2000000
processing block 2500000
processing block 3000000
processing block 3500000
processing block 4000000
processing block 4500000
processing block 5000000
processing block 5500000
processing block 6000000
processing block 6500000
processing block 7000000
processing block 7500000
processing block 8000000
processing block 8500000
processing block 9000000
processing block 9500000
processing block 10000000
processing block 10500000
processing block 11000000
processing block 11500000
processing block 12000000
processing block 12500000
processing block 13000000
processing block 13500000
processing block 14000000
processing block 14500000
processing block 15000000
processing block 15500000
processing block 16000000
processing block 16500000
processing block 17000000
processing block 17500000
processing block 18000000
processing block 18500000
processing block 19000000
processing block 19500000
19793861

NeoFS testnet is checked up to 14406027, doesn't have duplicates.

Details
anna@kiwi:~/Documents/GitProjects/nspcc-dev/neo-go$ ./bin/neo-go db checkConflicts -i ../../n3_acc_files/neofs_testnet_14406027.acc 
processing block 0
processing block 500000
processing block 1000000
processing block 1500000
processing block 2000000
processing block 2500000
processing block 3000000
processing block 3500000
processing block 4000000
processing block 4500000
processing block 5000000
processing block 5500000
processing block 6000000
processing block 6500000
processing block 7000000
processing block 7500000
processing block 8000000
processing block 8500000
processing block 9000000
processing block 9500000
processing block 10000000
processing block 10500000
processing block 11000000
processing block 11500000
processing block 12000000
processing block 12500000
processing block 13000000
processing block 13500000
processing block 14000000
14406028

@AnnaShaleva AnnaShaleva merged commit 76fc43a into master Jun 4, 2026
34 checks passed
@AnnaShaleva AnnaShaleva deleted the fix-conflicts branch June 4, 2026 13:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Avoid duplicate Conflicts attribute

2 participants