package config
import (
+ "bytes"
"crypto/sha256"
"encoding/hex"
log "github.com/sirupsen/logrus"
"github.com/vapor/consensus"
- "github.com/vapor/crypto"
"github.com/vapor/crypto/ed25519"
"github.com/vapor/crypto/ed25519/chainkd"
"github.com/vapor/protocol/bc"
func commitToArguments() (res *[32]byte) {
var fedpegPubkeys []ed25519.PublicKey
- var signBlockPubkeys []ed25519.PublicKey
for _, xpub := range consensus.ActiveNetParams.FedpegXPubs {
fedpegPubkeys = append(fedpegPubkeys, xpub.PublicKey())
}
fedpegScript, _ := vmutil.P2SPMultiSigProgram(fedpegPubkeys, len(fedpegPubkeys))
- for _, xpub := range consensus.ActiveNetParams.SignBlockXPubs {
- signBlockPubkeys = append(signBlockPubkeys, xpub.PublicKey())
+ var buffer bytes.Buffer
+ for _, address := range CommonConfig.Consensus.Dpos.Signers {
+ redeemContract := address.ScriptAddress()
+ buffer.Write(redeemContract)
}
- signBlockScript, _ := vmutil.P2SPMultiSigProgram(signBlockPubkeys, len(signBlockPubkeys))
hasher := sha256.New()
hasher.Write(fedpegScript)
- hasher.Write(signBlockScript)
+ hasher.Write(buffer.Bytes())
resSlice := hasher.Sum(nil)
res = new([32]byte)
copy(res[:], resSlice)
types.NewTxOutput(*consensus.BTMAssetID, consensus.InitialBlockSubsidy, contract),
},
}
+
return types.NewTx(txData)
}
log.Panicf("fail on calc genesis tx merkel root")
}
+ var xPrv chainkd.XPrv
+ if CommonConfig.Consensus.Dpos.XPrv == "" {
+ log.Panicf("Signer is empty")
+ }
+ xPrv.UnmarshalText([]byte(CommonConfig.Consensus.Dpos.XPrv))
+ b, _ := xPrv.XPub().MarshalText()
+
block := &types.Block{
BlockHeader: types.BlockHeader{
Version: 1,
TransactionsMerkleRoot: merkleRoot,
TransactionStatusHash: txStatusHash,
},
+ Coinbase: b,
},
Transactions: []*types.Tx{tx},
}
-
- var xPrv chainkd.XPrv
- if consensus.ActiveNetParams.Signer == "" {
- return block
- }
- copy(xPrv[:], []byte(consensus.ActiveNetParams.Signer))
- msg, _ := block.MarshalText()
- sign := xPrv.Sign(msg)
- pubHash := crypto.Ripemd160(xPrv.XPub().PublicKey())
- control, err := vmutil.P2WPKHProgram([]byte(pubHash))
- if err != nil {
- log.Panicf(err.Error())
- }
- block.Proof.Sign = sign
- block.Proof.ControlProgram = control
return block
}
log.Panicf("fail on calc genesis tx merkel root")
}
+ var xPrv chainkd.XPrv
+ if CommonConfig.Consensus.Dpos.XPrv == "" {
+ log.Panicf("Signer is empty")
+ }
+ xPrv.UnmarshalText([]byte(CommonConfig.Consensus.Dpos.XPrv))
+ b, _ := xPrv.XPub().MarshalText()
+
block := &types.Block{
BlockHeader: types.BlockHeader{
Version: 1,
TransactionsMerkleRoot: merkleRoot,
TransactionStatusHash: txStatusHash,
},
+ Coinbase: b,
},
Transactions: []*types.Tx{tx},
}
log.Panicf("fail on calc genesis tx merkel root")
}
+ var xPrv chainkd.XPrv
+ if CommonConfig.Consensus.Dpos.XPrv == "" {
+ log.Panicf("Signer is empty")
+ }
+ xPrv.UnmarshalText([]byte(CommonConfig.Consensus.Dpos.XPrv))
+ b, _ := xPrv.XPub().MarshalText()
+
block := &types.Block{
BlockHeader: types.BlockHeader{
Version: 1,
TransactionsMerkleRoot: merkleRoot,
TransactionStatusHash: txStatusHash,
},
+ Coinbase: b,
},
Transactions: []*types.Tx{tx},
}