tplIn := &SigningInstruction{}
fed := cfg.CommonConfig.Federation
tplIn.AddRawWitnessKeys(fed.Xpubs, nil, fed.Quorum)
- tplIn.AddDataWitness(cfg.FederationP2SPMultiSigProgram(cfg.CommonConfig))
+ tplIn.AddDataWitness(cfg.FederationPMultiSigScript(cfg.CommonConfig))
return builder.AddInput(txin, tplIn)
}
"github.com/vapor/protocol/vm/vmutil"
)
-func FederationP2SPMultiSigProgram(c *Config) []byte {
+func FederationPMultiSigScript(c *Config) []byte {
xpubs := c.Federation.Xpubs
program, err := vmutil.P2SPMultiSigProgram(chainkd.XPubKeys(xpubs), c.Federation.Quorum)
if err != nil {
return program
}
-func FederationP2WSHProgram(c *Config) []byte {
- program := FederationP2SPMultiSigProgram(c)
- scriptHash := crypto.Sha256(program)
- WSHProgram, err := vmutil.P2WSHProgram(scriptHash)
+func FederationWScript(c *Config) []byte {
+ script := FederationPMultiSigScript(c)
+ scriptHash := crypto.Sha256(script)
+ wscript, err := vmutil.P2WSHProgram(scriptHash)
if err != nil {
log.Panicf("Fail converts scriptHash to witness: %v", err)
}
- return WSHProgram
+ return wscript
}
func GenesisTx() *types.Tx {
log.Panicf("fail on decode genesis tx output control program")
}
- coinbaseInput := FederationP2WSHProgram(CommonConfig)
+ coinbaseInput := FederationPMultiSigScript(CommonConfig)
txData := types.TxData{
Version: 1,
node: service.NewNode(cfg.Mainchain.Upstream),
chainName: cfg.Mainchain.Name,
assetStore: assetStore,
- fedProg: util.SegWitWrap(util.ParseFedProg(cfg.Warders, cfg.Quorum)),
+ fedProg: util.ParseFedProg(cfg.Warders, cfg.Quorum),
}
}
"github.com/vapor/protocol/vm/vmutil"
)
-func SegWitWrap(script []byte) []byte {
- scriptHash := crypto.Sha256(script)
- wscript, err := vmutil.P2WSHProgram(scriptHash)
- if err != nil {
- log.Panicf("Fail converts scriptHash to witness: %v", err)
- }
-
- return wscript
-}
-
func ParseFedProg(warders []config.Warder, quorum int) []byte {
SortWarders(warders)
xpubs = append(xpubs, w.XPub)
}
- fedScript, err := vmutil.P2SPMultiSigProgram(chainkd.XPubKeys(xpubs), quorum)
+ scirpt, err := vmutil.P2SPMultiSigProgram(chainkd.XPubKeys(xpubs), quorum)
if err != nil {
log.Panicf("fail to generate federation scirpt for federation: %v", err)
}
- return fedScript
+ scriptHash := crypto.Sha256(scirpt)
+ wscript, err := vmutil.P2WSHProgram(scriptHash)
+ if err != nil {
+ log.Panicf("Fail converts scriptHash to witness: %v", err)
+ }
+
+ return wscript
}
type byPosition []config.Warder
"pubkey": config.PrivateKey().XPub(),
"fed_xpubs": config.Federation.Xpubs,
"fed_quorum": config.Federation.Quorum,
- "fed_controlprogram": hex.EncodeToString(cfg.FederationP2WSHProgram(config)),
+ "fed_controlprogram": hex.EncodeToString(cfg.FederationWScript(config)),
}).Info()
initLogFile(config)
// find whether config xpubs equal genesis block xpubs
func checkConfig(chain *protocol.Chain, config *cfg.Config) error {
- fedpegScript := cfg.FederationP2WSHProgram(config)
+ fedpegScript := cfg.FederationWScript(config)
genesisBlock, err := chain.GetBlockByHeight(0)
if err != nil {
return err
return errors.New("incorrect asset_id while checking CrossChainInput")
}
- code := config.FederationP2WSHProgram(config.CommonConfig)
+ code := config.FederationWScript(config.CommonConfig)
prog := &bc.Program{
VmVersion: e.ControlProgram.VmVersion,
Code: code,