m2pool-core/internal/gbt/tari/proto/transaction/transaction.pb.go

1013 lines
34 KiB
Go
Raw Normal View History

2025-09-03 08:00:42 +00:00
// Copyright 2020. The Tari Project
//
// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
// following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following
// disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
// following disclaimer in the documentation and/or other materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote
// products derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
// USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.6
// protoc v3.6.1
// source: transaction.proto
package transaction
import (
sidechain_types "pool/internal/gbt/tari/proto/sidechain_types"
types "pool/internal/gbt/tari/proto/types"
reflect "reflect"
sync "sync"
unsafe "unsafe"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// The transaction kernel tracks the excess for a given transaction. For an explanation of what the excess is, and
// why it is necessary, refer to the
// [Mimblewimble TLU post](https://tlu.tarilabs.com/protocols/mimblewimble-1/sources/PITCHME.link.html?highlight=mimblewimble#mimblewimble).
// The kernel also tracks other transaction metadata, such as the lock height for the transaction (i.e. the earliest
// this transaction can be mined) and the transaction fee, in cleartext.
type TransactionKernel struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Options for a kernel's structure or use
Features uint32 `protobuf:"varint,1,opt,name=features,proto3" json:"features,omitempty"`
// / Fee originally included in the transaction this proof is for (in MicroMinotari)
Fee uint64 `protobuf:"varint,2,opt,name=fee,proto3" json:"fee,omitempty"`
// This kernel is not valid earlier than lock_height blocks
// The max lock_height of all *inputs* to this transaction
LockHeight uint64 `protobuf:"varint,3,opt,name=lock_height,json=lockHeight,proto3" json:"lock_height,omitempty"`
// Remainder of the sum of all transaction commitments. If the transaction
// is well formed, amounts components should sum to zero and the excess
// is hence a valid public key.
Excess []byte `protobuf:"bytes,6,opt,name=excess,proto3" json:"excess,omitempty"`
// The signature proving the excess is a valid public key, which signs
// the transaction fee.
ExcessSig *types.Signature `protobuf:"bytes,7,opt,name=excess_sig,json=excessSig,proto3" json:"excess_sig,omitempty"`
// The hash of the kernel, as it appears in the MMR
Hash []byte `protobuf:"bytes,8,opt,name=hash,proto3" json:"hash,omitempty"`
// Version
Version uint32 `protobuf:"varint,9,opt,name=version,proto3" json:"version,omitempty"`
// Optional burned commitment
BurnCommitment []byte `protobuf:"bytes,10,opt,name=burn_commitment,json=burnCommitment,proto3" json:"burn_commitment,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *TransactionKernel) Reset() {
*x = TransactionKernel{}
mi := &file_transaction_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *TransactionKernel) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TransactionKernel) ProtoMessage() {}
func (x *TransactionKernel) ProtoReflect() protoreflect.Message {
mi := &file_transaction_proto_msgTypes[0]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TransactionKernel.ProtoReflect.Descriptor instead.
func (*TransactionKernel) Descriptor() ([]byte, []int) {
return file_transaction_proto_rawDescGZIP(), []int{0}
}
func (x *TransactionKernel) GetFeatures() uint32 {
if x != nil {
return x.Features
}
return 0
}
func (x *TransactionKernel) GetFee() uint64 {
if x != nil {
return x.Fee
}
return 0
}
func (x *TransactionKernel) GetLockHeight() uint64 {
if x != nil {
return x.LockHeight
}
return 0
}
func (x *TransactionKernel) GetExcess() []byte {
if x != nil {
return x.Excess
}
return nil
}
func (x *TransactionKernel) GetExcessSig() *types.Signature {
if x != nil {
return x.ExcessSig
}
return nil
}
func (x *TransactionKernel) GetHash() []byte {
if x != nil {
return x.Hash
}
return nil
}
func (x *TransactionKernel) GetVersion() uint32 {
if x != nil {
return x.Version
}
return 0
}
func (x *TransactionKernel) GetBurnCommitment() []byte {
if x != nil {
return x.BurnCommitment
}
return nil
}
// A transaction input.
//
// Primarily a reference to an output being spent by the transaction.
type TransactionInput struct {
state protoimpl.MessageState `protogen:"open.v1"`
// The features of the output being spent. We will check maturity for all outputs.
Features *OutputFeatures `protobuf:"bytes,1,opt,name=features,proto3" json:"features,omitempty"`
// The commitment referencing the output being spent.
Commitment []byte `protobuf:"bytes,2,opt,name=commitment,proto3" json:"commitment,omitempty"`
// Hash of the input, as it appears in the MMR
Hash []byte `protobuf:"bytes,3,opt,name=hash,proto3" json:"hash,omitempty"`
// The serialised script
Script []byte `protobuf:"bytes,4,opt,name=script,proto3" json:"script,omitempty"`
// The script input data, if any
InputData []byte `protobuf:"bytes,5,opt,name=input_data,json=inputData,proto3" json:"input_data,omitempty"`
// A signature with k_s, signing the script, input data, and mined height
ScriptSignature *types.ComAndPubSignature `protobuf:"bytes,7,opt,name=script_signature,json=scriptSignature,proto3" json:"script_signature,omitempty"`
// The offset public key, K_O
SenderOffsetPublicKey []byte `protobuf:"bytes,8,opt,name=sender_offset_public_key,json=senderOffsetPublicKey,proto3" json:"sender_offset_public_key,omitempty"`
// The hash of the output this input is spending
OutputHash []byte `protobuf:"bytes,9,opt,name=output_hash,json=outputHash,proto3" json:"output_hash,omitempty"`
// Covenant
Covenant []byte `protobuf:"bytes,10,opt,name=covenant,proto3" json:"covenant,omitempty"`
// Version
Version uint32 `protobuf:"varint,11,opt,name=version,proto3" json:"version,omitempty"`
// The encrypted data
EncryptedData []byte `protobuf:"bytes,12,opt,name=encrypted_data,json=encryptedData,proto3" json:"encrypted_data,omitempty"`
// The minimum value of the commitment that is proven by the range proof (in MicroMinotari)
MinimumValuePromise uint64 `protobuf:"varint,13,opt,name=minimum_value_promise,json=minimumValuePromise,proto3" json:"minimum_value_promise,omitempty"`
// The metadata signature for output this input is spending
MetadataSignature *types.ComAndPubSignature `protobuf:"bytes,14,opt,name=metadata_signature,json=metadataSignature,proto3" json:"metadata_signature,omitempty"`
// The rangeproof hash for output this input is spending
RangeproofHash []byte `protobuf:"bytes,15,opt,name=rangeproof_hash,json=rangeproofHash,proto3" json:"rangeproof_hash,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *TransactionInput) Reset() {
*x = TransactionInput{}
mi := &file_transaction_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *TransactionInput) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TransactionInput) ProtoMessage() {}
func (x *TransactionInput) ProtoReflect() protoreflect.Message {
mi := &file_transaction_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TransactionInput.ProtoReflect.Descriptor instead.
func (*TransactionInput) Descriptor() ([]byte, []int) {
return file_transaction_proto_rawDescGZIP(), []int{1}
}
func (x *TransactionInput) GetFeatures() *OutputFeatures {
if x != nil {
return x.Features
}
return nil
}
func (x *TransactionInput) GetCommitment() []byte {
if x != nil {
return x.Commitment
}
return nil
}
func (x *TransactionInput) GetHash() []byte {
if x != nil {
return x.Hash
}
return nil
}
func (x *TransactionInput) GetScript() []byte {
if x != nil {
return x.Script
}
return nil
}
func (x *TransactionInput) GetInputData() []byte {
if x != nil {
return x.InputData
}
return nil
}
func (x *TransactionInput) GetScriptSignature() *types.ComAndPubSignature {
if x != nil {
return x.ScriptSignature
}
return nil
}
func (x *TransactionInput) GetSenderOffsetPublicKey() []byte {
if x != nil {
return x.SenderOffsetPublicKey
}
return nil
}
func (x *TransactionInput) GetOutputHash() []byte {
if x != nil {
return x.OutputHash
}
return nil
}
func (x *TransactionInput) GetCovenant() []byte {
if x != nil {
return x.Covenant
}
return nil
}
func (x *TransactionInput) GetVersion() uint32 {
if x != nil {
return x.Version
}
return 0
}
func (x *TransactionInput) GetEncryptedData() []byte {
if x != nil {
return x.EncryptedData
}
return nil
}
func (x *TransactionInput) GetMinimumValuePromise() uint64 {
if x != nil {
return x.MinimumValuePromise
}
return 0
}
func (x *TransactionInput) GetMetadataSignature() *types.ComAndPubSignature {
if x != nil {
return x.MetadataSignature
}
return nil
}
func (x *TransactionInput) GetRangeproofHash() []byte {
if x != nil {
return x.RangeproofHash
}
return nil
}
// Output for a transaction, defining the new ownership of coins that are being transferred. The commitment is a
// blinded value for the output while the range proof guarantees the commitment includes a positive value without
// overflow and the ownership of the private key.
type TransactionOutput struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Options for an output's structure or use
Features *OutputFeatures `protobuf:"bytes,1,opt,name=features,proto3" json:"features,omitempty"`
// The homomorphic commitment representing the output amount
Commitment []byte `protobuf:"bytes,2,opt,name=commitment,proto3" json:"commitment,omitempty"`
// A proof that the commitment is in the right range
RangeProof *types.RangeProof `protobuf:"bytes,3,opt,name=range_proof,json=rangeProof,proto3" json:"range_proof,omitempty"`
// The hash of the output, as it appears in the MMR
Hash []byte `protobuf:"bytes,4,opt,name=hash,proto3" json:"hash,omitempty"`
// Tari script serialised script
Script []byte `protobuf:"bytes,5,opt,name=script,proto3" json:"script,omitempty"`
// Tari script offset public key, K_O
SenderOffsetPublicKey []byte `protobuf:"bytes,6,opt,name=sender_offset_public_key,json=senderOffsetPublicKey,proto3" json:"sender_offset_public_key,omitempty"`
// Metadata signature with the homomorphic commitment private values (amount and blinding factor) and the sender
// offset private key
MetadataSignature *types.ComAndPubSignature `protobuf:"bytes,7,opt,name=metadata_signature,json=metadataSignature,proto3" json:"metadata_signature,omitempty"`
// Covenant
Covenant []byte `protobuf:"bytes,8,opt,name=covenant,proto3" json:"covenant,omitempty"`
// Version
Version uint32 `protobuf:"varint,9,opt,name=version,proto3" json:"version,omitempty"`
// Encrypted Pedersen commitment openings (value and mask) for the output
EncryptedData []byte `protobuf:"bytes,10,opt,name=encrypted_data,json=encryptedData,proto3" json:"encrypted_data,omitempty"`
// The minimum value of the commitment that is proven by the range proof (in MicroMinotari)
MinimumValuePromise uint64 `protobuf:"varint,11,opt,name=minimum_value_promise,json=minimumValuePromise,proto3" json:"minimum_value_promise,omitempty"`
// Payment reference (PayRef) - 32-byte Blake2b hash of (block_hash || output_hash)
// This provides a unique, deterministic reference for the output that can be used
// for payment verification without revealing wallet ownership
PaymentReference []byte `protobuf:"bytes,12,opt,name=payment_reference,json=paymentReference,proto3" json:"payment_reference,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *TransactionOutput) Reset() {
*x = TransactionOutput{}
mi := &file_transaction_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *TransactionOutput) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TransactionOutput) ProtoMessage() {}
func (x *TransactionOutput) ProtoReflect() protoreflect.Message {
mi := &file_transaction_proto_msgTypes[2]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TransactionOutput.ProtoReflect.Descriptor instead.
func (*TransactionOutput) Descriptor() ([]byte, []int) {
return file_transaction_proto_rawDescGZIP(), []int{2}
}
func (x *TransactionOutput) GetFeatures() *OutputFeatures {
if x != nil {
return x.Features
}
return nil
}
func (x *TransactionOutput) GetCommitment() []byte {
if x != nil {
return x.Commitment
}
return nil
}
func (x *TransactionOutput) GetRangeProof() *types.RangeProof {
if x != nil {
return x.RangeProof
}
return nil
}
func (x *TransactionOutput) GetHash() []byte {
if x != nil {
return x.Hash
}
return nil
}
func (x *TransactionOutput) GetScript() []byte {
if x != nil {
return x.Script
}
return nil
}
func (x *TransactionOutput) GetSenderOffsetPublicKey() []byte {
if x != nil {
return x.SenderOffsetPublicKey
}
return nil
}
func (x *TransactionOutput) GetMetadataSignature() *types.ComAndPubSignature {
if x != nil {
return x.MetadataSignature
}
return nil
}
func (x *TransactionOutput) GetCovenant() []byte {
if x != nil {
return x.Covenant
}
return nil
}
func (x *TransactionOutput) GetVersion() uint32 {
if x != nil {
return x.Version
}
return 0
}
func (x *TransactionOutput) GetEncryptedData() []byte {
if x != nil {
return x.EncryptedData
}
return nil
}
func (x *TransactionOutput) GetMinimumValuePromise() uint64 {
if x != nil {
return x.MinimumValuePromise
}
return 0
}
func (x *TransactionOutput) GetPaymentReference() []byte {
if x != nil {
return x.PaymentReference
}
return nil
}
// Options for UTXOs
type OutputFeatures struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Version
Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
// The type of output, eg Coinbase, all of which have different consensus rules
OutputType uint32 `protobuf:"varint,2,opt,name=output_type,json=outputType,proto3" json:"output_type,omitempty"`
// The maturity of the specific UTXO. This is the min lock height at which an UTXO can be spend. Coinbase UTXO
// require a min maturity of the Coinbase_lock_height, this should be checked on receiving new blocks.
Maturity uint64 `protobuf:"varint,3,opt,name=maturity,proto3" json:"maturity,omitempty"`
// Additional arbitrary info in coinbase transactions supplied by miners
CoinbaseExtra []byte `protobuf:"bytes,4,opt,name=coinbase_extra,json=coinbaseExtra,proto3" json:"coinbase_extra,omitempty"`
// Features that are specific to a side chain
SidechainFeature *sidechain_types.SideChainFeature `protobuf:"bytes,5,opt,name=sidechain_feature,json=sidechainFeature,proto3" json:"sidechain_feature,omitempty"`
// The type of range proof used in the output
RangeProofType uint32 `protobuf:"varint,6,opt,name=range_proof_type,json=rangeProofType,proto3" json:"range_proof_type,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *OutputFeatures) Reset() {
*x = OutputFeatures{}
mi := &file_transaction_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *OutputFeatures) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*OutputFeatures) ProtoMessage() {}
func (x *OutputFeatures) ProtoReflect() protoreflect.Message {
mi := &file_transaction_proto_msgTypes[3]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use OutputFeatures.ProtoReflect.Descriptor instead.
func (*OutputFeatures) Descriptor() ([]byte, []int) {
return file_transaction_proto_rawDescGZIP(), []int{3}
}
func (x *OutputFeatures) GetVersion() uint32 {
if x != nil {
return x.Version
}
return 0
}
func (x *OutputFeatures) GetOutputType() uint32 {
if x != nil {
return x.OutputType
}
return 0
}
func (x *OutputFeatures) GetMaturity() uint64 {
if x != nil {
return x.Maturity
}
return 0
}
func (x *OutputFeatures) GetCoinbaseExtra() []byte {
if x != nil {
return x.CoinbaseExtra
}
return nil
}
func (x *OutputFeatures) GetSidechainFeature() *sidechain_types.SideChainFeature {
if x != nil {
return x.SidechainFeature
}
return nil
}
func (x *OutputFeatures) GetRangeProofType() uint32 {
if x != nil {
return x.RangeProofType
}
return 0
}
// The components of the block or transaction. The same struct can be used for either, since in Mimblewimble,
// cut-through means that blocks and transactions have the same structure. The inputs, outputs and kernels should
// be sorted by their Blake2b-256bit digest hash
type AggregateBody struct {
state protoimpl.MessageState `protogen:"open.v1"`
// List of inputs spent by the transaction.
Inputs []*TransactionInput `protobuf:"bytes,1,rep,name=inputs,proto3" json:"inputs,omitempty"`
// List of outputs the transaction produces.
Outputs []*TransactionOutput `protobuf:"bytes,2,rep,name=outputs,proto3" json:"outputs,omitempty"`
// Kernels contain the excesses and their signatures for transaction
Kernels []*TransactionKernel `protobuf:"bytes,3,rep,name=kernels,proto3" json:"kernels,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *AggregateBody) Reset() {
*x = AggregateBody{}
mi := &file_transaction_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *AggregateBody) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AggregateBody) ProtoMessage() {}
func (x *AggregateBody) ProtoReflect() protoreflect.Message {
mi := &file_transaction_proto_msgTypes[4]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AggregateBody.ProtoReflect.Descriptor instead.
func (*AggregateBody) Descriptor() ([]byte, []int) {
return file_transaction_proto_rawDescGZIP(), []int{4}
}
func (x *AggregateBody) GetInputs() []*TransactionInput {
if x != nil {
return x.Inputs
}
return nil
}
func (x *AggregateBody) GetOutputs() []*TransactionOutput {
if x != nil {
return x.Outputs
}
return nil
}
func (x *AggregateBody) GetKernels() []*TransactionKernel {
if x != nil {
return x.Kernels
}
return nil
}
// A transaction which consists of a kernel offset and an aggregate body made up of inputs, outputs and kernels.
type Transaction struct {
state protoimpl.MessageState `protogen:"open.v1"`
Offset []byte `protobuf:"bytes,1,opt,name=offset,proto3" json:"offset,omitempty"`
Body *AggregateBody `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
ScriptOffset []byte `protobuf:"bytes,3,opt,name=script_offset,json=scriptOffset,proto3" json:"script_offset,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Transaction) Reset() {
*x = Transaction{}
mi := &file_transaction_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Transaction) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Transaction) ProtoMessage() {}
func (x *Transaction) ProtoReflect() protoreflect.Message {
mi := &file_transaction_proto_msgTypes[5]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Transaction.ProtoReflect.Descriptor instead.
func (*Transaction) Descriptor() ([]byte, []int) {
return file_transaction_proto_rawDescGZIP(), []int{5}
}
func (x *Transaction) GetOffset() []byte {
if x != nil {
return x.Offset
}
return nil
}
func (x *Transaction) GetBody() *AggregateBody {
if x != nil {
return x.Body
}
return nil
}
func (x *Transaction) GetScriptOffset() []byte {
if x != nil {
return x.ScriptOffset
}
return nil
}
type UnblindedOutput struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Value of the output
Value uint64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
// Spending key of the output
SpendingKey []byte `protobuf:"bytes,2,opt,name=spending_key,json=spendingKey,proto3" json:"spending_key,omitempty"`
// Options for an output's structure or use
Features *OutputFeatures `protobuf:"bytes,3,opt,name=features,proto3" json:"features,omitempty"`
// Tari script serialised script
Script []byte `protobuf:"bytes,4,opt,name=script,proto3" json:"script,omitempty"`
// Tari script input data for spending
InputData []byte `protobuf:"bytes,5,opt,name=input_data,json=inputData,proto3" json:"input_data,omitempty"`
// Tari script private key
ScriptPrivateKey []byte `protobuf:"bytes,7,opt,name=script_private_key,json=scriptPrivateKey,proto3" json:"script_private_key,omitempty"`
// Tari script offset pubkey, K_O
SenderOffsetPublicKey []byte `protobuf:"bytes,8,opt,name=sender_offset_public_key,json=senderOffsetPublicKey,proto3" json:"sender_offset_public_key,omitempty"`
// UTXO signature with the script offset private key, k_O
MetadataSignature *types.ComAndPubSignature `protobuf:"bytes,9,opt,name=metadata_signature,json=metadataSignature,proto3" json:"metadata_signature,omitempty"`
// The minimum height the script allows this output to be spent
ScriptLockHeight uint64 `protobuf:"varint,10,opt,name=script_lock_height,json=scriptLockHeight,proto3" json:"script_lock_height,omitempty"`
// Covenant
Covenant []byte `protobuf:"bytes,11,opt,name=covenant,proto3" json:"covenant,omitempty"`
// Encrypted data
EncryptedData []byte `protobuf:"bytes,12,opt,name=encrypted_data,json=encryptedData,proto3" json:"encrypted_data,omitempty"`
// The minimum value of the commitment that is proven by the range proof (in MicroMinotari)
MinimumValuePromise uint64 `protobuf:"varint,13,opt,name=minimum_value_promise,json=minimumValuePromise,proto3" json:"minimum_value_promise,omitempty"`
// The range proof
RangeProof *types.RangeProof `protobuf:"bytes,14,opt,name=range_proof,json=rangeProof,proto3" json:"range_proof,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *UnblindedOutput) Reset() {
*x = UnblindedOutput{}
mi := &file_transaction_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UnblindedOutput) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UnblindedOutput) ProtoMessage() {}
func (x *UnblindedOutput) ProtoReflect() protoreflect.Message {
mi := &file_transaction_proto_msgTypes[6]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UnblindedOutput.ProtoReflect.Descriptor instead.
func (*UnblindedOutput) Descriptor() ([]byte, []int) {
return file_transaction_proto_rawDescGZIP(), []int{6}
}
func (x *UnblindedOutput) GetValue() uint64 {
if x != nil {
return x.Value
}
return 0
}
func (x *UnblindedOutput) GetSpendingKey() []byte {
if x != nil {
return x.SpendingKey
}
return nil
}
func (x *UnblindedOutput) GetFeatures() *OutputFeatures {
if x != nil {
return x.Features
}
return nil
}
func (x *UnblindedOutput) GetScript() []byte {
if x != nil {
return x.Script
}
return nil
}
func (x *UnblindedOutput) GetInputData() []byte {
if x != nil {
return x.InputData
}
return nil
}
func (x *UnblindedOutput) GetScriptPrivateKey() []byte {
if x != nil {
return x.ScriptPrivateKey
}
return nil
}
func (x *UnblindedOutput) GetSenderOffsetPublicKey() []byte {
if x != nil {
return x.SenderOffsetPublicKey
}
return nil
}
func (x *UnblindedOutput) GetMetadataSignature() *types.ComAndPubSignature {
if x != nil {
return x.MetadataSignature
}
return nil
}
func (x *UnblindedOutput) GetScriptLockHeight() uint64 {
if x != nil {
return x.ScriptLockHeight
}
return 0
}
func (x *UnblindedOutput) GetCovenant() []byte {
if x != nil {
return x.Covenant
}
return nil
}
func (x *UnblindedOutput) GetEncryptedData() []byte {
if x != nil {
return x.EncryptedData
}
return nil
}
func (x *UnblindedOutput) GetMinimumValuePromise() uint64 {
if x != nil {
return x.MinimumValuePromise
}
return 0
}
func (x *UnblindedOutput) GetRangeProof() *types.RangeProof {
if x != nil {
return x.RangeProof
}
return nil
}
var File_transaction_proto protoreflect.FileDescriptor
const file_transaction_proto_rawDesc = "" +
"\n" +
"\x11transaction.proto\x12\btari.rpc\x1a\vtypes.proto\x1a\x15sidechain_types.proto\"\x85\x02\n" +
"\x11TransactionKernel\x12\x1a\n" +
"\bfeatures\x18\x01 \x01(\rR\bfeatures\x12\x10\n" +
"\x03fee\x18\x02 \x01(\x04R\x03fee\x12\x1f\n" +
"\vlock_height\x18\x03 \x01(\x04R\n" +
"lockHeight\x12\x16\n" +
"\x06excess\x18\x06 \x01(\fR\x06excess\x122\n" +
"\n" +
"excess_sig\x18\a \x01(\v2\x13.tari.rpc.SignatureR\texcessSig\x12\x12\n" +
"\x04hash\x18\b \x01(\fR\x04hash\x12\x18\n" +
"\aversion\x18\t \x01(\rR\aversion\x12'\n" +
"\x0fburn_commitment\x18\n" +
" \x01(\fR\x0eburnCommitment\"\xdd\x04\n" +
"\x10TransactionInput\x124\n" +
"\bfeatures\x18\x01 \x01(\v2\x18.tari.rpc.OutputFeaturesR\bfeatures\x12\x1e\n" +
"\n" +
"commitment\x18\x02 \x01(\fR\n" +
"commitment\x12\x12\n" +
"\x04hash\x18\x03 \x01(\fR\x04hash\x12\x16\n" +
"\x06script\x18\x04 \x01(\fR\x06script\x12\x1d\n" +
"\n" +
"input_data\x18\x05 \x01(\fR\tinputData\x12G\n" +
"\x10script_signature\x18\a \x01(\v2\x1c.tari.rpc.ComAndPubSignatureR\x0fscriptSignature\x127\n" +
"\x18sender_offset_public_key\x18\b \x01(\fR\x15senderOffsetPublicKey\x12\x1f\n" +
"\voutput_hash\x18\t \x01(\fR\n" +
"outputHash\x12\x1a\n" +
"\bcovenant\x18\n" +
" \x01(\fR\bcovenant\x12\x18\n" +
"\aversion\x18\v \x01(\rR\aversion\x12%\n" +
"\x0eencrypted_data\x18\f \x01(\fR\rencryptedData\x122\n" +
"\x15minimum_value_promise\x18\r \x01(\x04R\x13minimumValuePromise\x12K\n" +
"\x12metadata_signature\x18\x0e \x01(\v2\x1c.tari.rpc.ComAndPubSignatureR\x11metadataSignature\x12'\n" +
"\x0frangeproof_hash\x18\x0f \x01(\fR\x0erangeproofHash\"\x90\x04\n" +
"\x11TransactionOutput\x124\n" +
"\bfeatures\x18\x01 \x01(\v2\x18.tari.rpc.OutputFeaturesR\bfeatures\x12\x1e\n" +
"\n" +
"commitment\x18\x02 \x01(\fR\n" +
"commitment\x125\n" +
"\vrange_proof\x18\x03 \x01(\v2\x14.tari.rpc.RangeProofR\n" +
"rangeProof\x12\x12\n" +
"\x04hash\x18\x04 \x01(\fR\x04hash\x12\x16\n" +
"\x06script\x18\x05 \x01(\fR\x06script\x127\n" +
"\x18sender_offset_public_key\x18\x06 \x01(\fR\x15senderOffsetPublicKey\x12K\n" +
"\x12metadata_signature\x18\a \x01(\v2\x1c.tari.rpc.ComAndPubSignatureR\x11metadataSignature\x12\x1a\n" +
"\bcovenant\x18\b \x01(\fR\bcovenant\x12\x18\n" +
"\aversion\x18\t \x01(\rR\aversion\x12%\n" +
"\x0eencrypted_data\x18\n" +
" \x01(\fR\rencryptedData\x122\n" +
"\x15minimum_value_promise\x18\v \x01(\x04R\x13minimumValuePromise\x12+\n" +
"\x11payment_reference\x18\f \x01(\fR\x10paymentReference\"\x81\x02\n" +
"\x0eOutputFeatures\x12\x18\n" +
"\aversion\x18\x01 \x01(\rR\aversion\x12\x1f\n" +
"\voutput_type\x18\x02 \x01(\rR\n" +
"outputType\x12\x1a\n" +
"\bmaturity\x18\x03 \x01(\x04R\bmaturity\x12%\n" +
"\x0ecoinbase_extra\x18\x04 \x01(\fR\rcoinbaseExtra\x12G\n" +
"\x11sidechain_feature\x18\x05 \x01(\v2\x1a.tari.rpc.SideChainFeatureR\x10sidechainFeature\x12(\n" +
"\x10range_proof_type\x18\x06 \x01(\rR\x0erangeProofType\"\xb1\x01\n" +
"\rAggregateBody\x122\n" +
"\x06inputs\x18\x01 \x03(\v2\x1a.tari.rpc.TransactionInputR\x06inputs\x125\n" +
"\aoutputs\x18\x02 \x03(\v2\x1b.tari.rpc.TransactionOutputR\aoutputs\x125\n" +
"\akernels\x18\x03 \x03(\v2\x1b.tari.rpc.TransactionKernelR\akernels\"w\n" +
"\vTransaction\x12\x16\n" +
"\x06offset\x18\x01 \x01(\fR\x06offset\x12+\n" +
"\x04body\x18\x02 \x01(\v2\x17.tari.rpc.AggregateBodyR\x04body\x12#\n" +
"\rscript_offset\x18\x03 \x01(\fR\fscriptOffset\"\xc7\x04\n" +
"\x0fUnblindedOutput\x12\x14\n" +
"\x05value\x18\x01 \x01(\x04R\x05value\x12!\n" +
"\fspending_key\x18\x02 \x01(\fR\vspendingKey\x124\n" +
"\bfeatures\x18\x03 \x01(\v2\x18.tari.rpc.OutputFeaturesR\bfeatures\x12\x16\n" +
"\x06script\x18\x04 \x01(\fR\x06script\x12\x1d\n" +
"\n" +
"input_data\x18\x05 \x01(\fR\tinputData\x12,\n" +
"\x12script_private_key\x18\a \x01(\fR\x10scriptPrivateKey\x127\n" +
"\x18sender_offset_public_key\x18\b \x01(\fR\x15senderOffsetPublicKey\x12K\n" +
"\x12metadata_signature\x18\t \x01(\v2\x1c.tari.rpc.ComAndPubSignatureR\x11metadataSignature\x12,\n" +
"\x12script_lock_height\x18\n" +
" \x01(\x04R\x10scriptLockHeight\x12\x1a\n" +
"\bcovenant\x18\v \x01(\fR\bcovenant\x12%\n" +
"\x0eencrypted_data\x18\f \x01(\fR\rencryptedData\x122\n" +
"\x15minimum_value_promise\x18\r \x01(\x04R\x13minimumValuePromise\x125\n" +
"\vrange_proof\x18\x0e \x01(\v2\x14.tari.rpc.RangeProofR\n" +
"rangeProofB0Z.pool/internal/gbt/tari/transaction;transactionb\x06proto3"
var (
file_transaction_proto_rawDescOnce sync.Once
file_transaction_proto_rawDescData []byte
)
func file_transaction_proto_rawDescGZIP() []byte {
file_transaction_proto_rawDescOnce.Do(func() {
file_transaction_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_transaction_proto_rawDesc), len(file_transaction_proto_rawDesc)))
})
return file_transaction_proto_rawDescData
}
var file_transaction_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
var file_transaction_proto_goTypes = []any{
(*TransactionKernel)(nil), // 0: tari.rpc.TransactionKernel
(*TransactionInput)(nil), // 1: tari.rpc.TransactionInput
(*TransactionOutput)(nil), // 2: tari.rpc.TransactionOutput
(*OutputFeatures)(nil), // 3: tari.rpc.OutputFeatures
(*AggregateBody)(nil), // 4: tari.rpc.AggregateBody
(*Transaction)(nil), // 5: tari.rpc.Transaction
(*UnblindedOutput)(nil), // 6: tari.rpc.UnblindedOutput
(*types.Signature)(nil), // 7: tari.rpc.Signature
(*types.ComAndPubSignature)(nil), // 8: tari.rpc.ComAndPubSignature
(*types.RangeProof)(nil), // 9: tari.rpc.RangeProof
(*sidechain_types.SideChainFeature)(nil), // 10: tari.rpc.SideChainFeature
}
var file_transaction_proto_depIdxs = []int32{
7, // 0: tari.rpc.TransactionKernel.excess_sig:type_name -> tari.rpc.Signature
3, // 1: tari.rpc.TransactionInput.features:type_name -> tari.rpc.OutputFeatures
8, // 2: tari.rpc.TransactionInput.script_signature:type_name -> tari.rpc.ComAndPubSignature
8, // 3: tari.rpc.TransactionInput.metadata_signature:type_name -> tari.rpc.ComAndPubSignature
3, // 4: tari.rpc.TransactionOutput.features:type_name -> tari.rpc.OutputFeatures
9, // 5: tari.rpc.TransactionOutput.range_proof:type_name -> tari.rpc.RangeProof
8, // 6: tari.rpc.TransactionOutput.metadata_signature:type_name -> tari.rpc.ComAndPubSignature
10, // 7: tari.rpc.OutputFeatures.sidechain_feature:type_name -> tari.rpc.SideChainFeature
1, // 8: tari.rpc.AggregateBody.inputs:type_name -> tari.rpc.TransactionInput
2, // 9: tari.rpc.AggregateBody.outputs:type_name -> tari.rpc.TransactionOutput
0, // 10: tari.rpc.AggregateBody.kernels:type_name -> tari.rpc.TransactionKernel
4, // 11: tari.rpc.Transaction.body:type_name -> tari.rpc.AggregateBody
3, // 12: tari.rpc.UnblindedOutput.features:type_name -> tari.rpc.OutputFeatures
8, // 13: tari.rpc.UnblindedOutput.metadata_signature:type_name -> tari.rpc.ComAndPubSignature
9, // 14: tari.rpc.UnblindedOutput.range_proof:type_name -> tari.rpc.RangeProof
15, // [15:15] is the sub-list for method output_type
15, // [15:15] is the sub-list for method input_type
15, // [15:15] is the sub-list for extension type_name
15, // [15:15] is the sub-list for extension extendee
0, // [0:15] is the sub-list for field type_name
}
func init() { file_transaction_proto_init() }
func file_transaction_proto_init() {
if File_transaction_proto != nil {
return
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_transaction_proto_rawDesc), len(file_transaction_proto_rawDesc)),
NumEnums: 0,
NumMessages: 7,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_transaction_proto_goTypes,
DependencyIndexes: file_transaction_proto_depIdxs,
MessageInfos: file_transaction_proto_msgTypes,
}.Build()
File_transaction_proto = out.File
file_transaction_proto_goTypes = nil
file_transaction_proto_depIdxs = nil
}