// 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 }