4 log "github.com/sirupsen/logrus"
6 "github.com/bytom/consensus"
7 "github.com/bytom/protocol/bc"
8 "github.com/bytom/protocol/bc/legacy"
11 // GenerateGenesisTx will return genesis transaction
12 func GenerateGenesisTx() *legacy.Tx {
13 txData := legacy.TxData{
16 Inputs: []*legacy.TxInput{
17 legacy.NewCoinbaseInput([]byte("May 4th Be With You"), nil),
19 Outputs: []*legacy.TxOutput{
22 OutputCommitment: legacy.OutputCommitment{
23 AssetAmount: bc.AssetAmount{
24 AssetId: consensus.BTMAssetID,
25 Amount: consensus.InitialBlockSubsidy,
28 ControlProgram: []byte{81},
34 return legacy.NewTx(txData)
37 // GenerateGenesisBlock will return genesis block
38 func GenerateGenesisBlock() *legacy.Block {
39 genesisCoinbaseTx := GenerateGenesisTx()
40 merkleRoot, err := bc.MerkleRoot([]*bc.Tx{genesisCoinbaseTx.Tx})
42 log.Panicf("Fatal create merkelRoot")
44 txStatus := bc.NewTransactionStatus()
46 block := &legacy.Block{
47 BlockHeader: legacy.BlockHeader{
51 Timestamp: 1516788453,
52 BlockCommitment: legacy.BlockCommitment{
53 TransactionsMerkleRoot: merkleRoot,
54 TransactionStatusHash: bc.EntryID(txStatus),
56 Bits: 2305843009222082559,
58 Transactions: []*legacy.Tx{genesisCoinbaseTx},