BlockHeader: legacy.BlockHeader{
Version: 1,
Height: 0,
- Nonce: 4216080,
+ Nonce: 4216083,
Timestamp: 1516788453,
BlockCommitment: legacy.BlockCommitment{
TransactionsMerkleRoot: merkleRoot,
assetID := ComputeAssetID(issuanceScript, &initialBlockHash, 1, &EmptyStringHash)
unhashed := append([]byte{}, initialBlockHash.Bytes()...)
- unhashed = append(unhashed, 0x01) // vmVersion
- unhashed = append(unhashed, 0x01) // length of issuanceScript
+ unhashed = append(unhashed, []byte{0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}...) // vmVersion
+ unhashed = append(unhashed, 0x01) // length of issuanceScript
unhashed = append(unhashed, issuanceScript...)
unhashed = append(unhashed, EmptyStringHash.Bytes()...)
want := NewAssetID(sha3.Sum256(unhashed))
package bc
import (
+ "encoding/binary"
"fmt"
"io"
"reflect"
_, err := w.Write([]byte{v})
return errors.Wrap(err, "writing byte for hash")
case uint64:
- _, err := blockchain.WriteVarint63(w, v)
+ buf := [8]byte{}
+ binary.LittleEndian.PutUint64(buf[:], v)
+ _, err := w.Write(buf[:])
return errors.Wrapf(err, "writing uint64 (%d) for hash", v)
case []byte:
_, err := blockchain.WriteVarstr31(w, v)
t.Errorf("empty block header bytes = %x want %x", got, want)
}
- wantHash := mustDecodeHash("a950a33eb49913c06c0c5c0aa643bb55c5cd898f3b54e91971f07ca2123d7204")
+ wantHash := mustDecodeHash("9609d2e45760f34cbc6c6d948c3fb9b6d7b61552d9d17fdd5b7d0cb5d2e67244")
if h := block.Hash(); h != wantHash {
t.Errorf("got block hash %x, want %x", h.Bytes(), wantHash.Bytes())
}
"00" + // common witness extensible string length
"00" + // inputs count
"00"), // outputs count
- hash: mustDecodeHash("d7b066ef9e03e9ccea87b6d6769c8d0477bf33554f5fcdee3d5d22fa1be2f2f5"),
+ hash: mustDecodeHash("b28048bd60c4c13144fd34f408627d1be68f6cb4fdd34e879d6d791060ea7d60"),
},
{
tx: NewTx(TxData{
NewTxOutput(bc.AssetID{}, 1000000000000, []byte{1}, []byte("output")),
},
}),
- hex: ("0701000001012b00030a0908a9b2b6c5394888ab5396f583ae484b8459486b14268e2bef1b637440335eb6c180a094a58d1d05696e7075742903deff1d4319d67baa10a6d26c1fea9c3e8d30e33474efee1a610a9bb49d758d000101010103010203010129000000000000000000000000000000000000000000000000000000000000000080a094a58d1d010101066f757470757400"), // reference data
- hash: mustDecodeHash("7603c9dbd98381883f96b9b90d37cedab93879fe03591ceec6c7933e096fc158"),
+ hex: ("0701000001012b00030a0908fa48ca4e0150f83fbf26cf83211d136313cde98601a667d999ab9cc27b723d4680a094a58d1d05696e7075742903deff1d4319d67baa10a6d26c1fea9c3e8d30e33474efee1a610a9bb49d758d000101010103010203010129000000000000000000000000000000000000000000000000000000000000000080a094a58d1d010101066f757470757400"), // reference data
+ hash: mustDecodeHash("9e7584bd2d436b92cfeb2dbb8b12a3750d18e65a8d7b4b1be7d9062b2b8a91d4"),
},
{
tx: NewTx(TxData{
NewTxOutput(assetID, 400000000000, []byte{2}, nil),
},
}),
- hex: ("0701000001016c016add385f6fe25d91d8c1bd0fa58951ad56b0c5229dcc01f61d9f9e8b9eb92d3292000000000000000000000000000000000000000000000000000000000000000080a094a58d1d01010101000000000000000000000000000000000000000000000000000000000000000005696e7075740100020129a9b2b6c5394888ab5396f583ae484b8459486b14268e2bef1b637440335eb6c180e0a596bb1101010100000129a9b2b6c5394888ab5396f583ae484b8459486b14268e2bef1b637440335eb6c180c0ee8ed20b0101020000"), // output 1, output witness
- hash: mustDecodeHash("e588d0e8ed6fe123550f84f327072be954d9cb023ae8cef7e74faca429f8f091"),
+ hex: ("0701000001016c016add385f6fe25d91d8c1bd0fa58951ad56b0c5229dcc01f61d9f9e8b9eb92d3292000000000000000000000000000000000000000000000000000000000000000080a094a58d1d01010101000000000000000000000000000000000000000000000000000000000000000005696e7075740100020129fa48ca4e0150f83fbf26cf83211d136313cde98601a667d999ab9cc27b723d4680e0a596bb1101010100000129fa48ca4e0150f83fbf26cf83211d136313cde98601a667d999ab9cc27b723d4680c0ee8ed20b0101020000"), // output 1, output witness
+ hash: mustDecodeHash("32b28e965343b7f910a97a61ea84a1add318531dc6b099c98a22e171ee00f8d9"),
},
}
for i, test := range cases {
}{
{
txdata: &TxData{},
- hash: mustDecodeHash("e52b4bc1367e750d88953b78eeb4c8d352504133a04129f53c099cd03e500f22"),
+ hash: mustDecodeHash("202f9971e4b61016d3d771f7a3506c0fc0a850c76c8469ae13e87f58d11fbb1a"),
},
{
txdata: sampleTx(),
- hash: mustDecodeHash("cee0721776e50e7788e8e727e3635856053a651eec4766f7b4c86c60547d2884"), // todo: verify this value,
+ hash: mustDecodeHash("9685f51eae04b5f7687d358af6550165e5436825e8f22552fa6b5fa36a4c6c4c"), // todo: verify this value,
},
}
[]byte("00000"),
},
},
- want: mustDecodeHash("323f847f14a3e1dca5a6b84c5daaf84a92a892ef847a76731cf2ada283687e16"),
+ want: mustDecodeHash("dd26282725467a18bf98ed14e022da9493436dd09372cfeae13080cbaaded00f"),
}, {
witnesses: [][][]byte{
[][]byte{
[]byte("111111"),
},
},
- want: mustDecodeHash("ed6ad6889d65bb7d917d9de969e559af6bfbc002f4ff0d72b99a2cf0e5cc15f0"),
+ want: mustDecodeHash("a112fb9aea40e6d8b2e9f443ec326d49bea7b61cd616b4bddeb9ebb010e76bf5"),
}, {
witnesses: [][][]byte{
[][]byte{
[]byte("222222"),
},
},
- want: mustDecodeHash("ed6ad6889d65bb7d917d9de969e559af6bfbc002f4ff0d72b99a2cf0e5cc15f0"),
+ want: mustDecodeHash("a112fb9aea40e6d8b2e9f443ec326d49bea7b61cd616b4bddeb9ebb010e76bf5"),
}}
for _, c := range cases {