Browse Source

almost

pull/1742/head
Liamsi 7 years ago
parent
commit
82104c9329
2 changed files with 103 additions and 0 deletions
  1. +44
    -0
      types/proto3/block.proto
  2. +59
    -0
      types/proto3_test.go

+ 44
- 0
types/proto3/block.proto View 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
- 0
types/proto3_test.go View 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")
}

Loading…
Cancel
Save