gnolang / gno

Gno: An interpreted, stack-based Go virtual machine to build succinct and composable apps + Gno.land: a blockchain for timeless code and fair open-source
https://gno.land/
Other
841 stars 342 forks source link

Pro and Cons to be evaluated: Incompatible ABCI proto field number with current Tendermint ABCI #333

Open piux2 opened 1 year ago

piux2 commented 1 year ago

The RequestBase makes gno ABCI proto field number +1 than the existing proto filed number in tendermint

This could make the VM not compatible with the existing tendermint ABCI. However, it may not be a problem if gnoland runs as a standalone chain.

It might be an issue down the line to port the gno VM module to another tendermint chain.

Another impact could be the IBC integration, which is yet to be evaluated.

GNO

https://github.com/gnolang/gno/blob/master/pkgs/bft/abci/types/abci.proto#L51

message RequestBeginBlock {
    RequestBase RequestBase = 1;
    bytes Hash = 2;
    google.protobuf.Any Header = 3;
    LastCommitInfo LastCommitInfo = 4;
}

Tendermint

https://github.com/tendermint/tendermint/blob/main/proto/tendermint/abci/types.proto

message RequestBeginBlock {
  bytes                   hash                 = 1;
  tendermint.types.Header header               = 2 [(gogoproto.nullable) = false];
  CommitInfo              last_commit_info     = 3 [(gogoproto.nullable) = false];
  repeated Misbehavior    byzantine_validators = 4 [(gogoproto.nullable) = false];
}

https://github.com/tendermint/tendermint/blob/main/spec/abci/abci++_methods.md#beginblock

moul commented 1 year ago

The whole ABCI stuff may eventually be removed from Gno and Tendermint2 at some point since we're making a simpler version of Tendermint1 with a focus on a unique language.

Let's keep this issue open for additional feedback.