neo-modules icon indicating copy to clipboard operation
neo-modules copied to clipboard

Oracle Response with different result always stay in the queue

Open cloud8little opened this issue 4 years ago • 0 comments

Describe the bug

https://github.com/neo-project/neo/issues/2516

When deal with massive oracle requests, oracle response with different result always stay in the oracle request memory.

Each oracle node will construct its oracle response with the signature,

https://github.com/neo-project/neo-modules/blob/9d1166a86309a54095b595a27b49fba2c850c864/src/OracleService/OracleService.cs#L244-L278 and then send the submitoracleresponse request to other oracle nodes.

when another oracle node receive the rpc request, it will get the url response and construct a new response tx body, and then verify the signature, since the result data is different(for example, a url return a random number), it will fail to check the signature, and then fail to relay a complete response tx. https://github.com/neo-project/neo-modules/blob/9d1166a86309a54095b595a27b49fba2c850c864/src/OracleService/OracleService.cs#L175-L199

expect result is to deal with in the backup sign tx in the first piece code, while when massive oracle request continuously received, it will be out of the refresh interval(CURRENTLY only 3~6 minutes requests will be dealt with). and it will not be able to be dealt with afterwards.

cloud8little avatar Jul 02 '21 04:07 cloud8little