)
func genesisTx() *types.Tx {
- contract, err := hex.DecodeString("00149514bf92cac8791dcc4cd7fd3ef4167ffc477f62")
+ contract, err := hex.DecodeString("00148c9d063ff74ee6d9ffa88d83aeb038068366c4c4")
if err != nil {
log.Panicf("fail on decode genesis tx output control program")
}
txData := types.TxData{
Version: 1,
Inputs: []*types.TxInput{
- types.NewCoinbaseInput([]byte("May 4th Be With You")),
+ types.NewCoinbaseInput([]byte("Information is power. -- Jan/11/2013. Computing is power. -- Apr/24/2018.")),
},
Outputs: []*types.TxOutput{
types.NewTxOutput(*consensus.BTMAssetID, consensus.InitialBlockSubsidy, contract),
return types.NewTx(txData)
}
-// GenesisBlock will return genesis block
-func GenesisBlock() *types.Block {
+func mainNetGenesisBlock() *types.Block {
tx := genesisTx()
txStatus := bc.NewTransactionStatus()
txStatus.SetStatus(0, false)
BlockHeader: types.BlockHeader{
Version: 1,
Height: 0,
- Nonce: 2083236893,
- Timestamp: 1524202000,
+ Nonce: 9253507043297,
+ Timestamp: 1524549600,
+ Bits: 2161727821137910632,
+ BlockCommitment: types.BlockCommitment{
+ TransactionsMerkleRoot: merkleRoot,
+ TransactionStatusHash: txStatusHash,
+ },
+ },
+ Transactions: []*types.Tx{tx},
+ }
+ return block
+}
+
+func testNetGenesisBlock() *types.Block {
+ tx := genesisTx()
+ txStatus := bc.NewTransactionStatus()
+ txStatus.SetStatus(0, false)
+ txStatusHash, err := bc.TxStatusMerkleRoot(txStatus.VerifyStatus)
+ if err != nil {
+ log.Panicf("fail on calc genesis tx status merkle root")
+ }
+
+ merkleRoot, err := bc.TxMerkleRoot([]*bc.Tx{tx.Tx})
+ if err != nil {
+ log.Panicf("fail on calc genesis tx merkel root")
+ }
+
+ block := &types.Block{
+ BlockHeader: types.BlockHeader{
+ Version: 1,
+ Height: 0,
+ Nonce: 9253507043297,
+ Timestamp: 1528945000,
Bits: 2305843009214532812,
BlockCommitment: types.BlockCommitment{
TransactionsMerkleRoot: merkleRoot,
}
return block
}
+
+func soloNetGenesisBlock() *types.Block {
+ tx := genesisTx()
+ txStatus := bc.NewTransactionStatus()
+ txStatus.SetStatus(0, false)
+ txStatusHash, err := bc.TxStatusMerkleRoot(txStatus.VerifyStatus)
+ if err != nil {
+ log.Panicf("fail on calc genesis tx status merkle root")
+ }
+
+ merkleRoot, err := bc.TxMerkleRoot([]*bc.Tx{tx.Tx})
+ if err != nil {
+ log.Panicf("fail on calc genesis tx merkel root")
+ }
+
+ block := &types.Block{
+ BlockHeader: types.BlockHeader{
+ Version: 1,
+ Height: 0,
+ Nonce: 9253507043297,
+ Timestamp: 1528945000,
+ Bits: 2305843009214532812,
+ BlockCommitment: types.BlockCommitment{
+ TransactionsMerkleRoot: merkleRoot,
+ TransactionStatusHash: txStatusHash,
+ },
+ },
+ Transactions: []*types.Tx{tx},
+ }
+ return block
+}
+
+// GenesisBlock will return genesis block
+func GenesisBlock() *types.Block {
+ return map[string]func() *types.Block{
+ "main": mainNetGenesisBlock,
+ "test": testNetGenesisBlock,
+ "solo": soloNetGenesisBlock,
+ }[consensus.ActiveNetParams.Name]()
+}