Skip to content

Distance oracle must have state to download WoT

I have this in the logs of my distance oracle:

Cannot create RPC client: Rpc(ClientError(Call(ErrorObject { code: ServerError(-32000), message: "Client error: UnknownBlock: State already discarded for 0xc5aa6d4d5929c8bd22af44f51db17bb5121e248d5eb7e1482f92c90ee5f2c625", data: None })))

I do not know why I did not encounter this error before (maybe because of the higher sampling period), but it makes sense since:

  • my validator node is configured with light pruning profile (keeps states of latest 256 block only)
  • my distance oracle is configured to fetch wot from my validator RPC

There are multiple solutions to this problem:

  • increase the retaining duration of smith node up to the needs of distance oracle
  • set the distance oracle endpoint to an other node which keeps more states
  • start the distance oracle more frequently to request latest state as soon as possible

Right now the distance sessions are based on sessions (1h = 600 blocks > 256). But when we will use runtime 802 (with #202 (closed) in !252 (merged)), it will be based on evaluation period (3*7 blocks = 21 block = 126 s ~= 2 min):

type EvaluationPeriod = frame_support::traits::ConstU32<7>;

By chance this falls below the 256 value, but this should at least be mentioned in the oracle documentation.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information