/**
 * # Transaction Contents
 * The Signed Transaction message which forms the content of a transaction
 * `signedTransactionBytes`. This message is the result of several changes
 * to transaction message structure over time.
 *
 * ### Keywords
 * The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
 * "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
 * document are to be interpreted as described in
 * [RFC2119](https://www.ietf.org/rfc/rfc2119) and clarified in
 * [RFC8174](https://www.ietf.org/rfc/rfc8174).
 */
syntax = "proto3";

package proto;

// SPDX-License-Identifier: Apache-2.0
option java_package = "com.hederahashgraph.api.proto.java";
// <<<pbj.java_package = "com.hedera.hapi.node.transaction">>> This comment is special code for setting PBJ Compiler java package
option java_multiple_files = true;

import "services_basic_types.proto";

/**
 * A combination transaction bytes and a map of signatures.<br/>
 * This message contains a serialized `TransactionBody` in a byte array
 * and a `SignatureMap` that contains all of the signatures offered to
 * authenticate the transaction.
 *
 * ### Block Stream Effects
 * This content is recorded in the record stream exactly as received.
 */
message SignedTransaction {
    /**
     * A byte array containing a serialized `TransactionBody`.
     * <p>
     * This content is what the signatures in `sigMap` MUST sign.
     */
    bytes bodyBytes = 1;

    /**
     * A set of cryptographic signatures.
     * <p>
     * This set MUST contain all signatures required to authenticate
     * and authorize the transaction.<br/>
     * This set MAY contain additional signatures.
     */
    SignatureMap sigMap = 2;

    /**
     * If false then the hash of this transaction is the SHA-384 hash of the
     * serialization of this SignedTransaction message as it arrived on the wire.
     * <p>
     * If true then the hash of this transaction is the SHA-384 hash of the
     * ascending field order serialization of the Transaction whose `bodyBytes`
     * and sigMap fields are deserialized from the contents of this message.
     */
    bool use_serialized_tx_message_hash_algorithm = 3;
}
