OSDN Git Service

fix https://github.com/Bytom/vapor/pull/77#discussion_r286744128
authorHAOYUatHZ <haoyu@protonmail.com>
Thu, 23 May 2019 01:58:42 +0000 (09:58 +0800)
committerHAOYUatHZ <haoyu@protonmail.com>
Thu, 23 May 2019 01:58:42 +0000 (09:58 +0800)
asset/builder.go

index 21aa3c8..4d1c6f2 100644 (file)
@@ -26,14 +26,14 @@ func (r *Registry) DecodeCrossInAction(data []byte) (txbuilder.Action, error) {
 type crossInAction struct {
        reg *Registry
        bc.AssetAmount
-       SourceID        string                 `json:"source_id"`
+       SourceID        bc.Hash                `json:"source_id"`
        SourcePos       uint64                 `json:"source_pos"`
        AssetDefinition map[string]interface{} `json:"asset_definition"`
 }
 
 func (a *crossInAction) Build(ctx context.Context, builder *txbuilder.TemplateBuilder) error {
        var missing []string
-       if a.SourceID == "" {
+       if a.SourceID.IsZero() {
                missing = append(missing, "source_id")
        }
        if a.AssetId.IsZero() {
@@ -75,14 +75,9 @@ func (a *crossInAction) Build(ctx context.Context, builder *txbuilder.TemplateBu
                a.reg.SaveExtAsset(asset)
        }
 
-       var sourceID bc.Hash
-       if err := sourceID.UnmarshalText([]byte(a.SourceID)); err != nil {
-               return errors.New("invalid sourceID format")
-       }
-
        fed := federation.GetFederation()
        // arguments will be set when materializeWitnesses
-       txin := types.NewCrossChainInput(nil, sourceID, *a.AssetId, a.Amount, a.SourcePos, fed.ControlProgram, asset.RawDefinitionByte)
+       txin := types.NewCrossChainInput(nil, a.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{}