OSDN Git Service

update
[bytom/vapor.git] / asset / builder.go
index 4d1c6f2..c142074 100644 (file)
@@ -4,13 +4,11 @@ import (
        "context"
        stdjson "encoding/json"
        "fmt"
-       "time"
 
        log "github.com/sirupsen/logrus"
 
        "github.com/vapor/blockchain/txbuilder"
        "github.com/vapor/consensus/federation"
-       chainjson "github.com/vapor/encoding/json"
        "github.com/vapor/errors"
        "github.com/vapor/protocol/bc"
        "github.com/vapor/protocol/bc/types"
@@ -53,35 +51,18 @@ func (a *crossInAction) Build(ctx context.Context, builder *txbuilder.TemplateBu
                return errors.New("mainchain output double spent")
        }
 
-       var err error
-       asset := &Asset{}
-       if preAsset, _ := a.reg.GetAsset(a.AssetId.String()); preAsset != nil {
-               asset = preAsset
-       } else {
-               asset.RawDefinitionByte, err = serializeAssetDef(a.AssetDefinition)
-               if err != nil {
-                       return ErrSerializing
-               }
-
-               if !chainjson.IsValidJSON(asset.RawDefinitionByte) {
-                       return errors.New("asset definition is not in valid json format")
-               }
-
-               asset.DefinitionMap = a.AssetDefinition
-               asset.VMVersion = 1
-               asset.AssetID = *a.AssetId
-               extAlias := a.AssetId.String()
-               asset.Alias = &(extAlias)
-               a.reg.SaveExtAsset(asset)
+       rawDefinitionByte, err := serializeAssetDef(a.AssetDefinition)
+       if err != nil {
+               return ErrSerializing
        }
 
-       fed := federation.GetFederation()
-       // arguments will be set when materializeWitnesses
-       txin := types.NewCrossChainInput(nil, a.SourceID, *a.AssetId, a.Amount, a.SourcePos, fed.ControlProgram, asset.RawDefinitionByte)
+       // 1. arguments will be set when materializeWitnesses
+       // 2. need to fill in issuance program here
+       txin := types.NewCrossChainInput(nil, a.SourceID, *a.AssetId, a.Amount, a.SourcePos, nil, rawDefinitionByte)
        log.Info("cross-chain input action built")
-       builder.RestrictMinTime(time.Now())
        tplIn := &txbuilder.SigningInstruction{}
-       tplIn.AddRawWitnessKeys(fed.XPubs, fed.Path, fed.Quorum)
+       fed := federation.GetFederation()
+       tplIn.AddRawWitnessKeys(fed.XPubs, fed.Path(), fed.Quorum)
        a.reg.db.Set(sourceKey, []byte("true"))
        return builder.AddInput(txin, tplIn)
 }