IssuanceInputType uint8 = iota
SpendInputType
CoinbaseInputType
- ClainPeginInputType
- DposInputType
)
type (
TypedInput
CommitmentSuffix []byte
WitnessSuffix []byte
- Peginwitness [][]byte
}
// TypedInput return the txinput type.
}
case *SpendInput:
return inp.AssetAmount
- case *ClaimInput:
- return inp.AssetAmount
- case *DposTx:
- return inp.AssetAmount
}
return bc.AssetAmount{}
}
return inp.AssetID()
case *SpendInput:
return *inp.AssetId
- case *ClaimInput:
- return *inp.AssetId
- case *DposTx:
- return *inp.AssetId
}
return bc.AssetID{}
return inp.Amount
case *SpendInput:
return inp.Amount
- case *ClaimInput:
- return inp.Amount
- case *DposTx:
- return inp.Amount
}
return 0
}
return inp.Arguments
case *SpendInput:
return inp.Arguments
- case *ClaimInput:
- return inp.Arguments
- case *DposTx:
- return inp.Arguments
}
return nil
}
inp.Arguments = args
case *SpendInput:
inp.Arguments = args
- case *ClaimInput:
- inp.Arguments = args
- case *DposTx:
- 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
}
- case DposInputType:
- ci := new(DposTx)
- t.TypedInput = ci
- if ci.SpendCommitmentSuffix, err = ci.SpendCommitment.readFrom(r, 1); 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
- }
- case *DposTx:
- txType := uint64(0)
- if txType, err = blockchain.ReadVarint63(r); err != nil {
- return err
- }
- inp.Type = TxType(txType)
- var from []byte
- if from, err = blockchain.ReadVarstr31(r); err != nil {
- return err
- }
- inp.From = string(from)
- var to []byte
- if to, err = blockchain.ReadVarstr31(r); err != nil {
- return err
- }
- inp.To = string(to)
- if inp.Amount, err = blockchain.ReadVarint63(r); err != nil {
- return err
- }
- if inp.Stake, err = blockchain.ReadVarint63(r); err != nil {
- return err
- }
- if inp.Arguments, err = blockchain.ReadVarstrList(r); err != nil {
- return err
- }
-
- var info []byte
- if info, err = blockchain.ReadVarstr31(r); err != nil {
- return err
- }
- inp.Info = string(info)
}
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 _, err = blockchain.WriteVarstr31(w, inp.Arbitrary); err != nil {
return errors.Wrap(err, "writing coinbase arbitrary")
}
- case *DposTx:
- if _, err = w.Write([]byte{DposInputType}); err != nil {
- return err
- }
- return inp.SpendCommitment.writeExtensibleString(w, inp.SpendCommitmentSuffix, t.AssetVersion)
}
return nil
}
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
- case *DposTx:
- if _, err := blockchain.WriteVarint63(w, uint64(inp.Type)); err != nil {
- return err
- }
- if _, err := blockchain.WriteVarstr31(w, []byte(inp.From)); err != nil {
- return err
- }
- if _, err := blockchain.WriteVarstr31(w, []byte(inp.To)); err != nil {
- return err
- }
- if _, err := blockchain.WriteVarint63(w, inp.Amount); err != nil {
- return err
- }
- if _, err := blockchain.WriteVarint63(w, inp.Stake); err != nil {
- return err
- }
- if _, err := blockchain.WriteVarstrList(w, inp.Arguments); err != nil {
- return err
- }
- _, err := blockchain.WriteVarstr31(w, []byte(inp.Info))
-
- return err
}
return nil
}