mirror of
https://github.com/tendermint/tendermint.git
synced 2026-05-02 21:35:44 +00:00
almost
This commit is contained in:
44
types/proto3/block.proto
Normal file
44
types/proto3/block.proto
Normal file
@@ -0,0 +1,44 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package proto3;
|
||||
|
||||
|
||||
message PartSetHeader {
|
||||
sint32 Total = 1;
|
||||
bytes Hash = 2;
|
||||
}
|
||||
|
||||
message BlockID {
|
||||
bytes Hash = 1;
|
||||
PartSetHeader PartsHeader = 2;
|
||||
}
|
||||
|
||||
message Header {
|
||||
// basic block info
|
||||
string ChainID = 1;
|
||||
sint64 Height = 2;
|
||||
Timestamp Time = 3;
|
||||
sint64 NumTxs = 4;
|
||||
|
||||
// prev block info
|
||||
BlockID LastBlockID = 5;
|
||||
sint64 TotalTxs = 6;
|
||||
|
||||
// hashes of block data
|
||||
bytes LastCommitHash = 7; // commit from validators from the last block
|
||||
bytes DataHash = 8; // transactions
|
||||
|
||||
// hashes from the app output from the prev block
|
||||
bytes ValidatorsHash = 9; // validators for the current block
|
||||
bytes ConsensusHash = 10; // consensus params for current block
|
||||
bytes AppHash = 11; // state after txs from the previous block
|
||||
bytes LastResultsHash = 12; // root hash of all results from the txs from the previous block
|
||||
|
||||
// consensus info
|
||||
bytes EvidenceHash = 13; // evidence included in the block
|
||||
}
|
||||
|
||||
message Timestamp {
|
||||
sint64 seconds = 1;
|
||||
sint32 nanos = 2;
|
||||
}
|
||||
59
types/proto3_test.go
Normal file
59
types/proto3_test.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"github.com/tendermint/tendermint/types/proto3"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/golang/protobuf/proto"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestProto3Compatibility(t *testing.T) {
|
||||
// TODO(ismail): table tests instead...
|
||||
tm, err := time.Parse("Mon Jan 2 15:04:05 -0700 MST 2006", "Mon Jan 2 15:04:05 -0700 MST 2006")
|
||||
assert.NoError(t, err)
|
||||
|
||||
pbHeader := proto3.Header{
|
||||
ChainID: "cosmos",
|
||||
Height:150,
|
||||
Time: &proto3.Timestamp{Seconds:tm.Unix(), Nanos:int32(tm.Nanosecond())},
|
||||
NumTxs: 7,
|
||||
LastBlockID: &proto3.BlockID{
|
||||
Hash: []byte("some serious hashing"),
|
||||
PartsHeader:&proto3.PartSetHeader{
|
||||
Total: 8,
|
||||
Hash: []byte("some more serious hashing"),
|
||||
},
|
||||
},
|
||||
TotalTxs: 100,
|
||||
LastCommitHash: []byte("commit hash"),
|
||||
DataHash: []byte("data hash"),
|
||||
ValidatorsHash:[]byte("validators hash"),
|
||||
|
||||
}
|
||||
// TODO(ismail): add another test where parts are missing (to see if default values are treated equiv.)
|
||||
aminoHeader := Header{
|
||||
ChainID: "cosmos",
|
||||
Height:150,
|
||||
Time: tm,
|
||||
NumTxs: 7,
|
||||
LastBlockID: BlockID{
|
||||
Hash: []byte("some serious hashing"),
|
||||
PartsHeader: PartSetHeader{
|
||||
Total: 8,
|
||||
Hash: []byte("some more serious hashing"),
|
||||
},
|
||||
},
|
||||
TotalTxs: 100,
|
||||
LastCommitHash: []byte("commit hash"),
|
||||
DataHash: []byte("data hash"),
|
||||
ValidatorsHash:[]byte("validators hash"),
|
||||
}
|
||||
ab, err := cdc.MarshalBinaryBare(aminoHeader)
|
||||
assert.NoError(t, err, "unexpected error")
|
||||
|
||||
pb, err := proto.Marshal(&pbHeader)
|
||||
assert.NoError(t, err, "unexpected error")
|
||||
// This works:
|
||||
assert.Equal(t, ab, pb, "encoding doesn't match")
|
||||
}
|
||||
Reference in New Issue
Block a user