IssuanceInputType uint8 = iota
SpendInputType
CoinbaseInputType
- ClainPeginInputType
)
type (
TypedInput
CommitmentSuffix []byte
WitnessSuffix []byte
- Peginwitness [][]byte
}
// TypedInput return the txinput type.
}
case *SpendInput:
return inp.AssetAmount
- case *ClaimInput:
- return inp.AssetAmount
}
return bc.AssetAmount{}
}
return inp.AssetID()
case *SpendInput:
return *inp.AssetId
- case *ClaimInput:
- return *inp.AssetId
}
return bc.AssetID{}
return inp.Amount
case *SpendInput:
return inp.Amount
- case *ClaimInput:
- return inp.Amount
}
return 0
}
return inp.Arguments
case *SpendInput:
return inp.Arguments
- case *ClaimInput:
- return inp.Arguments
}
return nil
}
inp.Arguments = args
case *SpendInput:
inp.Arguments = args
- case *ClaimInput:
- inp.Arguments = args
}
}
return err
}
- if t.Peginwitness, err = blockchain.ReadVarstrList(r); err != nil {
- return err
- }
var assetID bc.AssetID
t.CommitmentSuffix, err = blockchain.ReadExtensibleString(r, func(r *blockchain.Reader) error {
if t.AssetVersion != 1 {
if si.SpendCommitmentSuffix, err = si.SpendCommitment.readFrom(r, 1); err != nil {
return err
}
- case ClainPeginInputType:
- ci := new(ClaimInput)
- t.TypedInput = ci
- if ci.SpendCommitmentSuffix, err = ci.SpendCommitment.readFrom(r, 1); err != nil {
- return err
- }
+
case CoinbaseInputType:
ci := new(CoinbaseInput)
t.TypedInput = ci
if ci.Arbitrary, err = blockchain.ReadVarstr31(r); err != nil {
return err
}
+
default:
return fmt.Errorf("unsupported input type %d", icType[0])
}
if inp.Arguments, err = blockchain.ReadVarstrList(r); err != nil {
return err
}
- case *ClaimInput:
- if inp.Arguments, err = blockchain.ReadVarstrList(r); err != nil {
- return err
- }
}
return nil
})
return errors.Wrap(err, "writing asset version")
}
- if _, err := blockchain.WriteVarstrList(w, t.Peginwitness); err != nil {
- return errors.Wrap(err, "writing pegin witness")
- }
if _, err := blockchain.WriteExtensibleString(w, t.CommitmentSuffix, t.writeInputCommitment); err != nil {
return errors.Wrap(err, "writing input commitment")
}
return err
}
return inp.SpendCommitment.writeExtensibleString(w, inp.SpendCommitmentSuffix, t.AssetVersion)
- case *ClaimInput:
- if _, err = w.Write([]byte{ClainPeginInputType}); err != nil {
- return err
- }
- return inp.SpendCommitment.writeExtensibleString(w, inp.SpendCommitmentSuffix, t.AssetVersion)
+
case *CoinbaseInput:
if _, err = w.Write([]byte{CoinbaseInputType}); err != nil {
return err
if t.AssetVersion != 1 {
return nil
}
+
switch inp := t.TypedInput.(type) {
case *IssuanceInput:
if _, err := blockchain.WriteVarstr31(w, inp.AssetDefinition); err != nil {
case *SpendInput:
_, err := blockchain.WriteVarstrList(w, inp.Arguments)
return err
- case *ClaimInput:
- _, err := blockchain.WriteVarstrList(w, inp.Arguments)
-
- return err
}
return nil
}