OSDN Git Service

rename (#465)
[bytom/vapor.git] / protocol / bc / types / block_header_test.go
index 6bbd5b4..c75bbf4 100644 (file)
@@ -9,9 +9,9 @@ import (
 
        "github.com/davecgh/go-spew/spew"
 
-       "github.com/vapor/encoding/blockchain"
-       "github.com/vapor/errors"
-       "github.com/vapor/testutil"
+       "github.com/bytom/vapor/encoding/blockchain"
+       "github.com/bytom/vapor/errors"
+       "github.com/bytom/vapor/testutil"
 )
 
 func TestBlockHeader(t *testing.T) {
@@ -19,11 +19,12 @@ func TestBlockHeader(t *testing.T) {
                Version:           1,
                Height:            432234,
                PreviousBlockHash: testutil.MustDecodeHash("c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0"),
-               Timestamp:         1522908275,
+               Timestamp:         1522908275000,
                BlockCommitment: BlockCommitment{
                        TransactionStatusHash:  testutil.MustDecodeHash("b94301ea4e316bee00109f68d25beaca90aeff08e9bf439a37d91d7a3b5a1470"),
                        TransactionsMerkleRoot: testutil.MustDecodeHash("ad9ac003d08ff305181a345d64fe0b02311cc1a6ec04ab73f3318d90139bfe03"),
                },
+               BlockWitness: BlockWitness{Witness: [][]byte{[]byte{0xbe, 0xef}}},
        }
 
        wantHex := strings.Join([]string{
@@ -31,10 +32,11 @@ func TestBlockHeader(t *testing.T) {
                "01",     // version
                "eab01a", // block height
                "c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0", // prev block hash
-               "f3f896d605", // timestamp
-               "40",         // commitment extensible field length
+               "b8c2a0a3a92c", // timestamp
+               "40",           // commitment extensible field length
                "ad9ac003d08ff305181a345d64fe0b02311cc1a6ec04ab73f3318d90139bfe03", // transactions merkle root
                "b94301ea4e316bee00109f68d25beaca90aeff08e9bf439a37d91d7a3b5a1470", // tx status hash
+               "040102beef", //BlockWitness
        }, "")
 
        gotHex := testutil.Serialize(t, blockHeader)
@@ -68,21 +70,23 @@ func TestMarshalBlockHeader(t *testing.T) {
                                Version:           1,
                                Height:            10000,
                                PreviousBlockHash: testutil.MustDecodeHash("c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0"),
-                               Timestamp:         1528945000,
+                               Timestamp:         1528945000000,
                                BlockCommitment: BlockCommitment{
                                        TransactionsMerkleRoot: testutil.MustDecodeHash("ad9ac003d08ff305181a345d64fe0b02311cc1a6ec04ab73f3318d90139bfe03"),
                                        TransactionStatusHash:  testutil.MustDecodeHash("b94301ea4e316bee00109f68d25beaca90aeff08e9bf439a37d91d7a3b5a1470"),
                                },
+                               BlockWitness: BlockWitness{Witness: [][]byte{[]byte{0xbe, 0xef}}},
                        },
                        wantHex: strings.Join([]string{
                                "01",   // serialization flags
                                "01",   // version
                                "904e", // block height
                                "c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0", // prev block hash
-                               "e8b287d905", // timestamp
-                               "40",         // commitment extensible field length
+                               "c0fce4e1bf2c", // timestamp
+                               "40",           // commitment extensible field length
                                "ad9ac003d08ff305181a345d64fe0b02311cc1a6ec04ab73f3318d90139bfe03", // transactions merkle root
                                "b94301ea4e316bee00109f68d25beaca90aeff08e9bf439a37d91d7a3b5a1470", // tx status hash
+                               "040102beef", //BlockWitness
                        }, ""),
                },
                {
@@ -90,11 +94,12 @@ func TestMarshalBlockHeader(t *testing.T) {
                                Version:           1,
                                Height:            9223372036854775808, // Height > MaxInt64(9223372036854775807)
                                PreviousBlockHash: testutil.MustDecodeHash("c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0"),
-                               Timestamp:         1528945000,
+                               Timestamp:         1528945000000,
                                BlockCommitment: BlockCommitment{
                                        TransactionsMerkleRoot: testutil.MustDecodeHash("ad9ac003d08ff305181a345d64fe0b02311cc1a6ec04ab73f3318d90139bfe03"),
                                        TransactionStatusHash:  testutil.MustDecodeHash("b94301ea4e316bee00109f68d25beaca90aeff08e9bf439a37d91d7a3b5a1470"),
                                },
+                               BlockWitness: BlockWitness{Witness: [][]byte{[]byte{0xbe, 0xef}}},
                        },
                        wantError: blockchain.ErrRange,
                },
@@ -108,6 +113,7 @@ func TestMarshalBlockHeader(t *testing.T) {
                                        TransactionsMerkleRoot: testutil.MustDecodeHash("ad9ac003d08ff305181a345d64fe0b02311cc1a6ec04ab73f3318d90139bfe03"),
                                        TransactionStatusHash:  testutil.MustDecodeHash("b94301ea4e316bee00109f68d25beaca90aeff08e9bf439a37d91d7a3b5a1470"),
                                },
+                               BlockWitness: BlockWitness{Witness: [][]byte{[]byte{0xbe, 0xef}}},
                        },
                        wantError: blockchain.ErrRange,
                },
@@ -116,17 +122,99 @@ func TestMarshalBlockHeader(t *testing.T) {
                                Version:           1,
                                Height:            9223372036854775807, // MaxInt64(9223372036854775807)
                                PreviousBlockHash: testutil.MustDecodeHash("c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0"),
-                               Timestamp:         1528945000,
+                               Timestamp:         1528945000000,
+                               BlockWitness:      BlockWitness{Witness: [][]byte{[]byte{0xbe, 0xef}}},
                        },
                        wantHex: strings.Join([]string{
                                "01",                 // serialization flags
                                "01",                 // version
                                "ffffffffffffffff7f", // block height
                                "c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0", // prev block hash
-                               "e8b287d905", // timestamp
-                               "40",         // commitment extensible field length
+                               "c0fce4e1bf2c", // timestamp
+                               "40",           // commitment extensible field length
                                "0000000000000000000000000000000000000000000000000000000000000000", // transactions merkle root
                                "0000000000000000000000000000000000000000000000000000000000000000", // tx status hash
+                               "040102beef", //BlockWitness
+                       }, ""),
+               },
+               {
+                       blockHeader: &BlockHeader{
+                               Version:           1,
+                               Height:            9223372036854775807, // MaxInt64(9223372036854775807)
+                               PreviousBlockHash: testutil.MustDecodeHash("c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0"),
+                               Timestamp:         1528945000000,
+                               BlockWitness:      BlockWitness{Witness: [][]byte{[]byte{0xbe, 0xef}, []byte{0xab, 0xcd}, []byte{0xcd, 0x68}}},
+                       },
+                       wantHex: strings.Join([]string{
+                               "01",                 // serialization flags
+                               "01",                 // version
+                               "ffffffffffffffff7f", // block height
+                               "c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0", // prev block hash
+                               "c0fce4e1bf2c", // timestamp
+                               "40",           // commitment extensible field length
+                               "0000000000000000000000000000000000000000000000000000000000000000", // transactions merkle root
+                               "0000000000000000000000000000000000000000000000000000000000000000", // tx status hash
+                               "0a0302beef02abcd02cd68", //BlockWitness
+                       }, ""),
+               },
+               {
+                       blockHeader: &BlockHeader{
+                               Version:           1,
+                               Height:            9223372036854775807, // MaxInt64(9223372036854775807)
+                               PreviousBlockHash: testutil.MustDecodeHash("c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0"),
+                               Timestamp:         1528945000000,
+                               BlockWitness:      BlockWitness{Witness: [][]byte{[]byte{0xbe, 0xef}, nil, []byte{0xcd, 0x68}}},
+                       },
+                       wantHex: strings.Join([]string{
+                               "01",                 // serialization flags
+                               "01",                 // version
+                               "ffffffffffffffff7f", // block height
+                               "c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0", // prev block hash
+                               "c0fce4e1bf2c", // timestamp
+                               "40",           // commitment extensible field length
+                               "0000000000000000000000000000000000000000000000000000000000000000", // transactions merkle root
+                               "0000000000000000000000000000000000000000000000000000000000000000", // tx status hash
+                               "080302beef0002cd68", //BlockWitness
+                       }, ""),
+               },
+               {
+                       blockHeader: &BlockHeader{
+                               Version:           1,
+                               Height:            9223372036854775807, // MaxInt64(9223372036854775807)
+                               PreviousBlockHash: testutil.MustDecodeHash("c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0"),
+                               Timestamp:         1528945000000,
+                               BlockWitness:      BlockWitness{Witness: [][]byte{[]byte{0xbe, 0xef}, []byte{}, []byte{0xcd, 0x68}}},
+                       },
+                       wantHex: strings.Join([]string{
+                               "01",                 // serialization flags
+                               "01",                 // version
+                               "ffffffffffffffff7f", // block height
+                               "c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0", // prev block hash
+                               "c0fce4e1bf2c", // timestamp
+                               "40",           // commitment extensible field length
+                               "0000000000000000000000000000000000000000000000000000000000000000", // transactions merkle root
+                               "0000000000000000000000000000000000000000000000000000000000000000", // tx status hash
+                               "080302beef0002cd68", //BlockWitness
+                       }, ""),
+               },
+               {
+                       blockHeader: &BlockHeader{
+                               Version:           1,
+                               Height:            9223372036854775807, // MaxInt64(9223372036854775807)
+                               PreviousBlockHash: testutil.MustDecodeHash("c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0"),
+                               Timestamp:         1528945000000,
+                               BlockWitness:      BlockWitness{Witness: [][]byte{}},
+                       },
+                       wantHex: strings.Join([]string{
+                               "01",                 // serialization flags
+                               "01",                 // version
+                               "ffffffffffffffff7f", // block height
+                               "c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0", // prev block hash
+                               "c0fce4e1bf2c", // timestamp
+                               "40",           // commitment extensible field length
+                               "0000000000000000000000000000000000000000000000000000000000000000", // transactions merkle root
+                               "0000000000000000000000000000000000000000000000000000000000000000", // tx status hash
+                               "0100", //BlockWitness
                        }, ""),
                },
        }
@@ -166,20 +254,22 @@ func TestUnmarshalBlockHeader(t *testing.T) {
                                "01",   // version
                                "904e", // block height
                                "c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0", // prev block hash
-                               "e8b287d905", // timestamp
-                               "40",         // commitment extensible field length
+                               "c0fce4e1bf2c", // timestamp
+                               "40",           // commitment extensible field length
                                "ad9ac003d08ff305181a345d64fe0b02311cc1a6ec04ab73f3318d90139bfe03", // transactions merkle root
                                "b94301ea4e316bee00109f68d25beaca90aeff08e9bf439a37d91d7a3b5a1470", // tx status hash
+                               "040102beef", //BlockWitness
                        }, ""),
                        wantBlockHeader: &BlockHeader{
                                Version:           1,
                                Height:            10000,
                                PreviousBlockHash: testutil.MustDecodeHash("c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0"),
-                               Timestamp:         1528945000,
+                               Timestamp:         1528945000000,
                                BlockCommitment: BlockCommitment{
                                        TransactionsMerkleRoot: testutil.MustDecodeHash("ad9ac003d08ff305181a345d64fe0b02311cc1a6ec04ab73f3318d90139bfe03"),
                                        TransactionStatusHash:  testutil.MustDecodeHash("b94301ea4e316bee00109f68d25beaca90aeff08e9bf439a37d91d7a3b5a1470"),
                                },
+                               BlockWitness: BlockWitness{Witness: [][]byte{[]byte{0xbe, 0xef}}},
                        },
                },
                {
@@ -188,20 +278,22 @@ func TestUnmarshalBlockHeader(t *testing.T) {
                                "01",   // version
                                "904e", // block height
                                "c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0", // prev block hash
-                               "e8b287d905", // timestamp
-                               "40",         // commitment extensible field length
+                               "c0fce4e1bf2c", // timestamp
+                               "40",           // commitment extensible field length
                                "ad9ac003d08ff305181a345d64fe0b02311cc1a6ec04ab73f3318d90139bfe03", // transactions merkle root
                                "b94301ea4e316bee00109f68d25beaca90aeff08e9bf439a37d91d7a3b5a1470", // tx status hash
+                               "040102beef", //BlockWitness
                        }, ""),
                        wantBlockHeader: &BlockHeader{
                                Version:           1,
                                Height:            10000,
                                PreviousBlockHash: testutil.MustDecodeHash("c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0"),
-                               Timestamp:         1528945000,
+                               Timestamp:         1528945000000,
                                BlockCommitment: BlockCommitment{
                                        TransactionsMerkleRoot: testutil.MustDecodeHash("ad9ac003d08ff305181a345d64fe0b02311cc1a6ec04ab73f3318d90139bfe03"),
                                        TransactionStatusHash:  testutil.MustDecodeHash("b94301ea4e316bee00109f68d25beaca90aeff08e9bf439a37d91d7a3b5a1470"),
                                },
+                               BlockWitness: BlockWitness{Witness: [][]byte{[]byte{0xbe, 0xef}}},
                        },
                },
                {
@@ -210,8 +302,8 @@ func TestUnmarshalBlockHeader(t *testing.T) {
                                "01",   // version
                                "904e", // block height
                                "c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0", // prev block hash
-                               "e8b287d905", // timestamp
-                               "40",         // commitment extensible field length
+                               "c0fce4e1bf2c", // timestamp
+                               "40",           // commitment extensible field length
                                "ad9ac003d08ff305181a345d64fe0b02311cc1a6ec04ab73f3318d90139bfe03", // transactions merkle root
                                "b94301ea4e316bee00109f68d25beaca90aeff08e9bf439a37d91d7a3b5a1470", // tx status hash
                        }, ""),
@@ -223,8 +315,8 @@ func TestUnmarshalBlockHeader(t *testing.T) {
                                "01",  // version
                                "908", // block height (error with odd length)
                                "c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0", // prev block hash
-                               "e8b287d905", // timestamp
-                               "40",         // commitment extensible field length
+                               "c0fce4e1bf2c", // timestamp
+                               "40",           // commitment extensible field length
                                "ad9ac003d08ff305181a345d64fe0b02311cc1a6ec04ab73f3318d90139bfe03", // transactions merkle root
                                "b94301ea4e316bee00109f68d25beaca90aeff08e9bf439a37d91d7a3b5a1470", // tx status hash
                        }, ""),
@@ -236,10 +328,11 @@ func TestUnmarshalBlockHeader(t *testing.T) {
                                "01",                 // version
                                "ffffffffffffffffff", // block height
                                "c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0", // prev block hash
-                               "e8b287d905", // timestamp
-                               "40",         // commitment extensible field length
+                               "c0fce4e1bf2c", // timestamp
+                               "40",           // commitment extensible field length
                                "ad9ac003d08ff305181a345d64fe0b02311cc1a6ec04ab73f3318d90139bfe03", // transactions merkle root
                                "b94301ea4e316bee00109f68d25beaca90aeff08e9bf439a37d91d7a3b5a1470", // tx status hash
+                               "040102beef", //BlockWitness
                        }, ""),
                        wantError: errors.New("binary: varint overflows a 64-bit integer"),
                },
@@ -249,8 +342,8 @@ func TestUnmarshalBlockHeader(t *testing.T) {
                                "01",                 // version
                                "ffffffffffffffff7f", // block height
                                "c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0", // prev block hash
-                               "e8b287d905", // timestamp
-                               "40",         // commitment extensible field length
+                               "c0fce4e1bf2c", // timestamp
+                               "40",           // commitment extensible field length
                                "ad9ac003d08ff305181a345d64fe0b02311cc1a6ec04ab73f3318d90139bfe03", // transactions merkle root
                                "b94301ea4e316bee00109f68d25beaca90aeff08e9bf439a37d91d7a3b5a14",   // tx status hash
                        }, ""),
@@ -262,20 +355,22 @@ func TestUnmarshalBlockHeader(t *testing.T) {
                                "01",                 // version
                                "ffffffffffffffff7f", // block height
                                "c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0", // prev block hash
-                               "e8b287d905", // timestamp
-                               "40",         // commitment extensible field length
+                               "c0fce4e1bf2c", // timestamp
+                               "40",           // commitment extensible field length
                                "ad9ac003d08ff305181a345d64fe0b02311cc1a6ec04ab73f3318d90139bfe03", // transactions merkle root
                                "b94301ea4e316bee00109f68d25beaca90aeff08e9bf439a37d91d7a3b5a1470", // tx status hash
+                               "040102beef", //BlockWitness
                        }, ""),
                        wantBlockHeader: &BlockHeader{
                                Version:           1,
                                Height:            9223372036854775807, // MaxInt64(9223372036854775807)
                                PreviousBlockHash: testutil.MustDecodeHash("c34048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea73a0"),
-                               Timestamp:         1528945000,
+                               Timestamp:         1528945000000,
                                BlockCommitment: BlockCommitment{
                                        TransactionsMerkleRoot: testutil.MustDecodeHash("ad9ac003d08ff305181a345d64fe0b02311cc1a6ec04ab73f3318d90139bfe03"),
                                        TransactionStatusHash:  testutil.MustDecodeHash("b94301ea4e316bee00109f68d25beaca90aeff08e9bf439a37d91d7a3b5a1470"),
                                },
+                               BlockWitness: BlockWitness{Witness: [][]byte{[]byte{0xbe, 0xef}}},
                        },
                },
        }