github.com/bytom/bytom@v1.1.2-0.20221014091027-bbcba3df6075/config/genesis_tx.go (about)

     1  package config
     2  
     3  import (
     4  	"encoding/hex"
     5  
     6  	log "github.com/sirupsen/logrus"
     7  
     8  	"github.com/bytom/bytom/consensus"
     9  	"github.com/bytom/bytom/protocol/bc"
    10  	"github.com/bytom/bytom/protocol/bc/types"
    11  )
    12  
    13  // AssetIssue asset issue params
    14  type AssetIssue struct {
    15  	NonceStr           string
    16  	IssuanceProgramStr string
    17  	AssetDefinitionStr string
    18  	AssetIDStr         string
    19  	Amount             uint64
    20  }
    21  
    22  func (a *AssetIssue) nonce() []byte {
    23  	bs, err := hex.DecodeString(a.NonceStr)
    24  	if err != nil {
    25  		panic(err)
    26  	}
    27  
    28  	return bs
    29  }
    30  
    31  func (a *AssetIssue) issuanceProgram() []byte {
    32  	bs, err := hex.DecodeString(a.IssuanceProgramStr)
    33  	if err != nil {
    34  		panic(err)
    35  	}
    36  
    37  	return bs
    38  }
    39  
    40  func (a *AssetIssue) assetDefinition() []byte {
    41  	bs, err := hex.DecodeString(a.AssetDefinitionStr)
    42  	if err != nil {
    43  		panic(err)
    44  	}
    45  
    46  	return bs
    47  }
    48  
    49  func (a *AssetIssue) id() bc.AssetID {
    50  	var bs [32]byte
    51  	bytes, err := hex.DecodeString(a.AssetIDStr)
    52  	if err != nil {
    53  		panic(err)
    54  	}
    55  
    56  	copy(bs[:], bytes)
    57  	return bc.NewAssetID(bs)
    58  }
    59  
    60  // GenesisTxs make genesis block txs
    61  func GenesisTxs() []*types.Tx {
    62  	contract, err := hex.DecodeString("00148dea804c8f5a27518be2696e43dca0352b9a93cc")
    63  	if err != nil {
    64  		log.Panicf("fail on decode genesis tx output control program")
    65  	}
    66  
    67  	var txs []*types.Tx
    68  	firstTxData := types.TxData{
    69  		Version: 1,
    70  		Inputs:  []*types.TxInput{types.NewCoinbaseInput([]byte("Information is power. -- Jan/11/2013. Computing is power. -- Apr/24/2018."))},
    71  		Outputs: []*types.TxOutput{types.NewOriginalTxOutput(*consensus.BTMAssetID, consensus.InitBTMSupply, contract, nil)},
    72  	}
    73  	txs = append(txs, types.NewTx(firstTxData))
    74  
    75  	inputs := []*types.TxInput{}
    76  	outputs := []*types.TxOutput{}
    77  	for _, asset := range assetIssues {
    78  		inputs = append(inputs, types.NewIssuanceInput(asset.nonce(), asset.Amount, asset.issuanceProgram(), nil, asset.assetDefinition()))
    79  		outputs = append(outputs, types.NewOriginalTxOutput(asset.id(), asset.Amount, contract, nil))
    80  	}
    81  
    82  	secondTxData := types.TxData{Version: 1, Inputs: inputs, Outputs: outputs}
    83  	txs = append(txs, types.NewTx(secondTxData))
    84  	return txs
    85  }
    86  
    87  var assetIssues = []*AssetIssue{
    88  	{
    89  		NonceStr:           "8e972359c6441299",
    90  		IssuanceProgramStr: "ae20d66ab117eca2bba6aefed569e52d6bf68a7a4ad7d775cbc01f7b2cfcd798f7b22031ab3c2147c330c5e360b4e585047d1dea5f529476ad5aff475ecdd55541923120851b4a24975df6dbeb4f8e5348542764f85bed67b763875325aa5e45116751b35253ad",
    91  		AssetDefinitionStr: "7b0a202022646563696d616c73223a20382c0a2020226465736372697074696f6e223a207b7d2c0a2020226e616d65223a20224d4147222c0a20202271756f72756d223a20322c0a20202272656973737565223a202274727565222c0a20202273796d626f6c223a20224d4147220a7d",
    92  		AssetIDStr:         "a0a71c215764e342d10d003be6369baf4145d9c7977f7b8f6bf446e628d8b8b8",
    93  		Amount:             100000000000000,
    94  	},
    95  	{
    96  		NonceStr:           "f57f15fbbdf5f70d",
    97  		IssuanceProgramStr: "0354df07cda069ae203c939b7ba615a49adf57b5b4c9c37e80666436970f8507d56a272539cabcb9e15151ad",
    98  		AssetDefinitionStr: "7b0a202022646563696d616c73223a20382c0a2020226465736372697074696f6e223a207b7d2c0a2020226e616d65223a2022535550222c0a20202271756f72756d223a20312c0a20202272656973737565223a202266616c7365222c0a20202273796d626f6c223a2022535550220a7d",
    99  		AssetIDStr:         "47fcd4d7c22d1d38931a6cd7767156babbd5f05bbbb3f7d3900635b56eb1b67e",
   100  		Amount:             9866701291045,
   101  	},
   102  }