From 51c741e4e37f16aa2e853b128f2e22f34bd3cb62 Mon Sep 17 00:00:00 2001 From: wz Date: Wed, 23 Oct 2019 19:45:57 +0800 Subject: [PATCH] fix --- api/nodeinfo.go | 2 +- blockchain/txbuilder/actions.go | 2 +- config/genesis.go | 10 +++++----- node/node.go | 4 ++-- protocol/validation/tx.go | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/api/nodeinfo.go b/api/nodeinfo.go index 8424647c..ac085ffa 100644 --- a/api/nodeinfo.go +++ b/api/nodeinfo.go @@ -40,7 +40,7 @@ type NetInfo struct { func (a *API) GetNodeInfo() *NetInfo { nodeXPub := cfg.CommonConfig.PrivateKey().XPub() - signScript := cfg.FederationPMultiSigScript(cfg.CommonConfig.Federation) + signScript := cfg.FederationPMultiSigScript(cfg.CommonConfig) scriptHash := crypto.Sha256(signScript) address, err := common.NewAddressWitnessScriptHash(scriptHash, consensus.BytomMainNetParams(&consensus.ActiveNetParams)) if err != nil { diff --git a/blockchain/txbuilder/actions.go b/blockchain/txbuilder/actions.go index 7e5b9510..f5b3bb13 100644 --- a/blockchain/txbuilder/actions.go +++ b/blockchain/txbuilder/actions.go @@ -296,7 +296,7 @@ func (c *crossInAction) Build(ctx context.Context, builder *TemplateBuilder) err if !common.IsCrossChainAssetOfNoBytom(c.RawDefinitionByte) { tplIn.AddRawWitnessKeys(fed.Xpubs, cfg.FedAddressPath, fed.Quorum) - tplIn.AddDataWitness(cfg.FederationPMultiSigScript(fed)) + tplIn.AddDataWitness(cfg.FederationPMultiSigScript(cfg.CommonConfig)) } return builder.AddInput(txin, tplIn) diff --git a/config/genesis.go b/config/genesis.go index 3239f5a6..a3b2f7e2 100644 --- a/config/genesis.go +++ b/config/genesis.go @@ -22,10 +22,10 @@ var FedAddressPath = [][]byte{ []byte{0x01, 0x00, 0x00, 0x00}, } -func FederationPMultiSigScript(c *FederationConfig) []byte { - xpubs := c.Xpubs +func FederationPMultiSigScript(c *Config) []byte { + xpubs := c.Federation.Xpubs derivedXPubs := chainkd.DeriveXPubs(xpubs, FedAddressPath) - program, err := vmutil.P2SPMultiSigProgram(chainkd.XPubKeys(derivedXPubs), c.Quorum) + program, err := vmutil.P2SPMultiSigProgram(chainkd.XPubKeys(derivedXPubs), c.Federation.Quorum) if err != nil { log.Panicf("fail to generate federation scirpt for federation: %v", err) } @@ -33,7 +33,7 @@ func FederationPMultiSigScript(c *FederationConfig) []byte { return program } -func FederationWScript(c *FederationConfig) []byte { +func FederationWScript(c *Config) []byte { script := FederationPMultiSigScript(c) scriptHash := crypto.Sha256(script) wscript, err := vmutil.P2WSHProgram(scriptHash) @@ -50,7 +50,7 @@ func GenesisTx() *types.Tx { log.Panicf("fail on decode genesis tx output control program") } - coinbaseInput := FederationWScript(CommonConfig.Federation) + coinbaseInput := FederationWScript(CommonConfig) txData := types.TxData{ Version: 1, diff --git a/node/node.go b/node/node.go index cdafc367..8b64e254 100644 --- a/node/node.go +++ b/node/node.go @@ -75,7 +75,7 @@ func NewNode(config *cfg.Config) *Node { "pubkey": config.PrivateKey().XPub(), "fed_xpubs": config.Federation.Xpubs, "fed_quorum": config.Federation.Quorum, - "fed_controlprogram": hex.EncodeToString(cfg.FederationWScript(config.Federation)), + "fed_controlprogram": hex.EncodeToString(cfg.FederationWScript(config)), }).Info() if err := consensus.InitActiveNetParams(config.ChainID); err != nil { @@ -169,7 +169,7 @@ func NewNode(config *cfg.Config) *Node { // find whether config xpubs equal genesis block xpubs func checkConfig(chain *protocol.Chain, config *cfg.Config) error { - fedpegScript := cfg.FederationWScript(config.Federation) + fedpegScript := cfg.FederationWScript(config) genesisBlock, err := chain.GetBlockByHeight(0) if err != nil { return err diff --git a/protocol/validation/tx.go b/protocol/validation/tx.go index 6f60b259..6e47a703 100644 --- a/protocol/validation/tx.go +++ b/protocol/validation/tx.go @@ -278,7 +278,7 @@ func checkValid(vs *validationState, e bc.Entry) (err error) { return errors.New("incorrect asset_id while checking CrossChainInput") } - code := config.FederationWScript(config.CommonConfig.Federation) + code := config.FederationWScript(config.CommonConfig) if common.IsCrossChainAssetOfNoBytom(e.RawDefinitionByte) { code = e.AssetDefinition.IssuanceProgram.Code -- 2.11.0