stream.output.smart_contract_service.proto Maven / Gradle / Ivy
/**
* # Service
* Block stream messages that report the results of transactions handled
* by the `` service.
*
* > REVIEW NOTE
* >> The use of sidecar records is a bit odd here. We may find it more
* >> effective to extract the actual changes into proper output messages
* >> and fields included in the ethereum call output and/or related state
* >> changes items, and remove the whole sidecar concept going forward.
*
* ### 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 "contract_call_local.proto";
import "sidecar_file.proto";
/**
* Block Stream data for a `contractCallMethod` transaction.
*
* This message SHALL NOT duplicate information already contained in
* the original transaction.
*/
message CallContractOutput {
repeated proto.TransactionSidecarRecord sidecars = 1;
/**
* An EVM contract call result.
*
* This field SHALL contain all of the data produced by the contract
* call transaction as well as basic accounting results.
*/
proto.ContractFunctionResult contract_call_result = 2;
}
/**
* Block Stream data for a `createContract` transaction.
*
* This message SHALL NOT duplicate information already contained in
* the original transaction.
*/
message CreateContractOutput {
repeated proto.TransactionSidecarRecord sidecars = 1;
/**
* An EVM contract call result.
*
* This field SHALL contain all of the data produced by the contract
* create transaction as well as basic accounting results.
*/
proto.ContractFunctionResult contract_create_result = 2;
}
// no evm exec, only modified entity
/**
* Block Stream data for a `updateContract` transaction.
*
* This message SHALL NOT duplicate information already contained in
* the original transaction.
*/
message UpdateContractOutput {}
// no evm exec, only modified entity
/**
* Block Stream data for a `deleteContract` transaction.
*
* This message SHALL NOT duplicate information already contained in
* the original transaction.
*/
message DeleteContractOutput {}
/**
* Block Stream data for a contract `systemUndelete` transaction.
*
* This message SHALL NOT duplicate information already contained in
* the original transaction.
*/
message SystemUnDeleteContractOutput {}
/**
* Block Stream data for a contract `systemDelete` transaction.
*
* This message SHALL NOT duplicate information already contained in
* the original transaction.
*/
message SystemDeleteContractOutput {}
/**
* Block Stream data for a `callEthereum` transaction.
*
* This message SHALL NOT duplicate information already contained in
* the original transaction.
*/
message EthereumOutput {
/**
* A list of additional outputs.
*
* This field MAY record one or more additional outputs and smart
* contract state changes produced during the ethereum call
* transaction handling.
* This field SHALL NOT be set if the transaction handling did not
* produce additional outputs.
* This field is not settled and MAY be removed or modified.
*/
repeated proto.TransactionSidecarRecord sidecars = 1;
/**
* An ethereum hash value.
*
* This SHALL be a keccak256 hash of the ethereumData.
*/
bytes ethereum_hash = 2;
}