I have some pallet that provide storage SomeValue
, and this storage was exposed through #[pallet::getter(fn some_value)]
. Having removed this getter in favour of a paged RPC API, I was thinking that this would allow avoiding a malicious client to query repeatedly the entire storage, that potentially could contain a lot of data.
I may have missed the point here, since in the Runtime storage documentation is stated:
The optional getter extension only impact the way that a storage item can be accessed from within Substrate code—you will always be able to query the storage of your runtime to get the value of a storage item.
Therefore,
- is the continued and complete availability of the storage a wanted behaviour of a blockchain?
- Is limiting the amount of data on chain the only strategy preventing an attacker that queries continuously a storage to introduce instability in the system?
- is there a possibility to define some weights in retrieving the chain state?