OSDN Git Service

fix: fix fed program (#127)
[bytom/vapor.git] / config / genesis.go
index c6cc02d..f714e7b 100644 (file)
@@ -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,9 +62,7 @@ func mainNetGenesisBlock() *types.Block {
                BlockHeader: types.BlockHeader{
                        Version:   1,
                        Height:    0,
-                       Nonce:     9253507043297,
-                       Timestamp: 1524549600,
-                       Bits:      2161727821137910632,
+                       Timestamp: 1524549600000,
                        BlockCommitment: types.BlockCommitment{
                                TransactionsMerkleRoot: merkleRoot,
                                TransactionStatusHash:  txStatusHash,
@@ -81,9 +93,7 @@ func testNetGenesisBlock() *types.Block {
                BlockHeader: types.BlockHeader{
                        Version:   1,
                        Height:    0,
-                       Nonce:     9253507043297,
-                       Timestamp: 1528945000,
-                       Bits:      2305843009214532812,
+                       Timestamp: 1528945000000,
                        BlockCommitment: types.BlockCommitment{
                                TransactionsMerkleRoot: merkleRoot,
                                TransactionStatusHash:  txStatusHash,
@@ -114,9 +124,7 @@ func soloNetGenesisBlock() *types.Block {
                BlockHeader: types.BlockHeader{
                        Version:   1,
                        Height:    0,
-                       Nonce:     9253507043297,
-                       Timestamp: 1528945000,
-                       Bits:      2305843009214532812,
+                       Timestamp: 1528945000000,
                        BlockCommitment: types.BlockCommitment{
                                TransactionsMerkleRoot: merkleRoot,
                                TransactionStatusHash:  txStatusHash,
@@ -130,8 +138,9 @@ func soloNetGenesisBlock() *types.Block {
 // GenesisBlock will return genesis block
 func GenesisBlock() *types.Block {
        return map[string]func() *types.Block{
-               "main": mainNetGenesisBlock,
-               "test": testNetGenesisBlock,
-               "solo": soloNetGenesisBlock,
+               "main":  mainNetGenesisBlock,
+               "test":  testNetGenesisBlock,
+               "solo":  soloNetGenesisBlock,
+               "vapor": soloNetGenesisBlock,
        }[consensus.ActiveNetParams.Name]()
 }