}
spentOutputIDs := make(map[bc.Hash]bool)
+ mainchainOutputIDs := make(map[bc.Hash]bool)
for id, e := range entries {
var ord uint64
switch e := e.(type) {
case *bc.CrossChainInput:
ord = e.Ordinal
+ mainchainOutputIDs[*e.MainchainOutputId] = true
if *e.WitnessDestination.Value.AssetId == *consensus.BTMAssetID {
tx.GasInputIDs = append(tx.GasInputIDs, id)
}
for id := range spentOutputIDs {
tx.SpentOutputIDs = append(tx.SpentOutputIDs, id)
}
- fmt.Println("MapTx end...")
+ for id := range mainchainOutputIDs {
+ tx.MainchainOutputIDs = append(tx.MainchainOutputIDs, id)
+ }
return tx
}
spends = append(spends, spend)
case *CrossChainInput:
+ // TODO: fed peg script
prog := &bc.Program{VmVersion: inp.VMVersion, Code: inp.ControlProgram}
src := &bc.ValueSource{
Ref: &inp.SourceID,
Value: &inp.AssetAmount,
Position: inp.SourcePosition,
}
- prevout := bc.NewCrossChainOutput(src, prog, 0) // ordinal doesn't matter
+ prevout := bc.NewIntraChainOutput(src, prog, 0) // ordinal doesn't matter
outputID := bc.EntryID(prevout)
- crossIn := bc.NewCrossChainInput(&outputID, &inp.AssetAmount, uint64(i))
+ crossIn := bc.NewCrossChainInput(&outputID, &inp.AssetAmount, prog, uint64(i))
crossIn.WitnessArguments = inp.Arguments
crossInID := addEntry(crossIn)
muxSources[i] = &bc.ValueSource{
Value: &inp.AssetAmount,
}
crossIns = append(crossIns, crossIn)
-
}
}