X-Git-Url: http://git.osdn.net/view?p=bytom%2Fvapor.git;a=blobdiff_plain;f=config%2Fgenesis.go;h=f714e7b505c770406d4fc3e554d817e8bd595ed0;hp=f588962f29be8ba34ffc107322c010679b6fe73f;hb=4a8801bc1603c17b3b14122a8bd0de4593421a90;hpb=2ffd5b239ec0ed7c96f789362d8b986834ae227f diff --git a/config/genesis.go b/config/genesis.go index f588962f..f714e7b5 100644 --- a/config/genesis.go +++ b/config/genesis.go @@ -6,23 +6,37 @@ import ( log "github.com/sirupsen/logrus" "github.com/vapor/consensus" + "github.com/vapor/crypto/ed25519/chainkd" "github.com/vapor/protocol/bc" "github.com/vapor/protocol/bc/types" + "github.com/vapor/protocol/vm/vmutil" ) +func FederationProgrom(c *Config) []byte { + xpubs := c.Federation.Xpubs + fedpegScript, err := vmutil.P2SPMultiSigProgram(chainkd.XPubKeys(xpubs), c.Federation.Quorum) + if err != nil { + log.Panicf("fail to generate federation scirpt for federation: %v", err) + } + + return fedpegScript +} + func GenesisTx() *types.Tx { contract, err := hex.DecodeString("00148c9d063ff74ee6d9ffa88d83aeb038068366c4c4") if err != nil { log.Panicf("fail on decode genesis tx output control program") } + coinbaseInput := FederationProgrom(CommonConfig) + txData := types.TxData{ Version: 1, Inputs: []*types.TxInput{ - types.NewCoinbaseInput([]byte("Information is power. -- Jan/11/2013. Computing is power. -- Apr/24/2018.")), + types.NewCoinbaseInput(coinbaseInput[:]), }, Outputs: []*types.TxOutput{ - types.NewTxOutput(*consensus.BTMAssetID, consensus.InitialBlockSubsidy, contract), + types.NewIntraChainOutput(*consensus.BTMAssetID, consensus.BlockSubsidy(0), contract), }, } return types.NewTx(txData) @@ -48,7 +62,7 @@ func mainNetGenesisBlock() *types.Block { BlockHeader: types.BlockHeader{ Version: 1, Height: 0, - Timestamp: 1524549600, + Timestamp: 1524549600000, BlockCommitment: types.BlockCommitment{ TransactionsMerkleRoot: merkleRoot, TransactionStatusHash: txStatusHash, @@ -79,7 +93,7 @@ func testNetGenesisBlock() *types.Block { BlockHeader: types.BlockHeader{ Version: 1, Height: 0, - Timestamp: 1528945000, + Timestamp: 1528945000000, BlockCommitment: types.BlockCommitment{ TransactionsMerkleRoot: merkleRoot, TransactionStatusHash: txStatusHash, @@ -110,7 +124,7 @@ func soloNetGenesisBlock() *types.Block { BlockHeader: types.BlockHeader{ Version: 1, Height: 0, - Timestamp: 1528945000, + Timestamp: 1528945000000, BlockCommitment: types.BlockCommitment{ TransactionsMerkleRoot: merkleRoot, TransactionStatusHash: txStatusHash,