Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Temp workaround for SIG_WA deserialize error - breaks indexing on parser 2.1 #96

Open
bensig opened this issue Apr 4, 2022 · 0 comments
Milestone

Comments

@bensig
Copy link

bensig commented Apr 4, 2022

Hopefully this helps someone who is facing the same issue, and or the EOSRIO team is able to patch something

NOTE: This seems to be fixed in the latest https://github.com/EOSIO/eosjs/blob/v22.1.0/src/eosjs-numeric.ts - but that doesn't match the code in addons/eosjs-native

Nodeos version: 2.1
Parser version: 2.1

Ran into an error synchronizing blocks signed with SIG_WA_ - here are 2 examples:
79955656
79996963

Would cause my indexer to kick into constant complaint mode about a missing block:

0|proton-indexer  | 2022-04-03T18:55:51: | SHIP Status Report
0|proton-indexer  | 2022-04-03T18:55:51: | Init block: 2
0|proton-indexer  | 2022-04-03T18:55:51: | Head block: 122792569
0|proton-indexer  | 2022-04-03T18:55:51: Error: unrecognized signature format
0|proton-indexer  | 2022-04-03T18:55:51:     at Object.signatureToString (/opt/eosio/src/Hyperion-History-API/addons/eosjs-native/eosjs-numeric.js:463:15)
0|proton-indexer  | 2022-04-03T18:55:51:     at SerialBuffer.getSignature (/opt/eosio/src/Hyperion-History-API/addons/src/eosjs-serialize.ts:521:24)
0|proton-indexer  | 2022-04-03T18:55:51:     at Object.deserialize (/opt/eosio/src/Hyperion-History-API/addons/src/eosjs-serialize.ts:952:63)
0|proton-indexer  | 2022-04-03T18:55:51:     at Object.deserializeArray [as deserialize] (/opt/eosio/src/Hyperion-History-API/addons/src/eosjs-serialize.ts:701:34)
0|proton-indexer  | 2022-04-03T18:55:51:     at Object.deserializeStruct [as deserialize] (/opt/eosio/src/Hyperion-History-API/addons/src/eosjs-serialize.ts:661:45)
0|proton-indexer  | 2022-04-03T18:55:51:     at Object.deserializeVariant [as deserialize] (/opt/eosio/src/Hyperion-History-API/addons/src/eosjs-serialize.ts:686:36)
0|proton-indexer  | 2022-04-03T18:55:51:     at Object.deserializeStruct [as deserialize] (/opt/eosio/src/Hyperion-History-API/addons/src/eosjs-serialize.ts:661:45)
0|proton-indexer  | 2022-04-03T18:55:51:     at Object.deserializeStruct [as deserialize] (/opt/eosio/src/Hyperion-History-API/addons/src/eosjs-serialize.ts:661:45)
0|proton-indexer  | 2022-04-03T18:55:51:     at Object.deserializeVariant [as deserialize] (/opt/eosio/src/Hyperion-History-API/addons/src/eosjs-serialize.ts:686:36)
0|proton-indexer  | 2022-04-03T18:55:51:     at Object.deserializeStruct [as deserialize] (/opt/eosio/src/Hyperion-History-API/addons/src/eosjs-serialize.ts:661:45)
0|proton-indexer  | 2022-04-03T18:55:51:     at Object.deserializeArray [as deserialize] (/opt/eosio/src/Hyperion-History-API/addons/src/eosjs-serialize.ts:701:34)
0|proton-indexer  | 2022-04-03T18:55:51:     at Object.deserializeStruct [as deserialize] (/opt/eosio/src/Hyperion-History-API/addons/src/eosjs-serialize.ts:661:45)
0|proton-indexer  | 2022-04-03T18:55:51:     at Object.deserializeVariant [as deserialize] (/opt/eosio/src/Hyperion-History-API/addons/src/eosjs-serialize.ts:686:36)
0|proton-indexer  | 2022-04-03T18:55:51:     at Object.deserializeOptional [as deserialize] (/opt/eosio/src/Hyperion-History-API/addons/src/eosjs-serialize.ts:718:32)
0|proton-indexer  | 2022-04-03T18:55:51:     at Object.deserializeStruct [as deserialize] (/opt/eosio/src/Hyperion-History-API/addons/src/eosjs-serialize.ts:661:45)
0|proton-indexer  | 2022-04-03T18:55:51:     at Object.deserializeVariant [as deserialize] (/opt/eosio/src/Hyperion-History-API/addons/src/eosjs-serialize.ts:686:36)
0|proton-indexer  | 2022-04-03T18:55:51: [208714 - 01_reader] Missing block: 79955656 current block: 79955657
0|proton-indexer  | 2022-04-03T18:55:51: Missing block 79955658 received!
0|proton-indexer  | 2022-04-03T18:55:51: [208714 - 01_reader] Missing block: 79955656 current block: 79955658
0|proton-indexer  | 2022-04-03T18:55:51: Missing block 79955659 received!
0|proton-indexer  | 2022-04-03T18:55:51: [208714 - 01_reader] Missing block: 79955656 current block: 79955659
0|proton-indexer  | 2022-04-03T18:55:51: Missing block 79955660 received!
0|proton-indexer  | 2022-04-03T18:55:51: [208714 - 01_reader] Missing block: 79955656 current block: 79955660
0|proton-indexer  | 2022-04-03T18:55:51: Missing block 79955661 received!
0|proton-indexer  | 2022-04-03T18:55:51: [208714 - 01_reader] Missing block: 79955656 current block: 79955661
0|proton-indexer  | 2022-04-03T18:55:51: Missing block 79955662 received!
0|proton-indexer  | 2022-04-03T18:55:51: [208714 - 01_reader] Missing block: 79955656 current block: 79955662
0|proton-indexer  | 2022-04-03T18:55:51: Missing block 79955663 received!
0|proton-indexer  | 2022-04-03T18:55:51: [208714 - 01_reader] Missing block: 79955656 current block: 79955663
0|proton-indexer  | 2022-04-03T18:55:51: Missing block 79955664 received!
0|proton-indexer  | 2022-04-03T18:55:51: [208714 - 01_reader] Missing block: 79955656 current block: 79955664
0|proton-indexer  | 2022-04-03T18:55:51: Missing block 79955665 received!
0|proton-indexer  | 2022-04-03T18:55:51: [208714 - 01_reader] Missing block: 79955656 current block: 79955665
0|proton-indexer  | 2022-04-03T18:55:51: Missing block 79955666 received!
0|proton-indexer  | 2022-04-03T18:55:51: [208714 - 01_reader] Missing block: 79955656 current block: 79955666
0|proton-indexer  | 2022-04-03T18:55:51: Missing block 79955667 received!
0|proton-indexer  | 2022-04-03T18:55:51: [208714 - 01_reader] Missing block: 79955656 current block: 79955667
0|proton-indexer  | 2022-04-03T18:55:51: Missing block 79955668 received!
0|proton-indexer  | 2022-04-03T18:55:51: [208714 - 01_reader] Missing block: 79955656 current block: 79955668

The end of this logfile would just continue to have the same "Missing block" error forever and would not write many blocks to the queue...

I was able to patch the file addons/eosjs-native/eosjs-numeric.jswith an update to translate the WA keytype.

git diff addons/eosjs-native/eosjs-numeric.js
diff --git a/addons/eosjs-native/eosjs-numeric.js b/addons/eosjs-native/eosjs-numeric.js
index 8ed5a78..249ea9d 100644
--- a/addons/eosjs-native/eosjs-numeric.js
+++ b/addons/eosjs-native/eosjs-numeric.js
@@ -308,6 +308,7 @@ var KeyType;
 (function (KeyType) {
     KeyType[KeyType["k1"] = 0] = "k1";
     KeyType[KeyType["r1"] = 1] = "r1";
+    KeyType[KeyType["wa"] = 2] = "wa";
 })(KeyType = exports.KeyType || (exports.KeyType = {}));
 /** Public key data size, excluding type field */
 exports.publicKeyDataSize = 33;
@@ -459,6 +460,8 @@ function signatureToString(signature) {
         return keyToString(signature, 'K1', 'SIG_K1_');
     } else if (signature.type === KeyType.r1) {
         return keyToString(signature, 'R1', 'SIG_R1_');
+    } else if (signature.type === KeyType.wa) {
+       return keyToString(signature, 'WA', 'SIG_WA_');
     } else {
         throw new Error('unrecognized signature format');
     }

Now I am able to completely synchronize the range, even though I am seeing this new error in the pm2 out:

0|proton-indexer  | 2022-04-03T19:44:18: [222902 - 07_deserializer] deserializeNative >> transaction_trace[] >> Bad variant index
0|proton-indexer  | 2022-04-03T19:44:18: [222902 - 07_deserializer] transaction_trace[] deserialization failed with eosjs!
0|proton-indexer  | 2022-04-03T19:44:18: [222902 - 07_deserializer] [WARNING] transaction_trace[] deserialization failed on block 79955656

Nothing shows in the deserialization error logs for these errors.

@igorls igorls added this to the v3.4 milestone Apr 5, 2022
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

No branches or pull requests

2 participants