The issue where it seemed like some validators were not producing blocks is now resolved. In summary, the issue is caused due to conflicts that arose with multiple client versions.
Key Insights:
-
Mainnet 3 (v0.16.3) introduced new API
v1beta2
, an upgrade fromv1beta1
. For example,akash.deployment.v1beta1.MsgCreateDeployment
TX type is nowakash.deployment.v1beta2.MsgCreateDeployment
-
This upgrade means v0.16.3 will no longer parse
v1beta1
, The assumption was this is fine as long as there are no newv1beta
transactions are being create. Unfortunately, not everyone upgraded to Mainnet 3 (v0.16.3) and we started noticing bug reports -
To enable newer client to process older message types, we introduced reverse compatibly with Patch #1605 that released with v0.16.4
-
Naturally, not everyone upgraded to v0.16.4 and majority of validators still run v0.16.3
-
A client using version
v0.14.x
sentakash.cert.v1beta1.MsgCreateCertificate
TX that was received by an RPC server onv0.16.4
and ended up in validators mempools, during block commit validators onv0.16.3
rejected transaction as invalid whereas onesv0.16.4
included it into the block. -
The conflict arose when the majority set on
v0.16.3
rejected the block proposed by the minority set onv0.16.4
as they deemedakash.cert.v1beta1.MsgCreateCertificate
invalid message type. -
The conflict was resolved when
v0.16.4
validators rolled back the “bad” TX and resync with a good state approved by the majority set onv0.16.3
. Validators are currently in the process of resolving version parity by upgrading tov0.16.4
.