From 4c47348453565a5c64fde5b10253c0acbf7fd8be Mon Sep 17 00:00:00 2001 From: HAOYUatHZ Date: Thu, 23 May 2019 06:51:29 +0800 Subject: [PATCH] clean --- asset/builder.go | 3 +-- consensus/federation/federation.go | 14 +++++++------- node/node.go | 8 ++++---- protocol/bc/types/map.go | 5 ++++- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/asset/builder.go b/asset/builder.go index 4a4ac98b..4e76074d 100644 --- a/asset/builder.go +++ b/asset/builder.go @@ -31,7 +31,6 @@ type crossInAction struct { AssetDefinition map[string]interface{} `json:"asset_definition"` } -// TODO: also need to hard-code mapTx func (a *crossInAction) Build(ctx context.Context, builder *txbuilder.TemplateBuilder) error { var missing []string if a.SourceID == "" { @@ -83,7 +82,7 @@ func (a *crossInAction) Build(ctx context.Context, builder *txbuilder.TemplateBu fed := federation.GetFederation() // arguments will be set when materializeWitnesses - txin := types.NewCrossChainInput(nil, sourceID, *a.AssetId, a.Amount, a.SourcePos, fed.PegInScript, asset.RawDefinitionByte) + txin := types.NewCrossChainInput(nil, sourceID, *a.AssetId, a.Amount, a.SourcePos, fed.ControlProgram, asset.RawDefinitionByte) log.Info("cross-chain input action built") builder.RestrictMinTime(time.Now()) tplIn := &txbuilder.SigningInstruction{} diff --git a/consensus/federation/federation.go b/consensus/federation/federation.go index 526998d4..8077e2cf 100644 --- a/consensus/federation/federation.go +++ b/consensus/federation/federation.go @@ -27,10 +27,10 @@ const fedCfgJson = ` ` type federation struct { - XPubs []chainkd.XPub `json:"fed_xpubs"` - Quorum int `json:"fed_quorum"` - Path [][]byte - PegInScript []byte + XPubs []chainkd.XPub `json:"fed_xpubs"` + Quorum int `json:"fed_quorum"` + Path [][]byte + ControlProgram []byte } func parseFedConfig() *federation { @@ -67,8 +67,8 @@ func GetFederation() *federation { fed.Path = signers.GetBip0032Path(assetSigner, signers.AssetKeySpace) derivedXPubs := chainkd.DeriveXPubs(assetSigner.XPubs, fed.Path) derivedPKs := chainkd.XPubKeys(derivedXPubs) - if pegInScript, err := buildPegInScript(derivedPKs, assetSigner.Quorum); err == nil { - fed.PegInScript = pegInScript + if controlProgram, err := buildPegInControlProgram(derivedPKs, assetSigner.Quorum); err == nil { + fed.ControlProgram = controlProgram } else { log.Fatalf("fail to build peg-in script: %v", err) } @@ -76,7 +76,7 @@ func GetFederation() *federation { return fed } -func buildPegInScript(pubkeys []ed25519.PublicKey, nrequired int) (program []byte, err error) { +func buildPegInControlProgram(pubkeys []ed25519.PublicKey, nrequired int) (program []byte, err error) { controlProg, err := vmutil.P2SPMultiSigProgram(pubkeys, nrequired) if err != nil { return nil, err diff --git a/node/node.go b/node/node.go index 2869d6a6..9d072c7c 100644 --- a/node/node.go +++ b/node/node.go @@ -64,10 +64,10 @@ func NewNode(config *cfg.Config) *Node { if err := federation.CheckFedConfig(); err == nil { fed := federation.GetFederation() log.WithFields(log.Fields{ - "module": logModule, - "fed_xpubs": fed.XPubs, - "fed_quorum": fed.Quorum, - "fed_peginscript": fed.PegInScript, + "module": logModule, + "fed_xpubs": fed.XPubs, + "fed_quorum": fed.Quorum, + "fed_controlprogram": fed.ControlProgram, }).Info() } else { cmn.Exit("Error: " + err.Error()) diff --git a/protocol/bc/types/map.go b/protocol/bc/types/map.go index 4a795b5b..6d90c2e2 100644 --- a/protocol/bc/types/map.go +++ b/protocol/bc/types/map.go @@ -4,6 +4,7 @@ import ( log "github.com/sirupsen/logrus" "github.com/vapor/consensus" + "github.com/vapor/consensus/federation" "github.com/vapor/protocol/bc" "github.com/vapor/protocol/vm" "github.com/vapor/protocol/vm/vmutil" @@ -127,7 +128,9 @@ func mapTx(tx *TxData) (headerID bc.Hash, hdr *bc.TxHeader, entryMap map[bc.Hash spends = append(spends, spend) case *CrossChainInput: - prog := &bc.Program{VmVersion: inp.VMVersion, Code: inp.ControlProgram} + // hard code peg-in control program in consensus level, may need to + // deal with soft fork (federation members change) in the future + prog := &bc.Program{VmVersion: inp.VMVersion, Code: federation.GetFederation().ControlProgram} src := &bc.ValueSource{ Ref: &inp.SourceID, Value: &inp.AssetAmount, -- 2.11.0