-
Notifications
You must be signed in to change notification settings - Fork 146
Conversation
Codecov Report
@@ Coverage Diff @@
## master-2.x #140 +/- ##
==============================================
- Coverage 80.54% 80.39% -0.15%
==============================================
Files 45 45
Lines 4580 4545 -35
==============================================
- Hits 3689 3654 -35
Misses 891 891
Continue to review full report at Codecov.
|
Current branch 2.x still has problems, I will check this one now. |
In addition, @shargon, we are also going to include comparison of application logs. |
May I know which storages (mainnet/testnet) are being checked for consistency, and how? Because storage isolation and interop name hashing will likely cause the mainnet storages to not be exactly the same when re-synced from beginning. For example, we ran some functions on mainnet assuming that the name hashing feature is enabled before it actually was. This means that a full re-resync will never be able to get back the same storage state (previously fail, now pass), unless some sort of start-block flag is for these features. The same goes for NEP-8 op-codes. We abandoned addresses and contracts that used these features before they were actually running on consensus nodes, to minimize actual application issues. |
@RavenXce you are correct in this point, but we are testing over the time where these features were included to the chain, so these past events will actually pass, like you explained. So, the changes we are looking for now are much more subtle, related to very recent updates on vm limits checking and similar stuff. NeoResearch "official" database regarding storage is this one: https://github.com/neoresearch/neo-storage-audit |
@igormcoelho okay sure, saw this issue and just wanted to make sure that you guys aren't wasting time looking at the wrong things. Thanks for making sure the vm changes are non-breaking! 👍 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shargon, this surely allows some failed storage persistence to happen again.
I did not investigate if that would be right or not, since it is a revert that covers from 2.10.0 to 2.10.1.
Historically, even if we compare different versions, such as 2.9.4 to 2.9.10, there might differences somewhere.
I am still afraid this is reverting more than necessary
This e615bf5#diff-76ae2659301a783b97ae4c99999464cc produce a difference in the storage
After a lot of hours of research, we found that This produce a difference with the block (testnet) Previously the code was like this: https://github.com/shargon/neo-vm/blob/663e9c8583e9919adbdb88896e42711e8715a69e/src/neo-vm/ExecutionEngine.cs#L1253 Thanks @vncoelho for your amazing work :) |
There are more differences 2.10.1 [FAULT]
2.9.4
|
The difference for block 1568312 is and before was like: neo-vm/src/neo-vm/ExecutionEngine.cs Lines 296 to 312 in 43b357d
|
Whole testnet without issues now! @vncoelho could you confirm? |
Great job, @shargon's brother. |
Amazing work! I'll test it, too. @shargon |
@vncoelho @superboyiii Did you finish your tests? |
Still under evaluation. Some more couple of hours and it will be finished. |
Compared to 2.9.4 still differs: In 2.9.4 Testnet we have 1Changed + 3 Added {"block":759289,"size":4,"storage":[{"state":"Changed","key":"855b8152706e8beb3e3aa4188160a2262a04c85062616c616e63654f700000000000000007","value":"000410460afa00"}
{"state":"Added","key":"855b8152706e8beb3e3aa4188160a2262a04c85070ba03f52af8153d0cc1c781477b8c2600ce05b89c0000000000000000000000000c","value":"0002102700"}
{"state":"Added","key":"855b8152706e8beb3e3aa4188160a2262a04c850746f74616c537570706c79000000000005","value":"0002102700"}
{"state":"Added","key":"855b8152706e8beb3e3aa4188160a2262a04c850747275650000000000000000000000000c","value":"00047472756500"}]} While in this current branch we also have this storage ( 1Changed + 3 Added + 1 Added): {"state":"Added","key":"855b8152706e8beb3e3aa4188160a2262a04c85064656661756c7400000000000000000009","value":"001544656661756c7420726573756c742068657265212100"}]} |
Compared to 2.10.0 it looks like to be exactly the same. Great job @shargon. |
could you confirm the 2.9.4 differences? |
I posted it above, @shargon. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Compared to 2.10.0 it is exactly the same.
A temporally .zip with the storages for testnet can be download here: https://www.dropbox.com/s/44w5o0k9gpp7ybv/Storage_2.10.2.zip?dl=0
1GB but only 89MB when zipped! O.o
Let's continue the tests on PR138. |
@jsolman, this current branch may solve any compatibility problem that were experienced in early versions of 2.10.1. |
I finished syncing MainNet and the results for balances look good after these changes. |
The same to mine. |
Version 2.10.1 have differences with the storages, so i think that we should revert all of these new verifications that not exists previously on 2.9.x
TODO: We should test if the problem is solved with these patch