All Downloads are FREE. Search and download functionalities are using the official Maven repository.

stream.output.transaction_output.proto Maven / Gradle / Ivy

There is a newer version: 0.54.0
Show newest version
/**
 * # Transaction Output
 * Messages that describe the output of a transaction; data reported
 * in the block stream that is not in the transaction body and is
 * not reported in state changes.
 *
 * ### 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 com.hedera.hapi.block.stream.output;

/*
 * Copyright (C) 2024 Hedera Hashgraph, LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

option java_package = "com.hedera.hapi.block.stream.output.protoc";
// <<>> This comment is special code for setting PBJ Compiler java package
option java_multiple_files = true;

import "stream/output/schedule_service.proto";
import "stream/output/util_service.proto";
import "stream/output/crypto_service.proto";
import "stream/output/smart_contract_service.proto";

/**
 * Output from a transaction.
 *
 * The values in transaction outputs SHALL be data that is neither present
 * in the original transaction nor present in state changes.
 *
 * > Note
 * >> Only a few transactions produce output that is not in the transaction
 * >> and also not reflected in state changes. All other transaction types
 * >> are _currently_ not included here. We have, however, allocated names
 * >> and indexes for those transaction types to preserve consistency if we
 * >> add them later.
 *
 * 
 */
message TransactionOutput {
    oneof transaction {
        /**
         * Output from a crypto transfer transaction.
         */
        CryptoTransferOutput crypto_transfer = 1;

        /**
         * Output from a utilPrng transaction to request a
         * deterministic pseudo-random number.
         */
        UtilPrngOutput util_prng = 2;

        /**
         * Output from a contract call transaction.
         */
        CallContractOutput contract_call = 3;

        /**
         * Output from an ethereum call transaction.
         */
        EthereumOutput ethereum_call = 4;

        /**
         * Output from a contract create transaction.
         */
        CreateContractOutput contract_create = 5;

        /**
         * Output from a schedule create transaction that executed
         * immediately on creation.
         */
        CreateScheduleOutput create_schedule = 6;

        /**
         * Output from a schedule sign transaction that resulted in
         * executing the scheduled transaction.
         */
        SignScheduleOutput sign_schedule = 7;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy