OSDN Git Service

modify address prefix for diff network
authorwz <mars@bytom.io>
Wed, 18 Apr 2018 06:43:35 +0000 (14:43 +0800)
committerwz <mars@bytom.io>
Wed, 18 Apr 2018 11:10:03 +0000 (19:10 +0800)
account/accounts.go
account/builder.go
api/accounts.go
blockchain/txbuilder/actions.go
consensus/general.go
node/node.go
wallet/annotated.go

index a499269..fc404b0 100644 (file)
@@ -293,7 +293,7 @@ func (m *Manager) createP2PKH(ctx context.Context, account *Account, change bool
        pubHash := crypto.Ripemd160(derivedPK)
 
        // TODO: pass different params due to config
-       address, err := common.NewAddressWitnessPubKeyHash(pubHash, consensus.ActiveNetParams)
+       address, err := common.NewAddressWitnessPubKeyHash(pubHash, &consensus.ActiveNetParams)
        if err != nil {
                return nil, err
        }
@@ -324,7 +324,7 @@ func (m *Manager) createP2SH(ctx context.Context, account *Account, change bool)
        scriptHash := crypto.Sha256(signScript)
 
        // TODO: pass different params due to config
-       address, err := common.NewAddressWitnessScriptHash(scriptHash, consensus.ActiveNetParams)
+       address, err := common.NewAddressWitnessScriptHash(scriptHash, &consensus.ActiveNetParams)
        if err != nil {
                return nil, err
        }
index 53a4a6c..693e8f8 100644 (file)
@@ -152,7 +152,7 @@ func UtxoToInputs(signer *signers.Signer, u *UTXO) (*types.TxInput, *txbuilder.S
                return txInput, sigInst, nil
        }
 
-       address, err := common.DecodeAddress(u.Address, consensus.ActiveNetParams)
+       address, err := common.DecodeAddress(u.Address, &consensus.ActiveNetParams)
        if err != nil {
                return nil, nil, err
        }
index 2d0d217..87a39e0 100644 (file)
@@ -55,7 +55,7 @@ func (a *API) validateAddress(ctx context.Context, ins struct {
                Vaild:   false,
                IsLocal: false,
        }
-       address, err := common.DecodeAddress(ins.Address, consensus.ActiveNetParams)
+       address, err := common.DecodeAddress(ins.Address, &consensus.ActiveNetParams)
        if err != nil {
                return NewSuccessResponse(resp)
        }
index 01bbd89..996c01e 100644 (file)
@@ -72,7 +72,7 @@ func (a *controlAddressAction) Build(ctx context.Context, b *TemplateBuilder) er
                return MissingFieldsError(missing...)
        }
 
-       address, err := common.DecodeAddress(a.Address, consensus.ActiveNetParams)
+       address, err := common.DecodeAddress(a.Address, &consensus.ActiveNetParams)
        if err != nil {
                return err
        }
index 53406d7..f8ea21c 100644 (file)
@@ -90,7 +90,13 @@ type Params struct {
        Bech32HRPSegwit string
 }
 
-var ActiveNetParams = &MainNetParams
+var ActiveNetParams = MainNetParams
+
+// NetParams is the correspondence between chain_id and Params
+var NetParams = map[string]Params{
+       "mainnet": MainNetParams,
+       "testnet": TestNetParams,
+}
 
 // MainNetParams is the config for production
 var MainNetParams = Params{
index 3ccee7b..9cfb885 100644 (file)
@@ -59,9 +59,7 @@ type Node struct {
 
 func NewNode(config *cfg.Config) *Node {
        ctx := context.Background()
-       if config.ChainID == "testnet" {
-               consensus.ActiveNetParams = &consensus.TestNetParams
-       }
+       initActiveNetParams(config)
        // Get store
        txDB := dbm.NewDB("txdb", config.DBBackend, config.DBDir())
        store := leveldb.NewStore(txDB)
@@ -149,6 +147,14 @@ func NewNode(config *cfg.Config) *Node {
        return node
 }
 
+func initActiveNetParams(config *cfg.Config) {
+       var exist bool
+       consensus.ActiveNetParams, exist = consensus.NetParams[config.ChainID]
+       if !exist {
+               cmn.Exit(cmn.Fmt("chain_id[%v] don't exist", config.ChainID))
+       }
+}
+
 func initOrRecoverAccount(hsm *pseudohsm.HSM, wallet *w.Wallet) error {
        xpubs := hsm.ListKeys()
 
index 571f852..a2c674b 100644 (file)
@@ -241,7 +241,7 @@ func (w *Wallet) getAddressFromControlProgram(prog []byte) string {
 }
 
 func buildP2PKHAddress(pubHash []byte) string {
-       address, err := common.NewAddressWitnessPubKeyHash(pubHash, consensus.ActiveNetParams)
+       address, err := common.NewAddressWitnessPubKeyHash(pubHash, &consensus.ActiveNetParams)
        if err != nil {
                return ""
        }
@@ -250,7 +250,7 @@ func buildP2PKHAddress(pubHash []byte) string {
 }
 
 func buildP2SHAddress(scriptHash []byte) string {
-       address, err := common.NewAddressWitnessScriptHash(scriptHash, consensus.ActiveNetParams)
+       address, err := common.NewAddressWitnessScriptHash(scriptHash, &consensus.ActiveNetParams)
        if err != nil {
                return ""
        }