How can I do state manipulations independent of transactions // block handling


#1

Starting from the sdk-application-tutorial it is easily possible to modify the handling of transactions, include new transactions etc…

I also want to modify what happens each block, in lotion.js there is the block handler for this, how is it possible with the Cosmos-SDK? It should only happen once each block and be independent of incoming txs


#2

I found a solution:

So one has to set an EndBlock function in app.go like:
app.SetEndBlocker(app.blaTerror)

app.blaTerror is the function that one wants to execute at each block, an example can be seen in the commit. There just for testing a panic is caused, it should be panic(“penis”), the next commit resolves this mistake and works.

I don’t know if this is the intended way to to it, so if someone who is working on the SDK can comment, would be great still


#3

Yes, that is exactly the way to do it - you can also run a function at the beginning of each block (before any transactions are processed) with app.SetBeginBlocker.