const (
IntraChainOutputType uint8 = iota
CrossChainOutputType
+ VoteOutputType
)
type (
case *CrossChainOutput:
return outp.OutputCommitment
+ case *VoteTxOutput:
+ return outp.OutputCommitment
+
default:
return OutputCommitment{}
}
case *CrossChainOutput:
return outp.AssetAmount
+ case *VoteTxOutput:
+ return outp.AssetAmount
+
default:
return bc.AssetAmount{}
}
case *CrossChainOutput:
return outp.ControlProgram
+ case *VoteTxOutput:
+ return outp.ControlProgram
+
default:
return nil
}
case *CrossChainOutput:
return outp.VMVersion
+ case *VoteTxOutput:
+ return outp.VMVersion
+
default:
return 0
}
return errors.Wrap(err, "reading cross-chain output commitment")
}
+ case VoteOutputType:
+ out := new(VoteTxOutput)
+ to.TypedOutput = out
+ if out.Vote, err = blockchain.ReadVarstr31(r); err != nil {
+ return errors.Wrap(err, "reading vote output vote")
+ }
+
+ if out.CommitmentSuffix, err = out.OutputCommitment.readFrom(r, to.AssetVersion); err != nil {
+ return errors.Wrap(err, "reading vote output commitment")
+ }
+
default:
return fmt.Errorf("unsupported output type %d", outType[0])
}
}
return outp.OutputCommitment.writeExtensibleString(w, outp.CommitmentSuffix, to.AssetVersion)
+ case *VoteTxOutput:
+ if _, err := w.Write([]byte{VoteOutputType}); err != nil {
+ return err
+ }
+ if _, err := blockchain.WriteVarstr31(w, outp.Vote); err != nil {
+ return err
+ }
+ return outp.OutputCommitment.writeExtensibleString(w, outp.CommitmentSuffix, to.AssetVersion)
+
default:
return nil
}