OSDN Git Service

Don't init native asset in init function (#324)
authorLiu-Cheng Xu <xuliuchengxlc@gmail.com>
Thu, 25 Jan 2018 06:25:27 +0000 (14:25 +0800)
committerPaladz <yzhu101@uottawa.ca>
Thu, 25 Jan 2018 06:25:27 +0000 (14:25 +0800)
* Don't init native asset in init function

Previously, the init of logrus is after the invoke of creating native
asset, which may lead to incomplete logging.

* InitNativeAsset before NewRegistry

* Call initNativeAsset in NewRegistry

blockchain/asset/asset.go

index 5ad2e84..31abf50 100755 (executable)
@@ -23,10 +23,6 @@ import (
        "github.com/bytom/protocol/vm/vmutil"
 )
 
-func init() {
-       DefaultNativeAsset = generateNativeAsset()
-}
-
 var DefaultNativeAsset *Asset
 
 const (
@@ -36,24 +32,24 @@ const (
        AliasPrefix = "ALS:"
        //ExternalAssetPrefix is external definition assets prefix
        ExternalAssetPrefix = "EXA"
-       indexPrefix   = "ASSIDX:"
+       indexPrefix         = "ASSIDX:"
 )
 
-func generateNativeAsset() *Asset {
+func initNativeAsset() {
        genesisBlock := cfg.GenerateGenesisBlock()
        signer := &signers.Signer{Type: "internal"}
        alias := consensus.BTMAlias
 
        definitionBytes, _ := serializeAssetDef(consensus.BTMDefinitionMap)
-
-       return &Asset{
+       DefaultNativeAsset = &Asset{
                Signer:            signer,
                AssetID:           *consensus.BTMAssetID,
                Alias:             &alias,
                VMVersion:         1,
                DefinitionMap:     consensus.BTMDefinitionMap,
                RawDefinitionByte: definitionBytes,
-               InitialBlockHash:  genesisBlock.Hash()}
+               InitialBlockHash:  genesisBlock.Hash(),
+       }
 }
 
 func AliasKey(name string) []byte {
@@ -89,6 +85,7 @@ var (
 
 //NewRegistry create new registry
 func NewRegistry(db dbm.DB, chain *protocol.Chain) *Registry {
+       initNativeAsset()
        return &Registry{
                db:               db,
                chain:            chain,