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() {
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{}