neo-project / neo-modules

MIT License
60 stars 100 forks source link

Transaction Attribute Type Conflict results in crash in RpcClient #829

Closed Devel484 closed 11 months ago

Devel484 commented 11 months ago

Mainnet Block 4125582 results in the following exception if tried to query by C# RpcClient:3.6.0.

Unhandled exception. System.FormatException: One of the identified items was in an invalid format.
   at Neo.Network.RPC.Utility.TransactionAttributeFromJson(JObject json)
   at Neo.Network.RPC.Utility.<>c.<TransactionFromJson>b__9_1(JToken p)
   at System.Linq.Enumerable.SelectIListIterator`2.ToArray()
   at Neo.Network.RPC.Utility.TransactionFromJson(JObject json, ProtocolSettings protocolSettings)
   at Neo.Network.RPC.Utility.<>c__DisplayClass6_0.<BlockFromJson>b__0(JToken p)
   at System.Linq.Enumerable.SelectIListIterator`2.ToArray()
   at Neo.Network.RPC.Utility.BlockFromJson(JObject json, ProtocolSettings protocolSettings)
   at Neo.Network.RPC.Models.RpcBlock.FromJson(JObject json, ProtocolSettings protocolSettings)
   at Neo.Network.RPC.RpcClient.GetBlockAsync(String hashOrIndex)
   at GhostMarket.Blockchain.EVM.BlockProcessing_StartHere.Main(String[] args) in Program.cs:line 63
   at GhostMarket.Blockchain.EVM.BlockProcessing_StartHere.<Main>(String[] args)

The JSON returned by RPC for Block 4125582

{
    "hash":"0x4f39c229de6f8a4bc95a57fbd1df7789082afcccfb0a878944f58976a899910d",
    "size":3281,
    "version":0,
    "previousblockhash":"0x353be3df8070580e40e800c8f640f7e128b26a3411e166515417a754022b3aa6",
    "merkleroot":"0x3b0b969735eaf571e90282933f00a109dbdd1d7aca3d357fc8a4c8f7738b53d3",
    "time":1695304763831,
    "nonce":"2EE82BE7F10C44FF",
    "index":4125582,
    "primary":6,
    "nextconsensus":"NSiVJYZej4XsxG5CUpdwn7VRQk8iiiDMPM",
    "witnesses":[
        {
            "invocation":"DEC7FpIdZc6gvc2Sg80icjGMZbT5PbXTIvfJZsnUiVH\u002BQNtvHN7XMSD31XwiXsPIeF0Rp2jVIzttXfB50yiQYqARDECw9kzYzJzPfrSTpjrU2fqAEgq1qwULTsqe\u002Ba7rbHGic2jPkoFIJmiXWcTGa56t1u0Tdu4fWesFFPE3z4JMJwknDECw1JmjH1mtCz\u002BMurdLb2SFme/rQ6vYKZjkq6yLsIZn6n/y/nCMOf\u002BRz/qrpNGZzRCHGTfZ8GI0psCLSKC8lVW2DEAafICZSidHPSyoN5aBu1GirS7glNr6CRkYLneUWgWaNGou9UPP2HPt3CF8SZZSeWpEjQIWYhaBu93\u002B9Y5sJ6YgDEBWzbonD7h3YTB/CdFUhOHdOO6GRsrowF0F5h1Lh6DxDRQ2q0yhNfKFIF2J3Cnu7ZftTkselbEszdKlPAuDQAVG",
            "verification":"FQwhAjmjdDZlL0GzuALKRMvLfWXTqguIyaA4AkO9vhqqXLNbDCECSG/RVwLESQomcDESpcwdCSP9aXozQGvVocAOABOwmnAMIQKq7DhHD2qtAELG6HfP2Ah9Jnaw9Rb93TYoAbm9OTY5ngwhA7IJ/U9TpxcOpERODLCmu2pTwr0BaSaYnPhfmw\u002B6F6cMDCEDuNnVdx2PUTqghpucyNUJhkA7eMbaNokGOMPUalrc4EoMIQLKDidpe5wkj28W4IX9AGHib0TahbWO6DXBEMql7DulVAwhA9nosWvZsi0zRdbUzeMb4cPh0WFTLj0MzsuV7OLrWDNuF0Ge0Nw6"
        }
    ],
    "tx":[
        {
            "hash":"0x65f99cc6f6c8c4d703584b9a255659496ef0c839d2e2ad077a27ecc2e70f384c",
            "size":1017,
            "version":0,
            "nonce":3319058752,
            "sender":"Niiqku5Q9pJtjwA7HyRceLqQzyS9LPbzty",
            "sysfee":"54675290",
            "netfee":"200052",
            "validuntilblock":4125611,
            "signers":[
                {
                    "account":"0xbefbb530f037e2a45b0e5a8942dee07bcb1d30fa",
                    "scopes":"CustomContracts",
                    "allowedcontracts":[
                        "0xf0151f528127558851b39c2cd8aa47da7418ab28",
                        "0xd1a9f78e1940f6322fef4df2340a963a9ec46f63",
                        "0x4d5a85b0c83777df72cfb665a933970e4e20c0ec",
                        "0x171d791c0301c332cfe95c6371ee32965e34b606",
                        "0x236a6679dc26b5f11fae7c3b30784509216dd4b0",
                        "0x369656cbd989980d3fb33932031c78c3ec324c05",
                        "0x9770f4d78a19d1a6fa94b472bcedffcc06b56c49",
                        "0x9f193ba476c934dd8847df26684063b2987b7508",
                        "0x77994db5591ff4869d72fa31ffe3ace8d6435e6d",
                        "0x5b9994263b9aa60436c74b5f996bd36aad9afb32",
                        "0x340720c7107ef5721e44ed2ea8e314cce5c130fa",
                        "0x85a2053d65dcbda9208e2a7cfa65a9db09a1cf11",
                        "0x2d4c6cf0417209a7eb410160344e224e74f87195",
                        "0x5faf5e07e2dc09d1315cf6a49699be3feb0377d0"
                    ]
                }
            ],
            "attributes":[

            ],
            "script":"DBTswCBODpczqWW2z3LfdzfIsIVaTQwU\u002BjAdy3vg3kKJWg5bpOI38DC1\u002B74SwB8MCGNsYWltRkxNDBRjb8SeOpYKNPJN7y8y9kAZjvep0UFifVtSDBQGtjReljLucWNc6c8ywwEDHHkdFwwU\u002BjAdy3vg3kKJWg5bpOI38DC1\u002B74SwB8MCGNsYWltRkxNDBRjb8SeOpYKNPJN7y8y9kAZjvep0UFifVtSDBSw1G0hCUV4MDt8rh/xtSbceWZqIwwU\u002BjAdy3vg3kKJWg5bpOI38DC1\u002B74SwB8MCGNsYWltRkxNDBRjb8SeOpYKNPJN7y8y9kAZjvep0UFifVtSDBQIdXuYsmNAaCbfR4jdNMl2pDsZnwwU\u002BjAdy3vg3kKJWg5bpOI38DC1\u002B74SwB8MBWNsYWltDBQFTDLsw3gcAzI5sz8NmInZy1aWNkFifVtSDBRtXkPW6Kzj/zH6cp2G9B9ZtU2ZdwwU\u002BjAdy3vg3kKJWg5bpOI38DC1\u002B74SwB8MBWNsYWltDBQFTDLsw3gcAzI5sz8NmInZy1aWNkFifVtSDBQRz6EJ26ll\u002BnwqjiCpvdxlPQWihQwU\u002BjAdy3vg3kKJWg5bpOI38DC1\u002B74SwB8MBWNsYWltDBQy\u002B5qtatNrmV9LxzYEppo7JpSZW0FifVtSDBTQdwPrP76ZlqT2XDHRCdziB16vXwwU\u002BjAdy3vg3kKJWg5bpOI38DC1\u002B74SwB8MBWNsYWltDBQy\u002B5qtatNrmV9LxzYEppo7JpSZW0FifVtS",
            "witnesses":[
                {
                    "invocation":"DEAeDzfPlvWlDbCFECdzc6l1qJDhGMoTEqqn4THUrkwfs/l5fz\u002ByefBjhWqR4WqVoBkgJ5/czQ9vzBREEW1ff2b1",
                    "verification":"DCEDmA0UeYGFXEXbb7qWBKOMmu5fGaHGSiHJEwATMlUHXw9BVuezJw=="
                }
            ]
        },
        {
            "hash":"0x69fa0b479e4d318e49640f240664c20fafe87005211818b8b6e08b80294a698a",
            "size":1567,
            "version":0,
            "nonce":2384213447,
            "sender":"NUrJ5AMhdyLphzA9q4tyZq7p7KjL1iEuik",
            "sysfee":"1000000",
            "netfee":"255232",
            "validuntilblock":4125582,
            "signers":[
                {
                    "account":"0x0ec5a74fa7c21e5db2599b723956e641d43b0762",
                    "scopes":"CalledByEntry"
                }
            ],
            "attributes":[
                {
                    "type":"Conflicts",
                    "hash":"0x33bebebdc7c91b5ef905283908d4d61f97bf4ca48984b4c7a96df307a70c4259"
                },
                {
                    "type":"Conflicts",
                    "hash":"0x4d369a56b3f9f949106f602459a83bfba5ecea4540febef0a893803c6c55d4bc"
                },
                {
                    "type":"Conflicts",
                    "hash":"0xf1e70c20c69605569cd14a1a06dbb600573987e737e8b7c3491a38356da083f3"
                }
            ],
            "script":"DcQEaXQgaXMgZGlzYXBwb2ludGVkIHRvIGFubm91bmNlIHRvIGV2ZXJ5b25lOiB3aGVuIHRoaXMgdHJhbnNhY3Rpb24gaGFzIGJlZW4gcGFja2VkIHRvIHRoZSBuZW8gY2hhaW4sIG5lbydzIGNvbnNlbnN1cyBub2RlcyBoYXZlIGJlZW4gdXBkYXRlZCB0byB2My42LjAgd2l0aCB0aGUgcHVibGljIHJpc2sgb2YgYWxsIGtpbmRzIG9mIGFzc2V0cyBvbmNoYWluIGJlaW5nIGRvdWJsZSBzcGVudCB3aXRob3V0IGFueSBwcm90ZWN0aXZlIG1lYXN1cmVzLg0KDQpZT1UgU0hPVUxEIEJFIENMRUFSIFRIQVQgSVQgQ09VTEQgTEVBRCBUTyBBIEZPUksgT1IgV09SU0UgU1RJTEwsIFRIQVQgQSBUSElSRCBQQVJUWSBBQlVTRVMgU0FJRCBBVFRBQ0sgQU5EIFlPVSBBUkUgRElSRUNUTFkgT1IgSU5ESVJFQ1RMWSBSRVNQT05TSUJMRSBGT1IgSVRTIEVYUExPSVRBVElPTi4NCg0KdGhlIGZvbGxvd2luZyBpcyB0aGUgbGlzdCBvZiBhZGRyZXNzZXMgb2YgY3VycmVudCBlbGVjdGVkIGNvbnNlbnN1cyBub2RlcyAocmFua2VkIGJ5IHZvdGVzKToNCjEuIE5TUENDcHc4WW1nTkRZV2lCZlhKSFJmejM4TkRqdjZXVzMNCjIuIE5aZUFhcm4zVU1DcU5zVHltVE1GMlBuNlg3WXczR2hxRHYNCjMuIE5URTh3VURTWFZrN29xYkcxa1pLVHhTUFg1WGoybnNMamQNCjQuIE5qMzlNOTdSazJlMjNKaVVMQkJNUW12cGNuS2FSSHF4RmYNCjUuIE5ZejRFZ2RzTTFBVE5lZEFieEZKdzQ5OWtEQldoYzh1dXQNCjYuIE5odnBvMWt6MWl2OEt1QkIxS0dBYlV4SGV0NFYxR3p6NHUNCjcuIE5WMTdrOTR5NUpTNG1CakVUbWVLeUhzM3kza3hFZmlSc00NCg0KdGhpcyB0cmFuc2FjdGlvbiBpcyBwYWNrZWQgYnkgTlNQQ0MgKGFkZHJlc3M6IGBOU1BDQ3B3OFltZ05EWVdpQmZYSkhSZnozOE5EanY2V1czYCkuDQp0aGUgZXZlbnQgaGFzIGJlZW4gd3JpdHRlbiBvbiB0aGUgbmVvIGNoYWluLg0KDQp0aGlzIHRyYW5zYWN0aW9uIGZvciBkZXRlY3RpbmcgdGhlIHVwZ3JhZGUgaXMgbm90IGV4cGVjdGVkIHRvIGhhdmUgYW55IG5lZ2F0aXZlIGltcGFjdCBvbiBuZW8uIHNvIGFueW9uZSBpcyBhdXRob3JpemVkIHRvIHJvbGxiYWNrLCBkZWxldGUgb3Igc3RyaWtlIG91dCB0aGlzIHRyYW5zYWN0aW9uIGlmIG5lY2Vzc2FyeS4gKHRoaXMgY2FuIGRlZmluaXRlbHkgYmUgZG9uZS4gd2hlbiB0aGUgdXBncmFkZSBkZWNpc2lvbiBpcyBtYWRlLCB0aGUgcm9sbGJhY2sgcGxhbiBzaG91bGQgYmUgcmVhZHkpDQoRDBRiBzvUQeZWOXKbWbJdHsKnT6fFDgwUYgc71EHmVjlym1myXR7Cp0\u002BnxQ4UwB8MCHRyYW5zZmVyDBTPduKL0AYsSkeO41VhARMZ88\u002Bk0kFifVtS",
            "witnesses":[
                {
                    "invocation":"DEDVTuEASv9nzTpBOcAHY5klVi9\u002BGVaEMtRLzvyhWhQygDyD829XMENb0NosjB5/YT0c3ZMej2BnJz7PloipDYYy",
                    "verification":"DCEDBjhqME/sPuEoZPlSdUDjfkvxvMD30UduFnTxH3ljs4ZBVuezJw=="
                }
            ]
        }
    ],
    "confirmations":4089,
    "nextblockhash":"0x815d4db13879d9a30a5fe361e747f29765a5a3111edc0e6f60c48b98faa78389"
}

https://github.com/neo-project/neo-modules/blob/718e72e22e71fd612bc3937cd627484185688330/src/RpcClient/Utility.cs#L188-L202

Issue is that there is no case for TransactionAttributeType.Conflicts(and TransactionAttributeType.NotValidBefore) resulting in the default case -> FormatException