From 3443e392f1db566dccd68f798dcaa37d77516d68 Mon Sep 17 00:00:00 2001 From: Silas Lenihan <32529249+silaslenihan@users.noreply.github.com> Date: Mon, 2 Mar 2026 12:05:59 -0500 Subject: [PATCH 01/49] Added back Solana protos (#301) * Remove Solana protos and add Makefile for generation * Auto-fix: buf format, gofmt, go generate, go mod tidy * remove unnecessary makefile * Added back Solana protos * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> From 33ff4336e600b9ecb7a03bf728b7618b6b3948ca Mon Sep 17 00:00:00 2001 From: Silas Lenihan Date: Tue, 3 Mar 2026 12:43:16 -0500 Subject: [PATCH 02/49] Revert "Revert Solana protos (#300)" This reverts commit ab7629f19bc1eac8409d50fee10771937d6e308e. --- .../blockchain/solana/v1alpha/client.proto | 429 +++++++++++++++++ cre/go/installer/pkg/embedded_gen.go | 435 ++++++++++++++++++ 2 files changed, 864 insertions(+) create mode 100644 cre/capabilities/blockchain/solana/v1alpha/client.proto diff --git a/cre/capabilities/blockchain/solana/v1alpha/client.proto b/cre/capabilities/blockchain/solana/v1alpha/client.proto new file mode 100644 index 00000000..5f950f3d --- /dev/null +++ b/cre/capabilities/blockchain/solana/v1alpha/client.proto @@ -0,0 +1,429 @@ +syntax = "proto3"; +package capabilities.blockchain.solana.v1alpha; + +import "sdk/v1alpha/sdk.proto"; +import "tools/generator/v1alpha/cre_metadata.proto"; +import "values/v1/values.proto"; + +// Account/tx data encodings. +enum EncodingType { + ENCODING_TYPE_NONE = 0; + ENCODING_TYPE_BASE58 = 1; // for data <129 bytes + ENCODING_TYPE_BASE64 = 2; // any size + ENCODING_TYPE_BASE64_ZSTD = 3; // zstd-compressed, base64-wrapped + ENCODING_TYPE_JSON_PARSED = 4; // program parsers; fallback to base64 if unknown + ENCODING_TYPE_JSON = 5; // raw JSON (rare; prefer JSON_PARSED) +} + +// Read consistency of queried state. +enum CommitmentType { + COMMITMENT_TYPE_NONE = 0; + COMMITMENT_TYPE_FINALIZED = 1; // cluster-finalized + COMMITMENT_TYPE_CONFIRMED = 2; // voted by supermajority + COMMITMENT_TYPE_PROCESSED = 3; // node’s latest +} + +// Cluster confirmation status of a tx/signature. +enum ConfirmationStatusType { + CONFIRMATION_STATUS_TYPE_NONE = 0; + CONFIRMATION_STATUS_TYPE_PROCESSED = 1; + CONFIRMATION_STATUS_TYPE_CONFIRMED = 2; + CONFIRMATION_STATUS_TYPE_FINALIZED = 3; +} + +// Transaction execution status returned by submitters/simulations. +enum TxStatus { + TX_STATUS_FATAL = 0; // unrecoverable failure + TX_STATUS_ABORTED = 1; // not executed / dropped + TX_STATUS_SUCCESS = 2; // executed successfully +} + +// On-chain account state. +message Account { + uint64 lamports = 1; // balance in lamports (1e-9 SOL) + bytes owner = 2; // 32-byte program id (Pubkey) + DataBytesOrJSON data = 3; // account data (encoded or JSON) + bool executable = 4; // true if this is a program account + values.v1.BigInt rent_epoch = 5; // next rent epoch + uint64 space = 6; // data length in bytes +} + +// Compute budget configuration when submitting txs. +message ComputeConfig { + uint32 compute_limit = 1; // max CUs (approx per-tx limit) + uint64 compute_max_price = 2; // max lamports per CU +} + +// Raw bytes vs parsed JSON (as returned by RPC). +message DataBytesOrJSON { + EncodingType encoding = 1; + oneof body { + bytes raw = 2; // program data (node’s base64/base58 decoded) + bytes json = 3; // json: UTF-8 bytes of the jsonParsed payload. + } +} + +// Return a slice of account data. +message DataSlice { + uint64 offset = 1; // start byte + uint64 length = 2; // number of bytes +} + +// Options for GetAccountInfo. +message GetAccountInfoOpts { + EncodingType encoding = 1; // data encoding + CommitmentType commitment = 2; // read consistency + DataSlice data_slice = 3; // optional slice window + uint64 min_context_slot = 4; // lower bound slot +} + +// Reply for GetAccountInfoWithOpts. +message GetAccountInfoWithOptsReply { + RPCContext rpc_context = 1; // read slot + optional Account value = 2; // account (may be empty) +} + +// Request for GetAccountInfoWithOpts. +message GetAccountInfoWithOptsRequest { + bytes account = 1; // 32-byte Pubkey + GetAccountInfoOpts opts = 2; +} + +// Reply for GetBalance. +message GetBalanceReply { + uint64 value = 1; // lamports +} + +// Request for GetBalance. +message GetBalanceRequest { + bytes addr = 1; // 32-byte Pubkey + CommitmentType commitment = 2; // read consistency +} + +// Options for GetBlock. +message GetBlockOpts { + CommitmentType commitment = 4; // read consistency +} + +// Block response. +message GetBlockReply { + bytes blockhash = 1; // 32-byte block hash + bytes previous_blockhash = 2; // 32-byte parent hash + uint64 parent_slot = 3; + optional int64 block_time = 4; // unix seconds, node may not report it + uint64 block_height = 5; // chain height +} + +// Request for GetBlock. +message GetBlockRequest { + uint64 slot = 1; // target slot + GetBlockOpts opts = 2; +} + +// Fee quote for a base58-encoded Message. +message GetFeeForMessageReply { + uint64 fee = 1; // lamports +} + +message GetFeeForMessageRequest { + string message = 1; // must be base58-encoded Message + CommitmentType commitment = 2; // read consistency +} + +// Options for GetMultipleAccounts. +message GetMultipleAccountsOpts { + EncodingType encoding = 1; + CommitmentType commitment = 2; + DataSlice data_slice = 3; + uint64 min_context_slot = 4; +} + +message OptionalAccountWrapper { + optional Account account = 1; +} + +// Reply for GetMultipleAccountsWithOpts. +message GetMultipleAccountsWithOptsReply { + RPCContext rpc_context = 1; // read slot + repeated OptionalAccountWrapper value = 2; // accounts (nil entries allowed) +} + +// Request for GetMultipleAccountsWithOpts. +message GetMultipleAccountsWithOptsRequest { + repeated bytes accounts = 1; // list of 32-byte Pubkeys + GetMultipleAccountsOpts opts = 2; +} + +// Reply for GetSignatureStatuses. +message GetSignatureStatusesReply { + repeated GetSignatureStatusesResult results = 1; // 1:1 with input +} + +// Request for GetSignatureStatuses. +message GetSignatureStatusesRequest { + repeated bytes sigs = 1; // 64-byte signatures +} + +// Per-signature status. +message GetSignatureStatusesResult { + uint64 slot = 1; // processed slot + optional uint64 confirmations = 2; // null->0 here + string err = 3; // error JSON string (empty on success) + ConfirmationStatusType confirmation_status = 4; +} + +// Current “height” (blocks below latest). +message GetSlotHeightReply { + uint64 height = 1; +} + +message GetSlotHeightRequest { + CommitmentType commitment = 1; // read consistency +} + +// Message header counts. +message MessageHeader { + uint32 num_required_signatures = 1; // signer count + uint32 num_readonly_signed_accounts = 2; // trailing signed RO + uint32 num_readonly_unsigned_accounts = 3; // trailing unsigned RO +} + +// Parsed message (no address tables). +message ParsedMessage { + bytes recent_blockhash = 1; // 32-byte Hash + repeated bytes account_keys = 2; // list of 32-byte Pubkeys + MessageHeader header = 3; + repeated CompiledInstruction instructions = 4; +} + +// Parsed transaction (signatures + message). +message ParsedTransaction { + repeated bytes signatures = 1; // 64-byte signatures + ParsedMessage message = 2; +} + +// Token amount (UI-friendly). +message UiTokenAmount { + string amount = 1; // raw integer string + uint32 decimals = 2; // mint decimals + string ui_amount_string = 4; // amount / 10^decimals +} + +// SPL token balance entry. +message TokenBalance { + uint32 account_index = 1; // index in account_keys + optional bytes owner = 2; // 32-byte owner (optional) + optional bytes program_id = 3; // 32-byte token program (optional) + bytes mint = 4; // 32-byte mint + UiTokenAmount ui = 5; // formatted amounts +} + +// Inner instruction list at a given outer instruction index. +message InnerInstruction { + uint32 index = 1; // outer ix index + repeated CompiledInstruction instructions = 2; // invoked ixs +} + +// Address table lookups expanded by loader. +message LoadedAddresses { + repeated bytes readonly = 1; // 32-byte Pubkeys + repeated bytes writable = 2; // 32-byte Pubkeys +} + +// Compiled (program) instruction. +message CompiledInstruction { + uint32 program_id_index = 1; // index into account_keys + repeated uint32 accounts = 2; // indices into account_keys + bytes data = 3; // program input bytes + uint32 stack_height = 4; // if recorded by node +} + +// Raw bytes with encoding tag. +message Data { + bytes content = 1; // raw bytes + EncodingType encoding = 2; // how it was encoded originally +} + +// Program return data. +message ReturnData { + bytes program_id = 1; // 32-byte Pubkey + Data data = 2; // raw return bytes +} + +// Transaction execution metadata. +message TransactionMeta { + string err_json = 1; // error JSON (empty on success) + uint64 fee = 2; // lamports + repeated uint64 pre_balances = 3; // lamports per account + repeated uint64 post_balances = 4; // lamports per account + repeated string log_messages = 5; // runtime logs + repeated TokenBalance pre_token_balances = 6; + repeated TokenBalance post_token_balances = 7; + repeated InnerInstruction inner_instructions = 8; + LoadedAddresses loaded_addresses = 9; + ReturnData return_data = 10; + optional uint64 compute_units_consumed = 11; // CUs +} + +// Transaction envelope: raw bytes or parsed struct. +message TransactionEnvelope { + oneof transaction { + bytes raw = 1; // raw tx bytes (for RAW/base64) + ParsedTransaction parsed = 2; // parsed tx (for JSON_PARSED) + } +} + +// GetTransaction reply. +message GetTransactionReply { + uint64 slot = 1; // processed slot + optional int64 block_time = 2; // unix seconds + optional TransactionEnvelope transaction = 3; // tx bytes or parsed + optional TransactionMeta meta = 4; // may be omitted by node +} + +// GetTransaction request. +message GetTransactionRequest { + bytes signature = 1; // 64-byte signature +} + +// RPC read context. +message RPCContext { + uint64 slot = 1; +} + +// Simulation options. +message SimulateTXOpts { + bool sig_verify = 1; // verify sigs + CommitmentType commitment = 2; // read consistency + bool replace_recent_blockhash = 3; // refresh blockhash + SimulateTransactionAccountsOpts accounts = 4; // return accounts +} + +// Simulation result. +message SimulateTXReply { + string err = 1; // empty on success + repeated string logs = 2; // runtime logs + repeated Account accounts = 3; // returned accounts + uint64 units_consumed = 4; // CUs +} + +// Simulation request. +message SimulateTXRequest { + bytes receiver = 1; // 32-byte program id (target) + string encoded_transaction = 2; // base64/base58 tx + SimulateTXOpts opts = 3; +} + +// Accounts to return during simulation. +message SimulateTransactionAccountsOpts { + EncodingType encoding = 1; // account data encoding + repeated bytes addresses = 2; // 32-byte Pubkeys +} + +enum ComparisonOperator { + COMPARISON_OPERATOR_EQ = 0; + COMPARISON_OPERATOR_NEQ = 1; + COMPARISON_OPERATOR_GT = 2; + COMPARISON_OPERATOR_LT = 3; + COMPARISON_OPERATOR_GTE = 4; + COMPARISON_OPERATOR_LTE = 5; +} + +message ValueComparator { + bytes value = 1; + ComparisonOperator operator = 2; +} + +message SubkeyConfig { + repeated string path = 1; + repeated ValueComparator comparers = 2; +} + +message FilterLogTriggerRequest { + string name = 1; + bytes address = 2; // Solana PublicKey (32 bytes) + string event_name = 3; + bytes event_idl_json = 4; + repeated SubkeyConfig subkeys = 5; +} + +message Log { + string chain_id = 1; // Chain identifier + int64 log_index = 2; // Index of the log within the block + bytes block_hash = 3; // 32-byte block hash + int64 block_number = 4; // Block/slot number + uint64 block_timestamp = 5; // Unix timestamp of the block + bytes address = 6; // 32-byte program PublicKey + bytes event_sig = 7; // 8-byte event signature + bytes tx_hash = 8; // 64-byte transaction signature + bytes data = 9; // Decoded event data + int64 sequence_num = 10; // Sequence number for ordering + optional string error = 11; // Error message if log processing failed +} + +// All metas are non-signers. +message AccountMeta { + bytes public_key = 1; // 32 bytes account public key + bool is_writable = 2; // write flag +} + +message WriteReportRequest { + repeated AccountMeta remaining_accounts = 1; // accounts that are required by the receiver to accept the report + bytes receiver = 2; // 32 bytes receiver + optional ComputeConfig compute_config = 3; + sdk.v1alpha.ReportResponse report = 4; +} + +enum ReceiverContractExecutionStatus { + RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS = 0; + RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED = 1; +} + +message WriteReportReply { + TxStatus tx_status = 1; + optional ReceiverContractExecutionStatus receiver_contract_execution_status = 2; + optional bytes tx_signature = 3; + optional uint64 transaction_fee = 4; + optional string error_message = 5; +} + +service Client { + option (tools.generator.v1alpha.capability) = { + mode: MODE_DON + capability_id: "solana@1.0.0" + labels: { + // from https://github.com/smartcontractkit/chain-selectors/blob/main/selectors.yml + // as a subset of the selectors supported on the CRE + key: "ChainSelector" + value: { + uint64_label: { + defaults: [ + { + key: "solana-mainnet" + value: 124615329519749607 + }, + { + key: "solana-testnet" + value: 6302590918974934319 + }, + { + key: "solana-devnet" + value: 16423721717087811551 + } + ] + } + } + } + }; + + rpc GetAccountInfoWithOpts(GetAccountInfoWithOptsRequest) returns (GetAccountInfoWithOptsReply); + rpc GetBalance(GetBalanceRequest) returns (GetBalanceReply); + rpc GetBlock(GetBlockRequest) returns (GetBlockReply); + rpc GetFeeForMessage(GetFeeForMessageRequest) returns (GetFeeForMessageReply); + rpc GetMultipleAccountsWithOpts(GetMultipleAccountsWithOptsRequest) returns (GetMultipleAccountsWithOptsReply); + rpc GetSignatureStatuses(GetSignatureStatusesRequest) returns (GetSignatureStatusesReply); + rpc GetSlotHeight(GetSlotHeightRequest) returns (GetSlotHeightReply); + rpc GetTransaction(GetTransactionRequest) returns (GetTransactionReply); + rpc LogTrigger(FilterLogTriggerRequest) returns (stream Log); + rpc WriteReport(WriteReportRequest) returns (WriteReportReply); +} diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 0b5ed0f9..28b9c3fc 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -527,6 +527,437 @@ message WriteReportReply { } ` +const blockchainSolanaV1alphaClientEmbedded = `syntax = "proto3"; +package capabilities.blockchain.solana.v1alpha; + +import "sdk/v1alpha/sdk.proto"; +import "tools/generator/v1alpha/cre_metadata.proto"; +import "values/v1/values.proto"; + +// Account/tx data encodings. +enum EncodingType { + ENCODING_TYPE_NONE = 0; + ENCODING_TYPE_BASE58 = 1; // for data <129 bytes + ENCODING_TYPE_BASE64 = 2; // any size + ENCODING_TYPE_BASE64_ZSTD = 3; // zstd-compressed, base64-wrapped + ENCODING_TYPE_JSON_PARSED = 4; // program parsers; fallback to base64 if unknown + ENCODING_TYPE_JSON = 5; // raw JSON (rare; prefer JSON_PARSED) +} + +// Read consistency of queried state. +enum CommitmentType { + COMMITMENT_TYPE_NONE = 0; + COMMITMENT_TYPE_FINALIZED = 1; // cluster-finalized + COMMITMENT_TYPE_CONFIRMED = 2; // voted by supermajority + COMMITMENT_TYPE_PROCESSED = 3; // node’s latest +} + +// Cluster confirmation status of a tx/signature. +enum ConfirmationStatusType { + CONFIRMATION_STATUS_TYPE_NONE = 0; + CONFIRMATION_STATUS_TYPE_PROCESSED = 1; + CONFIRMATION_STATUS_TYPE_CONFIRMED = 2; + CONFIRMATION_STATUS_TYPE_FINALIZED = 3; +} + +// Transaction execution status returned by submitters/simulations. +enum TxStatus { + TX_STATUS_FATAL = 0; // unrecoverable failure + TX_STATUS_ABORTED = 1; // not executed / dropped + TX_STATUS_SUCCESS = 2; // executed successfully +} + +// On-chain account state. +message Account { + uint64 lamports = 1; // balance in lamports (1e-9 SOL) + bytes owner = 2; // 32-byte program id (Pubkey) + DataBytesOrJSON data = 3; // account data (encoded or JSON) + bool executable = 4; // true if this is a program account + values.v1.BigInt rent_epoch = 5; // next rent epoch + uint64 space = 6; // data length in bytes +} + +// Compute budget configuration when submitting txs. +message ComputeConfig { + uint32 compute_limit = 1; // max CUs (approx per-tx limit) + uint64 compute_max_price = 2; // max lamports per CU +} + +// Raw bytes vs parsed JSON (as returned by RPC). +message DataBytesOrJSON { + EncodingType encoding = 1; + oneof body { + bytes raw = 2; // program data (node’s base64/base58 decoded) + bytes json = 3; // json: UTF-8 bytes of the jsonParsed payload. + } +} + +// Return a slice of account data. +message DataSlice { + uint64 offset = 1; // start byte + uint64 length = 2; // number of bytes +} + +// Options for GetAccountInfo. +message GetAccountInfoOpts { + EncodingType encoding = 1; // data encoding + CommitmentType commitment = 2; // read consistency + DataSlice data_slice = 3; // optional slice window + uint64 min_context_slot = 4; // lower bound slot +} + +// Reply for GetAccountInfoWithOpts. +message GetAccountInfoWithOptsReply { + RPCContext rpc_context = 1; // read slot + optional Account value = 2; // account (may be empty) +} + +// Request for GetAccountInfoWithOpts. +message GetAccountInfoWithOptsRequest { + bytes account = 1; // 32-byte Pubkey + GetAccountInfoOpts opts = 2; +} + +// Reply for GetBalance. +message GetBalanceReply { + uint64 value = 1; // lamports +} + +// Request for GetBalance. +message GetBalanceRequest { + bytes addr = 1; // 32-byte Pubkey + CommitmentType commitment = 2; // read consistency +} + +// Options for GetBlock. +message GetBlockOpts { + CommitmentType commitment = 4; // read consistency +} + +// Block response. +message GetBlockReply { + bytes blockhash = 1; // 32-byte block hash + bytes previous_blockhash = 2; // 32-byte parent hash + uint64 parent_slot = 3; + optional int64 block_time = 4; // unix seconds, node may not report it + uint64 block_height = 5; // chain height +} + +// Request for GetBlock. +message GetBlockRequest { + uint64 slot = 1; // target slot + GetBlockOpts opts = 2; +} + +// Fee quote for a base58-encoded Message. +message GetFeeForMessageReply { + uint64 fee = 1; // lamports +} + +message GetFeeForMessageRequest { + string message = 1; // must be base58-encoded Message + CommitmentType commitment = 2; // read consistency +} + +// Options for GetMultipleAccounts. +message GetMultipleAccountsOpts { + EncodingType encoding = 1; + CommitmentType commitment = 2; + DataSlice data_slice = 3; + uint64 min_context_slot = 4; +} + +message OptionalAccountWrapper { + optional Account account = 1; +} + +// Reply for GetMultipleAccountsWithOpts. +message GetMultipleAccountsWithOptsReply { + RPCContext rpc_context = 1; // read slot + repeated OptionalAccountWrapper value = 2; // accounts (nil entries allowed) +} + +// Request for GetMultipleAccountsWithOpts. +message GetMultipleAccountsWithOptsRequest { + repeated bytes accounts = 1; // list of 32-byte Pubkeys + GetMultipleAccountsOpts opts = 2; +} + +// Reply for GetSignatureStatuses. +message GetSignatureStatusesReply { + repeated GetSignatureStatusesResult results = 1; // 1:1 with input +} + +// Request for GetSignatureStatuses. +message GetSignatureStatusesRequest { + repeated bytes sigs = 1; // 64-byte signatures +} + +// Per-signature status. +message GetSignatureStatusesResult { + uint64 slot = 1; // processed slot + optional uint64 confirmations = 2; // null->0 here + string err = 3; // error JSON string (empty on success) + ConfirmationStatusType confirmation_status = 4; +} + +// Current “height” (blocks below latest). +message GetSlotHeightReply { + uint64 height = 1; +} + +message GetSlotHeightRequest { + CommitmentType commitment = 1; // read consistency +} + +// Message header counts. +message MessageHeader { + uint32 num_required_signatures = 1; // signer count + uint32 num_readonly_signed_accounts = 2; // trailing signed RO + uint32 num_readonly_unsigned_accounts = 3; // trailing unsigned RO +} + +// Parsed message (no address tables). +message ParsedMessage { + bytes recent_blockhash = 1; // 32-byte Hash + repeated bytes account_keys = 2; // list of 32-byte Pubkeys + MessageHeader header = 3; + repeated CompiledInstruction instructions = 4; +} + +// Parsed transaction (signatures + message). +message ParsedTransaction { + repeated bytes signatures = 1; // 64-byte signatures + ParsedMessage message = 2; +} + +// Token amount (UI-friendly). +message UiTokenAmount { + string amount = 1; // raw integer string + uint32 decimals = 2; // mint decimals + string ui_amount_string = 4; // amount / 10^decimals +} + +// SPL token balance entry. +message TokenBalance { + uint32 account_index = 1; // index in account_keys + optional bytes owner = 2; // 32-byte owner (optional) + optional bytes program_id = 3; // 32-byte token program (optional) + bytes mint = 4; // 32-byte mint + UiTokenAmount ui = 5; // formatted amounts +} + +// Inner instruction list at a given outer instruction index. +message InnerInstruction { + uint32 index = 1; // outer ix index + repeated CompiledInstruction instructions = 2; // invoked ixs +} + +// Address table lookups expanded by loader. +message LoadedAddresses { + repeated bytes readonly = 1; // 32-byte Pubkeys + repeated bytes writable = 2; // 32-byte Pubkeys +} + +// Compiled (program) instruction. +message CompiledInstruction { + uint32 program_id_index = 1; // index into account_keys + repeated uint32 accounts = 2; // indices into account_keys + bytes data = 3; // program input bytes + uint32 stack_height = 4; // if recorded by node +} + +// Raw bytes with encoding tag. +message Data { + bytes content = 1; // raw bytes + EncodingType encoding = 2; // how it was encoded originally +} + +// Program return data. +message ReturnData { + bytes program_id = 1; // 32-byte Pubkey + Data data = 2; // raw return bytes +} + +// Transaction execution metadata. +message TransactionMeta { + string err_json = 1; // error JSON (empty on success) + uint64 fee = 2; // lamports + repeated uint64 pre_balances = 3; // lamports per account + repeated uint64 post_balances = 4; // lamports per account + repeated string log_messages = 5; // runtime logs + repeated TokenBalance pre_token_balances = 6; + repeated TokenBalance post_token_balances = 7; + repeated InnerInstruction inner_instructions = 8; + LoadedAddresses loaded_addresses = 9; + ReturnData return_data = 10; + optional uint64 compute_units_consumed = 11; // CUs +} + +// Transaction envelope: raw bytes or parsed struct. +message TransactionEnvelope { + oneof transaction { + bytes raw = 1; // raw tx bytes (for RAW/base64) + ParsedTransaction parsed = 2; // parsed tx (for JSON_PARSED) + } +} + +// GetTransaction reply. +message GetTransactionReply { + uint64 slot = 1; // processed slot + optional int64 block_time = 2; // unix seconds + optional TransactionEnvelope transaction = 3; // tx bytes or parsed + optional TransactionMeta meta = 4; // may be omitted by node +} + +// GetTransaction request. +message GetTransactionRequest { + bytes signature = 1; // 64-byte signature +} + +// RPC read context. +message RPCContext { + uint64 slot = 1; +} + +// Simulation options. +message SimulateTXOpts { + bool sig_verify = 1; // verify sigs + CommitmentType commitment = 2; // read consistency + bool replace_recent_blockhash = 3; // refresh blockhash + SimulateTransactionAccountsOpts accounts = 4; // return accounts +} + +// Simulation result. +message SimulateTXReply { + string err = 1; // empty on success + repeated string logs = 2; // runtime logs + repeated Account accounts = 3; // returned accounts + uint64 units_consumed = 4; // CUs +} + +// Simulation request. +message SimulateTXRequest { + bytes receiver = 1; // 32-byte program id (target) + string encoded_transaction = 2; // base64/base58 tx + SimulateTXOpts opts = 3; +} + +// Accounts to return during simulation. +message SimulateTransactionAccountsOpts { + EncodingType encoding = 1; // account data encoding + repeated bytes addresses = 2; // 32-byte Pubkeys +} + +enum ComparisonOperator { + COMPARISON_OPERATOR_EQ = 0; + COMPARISON_OPERATOR_NEQ = 1; + COMPARISON_OPERATOR_GT = 2; + COMPARISON_OPERATOR_LT = 3; + COMPARISON_OPERATOR_GTE = 4; + COMPARISON_OPERATOR_LTE = 5; +} + +message ValueComparator { + bytes value = 1; + ComparisonOperator operator = 2; +} + +message SubkeyConfig { + repeated string path = 1; + repeated ValueComparator comparers = 2; +} + +message FilterLogTriggerRequest { + string name = 1; + bytes address = 2; // Solana PublicKey (32 bytes) + string event_name = 3; + bytes event_idl_json = 4; + repeated SubkeyConfig subkeys = 5; +} + +message Log { + string chain_id = 1; // Chain identifier + int64 log_index = 2; // Index of the log within the block + bytes block_hash = 3; // 32-byte block hash + int64 block_number = 4; // Block/slot number + uint64 block_timestamp = 5; // Unix timestamp of the block + bytes address = 6; // 32-byte program PublicKey + bytes event_sig = 7; // 8-byte event signature + bytes tx_hash = 8; // 64-byte transaction signature + bytes data = 9; // Decoded event data + int64 sequence_num = 10; // Sequence number for ordering + optional string error = 11; // Error message if log processing failed +} + +// All metas are non-signers. +message AccountMeta { + bytes public_key = 1; // 32 bytes account public key + bool is_writable = 2; // write flag +} + +message WriteReportRequest { + repeated AccountMeta remaining_accounts = 1; // accounts that are required by the receiver to accept the report + bytes receiver = 2; // 32 bytes receiver + optional ComputeConfig compute_config = 3; + sdk.v1alpha.ReportResponse report = 4; +} + +enum ReceiverContractExecutionStatus { + RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS = 0; + RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED = 1; +} + +message WriteReportReply { + TxStatus tx_status = 1; + optional ReceiverContractExecutionStatus receiver_contract_execution_status = 2; + optional bytes tx_signature = 3; + optional uint64 transaction_fee = 4; + optional string error_message = 5; +} + +service Client { + option (tools.generator.v1alpha.capability) = { + mode: MODE_DON + capability_id: "solana@1.0.0" + labels: { + // from https://github.com/smartcontractkit/chain-selectors/blob/main/selectors.yml + // as a subset of the selectors supported on the CRE + key: "ChainSelector" + value: { + uint64_label: { + defaults: [ + { + key: "solana-mainnet" + value: 124615329519749607 + }, + { + key: "solana-testnet" + value: 6302590918974934319 + }, + { + key: "solana-devnet" + value: 16423721717087811551 + } + ] + } + } + } + }; + + rpc GetAccountInfoWithOpts(GetAccountInfoWithOptsRequest) returns (GetAccountInfoWithOptsReply); + rpc GetBalance(GetBalanceRequest) returns (GetBalanceReply); + rpc GetBlock(GetBlockRequest) returns (GetBlockReply); + rpc GetFeeForMessage(GetFeeForMessageRequest) returns (GetFeeForMessageReply); + rpc GetMultipleAccountsWithOpts(GetMultipleAccountsWithOptsRequest) returns (GetMultipleAccountsWithOptsReply); + rpc GetSignatureStatuses(GetSignatureStatusesRequest) returns (GetSignatureStatusesReply); + rpc GetSlotHeight(GetSlotHeightRequest) returns (GetSlotHeightReply); + rpc GetTransaction(GetTransactionRequest) returns (GetTransactionReply); + rpc LogTrigger(FilterLogTriggerRequest) returns (stream Log); + rpc WriteReport(WriteReportRequest) returns (WriteReportReply); +} +` + const computeConfidentialworkflowV1alphaClientEmbedded = `syntax = "proto3"; package capabilities.compute.confidentialworkflow.v1alpha; @@ -1426,6 +1857,10 @@ var allFiles = []*embeddedFile{ name: "capabilities/blockchain/evm/v1alpha/client.proto", content: blockchainEvmV1alphaClientEmbedded, }, + { + name: "capabilities/blockchain/solana/v1alpha/client.proto", + content: blockchainSolanaV1alphaClientEmbedded, + }, { name: "capabilities/compute/confidentialworkflow/v1alpha/client.proto", content: computeConfidentialworkflowV1alphaClientEmbedded, From 059f906b6597024cd86574bccf73261244bda9ee Mon Sep 17 00:00:00 2001 From: Yashvardhan Nevatia Date: Thu, 12 Mar 2026 15:29:57 +0000 Subject: [PATCH 03/49] update aptos (#312) * update aptos * upd --- cre/capabilities/blockchain/aptos/v1alpha/client.proto | 1 + cre/go/installer/pkg/embedded_gen.go | 1 + 2 files changed, 2 insertions(+) diff --git a/cre/capabilities/blockchain/aptos/v1alpha/client.proto b/cre/capabilities/blockchain/aptos/v1alpha/client.proto index bd3f2003..4eab040e 100644 --- a/cre/capabilities/blockchain/aptos/v1alpha/client.proto +++ b/cre/capabilities/blockchain/aptos/v1alpha/client.proto @@ -25,6 +25,7 @@ message AccountAPTBalanceReply { message ViewRequest { ViewPayload payload = 1; + optional uint64 ledger_version = 2; // nil means use latest ledger version } message ViewReply { diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 28b9c3fc..ffa8771a 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -28,6 +28,7 @@ message AccountAPTBalanceReply { message ViewRequest { ViewPayload payload = 1; + optional uint64 ledger_version = 2; // nil means use latest ledger version } message ViewReply { From e1bd696c40a61baa4d5d1953b6554ddccb80cfe4 Mon Sep 17 00:00:00 2001 From: Yashvardhan Nevatia Date: Fri, 20 Mar 2026 12:48:44 +0000 Subject: [PATCH 04/49] Update cap-dev with main (#323) * Add Pharos Atlantic support (#306) * Added Pharos Atlantic support * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * aptos proto: add ledger_version to ViewRequest (#310) * aptos proto: add ledger_version to ViewRequest * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add xlayer, megaeth, cronos, mantle, tac, unichain, scroll, sonic testnet support (#308) * Added xlayer megaeth cronos mantle tac unichain scroll sonic support * Auto-fix: buf format, gofmt, go generate, go mod tidy * Added celo sepolia * Auto-fix: buf format, gofmt, go generate, go mod tidy * Added gnosis chiado * Auto-fix: buf format, gofmt, go generate, go mod tidy * Removed celo sepolia * Auto-fix: buf format, gofmt, go generate, go mod tidy * Removed gnosis chiado * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add andesite chain (#313) * Added andesite chain * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add new mainnet chains to client proto (#315) * Added new mainnet chains to client proto * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Remove aptos (moved to capabilities-development branch) (#316) * remove aptos * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add owner and execution_id to WorkflowExecution proto (#317) Adds workflow-level context to the app-specific proto rather than the generic ComputeRequest type, per vreff's feedback on CC PR #277. The enclave app reads these from the deserialized WorkflowExecution for runtime secret fetching from VaultDON via the relay DON. * Add Privacy as codeowners of protos embedded gen files (#318) * feat: add NodeBuildInfo proto and register it in chip schemas (#320) * Revert "Remove aptos (moved to capabilities-development branch) (#316)" (#321) This reverts commit 1124ff8c35a15379c5b7ad415bb79cbd10d595b1. * Add hyperliquid mainnet to client proto (#322) * Added hyperliquid mainnet to client proto * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --------- Co-authored-by: amit-momin <108959691+amit-momin@users.noreply.github.com> Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> Co-authored-by: cawthorne Co-authored-by: Tejaswi Nadahalli Co-authored-by: vreff <104409744+vreff@users.noreply.github.com> Co-authored-by: Gheorghe Strimtu --- .github/CODEOWNERS | 2 +- .../blockchain/evm/v1alpha/client.proto | 80 +++++++++ .../confidentialworkflow/v1alpha/client.proto | 6 + cre/go/installer/pkg/embedded_gen.go | 86 ++++++++++ node-platform/chip-schemas.json | 4 + node-platform/common/v1/node_build_info.pb.go | 161 ++++++++++++++++++ node-platform/common/v1/node_build_info.proto | 13 ++ 7 files changed, 351 insertions(+), 1 deletion(-) create mode 100644 node-platform/common/v1/node_build_info.pb.go create mode 100644 node-platform/common/v1/node_build_info.proto diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 5386d1c2..699cdcaa 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -12,7 +12,7 @@ # CRE /cre/ @smartcontractkit/keystone @smartcontractkit/op-tooling /cre/capabilities/blockchain/ @smartcontractkit/bix-framework @smartcontractkit/keystone @smartcontractkit/op-tooling -/cre/go/installer/pkg/embedded_gen.go @smartcontractkit/bix-framework @smartcontractkit/keystone @smartcontractkit/op-tooling +/cre/go/installer/pkg/embedded_gen.go @smartcontractkit/bix-framework @smartcontractkit/keystone @smartcontractkit/op-tooling @smartcontractkit/privacy /workflows/ @smartcontractkit/foundations @smartcontractkit/core @smartcontractkit/op-tooling /billing/ @smartcontractkit/cre-business @smartcontractkit/core @smartcontractkit/op-tooling diff --git a/cre/capabilities/blockchain/evm/v1alpha/client.proto b/cre/capabilities/blockchain/evm/v1alpha/client.proto index 3884c16e..0db35d3f 100644 --- a/cre/capabilities/blockchain/evm/v1alpha/client.proto +++ b/cre/capabilities/blockchain/evm/v1alpha/client.proto @@ -193,6 +193,18 @@ service Client { key: "binance_smart_chain-testnet" value: 13264668187771770619 }, + { + key: "celo-mainnet" + value: 1346049177634351622 + }, + { + key: "cronos-testnet" + value: 2995292832068775165 + }, + { + key: "dtcc-testnet-andesite" + value: 15513093881969820114 + }, { key: "ethereum-mainnet" value: 5009297550715157269 @@ -205,10 +217,26 @@ service Client { key: "ethereum-mainnet-base-1" value: 15971525489660198786 }, + { + key: "ethereum-mainnet-ink-1" + value: 3461204551265785888 + }, + { + key: "ethereum-mainnet-linea-1" + value: 4627098889531055414 + }, + { + key: "ethereum-mainnet-mantle-1" + value: 1556008542357238666 + }, { key: "ethereum-mainnet-optimism-1" value: 3734403246176062136 }, + { + key: "ethereum-mainnet-scroll-1" + value: 13204309965629103672 + }, { key: "ethereum-mainnet-worldchain-1" value: 2049429975587534727 @@ -237,10 +265,22 @@ service Client { key: "ethereum-testnet-sepolia-linea-1" value: 5719461335882077547 }, + { + key: "ethereum-testnet-sepolia-mantle-1" + value: 8236463271206331221 + }, { key: "ethereum-testnet-sepolia-optimism-1" value: 5224473277236331295 }, + { + key: "ethereum-testnet-sepolia-scroll-1" + value: 2279865765895943307 + }, + { + key: "ethereum-testnet-sepolia-unichain-1" + value: 14135854469784514356 + }, { key: "ethereum-testnet-sepolia-worldchain-1" value: 5299555114858065850 @@ -249,6 +289,14 @@ service Client { key: "ethereum-testnet-sepolia-zksync-1" value: 6898391096552792247 }, + { + key: "gnosis_chain-mainnet" + value: 465200170687744372 + }, + { + key: "hyperliquid-mainnet" + value: 2442541497099098535 + }, { key: "hyperliquid-testnet" value: 4286062357653186312 @@ -265,10 +313,26 @@ service Client { key: "jovay-testnet" value: 945045181441419236 }, + { + key: "megaeth-mainnet" + value: 6093540873831549674 + }, + { + key: "megaeth-testnet-2" + value: 18241817625092392675 + }, + { + key: "pharos-atlantic-testnet" + value: 16098325658947243212 + }, { key: "pharos-mainnet" value: 7801139999541420232 }, + { + key: "plasma-mainnet" + value: 9335212494177455608 + }, { key: "plasma-testnet" value: 3967220077692964309 @@ -284,6 +348,22 @@ service Client { { key: "private-testnet-andesite" value: 6915682381028791124 + }, + { + key: "sonic-mainnet" + value: 1673871237479749969 + }, + { + key: "sonic-testnet" + value: 1763698235108410440 + }, + { + key: "tac-testnet" + value: 9488606126177218005 + }, + { + key: "xlayer-testnet" + value: 10212741611335999305 } ] } diff --git a/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto b/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto index fe43fab6..1cb42f77 100644 --- a/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto +++ b/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto @@ -22,6 +22,12 @@ message WorkflowExecution { // execute_request is a serialized sdk.v1alpha.ExecuteRequest proto. // Contains either a subscribe request or a trigger execution request. bytes execute_request = 4; + // owner is the on-chain owner address of the workflow (hex, 0x-prefixed). + // Used by the enclave for runtime secret fetching from VaultDON. + string owner = 5; + // execution_id is the unique execution identifier (64 hex chars, 32 bytes). + // Used by the enclave for runtime secret fetching from VaultDON. + string execution_id = 6; } // ConfidentialWorkflowRequest is the input provided to the confidential workflows capability. diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index ffa8771a..282e61f8 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -390,6 +390,18 @@ service Client { key: "binance_smart_chain-testnet" value: 13264668187771770619 }, + { + key: "celo-mainnet" + value: 1346049177634351622 + }, + { + key: "cronos-testnet" + value: 2995292832068775165 + }, + { + key: "dtcc-testnet-andesite" + value: 15513093881969820114 + }, { key: "ethereum-mainnet" value: 5009297550715157269 @@ -402,10 +414,26 @@ service Client { key: "ethereum-mainnet-base-1" value: 15971525489660198786 }, + { + key: "ethereum-mainnet-ink-1" + value: 3461204551265785888 + }, + { + key: "ethereum-mainnet-linea-1" + value: 4627098889531055414 + }, + { + key: "ethereum-mainnet-mantle-1" + value: 1556008542357238666 + }, { key: "ethereum-mainnet-optimism-1" value: 3734403246176062136 }, + { + key: "ethereum-mainnet-scroll-1" + value: 13204309965629103672 + }, { key: "ethereum-mainnet-worldchain-1" value: 2049429975587534727 @@ -434,10 +462,22 @@ service Client { key: "ethereum-testnet-sepolia-linea-1" value: 5719461335882077547 }, + { + key: "ethereum-testnet-sepolia-mantle-1" + value: 8236463271206331221 + }, { key: "ethereum-testnet-sepolia-optimism-1" value: 5224473277236331295 }, + { + key: "ethereum-testnet-sepolia-scroll-1" + value: 2279865765895943307 + }, + { + key: "ethereum-testnet-sepolia-unichain-1" + value: 14135854469784514356 + }, { key: "ethereum-testnet-sepolia-worldchain-1" value: 5299555114858065850 @@ -446,6 +486,14 @@ service Client { key: "ethereum-testnet-sepolia-zksync-1" value: 6898391096552792247 }, + { + key: "gnosis_chain-mainnet" + value: 465200170687744372 + }, + { + key: "hyperliquid-mainnet" + value: 2442541497099098535 + }, { key: "hyperliquid-testnet" value: 4286062357653186312 @@ -462,10 +510,26 @@ service Client { key: "jovay-testnet" value: 945045181441419236 }, + { + key: "megaeth-mainnet" + value: 6093540873831549674 + }, + { + key: "megaeth-testnet-2" + value: 18241817625092392675 + }, + { + key: "pharos-atlantic-testnet" + value: 16098325658947243212 + }, { key: "pharos-mainnet" value: 7801139999541420232 }, + { + key: "plasma-mainnet" + value: 9335212494177455608 + }, { key: "plasma-testnet" value: 3967220077692964309 @@ -481,6 +545,22 @@ service Client { { key: "private-testnet-andesite" value: 6915682381028791124 + }, + { + key: "sonic-mainnet" + value: 1673871237479749969 + }, + { + key: "sonic-testnet" + value: 1763698235108410440 + }, + { + key: "tac-testnet" + value: 9488606126177218005 + }, + { + key: "xlayer-testnet" + value: 10212741611335999305 } ] } @@ -983,6 +1063,12 @@ message WorkflowExecution { // execute_request is a serialized sdk.v1alpha.ExecuteRequest proto. // Contains either a subscribe request or a trigger execution request. bytes execute_request = 4; + // owner is the on-chain owner address of the workflow (hex, 0x-prefixed). + // Used by the enclave for runtime secret fetching from VaultDON. + string owner = 5; + // execution_id is the unique execution identifier (64 hex chars, 32 bytes). + // Used by the enclave for runtime secret fetching from VaultDON. + string execution_id = 6; } // ConfidentialWorkflowRequest is the input provided to the confidential workflows capability. diff --git a/node-platform/chip-schemas.json b/node-platform/chip-schemas.json index 2cf2dd30..d95b2b09 100644 --- a/node-platform/chip-schemas.json +++ b/node-platform/chip-schemas.json @@ -4,6 +4,10 @@ { "entity": "common.v1.ChainPluginConfig", "path": "common/v1/chain_plugin_config.proto" + }, + { + "entity": "common.v1.NodeBuildInfo", + "path": "common/v1/node_build_info.proto" } ] } diff --git a/node-platform/common/v1/node_build_info.pb.go b/node-platform/common/v1/node_build_info.pb.go new file mode 100644 index 00000000..d83e05af --- /dev/null +++ b/node-platform/common/v1/node_build_info.pb.go @@ -0,0 +1,161 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v5.29.3 +// source: node-platform/common/v1/node_build_info.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +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) +) + +type NodeBuildInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + CsaPublicKey string `protobuf:"bytes,1,opt,name=csa_public_key,json=csaPublicKey,proto3" json:"csa_public_key,omitempty"` + CommitSha string `protobuf:"bytes,2,opt,name=commit_sha,json=commitSha,proto3" json:"commit_sha,omitempty"` + VersionTag string `protobuf:"bytes,3,opt,name=version_tag,json=versionTag,proto3" json:"version_tag,omitempty"` + Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` + DockerTag string `protobuf:"bytes,5,opt,name=docker_tag,json=dockerTag,proto3" json:"docker_tag,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeBuildInfo) Reset() { + *x = NodeBuildInfo{} + mi := &file_node_platform_common_v1_node_build_info_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeBuildInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeBuildInfo) ProtoMessage() {} + +func (x *NodeBuildInfo) ProtoReflect() protoreflect.Message { + mi := &file_node_platform_common_v1_node_build_info_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 NodeBuildInfo.ProtoReflect.Descriptor instead. +func (*NodeBuildInfo) Descriptor() ([]byte, []int) { + return file_node_platform_common_v1_node_build_info_proto_rawDescGZIP(), []int{0} +} + +func (x *NodeBuildInfo) GetCsaPublicKey() string { + if x != nil { + return x.CsaPublicKey + } + return "" +} + +func (x *NodeBuildInfo) GetCommitSha() string { + if x != nil { + return x.CommitSha + } + return "" +} + +func (x *NodeBuildInfo) GetVersionTag() string { + if x != nil { + return x.VersionTag + } + return "" +} + +func (x *NodeBuildInfo) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *NodeBuildInfo) GetDockerTag() string { + if x != nil { + return x.DockerTag + } + return "" +} + +var File_node_platform_common_v1_node_build_info_proto protoreflect.FileDescriptor + +const file_node_platform_common_v1_node_build_info_proto_rawDesc = "" + + "\n" + + "-node-platform/common/v1/node_build_info.proto\x12\tcommon.v1\"\xae\x01\n" + + "\rNodeBuildInfo\x12$\n" + + "\x0ecsa_public_key\x18\x01 \x01(\tR\fcsaPublicKey\x12\x1d\n" + + "\n" + + "commit_sha\x18\x02 \x01(\tR\tcommitSha\x12\x1f\n" + + "\vversion_tag\x18\x03 \x01(\tR\n" + + "versionTag\x12\x18\n" + + "\aversion\x18\x04 \x01(\tR\aversion\x12\x1d\n" + + "\n" + + "docker_tag\x18\x05 \x01(\tR\tdockerTagBFZDgithub.com/smartcontractkit/chainlink-protos/node-platform/common/v1b\x06proto3" + +var ( + file_node_platform_common_v1_node_build_info_proto_rawDescOnce sync.Once + file_node_platform_common_v1_node_build_info_proto_rawDescData []byte +) + +func file_node_platform_common_v1_node_build_info_proto_rawDescGZIP() []byte { + file_node_platform_common_v1_node_build_info_proto_rawDescOnce.Do(func() { + file_node_platform_common_v1_node_build_info_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_node_platform_common_v1_node_build_info_proto_rawDesc), len(file_node_platform_common_v1_node_build_info_proto_rawDesc))) + }) + return file_node_platform_common_v1_node_build_info_proto_rawDescData +} + +var file_node_platform_common_v1_node_build_info_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_node_platform_common_v1_node_build_info_proto_goTypes = []any{ + (*NodeBuildInfo)(nil), // 0: common.v1.NodeBuildInfo +} +var file_node_platform_common_v1_node_build_info_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_node_platform_common_v1_node_build_info_proto_init() } +func file_node_platform_common_v1_node_build_info_proto_init() { + if File_node_platform_common_v1_node_build_info_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_node_platform_common_v1_node_build_info_proto_rawDesc), len(file_node_platform_common_v1_node_build_info_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_node_platform_common_v1_node_build_info_proto_goTypes, + DependencyIndexes: file_node_platform_common_v1_node_build_info_proto_depIdxs, + MessageInfos: file_node_platform_common_v1_node_build_info_proto_msgTypes, + }.Build() + File_node_platform_common_v1_node_build_info_proto = out.File + file_node_platform_common_v1_node_build_info_proto_goTypes = nil + file_node_platform_common_v1_node_build_info_proto_depIdxs = nil +} diff --git a/node-platform/common/v1/node_build_info.proto b/node-platform/common/v1/node_build_info.proto new file mode 100644 index 00000000..9152da26 --- /dev/null +++ b/node-platform/common/v1/node_build_info.proto @@ -0,0 +1,13 @@ +syntax = "proto3"; + +package common.v1; + +option go_package = "github.com/smartcontractkit/chainlink-protos/node-platform/common/v1"; + +message NodeBuildInfo { + string csa_public_key = 1; + string commit_sha = 2; + string version_tag = 3; + string version = 4; + string docker_tag = 5; +} From 76bbb6302c5793c8caf86489f707728dbccfdf31 Mon Sep 17 00:00:00 2001 From: Silas Lenihan <32529249+silaslenihan@users.noreply.github.com> Date: Mon, 23 Mar 2026 11:51:36 -0400 Subject: [PATCH 05/49] Merge main into capabilities-development branch (#325) * Add Pharos Atlantic support (#306) * Added Pharos Atlantic support * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * aptos proto: add ledger_version to ViewRequest (#310) * aptos proto: add ledger_version to ViewRequest * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add xlayer, megaeth, cronos, mantle, tac, unichain, scroll, sonic testnet support (#308) * Added xlayer megaeth cronos mantle tac unichain scroll sonic support * Auto-fix: buf format, gofmt, go generate, go mod tidy * Added celo sepolia * Auto-fix: buf format, gofmt, go generate, go mod tidy * Added gnosis chiado * Auto-fix: buf format, gofmt, go generate, go mod tidy * Removed celo sepolia * Auto-fix: buf format, gofmt, go generate, go mod tidy * Removed gnosis chiado * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add andesite chain (#313) * Added andesite chain * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add new mainnet chains to client proto (#315) * Added new mainnet chains to client proto * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Remove aptos (moved to capabilities-development branch) (#316) * remove aptos * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add owner and execution_id to WorkflowExecution proto (#317) Adds workflow-level context to the app-specific proto rather than the generic ComputeRequest type, per vreff's feedback on CC PR #277. The enclave app reads these from the deserialized WorkflowExecution for runtime secret fetching from VaultDON via the relay DON. * Add Privacy as codeowners of protos embedded gen files (#318) * feat: add NodeBuildInfo proto and register it in chip schemas (#320) * Revert "Remove aptos (moved to capabilities-development branch) (#316)" (#321) This reverts commit 1124ff8c35a15379c5b7ad415bb79cbd10d595b1. * Add hyperliquid mainnet to client proto (#322) * Added hyperliquid mainnet to client proto * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add gnosis chiado to client proto (#324) * Added gnosis chiado to client proto * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * add WorkflowUserMetric (#319) * add WorkflowUserMetric * fix metric suffix * bot: regenerate protobuf files * add USER_METRIC_TYPE_UNSPECIFIED * bot: regenerate protobuf files * update WorkflowUserMetric value to double * drop histogram support * bot: regenerate protobuf files --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --------- Co-authored-by: amit-momin <108959691+amit-momin@users.noreply.github.com> Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> Co-authored-by: cawthorne Co-authored-by: Yashvardhan Nevatia Co-authored-by: Tejaswi Nadahalli Co-authored-by: vreff <104409744+vreff@users.noreply.github.com> Co-authored-by: Gheorghe Strimtu Co-authored-by: karen-stepanyan <91897037+karen-stepanyan@users.noreply.github.com> --- .../blockchain/evm/v1alpha/client.proto | 4 + cre/go/installer/pkg/embedded_gen.go | 4 + workflows/go/generate.go | 1 + workflows/go/v2/workflow_user_metric.pb.go | 253 ++++++++++++++++++ .../workflows/v2/workflow_user_metric.proto | 26 ++ 5 files changed, 288 insertions(+) create mode 100644 workflows/go/v2/workflow_user_metric.pb.go create mode 100644 workflows/workflows/v2/workflow_user_metric.proto diff --git a/cre/capabilities/blockchain/evm/v1alpha/client.proto b/cre/capabilities/blockchain/evm/v1alpha/client.proto index 0db35d3f..4ecda88a 100644 --- a/cre/capabilities/blockchain/evm/v1alpha/client.proto +++ b/cre/capabilities/blockchain/evm/v1alpha/client.proto @@ -293,6 +293,10 @@ service Client { key: "gnosis_chain-mainnet" value: 465200170687744372 }, + { + key: "gnosis_chain-testnet-chiado" + value: 8871595565390010547 + }, { key: "hyperliquid-mainnet" value: 2442541497099098535 diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 282e61f8..f921c28e 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -490,6 +490,10 @@ service Client { key: "gnosis_chain-mainnet" value: 465200170687744372 }, + { + key: "gnosis_chain-testnet-chiado" + value: 8871595565390010547 + }, { key: "hyperliquid-mainnet" value: 2442541497099098535 diff --git a/workflows/go/generate.go b/workflows/go/generate.go index a799e784..36fb64c5 100644 --- a/workflows/go/generate.go +++ b/workflows/go/generate.go @@ -29,6 +29,7 @@ package workflows //go:generate protoc --proto_path=../ --go_out=./ --go_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go ../workflows/v2/capability_execution_started.proto //go:generate protoc --proto_path=../ --go_out=./ --go_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go ../workflows/v2/capability_execution_finished.proto //go:generate protoc --proto_path=../ --go_out=./ --go_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go ../workflows/v2/workflow_user_log.proto +//go:generate protoc --proto_path=../ --go_out=./ --go_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go ../workflows/v2/workflow_user_metric.proto //go:generate protoc --proto_path=../ --go_out=./ --go_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go ../workflows/v2/xxx_no_send.proto // sources/v1 - workflow metadata source service diff --git a/workflows/go/v2/workflow_user_metric.pb.go b/workflows/go/v2/workflow_user_metric.pb.go new file mode 100644 index 00000000..9fae638f --- /dev/null +++ b/workflows/go/v2/workflow_user_metric.pb.go @@ -0,0 +1,253 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v5.29.3 +// source: workflows/v2/workflow_user_metric.proto + +package v2 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +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) +) + +type UserMetricType int32 + +const ( + UserMetricType_USER_METRIC_TYPE_UNSPECIFIED UserMetricType = 0 + UserMetricType_USER_METRIC_TYPE_COUNTER UserMetricType = 1 + UserMetricType_USER_METRIC_TYPE_GAUGE UserMetricType = 2 +) + +// Enum value maps for UserMetricType. +var ( + UserMetricType_name = map[int32]string{ + 0: "USER_METRIC_TYPE_UNSPECIFIED", + 1: "USER_METRIC_TYPE_COUNTER", + 2: "USER_METRIC_TYPE_GAUGE", + } + UserMetricType_value = map[string]int32{ + "USER_METRIC_TYPE_UNSPECIFIED": 0, + "USER_METRIC_TYPE_COUNTER": 1, + "USER_METRIC_TYPE_GAUGE": 2, + } +) + +func (x UserMetricType) Enum() *UserMetricType { + p := new(UserMetricType) + *p = x + return p +} + +func (x UserMetricType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (UserMetricType) Descriptor() protoreflect.EnumDescriptor { + return file_workflows_v2_workflow_user_metric_proto_enumTypes[0].Descriptor() +} + +func (UserMetricType) Type() protoreflect.EnumType { + return &file_workflows_v2_workflow_user_metric_proto_enumTypes[0] +} + +func (x UserMetricType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use UserMetricType.Descriptor instead. +func (UserMetricType) EnumDescriptor() ([]byte, []int) { + return file_workflows_v2_workflow_user_metric_proto_rawDescGZIP(), []int{0} +} + +type WorkflowUserMetric struct { + state protoimpl.MessageState `protogen:"open.v1"` + CreInfo *CreInfo `protobuf:"bytes,1,opt,name=creInfo,proto3" json:"creInfo,omitempty"` + Workflow *WorkflowKey `protobuf:"bytes,2,opt,name=workflow,proto3" json:"workflow,omitempty"` + WorkflowExecutionID string `protobuf:"bytes,3,opt,name=workflowExecutionID,proto3" json:"workflowExecutionID,omitempty"` + Timestamp string `protobuf:"bytes,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` + Value float64 `protobuf:"fixed64,6,opt,name=value,proto3" json:"value,omitempty"` + Type UserMetricType `protobuf:"varint,7,opt,name=type,proto3,enum=workflows.v2.UserMetricType" json:"type,omitempty"` + Labels map[string]string `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WorkflowUserMetric) Reset() { + *x = WorkflowUserMetric{} + mi := &file_workflows_v2_workflow_user_metric_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WorkflowUserMetric) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WorkflowUserMetric) ProtoMessage() {} + +func (x *WorkflowUserMetric) ProtoReflect() protoreflect.Message { + mi := &file_workflows_v2_workflow_user_metric_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 WorkflowUserMetric.ProtoReflect.Descriptor instead. +func (*WorkflowUserMetric) Descriptor() ([]byte, []int) { + return file_workflows_v2_workflow_user_metric_proto_rawDescGZIP(), []int{0} +} + +func (x *WorkflowUserMetric) GetCreInfo() *CreInfo { + if x != nil { + return x.CreInfo + } + return nil +} + +func (x *WorkflowUserMetric) GetWorkflow() *WorkflowKey { + if x != nil { + return x.Workflow + } + return nil +} + +func (x *WorkflowUserMetric) GetWorkflowExecutionID() string { + if x != nil { + return x.WorkflowExecutionID + } + return "" +} + +func (x *WorkflowUserMetric) GetTimestamp() string { + if x != nil { + return x.Timestamp + } + return "" +} + +func (x *WorkflowUserMetric) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *WorkflowUserMetric) GetValue() float64 { + if x != nil { + return x.Value + } + return 0 +} + +func (x *WorkflowUserMetric) GetType() UserMetricType { + if x != nil { + return x.Type + } + return UserMetricType_USER_METRIC_TYPE_UNSPECIFIED +} + +func (x *WorkflowUserMetric) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +var File_workflows_v2_workflow_user_metric_proto protoreflect.FileDescriptor + +const file_workflows_v2_workflow_user_metric_proto_rawDesc = "" + + "\n" + + "'workflows/v2/workflow_user_metric.proto\x12\fworkflows.v2\x1a\x1bworkflows/v2/cre_info.proto\x1a\x1fworkflows/v2/workflow_key.proto\"\xa9\x03\n" + + "\x12WorkflowUserMetric\x12/\n" + + "\acreInfo\x18\x01 \x01(\v2\x15.workflows.v2.CreInfoR\acreInfo\x125\n" + + "\bworkflow\x18\x02 \x01(\v2\x19.workflows.v2.WorkflowKeyR\bworkflow\x120\n" + + "\x13workflowExecutionID\x18\x03 \x01(\tR\x13workflowExecutionID\x12\x1c\n" + + "\ttimestamp\x18\x04 \x01(\tR\ttimestamp\x12\x12\n" + + "\x04name\x18\x05 \x01(\tR\x04name\x12\x14\n" + + "\x05value\x18\x06 \x01(\x01R\x05value\x120\n" + + "\x04type\x18\a \x01(\x0e2\x1c.workflows.v2.UserMetricTypeR\x04type\x12D\n" + + "\x06labels\x18\b \x03(\v2,.workflows.v2.WorkflowUserMetric.LabelsEntryR\x06labels\x1a9\n" + + "\vLabelsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01*l\n" + + "\x0eUserMetricType\x12 \n" + + "\x1cUSER_METRIC_TYPE_UNSPECIFIED\x10\x00\x12\x1c\n" + + "\x18USER_METRIC_TYPE_COUNTER\x10\x01\x12\x1a\n" + + "\x16USER_METRIC_TYPE_GAUGE\x10\x02B>Z workflows.v2.CreInfo + 4, // 1: workflows.v2.WorkflowUserMetric.workflow:type_name -> workflows.v2.WorkflowKey + 0, // 2: workflows.v2.WorkflowUserMetric.type:type_name -> workflows.v2.UserMetricType + 2, // 3: workflows.v2.WorkflowUserMetric.labels:type_name -> workflows.v2.WorkflowUserMetric.LabelsEntry + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_workflows_v2_workflow_user_metric_proto_init() } +func file_workflows_v2_workflow_user_metric_proto_init() { + if File_workflows_v2_workflow_user_metric_proto != nil { + return + } + file_workflows_v2_cre_info_proto_init() + file_workflows_v2_workflow_key_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_workflows_v2_workflow_user_metric_proto_rawDesc), len(file_workflows_v2_workflow_user_metric_proto_rawDesc)), + NumEnums: 1, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_workflows_v2_workflow_user_metric_proto_goTypes, + DependencyIndexes: file_workflows_v2_workflow_user_metric_proto_depIdxs, + EnumInfos: file_workflows_v2_workflow_user_metric_proto_enumTypes, + MessageInfos: file_workflows_v2_workflow_user_metric_proto_msgTypes, + }.Build() + File_workflows_v2_workflow_user_metric_proto = out.File + file_workflows_v2_workflow_user_metric_proto_goTypes = nil + file_workflows_v2_workflow_user_metric_proto_depIdxs = nil +} diff --git a/workflows/workflows/v2/workflow_user_metric.proto b/workflows/workflows/v2/workflow_user_metric.proto new file mode 100644 index 00000000..3d39c18b --- /dev/null +++ b/workflows/workflows/v2/workflow_user_metric.proto @@ -0,0 +1,26 @@ +syntax = "proto3"; + +package workflows.v2; + +import "workflows/v2/cre_info.proto"; +import "workflows/v2/workflow_key.proto"; + +option go_package = "github.com/smartcontractkit/chainlink-protos/workflows/go/v2"; + +enum UserMetricType { + USER_METRIC_TYPE_UNSPECIFIED = 0; + USER_METRIC_TYPE_COUNTER = 1; + USER_METRIC_TYPE_GAUGE = 2; +} + +message WorkflowUserMetric { + CreInfo creInfo = 1; + WorkflowKey workflow = 2; + string workflowExecutionID = 3; + string timestamp = 4; + + string name = 5; + double value = 6; + UserMetricType type = 7; + map labels = 8; +} From 0cac87f98cd4b217ec34cc9c4a3165a9b0f68af4 Mon Sep 17 00:00:00 2001 From: amit-momin <108959691+amit-momin@users.noreply.github.com> Date: Wed, 25 Mar 2026 13:17:29 -0500 Subject: [PATCH 06/49] Updated README (#328) --- cre/capabilities/internal/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cre/capabilities/internal/README.md b/cre/capabilities/internal/README.md index 326b03f4..e8c22708 100644 --- a/cre/capabilities/internal/README.md +++ b/cre/capabilities/internal/README.md @@ -1,3 +1,3 @@ -Capabilities in internal are meant to be used directly by the SDK and are not intended for use by workflow authors. +Capabilities in internal are meant to be used directly by the SDKs and are not intended for use by workflow authors. Other than consensus, the capabilities in this directory are for SDK testing only. From 8c09d1a4491f1f954597fd7783dfbf37f3f1cc75 Mon Sep 17 00:00:00 2001 From: Yashvardhan Nevatia Date: Thu, 26 Mar 2026 11:12:35 +0000 Subject: [PATCH 07/49] add ReceiverContractExecutionStatus (#326) * add ReceiverContractExecutionStatus * Auto-fix: buf format, gofmt, go generate, go mod tidy * add ReceiverContractExecutionStatus --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- cre/capabilities/blockchain/aptos/v1alpha/client.proto | 6 ++++++ cre/go/installer/pkg/embedded_gen.go | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/cre/capabilities/blockchain/aptos/v1alpha/client.proto b/cre/capabilities/blockchain/aptos/v1alpha/client.proto index 4eab040e..60b6b621 100644 --- a/cre/capabilities/blockchain/aptos/v1alpha/client.proto +++ b/cre/capabilities/blockchain/aptos/v1alpha/client.proto @@ -145,6 +145,11 @@ message GasConfig { // ========== WriteReport ========== +enum ReceiverContractExecutionStatus { + RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS = 0; + RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED = 1; +} + message WriteReportRequest { bytes receiver = 1; // 32-byte Aptos account address of the receiver module optional GasConfig gas_config = 2; // optional gas configuration @@ -156,6 +161,7 @@ message WriteReportReply { optional string tx_hash = 2; // transaction hash (hex string with 0x prefix) optional uint64 transaction_fee = 3; // gas used in octas optional string error_message = 4; + optional ReceiverContractExecutionStatus receiver_contract_execution_status = 5; } // ========== Service ========== diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index f921c28e..1aa18e86 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -148,6 +148,11 @@ message GasConfig { // ========== WriteReport ========== +enum ReceiverContractExecutionStatus { + RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS = 0; + RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED = 1; +} + message WriteReportRequest { bytes receiver = 1; // 32-byte Aptos account address of the receiver module optional GasConfig gas_config = 2; // optional gas configuration @@ -159,6 +164,7 @@ message WriteReportReply { optional string tx_hash = 2; // transaction hash (hex string with 0x prefix) optional uint64 transaction_fee = 3; // gas used in octas optional string error_message = 4; + optional ReceiverContractExecutionStatus receiver_contract_execution_status = 5; } // ========== Service ========== From 5b99921cbc7c92fe3584e20004373bbc1a29412f Mon Sep 17 00:00:00 2001 From: Tejaswi Nadahalli Date: Thu, 9 Apr 2026 23:12:38 +0200 Subject: [PATCH 08/49] add org_id to WorkflowExecution proto (#338) Needed for the enclave to forward org identity when fetching secrets from VaultDON via the confidential relay path. --- .../compute/confidentialworkflow/v1alpha/client.proto | 3 +++ cre/go/installer/pkg/embedded_gen.go | 3 +++ 2 files changed, 6 insertions(+) diff --git a/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto b/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto index 1cb42f77..a6ee0921 100644 --- a/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto +++ b/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto @@ -28,6 +28,9 @@ message WorkflowExecution { // execution_id is the unique execution identifier (64 hex chars, 32 bytes). // Used by the enclave for runtime secret fetching from VaultDON. string execution_id = 6; + // org_id is the organization identifier for the workflow owner. + // Used by the enclave when fetching secrets from VaultDON with org-based ownership. + string org_id = 7; } // ConfidentialWorkflowRequest is the input provided to the confidential workflows capability. diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 1aa18e86..6389afd1 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -1079,6 +1079,9 @@ message WorkflowExecution { // execution_id is the unique execution identifier (64 hex chars, 32 bytes). // Used by the enclave for runtime secret fetching from VaultDON. string execution_id = 6; + // org_id is the organization identifier for the workflow owner. + // Used by the enclave when fetching secrets from VaultDON with org-based ownership. + string org_id = 7; } // ConfidentialWorkflowRequest is the input provided to the confidential workflows capability. From f23818acd33fc36ecfd1ef2bd6063462230bdb52 Mon Sep 17 00:00:00 2001 From: Yashvardhan Nevatia Date: Tue, 14 Apr 2026 14:43:59 +0100 Subject: [PATCH 09/49] Chore sync cap-dev with main (#340) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add Pharos Atlantic support (#306) * Added Pharos Atlantic support * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * aptos proto: add ledger_version to ViewRequest (#310) * aptos proto: add ledger_version to ViewRequest * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add xlayer, megaeth, cronos, mantle, tac, unichain, scroll, sonic testnet support (#308) * Added xlayer megaeth cronos mantle tac unichain scroll sonic support * Auto-fix: buf format, gofmt, go generate, go mod tidy * Added celo sepolia * Auto-fix: buf format, gofmt, go generate, go mod tidy * Added gnosis chiado * Auto-fix: buf format, gofmt, go generate, go mod tidy * Removed celo sepolia * Auto-fix: buf format, gofmt, go generate, go mod tidy * Removed gnosis chiado * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add andesite chain (#313) * Added andesite chain * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add new mainnet chains to client proto (#315) * Added new mainnet chains to client proto * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Remove aptos (moved to capabilities-development branch) (#316) * remove aptos * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add owner and execution_id to WorkflowExecution proto (#317) Adds workflow-level context to the app-specific proto rather than the generic ComputeRequest type, per vreff's feedback on CC PR #277. The enclave app reads these from the deserialized WorkflowExecution for runtime secret fetching from VaultDON via the relay DON. * Add Privacy as codeowners of protos embedded gen files (#318) * feat: add NodeBuildInfo proto and register it in chip schemas (#320) * Revert "Remove aptos (moved to capabilities-development branch) (#316)" (#321) This reverts commit 1124ff8c35a15379c5b7ad415bb79cbd10d595b1. * Add hyperliquid mainnet to client proto (#322) * Added hyperliquid mainnet to client proto * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add gnosis chiado to client proto (#324) * Added gnosis chiado to client proto * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * add WorkflowUserMetric (#319) * add WorkflowUserMetric * fix metric suffix * bot: regenerate protobuf files * add USER_METRIC_TYPE_UNSPECIFIED * bot: regenerate protobuf files * update WorkflowUserMetric value to double * drop histogram support * bot: regenerate protobuf files --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Revert "Revert "Remove aptos (moved to capabilities-development branch) (#316…" (#331) This reverts commit ad04ed6d891e0349a00c8e96920e95f5d5adf39f. * Add capability-development branch protection CI (#327) * Add capability-development branch protection ci * Upgraded checkout action to major version tag * Updated validation to only occur when target branch is main * Addressed feedback * beholder: publish workflows/v2/workflow_user_metric (#333) * beholder: publish workflows/v2/workflow_user_metric.proto * remove entry from deprecated files * cre-1835: steady and transition indicators (#334) --------- Co-authored-by: amit-momin <108959691+amit-momin@users.noreply.github.com> Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> Co-authored-by: cawthorne Co-authored-by: Tejaswi Nadahalli Co-authored-by: vreff <104409744+vreff@users.noreply.github.com> Co-authored-by: Gheorghe Strimtu Co-authored-by: karen-stepanyan <91897037+karen-stepanyan@users.noreply.github.com> Co-authored-by: mchain0 --- .github/workflows/cre-branch-protection.yml | 85 +++++++++++++++++++++ ring/go/shard_orchestrator.pb.go | 22 +++++- ring/pb/shard_orchestrator.proto | 2 + workflows/chip-cre.json | 16 ++++ 4 files changed, 123 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/cre-branch-protection.yml diff --git a/.github/workflows/cre-branch-protection.yml b/.github/workflows/cre-branch-protection.yml new file mode 100644 index 00000000..49661fe6 --- /dev/null +++ b/.github/workflows/cre-branch-protection.yml @@ -0,0 +1,85 @@ +name: CRE branch protection + +on: + pull_request: + types: [opened, reopened, synchronize] + branches: + - main + +permissions: {} + +jobs: + check-cre-target-branch: + permissions: + contents: read + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Enforce CRE changes target capabilities-development + env: + TARGET_BRANCH: ${{ github.base_ref }} + run: | + git fetch origin "${TARGET_BRANCH}" --quiet 2>/dev/null || true + + CRE_CHANGED=$(git diff --name-only "origin/${TARGET_BRANCH}...HEAD" -- cre/) + + if [[ -z "$CRE_CHANGED" ]]; then + echo "No cre/ files modified. Skipping branch check." + exit 0 + fi + + echo "The following cre/ files are modified in this PR:" + echo "$CRE_CHANGED" + echo "" + + echo "PR targets 'main' and contains cre/ changes." + echo "Verifying all CRE-modifying commits are cherry-picks from capabilities-development..." + echo "" + + if ! git fetch origin capabilities-development --quiet 2>/dev/null; then + echo "::error::Could not fetch the 'capabilities-development' branch. Ensure it exists on the remote." + echo "::error::CRE changes must target 'capabilities-development' or be cherry-picks of commits already in that branch." + exit 1 + fi + + # Precompute patch-ids for all CRE-touching commits in capabilities-development + CAP_PATCH_IDS=$(mktemp) + git log --format=%H origin/capabilities-development -- cre/ | while read -r cap_commit; do + git show "$cap_commit" -- cre/ | git patch-id --stable 2>/dev/null | awk '{print $1}' + done | sort -u > "$CAP_PATCH_IDS" + + CAP_COUNT=$(wc -l < "$CAP_PATCH_IDS" | tr -d ' ') + echo "Found ${CAP_COUNT} unique CRE patch-ids in capabilities-development." + echo "" + + # Check each PR commit that touches cre/ + FAILURES=$(mktemp) + git log --format=%H "origin/${TARGET_BRANCH}..HEAD" -- cre/ | while read -r commit; do + PATCH_ID=$(git show "$commit" -- cre/ | git patch-id --stable 2>/dev/null | awk '{print $1}') + + if [ -z "$PATCH_ID" ]; then + continue + fi + + if ! grep -qF "$PATCH_ID" "$CAP_PATCH_IDS"; then + git log -1 --format='%h %s' "$commit" >> "$FAILURES" + fi + done + + if [ -s "$FAILURES" ]; then + echo "::error::The following commits modify cre/ but are not cherry-picks of commits in capabilities-development:" + echo "" + while IFS= read -r line; do + echo " - ${line}" + done < "$FAILURES" + echo "" + echo "::error::CRE changes must first be merged into 'capabilities-development'. PRs to other branches may only include cherry-picks of commits already in that branch." + rm -f "$CAP_PATCH_IDS" "$FAILURES" + exit 1 + fi + + rm -f "$CAP_PATCH_IDS" "$FAILURES" + echo "All CRE-modifying commits are verified cherry-picks from capabilities-development." diff --git a/ring/go/shard_orchestrator.pb.go b/ring/go/shard_orchestrator.pb.go index 2ebdf252..fe6194b1 100644 --- a/ring/go/shard_orchestrator.pb.go +++ b/ring/go/shard_orchestrator.pb.go @@ -130,6 +130,8 @@ type GetWorkflowShardMappingResponse struct { Mappings map[string]uint32 `protobuf:"bytes,1,rep,name=mappings,proto3" json:"mappings,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` MappingStates map[string]*WorkflowMappingState `protobuf:"bytes,2,rep,name=mapping_states,json=mappingStates,proto3" json:"mapping_states,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` MappingVersion uint64 `protobuf:"varint,3,opt,name=mapping_version,json=mappingVersion,proto3" json:"mapping_version,omitempty"` + RoutingStateId uint64 `protobuf:"varint,4,opt,name=routing_state_id,json=routingStateId,proto3" json:"routing_state_id,omitempty"` + RoutingSteady bool `protobuf:"varint,5,opt,name=routing_steady,json=routingSteady,proto3" json:"routing_steady,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -185,6 +187,20 @@ func (x *GetWorkflowShardMappingResponse) GetMappingVersion() uint64 { return 0 } +func (x *GetWorkflowShardMappingResponse) GetRoutingStateId() uint64 { + if x != nil { + return x.RoutingStateId + } + return 0 +} + +func (x *GetWorkflowShardMappingResponse) GetRoutingSteady() bool { + if x != nil { + return x.RoutingSteady + } + return false +} + type ReportWorkflowTriggerRegistrationRequest struct { state protoimpl.MessageState `protogen:"open.v1"` SourceShardId uint32 `protobuf:"varint,1,opt,name=source_shard_id,json=sourceShardId,proto3" json:"source_shard_id,omitempty"` @@ -301,11 +317,13 @@ const file_shard_orchestrator_proto_rawDesc = "" + "oldShardId\x12 \n" + "\fnew_shard_id\x18\x02 \x01(\rR\n" + "newShardId\x12#\n" + - "\rin_transition\x18\x03 \x01(\bR\finTransition\"\x97\x03\n" + + "\rin_transition\x18\x03 \x01(\bR\finTransition\"\xe8\x03\n" + "\x1fGetWorkflowShardMappingResponse\x12O\n" + "\bmappings\x18\x01 \x03(\v23.ring.GetWorkflowShardMappingResponse.MappingsEntryR\bmappings\x12_\n" + "\x0emapping_states\x18\x02 \x03(\v28.ring.GetWorkflowShardMappingResponse.MappingStatesEntryR\rmappingStates\x12'\n" + - "\x0fmapping_version\x18\x03 \x01(\x04R\x0emappingVersion\x1a;\n" + + "\x0fmapping_version\x18\x03 \x01(\x04R\x0emappingVersion\x12(\n" + + "\x10routing_state_id\x18\x04 \x01(\x04R\x0eroutingStateId\x12%\n" + + "\x0erouting_steady\x18\x05 \x01(\bR\rroutingSteady\x1a;\n" + "\rMappingsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\rR\x05value:\x028\x01\x1a\\\n" + diff --git a/ring/pb/shard_orchestrator.proto b/ring/pb/shard_orchestrator.proto index 87932d11..6a3a5200 100644 --- a/ring/pb/shard_orchestrator.proto +++ b/ring/pb/shard_orchestrator.proto @@ -18,6 +18,8 @@ message GetWorkflowShardMappingResponse { map mappings = 1; map mapping_states = 2; uint64 mapping_version = 3; + uint64 routing_state_id = 4; + bool routing_steady = 5; } message ReportWorkflowTriggerRegistrationRequest { diff --git a/workflows/chip-cre.json b/workflows/chip-cre.json index cf5213fd..abd7594f 100644 --- a/workflows/chip-cre.json +++ b/workflows/chip-cre.json @@ -347,6 +347,22 @@ } ] }, + { + "entity": "workflows.v2.WorkflowUserMetric", + "path": "workflows/v2/workflow_user_metric.proto", + "references": [ + { + "name": "workflows/v2/cre_info.proto", + "entity": "workflows.v2.CreInfo", + "path": "workflows/v2/cre_info.proto" + }, + { + "name": "workflows/v2/workflow_key.proto", + "entity": "workflows.v2.WorkflowKey", + "path": "workflows/v2/workflow_key.proto" + } + ] + }, { "entity": "bridge_status.v1.JobInfo", "path": "bridge_status/v1/job_info.proto" From a3f3bdd56877e8ba55664b18dcef61034f6539b4 Mon Sep 17 00:00:00 2001 From: Silas Lenihan <32529249+silaslenihan@users.noreply.github.com> Date: Mon, 20 Apr 2026 16:42:55 -0400 Subject: [PATCH 10/49] Support Anchor v0.3 & CPI events (#305) * Solana LogTrigger: Change eventIdlJson to contractIdlJson * Auto-fix: buf format, gofmt, go generate, go mod tidy * Add cpi filter config (#307) * Solana Client: Add CPI Filter Config * Auto-fix: buf format, gofmt, go generate, go mod tidy * updated name to dest address * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- cre/capabilities/blockchain/solana/v1alpha/client.proto | 8 +++++++- cre/go/installer/pkg/embedded_gen.go | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/cre/capabilities/blockchain/solana/v1alpha/client.proto b/cre/capabilities/blockchain/solana/v1alpha/client.proto index 5f950f3d..39731778 100644 --- a/cre/capabilities/blockchain/solana/v1alpha/client.proto +++ b/cre/capabilities/blockchain/solana/v1alpha/client.proto @@ -339,12 +339,18 @@ message SubkeyConfig { repeated ValueComparator comparers = 2; } +message CPIFilterConfig { + bytes dest_address = 1; + bytes method_name = 2; +} + message FilterLogTriggerRequest { string name = 1; bytes address = 2; // Solana PublicKey (32 bytes) string event_name = 3; - bytes event_idl_json = 4; + bytes contract_idl_json = 4; repeated SubkeyConfig subkeys = 5; + optional CPIFilterConfig cpi_filter_config = 6; } message Log { diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 6389afd1..07af5298 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -959,12 +959,18 @@ message SubkeyConfig { repeated ValueComparator comparers = 2; } +message CPIFilterConfig { + bytes dest_address = 1; + bytes method_name = 2; +} + message FilterLogTriggerRequest { string name = 1; bytes address = 2; // Solana PublicKey (32 bytes) string event_name = 3; - bytes event_idl_json = 4; + bytes contract_idl_json = 4; repeated SubkeyConfig subkeys = 5; + optional CPIFilterConfig cpi_filter_config = 6; } message Log { From f2e7edea92c7710eab07dd10dae28a59efd95c38 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Mon, 4 May 2026 14:00:18 -0400 Subject: [PATCH 11/49] rm unused field from write report request (#337) * rm unused field from write report request * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- cre/capabilities/blockchain/solana/v1alpha/client.proto | 1 - cre/go/installer/pkg/embedded_gen.go | 1 - 2 files changed, 2 deletions(-) diff --git a/cre/capabilities/blockchain/solana/v1alpha/client.proto b/cre/capabilities/blockchain/solana/v1alpha/client.proto index 39731778..ea287483 100644 --- a/cre/capabilities/blockchain/solana/v1alpha/client.proto +++ b/cre/capabilities/blockchain/solana/v1alpha/client.proto @@ -51,7 +51,6 @@ message Account { // Compute budget configuration when submitting txs. message ComputeConfig { uint32 compute_limit = 1; // max CUs (approx per-tx limit) - uint64 compute_max_price = 2; // max lamports per CU } // Raw bytes vs parsed JSON (as returned by RPC). diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 07af5298..a27e2120 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -671,7 +671,6 @@ message Account { // Compute budget configuration when submitting txs. message ComputeConfig { uint32 compute_limit = 1; // max CUs (approx per-tx limit) - uint64 compute_max_price = 2; // max lamports per CU } // Raw bytes vs parsed JSON (as returned by RPC). From 3dae6143f38aa2c3d53a02a4927c6151b39d40e4 Mon Sep 17 00:00:00 2001 From: ilija42 <57732589+ilija42@users.noreply.github.com> Date: Tue, 12 May 2026 00:26:22 +0200 Subject: [PATCH 12/49] Add stellar (#355) * Add stellar * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- .../blockchain/stellar/v1alpha/client.proto | 88 +++++++++++++++++ cre/go/installer/pkg/embedded_gen.go | 94 +++++++++++++++++++ 2 files changed, 182 insertions(+) create mode 100644 cre/capabilities/blockchain/stellar/v1alpha/client.proto diff --git a/cre/capabilities/blockchain/stellar/v1alpha/client.proto b/cre/capabilities/blockchain/stellar/v1alpha/client.proto new file mode 100644 index 00000000..272aeaed --- /dev/null +++ b/cre/capabilities/blockchain/stellar/v1alpha/client.proto @@ -0,0 +1,88 @@ +syntax = "proto3"; +package capabilities.blockchain.stellar.v1alpha; + +import "sdk/v1alpha/sdk.proto"; +import "tools/generator/v1alpha/cre_metadata.proto"; + +enum TxStatus { + TX_STATUS_FATAL = 0; + TX_STATUS_REVERTED = 1; + TX_STATUS_SUCCESS = 2; +} + +message ReadContractRequest { + string contract_id = 1; + string function = 2; + repeated bytes args = 3; + // Optional: 0 = latest + uint32 ledger_sequence = 4; +} + +message ReadContractResponse { + bytes result = 1; + // Ledger actually used for simulation + uint32 ledger_sequence = 2; + // Response + string error = 3; +} + +// ========== GetLatestLedger ========== + +message GetLatestLedgerRequest {} + +message GetLatestLedgerResponse { + bytes hash = 1; // 32-byte raw ledger hash + uint32 protocol_version = 2; + uint32 sequence = 3; + int64 ledger_close_time = 4; + bytes ledger_header_xdr = 5; // LedgerHeader binary XDR + bytes ledger_metadata_xdr = 6; // LedgerCloseMetaV2 binary XDR +} + +// ========== WriteReport ========== + +message WriteReportRequest { + string contract_id = 1; // Stellar contract address (C… StrKey) + sdk.v1alpha.ReportResponse report = 2; // signed report from consensus +} + +enum ReceiverContractExecutionStatus { + RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS = 0; + RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED = 1; +} + +message WriteReportReply { + TxStatus tx_status = 1; + optional ReceiverContractExecutionStatus receiver_contract_execution_status = 2; + optional string tx_hash = 3; + optional uint64 transaction_fee = 4; // total fee paid in stroops + optional uint32 ledger_sequence = 5; +} + +service Client { + option (tools.generator.v1alpha.capability) = { + mode: MODE_DON + capability_id: "stellar@1.0.0" + labels: { + key: "ChainSelector" + value: { + uint64_label: { + defaults: [ + { + key: "stellar-mainnet" + value: 17783245649066640917 + }, + { + key: "stellar-testnet" + value: 4894814558906953166 + } + ] + } + } + } + }; + + rpc GetLatestLedger(GetLatestLedgerRequest) returns (GetLatestLedgerResponse); + rpc ReadContract(ReadContractRequest) returns (ReadContractResponse); + rpc WriteReport(WriteReportRequest) returns (WriteReportReply); +} diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index a27e2120..f659cadd 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -1054,6 +1054,96 @@ service Client { } ` +const blockchainStellarV1alphaClientEmbedded = `syntax = "proto3"; +package capabilities.blockchain.stellar.v1alpha; + +import "sdk/v1alpha/sdk.proto"; +import "tools/generator/v1alpha/cre_metadata.proto"; + +enum TxStatus { + TX_STATUS_FATAL = 0; + TX_STATUS_REVERTED = 1; + TX_STATUS_SUCCESS = 2; +} + +message ReadContractRequest { + string contract_id = 1; + string function = 2; + repeated bytes args = 3; + // Optional: 0 = latest + uint32 ledger_sequence = 4; +} + +message ReadContractResponse { + bytes result = 1; + // Ledger actually used for simulation + uint32 ledger_sequence = 2; + // Response + string error = 3; +} + +// ========== GetLatestLedger ========== + +message GetLatestLedgerRequest {} + +message GetLatestLedgerResponse { + bytes hash = 1; // 32-byte raw ledger hash + uint32 protocol_version = 2; + uint32 sequence = 3; + int64 ledger_close_time = 4; + bytes ledger_header_xdr = 5; // LedgerHeader binary XDR + bytes ledger_metadata_xdr = 6; // LedgerCloseMetaV2 binary XDR +} + +// ========== WriteReport ========== + +message WriteReportRequest { + string contract_id = 1; // Stellar contract address (C… StrKey) + sdk.v1alpha.ReportResponse report = 2; // signed report from consensus +} + +enum ReceiverContractExecutionStatus { + RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS = 0; + RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED = 1; +} + +message WriteReportReply { + TxStatus tx_status = 1; + optional ReceiverContractExecutionStatus receiver_contract_execution_status = 2; + optional string tx_hash = 3; + optional uint64 transaction_fee = 4; // total fee paid in stroops + optional uint32 ledger_sequence = 5; +} + +service Client { + option (tools.generator.v1alpha.capability) = { + mode: MODE_DON + capability_id: "stellar@1.0.0" + labels: { + key: "ChainSelector" + value: { + uint64_label: { + defaults: [ + { + key: "stellar-mainnet" + value: 17783245649066640917 + }, + { + key: "stellar-testnet" + value: 4894814558906953166 + } + ] + } + } + } + }; + + rpc GetLatestLedger(GetLatestLedgerRequest) returns (GetLatestLedgerResponse); + rpc ReadContract(ReadContractRequest) returns (ReadContractResponse); + rpc WriteReport(WriteReportRequest) returns (WriteReportReply); +} +` + const computeConfidentialworkflowV1alphaClientEmbedded = `syntax = "proto3"; package capabilities.compute.confidentialworkflow.v1alpha; @@ -1966,6 +2056,10 @@ var allFiles = []*embeddedFile{ name: "capabilities/blockchain/solana/v1alpha/client.proto", content: blockchainSolanaV1alphaClientEmbedded, }, + { + name: "capabilities/blockchain/stellar/v1alpha/client.proto", + content: blockchainStellarV1alphaClientEmbedded, + }, { name: "capabilities/compute/confidentialworkflow/v1alpha/client.proto", content: computeConfidentialworkflowV1alphaClientEmbedded, From b444316b44c152ec7d0bafce072cff34f41c3035 Mon Sep 17 00:00:00 2001 From: Yashvardhan Nevatia Date: Tue, 12 May 2026 18:05:42 +0100 Subject: [PATCH 13/49] Chore sync with main 12/05/2026 (#356) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add Pharos Atlantic support (#306) * Added Pharos Atlantic support * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * aptos proto: add ledger_version to ViewRequest (#310) * aptos proto: add ledger_version to ViewRequest * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add xlayer, megaeth, cronos, mantle, tac, unichain, scroll, sonic testnet support (#308) * Added xlayer megaeth cronos mantle tac unichain scroll sonic support * Auto-fix: buf format, gofmt, go generate, go mod tidy * Added celo sepolia * Auto-fix: buf format, gofmt, go generate, go mod tidy * Added gnosis chiado * Auto-fix: buf format, gofmt, go generate, go mod tidy * Removed celo sepolia * Auto-fix: buf format, gofmt, go generate, go mod tidy * Removed gnosis chiado * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add andesite chain (#313) * Added andesite chain * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add new mainnet chains to client proto (#315) * Added new mainnet chains to client proto * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Remove aptos (moved to capabilities-development branch) (#316) * remove aptos * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add owner and execution_id to WorkflowExecution proto (#317) Adds workflow-level context to the app-specific proto rather than the generic ComputeRequest type, per vreff's feedback on CC PR #277. The enclave app reads these from the deserialized WorkflowExecution for runtime secret fetching from VaultDON via the relay DON. * Add Privacy as codeowners of protos embedded gen files (#318) * feat: add NodeBuildInfo proto and register it in chip schemas (#320) * Revert "Remove aptos (moved to capabilities-development branch) (#316)" (#321) This reverts commit 1124ff8c35a15379c5b7ad415bb79cbd10d595b1. * Add hyperliquid mainnet to client proto (#322) * Added hyperliquid mainnet to client proto * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add gnosis chiado to client proto (#324) * Added gnosis chiado to client proto * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * add WorkflowUserMetric (#319) * add WorkflowUserMetric * fix metric suffix * bot: regenerate protobuf files * add USER_METRIC_TYPE_UNSPECIFIED * bot: regenerate protobuf files * update WorkflowUserMetric value to double * drop histogram support * bot: regenerate protobuf files --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Revert "Revert "Remove aptos (moved to capabilities-development branch) (#316…" (#331) This reverts commit ad04ed6d891e0349a00c8e96920e95f5d5adf39f. * Add capability-development branch protection CI (#327) * Add capability-development branch protection ci * Upgraded checkout action to major version tag * Updated validation to only occur when target branch is main * Addressed feedback * beholder: publish workflows/v2/workflow_user_metric (#333) * beholder: publish workflows/v2/workflow_user_metric.proto * remove entry from deprecated files * cre-1835: steady and transition indicators (#334) * feat(op-catalog): add SEMANTICS_DELETE to EditSemantics enum (#342) * Version Packages (#343) Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add Fastlane Atlas userOp message (#344) * Add fastlane userOp message * bot: regenerate protobuf files --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * OEV-851 Add optional dualBroadcastParams field to TxMessage (#302) * Adding job spec protos for Data Feeds (#346) * Adding job spec protos for Data Feeds * Removing iron-flask-data-feeds file * Restoring file, only deleting what was added * trailing newline * Adding subdomain data-feeds.job-spec * Removing added yarn.lock * Registering job_spec messages for Beholder domain (#348) * Add node job info platform event proto (#345) * Updating CODEOWNERS for data-feeds (#350) * Simplifying job spec protos (#349) * Simplying job spec protos * Simplifying job spec protos * Moving location of contract_id * Update gh worflow file to trigger on changes to chip `.json` (#352) * Message rules API (#351) * Message rules API * bot: regenerate protobuf files * Bump GRPC deps --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: amit-momin <108959691+amit-momin@users.noreply.github.com> Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> Co-authored-by: cawthorne Co-authored-by: Tejaswi Nadahalli Co-authored-by: vreff <104409744+vreff@users.noreply.github.com> Co-authored-by: Gheorghe Strimtu Co-authored-by: karen-stepanyan <91897037+karen-stepanyan@users.noreply.github.com> Co-authored-by: mchain0 Co-authored-by: Giorgio Gambino <151543+giogam@users.noreply.github.com> Co-authored-by: Dimitris Grigoriou Co-authored-by: Geert <117188496+cll-gg@users.noreply.github.com> Co-authored-by: thomjg <103059015+thomjg@users.noreply.github.com> Co-authored-by: hendoxc <42331373+hendoxc@users.noreply.github.com> Co-authored-by: Simon B.Robert --- .github/CODEOWNERS | 1 + .../register-data-feeds-schemas.yaml | 59 +++ .../workflows/register-workflows-schemas.yaml | 2 + chainlink-ccv/committee-verifier/go.mod | 14 +- chainlink-ccv/committee-verifier/go.sum | 50 +- chainlink-ccv/heartbeat/go.mod | 10 +- chainlink-ccv/heartbeat/go.sum | 42 +- chainlink-ccv/message-discovery/go.mod | 14 +- chainlink-ccv/message-discovery/go.sum | 50 +- chainlink-ccv/message-rules/go.mod | 15 + chainlink-ccv/message-rules/go.sum | 38 ++ chainlink-ccv/message-rules/package.json | 5 + .../message-rules/v1/message-rules.pb.go | 465 ++++++++++++++++++ .../message-rules/v1/message-rules.proto | 40 ++ .../message-rules/v1/message-rules_grpc.pb.go | 121 +++++ chainlink-ccv/verifier/go.mod | 14 +- chainlink-ccv/verifier/go.sum | 50 +- data-feeds/beholder-job-spec-schemas.json | 40 ++ data-feeds/chip-job-spec-schemas.json | 40 ++ data-feeds/chip-schemas.json | 56 +++ data-feeds/generate.go | 4 + data-feeds/job_spec/v1/job_spec_event.pb.go | 394 +++++++++++++++ data-feeds/job_spec/v1/job_spec_event.proto | 54 ++ .../job_spec/v1/ocr2_evm_relay_config.pb.go | 205 ++++++++ .../job_spec/v1/ocr2_evm_relay_config.proto | 18 + .../v1/ocr2_median_plugin_config.pb.go | 123 +++++ .../v1/ocr2_median_plugin_config.proto | 10 + .../job_spec/v1/ocr2_oracle_spec_info.pb.go | 230 +++++++++ .../job_spec/v1/ocr2_oracle_spec_info.proto | 30 ++ node-platform/chip-schemas.json | 4 + node-platform/common/v1/node_job_info.pb.go | 217 ++++++++ node-platform/common/v1/node_job_info.proto | 18 + op-catalog/CHANGELOG.md | 6 + op-catalog/package.json | 2 +- op-catalog/v1/datastore/common.pb.go | 8 +- op-catalog/v1/datastore/common.proto | 1 + pnpm-workspace.yaml | 1 + svr/CHANGELOG.md | 6 + svr/package.json | 2 +- svr/svr-schemas-beholder.json | 4 + svr/svr-schemas-chip.json | 4 + svr/v1/beholder_tx_message.pb.go | 35 +- svr/v1/beholder_tx_message.proto | 1 + svr/v1/fastlane_atlas_user_op.pb.go | 196 ++++++++ svr/v1/fastlane_atlas_user_op.proto | 17 + 45 files changed, 2582 insertions(+), 134 deletions(-) create mode 100644 .github/workflows/register-data-feeds-schemas.yaml create mode 100644 chainlink-ccv/message-rules/go.mod create mode 100644 chainlink-ccv/message-rules/go.sum create mode 100644 chainlink-ccv/message-rules/package.json create mode 100644 chainlink-ccv/message-rules/v1/message-rules.pb.go create mode 100644 chainlink-ccv/message-rules/v1/message-rules.proto create mode 100644 chainlink-ccv/message-rules/v1/message-rules_grpc.pb.go create mode 100644 data-feeds/beholder-job-spec-schemas.json create mode 100644 data-feeds/chip-job-spec-schemas.json create mode 100644 data-feeds/chip-schemas.json create mode 100644 data-feeds/job_spec/v1/job_spec_event.pb.go create mode 100644 data-feeds/job_spec/v1/job_spec_event.proto create mode 100644 data-feeds/job_spec/v1/ocr2_evm_relay_config.pb.go create mode 100644 data-feeds/job_spec/v1/ocr2_evm_relay_config.proto create mode 100644 data-feeds/job_spec/v1/ocr2_median_plugin_config.pb.go create mode 100644 data-feeds/job_spec/v1/ocr2_median_plugin_config.proto create mode 100644 data-feeds/job_spec/v1/ocr2_oracle_spec_info.pb.go create mode 100644 data-feeds/job_spec/v1/ocr2_oracle_spec_info.proto create mode 100644 node-platform/common/v1/node_job_info.pb.go create mode 100644 node-platform/common/v1/node_job_info.proto create mode 100644 svr/v1/fastlane_atlas_user_op.pb.go create mode 100644 svr/v1/fastlane_atlas_user_op.proto diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 699cdcaa..c838ca50 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -24,6 +24,7 @@ /cre/capabilities/networking/confidentialhttp @smartcontractkit/privacy @smartcontractkit/op-tooling # Data +/data-feeds/ @smartcontractkit/data-feeds-engineers @smartcontractkit/op-tooling /svr/ @smartcontractkit/oev @smartcontractkit/op-tooling # Ring diff --git a/.github/workflows/register-data-feeds-schemas.yaml b/.github/workflows/register-data-feeds-schemas.yaml new file mode 100644 index 00000000..286b02ad --- /dev/null +++ b/.github/workflows/register-data-feeds-schemas.yaml @@ -0,0 +1,59 @@ +name: register-data-feeds-schemas + +on: + workflow_dispatch: + push: + branches: + - main + paths: + - ".github/workflows/register-data-feeds-schemas.yaml" + - "data-feeds/**/*.proto" + - "data-feeds/chip-schemas.json" + - "data-feeds/chip-job-spec-schemas.json" + - "data-feeds/beholder-job-spec-schemas.json" + pull_request: + paths: + - ".github/workflows/register-data-feeds-schemas.yaml" + - "data-feeds/**/*.proto" + - "data-feeds/chip-schemas.json" + - "data-feeds/chip-job-spec-schemas.json" + - "data-feeds/beholder-job-spec-schemas.json" + +jobs: + register-schemas: + runs-on: ubuntu-latest + environment: publish + permissions: + id-token: write + contents: read + + strategy: + fail-fast: false + matrix: + config: + - { name: data-feeds, file: chip-schemas.json } + - { name: job-spec, file: chip-job-spec-schemas.json } + - { name: job-spec-beholder, file: beholder-job-spec-schemas.json } + + steps: + - uses: actions/checkout@v5 + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 # v4.0.2 + with: + mask-aws-account-id: true + role-to-assume: ${{ secrets.AWS_IAM_ROLE_PUBLISH_ARN }} + aws-region: ${{ secrets.AWS_REGION }} + + - name: Register Data Feeds Schemas for ${{ matrix.config.name }} domain + uses: smartcontractkit/.github/actions/chip-schema-registration@b1bec0ae729606681897cbf7fad5d7c1d572173e # v1.1.0 + with: + aws-account-id: ${{ secrets.AWS_ACCOUNT_ID_ROOT }} + aws-region: us-west-2 + chip-schema-dir: "data-feeds" + chip-config-file-path: "data-feeds/${{ matrix.config.file }}" + chip-config-host: ${{ github.ref_name == 'main' && secrets.chip_config_host_prod || secrets.chip_config_host_staging }} + chip-config-user: ${{ secrets.chip_config_user }} + chip-config-password: ${{ github.ref_name == 'main' && secrets.chip_config_password_prod || secrets.chip_config_password_staging }} + ts-ouath-client-id: ${{ secrets.chip_config_ts_oauth_client_id }} + ts-ouath-secret: ${{ secrets.chip_config_ts_oauth_secret }} diff --git a/.github/workflows/register-workflows-schemas.yaml b/.github/workflows/register-workflows-schemas.yaml index 6fb3b138..dca63e69 100644 --- a/.github/workflows/register-workflows-schemas.yaml +++ b/.github/workflows/register-workflows-schemas.yaml @@ -7,10 +7,12 @@ on: - main paths: - ".github/workflows/register-workflows-schemas.yaml" + - "workflows/chip-*.json" - "workflows/**/*.proto" pull_request: paths: - ".github/workflows/register-workflows-schemas.yaml" + - "workflows/chip-*.json" - "workflows/**/*.proto" jobs: diff --git a/chainlink-ccv/committee-verifier/go.mod b/chainlink-ccv/committee-verifier/go.mod index 525ea188..8a05e425 100644 --- a/chainlink-ccv/committee-verifier/go.mod +++ b/chainlink-ccv/committee-verifier/go.mod @@ -1,16 +1,16 @@ module github.com/smartcontractkit/chainlink-protos/chainlink-ccv/committee-verifier -go 1.23.0 +go 1.24.0 require ( github.com/smartcontractkit/chainlink-protos/chainlink-ccv/verifier v0.0.0-20251210213124-585855c1471e - google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 - google.golang.org/grpc v1.75.0 - google.golang.org/protobuf v1.36.8 + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 + google.golang.org/grpc v1.79.3 + google.golang.org/protobuf v1.36.10 ) require ( - golang.org/x/net v0.41.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/net v0.48.0 // indirect + golang.org/x/sys v0.39.0 // indirect + golang.org/x/text v0.32.0 // indirect ) diff --git a/chainlink-ccv/committee-verifier/go.sum b/chainlink-ccv/committee-verifier/go.sum index 64f95cbe..de0a62f2 100644 --- a/chainlink-ccv/committee-verifier/go.sum +++ b/chainlink-ccv/committee-verifier/go.sum @@ -1,3 +1,5 @@ +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -10,29 +12,29 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/smartcontractkit/chainlink-protos/chainlink-ccv/verifier v0.0.0-20251210213124-585855c1471e h1:r/bI4cJnDYeCHj4ejWDqpUJ8+Ho1XXgwVd0ZVbEtT3A= github.com/smartcontractkit/chainlink-protos/chainlink-ccv/verifier v0.0.0-20251210213124-585855c1471e/go.mod h1:5JdppgngCOUS76p61zCinSCgOhPeYQ+OcDUuome5THQ= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= diff --git a/chainlink-ccv/heartbeat/go.mod b/chainlink-ccv/heartbeat/go.mod index 46fe1f63..d2d417f2 100644 --- a/chainlink-ccv/heartbeat/go.mod +++ b/chainlink-ccv/heartbeat/go.mod @@ -3,13 +3,13 @@ module github.com/smartcontractkit/chainlink-protos/chainlink-ccv/heartbeat go 1.24.2 require ( - google.golang.org/grpc v1.78.0 + google.golang.org/grpc v1.79.3 google.golang.org/protobuf v1.36.11 ) require ( - golang.org/x/net v0.47.0 // indirect - golang.org/x/sys v0.38.0 // indirect - golang.org/x/text v0.31.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251029180050-ab9386a59fda // indirect + golang.org/x/net v0.48.0 // indirect + golang.org/x/sys v0.39.0 // indirect + golang.org/x/text v0.32.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect ) diff --git a/chainlink-ccv/heartbeat/go.sum b/chainlink-ccv/heartbeat/go.sum index f165e8bf..d705bc9b 100644 --- a/chainlink-ccv/heartbeat/go.sum +++ b/chainlink-ccv/heartbeat/go.sum @@ -1,3 +1,5 @@ +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -10,27 +12,27 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251029180050-ab9386a59fda h1:i/Q+bfisr7gq6feoJnS/DlpdwEL4ihp41fvRiM3Ork0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251029180050-ab9386a59fda/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= diff --git a/chainlink-ccv/message-discovery/go.mod b/chainlink-ccv/message-discovery/go.mod index 007c0d5d..695e852d 100644 --- a/chainlink-ccv/message-discovery/go.mod +++ b/chainlink-ccv/message-discovery/go.mod @@ -1,16 +1,16 @@ module github.com/smartcontractkit/chainlink-protos/chainlink-ccv/message-discovery -go 1.23.0 +go 1.24.0 require ( github.com/smartcontractkit/chainlink-protos/chainlink-ccv/verifier v0.0.0-20251210213124-585855c1471e - google.golang.org/grpc v1.75.0 - google.golang.org/protobuf v1.36.8 + google.golang.org/grpc v1.79.3 + google.golang.org/protobuf v1.36.10 ) require ( - golang.org/x/net v0.41.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.26.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect + golang.org/x/net v0.48.0 // indirect + golang.org/x/sys v0.39.0 // indirect + golang.org/x/text v0.32.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect ) diff --git a/chainlink-ccv/message-discovery/go.sum b/chainlink-ccv/message-discovery/go.sum index 64f95cbe..de0a62f2 100644 --- a/chainlink-ccv/message-discovery/go.sum +++ b/chainlink-ccv/message-discovery/go.sum @@ -1,3 +1,5 @@ +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -10,29 +12,29 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/smartcontractkit/chainlink-protos/chainlink-ccv/verifier v0.0.0-20251210213124-585855c1471e h1:r/bI4cJnDYeCHj4ejWDqpUJ8+Ho1XXgwVd0ZVbEtT3A= github.com/smartcontractkit/chainlink-protos/chainlink-ccv/verifier v0.0.0-20251210213124-585855c1471e/go.mod h1:5JdppgngCOUS76p61zCinSCgOhPeYQ+OcDUuome5THQ= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= diff --git a/chainlink-ccv/message-rules/go.mod b/chainlink-ccv/message-rules/go.mod new file mode 100644 index 00000000..3131e946 --- /dev/null +++ b/chainlink-ccv/message-rules/go.mod @@ -0,0 +1,15 @@ +module github.com/smartcontractkit/chainlink-protos/chainlink-ccv/message-rules + +go 1.24.0 + +require ( + google.golang.org/grpc v1.79.3 + google.golang.org/protobuf v1.36.10 +) + +require ( + golang.org/x/net v0.48.0 // indirect + golang.org/x/sys v0.39.0 // indirect + golang.org/x/text v0.32.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect +) diff --git a/chainlink-ccv/message-rules/go.sum b/chainlink-ccv/message-rules/go.sum new file mode 100644 index 00000000..87cd2070 --- /dev/null +++ b/chainlink-ccv/message-rules/go.sum @@ -0,0 +1,38 @@ +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= diff --git a/chainlink-ccv/message-rules/package.json b/chainlink-ccv/message-rules/package.json new file mode 100644 index 00000000..63988b44 --- /dev/null +++ b/chainlink-ccv/message-rules/package.json @@ -0,0 +1,5 @@ +{ + "name": "@chainlink/ccv-message-rules", + "version": "0.1.0", + "private": true +} diff --git a/chainlink-ccv/message-rules/v1/message-rules.pb.go b/chainlink-ccv/message-rules/v1/message-rules.pb.go new file mode 100644 index 00000000..62c48d5f --- /dev/null +++ b/chainlink-ccv/message-rules/v1/message-rules.pb.go @@ -0,0 +1,465 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc (unknown) +// source: message-rules/v1/message-rules.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +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) +) + +type ListMessageRulesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListMessageRulesRequest) Reset() { + *x = ListMessageRulesRequest{} + mi := &file_message_rules_v1_message_rules_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListMessageRulesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListMessageRulesRequest) ProtoMessage() {} + +func (x *ListMessageRulesRequest) ProtoReflect() protoreflect.Message { + mi := &file_message_rules_v1_message_rules_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 ListMessageRulesRequest.ProtoReflect.Descriptor instead. +func (*ListMessageRulesRequest) Descriptor() ([]byte, []int) { + return file_message_rules_v1_message_rules_proto_rawDescGZIP(), []int{0} +} + +type ListMessageRulesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Rules []*MessageRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListMessageRulesResponse) Reset() { + *x = ListMessageRulesResponse{} + mi := &file_message_rules_v1_message_rules_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListMessageRulesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListMessageRulesResponse) ProtoMessage() {} + +func (x *ListMessageRulesResponse) ProtoReflect() protoreflect.Message { + mi := &file_message_rules_v1_message_rules_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 ListMessageRulesResponse.ProtoReflect.Descriptor instead. +func (*ListMessageRulesResponse) Descriptor() ([]byte, []int) { + return file_message_rules_v1_message_rules_proto_rawDescGZIP(), []int{1} +} + +func (x *ListMessageRulesResponse) GetRules() []*MessageRule { + if x != nil { + return x.Rules + } + return nil +} + +type MessageRule struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Types that are valid to be assigned to Condition: + // + // *MessageRule_Chain + // *MessageRule_Lane + // *MessageRule_Token + Condition isMessageRule_Condition `protobuf_oneof:"condition"` + CreatedAtUnixMillis int64 `protobuf:"varint,5,opt,name=created_at_unix_millis,json=createdAtUnixMillis,proto3" json:"created_at_unix_millis,omitempty"` + UpdatedAtUnixMillis int64 `protobuf:"varint,6,opt,name=updated_at_unix_millis,json=updatedAtUnixMillis,proto3" json:"updated_at_unix_millis,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MessageRule) Reset() { + *x = MessageRule{} + mi := &file_message_rules_v1_message_rules_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MessageRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MessageRule) ProtoMessage() {} + +func (x *MessageRule) ProtoReflect() protoreflect.Message { + mi := &file_message_rules_v1_message_rules_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 MessageRule.ProtoReflect.Descriptor instead. +func (*MessageRule) Descriptor() ([]byte, []int) { + return file_message_rules_v1_message_rules_proto_rawDescGZIP(), []int{2} +} + +func (x *MessageRule) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *MessageRule) GetCondition() isMessageRule_Condition { + if x != nil { + return x.Condition + } + return nil +} + +func (x *MessageRule) GetChain() *ChainMessageRule { + if x != nil { + if x, ok := x.Condition.(*MessageRule_Chain); ok { + return x.Chain + } + } + return nil +} + +func (x *MessageRule) GetLane() *LaneMessageRule { + if x != nil { + if x, ok := x.Condition.(*MessageRule_Lane); ok { + return x.Lane + } + } + return nil +} + +func (x *MessageRule) GetToken() *TokenMessageRule { + if x != nil { + if x, ok := x.Condition.(*MessageRule_Token); ok { + return x.Token + } + } + return nil +} + +func (x *MessageRule) GetCreatedAtUnixMillis() int64 { + if x != nil { + return x.CreatedAtUnixMillis + } + return 0 +} + +func (x *MessageRule) GetUpdatedAtUnixMillis() int64 { + if x != nil { + return x.UpdatedAtUnixMillis + } + return 0 +} + +type isMessageRule_Condition interface { + isMessageRule_Condition() +} + +type MessageRule_Chain struct { + Chain *ChainMessageRule `protobuf:"bytes,2,opt,name=chain,proto3,oneof"` +} + +type MessageRule_Lane struct { + Lane *LaneMessageRule `protobuf:"bytes,3,opt,name=lane,proto3,oneof"` +} + +type MessageRule_Token struct { + Token *TokenMessageRule `protobuf:"bytes,4,opt,name=token,proto3,oneof"` +} + +func (*MessageRule_Chain) isMessageRule_Condition() {} + +func (*MessageRule_Lane) isMessageRule_Condition() {} + +func (*MessageRule_Token) isMessageRule_Condition() {} + +type ChainMessageRule struct { + state protoimpl.MessageState `protogen:"open.v1"` + ChainSelector uint64 `protobuf:"varint,1,opt,name=chain_selector,json=chainSelector,proto3" json:"chain_selector,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ChainMessageRule) Reset() { + *x = ChainMessageRule{} + mi := &file_message_rules_v1_message_rules_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ChainMessageRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChainMessageRule) ProtoMessage() {} + +func (x *ChainMessageRule) ProtoReflect() protoreflect.Message { + mi := &file_message_rules_v1_message_rules_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 ChainMessageRule.ProtoReflect.Descriptor instead. +func (*ChainMessageRule) Descriptor() ([]byte, []int) { + return file_message_rules_v1_message_rules_proto_rawDescGZIP(), []int{3} +} + +func (x *ChainMessageRule) GetChainSelector() uint64 { + if x != nil { + return x.ChainSelector + } + return 0 +} + +type LaneMessageRule struct { + state protoimpl.MessageState `protogen:"open.v1"` + SelectorA uint64 `protobuf:"varint,1,opt,name=selector_a,json=selectorA,proto3" json:"selector_a,omitempty"` + SelectorB uint64 `protobuf:"varint,2,opt,name=selector_b,json=selectorB,proto3" json:"selector_b,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LaneMessageRule) Reset() { + *x = LaneMessageRule{} + mi := &file_message_rules_v1_message_rules_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LaneMessageRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LaneMessageRule) ProtoMessage() {} + +func (x *LaneMessageRule) ProtoReflect() protoreflect.Message { + mi := &file_message_rules_v1_message_rules_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 LaneMessageRule.ProtoReflect.Descriptor instead. +func (*LaneMessageRule) Descriptor() ([]byte, []int) { + return file_message_rules_v1_message_rules_proto_rawDescGZIP(), []int{4} +} + +func (x *LaneMessageRule) GetSelectorA() uint64 { + if x != nil { + return x.SelectorA + } + return 0 +} + +func (x *LaneMessageRule) GetSelectorB() uint64 { + if x != nil { + return x.SelectorB + } + return 0 +} + +type TokenMessageRule struct { + state protoimpl.MessageState `protogen:"open.v1"` + ChainSelector uint64 `protobuf:"varint,1,opt,name=chain_selector,json=chainSelector,proto3" json:"chain_selector,omitempty"` + TokenAddress []byte `protobuf:"bytes,2,opt,name=token_address,json=tokenAddress,proto3" json:"token_address,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TokenMessageRule) Reset() { + *x = TokenMessageRule{} + mi := &file_message_rules_v1_message_rules_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TokenMessageRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TokenMessageRule) ProtoMessage() {} + +func (x *TokenMessageRule) ProtoReflect() protoreflect.Message { + mi := &file_message_rules_v1_message_rules_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 TokenMessageRule.ProtoReflect.Descriptor instead. +func (*TokenMessageRule) Descriptor() ([]byte, []int) { + return file_message_rules_v1_message_rules_proto_rawDescGZIP(), []int{5} +} + +func (x *TokenMessageRule) GetChainSelector() uint64 { + if x != nil { + return x.ChainSelector + } + return 0 +} + +func (x *TokenMessageRule) GetTokenAddress() []byte { + if x != nil { + return x.TokenAddress + } + return nil +} + +var File_message_rules_v1_message_rules_proto protoreflect.FileDescriptor + +const file_message_rules_v1_message_rules_proto_rawDesc = "" + + "\n" + + "$message-rules/v1/message-rules.proto\x12\x1echainlink_ccv.message_rules.v1\"\x19\n" + + "\x17ListMessageRulesRequest\"]\n" + + "\x18ListMessageRulesResponse\x12A\n" + + "\x05rules\x18\x01 \x03(\v2+.chainlink_ccv.message_rules.v1.MessageRuleR\x05rules\"\xef\x02\n" + + "\vMessageRule\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12H\n" + + "\x05chain\x18\x02 \x01(\v20.chainlink_ccv.message_rules.v1.ChainMessageRuleH\x00R\x05chain\x12E\n" + + "\x04lane\x18\x03 \x01(\v2/.chainlink_ccv.message_rules.v1.LaneMessageRuleH\x00R\x04lane\x12H\n" + + "\x05token\x18\x04 \x01(\v20.chainlink_ccv.message_rules.v1.TokenMessageRuleH\x00R\x05token\x123\n" + + "\x16created_at_unix_millis\x18\x05 \x01(\x03R\x13createdAtUnixMillis\x123\n" + + "\x16updated_at_unix_millis\x18\x06 \x01(\x03R\x13updatedAtUnixMillisB\v\n" + + "\tcondition\"9\n" + + "\x10ChainMessageRule\x12%\n" + + "\x0echain_selector\x18\x01 \x01(\x04R\rchainSelector\"O\n" + + "\x0fLaneMessageRule\x12\x1d\n" + + "\n" + + "selector_a\x18\x01 \x01(\x04R\tselectorA\x12\x1d\n" + + "\n" + + "selector_b\x18\x02 \x01(\x04R\tselectorB\"^\n" + + "\x10TokenMessageRule\x12%\n" + + "\x0echain_selector\x18\x01 \x01(\x04R\rchainSelector\x12#\n" + + "\rtoken_address\x18\x02 \x01(\fR\ftokenAddress2\x96\x01\n" + + "\fMessageRules\x12\x85\x01\n" + + "\x10ListMessageRules\x127.chainlink_ccv.message_rules.v1.ListMessageRulesRequest\x1a8.chainlink_ccv.message_rules.v1.ListMessageRulesResponseBMZKgithub.com/smartcontractkit/chainlink-protos/chainlink-ccv/message-rules/v1b\x06proto3" + +var ( + file_message_rules_v1_message_rules_proto_rawDescOnce sync.Once + file_message_rules_v1_message_rules_proto_rawDescData []byte +) + +func file_message_rules_v1_message_rules_proto_rawDescGZIP() []byte { + file_message_rules_v1_message_rules_proto_rawDescOnce.Do(func() { + file_message_rules_v1_message_rules_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_message_rules_v1_message_rules_proto_rawDesc), len(file_message_rules_v1_message_rules_proto_rawDesc))) + }) + return file_message_rules_v1_message_rules_proto_rawDescData +} + +var file_message_rules_v1_message_rules_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_message_rules_v1_message_rules_proto_goTypes = []any{ + (*ListMessageRulesRequest)(nil), // 0: chainlink_ccv.message_rules.v1.ListMessageRulesRequest + (*ListMessageRulesResponse)(nil), // 1: chainlink_ccv.message_rules.v1.ListMessageRulesResponse + (*MessageRule)(nil), // 2: chainlink_ccv.message_rules.v1.MessageRule + (*ChainMessageRule)(nil), // 3: chainlink_ccv.message_rules.v1.ChainMessageRule + (*LaneMessageRule)(nil), // 4: chainlink_ccv.message_rules.v1.LaneMessageRule + (*TokenMessageRule)(nil), // 5: chainlink_ccv.message_rules.v1.TokenMessageRule +} +var file_message_rules_v1_message_rules_proto_depIdxs = []int32{ + 2, // 0: chainlink_ccv.message_rules.v1.ListMessageRulesResponse.rules:type_name -> chainlink_ccv.message_rules.v1.MessageRule + 3, // 1: chainlink_ccv.message_rules.v1.MessageRule.chain:type_name -> chainlink_ccv.message_rules.v1.ChainMessageRule + 4, // 2: chainlink_ccv.message_rules.v1.MessageRule.lane:type_name -> chainlink_ccv.message_rules.v1.LaneMessageRule + 5, // 3: chainlink_ccv.message_rules.v1.MessageRule.token:type_name -> chainlink_ccv.message_rules.v1.TokenMessageRule + 0, // 4: chainlink_ccv.message_rules.v1.MessageRules.ListMessageRules:input_type -> chainlink_ccv.message_rules.v1.ListMessageRulesRequest + 1, // 5: chainlink_ccv.message_rules.v1.MessageRules.ListMessageRules:output_type -> chainlink_ccv.message_rules.v1.ListMessageRulesResponse + 5, // [5:6] is the sub-list for method output_type + 4, // [4:5] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_message_rules_v1_message_rules_proto_init() } +func file_message_rules_v1_message_rules_proto_init() { + if File_message_rules_v1_message_rules_proto != nil { + return + } + file_message_rules_v1_message_rules_proto_msgTypes[2].OneofWrappers = []any{ + (*MessageRule_Chain)(nil), + (*MessageRule_Lane)(nil), + (*MessageRule_Token)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_message_rules_v1_message_rules_proto_rawDesc), len(file_message_rules_v1_message_rules_proto_rawDesc)), + NumEnums: 0, + NumMessages: 6, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_message_rules_v1_message_rules_proto_goTypes, + DependencyIndexes: file_message_rules_v1_message_rules_proto_depIdxs, + MessageInfos: file_message_rules_v1_message_rules_proto_msgTypes, + }.Build() + File_message_rules_v1_message_rules_proto = out.File + file_message_rules_v1_message_rules_proto_goTypes = nil + file_message_rules_v1_message_rules_proto_depIdxs = nil +} diff --git a/chainlink-ccv/message-rules/v1/message-rules.proto b/chainlink-ccv/message-rules/v1/message-rules.proto new file mode 100644 index 00000000..b32701c7 --- /dev/null +++ b/chainlink-ccv/message-rules/v1/message-rules.proto @@ -0,0 +1,40 @@ +syntax = "proto3"; + +package chainlink_ccv.message_rules.v1; + +option go_package = "github.com/smartcontractkit/chainlink-protos/chainlink-ccv/message-rules/v1"; + +service MessageRules { + rpc ListMessageRules(ListMessageRulesRequest) returns (ListMessageRulesResponse); +} + +message ListMessageRulesRequest {} + +message ListMessageRulesResponse { + repeated MessageRule rules = 1; +} + +message MessageRule { + string id = 1; + oneof condition { + ChainMessageRule chain = 2; + LaneMessageRule lane = 3; + TokenMessageRule token = 4; + } + int64 created_at_unix_millis = 5; + int64 updated_at_unix_millis = 6; +} + +message ChainMessageRule { + uint64 chain_selector = 1; +} + +message LaneMessageRule { + uint64 selector_a = 1; + uint64 selector_b = 2; +} + +message TokenMessageRule { + uint64 chain_selector = 1; + bytes token_address = 2; +} diff --git a/chainlink-ccv/message-rules/v1/message-rules_grpc.pb.go b/chainlink-ccv/message-rules/v1/message-rules_grpc.pb.go new file mode 100644 index 00000000..8f07bd3e --- /dev/null +++ b/chainlink-ccv/message-rules/v1/message-rules_grpc.pb.go @@ -0,0 +1,121 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc (unknown) +// source: message-rules/v1/message-rules.proto + +package v1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + MessageRules_ListMessageRules_FullMethodName = "/chainlink_ccv.message_rules.v1.MessageRules/ListMessageRules" +) + +// MessageRulesClient is the client API for MessageRules service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type MessageRulesClient interface { + ListMessageRules(ctx context.Context, in *ListMessageRulesRequest, opts ...grpc.CallOption) (*ListMessageRulesResponse, error) +} + +type messageRulesClient struct { + cc grpc.ClientConnInterface +} + +func NewMessageRulesClient(cc grpc.ClientConnInterface) MessageRulesClient { + return &messageRulesClient{cc} +} + +func (c *messageRulesClient) ListMessageRules(ctx context.Context, in *ListMessageRulesRequest, opts ...grpc.CallOption) (*ListMessageRulesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListMessageRulesResponse) + err := c.cc.Invoke(ctx, MessageRules_ListMessageRules_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MessageRulesServer is the server API for MessageRules service. +// All implementations must embed UnimplementedMessageRulesServer +// for forward compatibility. +type MessageRulesServer interface { + ListMessageRules(context.Context, *ListMessageRulesRequest) (*ListMessageRulesResponse, error) + mustEmbedUnimplementedMessageRulesServer() +} + +// UnimplementedMessageRulesServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedMessageRulesServer struct{} + +func (UnimplementedMessageRulesServer) ListMessageRules(context.Context, *ListMessageRulesRequest) (*ListMessageRulesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListMessageRules not implemented") +} +func (UnimplementedMessageRulesServer) mustEmbedUnimplementedMessageRulesServer() {} +func (UnimplementedMessageRulesServer) testEmbeddedByValue() {} + +// UnsafeMessageRulesServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MessageRulesServer will +// result in compilation errors. +type UnsafeMessageRulesServer interface { + mustEmbedUnimplementedMessageRulesServer() +} + +func RegisterMessageRulesServer(s grpc.ServiceRegistrar, srv MessageRulesServer) { + // If the following call pancis, it indicates UnimplementedMessageRulesServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&MessageRules_ServiceDesc, srv) +} + +func _MessageRules_ListMessageRules_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListMessageRulesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MessageRulesServer).ListMessageRules(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MessageRules_ListMessageRules_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MessageRulesServer).ListMessageRules(ctx, req.(*ListMessageRulesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// MessageRules_ServiceDesc is the grpc.ServiceDesc for MessageRules service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var MessageRules_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "chainlink_ccv.message_rules.v1.MessageRules", + HandlerType: (*MessageRulesServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListMessageRules", + Handler: _MessageRules_ListMessageRules_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "message-rules/v1/message-rules.proto", +} diff --git a/chainlink-ccv/verifier/go.mod b/chainlink-ccv/verifier/go.mod index 1a7b8026..86ef1b97 100644 --- a/chainlink-ccv/verifier/go.mod +++ b/chainlink-ccv/verifier/go.mod @@ -1,15 +1,15 @@ module github.com/smartcontractkit/chainlink-protos/chainlink-ccv/verifier -go 1.23.0 +go 1.24.0 require ( - google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 - google.golang.org/grpc v1.75.0 - google.golang.org/protobuf v1.36.8 + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 + google.golang.org/grpc v1.79.3 + google.golang.org/protobuf v1.36.10 ) require ( - golang.org/x/net v0.41.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/net v0.48.0 // indirect + golang.org/x/sys v0.39.0 // indirect + golang.org/x/text v0.32.0 // indirect ) diff --git a/chainlink-ccv/verifier/go.sum b/chainlink-ccv/verifier/go.sum index c21c8b57..87cd2070 100644 --- a/chainlink-ccv/verifier/go.sum +++ b/chainlink-ccv/verifier/go.sum @@ -1,3 +1,5 @@ +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -8,29 +10,29 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= diff --git a/data-feeds/beholder-job-spec-schemas.json b/data-feeds/beholder-job-spec-schemas.json new file mode 100644 index 00000000..f7e8647a --- /dev/null +++ b/data-feeds/beholder-job-spec-schemas.json @@ -0,0 +1,40 @@ +{ + "domain": "beholder__data-feeds.job-spec__messages", + "schemas": [ + { + "entity": "job_spec.v1.OCR2EVMRelayConfig", + "path": "job_spec/v1/ocr2_evm_relay_config.proto" + }, + { + "entity": "job_spec.v1.OCR2MedianPluginConfig", + "path": "job_spec/v1/ocr2_median_plugin_config.proto" + }, + { + "entity": "job_spec.v1.OCR2OracleSpecInfo", + "path": "job_spec/v1/ocr2_oracle_spec_info.proto", + "references": [ + { + "name": "job_spec/v1/ocr2_evm_relay_config.proto", + "entity": "job_spec.v1.OCR2EVMRelayConfig", + "path": "job_spec/v1/ocr2_evm_relay_config.proto" + }, + { + "name": "job_spec/v1/ocr2_median_plugin_config.proto", + "entity": "job_spec.v1.OCR2MedianPluginConfig", + "path": "job_spec/v1/ocr2_median_plugin_config.proto" + } + ] + }, + { + "entity": "job_spec.v1.JobSpecEvent", + "path": "job_spec/v1/job_spec_event.proto", + "references": [ + { + "name": "job_spec/v1/ocr2_oracle_spec_info.proto", + "entity": "job_spec.v1.OCR2OracleSpecInfo", + "path": "job_spec/v1/ocr2_oracle_spec_info.proto" + } + ] + } + ] +} diff --git a/data-feeds/chip-job-spec-schemas.json b/data-feeds/chip-job-spec-schemas.json new file mode 100644 index 00000000..eb419680 --- /dev/null +++ b/data-feeds/chip-job-spec-schemas.json @@ -0,0 +1,40 @@ +{ + "domain": "data-feeds.job-spec", + "schemas": [ + { + "entity": "job_spec.v1.OCR2EVMRelayConfig", + "path": "job_spec/v1/ocr2_evm_relay_config.proto" + }, + { + "entity": "job_spec.v1.OCR2MedianPluginConfig", + "path": "job_spec/v1/ocr2_median_plugin_config.proto" + }, + { + "entity": "job_spec.v1.OCR2OracleSpecInfo", + "path": "job_spec/v1/ocr2_oracle_spec_info.proto", + "references": [ + { + "name": "job_spec/v1/ocr2_evm_relay_config.proto", + "entity": "job_spec.v1.OCR2EVMRelayConfig", + "path": "job_spec/v1/ocr2_evm_relay_config.proto" + }, + { + "name": "job_spec/v1/ocr2_median_plugin_config.proto", + "entity": "job_spec.v1.OCR2MedianPluginConfig", + "path": "job_spec/v1/ocr2_median_plugin_config.proto" + } + ] + }, + { + "entity": "job_spec.v1.JobSpecEvent", + "path": "job_spec/v1/job_spec_event.proto", + "references": [ + { + "name": "job_spec/v1/ocr2_oracle_spec_info.proto", + "entity": "job_spec.v1.OCR2OracleSpecInfo", + "path": "job_spec/v1/ocr2_oracle_spec_info.proto" + } + ] + } + ] +} diff --git a/data-feeds/chip-schemas.json b/data-feeds/chip-schemas.json new file mode 100644 index 00000000..14e26bf1 --- /dev/null +++ b/data-feeds/chip-schemas.json @@ -0,0 +1,56 @@ +{ + "domain": "data-feeds", + "schemas": [ + { + "entity": "bridge_status.v1.JobInfo", + "path": "bridge_status/v1/job_info.proto" + }, + { + "entity": "bridge_status.v1.RuntimeInfo", + "path": "bridge_status/v1/runtime_info.proto" + }, + { + "entity": "bridge_status.v1.MetricsInfo", + "path": "bridge_status/v1/metrics_info.proto" + }, + { + "entity": "bridge_status.v1.EndpointInfo", + "path": "bridge_status/v1/endpoint_info.proto" + }, + { + "entity": "bridge_status.v1.ConfigurationItem", + "path": "bridge_status/v1/configuration_item.proto" + }, + { + "entity": "bridge_status.v1.BridgeStatusEvent", + "path": "bridge_status/v1/bridge_status_event.proto", + "references": [ + { + "name": "bridge_status/v1/job_info.proto", + "entity": "bridge_status.v1.JobInfo", + "path": "bridge_status/v1/job_info.proto" + }, + { + "name": "bridge_status/v1/runtime_info.proto", + "entity": "bridge_status.v1.RuntimeInfo", + "path": "bridge_status/v1/runtime_info.proto" + }, + { + "name": "bridge_status/v1/metrics_info.proto", + "entity": "bridge_status.v1.MetricsInfo", + "path": "bridge_status/v1/metrics_info.proto" + }, + { + "name": "bridge_status/v1/endpoint_info.proto", + "entity": "bridge_status.v1.EndpointInfo", + "path": "bridge_status/v1/endpoint_info.proto" + }, + { + "name": "bridge_status/v1/configuration_item.proto", + "entity": "bridge_status.v1.ConfigurationItem", + "path": "bridge_status/v1/configuration_item.proto" + } + ] + } + ] +} diff --git a/data-feeds/generate.go b/data-feeds/generate.go index 47106a56..c3250138 100644 --- a/data-feeds/generate.go +++ b/data-feeds/generate.go @@ -6,3 +6,7 @@ package data_feeds //go:generate protoc --proto_path=. --go_out=. --go_opt=paths=source_relative ./bridge_status/v1/metrics_info.proto //go:generate protoc --proto_path=. --go_out=. --go_opt=paths=source_relative ./bridge_status/v1/endpoint_info.proto //go:generate protoc --proto_path=. --go_out=. --go_opt=paths=source_relative ./bridge_status/v1/configuration_item.proto +//go:generate protoc --proto_path=. --go_out=. --go_opt=paths=source_relative ./job_spec/v1/job_spec_event.proto +//go:generate protoc --proto_path=. --go_out=. --go_opt=paths=source_relative ./job_spec/v1/ocr2_oracle_spec_info.proto +//go:generate protoc --proto_path=. --go_out=. --go_opt=paths=source_relative ./job_spec/v1/ocr2_evm_relay_config.proto +//go:generate protoc --proto_path=. --go_out=. --go_opt=paths=source_relative ./job_spec/v1/ocr2_median_plugin_config.proto diff --git a/data-feeds/job_spec/v1/job_spec_event.pb.go b/data-feeds/job_spec/v1/job_spec_event.pb.go new file mode 100644 index 00000000..b40984bc --- /dev/null +++ b/data-feeds/job_spec/v1/job_spec_event.pb.go @@ -0,0 +1,394 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v5.29.3 +// source: job_spec/v1/job_spec_event.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +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) +) + +// EmissionTrigger is the reason a JobSpecEvent was emitted. +type EmissionTrigger int32 + +const ( + EmissionTrigger_EMISSION_TRIGGER_UNSPECIFIED EmissionTrigger = 0 + EmissionTrigger_EMISSION_TRIGGER_HEARTBEAT EmissionTrigger = 1 + EmissionTrigger_EMISSION_TRIGGER_CREATE EmissionTrigger = 2 + EmissionTrigger_EMISSION_TRIGGER_DELETE EmissionTrigger = 3 +) + +// Enum value maps for EmissionTrigger. +var ( + EmissionTrigger_name = map[int32]string{ + 0: "EMISSION_TRIGGER_UNSPECIFIED", + 1: "EMISSION_TRIGGER_HEARTBEAT", + 2: "EMISSION_TRIGGER_CREATE", + 3: "EMISSION_TRIGGER_DELETE", + } + EmissionTrigger_value = map[string]int32{ + "EMISSION_TRIGGER_UNSPECIFIED": 0, + "EMISSION_TRIGGER_HEARTBEAT": 1, + "EMISSION_TRIGGER_CREATE": 2, + "EMISSION_TRIGGER_DELETE": 3, + } +) + +func (x EmissionTrigger) Enum() *EmissionTrigger { + p := new(EmissionTrigger) + *p = x + return p +} + +func (x EmissionTrigger) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (EmissionTrigger) Descriptor() protoreflect.EnumDescriptor { + return file_job_spec_v1_job_spec_event_proto_enumTypes[0].Descriptor() +} + +func (EmissionTrigger) Type() protoreflect.EnumType { + return &file_job_spec_v1_job_spec_event_proto_enumTypes[0] +} + +func (x EmissionTrigger) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use EmissionTrigger.Descriptor instead. +func (EmissionTrigger) EnumDescriptor() ([]byte, []int) { + return file_job_spec_v1_job_spec_event_proto_rawDescGZIP(), []int{0} +} + +// JobSpecEvent carries a job's spec, emitted on heartbeat, create, and delete. +type JobSpecEvent struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Job identity + ExternalJobId string `protobuf:"bytes,1,opt,name=external_job_id,json=externalJobId,proto3" json:"external_job_id,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + JobType string `protobuf:"bytes,4,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"` + SchemaVersion uint32 `protobuf:"varint,5,opt,name=schema_version,json=schemaVersion,proto3" json:"schema_version,omitempty"` + GasLimit *uint32 `protobuf:"varint,6,opt,name=gas_limit,json=gasLimit,proto3,oneof" json:"gas_limit,omitempty"` + ForwardingAllowed bool `protobuf:"varint,7,opt,name=forwarding_allowed,json=forwardingAllowed,proto3" json:"forwarding_allowed,omitempty"` + StreamId *uint32 `protobuf:"varint,8,opt,name=stream_id,json=streamId,proto3,oneof" json:"stream_id,omitempty"` + CreatedAt string `protobuf:"bytes,10,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + // Observation pipeline + ObservationSource string `protobuf:"bytes,11,opt,name=observation_source,json=observationSource,proto3" json:"observation_source,omitempty"` + // Top-level bridge names in the observation pipeline. + BridgeNames []string `protobuf:"bytes,13,rep,name=bridge_names,json=bridgeNames,proto3" json:"bridge_names,omitempty"` + // Proposal lifecycle: zero/empty for jobs not managed by a Feeds Manager. + FeedsManagerId int64 `protobuf:"varint,14,opt,name=feeds_manager_id,json=feedsManagerId,proto3" json:"feeds_manager_id,omitempty"` + RemoteUuid string `protobuf:"bytes,15,opt,name=remote_uuid,json=remoteUuid,proto3" json:"remote_uuid,omitempty"` + SpecVersion int32 `protobuf:"varint,16,opt,name=spec_version,json=specVersion,proto3" json:"spec_version,omitempty"` + ProposedAt string `protobuf:"bytes,17,opt,name=proposed_at,json=proposedAt,proto3" json:"proposed_at,omitempty"` + ApprovedAt string `protobuf:"bytes,18,opt,name=approved_at,json=approvedAt,proto3" json:"approved_at,omitempty"` + AcceptLatencySeconds float64 `protobuf:"fixed64,19,opt,name=accept_latency_seconds,json=acceptLatencySeconds,proto3" json:"accept_latency_seconds,omitempty"` + // OCR2-only; absent for other job types. + Ocr2OracleSpec *OCR2OracleSpecInfo `protobuf:"bytes,20,opt,name=ocr2_oracle_spec,json=ocr2OracleSpec,proto3" json:"ocr2_oracle_spec,omitempty"` + // Node identity + CsaPublicKey string `protobuf:"bytes,21,opt,name=csa_public_key,json=csaPublicKey,proto3" json:"csa_public_key,omitempty"` + NodeVersion string `protobuf:"bytes,22,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Hostname string `protobuf:"bytes,23,opt,name=hostname,proto3" json:"hostname,omitempty"` + // Event metadata + EmissionTrigger EmissionTrigger `protobuf:"varint,24,opt,name=emission_trigger,json=emissionTrigger,proto3,enum=job_spec.v1.EmissionTrigger" json:"emission_trigger,omitempty"` + Timestamp string `protobuf:"bytes,25,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JobSpecEvent) Reset() { + *x = JobSpecEvent{} + mi := &file_job_spec_v1_job_spec_event_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JobSpecEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JobSpecEvent) ProtoMessage() {} + +func (x *JobSpecEvent) ProtoReflect() protoreflect.Message { + mi := &file_job_spec_v1_job_spec_event_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 JobSpecEvent.ProtoReflect.Descriptor instead. +func (*JobSpecEvent) Descriptor() ([]byte, []int) { + return file_job_spec_v1_job_spec_event_proto_rawDescGZIP(), []int{0} +} + +func (x *JobSpecEvent) GetExternalJobId() string { + if x != nil { + return x.ExternalJobId + } + return "" +} + +func (x *JobSpecEvent) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *JobSpecEvent) GetJobType() string { + if x != nil { + return x.JobType + } + return "" +} + +func (x *JobSpecEvent) GetSchemaVersion() uint32 { + if x != nil { + return x.SchemaVersion + } + return 0 +} + +func (x *JobSpecEvent) GetGasLimit() uint32 { + if x != nil && x.GasLimit != nil { + return *x.GasLimit + } + return 0 +} + +func (x *JobSpecEvent) GetForwardingAllowed() bool { + if x != nil { + return x.ForwardingAllowed + } + return false +} + +func (x *JobSpecEvent) GetStreamId() uint32 { + if x != nil && x.StreamId != nil { + return *x.StreamId + } + return 0 +} + +func (x *JobSpecEvent) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + +func (x *JobSpecEvent) GetObservationSource() string { + if x != nil { + return x.ObservationSource + } + return "" +} + +func (x *JobSpecEvent) GetBridgeNames() []string { + if x != nil { + return x.BridgeNames + } + return nil +} + +func (x *JobSpecEvent) GetFeedsManagerId() int64 { + if x != nil { + return x.FeedsManagerId + } + return 0 +} + +func (x *JobSpecEvent) GetRemoteUuid() string { + if x != nil { + return x.RemoteUuid + } + return "" +} + +func (x *JobSpecEvent) GetSpecVersion() int32 { + if x != nil { + return x.SpecVersion + } + return 0 +} + +func (x *JobSpecEvent) GetProposedAt() string { + if x != nil { + return x.ProposedAt + } + return "" +} + +func (x *JobSpecEvent) GetApprovedAt() string { + if x != nil { + return x.ApprovedAt + } + return "" +} + +func (x *JobSpecEvent) GetAcceptLatencySeconds() float64 { + if x != nil { + return x.AcceptLatencySeconds + } + return 0 +} + +func (x *JobSpecEvent) GetOcr2OracleSpec() *OCR2OracleSpecInfo { + if x != nil { + return x.Ocr2OracleSpec + } + return nil +} + +func (x *JobSpecEvent) GetCsaPublicKey() string { + if x != nil { + return x.CsaPublicKey + } + return "" +} + +func (x *JobSpecEvent) GetNodeVersion() string { + if x != nil { + return x.NodeVersion + } + return "" +} + +func (x *JobSpecEvent) GetHostname() string { + if x != nil { + return x.Hostname + } + return "" +} + +func (x *JobSpecEvent) GetEmissionTrigger() EmissionTrigger { + if x != nil { + return x.EmissionTrigger + } + return EmissionTrigger_EMISSION_TRIGGER_UNSPECIFIED +} + +func (x *JobSpecEvent) GetTimestamp() string { + if x != nil { + return x.Timestamp + } + return "" +} + +var File_job_spec_v1_job_spec_event_proto protoreflect.FileDescriptor + +const file_job_spec_v1_job_spec_event_proto_rawDesc = "" + + "\n" + + " job_spec/v1/job_spec_event.proto\x12\vjob_spec.v1\x1a'job_spec/v1/ocr2_oracle_spec_info.proto\"\x89\a\n" + + "\fJobSpecEvent\x12&\n" + + "\x0fexternal_job_id\x18\x01 \x01(\tR\rexternalJobId\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n" + + "\bjob_type\x18\x04 \x01(\tR\ajobType\x12%\n" + + "\x0eschema_version\x18\x05 \x01(\rR\rschemaVersion\x12 \n" + + "\tgas_limit\x18\x06 \x01(\rH\x00R\bgasLimit\x88\x01\x01\x12-\n" + + "\x12forwarding_allowed\x18\a \x01(\bR\x11forwardingAllowed\x12 \n" + + "\tstream_id\x18\b \x01(\rH\x01R\bstreamId\x88\x01\x01\x12\x1d\n" + + "\n" + + "created_at\x18\n" + + " \x01(\tR\tcreatedAt\x12-\n" + + "\x12observation_source\x18\v \x01(\tR\x11observationSource\x12!\n" + + "\fbridge_names\x18\r \x03(\tR\vbridgeNames\x12(\n" + + "\x10feeds_manager_id\x18\x0e \x01(\x03R\x0efeedsManagerId\x12\x1f\n" + + "\vremote_uuid\x18\x0f \x01(\tR\n" + + "remoteUuid\x12!\n" + + "\fspec_version\x18\x10 \x01(\x05R\vspecVersion\x12\x1f\n" + + "\vproposed_at\x18\x11 \x01(\tR\n" + + "proposedAt\x12\x1f\n" + + "\vapproved_at\x18\x12 \x01(\tR\n" + + "approvedAt\x124\n" + + "\x16accept_latency_seconds\x18\x13 \x01(\x01R\x14acceptLatencySeconds\x12I\n" + + "\x10ocr2_oracle_spec\x18\x14 \x01(\v2\x1f.job_spec.v1.OCR2OracleSpecInfoR\x0eocr2OracleSpec\x12$\n" + + "\x0ecsa_public_key\x18\x15 \x01(\tR\fcsaPublicKey\x12!\n" + + "\fnode_version\x18\x16 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\bhostname\x18\x17 \x01(\tR\bhostname\x12G\n" + + "\x10emission_trigger\x18\x18 \x01(\x0e2\x1c.job_spec.v1.EmissionTriggerR\x0femissionTrigger\x12\x1c\n" + + "\ttimestamp\x18\x19 \x01(\tR\ttimestampB\f\n" + + "\n" + + "_gas_limitB\f\n" + + "\n" + + "_stream_id*\x8d\x01\n" + + "\x0fEmissionTrigger\x12 \n" + + "\x1cEMISSION_TRIGGER_UNSPECIFIED\x10\x00\x12\x1e\n" + + "\x1aEMISSION_TRIGGER_HEARTBEAT\x10\x01\x12\x1b\n" + + "\x17EMISSION_TRIGGER_CREATE\x10\x02\x12\x1b\n" + + "\x17EMISSION_TRIGGER_DELETE\x10\x03BEZCgithub.com/smartcontractkit/chainlink-protos/data-feeds/job_spec/v1b\x06proto3" + +var ( + file_job_spec_v1_job_spec_event_proto_rawDescOnce sync.Once + file_job_spec_v1_job_spec_event_proto_rawDescData []byte +) + +func file_job_spec_v1_job_spec_event_proto_rawDescGZIP() []byte { + file_job_spec_v1_job_spec_event_proto_rawDescOnce.Do(func() { + file_job_spec_v1_job_spec_event_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_job_spec_v1_job_spec_event_proto_rawDesc), len(file_job_spec_v1_job_spec_event_proto_rawDesc))) + }) + return file_job_spec_v1_job_spec_event_proto_rawDescData +} + +var file_job_spec_v1_job_spec_event_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_job_spec_v1_job_spec_event_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_job_spec_v1_job_spec_event_proto_goTypes = []any{ + (EmissionTrigger)(0), // 0: job_spec.v1.EmissionTrigger + (*JobSpecEvent)(nil), // 1: job_spec.v1.JobSpecEvent + (*OCR2OracleSpecInfo)(nil), // 2: job_spec.v1.OCR2OracleSpecInfo +} +var file_job_spec_v1_job_spec_event_proto_depIdxs = []int32{ + 2, // 0: job_spec.v1.JobSpecEvent.ocr2_oracle_spec:type_name -> job_spec.v1.OCR2OracleSpecInfo + 0, // 1: job_spec.v1.JobSpecEvent.emission_trigger:type_name -> job_spec.v1.EmissionTrigger + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_job_spec_v1_job_spec_event_proto_init() } +func file_job_spec_v1_job_spec_event_proto_init() { + if File_job_spec_v1_job_spec_event_proto != nil { + return + } + file_job_spec_v1_ocr2_oracle_spec_info_proto_init() + file_job_spec_v1_job_spec_event_proto_msgTypes[0].OneofWrappers = []any{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_job_spec_v1_job_spec_event_proto_rawDesc), len(file_job_spec_v1_job_spec_event_proto_rawDesc)), + NumEnums: 1, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_job_spec_v1_job_spec_event_proto_goTypes, + DependencyIndexes: file_job_spec_v1_job_spec_event_proto_depIdxs, + EnumInfos: file_job_spec_v1_job_spec_event_proto_enumTypes, + MessageInfos: file_job_spec_v1_job_spec_event_proto_msgTypes, + }.Build() + File_job_spec_v1_job_spec_event_proto = out.File + file_job_spec_v1_job_spec_event_proto_goTypes = nil + file_job_spec_v1_job_spec_event_proto_depIdxs = nil +} diff --git a/data-feeds/job_spec/v1/job_spec_event.proto b/data-feeds/job_spec/v1/job_spec_event.proto new file mode 100644 index 00000000..31e89677 --- /dev/null +++ b/data-feeds/job_spec/v1/job_spec_event.proto @@ -0,0 +1,54 @@ +syntax = "proto3"; + +package job_spec.v1; + +import "job_spec/v1/ocr2_oracle_spec_info.proto"; + +option go_package = "github.com/smartcontractkit/chainlink-protos/data-feeds/job_spec/v1"; + +// JobSpecEvent carries a job's spec, emitted on heartbeat, create, and delete. +message JobSpecEvent { + // Job identity + string external_job_id = 1; + string name = 3; + string job_type = 4; + uint32 schema_version = 5; + optional uint32 gas_limit = 6; + bool forwarding_allowed = 7; + optional uint32 stream_id = 8; + string created_at = 10; + + // Observation pipeline + string observation_source = 11; + + // Top-level bridge names in the observation pipeline. + repeated string bridge_names = 13; + + // Proposal lifecycle: zero/empty for jobs not managed by a Feeds Manager. + int64 feeds_manager_id = 14; + string remote_uuid = 15; + int32 spec_version = 16; + string proposed_at = 17; + string approved_at = 18; + double accept_latency_seconds = 19; + + // OCR2-only; absent for other job types. + OCR2OracleSpecInfo ocr2_oracle_spec = 20; + + // Node identity + string csa_public_key = 21; + string node_version = 22; + string hostname = 23; + + // Event metadata + EmissionTrigger emission_trigger = 24; + string timestamp = 25; +} + +// EmissionTrigger is the reason a JobSpecEvent was emitted. +enum EmissionTrigger { + EMISSION_TRIGGER_UNSPECIFIED = 0; + EMISSION_TRIGGER_HEARTBEAT = 1; + EMISSION_TRIGGER_CREATE = 2; + EMISSION_TRIGGER_DELETE = 3; +} diff --git a/data-feeds/job_spec/v1/ocr2_evm_relay_config.pb.go b/data-feeds/job_spec/v1/ocr2_evm_relay_config.pb.go new file mode 100644 index 00000000..c88d0360 --- /dev/null +++ b/data-feeds/job_spec/v1/ocr2_evm_relay_config.pb.go @@ -0,0 +1,205 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v5.29.3 +// source: job_spec/v1/ocr2_evm_relay_config.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +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) +) + +// OCR2EVMRelayConfig is a typed view of the EVM relay config JSON. +type OCR2EVMRelayConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + FromBlock *uint64 `protobuf:"varint,2,opt,name=from_block,json=fromBlock,proto3,oneof" json:"from_block,omitempty"` + EffectiveTransmitterId string `protobuf:"bytes,3,opt,name=effective_transmitter_id,json=effectiveTransmitterId,proto3" json:"effective_transmitter_id,omitempty"` + EnableDualTransmission *bool `protobuf:"varint,4,opt,name=enable_dual_transmission,json=enableDualTransmission,proto3,oneof" json:"enable_dual_transmission,omitempty"` + EnableTriggerCapability *bool `protobuf:"varint,5,opt,name=enable_trigger_capability,json=enableTriggerCapability,proto3,oneof" json:"enable_trigger_capability,omitempty"` + LloDonId *uint64 `protobuf:"varint,6,opt,name=llo_don_id,json=lloDonId,proto3,oneof" json:"llo_don_id,omitempty"` + FeedId *string `protobuf:"bytes,7,opt,name=feed_id,json=feedId,proto3,oneof" json:"feed_id,omitempty"` + SendingKeys []string `protobuf:"bytes,8,rep,name=sending_keys,json=sendingKeys,proto3" json:"sending_keys,omitempty"` + ProviderType *string `protobuf:"bytes,9,opt,name=provider_type,json=providerType,proto3,oneof" json:"provider_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OCR2EVMRelayConfig) Reset() { + *x = OCR2EVMRelayConfig{} + mi := &file_job_spec_v1_ocr2_evm_relay_config_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OCR2EVMRelayConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR2EVMRelayConfig) ProtoMessage() {} + +func (x *OCR2EVMRelayConfig) ProtoReflect() protoreflect.Message { + mi := &file_job_spec_v1_ocr2_evm_relay_config_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 OCR2EVMRelayConfig.ProtoReflect.Descriptor instead. +func (*OCR2EVMRelayConfig) Descriptor() ([]byte, []int) { + return file_job_spec_v1_ocr2_evm_relay_config_proto_rawDescGZIP(), []int{0} +} + +func (x *OCR2EVMRelayConfig) GetChainId() string { + if x != nil { + return x.ChainId + } + return "" +} + +func (x *OCR2EVMRelayConfig) GetFromBlock() uint64 { + if x != nil && x.FromBlock != nil { + return *x.FromBlock + } + return 0 +} + +func (x *OCR2EVMRelayConfig) GetEffectiveTransmitterId() string { + if x != nil { + return x.EffectiveTransmitterId + } + return "" +} + +func (x *OCR2EVMRelayConfig) GetEnableDualTransmission() bool { + if x != nil && x.EnableDualTransmission != nil { + return *x.EnableDualTransmission + } + return false +} + +func (x *OCR2EVMRelayConfig) GetEnableTriggerCapability() bool { + if x != nil && x.EnableTriggerCapability != nil { + return *x.EnableTriggerCapability + } + return false +} + +func (x *OCR2EVMRelayConfig) GetLloDonId() uint64 { + if x != nil && x.LloDonId != nil { + return *x.LloDonId + } + return 0 +} + +func (x *OCR2EVMRelayConfig) GetFeedId() string { + if x != nil && x.FeedId != nil { + return *x.FeedId + } + return "" +} + +func (x *OCR2EVMRelayConfig) GetSendingKeys() []string { + if x != nil { + return x.SendingKeys + } + return nil +} + +func (x *OCR2EVMRelayConfig) GetProviderType() string { + if x != nil && x.ProviderType != nil { + return *x.ProviderType + } + return "" +} + +var File_job_spec_v1_ocr2_evm_relay_config_proto protoreflect.FileDescriptor + +const file_job_spec_v1_ocr2_evm_relay_config_proto_rawDesc = "" + + "\n" + + "'job_spec/v1/ocr2_evm_relay_config.proto\x12\vjob_spec.v1\"\x92\x04\n" + + "\x12OCR2EVMRelayConfig\x12\x19\n" + + "\bchain_id\x18\x01 \x01(\tR\achainId\x12\"\n" + + "\n" + + "from_block\x18\x02 \x01(\x04H\x00R\tfromBlock\x88\x01\x01\x128\n" + + "\x18effective_transmitter_id\x18\x03 \x01(\tR\x16effectiveTransmitterId\x12=\n" + + "\x18enable_dual_transmission\x18\x04 \x01(\bH\x01R\x16enableDualTransmission\x88\x01\x01\x12?\n" + + "\x19enable_trigger_capability\x18\x05 \x01(\bH\x02R\x17enableTriggerCapability\x88\x01\x01\x12!\n" + + "\n" + + "llo_don_id\x18\x06 \x01(\x04H\x03R\blloDonId\x88\x01\x01\x12\x1c\n" + + "\afeed_id\x18\a \x01(\tH\x04R\x06feedId\x88\x01\x01\x12!\n" + + "\fsending_keys\x18\b \x03(\tR\vsendingKeys\x12(\n" + + "\rprovider_type\x18\t \x01(\tH\x05R\fproviderType\x88\x01\x01B\r\n" + + "\v_from_blockB\x1b\n" + + "\x19_enable_dual_transmissionB\x1c\n" + + "\x1a_enable_trigger_capabilityB\r\n" + + "\v_llo_don_idB\n" + + "\n" + + "\b_feed_idB\x10\n" + + "\x0e_provider_typeBEZCgithub.com/smartcontractkit/chainlink-protos/data-feeds/job_spec/v1b\x06proto3" + +var ( + file_job_spec_v1_ocr2_evm_relay_config_proto_rawDescOnce sync.Once + file_job_spec_v1_ocr2_evm_relay_config_proto_rawDescData []byte +) + +func file_job_spec_v1_ocr2_evm_relay_config_proto_rawDescGZIP() []byte { + file_job_spec_v1_ocr2_evm_relay_config_proto_rawDescOnce.Do(func() { + file_job_spec_v1_ocr2_evm_relay_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_job_spec_v1_ocr2_evm_relay_config_proto_rawDesc), len(file_job_spec_v1_ocr2_evm_relay_config_proto_rawDesc))) + }) + return file_job_spec_v1_ocr2_evm_relay_config_proto_rawDescData +} + +var file_job_spec_v1_ocr2_evm_relay_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_job_spec_v1_ocr2_evm_relay_config_proto_goTypes = []any{ + (*OCR2EVMRelayConfig)(nil), // 0: job_spec.v1.OCR2EVMRelayConfig +} +var file_job_spec_v1_ocr2_evm_relay_config_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_job_spec_v1_ocr2_evm_relay_config_proto_init() } +func file_job_spec_v1_ocr2_evm_relay_config_proto_init() { + if File_job_spec_v1_ocr2_evm_relay_config_proto != nil { + return + } + file_job_spec_v1_ocr2_evm_relay_config_proto_msgTypes[0].OneofWrappers = []any{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_job_spec_v1_ocr2_evm_relay_config_proto_rawDesc), len(file_job_spec_v1_ocr2_evm_relay_config_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_job_spec_v1_ocr2_evm_relay_config_proto_goTypes, + DependencyIndexes: file_job_spec_v1_ocr2_evm_relay_config_proto_depIdxs, + MessageInfos: file_job_spec_v1_ocr2_evm_relay_config_proto_msgTypes, + }.Build() + File_job_spec_v1_ocr2_evm_relay_config_proto = out.File + file_job_spec_v1_ocr2_evm_relay_config_proto_goTypes = nil + file_job_spec_v1_ocr2_evm_relay_config_proto_depIdxs = nil +} diff --git a/data-feeds/job_spec/v1/ocr2_evm_relay_config.proto b/data-feeds/job_spec/v1/ocr2_evm_relay_config.proto new file mode 100644 index 00000000..b2392aaf --- /dev/null +++ b/data-feeds/job_spec/v1/ocr2_evm_relay_config.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; + +package job_spec.v1; + +option go_package = "github.com/smartcontractkit/chainlink-protos/data-feeds/job_spec/v1"; + +// OCR2EVMRelayConfig is a typed view of the EVM relay config JSON. +message OCR2EVMRelayConfig { + string chain_id = 1; + optional uint64 from_block = 2; + string effective_transmitter_id = 3; + optional bool enable_dual_transmission = 4; + optional bool enable_trigger_capability = 5; + optional uint64 llo_don_id = 6; + optional string feed_id = 7; + repeated string sending_keys = 8; + optional string provider_type = 9; +} diff --git a/data-feeds/job_spec/v1/ocr2_median_plugin_config.pb.go b/data-feeds/job_spec/v1/ocr2_median_plugin_config.pb.go new file mode 100644 index 00000000..ec6c8917 --- /dev/null +++ b/data-feeds/job_spec/v1/ocr2_median_plugin_config.pb.go @@ -0,0 +1,123 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v5.29.3 +// source: job_spec/v1/ocr2_median_plugin_config.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +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) +) + +// OCR2MedianPluginConfig mirrors median/config.PluginConfig. +type OCR2MedianPluginConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + JuelsPerFeeCoinSource string `protobuf:"bytes,1,opt,name=juels_per_fee_coin_source,json=juelsPerFeeCoinSource,proto3" json:"juels_per_fee_coin_source,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OCR2MedianPluginConfig) Reset() { + *x = OCR2MedianPluginConfig{} + mi := &file_job_spec_v1_ocr2_median_plugin_config_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OCR2MedianPluginConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR2MedianPluginConfig) ProtoMessage() {} + +func (x *OCR2MedianPluginConfig) ProtoReflect() protoreflect.Message { + mi := &file_job_spec_v1_ocr2_median_plugin_config_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 OCR2MedianPluginConfig.ProtoReflect.Descriptor instead. +func (*OCR2MedianPluginConfig) Descriptor() ([]byte, []int) { + return file_job_spec_v1_ocr2_median_plugin_config_proto_rawDescGZIP(), []int{0} +} + +func (x *OCR2MedianPluginConfig) GetJuelsPerFeeCoinSource() string { + if x != nil { + return x.JuelsPerFeeCoinSource + } + return "" +} + +var File_job_spec_v1_ocr2_median_plugin_config_proto protoreflect.FileDescriptor + +const file_job_spec_v1_ocr2_median_plugin_config_proto_rawDesc = "" + + "\n" + + "+job_spec/v1/ocr2_median_plugin_config.proto\x12\vjob_spec.v1\"R\n" + + "\x16OCR2MedianPluginConfig\x128\n" + + "\x19juels_per_fee_coin_source\x18\x01 \x01(\tR\x15juelsPerFeeCoinSourceBEZCgithub.com/smartcontractkit/chainlink-protos/data-feeds/job_spec/v1b\x06proto3" + +var ( + file_job_spec_v1_ocr2_median_plugin_config_proto_rawDescOnce sync.Once + file_job_spec_v1_ocr2_median_plugin_config_proto_rawDescData []byte +) + +func file_job_spec_v1_ocr2_median_plugin_config_proto_rawDescGZIP() []byte { + file_job_spec_v1_ocr2_median_plugin_config_proto_rawDescOnce.Do(func() { + file_job_spec_v1_ocr2_median_plugin_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_job_spec_v1_ocr2_median_plugin_config_proto_rawDesc), len(file_job_spec_v1_ocr2_median_plugin_config_proto_rawDesc))) + }) + return file_job_spec_v1_ocr2_median_plugin_config_proto_rawDescData +} + +var file_job_spec_v1_ocr2_median_plugin_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_job_spec_v1_ocr2_median_plugin_config_proto_goTypes = []any{ + (*OCR2MedianPluginConfig)(nil), // 0: job_spec.v1.OCR2MedianPluginConfig +} +var file_job_spec_v1_ocr2_median_plugin_config_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_job_spec_v1_ocr2_median_plugin_config_proto_init() } +func file_job_spec_v1_ocr2_median_plugin_config_proto_init() { + if File_job_spec_v1_ocr2_median_plugin_config_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_job_spec_v1_ocr2_median_plugin_config_proto_rawDesc), len(file_job_spec_v1_ocr2_median_plugin_config_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_job_spec_v1_ocr2_median_plugin_config_proto_goTypes, + DependencyIndexes: file_job_spec_v1_ocr2_median_plugin_config_proto_depIdxs, + MessageInfos: file_job_spec_v1_ocr2_median_plugin_config_proto_msgTypes, + }.Build() + File_job_spec_v1_ocr2_median_plugin_config_proto = out.File + file_job_spec_v1_ocr2_median_plugin_config_proto_goTypes = nil + file_job_spec_v1_ocr2_median_plugin_config_proto_depIdxs = nil +} diff --git a/data-feeds/job_spec/v1/ocr2_median_plugin_config.proto b/data-feeds/job_spec/v1/ocr2_median_plugin_config.proto new file mode 100644 index 00000000..c01ae73b --- /dev/null +++ b/data-feeds/job_spec/v1/ocr2_median_plugin_config.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; + +package job_spec.v1; + +option go_package = "github.com/smartcontractkit/chainlink-protos/data-feeds/job_spec/v1"; + +// OCR2MedianPluginConfig mirrors median/config.PluginConfig. +message OCR2MedianPluginConfig { + string juels_per_fee_coin_source = 1; +} diff --git a/data-feeds/job_spec/v1/ocr2_oracle_spec_info.pb.go b/data-feeds/job_spec/v1/ocr2_oracle_spec_info.pb.go new file mode 100644 index 00000000..e2d0709d --- /dev/null +++ b/data-feeds/job_spec/v1/ocr2_oracle_spec_info.pb.go @@ -0,0 +1,230 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v5.29.3 +// source: job_spec/v1/ocr2_oracle_spec_info.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +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) +) + +// OCR2OracleSpecInfo mirrors job.OCR2OracleSpec. +type OCR2OracleSpecInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + ContractId string `protobuf:"bytes,1,opt,name=contract_id,json=contractId,proto3" json:"contract_id,omitempty"` + FeedId *string `protobuf:"bytes,2,opt,name=feed_id,json=feedId,proto3,oneof" json:"feed_id,omitempty"` + Relay string `protobuf:"bytes,3,opt,name=relay,proto3" json:"relay,omitempty"` + PluginType string `protobuf:"bytes,4,opt,name=plugin_type,json=pluginType,proto3" json:"plugin_type,omitempty"` + TransmitterId *string `protobuf:"bytes,5,opt,name=transmitter_id,json=transmitterId,proto3,oneof" json:"transmitter_id,omitempty"` + OcrKeyBundleId *string `protobuf:"bytes,6,opt,name=ocr_key_bundle_id,json=ocrKeyBundleId,proto3,oneof" json:"ocr_key_bundle_id,omitempty"` + CaptureEaTelemetry bool `protobuf:"varint,13,opt,name=capture_ea_telemetry,json=captureEaTelemetry,proto3" json:"capture_ea_telemetry,omitempty"` + // Raw JSON passthroughs are always populated and authoritative over the typed + // sub-messages below. + RelayConfigJson string `protobuf:"bytes,17,opt,name=relay_config_json,json=relayConfigJson,proto3" json:"relay_config_json,omitempty"` + PluginConfigJson string `protobuf:"bytes,18,opt,name=plugin_config_json,json=pluginConfigJson,proto3" json:"plugin_config_json,omitempty"` + // Populated when relay == "evm". + EvmRelayConfig *OCR2EVMRelayConfig `protobuf:"bytes,20,opt,name=evm_relay_config,json=evmRelayConfig,proto3" json:"evm_relay_config,omitempty"` + // Populated when plugin_type == "median". + MedianPluginConfig *OCR2MedianPluginConfig `protobuf:"bytes,21,opt,name=median_plugin_config,json=medianPluginConfig,proto3" json:"median_plugin_config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OCR2OracleSpecInfo) Reset() { + *x = OCR2OracleSpecInfo{} + mi := &file_job_spec_v1_ocr2_oracle_spec_info_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OCR2OracleSpecInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR2OracleSpecInfo) ProtoMessage() {} + +func (x *OCR2OracleSpecInfo) ProtoReflect() protoreflect.Message { + mi := &file_job_spec_v1_ocr2_oracle_spec_info_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 OCR2OracleSpecInfo.ProtoReflect.Descriptor instead. +func (*OCR2OracleSpecInfo) Descriptor() ([]byte, []int) { + return file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDescGZIP(), []int{0} +} + +func (x *OCR2OracleSpecInfo) GetContractId() string { + if x != nil { + return x.ContractId + } + return "" +} + +func (x *OCR2OracleSpecInfo) GetFeedId() string { + if x != nil && x.FeedId != nil { + return *x.FeedId + } + return "" +} + +func (x *OCR2OracleSpecInfo) GetRelay() string { + if x != nil { + return x.Relay + } + return "" +} + +func (x *OCR2OracleSpecInfo) GetPluginType() string { + if x != nil { + return x.PluginType + } + return "" +} + +func (x *OCR2OracleSpecInfo) GetTransmitterId() string { + if x != nil && x.TransmitterId != nil { + return *x.TransmitterId + } + return "" +} + +func (x *OCR2OracleSpecInfo) GetOcrKeyBundleId() string { + if x != nil && x.OcrKeyBundleId != nil { + return *x.OcrKeyBundleId + } + return "" +} + +func (x *OCR2OracleSpecInfo) GetCaptureEaTelemetry() bool { + if x != nil { + return x.CaptureEaTelemetry + } + return false +} + +func (x *OCR2OracleSpecInfo) GetRelayConfigJson() string { + if x != nil { + return x.RelayConfigJson + } + return "" +} + +func (x *OCR2OracleSpecInfo) GetPluginConfigJson() string { + if x != nil { + return x.PluginConfigJson + } + return "" +} + +func (x *OCR2OracleSpecInfo) GetEvmRelayConfig() *OCR2EVMRelayConfig { + if x != nil { + return x.EvmRelayConfig + } + return nil +} + +func (x *OCR2OracleSpecInfo) GetMedianPluginConfig() *OCR2MedianPluginConfig { + if x != nil { + return x.MedianPluginConfig + } + return nil +} + +var File_job_spec_v1_ocr2_oracle_spec_info_proto protoreflect.FileDescriptor + +const file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDesc = "" + + "\n" + + "'job_spec/v1/ocr2_oracle_spec_info.proto\x12\vjob_spec.v1\x1a'job_spec/v1/ocr2_evm_relay_config.proto\x1a+job_spec/v1/ocr2_median_plugin_config.proto\"\xc9\x04\n" + + "\x12OCR2OracleSpecInfo\x12\x1f\n" + + "\vcontract_id\x18\x01 \x01(\tR\n" + + "contractId\x12\x1c\n" + + "\afeed_id\x18\x02 \x01(\tH\x00R\x06feedId\x88\x01\x01\x12\x14\n" + + "\x05relay\x18\x03 \x01(\tR\x05relay\x12\x1f\n" + + "\vplugin_type\x18\x04 \x01(\tR\n" + + "pluginType\x12*\n" + + "\x0etransmitter_id\x18\x05 \x01(\tH\x01R\rtransmitterId\x88\x01\x01\x12.\n" + + "\x11ocr_key_bundle_id\x18\x06 \x01(\tH\x02R\x0eocrKeyBundleId\x88\x01\x01\x120\n" + + "\x14capture_ea_telemetry\x18\r \x01(\bR\x12captureEaTelemetry\x12*\n" + + "\x11relay_config_json\x18\x11 \x01(\tR\x0frelayConfigJson\x12,\n" + + "\x12plugin_config_json\x18\x12 \x01(\tR\x10pluginConfigJson\x12I\n" + + "\x10evm_relay_config\x18\x14 \x01(\v2\x1f.job_spec.v1.OCR2EVMRelayConfigR\x0eevmRelayConfig\x12U\n" + + "\x14median_plugin_config\x18\x15 \x01(\v2#.job_spec.v1.OCR2MedianPluginConfigR\x12medianPluginConfigB\n" + + "\n" + + "\b_feed_idB\x11\n" + + "\x0f_transmitter_idB\x14\n" + + "\x12_ocr_key_bundle_idBEZCgithub.com/smartcontractkit/chainlink-protos/data-feeds/job_spec/v1b\x06proto3" + +var ( + file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDescOnce sync.Once + file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDescData []byte +) + +func file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDescGZIP() []byte { + file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDescOnce.Do(func() { + file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDesc), len(file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDesc))) + }) + return file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDescData +} + +var file_job_spec_v1_ocr2_oracle_spec_info_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_job_spec_v1_ocr2_oracle_spec_info_proto_goTypes = []any{ + (*OCR2OracleSpecInfo)(nil), // 0: job_spec.v1.OCR2OracleSpecInfo + (*OCR2EVMRelayConfig)(nil), // 1: job_spec.v1.OCR2EVMRelayConfig + (*OCR2MedianPluginConfig)(nil), // 2: job_spec.v1.OCR2MedianPluginConfig +} +var file_job_spec_v1_ocr2_oracle_spec_info_proto_depIdxs = []int32{ + 1, // 0: job_spec.v1.OCR2OracleSpecInfo.evm_relay_config:type_name -> job_spec.v1.OCR2EVMRelayConfig + 2, // 1: job_spec.v1.OCR2OracleSpecInfo.median_plugin_config:type_name -> job_spec.v1.OCR2MedianPluginConfig + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_job_spec_v1_ocr2_oracle_spec_info_proto_init() } +func file_job_spec_v1_ocr2_oracle_spec_info_proto_init() { + if File_job_spec_v1_ocr2_oracle_spec_info_proto != nil { + return + } + file_job_spec_v1_ocr2_evm_relay_config_proto_init() + file_job_spec_v1_ocr2_median_plugin_config_proto_init() + file_job_spec_v1_ocr2_oracle_spec_info_proto_msgTypes[0].OneofWrappers = []any{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDesc), len(file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_job_spec_v1_ocr2_oracle_spec_info_proto_goTypes, + DependencyIndexes: file_job_spec_v1_ocr2_oracle_spec_info_proto_depIdxs, + MessageInfos: file_job_spec_v1_ocr2_oracle_spec_info_proto_msgTypes, + }.Build() + File_job_spec_v1_ocr2_oracle_spec_info_proto = out.File + file_job_spec_v1_ocr2_oracle_spec_info_proto_goTypes = nil + file_job_spec_v1_ocr2_oracle_spec_info_proto_depIdxs = nil +} diff --git a/data-feeds/job_spec/v1/ocr2_oracle_spec_info.proto b/data-feeds/job_spec/v1/ocr2_oracle_spec_info.proto new file mode 100644 index 00000000..ae17afb4 --- /dev/null +++ b/data-feeds/job_spec/v1/ocr2_oracle_spec_info.proto @@ -0,0 +1,30 @@ +syntax = "proto3"; + +package job_spec.v1; + +import "job_spec/v1/ocr2_evm_relay_config.proto"; +import "job_spec/v1/ocr2_median_plugin_config.proto"; + +option go_package = "github.com/smartcontractkit/chainlink-protos/data-feeds/job_spec/v1"; + +// OCR2OracleSpecInfo mirrors job.OCR2OracleSpec. +message OCR2OracleSpecInfo { + string contract_id = 1; + optional string feed_id = 2; + string relay = 3; + string plugin_type = 4; + optional string transmitter_id = 5; + optional string ocr_key_bundle_id = 6; + bool capture_ea_telemetry = 13; + + // Raw JSON passthroughs are always populated and authoritative over the typed + // sub-messages below. + string relay_config_json = 17; + string plugin_config_json = 18; + + // Populated when relay == "evm". + OCR2EVMRelayConfig evm_relay_config = 20; + + // Populated when plugin_type == "median". + OCR2MedianPluginConfig median_plugin_config = 21; +} diff --git a/node-platform/chip-schemas.json b/node-platform/chip-schemas.json index d95b2b09..8b0a0f20 100644 --- a/node-platform/chip-schemas.json +++ b/node-platform/chip-schemas.json @@ -8,6 +8,10 @@ { "entity": "common.v1.NodeBuildInfo", "path": "common/v1/node_build_info.proto" + }, + { + "entity": "common.v1.NodeJobInfo", + "path": "common/v1/node_job_info.proto" } ] } diff --git a/node-platform/common/v1/node_job_info.pb.go b/node-platform/common/v1/node_job_info.pb.go new file mode 100644 index 00000000..f923acd3 --- /dev/null +++ b/node-platform/common/v1/node_job_info.pb.go @@ -0,0 +1,217 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v5.29.3 +// source: node-platform/common/v1/node_job_info.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +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) +) + +type NodeJobInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + CsaPublicKey string `protobuf:"bytes,1,opt,name=csa_public_key,json=csaPublicKey,proto3" json:"csa_public_key,omitempty"` + SubmitterAddresses []*NodeSubmitterAddress `protobuf:"bytes,2,rep,name=submitter_addresses,json=submitterAddresses,proto3" json:"submitter_addresses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeJobInfo) Reset() { + *x = NodeJobInfo{} + mi := &file_node_platform_common_v1_node_job_info_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeJobInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeJobInfo) ProtoMessage() {} + +func (x *NodeJobInfo) ProtoReflect() protoreflect.Message { + mi := &file_node_platform_common_v1_node_job_info_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 NodeJobInfo.ProtoReflect.Descriptor instead. +func (*NodeJobInfo) Descriptor() ([]byte, []int) { + return file_node_platform_common_v1_node_job_info_proto_rawDescGZIP(), []int{0} +} + +func (x *NodeJobInfo) GetCsaPublicKey() string { + if x != nil { + return x.CsaPublicKey + } + return "" +} + +func (x *NodeJobInfo) GetSubmitterAddresses() []*NodeSubmitterAddress { + if x != nil { + return x.SubmitterAddresses + } + return nil +} + +type NodeSubmitterAddress struct { + state protoimpl.MessageState `protogen:"open.v1"` + ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + JobType string `protobuf:"bytes,2,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"` + PluginType string `protobuf:"bytes,3,opt,name=plugin_type,json=pluginType,proto3" json:"plugin_type,omitempty"` + FieldPath string `protobuf:"bytes,4,opt,name=field_path,json=fieldPath,proto3" json:"field_path,omitempty"` + Addresses []string `protobuf:"bytes,5,rep,name=addresses,proto3" json:"addresses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeSubmitterAddress) Reset() { + *x = NodeSubmitterAddress{} + mi := &file_node_platform_common_v1_node_job_info_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeSubmitterAddress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeSubmitterAddress) ProtoMessage() {} + +func (x *NodeSubmitterAddress) ProtoReflect() protoreflect.Message { + mi := &file_node_platform_common_v1_node_job_info_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 NodeSubmitterAddress.ProtoReflect.Descriptor instead. +func (*NodeSubmitterAddress) Descriptor() ([]byte, []int) { + return file_node_platform_common_v1_node_job_info_proto_rawDescGZIP(), []int{1} +} + +func (x *NodeSubmitterAddress) GetChainId() string { + if x != nil { + return x.ChainId + } + return "" +} + +func (x *NodeSubmitterAddress) GetJobType() string { + if x != nil { + return x.JobType + } + return "" +} + +func (x *NodeSubmitterAddress) GetPluginType() string { + if x != nil { + return x.PluginType + } + return "" +} + +func (x *NodeSubmitterAddress) GetFieldPath() string { + if x != nil { + return x.FieldPath + } + return "" +} + +func (x *NodeSubmitterAddress) GetAddresses() []string { + if x != nil { + return x.Addresses + } + return nil +} + +var File_node_platform_common_v1_node_job_info_proto protoreflect.FileDescriptor + +const file_node_platform_common_v1_node_job_info_proto_rawDesc = "" + + "\n" + + "+node-platform/common/v1/node_job_info.proto\x12\tcommon.v1\"\x85\x01\n" + + "\vNodeJobInfo\x12$\n" + + "\x0ecsa_public_key\x18\x01 \x01(\tR\fcsaPublicKey\x12P\n" + + "\x13submitter_addresses\x18\x02 \x03(\v2\x1f.common.v1.NodeSubmitterAddressR\x12submitterAddresses\"\xaa\x01\n" + + "\x14NodeSubmitterAddress\x12\x19\n" + + "\bchain_id\x18\x01 \x01(\tR\achainId\x12\x19\n" + + "\bjob_type\x18\x02 \x01(\tR\ajobType\x12\x1f\n" + + "\vplugin_type\x18\x03 \x01(\tR\n" + + "pluginType\x12\x1d\n" + + "\n" + + "field_path\x18\x04 \x01(\tR\tfieldPath\x12\x1c\n" + + "\taddresses\x18\x05 \x03(\tR\taddressesBFZDgithub.com/smartcontractkit/chainlink-protos/node-platform/common/v1b\x06proto3" + +var ( + file_node_platform_common_v1_node_job_info_proto_rawDescOnce sync.Once + file_node_platform_common_v1_node_job_info_proto_rawDescData []byte +) + +func file_node_platform_common_v1_node_job_info_proto_rawDescGZIP() []byte { + file_node_platform_common_v1_node_job_info_proto_rawDescOnce.Do(func() { + file_node_platform_common_v1_node_job_info_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_node_platform_common_v1_node_job_info_proto_rawDesc), len(file_node_platform_common_v1_node_job_info_proto_rawDesc))) + }) + return file_node_platform_common_v1_node_job_info_proto_rawDescData +} + +var file_node_platform_common_v1_node_job_info_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_node_platform_common_v1_node_job_info_proto_goTypes = []any{ + (*NodeJobInfo)(nil), // 0: common.v1.NodeJobInfo + (*NodeSubmitterAddress)(nil), // 1: common.v1.NodeSubmitterAddress +} +var file_node_platform_common_v1_node_job_info_proto_depIdxs = []int32{ + 1, // 0: common.v1.NodeJobInfo.submitter_addresses:type_name -> common.v1.NodeSubmitterAddress + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_node_platform_common_v1_node_job_info_proto_init() } +func file_node_platform_common_v1_node_job_info_proto_init() { + if File_node_platform_common_v1_node_job_info_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_node_platform_common_v1_node_job_info_proto_rawDesc), len(file_node_platform_common_v1_node_job_info_proto_rawDesc)), + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_node_platform_common_v1_node_job_info_proto_goTypes, + DependencyIndexes: file_node_platform_common_v1_node_job_info_proto_depIdxs, + MessageInfos: file_node_platform_common_v1_node_job_info_proto_msgTypes, + }.Build() + File_node_platform_common_v1_node_job_info_proto = out.File + file_node_platform_common_v1_node_job_info_proto_goTypes = nil + file_node_platform_common_v1_node_job_info_proto_depIdxs = nil +} diff --git a/node-platform/common/v1/node_job_info.proto b/node-platform/common/v1/node_job_info.proto new file mode 100644 index 00000000..d9e0d046 --- /dev/null +++ b/node-platform/common/v1/node_job_info.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; + +package common.v1; + +option go_package = "github.com/smartcontractkit/chainlink-protos/node-platform/common/v1"; + +message NodeJobInfo { + string csa_public_key = 1; + repeated NodeSubmitterAddress submitter_addresses = 2; +} + +message NodeSubmitterAddress { + string chain_id = 1; + string job_type = 2; + string plugin_type = 3; + string field_path = 4; + repeated string addresses = 5; +} diff --git a/op-catalog/CHANGELOG.md b/op-catalog/CHANGELOG.md index 5d5d9015..71041c90 100644 --- a/op-catalog/CHANGELOG.md +++ b/op-catalog/CHANGELOG.md @@ -1,5 +1,11 @@ # @chainlink/op-catalog +## 0.1.0 + +### Minor Changes + +- [#342](https://github.com/smartcontractkit/chainlink-protos/pull/342) [`41350ca`](https://github.com/smartcontractkit/chainlink-protos/commit/41350cab6cc270d17beba6ec78b68790fab6ad92) Thanks [@giogam](https://github.com/giogam)! - feat(op-catalog): add SEMANTICS_DELETE to EditSemantics enum + ## 0.0.4 ### Patch Changes diff --git a/op-catalog/package.json b/op-catalog/package.json index f97a7f61..bde1120d 100644 --- a/op-catalog/package.json +++ b/op-catalog/package.json @@ -1,5 +1,5 @@ { "name": "@chainlink/op-catalog", - "version": "0.0.4", + "version": "0.1.0", "private": true } diff --git a/op-catalog/v1/datastore/common.pb.go b/op-catalog/v1/datastore/common.pb.go index d0f11f27..bcfe8dcc 100644 --- a/op-catalog/v1/datastore/common.pb.go +++ b/op-catalog/v1/datastore/common.pb.go @@ -27,6 +27,7 @@ const ( EditSemantics_SEMANTICS_INSERT EditSemantics = 0 EditSemantics_SEMANTICS_UPSERT EditSemantics = 1 EditSemantics_SEMANTICS_UPDATE EditSemantics = 2 + EditSemantics_SEMANTICS_DELETE EditSemantics = 3 ) // Enum value maps for EditSemantics. @@ -35,11 +36,13 @@ var ( 0: "SEMANTICS_INSERT", 1: "SEMANTICS_UPSERT", 2: "SEMANTICS_UPDATE", + 3: "SEMANTICS_DELETE", } EditSemantics_value = map[string]int32{ "SEMANTICS_INSERT": 0, "SEMANTICS_UPSERT": 1, "SEMANTICS_UPDATE": 2, + "SEMANTICS_DELETE": 3, } ) @@ -74,11 +77,12 @@ var File_op_catalog_v1_datastore_common_proto protoreflect.FileDescriptor const file_op_catalog_v1_datastore_common_proto_rawDesc = "" + "\n" + - "$op-catalog/v1/datastore/common.proto\x12\x10api.datastore.v1*Q\n" + + "$op-catalog/v1/datastore/common.proto\x12\x10api.datastore.v1*g\n" + "\rEditSemantics\x12\x14\n" + "\x10SEMANTICS_INSERT\x10\x00\x12\x14\n" + "\x10SEMANTICS_UPSERT\x10\x01\x12\x14\n" + - "\x10SEMANTICS_UPDATE\x10\x02BFZDgithub.com/smartcontractkit/chainlink-protos/op-catalog/v1/datastoreb\x06proto3" + "\x10SEMANTICS_UPDATE\x10\x02\x12\x14\n" + + "\x10SEMANTICS_DELETE\x10\x03BFZDgithub.com/smartcontractkit/chainlink-protos/op-catalog/v1/datastoreb\x06proto3" var ( file_op_catalog_v1_datastore_common_proto_rawDescOnce sync.Once diff --git a/op-catalog/v1/datastore/common.proto b/op-catalog/v1/datastore/common.proto index 33000744..314bdcb2 100644 --- a/op-catalog/v1/datastore/common.proto +++ b/op-catalog/v1/datastore/common.proto @@ -8,5 +8,6 @@ enum EditSemantics { SEMANTICS_INSERT = 0; SEMANTICS_UPSERT = 1; SEMANTICS_UPDATE = 2; + SEMANTICS_DELETE = 3; } diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 9361e286..bb3c448a 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -9,4 +9,5 @@ packages: - 'chainlink-ccv/verifier' - 'chainlink-ccv/committee-verifier' - 'chainlink-ccv/message-discovery' + - 'chainlink-ccv/message-rules' - 'chainlink-ccv/heartbeat' diff --git a/svr/CHANGELOG.md b/svr/CHANGELOG.md index bd528c89..3ff77fe7 100644 --- a/svr/CHANGELOG.md +++ b/svr/CHANGELOG.md @@ -1,5 +1,11 @@ # @chainlink/svr +## 1.2.0 + +### Minor Changes + +- OEV-851: Add optional `dual_broadcast_params` field (8) to `TxMessage` proto. Populated with the URL-encoded MEVShare/Atlas params when a secondary (dual-broadcast) transaction is emitted. + ## 1.1.0 ### Minor Changes diff --git a/svr/package.json b/svr/package.json index 46f3a769..ed753af5 100644 --- a/svr/package.json +++ b/svr/package.json @@ -1,5 +1,5 @@ { "name": "@chainlink/svr", - "version": "1.1.0", + "version": "1.2.0", "private": true } diff --git a/svr/svr-schemas-beholder.json b/svr/svr-schemas-beholder.json index 09f5b4d2..a0fb1a9a 100644 --- a/svr/svr-schemas-beholder.json +++ b/svr/svr-schemas-beholder.json @@ -8,6 +8,10 @@ { "entity": "svr.v1.FastLaneAtlasError", "path": "v1/fastlane_atlas_error.proto" + }, + { + "entity": "svr.v1.FastLaneAtlasUserOp", + "path": "v1/fastlane_atlas_user_op.proto" } ] } diff --git a/svr/svr-schemas-chip.json b/svr/svr-schemas-chip.json index 855ec5d9..e624832b 100644 --- a/svr/svr-schemas-chip.json +++ b/svr/svr-schemas-chip.json @@ -8,6 +8,10 @@ { "entity": "svr.v1.FastLaneAtlasError", "path": "v1/fastlane_atlas_error.proto" + }, + { + "entity": "svr.v1.FastLaneAtlasUserOp", + "path": "v1/fastlane_atlas_user_op.proto" } ] } diff --git a/svr/v1/beholder_tx_message.pb.go b/svr/v1/beholder_tx_message.pb.go index 20c3fc9a..c2aef3b8 100644 --- a/svr/v1/beholder_tx_message.pb.go +++ b/svr/v1/beholder_tx_message.pb.go @@ -22,16 +22,17 @@ const ( ) type TxMessage struct { - state protoimpl.MessageState `protogen:"open.v1"` - Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` - FromAddress string `protobuf:"bytes,2,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty"` - ToAddress string `protobuf:"bytes,3,opt,name=to_address,json=toAddress,proto3" json:"to_address,omitempty"` - Nonce string `protobuf:"bytes,4,opt,name=nonce,proto3" json:"nonce,omitempty"` - CreatedAt int64 `protobuf:"varint,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - ChainId string `protobuf:"bytes,6,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` - FeedAddress string `protobuf:"bytes,7,opt,name=feed_address,json=feedAddress,proto3" json:"feed_address,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + FromAddress string `protobuf:"bytes,2,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty"` + ToAddress string `protobuf:"bytes,3,opt,name=to_address,json=toAddress,proto3" json:"to_address,omitempty"` + Nonce string `protobuf:"bytes,4,opt,name=nonce,proto3" json:"nonce,omitempty"` + CreatedAt int64 `protobuf:"varint,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + ChainId string `protobuf:"bytes,6,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + FeedAddress string `protobuf:"bytes,7,opt,name=feed_address,json=feedAddress,proto3" json:"feed_address,omitempty"` + DualBroadcastParams *string `protobuf:"bytes,8,opt,name=dual_broadcast_params,json=dualBroadcastParams,proto3,oneof" json:"dual_broadcast_params,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TxMessage) Reset() { @@ -113,11 +114,18 @@ func (x *TxMessage) GetFeedAddress() string { return "" } +func (x *TxMessage) GetDualBroadcastParams() string { + if x != nil && x.DualBroadcastParams != nil { + return *x.DualBroadcastParams + } + return "" +} + var File_svr_v1_beholder_tx_message_proto protoreflect.FileDescriptor const file_svr_v1_beholder_tx_message_proto_rawDesc = "" + "\n" + - " svr/v1/beholder_tx_message.proto\x12\x06svr.v1\"\xd4\x01\n" + + " svr/v1/beholder_tx_message.proto\x12\x06svr.v1\"\xa7\x02\n" + "\tTxMessage\x12\x12\n" + "\x04hash\x18\x01 \x01(\tR\x04hash\x12!\n" + "\ffrom_address\x18\x02 \x01(\tR\vfromAddress\x12\x1d\n" + @@ -127,7 +135,9 @@ const file_svr_v1_beholder_tx_message_proto_rawDesc = "" + "\n" + "created_at\x18\x05 \x01(\x03R\tcreatedAt\x12\x19\n" + "\bchain_id\x18\x06 \x01(\tR\achainId\x12!\n" + - "\ffeed_address\x18\a \x01(\tR\vfeedAddressB5Z3github.com/smartcontractkit/chainlink-protos/svr/v1b\x06proto3" + "\ffeed_address\x18\a \x01(\tR\vfeedAddress\x127\n" + + "\x15dual_broadcast_params\x18\b \x01(\tH\x00R\x13dualBroadcastParams\x88\x01\x01B\x18\n" + + "\x16_dual_broadcast_paramsB5Z3github.com/smartcontractkit/chainlink-protos/svr/v1b\x06proto3" var ( file_svr_v1_beholder_tx_message_proto_rawDescOnce sync.Once @@ -158,6 +168,7 @@ func file_svr_v1_beholder_tx_message_proto_init() { if File_svr_v1_beholder_tx_message_proto != nil { return } + file_svr_v1_beholder_tx_message_proto_msgTypes[0].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/svr/v1/beholder_tx_message.proto b/svr/v1/beholder_tx_message.proto index b307fcd3..2251d9b0 100644 --- a/svr/v1/beholder_tx_message.proto +++ b/svr/v1/beholder_tx_message.proto @@ -12,4 +12,5 @@ message TxMessage { int64 created_at = 5; string chain_id = 6; string feed_address = 7; + optional string dual_broadcast_params = 8; } diff --git a/svr/v1/fastlane_atlas_user_op.pb.go b/svr/v1/fastlane_atlas_user_op.pb.go new file mode 100644 index 00000000..2598dd16 --- /dev/null +++ b/svr/v1/fastlane_atlas_user_op.pb.go @@ -0,0 +1,196 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v5.29.3 +// source: svr/v1/fastlane_atlas_user_op.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +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) +) + +type FastLaneAtlasUserOp struct { + state protoimpl.MessageState `protogen:"open.v1"` + ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + FromAddress string `protobuf:"bytes,2,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty"` + ToAddress string `protobuf:"bytes,3,opt,name=to_address,json=toAddress,proto3" json:"to_address,omitempty"` + FeedAddress string `protobuf:"bytes,4,opt,name=feed_address,json=feedAddress,proto3" json:"feed_address,omitempty"` + Nonce string `protobuf:"bytes,5,opt,name=nonce,proto3" json:"nonce,omitempty"` + UserOpHash string `protobuf:"bytes,6,opt,name=user_op_hash,json=userOpHash,proto3" json:"user_op_hash,omitempty"` + TransactionLifecycleId string `protobuf:"bytes,7,opt,name=transaction_lifecycle_id,json=transactionLifecycleId,proto3" json:"transaction_lifecycle_id,omitempty"` + RequestSentAt int64 `protobuf:"varint,8,opt,name=request_sent_at,json=requestSentAt,proto3" json:"request_sent_at,omitempty"` + ResponseReceivedAt int64 `protobuf:"varint,9,opt,name=response_received_at,json=responseReceivedAt,proto3" json:"response_received_at,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FastLaneAtlasUserOp) Reset() { + *x = FastLaneAtlasUserOp{} + mi := &file_svr_v1_fastlane_atlas_user_op_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FastLaneAtlasUserOp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FastLaneAtlasUserOp) ProtoMessage() {} + +func (x *FastLaneAtlasUserOp) ProtoReflect() protoreflect.Message { + mi := &file_svr_v1_fastlane_atlas_user_op_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 FastLaneAtlasUserOp.ProtoReflect.Descriptor instead. +func (*FastLaneAtlasUserOp) Descriptor() ([]byte, []int) { + return file_svr_v1_fastlane_atlas_user_op_proto_rawDescGZIP(), []int{0} +} + +func (x *FastLaneAtlasUserOp) GetChainId() string { + if x != nil { + return x.ChainId + } + return "" +} + +func (x *FastLaneAtlasUserOp) GetFromAddress() string { + if x != nil { + return x.FromAddress + } + return "" +} + +func (x *FastLaneAtlasUserOp) GetToAddress() string { + if x != nil { + return x.ToAddress + } + return "" +} + +func (x *FastLaneAtlasUserOp) GetFeedAddress() string { + if x != nil { + return x.FeedAddress + } + return "" +} + +func (x *FastLaneAtlasUserOp) GetNonce() string { + if x != nil { + return x.Nonce + } + return "" +} + +func (x *FastLaneAtlasUserOp) GetUserOpHash() string { + if x != nil { + return x.UserOpHash + } + return "" +} + +func (x *FastLaneAtlasUserOp) GetTransactionLifecycleId() string { + if x != nil { + return x.TransactionLifecycleId + } + return "" +} + +func (x *FastLaneAtlasUserOp) GetRequestSentAt() int64 { + if x != nil { + return x.RequestSentAt + } + return 0 +} + +func (x *FastLaneAtlasUserOp) GetResponseReceivedAt() int64 { + if x != nil { + return x.ResponseReceivedAt + } + return 0 +} + +var File_svr_v1_fastlane_atlas_user_op_proto protoreflect.FileDescriptor + +const file_svr_v1_fastlane_atlas_user_op_proto_rawDesc = "" + + "\n" + + "#svr/v1/fastlane_atlas_user_op.proto\x12\x06svr.v1\"\xe1\x02\n" + + "\x13FastLaneAtlasUserOp\x12\x19\n" + + "\bchain_id\x18\x01 \x01(\tR\achainId\x12!\n" + + "\ffrom_address\x18\x02 \x01(\tR\vfromAddress\x12\x1d\n" + + "\n" + + "to_address\x18\x03 \x01(\tR\ttoAddress\x12!\n" + + "\ffeed_address\x18\x04 \x01(\tR\vfeedAddress\x12\x14\n" + + "\x05nonce\x18\x05 \x01(\tR\x05nonce\x12 \n" + + "\fuser_op_hash\x18\x06 \x01(\tR\n" + + "userOpHash\x128\n" + + "\x18transaction_lifecycle_id\x18\a \x01(\tR\x16transactionLifecycleId\x12&\n" + + "\x0frequest_sent_at\x18\b \x01(\x03R\rrequestSentAt\x120\n" + + "\x14response_received_at\x18\t \x01(\x03R\x12responseReceivedAtB5Z3github.com/smartcontractkit/chainlink-protos/svr/v1b\x06proto3" + +var ( + file_svr_v1_fastlane_atlas_user_op_proto_rawDescOnce sync.Once + file_svr_v1_fastlane_atlas_user_op_proto_rawDescData []byte +) + +func file_svr_v1_fastlane_atlas_user_op_proto_rawDescGZIP() []byte { + file_svr_v1_fastlane_atlas_user_op_proto_rawDescOnce.Do(func() { + file_svr_v1_fastlane_atlas_user_op_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_svr_v1_fastlane_atlas_user_op_proto_rawDesc), len(file_svr_v1_fastlane_atlas_user_op_proto_rawDesc))) + }) + return file_svr_v1_fastlane_atlas_user_op_proto_rawDescData +} + +var file_svr_v1_fastlane_atlas_user_op_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_svr_v1_fastlane_atlas_user_op_proto_goTypes = []any{ + (*FastLaneAtlasUserOp)(nil), // 0: svr.v1.FastLaneAtlasUserOp +} +var file_svr_v1_fastlane_atlas_user_op_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_svr_v1_fastlane_atlas_user_op_proto_init() } +func file_svr_v1_fastlane_atlas_user_op_proto_init() { + if File_svr_v1_fastlane_atlas_user_op_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_svr_v1_fastlane_atlas_user_op_proto_rawDesc), len(file_svr_v1_fastlane_atlas_user_op_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_svr_v1_fastlane_atlas_user_op_proto_goTypes, + DependencyIndexes: file_svr_v1_fastlane_atlas_user_op_proto_depIdxs, + MessageInfos: file_svr_v1_fastlane_atlas_user_op_proto_msgTypes, + }.Build() + File_svr_v1_fastlane_atlas_user_op_proto = out.File + file_svr_v1_fastlane_atlas_user_op_proto_goTypes = nil + file_svr_v1_fastlane_atlas_user_op_proto_depIdxs = nil +} diff --git a/svr/v1/fastlane_atlas_user_op.proto b/svr/v1/fastlane_atlas_user_op.proto new file mode 100644 index 00000000..1645acbb --- /dev/null +++ b/svr/v1/fastlane_atlas_user_op.proto @@ -0,0 +1,17 @@ +syntax = "proto3"; + +package svr.v1; + +option go_package = "github.com/smartcontractkit/chainlink-protos/svr/v1"; + +message FastLaneAtlasUserOp { + string chain_id = 1; + string from_address = 2; + string to_address = 3; + string feed_address = 4; + string nonce = 5; + string user_op_hash = 6; + string transaction_lifecycle_id = 7; + int64 request_sent_at = 8; + int64 response_received_at = 9; +} From 61ff5a195fdc50e820d880115ccaa0e875261e47 Mon Sep 17 00:00:00 2001 From: ilija42 <57732589+ilija42@users.noreply.github.com> Date: Tue, 12 May 2026 23:08:50 +0200 Subject: [PATCH 14/49] Capabilities development changes (#357) * Add stellar * Add xdr scval as argument * add scval proto * Auto-fix: buf format, gofmt, go generate, go mod tidy * lint * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- .../blockchain/stellar/v1alpha/client.proto | 5 +- .../blockchain/stellar/v1alpha/scval.proto | 212 +++++++++++++++++ cre/go/installer/pkg/embedded_gen.go | 223 +++++++++++++++++- 3 files changed, 438 insertions(+), 2 deletions(-) create mode 100644 cre/capabilities/blockchain/stellar/v1alpha/scval.proto diff --git a/cre/capabilities/blockchain/stellar/v1alpha/client.proto b/cre/capabilities/blockchain/stellar/v1alpha/client.proto index 272aeaed..42a09e46 100644 --- a/cre/capabilities/blockchain/stellar/v1alpha/client.proto +++ b/cre/capabilities/blockchain/stellar/v1alpha/client.proto @@ -1,9 +1,12 @@ syntax = "proto3"; package capabilities.blockchain.stellar.v1alpha; +import "capabilities/blockchain/stellar/v1alpha/scval.proto"; import "sdk/v1alpha/sdk.proto"; import "tools/generator/v1alpha/cre_metadata.proto"; +option go_package = "github.com/smartcontractkit/chainlink-protos/cre/go/capabilities/blockchain/stellar/v1alpha"; + enum TxStatus { TX_STATUS_FATAL = 0; TX_STATUS_REVERTED = 1; @@ -13,7 +16,7 @@ enum TxStatus { message ReadContractRequest { string contract_id = 1; string function = 2; - repeated bytes args = 3; + repeated ScVal args = 3; // Typed Soroban contract arguments (replaces raw XDR bytes) // Optional: 0 = latest uint32 ledger_sequence = 4; } diff --git a/cre/capabilities/blockchain/stellar/v1alpha/scval.proto b/cre/capabilities/blockchain/stellar/v1alpha/scval.proto new file mode 100644 index 00000000..b6e89c9d --- /dev/null +++ b/cre/capabilities/blockchain/stellar/v1alpha/scval.proto @@ -0,0 +1,212 @@ +syntax = "proto3"; +package capabilities.blockchain.stellar.v1alpha; + +option go_package = "github.com/smartcontractkit/chainlink-protos/cre/go/capabilities/blockchain/stellar/v1alpha"; + +// ============================================================ +// Scalar 128/256-bit integer parts +// These mirror the XDR UInt128Parts / Int128Parts / UInt256Parts / Int256Parts. +// ============================================================ + +message UInt128Parts { + uint64 hi = 1; + uint64 lo = 2; +} + +message Int128Parts { + int64 hi = 1; + uint64 lo = 2; +} + +message UInt256Parts { + uint64 hi_hi = 1; + uint64 hi_lo = 2; + uint64 lo_hi = 3; + uint64 lo_lo = 4; +} + +message Int256Parts { + int64 hi_hi = 1; + uint64 hi_lo = 2; + uint64 lo_hi = 3; + uint64 lo_lo = 4; +} + +// ============================================================ +// SCError (XDR: union SCError switch (SCErrorType type)) +// ============================================================ + +message ScError { + enum Type { + TYPE_CONTRACT = 0; + TYPE_WASM_VM = 1; + TYPE_CONTEXT = 2; + TYPE_STORAGE = 3; + TYPE_OBJECT = 4; + TYPE_CRYPTO = 5; + TYPE_EVENTS = 6; + TYPE_BUDGET = 7; + TYPE_VALUE = 8; + TYPE_AUTH = 9; + } + + enum Code { + CODE_ARITH_DOMAIN = 0; + CODE_INDEX_BOUNDS = 1; + CODE_INVALID_INPUT = 2; + CODE_MISSING_VALUE = 3; + CODE_EXISTING_VALUE = 4; + CODE_EXCEEDED_LIMIT = 5; + CODE_INVALID_ACTION = 6; + CODE_INTERNAL_ERROR = 7; + CODE_UNEXPECTED_TYPE = 8; + CODE_UNEXPECTED_SIZE = 9; + } + + Type type = 1; + + // For SCE_CONTRACT: user-defined numeric code. + // For all other types: one of the well-known SCErrorCode values. + oneof code_or_contract { + uint32 contract_code = 2; + Code code = 3; + } +} + +// ============================================================ +// SCAddress (XDR: union SCAddress switch (SCAddressType type)) +// ============================================================ + +message MuxedEd25519Account { + uint64 id = 1; + bytes ed25519 = 2; // 32-byte Ed25519 public key +} + +// A claimable balance ID is simply a 32-byte hash tagged with a type. +// We encode only the v0 variant (hash bytes) since that is the only +// type in the current protocol. +message ClaimableBalanceId { + bytes v0 = 1; // 32-byte SHA-256 hash +} + +message ScAddress { + oneof address { + bytes account_id = 1; // 32-byte Ed25519 public key (AccountID) + bytes contract_id = 2; // 32-byte contract hash (ContractID) + MuxedEd25519Account muxed_account = 3; // muxed Ed25519 account + ClaimableBalanceId claimable_balance_id = 4; + bytes liquidity_pool_id = 5; // 32-byte pool hash (PoolID) + } +} + +// ============================================================ +// Contract executable (XDR: union ContractExecutable) +// ============================================================ + +message ContractExecutable { + oneof type { + bytes wasm_hash = 1; // SHA-256 hash of the WASM module + bool stellar_asset = 2; // true ⇒ CONTRACT_EXECUTABLE_STELLAR_ASSET + } +} + +// ============================================================ +// SCContractInstance (XDR: struct SCContractInstance) +// ============================================================ + +// Forward-declared via ScMapEntry below; proto3 allows forward references. +message ScContractInstance { + ContractExecutable executable = 1; + repeated ScMapEntry storage = 2; // empty slice ⇒ no storage map (nil in XDR) +} + +// ============================================================ +// SCNonceKey (XDR: struct SCNonceKey) +// ============================================================ + +message ScNonceKey { + int64 nonce = 1; +} + +// ============================================================ +// SCMapEntry (XDR: struct SCMapEntry) +// ============================================================ + +message ScMapEntry { + ScVal key = 1; + ScVal val = 2; +} + +// ============================================================ +// Vec / Map containers (XDR: SCVec / SCMap typedefs) +// ============================================================ + +message ScVec { + repeated ScVal values = 1; +} + +message ScMap { + repeated ScMapEntry entries = 1; +} + +// ============================================================ +// Void – sentinel for XDR variants that carry no payload +// ============================================================ + +message Void {} + +// ============================================================ +// SCVal (XDR: union SCVal switch (SCValType type)) +// +// The active oneof field implicitly encodes the SCValType +// discriminant. Mapping: +// b → SCV_BOOL +// void_val → SCV_VOID +// error → SCV_ERROR +// u32 → SCV_U32 +// i32 → SCV_I32 +// u64 → SCV_U64 +// i64 → SCV_I64 +// timepoint → SCV_TIMEPOINT (uint64) +// duration → SCV_DURATION (uint64) +// u128 → SCV_U128 +// i128 → SCV_I128 +// u256 → SCV_U256 +// i256 → SCV_I256 +// bytes_val → SCV_BYTES +// str → SCV_STRING +// sym → SCV_SYMBOL (≤32 chars) +// vec → SCV_VEC +// map → SCV_MAP +// address → SCV_ADDRESS +// contract_instance → SCV_CONTRACT_INSTANCE +// ledger_key_contract_instance → SCV_LEDGER_KEY_CONTRACT_INSTANCE +// nonce_key → SCV_LEDGER_KEY_NONCE +// ============================================================ + +message ScVal { + oneof value { + bool b = 1; + Void void_val = 2; + ScError error = 3; + uint32 u32 = 4; + int32 i32 = 5; + uint64 u64 = 6; + int64 i64 = 7; + uint64 timepoint = 8; + uint64 duration = 9; + UInt128Parts u128 = 10; + Int128Parts i128 = 11; + UInt256Parts u256 = 12; + Int256Parts i256 = 13; + bytes bytes_val = 14; + string str = 15; + string sym = 16; + ScVec vec = 17; + ScMap map = 18; + ScAddress address = 19; + ScContractInstance contract_instance = 20; + Void ledger_key_contract_instance = 21; + ScNonceKey nonce_key = 22; + } +} diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index f659cadd..5d810315 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -1057,9 +1057,12 @@ service Client { const blockchainStellarV1alphaClientEmbedded = `syntax = "proto3"; package capabilities.blockchain.stellar.v1alpha; +import "capabilities/blockchain/stellar/v1alpha/scval.proto"; import "sdk/v1alpha/sdk.proto"; import "tools/generator/v1alpha/cre_metadata.proto"; +option go_package = "github.com/smartcontractkit/chainlink-protos/cre/go/capabilities/blockchain/stellar/v1alpha"; + enum TxStatus { TX_STATUS_FATAL = 0; TX_STATUS_REVERTED = 1; @@ -1069,7 +1072,7 @@ enum TxStatus { message ReadContractRequest { string contract_id = 1; string function = 2; - repeated bytes args = 3; + repeated ScVal args = 3; // Typed Soroban contract arguments (replaces raw XDR bytes) // Optional: 0 = latest uint32 ledger_sequence = 4; } @@ -1144,6 +1147,220 @@ service Client { } ` +const blockchainStellarV1alphaScvalEmbedded = `syntax = "proto3"; +package capabilities.blockchain.stellar.v1alpha; + +option go_package = "github.com/smartcontractkit/chainlink-protos/cre/go/capabilities/blockchain/stellar/v1alpha"; + +// ============================================================ +// Scalar 128/256-bit integer parts +// These mirror the XDR UInt128Parts / Int128Parts / UInt256Parts / Int256Parts. +// ============================================================ + +message UInt128Parts { + uint64 hi = 1; + uint64 lo = 2; +} + +message Int128Parts { + int64 hi = 1; + uint64 lo = 2; +} + +message UInt256Parts { + uint64 hi_hi = 1; + uint64 hi_lo = 2; + uint64 lo_hi = 3; + uint64 lo_lo = 4; +} + +message Int256Parts { + int64 hi_hi = 1; + uint64 hi_lo = 2; + uint64 lo_hi = 3; + uint64 lo_lo = 4; +} + +// ============================================================ +// SCError (XDR: union SCError switch (SCErrorType type)) +// ============================================================ + +message ScError { + enum Type { + TYPE_CONTRACT = 0; + TYPE_WASM_VM = 1; + TYPE_CONTEXT = 2; + TYPE_STORAGE = 3; + TYPE_OBJECT = 4; + TYPE_CRYPTO = 5; + TYPE_EVENTS = 6; + TYPE_BUDGET = 7; + TYPE_VALUE = 8; + TYPE_AUTH = 9; + } + + enum Code { + CODE_ARITH_DOMAIN = 0; + CODE_INDEX_BOUNDS = 1; + CODE_INVALID_INPUT = 2; + CODE_MISSING_VALUE = 3; + CODE_EXISTING_VALUE = 4; + CODE_EXCEEDED_LIMIT = 5; + CODE_INVALID_ACTION = 6; + CODE_INTERNAL_ERROR = 7; + CODE_UNEXPECTED_TYPE = 8; + CODE_UNEXPECTED_SIZE = 9; + } + + Type type = 1; + + // For SCE_CONTRACT: user-defined numeric code. + // For all other types: one of the well-known SCErrorCode values. + oneof code_or_contract { + uint32 contract_code = 2; + Code code = 3; + } +} + +// ============================================================ +// SCAddress (XDR: union SCAddress switch (SCAddressType type)) +// ============================================================ + +message MuxedEd25519Account { + uint64 id = 1; + bytes ed25519 = 2; // 32-byte Ed25519 public key +} + +// A claimable balance ID is simply a 32-byte hash tagged with a type. +// We encode only the v0 variant (hash bytes) since that is the only +// type in the current protocol. +message ClaimableBalanceId { + bytes v0 = 1; // 32-byte SHA-256 hash +} + +message ScAddress { + oneof address { + bytes account_id = 1; // 32-byte Ed25519 public key (AccountID) + bytes contract_id = 2; // 32-byte contract hash (ContractID) + MuxedEd25519Account muxed_account = 3; // muxed Ed25519 account + ClaimableBalanceId claimable_balance_id = 4; + bytes liquidity_pool_id = 5; // 32-byte pool hash (PoolID) + } +} + +// ============================================================ +// Contract executable (XDR: union ContractExecutable) +// ============================================================ + +message ContractExecutable { + oneof type { + bytes wasm_hash = 1; // SHA-256 hash of the WASM module + bool stellar_asset = 2; // true ⇒ CONTRACT_EXECUTABLE_STELLAR_ASSET + } +} + +// ============================================================ +// SCContractInstance (XDR: struct SCContractInstance) +// ============================================================ + +// Forward-declared via ScMapEntry below; proto3 allows forward references. +message ScContractInstance { + ContractExecutable executable = 1; + repeated ScMapEntry storage = 2; // empty slice ⇒ no storage map (nil in XDR) +} + +// ============================================================ +// SCNonceKey (XDR: struct SCNonceKey) +// ============================================================ + +message ScNonceKey { + int64 nonce = 1; +} + +// ============================================================ +// SCMapEntry (XDR: struct SCMapEntry) +// ============================================================ + +message ScMapEntry { + ScVal key = 1; + ScVal val = 2; +} + +// ============================================================ +// Vec / Map containers (XDR: SCVec / SCMap typedefs) +// ============================================================ + +message ScVec { + repeated ScVal values = 1; +} + +message ScMap { + repeated ScMapEntry entries = 1; +} + +// ============================================================ +// Void – sentinel for XDR variants that carry no payload +// ============================================================ + +message Void {} + +// ============================================================ +// SCVal (XDR: union SCVal switch (SCValType type)) +// +// The active oneof field implicitly encodes the SCValType +// discriminant. Mapping: +// b → SCV_BOOL +// void_val → SCV_VOID +// error → SCV_ERROR +// u32 → SCV_U32 +// i32 → SCV_I32 +// u64 → SCV_U64 +// i64 → SCV_I64 +// timepoint → SCV_TIMEPOINT (uint64) +// duration → SCV_DURATION (uint64) +// u128 → SCV_U128 +// i128 → SCV_I128 +// u256 → SCV_U256 +// i256 → SCV_I256 +// bytes_val → SCV_BYTES +// str → SCV_STRING +// sym → SCV_SYMBOL (≤32 chars) +// vec → SCV_VEC +// map → SCV_MAP +// address → SCV_ADDRESS +// contract_instance → SCV_CONTRACT_INSTANCE +// ledger_key_contract_instance → SCV_LEDGER_KEY_CONTRACT_INSTANCE +// nonce_key → SCV_LEDGER_KEY_NONCE +// ============================================================ + +message ScVal { + oneof value { + bool b = 1; + Void void_val = 2; + ScError error = 3; + uint32 u32 = 4; + int32 i32 = 5; + uint64 u64 = 6; + int64 i64 = 7; + uint64 timepoint = 8; + uint64 duration = 9; + UInt128Parts u128 = 10; + Int128Parts i128 = 11; + UInt256Parts u256 = 12; + Int256Parts i256 = 13; + bytes bytes_val = 14; + string str = 15; + string sym = 16; + ScVec vec = 17; + ScMap map = 18; + ScAddress address = 19; + ScContractInstance contract_instance = 20; + Void ledger_key_contract_instance = 21; + ScNonceKey nonce_key = 22; + } +} +` + const computeConfidentialworkflowV1alphaClientEmbedded = `syntax = "proto3"; package capabilities.compute.confidentialworkflow.v1alpha; @@ -2060,6 +2277,10 @@ var allFiles = []*embeddedFile{ name: "capabilities/blockchain/stellar/v1alpha/client.proto", content: blockchainStellarV1alphaClientEmbedded, }, + { + name: "capabilities/blockchain/stellar/v1alpha/scval.proto", + content: blockchainStellarV1alphaScvalEmbedded, + }, { name: "capabilities/compute/confidentialworkflow/v1alpha/client.proto", content: computeConfidentialworkflowV1alphaClientEmbedded, From 766d216919cc735c997b1f5dd133ebf48ffe01f2 Mon Sep 17 00:00:00 2001 From: amit-momin <108959691+amit-momin@users.noreply.github.com> Date: Tue, 12 May 2026 17:48:35 -0500 Subject: [PATCH 15/49] Add celo-sepolia and adi-testnet support (#358) * Added celo-sepolia and adi-testnet support * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- cre/capabilities/blockchain/evm/v1alpha/client.proto | 8 ++++++++ cre/go/installer/pkg/embedded_gen.go | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/cre/capabilities/blockchain/evm/v1alpha/client.proto b/cre/capabilities/blockchain/evm/v1alpha/client.proto index 4ecda88a..c10fde74 100644 --- a/cre/capabilities/blockchain/evm/v1alpha/client.proto +++ b/cre/capabilities/blockchain/evm/v1alpha/client.proto @@ -169,6 +169,10 @@ service Client { value: { uint64_label: { defaults: [ + { + key: "adi-testnet" + value: 9418205736192840573 + }, { key: "apechain-testnet-curtis" value: 9900119385908781505 @@ -197,6 +201,10 @@ service Client { key: "celo-mainnet" value: 1346049177634351622 }, + { + key: "celo-sepolia" + value: 3761762704474186180 + }, { key: "cronos-testnet" value: 2995292832068775165 diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 5d810315..9feb77d6 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -372,6 +372,10 @@ service Client { value: { uint64_label: { defaults: [ + { + key: "adi-testnet" + value: 9418205736192840573 + }, { key: "apechain-testnet-curtis" value: 9900119385908781505 @@ -400,6 +404,10 @@ service Client { key: "celo-mainnet" value: 1346049177634351622 }, + { + key: "celo-sepolia" + value: 3761762704474186180 + }, { key: "cronos-testnet" value: 2995292832068775165 From c0d96bfba027bdf0d49bb3d27129180d93d80ae7 Mon Sep 17 00:00:00 2001 From: ilija42 <57732589+ilija42@users.noreply.github.com> Date: Wed, 13 May 2026 10:52:10 +0200 Subject: [PATCH 16/49] Capabilities development changes (#360) * Update stellar * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- cre/capabilities/blockchain/stellar/v1alpha/client.proto | 2 -- cre/capabilities/blockchain/stellar/v1alpha/scval.proto | 2 -- cre/go/installer/pkg/embedded_gen.go | 4 ---- 3 files changed, 8 deletions(-) diff --git a/cre/capabilities/blockchain/stellar/v1alpha/client.proto b/cre/capabilities/blockchain/stellar/v1alpha/client.proto index 42a09e46..fa90f27f 100644 --- a/cre/capabilities/blockchain/stellar/v1alpha/client.proto +++ b/cre/capabilities/blockchain/stellar/v1alpha/client.proto @@ -5,8 +5,6 @@ import "capabilities/blockchain/stellar/v1alpha/scval.proto"; import "sdk/v1alpha/sdk.proto"; import "tools/generator/v1alpha/cre_metadata.proto"; -option go_package = "github.com/smartcontractkit/chainlink-protos/cre/go/capabilities/blockchain/stellar/v1alpha"; - enum TxStatus { TX_STATUS_FATAL = 0; TX_STATUS_REVERTED = 1; diff --git a/cre/capabilities/blockchain/stellar/v1alpha/scval.proto b/cre/capabilities/blockchain/stellar/v1alpha/scval.proto index b6e89c9d..35ec4633 100644 --- a/cre/capabilities/blockchain/stellar/v1alpha/scval.proto +++ b/cre/capabilities/blockchain/stellar/v1alpha/scval.proto @@ -1,8 +1,6 @@ syntax = "proto3"; package capabilities.blockchain.stellar.v1alpha; -option go_package = "github.com/smartcontractkit/chainlink-protos/cre/go/capabilities/blockchain/stellar/v1alpha"; - // ============================================================ // Scalar 128/256-bit integer parts // These mirror the XDR UInt128Parts / Int128Parts / UInt256Parts / Int256Parts. diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 9feb77d6..497bf212 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -1069,8 +1069,6 @@ import "capabilities/blockchain/stellar/v1alpha/scval.proto"; import "sdk/v1alpha/sdk.proto"; import "tools/generator/v1alpha/cre_metadata.proto"; -option go_package = "github.com/smartcontractkit/chainlink-protos/cre/go/capabilities/blockchain/stellar/v1alpha"; - enum TxStatus { TX_STATUS_FATAL = 0; TX_STATUS_REVERTED = 1; @@ -1158,8 +1156,6 @@ service Client { const blockchainStellarV1alphaScvalEmbedded = `syntax = "proto3"; package capabilities.blockchain.stellar.v1alpha; -option go_package = "github.com/smartcontractkit/chainlink-protos/cre/go/capabilities/blockchain/stellar/v1alpha"; - // ============================================================ // Scalar 128/256-bit integer parts // These mirror the XDR UInt128Parts / Int128Parts / UInt256Parts / Int256Parts. From a827acdffe43fe94dba95abb1d2410584feb7071 Mon Sep 17 00:00:00 2001 From: ilija42 <57732589+ilija42@users.noreply.github.com> Date: Thu, 14 May 2026 12:45:16 +0200 Subject: [PATCH 17/49] Update stellar proto, change read contract result to string (#361) --- cre/capabilities/blockchain/stellar/v1alpha/client.proto | 3 ++- cre/go/installer/pkg/embedded_gen.go | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/cre/capabilities/blockchain/stellar/v1alpha/client.proto b/cre/capabilities/blockchain/stellar/v1alpha/client.proto index fa90f27f..3aec0827 100644 --- a/cre/capabilities/blockchain/stellar/v1alpha/client.proto +++ b/cre/capabilities/blockchain/stellar/v1alpha/client.proto @@ -20,7 +20,8 @@ message ReadContractRequest { } message ReadContractResponse { - bytes result = 1; + // Result is a serialized base64 string - return value of the Host Function call. + string result = 1; // Ledger actually used for simulation uint32 ledger_sequence = 2; // Response diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 497bf212..96c6dcae 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -1084,7 +1084,8 @@ message ReadContractRequest { } message ReadContractResponse { - bytes result = 1; + // Result is a serialized base64 string - return value of the Host Function call. + string result = 1; // Ledger actually used for simulation uint32 ledger_sequence = 2; // Response From b5bb732eb9d75df361d13a28b2929547b3877363 Mon Sep 17 00:00:00 2001 From: Tejaswi Nadahalli Date: Wed, 20 May 2026 20:10:35 +0200 Subject: [PATCH 18/49] Restructure ConfidentialWorkflow proto: move binary_url out of hash (#365) binary_url must be per-node. Each workflow DON node mints its own pre-signed URL with its own AWS signature and expiry timestamp. Keeping it inside WorkflowExecution breaks F+1 quorum at the enclave because WorkflowExecution serializes into ComputeRequest.PublicData, which is covered by ComputeRequest.Hash(). Moves binary_url to ConfidentialWorkflowRequest (sibling of execution, outside the hash envelope). Drops unused SecretIdentifier message and vault_don_secrets field (the enclave fetches secrets dynamically at runtime; the host-side adapter already returns nil for this field). Renumbers WorkflowExecution fields cleanly with no reserved gap since the capability has no production consumers yet. org_id now at field 6. execution.binary_hash remains the integrity anchor for fetched bytes, still inside PublicData and therefore signed and quorum-checked. See PRIV-389. --- .../confidentialworkflow/v1alpha/client.proto | 45 ++++++++++++------- cre/go/installer/pkg/embedded_gen.go | 45 ++++++++++++------- 2 files changed, 56 insertions(+), 34 deletions(-) diff --git a/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto b/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto index a6ee0921..c39e6981 100644 --- a/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto +++ b/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto @@ -4,40 +4,51 @@ package capabilities.compute.confidentialworkflow.v1alpha; import "tools/generator/v1alpha/cre_metadata.proto"; -message SecretIdentifier { - string key = 1; - // namespace defaults to "main" when unset. - optional string namespace = 2; -} - // WorkflowExecution is the public data sent to the enclave. -// Becomes ComputeRequest.PublicData after proto serialization. +// Becomes ComputeRequest.PublicData after proto serialization, which is +// covered by ComputeRequest.Hash() for F+1 quorum matching at the enclave. +// All fields here must be byte-identical across workflow DON nodes. message WorkflowExecution { // workflow_id identifies the workflow to execute. string workflow_id = 1; - // binary_url is the URL from which the enclave fetches the compiled WASM binary. - string binary_url = 2; // binary_hash is the expected SHA-256 hash of the WASM binary, for integrity verification. - bytes binary_hash = 3; + bytes binary_hash = 2; // execute_request is a serialized sdk.v1alpha.ExecuteRequest proto. // Contains either a subscribe request or a trigger execution request. - bytes execute_request = 4; + bytes execute_request = 3; // owner is the on-chain owner address of the workflow (hex, 0x-prefixed). // Used by the enclave for runtime secret fetching from VaultDON. - string owner = 5; + string owner = 4; // execution_id is the unique execution identifier (64 hex chars, 32 bytes). // Used by the enclave for runtime secret fetching from VaultDON. - string execution_id = 6; + string execution_id = 5; // org_id is the organization identifier for the workflow owner. // Used by the enclave when fetching secrets from VaultDON with org-based ownership. - string org_id = 7; + string org_id = 6; } // ConfidentialWorkflowRequest is the input provided to the confidential workflows capability. -// It combines a WorkflowExecution with secrets from VaultDON. +// It carries a WorkflowExecution (deterministic across workflow DON nodes, +// hashed for F+1 quorum) plus per-node-varying data that must live outside +// the hash envelope. message ConfidentialWorkflowRequest { - repeated SecretIdentifier vault_don_secrets = 1; - WorkflowExecution execution = 2; + WorkflowExecution execution = 1; + // binary_url is the pre-signed CloudFront URL used by the enclave to fetch + // the WASM binary. The workflow node mints this URL per-execution via + // NodeService.DownloadArtifact and ships it alongside the WorkflowExecution. + // + // This field is deliberately on ConfidentialWorkflowRequest rather than + // inside WorkflowExecution: every workflow DON node mints its own URL with + // its own AWS signature and expiry timestamp, so the value differs across + // nodes. WorkflowExecution serializes into ComputeRequest.PublicData, + // which is covered by ComputeRequest.Hash() for F+1 quorum matching at the + // enclave. A per-node value inside that envelope would break quorum. + // + // The integrity anchor for the fetched bytes is execution.binary_hash, + // inside PublicData (and therefore signed and quorum-checked). The URL is + // a fetch hint; tampering with it is caught by the hash check on the + // returned bytes. + string binary_url = 2; } // ConfidentialWorkflowResponse is the output from the confidential workflows capability. diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 96c6dcae..2ad4f029 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -1372,40 +1372,51 @@ package capabilities.compute.confidentialworkflow.v1alpha; import "tools/generator/v1alpha/cre_metadata.proto"; -message SecretIdentifier { - string key = 1; - // namespace defaults to "main" when unset. - optional string namespace = 2; -} - // WorkflowExecution is the public data sent to the enclave. -// Becomes ComputeRequest.PublicData after proto serialization. +// Becomes ComputeRequest.PublicData after proto serialization, which is +// covered by ComputeRequest.Hash() for F+1 quorum matching at the enclave. +// All fields here must be byte-identical across workflow DON nodes. message WorkflowExecution { // workflow_id identifies the workflow to execute. string workflow_id = 1; - // binary_url is the URL from which the enclave fetches the compiled WASM binary. - string binary_url = 2; // binary_hash is the expected SHA-256 hash of the WASM binary, for integrity verification. - bytes binary_hash = 3; + bytes binary_hash = 2; // execute_request is a serialized sdk.v1alpha.ExecuteRequest proto. // Contains either a subscribe request or a trigger execution request. - bytes execute_request = 4; + bytes execute_request = 3; // owner is the on-chain owner address of the workflow (hex, 0x-prefixed). // Used by the enclave for runtime secret fetching from VaultDON. - string owner = 5; + string owner = 4; // execution_id is the unique execution identifier (64 hex chars, 32 bytes). // Used by the enclave for runtime secret fetching from VaultDON. - string execution_id = 6; + string execution_id = 5; // org_id is the organization identifier for the workflow owner. // Used by the enclave when fetching secrets from VaultDON with org-based ownership. - string org_id = 7; + string org_id = 6; } // ConfidentialWorkflowRequest is the input provided to the confidential workflows capability. -// It combines a WorkflowExecution with secrets from VaultDON. +// It carries a WorkflowExecution (deterministic across workflow DON nodes, +// hashed for F+1 quorum) plus per-node-varying data that must live outside +// the hash envelope. message ConfidentialWorkflowRequest { - repeated SecretIdentifier vault_don_secrets = 1; - WorkflowExecution execution = 2; + WorkflowExecution execution = 1; + // binary_url is the pre-signed CloudFront URL used by the enclave to fetch + // the WASM binary. The workflow node mints this URL per-execution via + // NodeService.DownloadArtifact and ships it alongside the WorkflowExecution. + // + // This field is deliberately on ConfidentialWorkflowRequest rather than + // inside WorkflowExecution: every workflow DON node mints its own URL with + // its own AWS signature and expiry timestamp, so the value differs across + // nodes. WorkflowExecution serializes into ComputeRequest.PublicData, + // which is covered by ComputeRequest.Hash() for F+1 quorum matching at the + // enclave. A per-node value inside that envelope would break quorum. + // + // The integrity anchor for the fetched bytes is execution.binary_hash, + // inside PublicData (and therefore signed and quorum-checked). The URL is + // a fetch hint; tampering with it is caught by the hash check on the + // returned bytes. + string binary_url = 2; } // ConfidentialWorkflowResponse is the output from the confidential workflows capability. From b5dafb04cc1dd01ed1f74cc7e2d6faa52b1ccbbe Mon Sep 17 00:00:00 2001 From: amit-momin <108959691+amit-momin@users.noreply.github.com> Date: Wed, 20 May 2026 13:54:38 -0500 Subject: [PATCH 19/49] Add adi-mainnet support (#366) * Added adi-mainnet support * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> Co-authored-by: Justin Kaseman --- cre/capabilities/blockchain/evm/v1alpha/client.proto | 4 ++++ cre/go/installer/pkg/embedded_gen.go | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/cre/capabilities/blockchain/evm/v1alpha/client.proto b/cre/capabilities/blockchain/evm/v1alpha/client.proto index c10fde74..f4dd98a8 100644 --- a/cre/capabilities/blockchain/evm/v1alpha/client.proto +++ b/cre/capabilities/blockchain/evm/v1alpha/client.proto @@ -169,6 +169,10 @@ service Client { value: { uint64_label: { defaults: [ + { + key: "adi-mainnet" + value: 4059281736450291836 + }, { key: "adi-testnet" value: 9418205736192840573 diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 2ad4f029..5fb5583c 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -372,6 +372,10 @@ service Client { value: { uint64_label: { defaults: [ + { + key: "adi-mainnet" + value: 4059281736450291836 + }, { key: "adi-testnet" value: 9418205736192840573 From ba2a4dc6433354321c018a4b314b68ba883a1678 Mon Sep 17 00:00:00 2001 From: Ryan Tinianov Date: Wed, 20 May 2026 15:20:08 -0400 Subject: [PATCH 20/49] Add support TEE workflow execution (#363) Add support TEE workflow execution --- .../confidentialworkflow/v1alpha/client.proto | 14 +- .../networking/http/v1alpha/client.proto | 1 + cre/go/installer/pkg/embedded_gen.go | 51 +- cre/go/sdk/sdk.pb.go | 576 ++++++++++++++---- cre/go/tools/generator/cre_metadata.pb.go | 160 +++-- cre/sdk/v1alpha/sdk.proto | 30 + .../generator/v1alpha/cre_metadata.proto | 6 + 7 files changed, 674 insertions(+), 164 deletions(-) diff --git a/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto b/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto index c39e6981..60568b1d 100644 --- a/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto +++ b/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto @@ -2,6 +2,8 @@ syntax = "proto3"; package capabilities.compute.confidentialworkflow.v1alpha; +import "google/protobuf/empty.proto"; +import "sdk/v1alpha/sdk.proto"; import "tools/generator/v1alpha/cre_metadata.proto"; // WorkflowExecution is the public data sent to the enclave. @@ -15,7 +17,7 @@ message WorkflowExecution { bytes binary_hash = 2; // execute_request is a serialized sdk.v1alpha.ExecuteRequest proto. // Contains either a subscribe request or a trigger execution request. - bytes execute_request = 3; + sdk.v1alpha.ExecuteRequest execute_request = 3; // owner is the on-chain owner address of the workflow (hex, 0x-prefixed). // Used by the enclave for runtime secret fetching from VaultDON. string owner = 4; @@ -25,6 +27,9 @@ message WorkflowExecution { // org_id is the organization identifier for the workflow owner. // Used by the enclave when fetching secrets from VaultDON with org-based ownership. string org_id = 6; + + // requirements to run this workflow + sdk.v1alpha.Requirements requirements = 7; } // ConfidentialWorkflowRequest is the input provided to the confidential workflows capability. @@ -54,7 +59,11 @@ message ConfidentialWorkflowRequest { // ConfidentialWorkflowResponse is the output from the confidential workflows capability. message ConfidentialWorkflowResponse { // execution_result is a serialized sdk.v1alpha.ExecutionResult proto. - bytes execution_result = 1; + sdk.v1alpha.ExecutionResult execution_result = 1; +} + +message ProvidedTeesResponse { + repeated sdk.v1alpha.TeeTypeAndRegions tee = 1; } service Client { @@ -64,4 +73,5 @@ service Client { }; rpc Execute(ConfidentialWorkflowRequest) returns (ConfidentialWorkflowResponse); + rpc ProvidedTees(google.protobuf.Empty) returns (ProvidedTeesResponse); } diff --git a/cre/capabilities/networking/http/v1alpha/client.proto b/cre/capabilities/networking/http/v1alpha/client.proto index a42e23bd..e395570d 100644 --- a/cre/capabilities/networking/http/v1alpha/client.proto +++ b/cre/capabilities/networking/http/v1alpha/client.proto @@ -37,6 +37,7 @@ service Client { option (tools.generator.v1alpha.capability) = { mode: MODE_NODE capability_id: "http-actions@1.0.0-alpha" + additional_environments: [ADDITIONAL_ENVIRONMENTS_TEE] }; rpc SendRequest(Request) returns (Response); } diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 5fb5583c..42e3e8fe 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -1374,6 +1374,8 @@ const computeConfidentialworkflowV1alphaClientEmbedded = `syntax = "proto3"; package capabilities.compute.confidentialworkflow.v1alpha; +import "google/protobuf/empty.proto"; +import "sdk/v1alpha/sdk.proto"; import "tools/generator/v1alpha/cre_metadata.proto"; // WorkflowExecution is the public data sent to the enclave. @@ -1387,7 +1389,7 @@ message WorkflowExecution { bytes binary_hash = 2; // execute_request is a serialized sdk.v1alpha.ExecuteRequest proto. // Contains either a subscribe request or a trigger execution request. - bytes execute_request = 3; + sdk.v1alpha.ExecuteRequest execute_request = 3; // owner is the on-chain owner address of the workflow (hex, 0x-prefixed). // Used by the enclave for runtime secret fetching from VaultDON. string owner = 4; @@ -1397,6 +1399,9 @@ message WorkflowExecution { // org_id is the organization identifier for the workflow owner. // Used by the enclave when fetching secrets from VaultDON with org-based ownership. string org_id = 6; + + // requirements to run this workflow + sdk.v1alpha.Requirements requirements = 7; } // ConfidentialWorkflowRequest is the input provided to the confidential workflows capability. @@ -1426,7 +1431,11 @@ message ConfidentialWorkflowRequest { // ConfidentialWorkflowResponse is the output from the confidential workflows capability. message ConfidentialWorkflowResponse { // execution_result is a serialized sdk.v1alpha.ExecutionResult proto. - bytes execution_result = 1; + sdk.v1alpha.ExecutionResult execution_result = 1; +} + +message ProvidedTeesResponse { + repeated sdk.v1alpha.TeeTypeAndRegions tee = 1; } service Client { @@ -1436,6 +1445,7 @@ service Client { }; rpc Execute(ConfidentialWorkflowRequest) returns (ConfidentialWorkflowResponse); + rpc ProvidedTees(google.protobuf.Empty) returns (ProvidedTeesResponse); } ` @@ -1728,6 +1738,7 @@ service Client { option (tools.generator.v1alpha.capability) = { mode: MODE_NODE capability_id: "http-actions@1.0.0-alpha" + additional_environments: [ADDITIONAL_ENVIRONMENTS_TEE] }; rpc SendRequest(Request) returns (Response); } @@ -1888,6 +1899,17 @@ message TriggerSubscription { string id = 1; google.protobuf.Any payload = 2; string method = 3; + Requirements requirements = 4; +} + +enum TeeType { + TEE_TYPE_UNSPECIFIED = 0; + TEE_TYPE_AWS_NITRO = 1; +} + +message TeeTypeAndRegions { + TeeType type = 1; + repeated string regions = 3; } message TriggerSubscriptionRequest { @@ -1899,6 +1921,25 @@ message Trigger { google.protobuf.Any payload = 2; } +message Regions { + repeated string regions = 1; +} + +message TeeTypesAndRegions { + repeated TeeTypeAndRegions tee_type_and_regions = 1; +} + +message Tee { + oneof item { + Regions any_regions = 1; + TeeTypesAndRegions tee_types_and_regions = 2; + } +} + +message Requirements { + Tee tee = 1; +} + message AwaitCapabilitiesRequest { repeated int32 ids = 1; } @@ -2163,10 +2204,16 @@ message Label { } } +enum AdditionalEnvironments { + ADDITIONAL_ENVIRONMENTS_UNSPECIFIED = 0; + ADDITIONAL_ENVIRONMENTS_TEE = 1; +} + message CapabilityMetadata { sdk.v1alpha.Mode mode = 1; string capability_id = 2; map labels = 3; + repeated AdditionalEnvironments additional_environments = 4; } extend google.protobuf.ServiceOptions { diff --git a/cre/go/sdk/sdk.pb.go b/cre/go/sdk/sdk.pb.go index 3ab84306..383abf8f 100644 --- a/cre/go/sdk/sdk.pb.go +++ b/cre/go/sdk/sdk.pb.go @@ -128,6 +128,52 @@ func (Mode) EnumDescriptor() ([]byte, []int) { return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{1} } +type TeeType int32 + +const ( + TeeType_TEE_TYPE_UNSPECIFIED TeeType = 0 + TeeType_TEE_TYPE_AWS_NITRO TeeType = 1 +) + +// Enum value maps for TeeType. +var ( + TeeType_name = map[int32]string{ + 0: "TEE_TYPE_UNSPECIFIED", + 1: "TEE_TYPE_AWS_NITRO", + } + TeeType_value = map[string]int32{ + "TEE_TYPE_UNSPECIFIED": 0, + "TEE_TYPE_AWS_NITRO": 1, + } +) + +func (x TeeType) Enum() *TeeType { + p := new(TeeType) + *p = x + return p +} + +func (x TeeType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TeeType) Descriptor() protoreflect.EnumDescriptor { + return file_sdk_v1alpha_sdk_proto_enumTypes[2].Descriptor() +} + +func (TeeType) Type() protoreflect.EnumType { + return &file_sdk_v1alpha_sdk_proto_enumTypes[2] +} + +func (x TeeType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TeeType.Descriptor instead. +func (TeeType) EnumDescriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{2} +} + type SimpleConsensusInputs struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to Observation: @@ -703,6 +749,7 @@ type TriggerSubscription struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Payload *anypb.Any `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` Method string `protobuf:"bytes,3,opt,name=method,proto3" json:"method,omitempty"` + Requirements *Requirements `protobuf:"bytes,4,opt,name=requirements,proto3" json:"requirements,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -758,6 +805,65 @@ func (x *TriggerSubscription) GetMethod() string { return "" } +func (x *TriggerSubscription) GetRequirements() *Requirements { + if x != nil { + return x.Requirements + } + return nil +} + +type TeeTypeAndRegions struct { + state protoimpl.MessageState `protogen:"open.v1"` + Type TeeType `protobuf:"varint,1,opt,name=type,proto3,enum=sdk.v1alpha.TeeType" json:"type,omitempty"` + Regions []string `protobuf:"bytes,3,rep,name=regions,proto3" json:"regions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TeeTypeAndRegions) Reset() { + *x = TeeTypeAndRegions{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TeeTypeAndRegions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TeeTypeAndRegions) ProtoMessage() {} + +func (x *TeeTypeAndRegions) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[9] + 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 TeeTypeAndRegions.ProtoReflect.Descriptor instead. +func (*TeeTypeAndRegions) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{9} +} + +func (x *TeeTypeAndRegions) GetType() TeeType { + if x != nil { + return x.Type + } + return TeeType_TEE_TYPE_UNSPECIFIED +} + +func (x *TeeTypeAndRegions) GetRegions() []string { + if x != nil { + return x.Regions + } + return nil +} + type TriggerSubscriptionRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Subscriptions []*TriggerSubscription `protobuf:"bytes,1,rep,name=subscriptions,proto3" json:"subscriptions,omitempty"` @@ -767,7 +873,7 @@ type TriggerSubscriptionRequest struct { func (x *TriggerSubscriptionRequest) Reset() { *x = TriggerSubscriptionRequest{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[9] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -779,7 +885,7 @@ func (x *TriggerSubscriptionRequest) String() string { func (*TriggerSubscriptionRequest) ProtoMessage() {} func (x *TriggerSubscriptionRequest) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[9] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -792,7 +898,7 @@ func (x *TriggerSubscriptionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TriggerSubscriptionRequest.ProtoReflect.Descriptor instead. func (*TriggerSubscriptionRequest) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{9} + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{10} } func (x *TriggerSubscriptionRequest) GetSubscriptions() []*TriggerSubscription { @@ -812,7 +918,7 @@ type Trigger struct { func (x *Trigger) Reset() { *x = Trigger{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[10] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -824,7 +930,7 @@ func (x *Trigger) String() string { func (*Trigger) ProtoMessage() {} func (x *Trigger) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[10] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -837,7 +943,7 @@ func (x *Trigger) ProtoReflect() protoreflect.Message { // Deprecated: Use Trigger.ProtoReflect.Descriptor instead. func (*Trigger) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{10} + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{11} } func (x *Trigger) GetId() uint64 { @@ -854,6 +960,220 @@ func (x *Trigger) GetPayload() *anypb.Any { return nil } +type Regions struct { + state protoimpl.MessageState `protogen:"open.v1"` + Regions []string `protobuf:"bytes,1,rep,name=regions,proto3" json:"regions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Regions) Reset() { + *x = Regions{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Regions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Regions) ProtoMessage() {} + +func (x *Regions) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[12] + 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 Regions.ProtoReflect.Descriptor instead. +func (*Regions) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{12} +} + +func (x *Regions) GetRegions() []string { + if x != nil { + return x.Regions + } + return nil +} + +type TeeTypesAndRegions struct { + state protoimpl.MessageState `protogen:"open.v1"` + TeeTypeAndRegions []*TeeTypeAndRegions `protobuf:"bytes,1,rep,name=tee_type_and_regions,json=teeTypeAndRegions,proto3" json:"tee_type_and_regions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TeeTypesAndRegions) Reset() { + *x = TeeTypesAndRegions{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TeeTypesAndRegions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TeeTypesAndRegions) ProtoMessage() {} + +func (x *TeeTypesAndRegions) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[13] + 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 TeeTypesAndRegions.ProtoReflect.Descriptor instead. +func (*TeeTypesAndRegions) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{13} +} + +func (x *TeeTypesAndRegions) GetTeeTypeAndRegions() []*TeeTypeAndRegions { + if x != nil { + return x.TeeTypeAndRegions + } + return nil +} + +type Tee struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Item: + // + // *Tee_AnyRegions + // *Tee_TeeTypesAndRegions + Item isTee_Item `protobuf_oneof:"item"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Tee) Reset() { + *x = Tee{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Tee) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tee) ProtoMessage() {} + +func (x *Tee) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[14] + 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 Tee.ProtoReflect.Descriptor instead. +func (*Tee) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{14} +} + +func (x *Tee) GetItem() isTee_Item { + if x != nil { + return x.Item + } + return nil +} + +func (x *Tee) GetAnyRegions() *Regions { + if x != nil { + if x, ok := x.Item.(*Tee_AnyRegions); ok { + return x.AnyRegions + } + } + return nil +} + +func (x *Tee) GetTeeTypesAndRegions() *TeeTypesAndRegions { + if x != nil { + if x, ok := x.Item.(*Tee_TeeTypesAndRegions); ok { + return x.TeeTypesAndRegions + } + } + return nil +} + +type isTee_Item interface { + isTee_Item() +} + +type Tee_AnyRegions struct { + AnyRegions *Regions `protobuf:"bytes,1,opt,name=any_regions,json=anyRegions,proto3,oneof"` +} + +type Tee_TeeTypesAndRegions struct { + TeeTypesAndRegions *TeeTypesAndRegions `protobuf:"bytes,2,opt,name=tee_types_and_regions,json=teeTypesAndRegions,proto3,oneof"` +} + +func (*Tee_AnyRegions) isTee_Item() {} + +func (*Tee_TeeTypesAndRegions) isTee_Item() {} + +type Requirements struct { + state protoimpl.MessageState `protogen:"open.v1"` + Tee *Tee `protobuf:"bytes,1,opt,name=tee,proto3" json:"tee,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Requirements) Reset() { + *x = Requirements{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Requirements) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Requirements) ProtoMessage() {} + +func (x *Requirements) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[15] + 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 Requirements.ProtoReflect.Descriptor instead. +func (*Requirements) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{15} +} + +func (x *Requirements) GetTee() *Tee { + if x != nil { + return x.Tee + } + return nil +} + type AwaitCapabilitiesRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Ids []int32 `protobuf:"varint,1,rep,packed,name=ids,proto3" json:"ids,omitempty"` @@ -863,7 +1183,7 @@ type AwaitCapabilitiesRequest struct { func (x *AwaitCapabilitiesRequest) Reset() { *x = AwaitCapabilitiesRequest{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[11] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -875,7 +1195,7 @@ func (x *AwaitCapabilitiesRequest) String() string { func (*AwaitCapabilitiesRequest) ProtoMessage() {} func (x *AwaitCapabilitiesRequest) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[11] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -888,7 +1208,7 @@ func (x *AwaitCapabilitiesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AwaitCapabilitiesRequest.ProtoReflect.Descriptor instead. func (*AwaitCapabilitiesRequest) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{11} + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{16} } func (x *AwaitCapabilitiesRequest) GetIds() []int32 { @@ -907,7 +1227,7 @@ type AwaitCapabilitiesResponse struct { func (x *AwaitCapabilitiesResponse) Reset() { *x = AwaitCapabilitiesResponse{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[12] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -919,7 +1239,7 @@ func (x *AwaitCapabilitiesResponse) String() string { func (*AwaitCapabilitiesResponse) ProtoMessage() {} func (x *AwaitCapabilitiesResponse) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[12] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -932,7 +1252,7 @@ func (x *AwaitCapabilitiesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AwaitCapabilitiesResponse.ProtoReflect.Descriptor instead. func (*AwaitCapabilitiesResponse) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{12} + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{17} } func (x *AwaitCapabilitiesResponse) GetResponses() map[int32]*CapabilityResponse { @@ -957,7 +1277,7 @@ type ExecuteRequest struct { func (x *ExecuteRequest) Reset() { *x = ExecuteRequest{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[13] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -969,7 +1289,7 @@ func (x *ExecuteRequest) String() string { func (*ExecuteRequest) ProtoMessage() {} func (x *ExecuteRequest) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[13] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -982,7 +1302,7 @@ func (x *ExecuteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecuteRequest.ProtoReflect.Descriptor instead. func (*ExecuteRequest) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{13} + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{18} } func (x *ExecuteRequest) GetConfig() []byte { @@ -1054,7 +1374,7 @@ type ExecutionResult struct { func (x *ExecutionResult) Reset() { *x = ExecutionResult{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[14] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1066,7 +1386,7 @@ func (x *ExecutionResult) String() string { func (*ExecutionResult) ProtoMessage() {} func (x *ExecutionResult) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[14] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1079,7 +1399,7 @@ func (x *ExecutionResult) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecutionResult.ProtoReflect.Descriptor instead. func (*ExecutionResult) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{14} + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{19} } func (x *ExecutionResult) GetResult() isExecutionResult_Result { @@ -1148,7 +1468,7 @@ type GetSecretsRequest struct { func (x *GetSecretsRequest) Reset() { *x = GetSecretsRequest{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[15] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1160,7 +1480,7 @@ func (x *GetSecretsRequest) String() string { func (*GetSecretsRequest) ProtoMessage() {} func (x *GetSecretsRequest) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[15] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1173,7 +1493,7 @@ func (x *GetSecretsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSecretsRequest.ProtoReflect.Descriptor instead. func (*GetSecretsRequest) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{15} + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{20} } func (x *GetSecretsRequest) GetRequests() []*SecretRequest { @@ -1199,7 +1519,7 @@ type AwaitSecretsRequest struct { func (x *AwaitSecretsRequest) Reset() { *x = AwaitSecretsRequest{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[16] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1211,7 +1531,7 @@ func (x *AwaitSecretsRequest) String() string { func (*AwaitSecretsRequest) ProtoMessage() {} func (x *AwaitSecretsRequest) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[16] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1224,7 +1544,7 @@ func (x *AwaitSecretsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AwaitSecretsRequest.ProtoReflect.Descriptor instead. func (*AwaitSecretsRequest) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{16} + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{21} } func (x *AwaitSecretsRequest) GetIds() []int32 { @@ -1243,7 +1563,7 @@ type AwaitSecretsResponse struct { func (x *AwaitSecretsResponse) Reset() { *x = AwaitSecretsResponse{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[17] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1255,7 +1575,7 @@ func (x *AwaitSecretsResponse) String() string { func (*AwaitSecretsResponse) ProtoMessage() {} func (x *AwaitSecretsResponse) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[17] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1268,7 +1588,7 @@ func (x *AwaitSecretsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AwaitSecretsResponse.ProtoReflect.Descriptor instead. func (*AwaitSecretsResponse) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{17} + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{22} } func (x *AwaitSecretsResponse) GetResponses() map[int32]*SecretResponses { @@ -1288,7 +1608,7 @@ type SecretRequest struct { func (x *SecretRequest) Reset() { *x = SecretRequest{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[18] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1300,7 +1620,7 @@ func (x *SecretRequest) String() string { func (*SecretRequest) ProtoMessage() {} func (x *SecretRequest) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[18] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1313,7 +1633,7 @@ func (x *SecretRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretRequest.ProtoReflect.Descriptor instead. func (*SecretRequest) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{18} + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{23} } func (x *SecretRequest) GetId() string { @@ -1342,7 +1662,7 @@ type Secret struct { func (x *Secret) Reset() { *x = Secret{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[19] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1354,7 +1674,7 @@ func (x *Secret) String() string { func (*Secret) ProtoMessage() {} func (x *Secret) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[19] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1367,7 +1687,7 @@ func (x *Secret) ProtoReflect() protoreflect.Message { // Deprecated: Use Secret.ProtoReflect.Descriptor instead. func (*Secret) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{19} + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{24} } func (x *Secret) GetId() string { @@ -1410,7 +1730,7 @@ type SecretError struct { func (x *SecretError) Reset() { *x = SecretError{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[20] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1422,7 +1742,7 @@ func (x *SecretError) String() string { func (*SecretError) ProtoMessage() {} func (x *SecretError) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[20] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1435,7 +1755,7 @@ func (x *SecretError) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretError.ProtoReflect.Descriptor instead. func (*SecretError) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{20} + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{25} } func (x *SecretError) GetId() string { @@ -1479,7 +1799,7 @@ type SecretResponse struct { func (x *SecretResponse) Reset() { *x = SecretResponse{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[21] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1491,7 +1811,7 @@ func (x *SecretResponse) String() string { func (*SecretResponse) ProtoMessage() {} func (x *SecretResponse) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[21] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1504,7 +1824,7 @@ func (x *SecretResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretResponse.ProtoReflect.Descriptor instead. func (*SecretResponse) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{21} + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{26} } func (x *SecretResponse) GetResponse() isSecretResponse_Response { @@ -1557,7 +1877,7 @@ type SecretResponses struct { func (x *SecretResponses) Reset() { *x = SecretResponses{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[22] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1569,7 +1889,7 @@ func (x *SecretResponses) String() string { func (*SecretResponses) ProtoMessage() {} func (x *SecretResponses) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[22] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1582,7 +1902,7 @@ func (x *SecretResponses) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretResponses.ProtoReflect.Descriptor instead. func (*SecretResponses) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{22} + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{27} } func (x *SecretResponses) GetResponses() []*SecretResponse { @@ -1639,16 +1959,31 @@ const file_sdk_v1alpha_sdk_proto_rawDesc = "" + "\apayload\x18\x01 \x01(\v2\x14.google.protobuf.AnyH\x00R\apayload\x12\x16\n" + "\x05error\x18\x02 \x01(\tH\x00R\x05errorB\n" + "\n" + - "\bresponse\"m\n" + + "\bresponse\"\xac\x01\n" + "\x13TriggerSubscription\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12.\n" + "\apayload\x18\x02 \x01(\v2\x14.google.protobuf.AnyR\apayload\x12\x16\n" + - "\x06method\x18\x03 \x01(\tR\x06method\"d\n" + + "\x06method\x18\x03 \x01(\tR\x06method\x12=\n" + + "\frequirements\x18\x04 \x01(\v2\x19.sdk.v1alpha.RequirementsR\frequirements\"W\n" + + "\x11TeeTypeAndRegions\x12(\n" + + "\x04type\x18\x01 \x01(\x0e2\x14.sdk.v1alpha.TeeTypeR\x04type\x12\x18\n" + + "\aregions\x18\x03 \x03(\tR\aregions\"d\n" + "\x1aTriggerSubscriptionRequest\x12F\n" + "\rsubscriptions\x18\x01 \x03(\v2 .sdk.v1alpha.TriggerSubscriptionR\rsubscriptions\"I\n" + "\aTrigger\x12\x0e\n" + "\x02id\x18\x01 \x01(\x04R\x02id\x12.\n" + - "\apayload\x18\x02 \x01(\v2\x14.google.protobuf.AnyR\apayload\",\n" + + "\apayload\x18\x02 \x01(\v2\x14.google.protobuf.AnyR\apayload\"#\n" + + "\aRegions\x12\x18\n" + + "\aregions\x18\x01 \x03(\tR\aregions\"e\n" + + "\x12TeeTypesAndRegions\x12O\n" + + "\x14tee_type_and_regions\x18\x01 \x03(\v2\x1e.sdk.v1alpha.TeeTypeAndRegionsR\x11teeTypeAndRegions\"\x9c\x01\n" + + "\x03Tee\x127\n" + + "\vany_regions\x18\x01 \x01(\v2\x14.sdk.v1alpha.RegionsH\x00R\n" + + "anyRegions\x12T\n" + + "\x15tee_types_and_regions\x18\x02 \x01(\v2\x1f.sdk.v1alpha.TeeTypesAndRegionsH\x00R\x12teeTypesAndRegionsB\x06\n" + + "\x04item\"2\n" + + "\fRequirements\x12\"\n" + + "\x03tee\x18\x01 \x01(\v2\x10.sdk.v1alpha.TeeR\x03tee\",\n" + "\x18AwaitCapabilitiesRequest\x12\x10\n" + "\x03ids\x18\x01 \x03(\x05R\x03ids\"\xcf\x01\n" + "\x19AwaitCapabilitiesResponse\x12S\n" + @@ -1707,7 +2042,10 @@ const file_sdk_v1alpha_sdk_proto_rawDesc = "" + "\x04Mode\x12\x14\n" + "\x10MODE_UNSPECIFIED\x10\x00\x12\f\n" + "\bMODE_DON\x10\x01\x12\r\n" + - "\tMODE_NODE\x10\x02b\x06proto3" + "\tMODE_NODE\x10\x02*;\n" + + "\aTeeType\x12\x18\n" + + "\x14TEE_TYPE_UNSPECIFIED\x10\x00\x12\x16\n" + + "\x12TEE_TYPE_AWS_NITRO\x10\x01b\x06proto3" var ( file_sdk_v1alpha_sdk_proto_rawDescOnce sync.Once @@ -1721,72 +2059,84 @@ func file_sdk_v1alpha_sdk_proto_rawDescGZIP() []byte { return file_sdk_v1alpha_sdk_proto_rawDescData } -var file_sdk_v1alpha_sdk_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_sdk_v1alpha_sdk_proto_msgTypes = make([]protoimpl.MessageInfo, 26) +var file_sdk_v1alpha_sdk_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_sdk_v1alpha_sdk_proto_msgTypes = make([]protoimpl.MessageInfo, 31) var file_sdk_v1alpha_sdk_proto_goTypes = []any{ (AggregationType)(0), // 0: sdk.v1alpha.AggregationType (Mode)(0), // 1: sdk.v1alpha.Mode - (*SimpleConsensusInputs)(nil), // 2: sdk.v1alpha.SimpleConsensusInputs - (*FieldsMap)(nil), // 3: sdk.v1alpha.FieldsMap - (*ConsensusDescriptor)(nil), // 4: sdk.v1alpha.ConsensusDescriptor - (*ReportRequest)(nil), // 5: sdk.v1alpha.ReportRequest - (*ReportResponse)(nil), // 6: sdk.v1alpha.ReportResponse - (*AttributedSignature)(nil), // 7: sdk.v1alpha.AttributedSignature - (*CapabilityRequest)(nil), // 8: sdk.v1alpha.CapabilityRequest - (*CapabilityResponse)(nil), // 9: sdk.v1alpha.CapabilityResponse - (*TriggerSubscription)(nil), // 10: sdk.v1alpha.TriggerSubscription - (*TriggerSubscriptionRequest)(nil), // 11: sdk.v1alpha.TriggerSubscriptionRequest - (*Trigger)(nil), // 12: sdk.v1alpha.Trigger - (*AwaitCapabilitiesRequest)(nil), // 13: sdk.v1alpha.AwaitCapabilitiesRequest - (*AwaitCapabilitiesResponse)(nil), // 14: sdk.v1alpha.AwaitCapabilitiesResponse - (*ExecuteRequest)(nil), // 15: sdk.v1alpha.ExecuteRequest - (*ExecutionResult)(nil), // 16: sdk.v1alpha.ExecutionResult - (*GetSecretsRequest)(nil), // 17: sdk.v1alpha.GetSecretsRequest - (*AwaitSecretsRequest)(nil), // 18: sdk.v1alpha.AwaitSecretsRequest - (*AwaitSecretsResponse)(nil), // 19: sdk.v1alpha.AwaitSecretsResponse - (*SecretRequest)(nil), // 20: sdk.v1alpha.SecretRequest - (*Secret)(nil), // 21: sdk.v1alpha.Secret - (*SecretError)(nil), // 22: sdk.v1alpha.SecretError - (*SecretResponse)(nil), // 23: sdk.v1alpha.SecretResponse - (*SecretResponses)(nil), // 24: sdk.v1alpha.SecretResponses - nil, // 25: sdk.v1alpha.FieldsMap.FieldsEntry - nil, // 26: sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntry - nil, // 27: sdk.v1alpha.AwaitSecretsResponse.ResponsesEntry - (*pb.Value)(nil), // 28: values.v1.Value - (*anypb.Any)(nil), // 29: google.protobuf.Any - (*emptypb.Empty)(nil), // 30: google.protobuf.Empty + (TeeType)(0), // 2: sdk.v1alpha.TeeType + (*SimpleConsensusInputs)(nil), // 3: sdk.v1alpha.SimpleConsensusInputs + (*FieldsMap)(nil), // 4: sdk.v1alpha.FieldsMap + (*ConsensusDescriptor)(nil), // 5: sdk.v1alpha.ConsensusDescriptor + (*ReportRequest)(nil), // 6: sdk.v1alpha.ReportRequest + (*ReportResponse)(nil), // 7: sdk.v1alpha.ReportResponse + (*AttributedSignature)(nil), // 8: sdk.v1alpha.AttributedSignature + (*CapabilityRequest)(nil), // 9: sdk.v1alpha.CapabilityRequest + (*CapabilityResponse)(nil), // 10: sdk.v1alpha.CapabilityResponse + (*TriggerSubscription)(nil), // 11: sdk.v1alpha.TriggerSubscription + (*TeeTypeAndRegions)(nil), // 12: sdk.v1alpha.TeeTypeAndRegions + (*TriggerSubscriptionRequest)(nil), // 13: sdk.v1alpha.TriggerSubscriptionRequest + (*Trigger)(nil), // 14: sdk.v1alpha.Trigger + (*Regions)(nil), // 15: sdk.v1alpha.Regions + (*TeeTypesAndRegions)(nil), // 16: sdk.v1alpha.TeeTypesAndRegions + (*Tee)(nil), // 17: sdk.v1alpha.Tee + (*Requirements)(nil), // 18: sdk.v1alpha.Requirements + (*AwaitCapabilitiesRequest)(nil), // 19: sdk.v1alpha.AwaitCapabilitiesRequest + (*AwaitCapabilitiesResponse)(nil), // 20: sdk.v1alpha.AwaitCapabilitiesResponse + (*ExecuteRequest)(nil), // 21: sdk.v1alpha.ExecuteRequest + (*ExecutionResult)(nil), // 22: sdk.v1alpha.ExecutionResult + (*GetSecretsRequest)(nil), // 23: sdk.v1alpha.GetSecretsRequest + (*AwaitSecretsRequest)(nil), // 24: sdk.v1alpha.AwaitSecretsRequest + (*AwaitSecretsResponse)(nil), // 25: sdk.v1alpha.AwaitSecretsResponse + (*SecretRequest)(nil), // 26: sdk.v1alpha.SecretRequest + (*Secret)(nil), // 27: sdk.v1alpha.Secret + (*SecretError)(nil), // 28: sdk.v1alpha.SecretError + (*SecretResponse)(nil), // 29: sdk.v1alpha.SecretResponse + (*SecretResponses)(nil), // 30: sdk.v1alpha.SecretResponses + nil, // 31: sdk.v1alpha.FieldsMap.FieldsEntry + nil, // 32: sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntry + nil, // 33: sdk.v1alpha.AwaitSecretsResponse.ResponsesEntry + (*pb.Value)(nil), // 34: values.v1.Value + (*anypb.Any)(nil), // 35: google.protobuf.Any + (*emptypb.Empty)(nil), // 36: google.protobuf.Empty } var file_sdk_v1alpha_sdk_proto_depIdxs = []int32{ - 28, // 0: sdk.v1alpha.SimpleConsensusInputs.value:type_name -> values.v1.Value - 4, // 1: sdk.v1alpha.SimpleConsensusInputs.descriptors:type_name -> sdk.v1alpha.ConsensusDescriptor - 28, // 2: sdk.v1alpha.SimpleConsensusInputs.default:type_name -> values.v1.Value - 25, // 3: sdk.v1alpha.FieldsMap.fields:type_name -> sdk.v1alpha.FieldsMap.FieldsEntry + 34, // 0: sdk.v1alpha.SimpleConsensusInputs.value:type_name -> values.v1.Value + 5, // 1: sdk.v1alpha.SimpleConsensusInputs.descriptors:type_name -> sdk.v1alpha.ConsensusDescriptor + 34, // 2: sdk.v1alpha.SimpleConsensusInputs.default:type_name -> values.v1.Value + 31, // 3: sdk.v1alpha.FieldsMap.fields:type_name -> sdk.v1alpha.FieldsMap.FieldsEntry 0, // 4: sdk.v1alpha.ConsensusDescriptor.aggregation:type_name -> sdk.v1alpha.AggregationType - 3, // 5: sdk.v1alpha.ConsensusDescriptor.fields_map:type_name -> sdk.v1alpha.FieldsMap - 7, // 6: sdk.v1alpha.ReportResponse.sigs:type_name -> sdk.v1alpha.AttributedSignature - 29, // 7: sdk.v1alpha.CapabilityRequest.payload:type_name -> google.protobuf.Any - 29, // 8: sdk.v1alpha.CapabilityResponse.payload:type_name -> google.protobuf.Any - 29, // 9: sdk.v1alpha.TriggerSubscription.payload:type_name -> google.protobuf.Any - 10, // 10: sdk.v1alpha.TriggerSubscriptionRequest.subscriptions:type_name -> sdk.v1alpha.TriggerSubscription - 29, // 11: sdk.v1alpha.Trigger.payload:type_name -> google.protobuf.Any - 26, // 12: sdk.v1alpha.AwaitCapabilitiesResponse.responses:type_name -> sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntry - 30, // 13: sdk.v1alpha.ExecuteRequest.subscribe:type_name -> google.protobuf.Empty - 12, // 14: sdk.v1alpha.ExecuteRequest.trigger:type_name -> sdk.v1alpha.Trigger - 28, // 15: sdk.v1alpha.ExecutionResult.value:type_name -> values.v1.Value - 11, // 16: sdk.v1alpha.ExecutionResult.trigger_subscriptions:type_name -> sdk.v1alpha.TriggerSubscriptionRequest - 20, // 17: sdk.v1alpha.GetSecretsRequest.requests:type_name -> sdk.v1alpha.SecretRequest - 27, // 18: sdk.v1alpha.AwaitSecretsResponse.responses:type_name -> sdk.v1alpha.AwaitSecretsResponse.ResponsesEntry - 21, // 19: sdk.v1alpha.SecretResponse.secret:type_name -> sdk.v1alpha.Secret - 22, // 20: sdk.v1alpha.SecretResponse.error:type_name -> sdk.v1alpha.SecretError - 23, // 21: sdk.v1alpha.SecretResponses.responses:type_name -> sdk.v1alpha.SecretResponse - 4, // 22: sdk.v1alpha.FieldsMap.FieldsEntry.value:type_name -> sdk.v1alpha.ConsensusDescriptor - 9, // 23: sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntry.value:type_name -> sdk.v1alpha.CapabilityResponse - 24, // 24: sdk.v1alpha.AwaitSecretsResponse.ResponsesEntry.value:type_name -> sdk.v1alpha.SecretResponses - 25, // [25:25] is the sub-list for method output_type - 25, // [25:25] is the sub-list for method input_type - 25, // [25:25] is the sub-list for extension type_name - 25, // [25:25] is the sub-list for extension extendee - 0, // [0:25] is the sub-list for field type_name + 4, // 5: sdk.v1alpha.ConsensusDescriptor.fields_map:type_name -> sdk.v1alpha.FieldsMap + 8, // 6: sdk.v1alpha.ReportResponse.sigs:type_name -> sdk.v1alpha.AttributedSignature + 35, // 7: sdk.v1alpha.CapabilityRequest.payload:type_name -> google.protobuf.Any + 35, // 8: sdk.v1alpha.CapabilityResponse.payload:type_name -> google.protobuf.Any + 35, // 9: sdk.v1alpha.TriggerSubscription.payload:type_name -> google.protobuf.Any + 18, // 10: sdk.v1alpha.TriggerSubscription.requirements:type_name -> sdk.v1alpha.Requirements + 2, // 11: sdk.v1alpha.TeeTypeAndRegions.type:type_name -> sdk.v1alpha.TeeType + 11, // 12: sdk.v1alpha.TriggerSubscriptionRequest.subscriptions:type_name -> sdk.v1alpha.TriggerSubscription + 35, // 13: sdk.v1alpha.Trigger.payload:type_name -> google.protobuf.Any + 12, // 14: sdk.v1alpha.TeeTypesAndRegions.tee_type_and_regions:type_name -> sdk.v1alpha.TeeTypeAndRegions + 15, // 15: sdk.v1alpha.Tee.any_regions:type_name -> sdk.v1alpha.Regions + 16, // 16: sdk.v1alpha.Tee.tee_types_and_regions:type_name -> sdk.v1alpha.TeeTypesAndRegions + 17, // 17: sdk.v1alpha.Requirements.tee:type_name -> sdk.v1alpha.Tee + 32, // 18: sdk.v1alpha.AwaitCapabilitiesResponse.responses:type_name -> sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntry + 36, // 19: sdk.v1alpha.ExecuteRequest.subscribe:type_name -> google.protobuf.Empty + 14, // 20: sdk.v1alpha.ExecuteRequest.trigger:type_name -> sdk.v1alpha.Trigger + 34, // 21: sdk.v1alpha.ExecutionResult.value:type_name -> values.v1.Value + 13, // 22: sdk.v1alpha.ExecutionResult.trigger_subscriptions:type_name -> sdk.v1alpha.TriggerSubscriptionRequest + 26, // 23: sdk.v1alpha.GetSecretsRequest.requests:type_name -> sdk.v1alpha.SecretRequest + 33, // 24: sdk.v1alpha.AwaitSecretsResponse.responses:type_name -> sdk.v1alpha.AwaitSecretsResponse.ResponsesEntry + 27, // 25: sdk.v1alpha.SecretResponse.secret:type_name -> sdk.v1alpha.Secret + 28, // 26: sdk.v1alpha.SecretResponse.error:type_name -> sdk.v1alpha.SecretError + 29, // 27: sdk.v1alpha.SecretResponses.responses:type_name -> sdk.v1alpha.SecretResponse + 5, // 28: sdk.v1alpha.FieldsMap.FieldsEntry.value:type_name -> sdk.v1alpha.ConsensusDescriptor + 10, // 29: sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntry.value:type_name -> sdk.v1alpha.CapabilityResponse + 30, // 30: sdk.v1alpha.AwaitSecretsResponse.ResponsesEntry.value:type_name -> sdk.v1alpha.SecretResponses + 31, // [31:31] is the sub-list for method output_type + 31, // [31:31] is the sub-list for method input_type + 31, // [31:31] is the sub-list for extension type_name + 31, // [31:31] is the sub-list for extension extendee + 0, // [0:31] is the sub-list for field type_name } func init() { file_sdk_v1alpha_sdk_proto_init() } @@ -1806,16 +2156,20 @@ func file_sdk_v1alpha_sdk_proto_init() { (*CapabilityResponse_Payload)(nil), (*CapabilityResponse_Error)(nil), } - file_sdk_v1alpha_sdk_proto_msgTypes[13].OneofWrappers = []any{ + file_sdk_v1alpha_sdk_proto_msgTypes[14].OneofWrappers = []any{ + (*Tee_AnyRegions)(nil), + (*Tee_TeeTypesAndRegions)(nil), + } + file_sdk_v1alpha_sdk_proto_msgTypes[18].OneofWrappers = []any{ (*ExecuteRequest_Subscribe)(nil), (*ExecuteRequest_Trigger)(nil), } - file_sdk_v1alpha_sdk_proto_msgTypes[14].OneofWrappers = []any{ + file_sdk_v1alpha_sdk_proto_msgTypes[19].OneofWrappers = []any{ (*ExecutionResult_Value)(nil), (*ExecutionResult_Error)(nil), (*ExecutionResult_TriggerSubscriptions)(nil), } - file_sdk_v1alpha_sdk_proto_msgTypes[21].OneofWrappers = []any{ + file_sdk_v1alpha_sdk_proto_msgTypes[26].OneofWrappers = []any{ (*SecretResponse_Secret)(nil), (*SecretResponse_Error)(nil), } @@ -1824,8 +2178,8 @@ func file_sdk_v1alpha_sdk_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_sdk_v1alpha_sdk_proto_rawDesc), len(file_sdk_v1alpha_sdk_proto_rawDesc)), - NumEnums: 2, - NumMessages: 26, + NumEnums: 3, + NumMessages: 31, NumExtensions: 0, NumServices: 0, }, diff --git a/cre/go/tools/generator/cre_metadata.pb.go b/cre/go/tools/generator/cre_metadata.pb.go index 7026ea3f..655b2f0e 100644 --- a/cre/go/tools/generator/cre_metadata.pb.go +++ b/cre/go/tools/generator/cre_metadata.pb.go @@ -23,6 +23,52 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type AdditionalEnvironments int32 + +const ( + AdditionalEnvironments_ADDITIONAL_ENVIRONMENTS_UNSPECIFIED AdditionalEnvironments = 0 + AdditionalEnvironments_ADDITIONAL_ENVIRONMENTS_TEE AdditionalEnvironments = 1 +) + +// Enum value maps for AdditionalEnvironments. +var ( + AdditionalEnvironments_name = map[int32]string{ + 0: "ADDITIONAL_ENVIRONMENTS_UNSPECIFIED", + 1: "ADDITIONAL_ENVIRONMENTS_TEE", + } + AdditionalEnvironments_value = map[string]int32{ + "ADDITIONAL_ENVIRONMENTS_UNSPECIFIED": 0, + "ADDITIONAL_ENVIRONMENTS_TEE": 1, + } +) + +func (x AdditionalEnvironments) Enum() *AdditionalEnvironments { + p := new(AdditionalEnvironments) + *p = x + return p +} + +func (x AdditionalEnvironments) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AdditionalEnvironments) Descriptor() protoreflect.EnumDescriptor { + return file_tools_generator_v1alpha_cre_metadata_proto_enumTypes[0].Descriptor() +} + +func (AdditionalEnvironments) Type() protoreflect.EnumType { + return &file_tools_generator_v1alpha_cre_metadata_proto_enumTypes[0] +} + +func (x AdditionalEnvironments) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AdditionalEnvironments.Descriptor instead. +func (AdditionalEnvironments) EnumDescriptor() ([]byte, []int) { + return file_tools_generator_v1alpha_cre_metadata_proto_rawDescGZIP(), []int{0} +} + type StringLabel struct { state protoimpl.MessageState `protogen:"open.v1"` Defaults map[string]string `protobuf:"bytes,1,rep,name=defaults,proto3" json:"defaults,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` @@ -374,12 +420,13 @@ func (*Label_Uint32Label) isLabel_Kind() {} func (*Label_Int32Label) isLabel_Kind() {} type CapabilityMetadata struct { - state protoimpl.MessageState `protogen:"open.v1"` - Mode sdk.Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=sdk.v1alpha.Mode" json:"mode,omitempty"` - CapabilityId string `protobuf:"bytes,2,opt,name=capability_id,json=capabilityId,proto3" json:"capability_id,omitempty"` - Labels map[string]*Label `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Mode sdk.Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=sdk.v1alpha.Mode" json:"mode,omitempty"` + CapabilityId string `protobuf:"bytes,2,opt,name=capability_id,json=capabilityId,proto3" json:"capability_id,omitempty"` + Labels map[string]*Label `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + AdditionalEnvironments []AdditionalEnvironments `protobuf:"varint,4,rep,packed,name=additional_environments,json=additionalEnvironments,proto3,enum=tools.generator.v1alpha.AdditionalEnvironments" json:"additional_environments,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CapabilityMetadata) Reset() { @@ -433,6 +480,13 @@ func (x *CapabilityMetadata) GetLabels() map[string]*Label { return nil } +func (x *CapabilityMetadata) GetAdditionalEnvironments() []AdditionalEnvironments { + if x != nil { + return x.AdditionalEnvironments + } + return nil +} + type CapabilityMethodMetadata struct { state protoimpl.MessageState `protogen:"open.v1"` MapToUntypedApi bool `protobuf:"varint,1,opt,name=map_to_untyped_api,json=mapToUntypedApi,proto3" json:"map_to_untyped_api,omitempty"` @@ -548,16 +602,20 @@ const file_tools_generator_v1alpha_cre_metadata_proto_rawDesc = "" + "\fuint32_label\x18\x04 \x01(\v2$.tools.generator.v1alpha.Uint32LabelH\x00R\vuint32Label\x12F\n" + "\vint32_label\x18\x05 \x01(\v2#.tools.generator.v1alpha.Int32LabelH\x00R\n" + "int32LabelB\x06\n" + - "\x04kind\"\x8c\x02\n" + + "\x04kind\"\xf6\x02\n" + "\x12CapabilityMetadata\x12%\n" + "\x04mode\x18\x01 \x01(\x0e2\x11.sdk.v1alpha.ModeR\x04mode\x12#\n" + "\rcapability_id\x18\x02 \x01(\tR\fcapabilityId\x12O\n" + - "\x06labels\x18\x03 \x03(\v27.tools.generator.v1alpha.CapabilityMetadata.LabelsEntryR\x06labels\x1aY\n" + + "\x06labels\x18\x03 \x03(\v27.tools.generator.v1alpha.CapabilityMetadata.LabelsEntryR\x06labels\x12h\n" + + "\x17additional_environments\x18\x04 \x03(\x0e2/.tools.generator.v1alpha.AdditionalEnvironmentsR\x16additionalEnvironments\x1aY\n" + "\vLabelsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x124\n" + "\x05value\x18\x02 \x01(\v2\x1e.tools.generator.v1alpha.LabelR\x05value:\x028\x01\"G\n" + "\x18CapabilityMethodMetadata\x12+\n" + - "\x12map_to_untyped_api\x18\x01 \x01(\bR\x0fmapToUntypedApi:n\n" + + "\x12map_to_untyped_api\x18\x01 \x01(\bR\x0fmapToUntypedApi*b\n" + + "\x16AdditionalEnvironments\x12'\n" + + "#ADDITIONAL_ENVIRONMENTS_UNSPECIFIED\x10\x00\x12\x1f\n" + + "\x1bADDITIONAL_ENVIRONMENTS_TEE\x10\x01:n\n" + "\n" + "capability\x12\x1f.google.protobuf.ServiceOptions\x18І\x03 \x01(\v2+.tools.generator.v1alpha.CapabilityMetadataR\n" + "capability:k\n" + @@ -575,49 +633,52 @@ func file_tools_generator_v1alpha_cre_metadata_proto_rawDescGZIP() []byte { return file_tools_generator_v1alpha_cre_metadata_proto_rawDescData } +var file_tools_generator_v1alpha_cre_metadata_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_tools_generator_v1alpha_cre_metadata_proto_msgTypes = make([]protoimpl.MessageInfo, 14) var file_tools_generator_v1alpha_cre_metadata_proto_goTypes = []any{ - (*StringLabel)(nil), // 0: tools.generator.v1alpha.StringLabel - (*Uint64Label)(nil), // 1: tools.generator.v1alpha.Uint64Label - (*Uint32Label)(nil), // 2: tools.generator.v1alpha.Uint32Label - (*Int64Label)(nil), // 3: tools.generator.v1alpha.Int64Label - (*Int32Label)(nil), // 4: tools.generator.v1alpha.Int32Label - (*Label)(nil), // 5: tools.generator.v1alpha.Label - (*CapabilityMetadata)(nil), // 6: tools.generator.v1alpha.CapabilityMetadata - (*CapabilityMethodMetadata)(nil), // 7: tools.generator.v1alpha.CapabilityMethodMetadata - nil, // 8: tools.generator.v1alpha.StringLabel.DefaultsEntry - nil, // 9: tools.generator.v1alpha.Uint64Label.DefaultsEntry - nil, // 10: tools.generator.v1alpha.Uint32Label.DefaultsEntry - nil, // 11: tools.generator.v1alpha.Int64Label.DefaultsEntry - nil, // 12: tools.generator.v1alpha.Int32Label.DefaultsEntry - nil, // 13: tools.generator.v1alpha.CapabilityMetadata.LabelsEntry - (sdk.Mode)(0), // 14: sdk.v1alpha.Mode - (*descriptorpb.ServiceOptions)(nil), // 15: google.protobuf.ServiceOptions - (*descriptorpb.MethodOptions)(nil), // 16: google.protobuf.MethodOptions + (AdditionalEnvironments)(0), // 0: tools.generator.v1alpha.AdditionalEnvironments + (*StringLabel)(nil), // 1: tools.generator.v1alpha.StringLabel + (*Uint64Label)(nil), // 2: tools.generator.v1alpha.Uint64Label + (*Uint32Label)(nil), // 3: tools.generator.v1alpha.Uint32Label + (*Int64Label)(nil), // 4: tools.generator.v1alpha.Int64Label + (*Int32Label)(nil), // 5: tools.generator.v1alpha.Int32Label + (*Label)(nil), // 6: tools.generator.v1alpha.Label + (*CapabilityMetadata)(nil), // 7: tools.generator.v1alpha.CapabilityMetadata + (*CapabilityMethodMetadata)(nil), // 8: tools.generator.v1alpha.CapabilityMethodMetadata + nil, // 9: tools.generator.v1alpha.StringLabel.DefaultsEntry + nil, // 10: tools.generator.v1alpha.Uint64Label.DefaultsEntry + nil, // 11: tools.generator.v1alpha.Uint32Label.DefaultsEntry + nil, // 12: tools.generator.v1alpha.Int64Label.DefaultsEntry + nil, // 13: tools.generator.v1alpha.Int32Label.DefaultsEntry + nil, // 14: tools.generator.v1alpha.CapabilityMetadata.LabelsEntry + (sdk.Mode)(0), // 15: sdk.v1alpha.Mode + (*descriptorpb.ServiceOptions)(nil), // 16: google.protobuf.ServiceOptions + (*descriptorpb.MethodOptions)(nil), // 17: google.protobuf.MethodOptions } var file_tools_generator_v1alpha_cre_metadata_proto_depIdxs = []int32{ - 8, // 0: tools.generator.v1alpha.StringLabel.defaults:type_name -> tools.generator.v1alpha.StringLabel.DefaultsEntry - 9, // 1: tools.generator.v1alpha.Uint64Label.defaults:type_name -> tools.generator.v1alpha.Uint64Label.DefaultsEntry - 10, // 2: tools.generator.v1alpha.Uint32Label.defaults:type_name -> tools.generator.v1alpha.Uint32Label.DefaultsEntry - 11, // 3: tools.generator.v1alpha.Int64Label.defaults:type_name -> tools.generator.v1alpha.Int64Label.DefaultsEntry - 12, // 4: tools.generator.v1alpha.Int32Label.defaults:type_name -> tools.generator.v1alpha.Int32Label.DefaultsEntry - 0, // 5: tools.generator.v1alpha.Label.string_label:type_name -> tools.generator.v1alpha.StringLabel - 1, // 6: tools.generator.v1alpha.Label.uint64_label:type_name -> tools.generator.v1alpha.Uint64Label - 3, // 7: tools.generator.v1alpha.Label.int64_label:type_name -> tools.generator.v1alpha.Int64Label - 2, // 8: tools.generator.v1alpha.Label.uint32_label:type_name -> tools.generator.v1alpha.Uint32Label - 4, // 9: tools.generator.v1alpha.Label.int32_label:type_name -> tools.generator.v1alpha.Int32Label - 14, // 10: tools.generator.v1alpha.CapabilityMetadata.mode:type_name -> sdk.v1alpha.Mode - 13, // 11: tools.generator.v1alpha.CapabilityMetadata.labels:type_name -> tools.generator.v1alpha.CapabilityMetadata.LabelsEntry - 5, // 12: tools.generator.v1alpha.CapabilityMetadata.LabelsEntry.value:type_name -> tools.generator.v1alpha.Label - 15, // 13: tools.generator.v1alpha.capability:extendee -> google.protobuf.ServiceOptions - 16, // 14: tools.generator.v1alpha.method:extendee -> google.protobuf.MethodOptions - 6, // 15: tools.generator.v1alpha.capability:type_name -> tools.generator.v1alpha.CapabilityMetadata - 7, // 16: tools.generator.v1alpha.method:type_name -> tools.generator.v1alpha.CapabilityMethodMetadata - 17, // [17:17] is the sub-list for method output_type - 17, // [17:17] is the sub-list for method input_type - 15, // [15:17] is the sub-list for extension type_name - 13, // [13:15] is the sub-list for extension extendee - 0, // [0:13] is the sub-list for field type_name + 9, // 0: tools.generator.v1alpha.StringLabel.defaults:type_name -> tools.generator.v1alpha.StringLabel.DefaultsEntry + 10, // 1: tools.generator.v1alpha.Uint64Label.defaults:type_name -> tools.generator.v1alpha.Uint64Label.DefaultsEntry + 11, // 2: tools.generator.v1alpha.Uint32Label.defaults:type_name -> tools.generator.v1alpha.Uint32Label.DefaultsEntry + 12, // 3: tools.generator.v1alpha.Int64Label.defaults:type_name -> tools.generator.v1alpha.Int64Label.DefaultsEntry + 13, // 4: tools.generator.v1alpha.Int32Label.defaults:type_name -> tools.generator.v1alpha.Int32Label.DefaultsEntry + 1, // 5: tools.generator.v1alpha.Label.string_label:type_name -> tools.generator.v1alpha.StringLabel + 2, // 6: tools.generator.v1alpha.Label.uint64_label:type_name -> tools.generator.v1alpha.Uint64Label + 4, // 7: tools.generator.v1alpha.Label.int64_label:type_name -> tools.generator.v1alpha.Int64Label + 3, // 8: tools.generator.v1alpha.Label.uint32_label:type_name -> tools.generator.v1alpha.Uint32Label + 5, // 9: tools.generator.v1alpha.Label.int32_label:type_name -> tools.generator.v1alpha.Int32Label + 15, // 10: tools.generator.v1alpha.CapabilityMetadata.mode:type_name -> sdk.v1alpha.Mode + 14, // 11: tools.generator.v1alpha.CapabilityMetadata.labels:type_name -> tools.generator.v1alpha.CapabilityMetadata.LabelsEntry + 0, // 12: tools.generator.v1alpha.CapabilityMetadata.additional_environments:type_name -> tools.generator.v1alpha.AdditionalEnvironments + 6, // 13: tools.generator.v1alpha.CapabilityMetadata.LabelsEntry.value:type_name -> tools.generator.v1alpha.Label + 16, // 14: tools.generator.v1alpha.capability:extendee -> google.protobuf.ServiceOptions + 17, // 15: tools.generator.v1alpha.method:extendee -> google.protobuf.MethodOptions + 7, // 16: tools.generator.v1alpha.capability:type_name -> tools.generator.v1alpha.CapabilityMetadata + 8, // 17: tools.generator.v1alpha.method:type_name -> tools.generator.v1alpha.CapabilityMethodMetadata + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 16, // [16:18] is the sub-list for extension type_name + 14, // [14:16] is the sub-list for extension extendee + 0, // [0:14] is the sub-list for field type_name } func init() { file_tools_generator_v1alpha_cre_metadata_proto_init() } @@ -637,13 +698,14 @@ func file_tools_generator_v1alpha_cre_metadata_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_tools_generator_v1alpha_cre_metadata_proto_rawDesc), len(file_tools_generator_v1alpha_cre_metadata_proto_rawDesc)), - NumEnums: 0, + NumEnums: 1, NumMessages: 14, NumExtensions: 2, NumServices: 0, }, GoTypes: file_tools_generator_v1alpha_cre_metadata_proto_goTypes, DependencyIndexes: file_tools_generator_v1alpha_cre_metadata_proto_depIdxs, + EnumInfos: file_tools_generator_v1alpha_cre_metadata_proto_enumTypes, MessageInfos: file_tools_generator_v1alpha_cre_metadata_proto_msgTypes, ExtensionInfos: file_tools_generator_v1alpha_cre_metadata_proto_extTypes, }.Build() diff --git a/cre/sdk/v1alpha/sdk.proto b/cre/sdk/v1alpha/sdk.proto index 4be81f5e..bfa6c715 100644 --- a/cre/sdk/v1alpha/sdk.proto +++ b/cre/sdk/v1alpha/sdk.proto @@ -78,6 +78,17 @@ message TriggerSubscription { string id = 1; google.protobuf.Any payload = 2; string method = 3; + Requirements requirements = 4; +} + +enum TeeType { + TEE_TYPE_UNSPECIFIED = 0; + TEE_TYPE_AWS_NITRO = 1; +} + +message TeeTypeAndRegions { + TeeType type = 1; + repeated string regions = 3; } message TriggerSubscriptionRequest { @@ -89,6 +100,25 @@ message Trigger { google.protobuf.Any payload = 2; } +message Regions { + repeated string regions = 1; +} + +message TeeTypesAndRegions { + repeated TeeTypeAndRegions tee_type_and_regions = 1; +} + +message Tee { + oneof item { + Regions any_regions = 1; + TeeTypesAndRegions tee_types_and_regions = 2; + } +} + +message Requirements { + Tee tee = 1; +} + message AwaitCapabilitiesRequest { repeated int32 ids = 1; } diff --git a/cre/tools/generator/v1alpha/cre_metadata.proto b/cre/tools/generator/v1alpha/cre_metadata.proto index cc947db8..25b1f301 100644 --- a/cre/tools/generator/v1alpha/cre_metadata.proto +++ b/cre/tools/generator/v1alpha/cre_metadata.proto @@ -35,10 +35,16 @@ message Label { } } +enum AdditionalEnvironments { + ADDITIONAL_ENVIRONMENTS_UNSPECIFIED = 0; + ADDITIONAL_ENVIRONMENTS_TEE = 1; +} + message CapabilityMetadata { sdk.v1alpha.Mode mode = 1; string capability_id = 2; map labels = 3; + repeated AdditionalEnvironments additional_environments = 4; } extend google.protobuf.ServiceOptions { From fbb2de760573cdd187398fe322f2ae82f7542db9 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Thu, 21 May 2026 10:50:55 -0400 Subject: [PATCH 21/49] Split solana protos into WR and the rest 1/3 (#369) * revert solana * revert embeded * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- .../blockchain/solana/v1alpha/client.proto | 434 ----------------- cre/go/installer/pkg/embedded_gen.go | 440 ------------------ 2 files changed, 874 deletions(-) delete mode 100644 cre/capabilities/blockchain/solana/v1alpha/client.proto diff --git a/cre/capabilities/blockchain/solana/v1alpha/client.proto b/cre/capabilities/blockchain/solana/v1alpha/client.proto deleted file mode 100644 index ea287483..00000000 --- a/cre/capabilities/blockchain/solana/v1alpha/client.proto +++ /dev/null @@ -1,434 +0,0 @@ -syntax = "proto3"; -package capabilities.blockchain.solana.v1alpha; - -import "sdk/v1alpha/sdk.proto"; -import "tools/generator/v1alpha/cre_metadata.proto"; -import "values/v1/values.proto"; - -// Account/tx data encodings. -enum EncodingType { - ENCODING_TYPE_NONE = 0; - ENCODING_TYPE_BASE58 = 1; // for data <129 bytes - ENCODING_TYPE_BASE64 = 2; // any size - ENCODING_TYPE_BASE64_ZSTD = 3; // zstd-compressed, base64-wrapped - ENCODING_TYPE_JSON_PARSED = 4; // program parsers; fallback to base64 if unknown - ENCODING_TYPE_JSON = 5; // raw JSON (rare; prefer JSON_PARSED) -} - -// Read consistency of queried state. -enum CommitmentType { - COMMITMENT_TYPE_NONE = 0; - COMMITMENT_TYPE_FINALIZED = 1; // cluster-finalized - COMMITMENT_TYPE_CONFIRMED = 2; // voted by supermajority - COMMITMENT_TYPE_PROCESSED = 3; // node’s latest -} - -// Cluster confirmation status of a tx/signature. -enum ConfirmationStatusType { - CONFIRMATION_STATUS_TYPE_NONE = 0; - CONFIRMATION_STATUS_TYPE_PROCESSED = 1; - CONFIRMATION_STATUS_TYPE_CONFIRMED = 2; - CONFIRMATION_STATUS_TYPE_FINALIZED = 3; -} - -// Transaction execution status returned by submitters/simulations. -enum TxStatus { - TX_STATUS_FATAL = 0; // unrecoverable failure - TX_STATUS_ABORTED = 1; // not executed / dropped - TX_STATUS_SUCCESS = 2; // executed successfully -} - -// On-chain account state. -message Account { - uint64 lamports = 1; // balance in lamports (1e-9 SOL) - bytes owner = 2; // 32-byte program id (Pubkey) - DataBytesOrJSON data = 3; // account data (encoded or JSON) - bool executable = 4; // true if this is a program account - values.v1.BigInt rent_epoch = 5; // next rent epoch - uint64 space = 6; // data length in bytes -} - -// Compute budget configuration when submitting txs. -message ComputeConfig { - uint32 compute_limit = 1; // max CUs (approx per-tx limit) -} - -// Raw bytes vs parsed JSON (as returned by RPC). -message DataBytesOrJSON { - EncodingType encoding = 1; - oneof body { - bytes raw = 2; // program data (node’s base64/base58 decoded) - bytes json = 3; // json: UTF-8 bytes of the jsonParsed payload. - } -} - -// Return a slice of account data. -message DataSlice { - uint64 offset = 1; // start byte - uint64 length = 2; // number of bytes -} - -// Options for GetAccountInfo. -message GetAccountInfoOpts { - EncodingType encoding = 1; // data encoding - CommitmentType commitment = 2; // read consistency - DataSlice data_slice = 3; // optional slice window - uint64 min_context_slot = 4; // lower bound slot -} - -// Reply for GetAccountInfoWithOpts. -message GetAccountInfoWithOptsReply { - RPCContext rpc_context = 1; // read slot - optional Account value = 2; // account (may be empty) -} - -// Request for GetAccountInfoWithOpts. -message GetAccountInfoWithOptsRequest { - bytes account = 1; // 32-byte Pubkey - GetAccountInfoOpts opts = 2; -} - -// Reply for GetBalance. -message GetBalanceReply { - uint64 value = 1; // lamports -} - -// Request for GetBalance. -message GetBalanceRequest { - bytes addr = 1; // 32-byte Pubkey - CommitmentType commitment = 2; // read consistency -} - -// Options for GetBlock. -message GetBlockOpts { - CommitmentType commitment = 4; // read consistency -} - -// Block response. -message GetBlockReply { - bytes blockhash = 1; // 32-byte block hash - bytes previous_blockhash = 2; // 32-byte parent hash - uint64 parent_slot = 3; - optional int64 block_time = 4; // unix seconds, node may not report it - uint64 block_height = 5; // chain height -} - -// Request for GetBlock. -message GetBlockRequest { - uint64 slot = 1; // target slot - GetBlockOpts opts = 2; -} - -// Fee quote for a base58-encoded Message. -message GetFeeForMessageReply { - uint64 fee = 1; // lamports -} - -message GetFeeForMessageRequest { - string message = 1; // must be base58-encoded Message - CommitmentType commitment = 2; // read consistency -} - -// Options for GetMultipleAccounts. -message GetMultipleAccountsOpts { - EncodingType encoding = 1; - CommitmentType commitment = 2; - DataSlice data_slice = 3; - uint64 min_context_slot = 4; -} - -message OptionalAccountWrapper { - optional Account account = 1; -} - -// Reply for GetMultipleAccountsWithOpts. -message GetMultipleAccountsWithOptsReply { - RPCContext rpc_context = 1; // read slot - repeated OptionalAccountWrapper value = 2; // accounts (nil entries allowed) -} - -// Request for GetMultipleAccountsWithOpts. -message GetMultipleAccountsWithOptsRequest { - repeated bytes accounts = 1; // list of 32-byte Pubkeys - GetMultipleAccountsOpts opts = 2; -} - -// Reply for GetSignatureStatuses. -message GetSignatureStatusesReply { - repeated GetSignatureStatusesResult results = 1; // 1:1 with input -} - -// Request for GetSignatureStatuses. -message GetSignatureStatusesRequest { - repeated bytes sigs = 1; // 64-byte signatures -} - -// Per-signature status. -message GetSignatureStatusesResult { - uint64 slot = 1; // processed slot - optional uint64 confirmations = 2; // null->0 here - string err = 3; // error JSON string (empty on success) - ConfirmationStatusType confirmation_status = 4; -} - -// Current “height” (blocks below latest). -message GetSlotHeightReply { - uint64 height = 1; -} - -message GetSlotHeightRequest { - CommitmentType commitment = 1; // read consistency -} - -// Message header counts. -message MessageHeader { - uint32 num_required_signatures = 1; // signer count - uint32 num_readonly_signed_accounts = 2; // trailing signed RO - uint32 num_readonly_unsigned_accounts = 3; // trailing unsigned RO -} - -// Parsed message (no address tables). -message ParsedMessage { - bytes recent_blockhash = 1; // 32-byte Hash - repeated bytes account_keys = 2; // list of 32-byte Pubkeys - MessageHeader header = 3; - repeated CompiledInstruction instructions = 4; -} - -// Parsed transaction (signatures + message). -message ParsedTransaction { - repeated bytes signatures = 1; // 64-byte signatures - ParsedMessage message = 2; -} - -// Token amount (UI-friendly). -message UiTokenAmount { - string amount = 1; // raw integer string - uint32 decimals = 2; // mint decimals - string ui_amount_string = 4; // amount / 10^decimals -} - -// SPL token balance entry. -message TokenBalance { - uint32 account_index = 1; // index in account_keys - optional bytes owner = 2; // 32-byte owner (optional) - optional bytes program_id = 3; // 32-byte token program (optional) - bytes mint = 4; // 32-byte mint - UiTokenAmount ui = 5; // formatted amounts -} - -// Inner instruction list at a given outer instruction index. -message InnerInstruction { - uint32 index = 1; // outer ix index - repeated CompiledInstruction instructions = 2; // invoked ixs -} - -// Address table lookups expanded by loader. -message LoadedAddresses { - repeated bytes readonly = 1; // 32-byte Pubkeys - repeated bytes writable = 2; // 32-byte Pubkeys -} - -// Compiled (program) instruction. -message CompiledInstruction { - uint32 program_id_index = 1; // index into account_keys - repeated uint32 accounts = 2; // indices into account_keys - bytes data = 3; // program input bytes - uint32 stack_height = 4; // if recorded by node -} - -// Raw bytes with encoding tag. -message Data { - bytes content = 1; // raw bytes - EncodingType encoding = 2; // how it was encoded originally -} - -// Program return data. -message ReturnData { - bytes program_id = 1; // 32-byte Pubkey - Data data = 2; // raw return bytes -} - -// Transaction execution metadata. -message TransactionMeta { - string err_json = 1; // error JSON (empty on success) - uint64 fee = 2; // lamports - repeated uint64 pre_balances = 3; // lamports per account - repeated uint64 post_balances = 4; // lamports per account - repeated string log_messages = 5; // runtime logs - repeated TokenBalance pre_token_balances = 6; - repeated TokenBalance post_token_balances = 7; - repeated InnerInstruction inner_instructions = 8; - LoadedAddresses loaded_addresses = 9; - ReturnData return_data = 10; - optional uint64 compute_units_consumed = 11; // CUs -} - -// Transaction envelope: raw bytes or parsed struct. -message TransactionEnvelope { - oneof transaction { - bytes raw = 1; // raw tx bytes (for RAW/base64) - ParsedTransaction parsed = 2; // parsed tx (for JSON_PARSED) - } -} - -// GetTransaction reply. -message GetTransactionReply { - uint64 slot = 1; // processed slot - optional int64 block_time = 2; // unix seconds - optional TransactionEnvelope transaction = 3; // tx bytes or parsed - optional TransactionMeta meta = 4; // may be omitted by node -} - -// GetTransaction request. -message GetTransactionRequest { - bytes signature = 1; // 64-byte signature -} - -// RPC read context. -message RPCContext { - uint64 slot = 1; -} - -// Simulation options. -message SimulateTXOpts { - bool sig_verify = 1; // verify sigs - CommitmentType commitment = 2; // read consistency - bool replace_recent_blockhash = 3; // refresh blockhash - SimulateTransactionAccountsOpts accounts = 4; // return accounts -} - -// Simulation result. -message SimulateTXReply { - string err = 1; // empty on success - repeated string logs = 2; // runtime logs - repeated Account accounts = 3; // returned accounts - uint64 units_consumed = 4; // CUs -} - -// Simulation request. -message SimulateTXRequest { - bytes receiver = 1; // 32-byte program id (target) - string encoded_transaction = 2; // base64/base58 tx - SimulateTXOpts opts = 3; -} - -// Accounts to return during simulation. -message SimulateTransactionAccountsOpts { - EncodingType encoding = 1; // account data encoding - repeated bytes addresses = 2; // 32-byte Pubkeys -} - -enum ComparisonOperator { - COMPARISON_OPERATOR_EQ = 0; - COMPARISON_OPERATOR_NEQ = 1; - COMPARISON_OPERATOR_GT = 2; - COMPARISON_OPERATOR_LT = 3; - COMPARISON_OPERATOR_GTE = 4; - COMPARISON_OPERATOR_LTE = 5; -} - -message ValueComparator { - bytes value = 1; - ComparisonOperator operator = 2; -} - -message SubkeyConfig { - repeated string path = 1; - repeated ValueComparator comparers = 2; -} - -message CPIFilterConfig { - bytes dest_address = 1; - bytes method_name = 2; -} - -message FilterLogTriggerRequest { - string name = 1; - bytes address = 2; // Solana PublicKey (32 bytes) - string event_name = 3; - bytes contract_idl_json = 4; - repeated SubkeyConfig subkeys = 5; - optional CPIFilterConfig cpi_filter_config = 6; -} - -message Log { - string chain_id = 1; // Chain identifier - int64 log_index = 2; // Index of the log within the block - bytes block_hash = 3; // 32-byte block hash - int64 block_number = 4; // Block/slot number - uint64 block_timestamp = 5; // Unix timestamp of the block - bytes address = 6; // 32-byte program PublicKey - bytes event_sig = 7; // 8-byte event signature - bytes tx_hash = 8; // 64-byte transaction signature - bytes data = 9; // Decoded event data - int64 sequence_num = 10; // Sequence number for ordering - optional string error = 11; // Error message if log processing failed -} - -// All metas are non-signers. -message AccountMeta { - bytes public_key = 1; // 32 bytes account public key - bool is_writable = 2; // write flag -} - -message WriteReportRequest { - repeated AccountMeta remaining_accounts = 1; // accounts that are required by the receiver to accept the report - bytes receiver = 2; // 32 bytes receiver - optional ComputeConfig compute_config = 3; - sdk.v1alpha.ReportResponse report = 4; -} - -enum ReceiverContractExecutionStatus { - RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS = 0; - RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED = 1; -} - -message WriteReportReply { - TxStatus tx_status = 1; - optional ReceiverContractExecutionStatus receiver_contract_execution_status = 2; - optional bytes tx_signature = 3; - optional uint64 transaction_fee = 4; - optional string error_message = 5; -} - -service Client { - option (tools.generator.v1alpha.capability) = { - mode: MODE_DON - capability_id: "solana@1.0.0" - labels: { - // from https://github.com/smartcontractkit/chain-selectors/blob/main/selectors.yml - // as a subset of the selectors supported on the CRE - key: "ChainSelector" - value: { - uint64_label: { - defaults: [ - { - key: "solana-mainnet" - value: 124615329519749607 - }, - { - key: "solana-testnet" - value: 6302590918974934319 - }, - { - key: "solana-devnet" - value: 16423721717087811551 - } - ] - } - } - } - }; - - rpc GetAccountInfoWithOpts(GetAccountInfoWithOptsRequest) returns (GetAccountInfoWithOptsReply); - rpc GetBalance(GetBalanceRequest) returns (GetBalanceReply); - rpc GetBlock(GetBlockRequest) returns (GetBlockReply); - rpc GetFeeForMessage(GetFeeForMessageRequest) returns (GetFeeForMessageReply); - rpc GetMultipleAccountsWithOpts(GetMultipleAccountsWithOptsRequest) returns (GetMultipleAccountsWithOptsReply); - rpc GetSignatureStatuses(GetSignatureStatusesRequest) returns (GetSignatureStatusesReply); - rpc GetSlotHeight(GetSlotHeightRequest) returns (GetSlotHeightReply); - rpc GetTransaction(GetTransactionRequest) returns (GetTransactionReply); - rpc LogTrigger(FilterLogTriggerRequest) returns (stream Log); - rpc WriteReport(WriteReportRequest) returns (WriteReportReply); -} diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 42e3e8fe..9d2ff466 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -630,442 +630,6 @@ message WriteReportReply { } ` -const blockchainSolanaV1alphaClientEmbedded = `syntax = "proto3"; -package capabilities.blockchain.solana.v1alpha; - -import "sdk/v1alpha/sdk.proto"; -import "tools/generator/v1alpha/cre_metadata.proto"; -import "values/v1/values.proto"; - -// Account/tx data encodings. -enum EncodingType { - ENCODING_TYPE_NONE = 0; - ENCODING_TYPE_BASE58 = 1; // for data <129 bytes - ENCODING_TYPE_BASE64 = 2; // any size - ENCODING_TYPE_BASE64_ZSTD = 3; // zstd-compressed, base64-wrapped - ENCODING_TYPE_JSON_PARSED = 4; // program parsers; fallback to base64 if unknown - ENCODING_TYPE_JSON = 5; // raw JSON (rare; prefer JSON_PARSED) -} - -// Read consistency of queried state. -enum CommitmentType { - COMMITMENT_TYPE_NONE = 0; - COMMITMENT_TYPE_FINALIZED = 1; // cluster-finalized - COMMITMENT_TYPE_CONFIRMED = 2; // voted by supermajority - COMMITMENT_TYPE_PROCESSED = 3; // node’s latest -} - -// Cluster confirmation status of a tx/signature. -enum ConfirmationStatusType { - CONFIRMATION_STATUS_TYPE_NONE = 0; - CONFIRMATION_STATUS_TYPE_PROCESSED = 1; - CONFIRMATION_STATUS_TYPE_CONFIRMED = 2; - CONFIRMATION_STATUS_TYPE_FINALIZED = 3; -} - -// Transaction execution status returned by submitters/simulations. -enum TxStatus { - TX_STATUS_FATAL = 0; // unrecoverable failure - TX_STATUS_ABORTED = 1; // not executed / dropped - TX_STATUS_SUCCESS = 2; // executed successfully -} - -// On-chain account state. -message Account { - uint64 lamports = 1; // balance in lamports (1e-9 SOL) - bytes owner = 2; // 32-byte program id (Pubkey) - DataBytesOrJSON data = 3; // account data (encoded or JSON) - bool executable = 4; // true if this is a program account - values.v1.BigInt rent_epoch = 5; // next rent epoch - uint64 space = 6; // data length in bytes -} - -// Compute budget configuration when submitting txs. -message ComputeConfig { - uint32 compute_limit = 1; // max CUs (approx per-tx limit) -} - -// Raw bytes vs parsed JSON (as returned by RPC). -message DataBytesOrJSON { - EncodingType encoding = 1; - oneof body { - bytes raw = 2; // program data (node’s base64/base58 decoded) - bytes json = 3; // json: UTF-8 bytes of the jsonParsed payload. - } -} - -// Return a slice of account data. -message DataSlice { - uint64 offset = 1; // start byte - uint64 length = 2; // number of bytes -} - -// Options for GetAccountInfo. -message GetAccountInfoOpts { - EncodingType encoding = 1; // data encoding - CommitmentType commitment = 2; // read consistency - DataSlice data_slice = 3; // optional slice window - uint64 min_context_slot = 4; // lower bound slot -} - -// Reply for GetAccountInfoWithOpts. -message GetAccountInfoWithOptsReply { - RPCContext rpc_context = 1; // read slot - optional Account value = 2; // account (may be empty) -} - -// Request for GetAccountInfoWithOpts. -message GetAccountInfoWithOptsRequest { - bytes account = 1; // 32-byte Pubkey - GetAccountInfoOpts opts = 2; -} - -// Reply for GetBalance. -message GetBalanceReply { - uint64 value = 1; // lamports -} - -// Request for GetBalance. -message GetBalanceRequest { - bytes addr = 1; // 32-byte Pubkey - CommitmentType commitment = 2; // read consistency -} - -// Options for GetBlock. -message GetBlockOpts { - CommitmentType commitment = 4; // read consistency -} - -// Block response. -message GetBlockReply { - bytes blockhash = 1; // 32-byte block hash - bytes previous_blockhash = 2; // 32-byte parent hash - uint64 parent_slot = 3; - optional int64 block_time = 4; // unix seconds, node may not report it - uint64 block_height = 5; // chain height -} - -// Request for GetBlock. -message GetBlockRequest { - uint64 slot = 1; // target slot - GetBlockOpts opts = 2; -} - -// Fee quote for a base58-encoded Message. -message GetFeeForMessageReply { - uint64 fee = 1; // lamports -} - -message GetFeeForMessageRequest { - string message = 1; // must be base58-encoded Message - CommitmentType commitment = 2; // read consistency -} - -// Options for GetMultipleAccounts. -message GetMultipleAccountsOpts { - EncodingType encoding = 1; - CommitmentType commitment = 2; - DataSlice data_slice = 3; - uint64 min_context_slot = 4; -} - -message OptionalAccountWrapper { - optional Account account = 1; -} - -// Reply for GetMultipleAccountsWithOpts. -message GetMultipleAccountsWithOptsReply { - RPCContext rpc_context = 1; // read slot - repeated OptionalAccountWrapper value = 2; // accounts (nil entries allowed) -} - -// Request for GetMultipleAccountsWithOpts. -message GetMultipleAccountsWithOptsRequest { - repeated bytes accounts = 1; // list of 32-byte Pubkeys - GetMultipleAccountsOpts opts = 2; -} - -// Reply for GetSignatureStatuses. -message GetSignatureStatusesReply { - repeated GetSignatureStatusesResult results = 1; // 1:1 with input -} - -// Request for GetSignatureStatuses. -message GetSignatureStatusesRequest { - repeated bytes sigs = 1; // 64-byte signatures -} - -// Per-signature status. -message GetSignatureStatusesResult { - uint64 slot = 1; // processed slot - optional uint64 confirmations = 2; // null->0 here - string err = 3; // error JSON string (empty on success) - ConfirmationStatusType confirmation_status = 4; -} - -// Current “height” (blocks below latest). -message GetSlotHeightReply { - uint64 height = 1; -} - -message GetSlotHeightRequest { - CommitmentType commitment = 1; // read consistency -} - -// Message header counts. -message MessageHeader { - uint32 num_required_signatures = 1; // signer count - uint32 num_readonly_signed_accounts = 2; // trailing signed RO - uint32 num_readonly_unsigned_accounts = 3; // trailing unsigned RO -} - -// Parsed message (no address tables). -message ParsedMessage { - bytes recent_blockhash = 1; // 32-byte Hash - repeated bytes account_keys = 2; // list of 32-byte Pubkeys - MessageHeader header = 3; - repeated CompiledInstruction instructions = 4; -} - -// Parsed transaction (signatures + message). -message ParsedTransaction { - repeated bytes signatures = 1; // 64-byte signatures - ParsedMessage message = 2; -} - -// Token amount (UI-friendly). -message UiTokenAmount { - string amount = 1; // raw integer string - uint32 decimals = 2; // mint decimals - string ui_amount_string = 4; // amount / 10^decimals -} - -// SPL token balance entry. -message TokenBalance { - uint32 account_index = 1; // index in account_keys - optional bytes owner = 2; // 32-byte owner (optional) - optional bytes program_id = 3; // 32-byte token program (optional) - bytes mint = 4; // 32-byte mint - UiTokenAmount ui = 5; // formatted amounts -} - -// Inner instruction list at a given outer instruction index. -message InnerInstruction { - uint32 index = 1; // outer ix index - repeated CompiledInstruction instructions = 2; // invoked ixs -} - -// Address table lookups expanded by loader. -message LoadedAddresses { - repeated bytes readonly = 1; // 32-byte Pubkeys - repeated bytes writable = 2; // 32-byte Pubkeys -} - -// Compiled (program) instruction. -message CompiledInstruction { - uint32 program_id_index = 1; // index into account_keys - repeated uint32 accounts = 2; // indices into account_keys - bytes data = 3; // program input bytes - uint32 stack_height = 4; // if recorded by node -} - -// Raw bytes with encoding tag. -message Data { - bytes content = 1; // raw bytes - EncodingType encoding = 2; // how it was encoded originally -} - -// Program return data. -message ReturnData { - bytes program_id = 1; // 32-byte Pubkey - Data data = 2; // raw return bytes -} - -// Transaction execution metadata. -message TransactionMeta { - string err_json = 1; // error JSON (empty on success) - uint64 fee = 2; // lamports - repeated uint64 pre_balances = 3; // lamports per account - repeated uint64 post_balances = 4; // lamports per account - repeated string log_messages = 5; // runtime logs - repeated TokenBalance pre_token_balances = 6; - repeated TokenBalance post_token_balances = 7; - repeated InnerInstruction inner_instructions = 8; - LoadedAddresses loaded_addresses = 9; - ReturnData return_data = 10; - optional uint64 compute_units_consumed = 11; // CUs -} - -// Transaction envelope: raw bytes or parsed struct. -message TransactionEnvelope { - oneof transaction { - bytes raw = 1; // raw tx bytes (for RAW/base64) - ParsedTransaction parsed = 2; // parsed tx (for JSON_PARSED) - } -} - -// GetTransaction reply. -message GetTransactionReply { - uint64 slot = 1; // processed slot - optional int64 block_time = 2; // unix seconds - optional TransactionEnvelope transaction = 3; // tx bytes or parsed - optional TransactionMeta meta = 4; // may be omitted by node -} - -// GetTransaction request. -message GetTransactionRequest { - bytes signature = 1; // 64-byte signature -} - -// RPC read context. -message RPCContext { - uint64 slot = 1; -} - -// Simulation options. -message SimulateTXOpts { - bool sig_verify = 1; // verify sigs - CommitmentType commitment = 2; // read consistency - bool replace_recent_blockhash = 3; // refresh blockhash - SimulateTransactionAccountsOpts accounts = 4; // return accounts -} - -// Simulation result. -message SimulateTXReply { - string err = 1; // empty on success - repeated string logs = 2; // runtime logs - repeated Account accounts = 3; // returned accounts - uint64 units_consumed = 4; // CUs -} - -// Simulation request. -message SimulateTXRequest { - bytes receiver = 1; // 32-byte program id (target) - string encoded_transaction = 2; // base64/base58 tx - SimulateTXOpts opts = 3; -} - -// Accounts to return during simulation. -message SimulateTransactionAccountsOpts { - EncodingType encoding = 1; // account data encoding - repeated bytes addresses = 2; // 32-byte Pubkeys -} - -enum ComparisonOperator { - COMPARISON_OPERATOR_EQ = 0; - COMPARISON_OPERATOR_NEQ = 1; - COMPARISON_OPERATOR_GT = 2; - COMPARISON_OPERATOR_LT = 3; - COMPARISON_OPERATOR_GTE = 4; - COMPARISON_OPERATOR_LTE = 5; -} - -message ValueComparator { - bytes value = 1; - ComparisonOperator operator = 2; -} - -message SubkeyConfig { - repeated string path = 1; - repeated ValueComparator comparers = 2; -} - -message CPIFilterConfig { - bytes dest_address = 1; - bytes method_name = 2; -} - -message FilterLogTriggerRequest { - string name = 1; - bytes address = 2; // Solana PublicKey (32 bytes) - string event_name = 3; - bytes contract_idl_json = 4; - repeated SubkeyConfig subkeys = 5; - optional CPIFilterConfig cpi_filter_config = 6; -} - -message Log { - string chain_id = 1; // Chain identifier - int64 log_index = 2; // Index of the log within the block - bytes block_hash = 3; // 32-byte block hash - int64 block_number = 4; // Block/slot number - uint64 block_timestamp = 5; // Unix timestamp of the block - bytes address = 6; // 32-byte program PublicKey - bytes event_sig = 7; // 8-byte event signature - bytes tx_hash = 8; // 64-byte transaction signature - bytes data = 9; // Decoded event data - int64 sequence_num = 10; // Sequence number for ordering - optional string error = 11; // Error message if log processing failed -} - -// All metas are non-signers. -message AccountMeta { - bytes public_key = 1; // 32 bytes account public key - bool is_writable = 2; // write flag -} - -message WriteReportRequest { - repeated AccountMeta remaining_accounts = 1; // accounts that are required by the receiver to accept the report - bytes receiver = 2; // 32 bytes receiver - optional ComputeConfig compute_config = 3; - sdk.v1alpha.ReportResponse report = 4; -} - -enum ReceiverContractExecutionStatus { - RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS = 0; - RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED = 1; -} - -message WriteReportReply { - TxStatus tx_status = 1; - optional ReceiverContractExecutionStatus receiver_contract_execution_status = 2; - optional bytes tx_signature = 3; - optional uint64 transaction_fee = 4; - optional string error_message = 5; -} - -service Client { - option (tools.generator.v1alpha.capability) = { - mode: MODE_DON - capability_id: "solana@1.0.0" - labels: { - // from https://github.com/smartcontractkit/chain-selectors/blob/main/selectors.yml - // as a subset of the selectors supported on the CRE - key: "ChainSelector" - value: { - uint64_label: { - defaults: [ - { - key: "solana-mainnet" - value: 124615329519749607 - }, - { - key: "solana-testnet" - value: 6302590918974934319 - }, - { - key: "solana-devnet" - value: 16423721717087811551 - } - ] - } - } - } - }; - - rpc GetAccountInfoWithOpts(GetAccountInfoWithOptsRequest) returns (GetAccountInfoWithOptsReply); - rpc GetBalance(GetBalanceRequest) returns (GetBalanceReply); - rpc GetBlock(GetBlockRequest) returns (GetBlockReply); - rpc GetFeeForMessage(GetFeeForMessageRequest) returns (GetFeeForMessageReply); - rpc GetMultipleAccountsWithOpts(GetMultipleAccountsWithOptsRequest) returns (GetMultipleAccountsWithOptsReply); - rpc GetSignatureStatuses(GetSignatureStatusesRequest) returns (GetSignatureStatusesReply); - rpc GetSlotHeight(GetSlotHeightRequest) returns (GetSlotHeightReply); - rpc GetTransaction(GetTransactionRequest) returns (GetTransactionReply); - rpc LogTrigger(FilterLogTriggerRequest) returns (stream Log); - rpc WriteReport(WriteReportRequest) returns (WriteReportReply); -} -` - const blockchainStellarV1alphaClientEmbedded = `syntax = "proto3"; package capabilities.blockchain.stellar.v1alpha; @@ -2336,10 +1900,6 @@ var allFiles = []*embeddedFile{ name: "capabilities/blockchain/evm/v1alpha/client.proto", content: blockchainEvmV1alphaClientEmbedded, }, - { - name: "capabilities/blockchain/solana/v1alpha/client.proto", - content: blockchainSolanaV1alphaClientEmbedded, - }, { name: "capabilities/blockchain/stellar/v1alpha/client.proto", content: blockchainStellarV1alphaClientEmbedded, From 7d8d76a32f02bbcf72b80785a87fa29cdba83a79 Mon Sep 17 00:00:00 2001 From: amit-momin <108959691+amit-momin@users.noreply.github.com> Date: Thu, 21 May 2026 10:17:08 -0500 Subject: [PATCH 22/49] Add private-testnet-rhyolite support (#368) * Added private-testnet-rhyolite support * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- cre/capabilities/blockchain/evm/v1alpha/client.proto | 4 ++++ cre/go/go.mod | 2 +- cre/go/go.sum | 4 ++-- cre/go/installer/pkg/embedded_gen.go | 4 ++++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/cre/capabilities/blockchain/evm/v1alpha/client.proto b/cre/capabilities/blockchain/evm/v1alpha/client.proto index f4dd98a8..8583f985 100644 --- a/cre/capabilities/blockchain/evm/v1alpha/client.proto +++ b/cre/capabilities/blockchain/evm/v1alpha/client.proto @@ -365,6 +365,10 @@ service Client { key: "private-testnet-andesite" value: 6915682381028791124 }, + { + key: "private-testnet-rhyolite" + value: 604447335222770945 + }, { key: "sonic-mainnet" value: 1673871237479749969 diff --git a/cre/go/go.mod b/cre/go/go.mod index 1cc49f3a..fe879bc6 100644 --- a/cre/go/go.mod +++ b/cre/go/go.mod @@ -5,7 +5,7 @@ go 1.24.5 require ( github.com/go-viper/mapstructure/v2 v2.4.0 github.com/shopspring/decimal v1.4.0 - github.com/smartcontractkit/chain-selectors v1.0.89 + github.com/smartcontractkit/chain-selectors v1.0.100 github.com/stretchr/testify v1.11.1 google.golang.org/protobuf v1.36.7 ) diff --git a/cre/go/go.sum b/cre/go/go.sum index a0580bf6..d596ab23 100644 --- a/cre/go/go.sum +++ b/cre/go/go.sum @@ -10,8 +10,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= -github.com/smartcontractkit/chain-selectors v1.0.89 h1:L9oWZGqQXWyTPnC6ODXgu3b0DFyLmJ9eHv+uJrE9IZY= -github.com/smartcontractkit/chain-selectors v1.0.89/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= +github.com/smartcontractkit/chain-selectors v1.0.100 h1:wpiSpmI/eFjY+wx/nPr5VuNF4hki0prIBMKEaQWn3g4= +github.com/smartcontractkit/chain-selectors v1.0.100/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 9d2ff466..732cd0c6 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -568,6 +568,10 @@ service Client { key: "private-testnet-andesite" value: 6915682381028791124 }, + { + key: "private-testnet-rhyolite" + value: 604447335222770945 + }, { key: "sonic-mainnet" value: 1673871237479749969 From 5ae0af3158357edcd77ce86bbdb4e4d4aa374d7f Mon Sep 17 00:00:00 2001 From: Vladimir Date: Thu, 21 May 2026 11:32:28 -0400 Subject: [PATCH 23/49] Split solana protos into WR and the rest 2/3 (#370) * revert solana * add WriteReport solana * Auto-fix: buf format, gofmt, go generate, go mod tidy * add write report only * rm unused import * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- .../blockchain/solana/v1alpha/client.proto | 67 +++++++++++++++++ cre/go/installer/pkg/embedded_gen.go | 73 +++++++++++++++++++ 2 files changed, 140 insertions(+) create mode 100644 cre/capabilities/blockchain/solana/v1alpha/client.proto diff --git a/cre/capabilities/blockchain/solana/v1alpha/client.proto b/cre/capabilities/blockchain/solana/v1alpha/client.proto new file mode 100644 index 00000000..c48b9303 --- /dev/null +++ b/cre/capabilities/blockchain/solana/v1alpha/client.proto @@ -0,0 +1,67 @@ +syntax = "proto3"; +package capabilities.blockchain.solana.v1alpha; + +import "sdk/v1alpha/sdk.proto"; +import "tools/generator/v1alpha/cre_metadata.proto"; + +// Compute budget configuration when submitting txs. +message ComputeConfig { + uint32 compute_limit = 1; // max CUs (approx per-tx limit) +} + +// Transaction execution status returned by submitters/simulations. +enum TxStatus { + TX_STATUS_FATAL = 0; // unrecoverable failure + TX_STATUS_ABORTED = 1; // not executed / dropped + TX_STATUS_SUCCESS = 2; // executed successfully +} + +// All metas are non-signers. +message AccountMeta { + bytes public_key = 1; // 32 bytes account public key + bool is_writable = 2; // write flag +} + +message WriteReportRequest { + repeated AccountMeta remaining_accounts = 1; // accounts that are required by the receiver to accept the report + bytes receiver = 2; // 32 bytes receiver + optional ComputeConfig compute_config = 3; + sdk.v1alpha.ReportResponse report = 4; +} + +enum ReceiverContractExecutionStatus { + RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS = 0; + RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED = 1; +} + +message WriteReportReply { + TxStatus tx_status = 1; + optional ReceiverContractExecutionStatus receiver_contract_execution_status = 2; + optional bytes tx_signature = 3; + optional uint64 transaction_fee = 4; + optional string error_message = 5; +} + +service Client { + option (tools.generator.v1alpha.capability) = { + mode: MODE_DON + capability_id: "solana@1.0.0" + labels: { + // from https://github.com/smartcontractkit/chain-selectors/blob/main/selectors.yml + // as a subset of the selectors supported on the CRE + key: "ChainSelector" + value: { + uint64_label: { + defaults: [ + { + key: "solana-devnet" + value: 16423721717087811551 + } + ] + } + } + } + }; + + rpc WriteReport(WriteReportRequest) returns (WriteReportReply); +} diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 732cd0c6..04cd7d5c 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -634,6 +634,75 @@ message WriteReportReply { } ` +const blockchainSolanaV1alphaClientEmbedded = `syntax = "proto3"; +package capabilities.blockchain.solana.v1alpha; + +import "sdk/v1alpha/sdk.proto"; +import "tools/generator/v1alpha/cre_metadata.proto"; + +// Compute budget configuration when submitting txs. +message ComputeConfig { + uint32 compute_limit = 1; // max CUs (approx per-tx limit) +} + +// Transaction execution status returned by submitters/simulations. +enum TxStatus { + TX_STATUS_FATAL = 0; // unrecoverable failure + TX_STATUS_ABORTED = 1; // not executed / dropped + TX_STATUS_SUCCESS = 2; // executed successfully +} + +// All metas are non-signers. +message AccountMeta { + bytes public_key = 1; // 32 bytes account public key + bool is_writable = 2; // write flag +} + +message WriteReportRequest { + repeated AccountMeta remaining_accounts = 1; // accounts that are required by the receiver to accept the report + bytes receiver = 2; // 32 bytes receiver + optional ComputeConfig compute_config = 3; + sdk.v1alpha.ReportResponse report = 4; +} + +enum ReceiverContractExecutionStatus { + RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS = 0; + RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED = 1; +} + +message WriteReportReply { + TxStatus tx_status = 1; + optional ReceiverContractExecutionStatus receiver_contract_execution_status = 2; + optional bytes tx_signature = 3; + optional uint64 transaction_fee = 4; + optional string error_message = 5; +} + +service Client { + option (tools.generator.v1alpha.capability) = { + mode: MODE_DON + capability_id: "solana@1.0.0" + labels: { + // from https://github.com/smartcontractkit/chain-selectors/blob/main/selectors.yml + // as a subset of the selectors supported on the CRE + key: "ChainSelector" + value: { + uint64_label: { + defaults: [ + { + key: "solana-devnet" + value: 16423721717087811551 + } + ] + } + } + } + }; + + rpc WriteReport(WriteReportRequest) returns (WriteReportReply); +} +` + const blockchainStellarV1alphaClientEmbedded = `syntax = "proto3"; package capabilities.blockchain.stellar.v1alpha; @@ -1904,6 +1973,10 @@ var allFiles = []*embeddedFile{ name: "capabilities/blockchain/evm/v1alpha/client.proto", content: blockchainEvmV1alphaClientEmbedded, }, + { + name: "capabilities/blockchain/solana/v1alpha/client.proto", + content: blockchainSolanaV1alphaClientEmbedded, + }, { name: "capabilities/blockchain/stellar/v1alpha/client.proto", content: blockchainStellarV1alphaClientEmbedded, From 6c3fbf9a24357428832a9e11c5757c27917a82d3 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Thu, 21 May 2026 11:40:55 -0400 Subject: [PATCH 24/49] Split solana protos into WR and the rest 3/3 (#371) * revert solana * revert embeded * add solana * rm testnet and mainnet selectors * add solana * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- .../blockchain/solana/v1alpha/client.proto | 365 +++++++++++++++++- cre/go/installer/pkg/embedded_gen.go | 365 +++++++++++++++++- 2 files changed, 724 insertions(+), 6 deletions(-) diff --git a/cre/capabilities/blockchain/solana/v1alpha/client.proto b/cre/capabilities/blockchain/solana/v1alpha/client.proto index c48b9303..bf10b091 100644 --- a/cre/capabilities/blockchain/solana/v1alpha/client.proto +++ b/cre/capabilities/blockchain/solana/v1alpha/client.proto @@ -3,10 +3,32 @@ package capabilities.blockchain.solana.v1alpha; import "sdk/v1alpha/sdk.proto"; import "tools/generator/v1alpha/cre_metadata.proto"; +import "values/v1/values.proto"; -// Compute budget configuration when submitting txs. -message ComputeConfig { - uint32 compute_limit = 1; // max CUs (approx per-tx limit) +// Account/tx data encodings. +enum EncodingType { + ENCODING_TYPE_NONE = 0; + ENCODING_TYPE_BASE58 = 1; // for data <129 bytes + ENCODING_TYPE_BASE64 = 2; // any size + ENCODING_TYPE_BASE64_ZSTD = 3; // zstd-compressed, base64-wrapped + ENCODING_TYPE_JSON_PARSED = 4; // program parsers; fallback to base64 if unknown + ENCODING_TYPE_JSON = 5; // raw JSON (rare; prefer JSON_PARSED) +} + +// Read consistency of queried state. +enum CommitmentType { + COMMITMENT_TYPE_NONE = 0; + COMMITMENT_TYPE_FINALIZED = 1; // cluster-finalized + COMMITMENT_TYPE_CONFIRMED = 2; // voted by supermajority + COMMITMENT_TYPE_PROCESSED = 3; // node’s latest +} + +// Cluster confirmation status of a tx/signature. +enum ConfirmationStatusType { + CONFIRMATION_STATUS_TYPE_NONE = 0; + CONFIRMATION_STATUS_TYPE_PROCESSED = 1; + CONFIRMATION_STATUS_TYPE_CONFIRMED = 2; + CONFIRMATION_STATUS_TYPE_FINALIZED = 3; } // Transaction execution status returned by submitters/simulations. @@ -16,6 +38,334 @@ enum TxStatus { TX_STATUS_SUCCESS = 2; // executed successfully } +// On-chain account state. +message Account { + uint64 lamports = 1; // balance in lamports (1e-9 SOL) + bytes owner = 2; // 32-byte program id (Pubkey) + DataBytesOrJSON data = 3; // account data (encoded or JSON) + bool executable = 4; // true if this is a program account + values.v1.BigInt rent_epoch = 5; // next rent epoch + uint64 space = 6; // data length in bytes +} + +// Compute budget configuration when submitting txs. +message ComputeConfig { + uint32 compute_limit = 1; // max CUs (approx per-tx limit) +} + +// Raw bytes vs parsed JSON (as returned by RPC). +message DataBytesOrJSON { + EncodingType encoding = 1; + oneof body { + bytes raw = 2; // program data (node’s base64/base58 decoded) + bytes json = 3; // json: UTF-8 bytes of the jsonParsed payload. + } +} + +// Return a slice of account data. +message DataSlice { + uint64 offset = 1; // start byte + uint64 length = 2; // number of bytes +} + +// Options for GetAccountInfo. +message GetAccountInfoOpts { + EncodingType encoding = 1; // data encoding + CommitmentType commitment = 2; // read consistency + DataSlice data_slice = 3; // optional slice window + uint64 min_context_slot = 4; // lower bound slot +} + +// Reply for GetAccountInfoWithOpts. +message GetAccountInfoWithOptsReply { + RPCContext rpc_context = 1; // read slot + optional Account value = 2; // account (may be empty) +} + +// Request for GetAccountInfoWithOpts. +message GetAccountInfoWithOptsRequest { + bytes account = 1; // 32-byte Pubkey + GetAccountInfoOpts opts = 2; +} + +// Reply for GetBalance. +message GetBalanceReply { + uint64 value = 1; // lamports +} + +// Request for GetBalance. +message GetBalanceRequest { + bytes addr = 1; // 32-byte Pubkey + CommitmentType commitment = 2; // read consistency +} + +// Options for GetBlock. +message GetBlockOpts { + CommitmentType commitment = 4; // read consistency +} + +// Block response. +message GetBlockReply { + bytes blockhash = 1; // 32-byte block hash + bytes previous_blockhash = 2; // 32-byte parent hash + uint64 parent_slot = 3; + optional int64 block_time = 4; // unix seconds, node may not report it + uint64 block_height = 5; // chain height +} + +// Request for GetBlock. +message GetBlockRequest { + uint64 slot = 1; // target slot + GetBlockOpts opts = 2; +} + +// Fee quote for a base58-encoded Message. +message GetFeeForMessageReply { + uint64 fee = 1; // lamports +} + +message GetFeeForMessageRequest { + string message = 1; // must be base58-encoded Message + CommitmentType commitment = 2; // read consistency +} + +// Options for GetMultipleAccounts. +message GetMultipleAccountsOpts { + EncodingType encoding = 1; + CommitmentType commitment = 2; + DataSlice data_slice = 3; + uint64 min_context_slot = 4; +} + +message OptionalAccountWrapper { + optional Account account = 1; +} + +// Reply for GetMultipleAccountsWithOpts. +message GetMultipleAccountsWithOptsReply { + RPCContext rpc_context = 1; // read slot + repeated OptionalAccountWrapper value = 2; // accounts (nil entries allowed) +} + +// Request for GetMultipleAccountsWithOpts. +message GetMultipleAccountsWithOptsRequest { + repeated bytes accounts = 1; // list of 32-byte Pubkeys + GetMultipleAccountsOpts opts = 2; +} + +// Reply for GetSignatureStatuses. +message GetSignatureStatusesReply { + repeated GetSignatureStatusesResult results = 1; // 1:1 with input +} + +// Request for GetSignatureStatuses. +message GetSignatureStatusesRequest { + repeated bytes sigs = 1; // 64-byte signatures +} + +// Per-signature status. +message GetSignatureStatusesResult { + uint64 slot = 1; // processed slot + optional uint64 confirmations = 2; // null->0 here + string err = 3; // error JSON string (empty on success) + ConfirmationStatusType confirmation_status = 4; +} + +// Current “height” (blocks below latest). +message GetSlotHeightReply { + uint64 height = 1; +} + +message GetSlotHeightRequest { + CommitmentType commitment = 1; // read consistency +} + +// Message header counts. +message MessageHeader { + uint32 num_required_signatures = 1; // signer count + uint32 num_readonly_signed_accounts = 2; // trailing signed RO + uint32 num_readonly_unsigned_accounts = 3; // trailing unsigned RO +} + +// Parsed message (no address tables). +message ParsedMessage { + bytes recent_blockhash = 1; // 32-byte Hash + repeated bytes account_keys = 2; // list of 32-byte Pubkeys + MessageHeader header = 3; + repeated CompiledInstruction instructions = 4; +} + +// Parsed transaction (signatures + message). +message ParsedTransaction { + repeated bytes signatures = 1; // 64-byte signatures + ParsedMessage message = 2; +} + +// Token amount (UI-friendly). +message UiTokenAmount { + string amount = 1; // raw integer string + uint32 decimals = 2; // mint decimals + string ui_amount_string = 4; // amount / 10^decimals +} + +// SPL token balance entry. +message TokenBalance { + uint32 account_index = 1; // index in account_keys + optional bytes owner = 2; // 32-byte owner (optional) + optional bytes program_id = 3; // 32-byte token program (optional) + bytes mint = 4; // 32-byte mint + UiTokenAmount ui = 5; // formatted amounts +} + +// Inner instruction list at a given outer instruction index. +message InnerInstruction { + uint32 index = 1; // outer ix index + repeated CompiledInstruction instructions = 2; // invoked ixs +} + +// Address table lookups expanded by loader. +message LoadedAddresses { + repeated bytes readonly = 1; // 32-byte Pubkeys + repeated bytes writable = 2; // 32-byte Pubkeys +} + +// Compiled (program) instruction. +message CompiledInstruction { + uint32 program_id_index = 1; // index into account_keys + repeated uint32 accounts = 2; // indices into account_keys + bytes data = 3; // program input bytes + uint32 stack_height = 4; // if recorded by node +} + +// Raw bytes with encoding tag. +message Data { + bytes content = 1; // raw bytes + EncodingType encoding = 2; // how it was encoded originally +} + +// Program return data. +message ReturnData { + bytes program_id = 1; // 32-byte Pubkey + Data data = 2; // raw return bytes +} + +// Transaction execution metadata. +message TransactionMeta { + string err_json = 1; // error JSON (empty on success) + uint64 fee = 2; // lamports + repeated uint64 pre_balances = 3; // lamports per account + repeated uint64 post_balances = 4; // lamports per account + repeated string log_messages = 5; // runtime logs + repeated TokenBalance pre_token_balances = 6; + repeated TokenBalance post_token_balances = 7; + repeated InnerInstruction inner_instructions = 8; + LoadedAddresses loaded_addresses = 9; + ReturnData return_data = 10; + optional uint64 compute_units_consumed = 11; // CUs +} + +// Transaction envelope: raw bytes or parsed struct. +message TransactionEnvelope { + oneof transaction { + bytes raw = 1; // raw tx bytes (for RAW/base64) + ParsedTransaction parsed = 2; // parsed tx (for JSON_PARSED) + } +} + +// GetTransaction reply. +message GetTransactionReply { + uint64 slot = 1; // processed slot + optional int64 block_time = 2; // unix seconds + optional TransactionEnvelope transaction = 3; // tx bytes or parsed + optional TransactionMeta meta = 4; // may be omitted by node +} + +// GetTransaction request. +message GetTransactionRequest { + bytes signature = 1; // 64-byte signature +} + +// RPC read context. +message RPCContext { + uint64 slot = 1; +} + +// Simulation options. +message SimulateTXOpts { + bool sig_verify = 1; // verify sigs + CommitmentType commitment = 2; // read consistency + bool replace_recent_blockhash = 3; // refresh blockhash + SimulateTransactionAccountsOpts accounts = 4; // return accounts +} + +// Simulation result. +message SimulateTXReply { + string err = 1; // empty on success + repeated string logs = 2; // runtime logs + repeated Account accounts = 3; // returned accounts + uint64 units_consumed = 4; // CUs +} + +// Simulation request. +message SimulateTXRequest { + bytes receiver = 1; // 32-byte program id (target) + string encoded_transaction = 2; // base64/base58 tx + SimulateTXOpts opts = 3; +} + +// Accounts to return during simulation. +message SimulateTransactionAccountsOpts { + EncodingType encoding = 1; // account data encoding + repeated bytes addresses = 2; // 32-byte Pubkeys +} + +enum ComparisonOperator { + COMPARISON_OPERATOR_EQ = 0; + COMPARISON_OPERATOR_NEQ = 1; + COMPARISON_OPERATOR_GT = 2; + COMPARISON_OPERATOR_LT = 3; + COMPARISON_OPERATOR_GTE = 4; + COMPARISON_OPERATOR_LTE = 5; +} + +message ValueComparator { + bytes value = 1; + ComparisonOperator operator = 2; +} + +message SubkeyConfig { + repeated string path = 1; + repeated ValueComparator comparers = 2; +} + +message CPIFilterConfig { + bytes dest_address = 1; + bytes method_name = 2; +} + +message FilterLogTriggerRequest { + string name = 1; + bytes address = 2; // Solana PublicKey (32 bytes) + string event_name = 3; + bytes contract_idl_json = 4; + repeated SubkeyConfig subkeys = 5; + optional CPIFilterConfig cpi_filter_config = 6; +} + +message Log { + string chain_id = 1; // Chain identifier + int64 log_index = 2; // Index of the log within the block + bytes block_hash = 3; // 32-byte block hash + int64 block_number = 4; // Block/slot number + uint64 block_timestamp = 5; // Unix timestamp of the block + bytes address = 6; // 32-byte program PublicKey + bytes event_sig = 7; // 8-byte event signature + bytes tx_hash = 8; // 64-byte transaction signature + bytes data = 9; // Decoded event data + int64 sequence_num = 10; // Sequence number for ordering + optional string error = 11; // Error message if log processing failed +} + // All metas are non-signers. message AccountMeta { bytes public_key = 1; // 32 bytes account public key @@ -63,5 +413,14 @@ service Client { } }; + rpc GetAccountInfoWithOpts(GetAccountInfoWithOptsRequest) returns (GetAccountInfoWithOptsReply); + rpc GetBalance(GetBalanceRequest) returns (GetBalanceReply); + rpc GetBlock(GetBlockRequest) returns (GetBlockReply); + rpc GetFeeForMessage(GetFeeForMessageRequest) returns (GetFeeForMessageReply); + rpc GetMultipleAccountsWithOpts(GetMultipleAccountsWithOptsRequest) returns (GetMultipleAccountsWithOptsReply); + rpc GetSignatureStatuses(GetSignatureStatusesRequest) returns (GetSignatureStatusesReply); + rpc GetSlotHeight(GetSlotHeightRequest) returns (GetSlotHeightReply); + rpc GetTransaction(GetTransactionRequest) returns (GetTransactionReply); + rpc LogTrigger(FilterLogTriggerRequest) returns (stream Log); rpc WriteReport(WriteReportRequest) returns (WriteReportReply); } diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 04cd7d5c..2520cf4a 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -639,10 +639,32 @@ package capabilities.blockchain.solana.v1alpha; import "sdk/v1alpha/sdk.proto"; import "tools/generator/v1alpha/cre_metadata.proto"; +import "values/v1/values.proto"; -// Compute budget configuration when submitting txs. -message ComputeConfig { - uint32 compute_limit = 1; // max CUs (approx per-tx limit) +// Account/tx data encodings. +enum EncodingType { + ENCODING_TYPE_NONE = 0; + ENCODING_TYPE_BASE58 = 1; // for data <129 bytes + ENCODING_TYPE_BASE64 = 2; // any size + ENCODING_TYPE_BASE64_ZSTD = 3; // zstd-compressed, base64-wrapped + ENCODING_TYPE_JSON_PARSED = 4; // program parsers; fallback to base64 if unknown + ENCODING_TYPE_JSON = 5; // raw JSON (rare; prefer JSON_PARSED) +} + +// Read consistency of queried state. +enum CommitmentType { + COMMITMENT_TYPE_NONE = 0; + COMMITMENT_TYPE_FINALIZED = 1; // cluster-finalized + COMMITMENT_TYPE_CONFIRMED = 2; // voted by supermajority + COMMITMENT_TYPE_PROCESSED = 3; // node’s latest +} + +// Cluster confirmation status of a tx/signature. +enum ConfirmationStatusType { + CONFIRMATION_STATUS_TYPE_NONE = 0; + CONFIRMATION_STATUS_TYPE_PROCESSED = 1; + CONFIRMATION_STATUS_TYPE_CONFIRMED = 2; + CONFIRMATION_STATUS_TYPE_FINALIZED = 3; } // Transaction execution status returned by submitters/simulations. @@ -652,6 +674,334 @@ enum TxStatus { TX_STATUS_SUCCESS = 2; // executed successfully } +// On-chain account state. +message Account { + uint64 lamports = 1; // balance in lamports (1e-9 SOL) + bytes owner = 2; // 32-byte program id (Pubkey) + DataBytesOrJSON data = 3; // account data (encoded or JSON) + bool executable = 4; // true if this is a program account + values.v1.BigInt rent_epoch = 5; // next rent epoch + uint64 space = 6; // data length in bytes +} + +// Compute budget configuration when submitting txs. +message ComputeConfig { + uint32 compute_limit = 1; // max CUs (approx per-tx limit) +} + +// Raw bytes vs parsed JSON (as returned by RPC). +message DataBytesOrJSON { + EncodingType encoding = 1; + oneof body { + bytes raw = 2; // program data (node’s base64/base58 decoded) + bytes json = 3; // json: UTF-8 bytes of the jsonParsed payload. + } +} + +// Return a slice of account data. +message DataSlice { + uint64 offset = 1; // start byte + uint64 length = 2; // number of bytes +} + +// Options for GetAccountInfo. +message GetAccountInfoOpts { + EncodingType encoding = 1; // data encoding + CommitmentType commitment = 2; // read consistency + DataSlice data_slice = 3; // optional slice window + uint64 min_context_slot = 4; // lower bound slot +} + +// Reply for GetAccountInfoWithOpts. +message GetAccountInfoWithOptsReply { + RPCContext rpc_context = 1; // read slot + optional Account value = 2; // account (may be empty) +} + +// Request for GetAccountInfoWithOpts. +message GetAccountInfoWithOptsRequest { + bytes account = 1; // 32-byte Pubkey + GetAccountInfoOpts opts = 2; +} + +// Reply for GetBalance. +message GetBalanceReply { + uint64 value = 1; // lamports +} + +// Request for GetBalance. +message GetBalanceRequest { + bytes addr = 1; // 32-byte Pubkey + CommitmentType commitment = 2; // read consistency +} + +// Options for GetBlock. +message GetBlockOpts { + CommitmentType commitment = 4; // read consistency +} + +// Block response. +message GetBlockReply { + bytes blockhash = 1; // 32-byte block hash + bytes previous_blockhash = 2; // 32-byte parent hash + uint64 parent_slot = 3; + optional int64 block_time = 4; // unix seconds, node may not report it + uint64 block_height = 5; // chain height +} + +// Request for GetBlock. +message GetBlockRequest { + uint64 slot = 1; // target slot + GetBlockOpts opts = 2; +} + +// Fee quote for a base58-encoded Message. +message GetFeeForMessageReply { + uint64 fee = 1; // lamports +} + +message GetFeeForMessageRequest { + string message = 1; // must be base58-encoded Message + CommitmentType commitment = 2; // read consistency +} + +// Options for GetMultipleAccounts. +message GetMultipleAccountsOpts { + EncodingType encoding = 1; + CommitmentType commitment = 2; + DataSlice data_slice = 3; + uint64 min_context_slot = 4; +} + +message OptionalAccountWrapper { + optional Account account = 1; +} + +// Reply for GetMultipleAccountsWithOpts. +message GetMultipleAccountsWithOptsReply { + RPCContext rpc_context = 1; // read slot + repeated OptionalAccountWrapper value = 2; // accounts (nil entries allowed) +} + +// Request for GetMultipleAccountsWithOpts. +message GetMultipleAccountsWithOptsRequest { + repeated bytes accounts = 1; // list of 32-byte Pubkeys + GetMultipleAccountsOpts opts = 2; +} + +// Reply for GetSignatureStatuses. +message GetSignatureStatusesReply { + repeated GetSignatureStatusesResult results = 1; // 1:1 with input +} + +// Request for GetSignatureStatuses. +message GetSignatureStatusesRequest { + repeated bytes sigs = 1; // 64-byte signatures +} + +// Per-signature status. +message GetSignatureStatusesResult { + uint64 slot = 1; // processed slot + optional uint64 confirmations = 2; // null->0 here + string err = 3; // error JSON string (empty on success) + ConfirmationStatusType confirmation_status = 4; +} + +// Current “height” (blocks below latest). +message GetSlotHeightReply { + uint64 height = 1; +} + +message GetSlotHeightRequest { + CommitmentType commitment = 1; // read consistency +} + +// Message header counts. +message MessageHeader { + uint32 num_required_signatures = 1; // signer count + uint32 num_readonly_signed_accounts = 2; // trailing signed RO + uint32 num_readonly_unsigned_accounts = 3; // trailing unsigned RO +} + +// Parsed message (no address tables). +message ParsedMessage { + bytes recent_blockhash = 1; // 32-byte Hash + repeated bytes account_keys = 2; // list of 32-byte Pubkeys + MessageHeader header = 3; + repeated CompiledInstruction instructions = 4; +} + +// Parsed transaction (signatures + message). +message ParsedTransaction { + repeated bytes signatures = 1; // 64-byte signatures + ParsedMessage message = 2; +} + +// Token amount (UI-friendly). +message UiTokenAmount { + string amount = 1; // raw integer string + uint32 decimals = 2; // mint decimals + string ui_amount_string = 4; // amount / 10^decimals +} + +// SPL token balance entry. +message TokenBalance { + uint32 account_index = 1; // index in account_keys + optional bytes owner = 2; // 32-byte owner (optional) + optional bytes program_id = 3; // 32-byte token program (optional) + bytes mint = 4; // 32-byte mint + UiTokenAmount ui = 5; // formatted amounts +} + +// Inner instruction list at a given outer instruction index. +message InnerInstruction { + uint32 index = 1; // outer ix index + repeated CompiledInstruction instructions = 2; // invoked ixs +} + +// Address table lookups expanded by loader. +message LoadedAddresses { + repeated bytes readonly = 1; // 32-byte Pubkeys + repeated bytes writable = 2; // 32-byte Pubkeys +} + +// Compiled (program) instruction. +message CompiledInstruction { + uint32 program_id_index = 1; // index into account_keys + repeated uint32 accounts = 2; // indices into account_keys + bytes data = 3; // program input bytes + uint32 stack_height = 4; // if recorded by node +} + +// Raw bytes with encoding tag. +message Data { + bytes content = 1; // raw bytes + EncodingType encoding = 2; // how it was encoded originally +} + +// Program return data. +message ReturnData { + bytes program_id = 1; // 32-byte Pubkey + Data data = 2; // raw return bytes +} + +// Transaction execution metadata. +message TransactionMeta { + string err_json = 1; // error JSON (empty on success) + uint64 fee = 2; // lamports + repeated uint64 pre_balances = 3; // lamports per account + repeated uint64 post_balances = 4; // lamports per account + repeated string log_messages = 5; // runtime logs + repeated TokenBalance pre_token_balances = 6; + repeated TokenBalance post_token_balances = 7; + repeated InnerInstruction inner_instructions = 8; + LoadedAddresses loaded_addresses = 9; + ReturnData return_data = 10; + optional uint64 compute_units_consumed = 11; // CUs +} + +// Transaction envelope: raw bytes or parsed struct. +message TransactionEnvelope { + oneof transaction { + bytes raw = 1; // raw tx bytes (for RAW/base64) + ParsedTransaction parsed = 2; // parsed tx (for JSON_PARSED) + } +} + +// GetTransaction reply. +message GetTransactionReply { + uint64 slot = 1; // processed slot + optional int64 block_time = 2; // unix seconds + optional TransactionEnvelope transaction = 3; // tx bytes or parsed + optional TransactionMeta meta = 4; // may be omitted by node +} + +// GetTransaction request. +message GetTransactionRequest { + bytes signature = 1; // 64-byte signature +} + +// RPC read context. +message RPCContext { + uint64 slot = 1; +} + +// Simulation options. +message SimulateTXOpts { + bool sig_verify = 1; // verify sigs + CommitmentType commitment = 2; // read consistency + bool replace_recent_blockhash = 3; // refresh blockhash + SimulateTransactionAccountsOpts accounts = 4; // return accounts +} + +// Simulation result. +message SimulateTXReply { + string err = 1; // empty on success + repeated string logs = 2; // runtime logs + repeated Account accounts = 3; // returned accounts + uint64 units_consumed = 4; // CUs +} + +// Simulation request. +message SimulateTXRequest { + bytes receiver = 1; // 32-byte program id (target) + string encoded_transaction = 2; // base64/base58 tx + SimulateTXOpts opts = 3; +} + +// Accounts to return during simulation. +message SimulateTransactionAccountsOpts { + EncodingType encoding = 1; // account data encoding + repeated bytes addresses = 2; // 32-byte Pubkeys +} + +enum ComparisonOperator { + COMPARISON_OPERATOR_EQ = 0; + COMPARISON_OPERATOR_NEQ = 1; + COMPARISON_OPERATOR_GT = 2; + COMPARISON_OPERATOR_LT = 3; + COMPARISON_OPERATOR_GTE = 4; + COMPARISON_OPERATOR_LTE = 5; +} + +message ValueComparator { + bytes value = 1; + ComparisonOperator operator = 2; +} + +message SubkeyConfig { + repeated string path = 1; + repeated ValueComparator comparers = 2; +} + +message CPIFilterConfig { + bytes dest_address = 1; + bytes method_name = 2; +} + +message FilterLogTriggerRequest { + string name = 1; + bytes address = 2; // Solana PublicKey (32 bytes) + string event_name = 3; + bytes contract_idl_json = 4; + repeated SubkeyConfig subkeys = 5; + optional CPIFilterConfig cpi_filter_config = 6; +} + +message Log { + string chain_id = 1; // Chain identifier + int64 log_index = 2; // Index of the log within the block + bytes block_hash = 3; // 32-byte block hash + int64 block_number = 4; // Block/slot number + uint64 block_timestamp = 5; // Unix timestamp of the block + bytes address = 6; // 32-byte program PublicKey + bytes event_sig = 7; // 8-byte event signature + bytes tx_hash = 8; // 64-byte transaction signature + bytes data = 9; // Decoded event data + int64 sequence_num = 10; // Sequence number for ordering + optional string error = 11; // Error message if log processing failed +} + // All metas are non-signers. message AccountMeta { bytes public_key = 1; // 32 bytes account public key @@ -699,6 +1049,15 @@ service Client { } }; + rpc GetAccountInfoWithOpts(GetAccountInfoWithOptsRequest) returns (GetAccountInfoWithOptsReply); + rpc GetBalance(GetBalanceRequest) returns (GetBalanceReply); + rpc GetBlock(GetBlockRequest) returns (GetBlockReply); + rpc GetFeeForMessage(GetFeeForMessageRequest) returns (GetFeeForMessageReply); + rpc GetMultipleAccountsWithOpts(GetMultipleAccountsWithOptsRequest) returns (GetMultipleAccountsWithOptsReply); + rpc GetSignatureStatuses(GetSignatureStatusesRequest) returns (GetSignatureStatusesReply); + rpc GetSlotHeight(GetSlotHeightRequest) returns (GetSlotHeightReply); + rpc GetTransaction(GetTransactionRequest) returns (GetTransactionReply); + rpc LogTrigger(FilterLogTriggerRequest) returns (stream Log); rpc WriteReport(WriteReportRequest) returns (WriteReportReply); } ` From adcf8013a1b751de2bd76a2de762c84afd97f9b9 Mon Sep 17 00:00:00 2001 From: Tejaswi Nadahalli Date: Tue, 26 May 2026 21:53:38 +0200 Subject: [PATCH 25/49] Restructure ConfidentialWorkflow proto additively (no Go API break) (#376) * Restructure ConfidentialWorkflow proto additively (no API break) Supersedes the destructive changes in #365 and #363. Re-applies the binary_url-out-of-hash fix and the TEE additions as pure appends to the original proto, so the generated Go API is preserved and existing chainlink consumers compile unchanged. - ConfidentialWorkflowRequest.binary_url (field 3): per-node URL outside the hash envelope (the #365 fix), without dropping WorkflowExecution.binary_url, vault_don_secrets, or the SecretIdentifier message. - WorkflowExecution.requirements (field 8), ProvidedTees rpc, and ProvidedTeesResponse: additive TEE surface (from #363). - execute_request and execution_result stay bytes (no retyping). See PRIV-389. * Add typed sdk_execute_request/sdk_execution_result as new fields Restores the structured sdk.v1alpha.ExecuteRequest / ExecutionResult from #363 as new fields alongside the retained bytes fields, so typed and legacy consumers coexist without an API break: - WorkflowExecution.sdk_execute_request (field 9) - ConfidentialWorkflowResponse.sdk_execution_result (field 2) Field names mirror their message types. The bytes fields (execute_request=4, execution_result=1) are unchanged, so chainlink compiles as-is. The typed and bytes fields are independent on the wire; producers populate whichever their consumer reads. --- .../confidentialworkflow/v1alpha/client.proto | 73 +++++++++++-------- cre/go/installer/pkg/embedded_gen.go | 73 +++++++++++-------- 2 files changed, 88 insertions(+), 58 deletions(-) diff --git a/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto b/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto index 60568b1d..a3cdc670 100644 --- a/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto +++ b/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto @@ -6,60 +6,75 @@ import "google/protobuf/empty.proto"; import "sdk/v1alpha/sdk.proto"; import "tools/generator/v1alpha/cre_metadata.proto"; +message SecretIdentifier { + string key = 1; + // namespace defaults to "main" when unset. + optional string namespace = 2; +} + // WorkflowExecution is the public data sent to the enclave. // Becomes ComputeRequest.PublicData after proto serialization, which is // covered by ComputeRequest.Hash() for F+1 quorum matching at the enclave. -// All fields here must be byte-identical across workflow DON nodes. message WorkflowExecution { // workflow_id identifies the workflow to execute. string workflow_id = 1; + // binary_url is retained for backward compatibility with existing consumers. + // New consumers must use ConfidentialWorkflowRequest.binary_url, which lives + // outside the hash envelope so each node can mint its own per-node URL + // without breaking F+1 quorum. See ConfidentialWorkflowRequest.binary_url. + string binary_url = 2; // binary_hash is the expected SHA-256 hash of the WASM binary, for integrity verification. - bytes binary_hash = 2; + bytes binary_hash = 3; // execute_request is a serialized sdk.v1alpha.ExecuteRequest proto. // Contains either a subscribe request or a trigger execution request. - sdk.v1alpha.ExecuteRequest execute_request = 3; + bytes execute_request = 4; // owner is the on-chain owner address of the workflow (hex, 0x-prefixed). // Used by the enclave for runtime secret fetching from VaultDON. - string owner = 4; + string owner = 5; // execution_id is the unique execution identifier (64 hex chars, 32 bytes). // Used by the enclave for runtime secret fetching from VaultDON. - string execution_id = 5; + string execution_id = 6; // org_id is the organization identifier for the workflow owner. // Used by the enclave when fetching secrets from VaultDON with org-based ownership. - string org_id = 6; - - // requirements to run this workflow - sdk.v1alpha.Requirements requirements = 7; + string org_id = 7; + // requirements describes what is needed to run this workflow (e.g. TEE type + // and regions). + sdk.v1alpha.Requirements requirements = 8; + // sdk_execute_request is the structured form of execute_request. It carries + // the same sdk.v1alpha.ExecuteRequest as the serialized execute_request bytes + // field; the two are independent on the wire (setting one does not populate + // the other). Consumers that want the typed message read this; legacy + // consumers continue to unmarshal execute_request. + sdk.v1alpha.ExecuteRequest sdk_execute_request = 9; } // ConfidentialWorkflowRequest is the input provided to the confidential workflows capability. -// It carries a WorkflowExecution (deterministic across workflow DON nodes, -// hashed for F+1 quorum) plus per-node-varying data that must live outside -// the hash envelope. +// It combines a WorkflowExecution with secrets from VaultDON. message ConfidentialWorkflowRequest { - WorkflowExecution execution = 1; - // binary_url is the pre-signed CloudFront URL used by the enclave to fetch - // the WASM binary. The workflow node mints this URL per-execution via - // NodeService.DownloadArtifact and ships it alongside the WorkflowExecution. - // - // This field is deliberately on ConfidentialWorkflowRequest rather than - // inside WorkflowExecution: every workflow DON node mints its own URL with - // its own AWS signature and expiry timestamp, so the value differs across - // nodes. WorkflowExecution serializes into ComputeRequest.PublicData, - // which is covered by ComputeRequest.Hash() for F+1 quorum matching at the - // enclave. A per-node value inside that envelope would break quorum. + repeated SecretIdentifier vault_don_secrets = 1; + WorkflowExecution execution = 2; + // binary_url is the pre-signed URL used by the enclave to fetch the WASM + // binary. It lives here, on ConfidentialWorkflowRequest, rather than inside + // WorkflowExecution: every workflow DON node mints its own URL with its own + // signature and expiry timestamp, so the value differs across nodes. + // WorkflowExecution serializes into ComputeRequest.PublicData, which is + // covered by ComputeRequest.Hash() for F+1 quorum matching at the enclave. + // A per-node value inside that envelope would break quorum. // - // The integrity anchor for the fetched bytes is execution.binary_hash, - // inside PublicData (and therefore signed and quorum-checked). The URL is - // a fetch hint; tampering with it is caught by the hash check on the - // returned bytes. - string binary_url = 2; + // The integrity anchor for the fetched bytes is execution.binary_hash, inside + // PublicData (and therefore signed and quorum-checked). The URL is a fetch + // hint; tampering with it is caught by the hash check on the returned bytes. + string binary_url = 3; } // ConfidentialWorkflowResponse is the output from the confidential workflows capability. message ConfidentialWorkflowResponse { // execution_result is a serialized sdk.v1alpha.ExecutionResult proto. - sdk.v1alpha.ExecutionResult execution_result = 1; + bytes execution_result = 1; + // sdk_execution_result is the structured form of execution_result. It carries + // the same sdk.v1alpha.ExecutionResult as the serialized execution_result + // bytes field; the two are independent on the wire. + sdk.v1alpha.ExecutionResult sdk_execution_result = 2; } message ProvidedTeesResponse { diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 2520cf4a..3cccb931 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -1374,60 +1374,75 @@ import "google/protobuf/empty.proto"; import "sdk/v1alpha/sdk.proto"; import "tools/generator/v1alpha/cre_metadata.proto"; +message SecretIdentifier { + string key = 1; + // namespace defaults to "main" when unset. + optional string namespace = 2; +} + // WorkflowExecution is the public data sent to the enclave. // Becomes ComputeRequest.PublicData after proto serialization, which is // covered by ComputeRequest.Hash() for F+1 quorum matching at the enclave. -// All fields here must be byte-identical across workflow DON nodes. message WorkflowExecution { // workflow_id identifies the workflow to execute. string workflow_id = 1; + // binary_url is retained for backward compatibility with existing consumers. + // New consumers must use ConfidentialWorkflowRequest.binary_url, which lives + // outside the hash envelope so each node can mint its own per-node URL + // without breaking F+1 quorum. See ConfidentialWorkflowRequest.binary_url. + string binary_url = 2; // binary_hash is the expected SHA-256 hash of the WASM binary, for integrity verification. - bytes binary_hash = 2; + bytes binary_hash = 3; // execute_request is a serialized sdk.v1alpha.ExecuteRequest proto. // Contains either a subscribe request or a trigger execution request. - sdk.v1alpha.ExecuteRequest execute_request = 3; + bytes execute_request = 4; // owner is the on-chain owner address of the workflow (hex, 0x-prefixed). // Used by the enclave for runtime secret fetching from VaultDON. - string owner = 4; + string owner = 5; // execution_id is the unique execution identifier (64 hex chars, 32 bytes). // Used by the enclave for runtime secret fetching from VaultDON. - string execution_id = 5; + string execution_id = 6; // org_id is the organization identifier for the workflow owner. // Used by the enclave when fetching secrets from VaultDON with org-based ownership. - string org_id = 6; - - // requirements to run this workflow - sdk.v1alpha.Requirements requirements = 7; + string org_id = 7; + // requirements describes what is needed to run this workflow (e.g. TEE type + // and regions). + sdk.v1alpha.Requirements requirements = 8; + // sdk_execute_request is the structured form of execute_request. It carries + // the same sdk.v1alpha.ExecuteRequest as the serialized execute_request bytes + // field; the two are independent on the wire (setting one does not populate + // the other). Consumers that want the typed message read this; legacy + // consumers continue to unmarshal execute_request. + sdk.v1alpha.ExecuteRequest sdk_execute_request = 9; } // ConfidentialWorkflowRequest is the input provided to the confidential workflows capability. -// It carries a WorkflowExecution (deterministic across workflow DON nodes, -// hashed for F+1 quorum) plus per-node-varying data that must live outside -// the hash envelope. +// It combines a WorkflowExecution with secrets from VaultDON. message ConfidentialWorkflowRequest { - WorkflowExecution execution = 1; - // binary_url is the pre-signed CloudFront URL used by the enclave to fetch - // the WASM binary. The workflow node mints this URL per-execution via - // NodeService.DownloadArtifact and ships it alongside the WorkflowExecution. - // - // This field is deliberately on ConfidentialWorkflowRequest rather than - // inside WorkflowExecution: every workflow DON node mints its own URL with - // its own AWS signature and expiry timestamp, so the value differs across - // nodes. WorkflowExecution serializes into ComputeRequest.PublicData, - // which is covered by ComputeRequest.Hash() for F+1 quorum matching at the - // enclave. A per-node value inside that envelope would break quorum. + repeated SecretIdentifier vault_don_secrets = 1; + WorkflowExecution execution = 2; + // binary_url is the pre-signed URL used by the enclave to fetch the WASM + // binary. It lives here, on ConfidentialWorkflowRequest, rather than inside + // WorkflowExecution: every workflow DON node mints its own URL with its own + // signature and expiry timestamp, so the value differs across nodes. + // WorkflowExecution serializes into ComputeRequest.PublicData, which is + // covered by ComputeRequest.Hash() for F+1 quorum matching at the enclave. + // A per-node value inside that envelope would break quorum. // - // The integrity anchor for the fetched bytes is execution.binary_hash, - // inside PublicData (and therefore signed and quorum-checked). The URL is - // a fetch hint; tampering with it is caught by the hash check on the - // returned bytes. - string binary_url = 2; + // The integrity anchor for the fetched bytes is execution.binary_hash, inside + // PublicData (and therefore signed and quorum-checked). The URL is a fetch + // hint; tampering with it is caught by the hash check on the returned bytes. + string binary_url = 3; } // ConfidentialWorkflowResponse is the output from the confidential workflows capability. message ConfidentialWorkflowResponse { // execution_result is a serialized sdk.v1alpha.ExecutionResult proto. - sdk.v1alpha.ExecutionResult execution_result = 1; + bytes execution_result = 1; + // sdk_execution_result is the structured form of execution_result. It carries + // the same sdk.v1alpha.ExecutionResult as the serialized execution_result + // bytes field; the two are independent on the wire. + sdk.v1alpha.ExecutionResult sdk_execution_result = 2; } message ProvidedTeesResponse { From e8efb307513b371e8741e6c69fa8bba5284eef33 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Thu, 28 May 2026 13:38:58 -0400 Subject: [PATCH 26/49] PLEX-3042 remove rpc context (#383) * cleanup solana sdk proto, rm unused RPCContext from replies * chore: empty commit to retrigger CI * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- cre/capabilities/blockchain/solana/v1alpha/client.proto | 7 ------- cre/go/installer/pkg/embedded_gen.go | 7 ------- 2 files changed, 14 deletions(-) diff --git a/cre/capabilities/blockchain/solana/v1alpha/client.proto b/cre/capabilities/blockchain/solana/v1alpha/client.proto index bf10b091..401b57cf 100644 --- a/cre/capabilities/blockchain/solana/v1alpha/client.proto +++ b/cre/capabilities/blockchain/solana/v1alpha/client.proto @@ -78,7 +78,6 @@ message GetAccountInfoOpts { // Reply for GetAccountInfoWithOpts. message GetAccountInfoWithOptsReply { - RPCContext rpc_context = 1; // read slot optional Account value = 2; // account (may be empty) } @@ -143,7 +142,6 @@ message OptionalAccountWrapper { // Reply for GetMultipleAccountsWithOpts. message GetMultipleAccountsWithOptsReply { - RPCContext rpc_context = 1; // read slot repeated OptionalAccountWrapper value = 2; // accounts (nil entries allowed) } @@ -285,11 +283,6 @@ message GetTransactionRequest { bytes signature = 1; // 64-byte signature } -// RPC read context. -message RPCContext { - uint64 slot = 1; -} - // Simulation options. message SimulateTXOpts { bool sig_verify = 1; // verify sigs diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 3cccb931..6253811b 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -714,7 +714,6 @@ message GetAccountInfoOpts { // Reply for GetAccountInfoWithOpts. message GetAccountInfoWithOptsReply { - RPCContext rpc_context = 1; // read slot optional Account value = 2; // account (may be empty) } @@ -779,7 +778,6 @@ message OptionalAccountWrapper { // Reply for GetMultipleAccountsWithOpts. message GetMultipleAccountsWithOptsReply { - RPCContext rpc_context = 1; // read slot repeated OptionalAccountWrapper value = 2; // accounts (nil entries allowed) } @@ -921,11 +919,6 @@ message GetTransactionRequest { bytes signature = 1; // 64-byte signature } -// RPC read context. -message RPCContext { - uint64 slot = 1; -} - // Simulation options. message SimulateTXOpts { bool sig_verify = 1; // verify sigs From 5168ac1ba014e5165f9ebe28cfcaef1365455d3b Mon Sep 17 00:00:00 2001 From: Cedric Date: Tue, 2 Jun 2026 14:15:23 +0100 Subject: [PATCH 27/49] CRE-4368: Add mtls auth to the http capability (#385) --- cre/capabilities/networking/http/v1alpha/client.proto | 7 +++++++ cre/go/installer/pkg/embedded_gen.go | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/cre/capabilities/networking/http/v1alpha/client.proto b/cre/capabilities/networking/http/v1alpha/client.proto index e395570d..4a32109e 100644 --- a/cre/capabilities/networking/http/v1alpha/client.proto +++ b/cre/capabilities/networking/http/v1alpha/client.proto @@ -16,6 +16,12 @@ message HeaderValues { repeated string values = 1; } +// MtlsAuth represents the private-key/cert pair for mtls auth. +message MtlsAuth { + bytes private_key = 1; + bytes certificate = 2; +} + message Request { string url = 1; string method = 2; @@ -24,6 +30,7 @@ message Request { google.protobuf.Duration timeout = 5; // Request timeout duration CacheSettings cache_settings = 6; map multi_headers = 7; + optional MtlsAuth mtls = 8; } message Response { diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 6253811b..99db3c44 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -1721,6 +1721,12 @@ message HeaderValues { repeated string values = 1; } +// MtlsAuth represents the private-key/cert pair for mtls auth. +message MtlsAuth { + bytes private_key = 1; + bytes certificate = 2; +} + message Request { string url = 1; string method = 2; @@ -1729,6 +1735,7 @@ message Request { google.protobuf.Duration timeout = 5; // Request timeout duration CacheSettings cache_settings = 6; map multi_headers = 7; + optional MtlsAuth mtls = 8; } message Response { From d3f4a3c7b58ade9384038058b2af612dd0610a2c Mon Sep 17 00:00:00 2001 From: Silas Lenihan <32529249+silaslenihan@users.noreply.github.com> Date: Wed, 3 Jun 2026 12:28:09 -0400 Subject: [PATCH 28/49] Plex 2773/add include reverted (#388) * add include reverted * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- cre/capabilities/blockchain/solana/v1alpha/client.proto | 1 + cre/go/installer/pkg/embedded_gen.go | 1 + 2 files changed, 2 insertions(+) diff --git a/cre/capabilities/blockchain/solana/v1alpha/client.proto b/cre/capabilities/blockchain/solana/v1alpha/client.proto index 401b57cf..52da8692 100644 --- a/cre/capabilities/blockchain/solana/v1alpha/client.proto +++ b/cre/capabilities/blockchain/solana/v1alpha/client.proto @@ -343,6 +343,7 @@ message FilterLogTriggerRequest { bytes contract_idl_json = 4; repeated SubkeyConfig subkeys = 5; optional CPIFilterConfig cpi_filter_config = 6; + bool include_reverted = 7; } message Log { diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 99db3c44..9a9b32d5 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -979,6 +979,7 @@ message FilterLogTriggerRequest { bytes contract_idl_json = 4; repeated SubkeyConfig subkeys = 5; optional CPIFilterConfig cpi_filter_config = 6; + bool include_reverted = 7; } message Log { From 6734db2d444f578756b94d4aaf01d41216142c1c Mon Sep 17 00:00:00 2001 From: Vladimir Date: Thu, 4 Jun 2026 13:19:08 -0400 Subject: [PATCH 29/49] add GetProgramAccounts endpoint (#389) * add GetProgramAccounts endpoint * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- .../blockchain/solana/v1alpha/client.proto | 38 +++++++++++++++++++ cre/go/installer/pkg/embedded_gen.go | 38 +++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/cre/capabilities/blockchain/solana/v1alpha/client.proto b/cre/capabilities/blockchain/solana/v1alpha/client.proto index 52da8692..797b7168 100644 --- a/cre/capabilities/blockchain/solana/v1alpha/client.proto +++ b/cre/capabilities/blockchain/solana/v1alpha/client.proto @@ -151,6 +151,43 @@ message GetMultipleAccountsWithOptsRequest { GetMultipleAccountsOpts opts = 2; } +// Memcmp filter for getProgramAccounts. +message RPCFilterMemcmp { + uint64 offset = 1; // byte offset into account data + bytes bytes = 2; // data to match (RPC encodes as base58) +} + +// Account filter for getProgramAccounts (memcmp or data size). +message RPCFilter { + RPCFilterMemcmp memcmp = 1; + uint64 data_size = 2; // match accounts with this data length +} + +// Options for GetProgramAccounts. +message GetProgramAccountsOpts { + EncodingType encoding = 1; + CommitmentType commitment = 2; + DataSlice data_slice = 3; + repeated RPCFilter filters = 4; +} + +// Program-owned account with its pubkey. +message KeyedAccount { + bytes pubkey = 1; // 32-byte Pubkey + Account account = 2; +} + +// Reply for GetProgramAccounts. +message GetProgramAccountsReply { + repeated KeyedAccount value = 1; +} + +// Request for GetProgramAccounts. +message GetProgramAccountsRequest { + bytes program = 1; // 32-byte program Pubkey + GetProgramAccountsOpts opts = 2; +} + // Reply for GetSignatureStatuses. message GetSignatureStatusesReply { repeated GetSignatureStatusesResult results = 1; // 1:1 with input @@ -412,6 +449,7 @@ service Client { rpc GetBlock(GetBlockRequest) returns (GetBlockReply); rpc GetFeeForMessage(GetFeeForMessageRequest) returns (GetFeeForMessageReply); rpc GetMultipleAccountsWithOpts(GetMultipleAccountsWithOptsRequest) returns (GetMultipleAccountsWithOptsReply); + rpc GetProgramAccounts(GetProgramAccountsRequest) returns (GetProgramAccountsReply); rpc GetSignatureStatuses(GetSignatureStatusesRequest) returns (GetSignatureStatusesReply); rpc GetSlotHeight(GetSlotHeightRequest) returns (GetSlotHeightReply); rpc GetTransaction(GetTransactionRequest) returns (GetTransactionReply); diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 9a9b32d5..3e0489bb 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -787,6 +787,43 @@ message GetMultipleAccountsWithOptsRequest { GetMultipleAccountsOpts opts = 2; } +// Memcmp filter for getProgramAccounts. +message RPCFilterMemcmp { + uint64 offset = 1; // byte offset into account data + bytes bytes = 2; // data to match (RPC encodes as base58) +} + +// Account filter for getProgramAccounts (memcmp or data size). +message RPCFilter { + RPCFilterMemcmp memcmp = 1; + uint64 data_size = 2; // match accounts with this data length +} + +// Options for GetProgramAccounts. +message GetProgramAccountsOpts { + EncodingType encoding = 1; + CommitmentType commitment = 2; + DataSlice data_slice = 3; + repeated RPCFilter filters = 4; +} + +// Program-owned account with its pubkey. +message KeyedAccount { + bytes pubkey = 1; // 32-byte Pubkey + Account account = 2; +} + +// Reply for GetProgramAccounts. +message GetProgramAccountsReply { + repeated KeyedAccount value = 1; +} + +// Request for GetProgramAccounts. +message GetProgramAccountsRequest { + bytes program = 1; // 32-byte program Pubkey + GetProgramAccountsOpts opts = 2; +} + // Reply for GetSignatureStatuses. message GetSignatureStatusesReply { repeated GetSignatureStatusesResult results = 1; // 1:1 with input @@ -1048,6 +1085,7 @@ service Client { rpc GetBlock(GetBlockRequest) returns (GetBlockReply); rpc GetFeeForMessage(GetFeeForMessageRequest) returns (GetFeeForMessageReply); rpc GetMultipleAccountsWithOpts(GetMultipleAccountsWithOptsRequest) returns (GetMultipleAccountsWithOptsReply); + rpc GetProgramAccounts(GetProgramAccountsRequest) returns (GetProgramAccountsReply); rpc GetSignatureStatuses(GetSignatureStatusesRequest) returns (GetSignatureStatusesReply); rpc GetSlotHeight(GetSlotHeightRequest) returns (GetSlotHeightReply); rpc GetTransaction(GetTransactionRequest) returns (GetTransactionReply); From 8da72855a204dfcdec700788f198ead8908d324a Mon Sep 17 00:00:00 2001 From: Silas Lenihan <32529249+silaslenihan@users.noreply.github.com> Date: Fri, 5 Jun 2026 10:55:20 -0400 Subject: [PATCH 30/49] Revert "Plex 2773/add include reverted (#388)" (#390) * Revert "Plex 2773/add include reverted (#388)" This reverts commit d3f4a3c7b58ade9384038058b2af612dd0610a2c. * empty --- cre/capabilities/blockchain/solana/v1alpha/client.proto | 1 - cre/go/installer/pkg/embedded_gen.go | 1 - 2 files changed, 2 deletions(-) diff --git a/cre/capabilities/blockchain/solana/v1alpha/client.proto b/cre/capabilities/blockchain/solana/v1alpha/client.proto index 797b7168..06d32eea 100644 --- a/cre/capabilities/blockchain/solana/v1alpha/client.proto +++ b/cre/capabilities/blockchain/solana/v1alpha/client.proto @@ -380,7 +380,6 @@ message FilterLogTriggerRequest { bytes contract_idl_json = 4; repeated SubkeyConfig subkeys = 5; optional CPIFilterConfig cpi_filter_config = 6; - bool include_reverted = 7; } message Log { diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 3e0489bb..0b1b81d5 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -1016,7 +1016,6 @@ message FilterLogTriggerRequest { bytes contract_idl_json = 4; repeated SubkeyConfig subkeys = 5; optional CPIFilterConfig cpi_filter_config = 6; - bool include_reverted = 7; } message Log { From c8423a41ef9a5d867615fc5d9ee68159e951c1ec Mon Sep 17 00:00:00 2001 From: ilija42 <57732589+ilija42@users.noreply.github.com> Date: Tue, 9 Jun 2026 11:30:34 -0400 Subject: [PATCH 31/49] Remove ledger_sequence from Stellar ReadContractRequest (#396) --- cre/capabilities/blockchain/stellar/v1alpha/client.proto | 2 -- cre/go/installer/pkg/embedded_gen.go | 2 -- 2 files changed, 4 deletions(-) diff --git a/cre/capabilities/blockchain/stellar/v1alpha/client.proto b/cre/capabilities/blockchain/stellar/v1alpha/client.proto index 3aec0827..e8677643 100644 --- a/cre/capabilities/blockchain/stellar/v1alpha/client.proto +++ b/cre/capabilities/blockchain/stellar/v1alpha/client.proto @@ -15,8 +15,6 @@ message ReadContractRequest { string contract_id = 1; string function = 2; repeated ScVal args = 3; // Typed Soroban contract arguments (replaces raw XDR bytes) - // Optional: 0 = latest - uint32 ledger_sequence = 4; } message ReadContractResponse { diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 0b1b81d5..c39f7731 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -1110,8 +1110,6 @@ message ReadContractRequest { string contract_id = 1; string function = 2; repeated ScVal args = 3; // Typed Soroban contract arguments (replaces raw XDR bytes) - // Optional: 0 = latest - uint32 ledger_sequence = 4; } message ReadContractResponse { From dd12fdd24b5653bc246e6458c912ce9bc9f44835 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Wed, 10 Jun 2026 21:15:30 -0400 Subject: [PATCH 32/49] [CRE] Add Solana mainnet (#398) * [CRE] Add solana mainnet selector * chore: empty commit to retrigger CI * fix proto * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- cre/capabilities/blockchain/solana/v1alpha/client.proto | 4 ++++ cre/go/installer/pkg/embedded_gen.go | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/cre/capabilities/blockchain/solana/v1alpha/client.proto b/cre/capabilities/blockchain/solana/v1alpha/client.proto index 06d32eea..087c454c 100644 --- a/cre/capabilities/blockchain/solana/v1alpha/client.proto +++ b/cre/capabilities/blockchain/solana/v1alpha/client.proto @@ -436,6 +436,10 @@ service Client { { key: "solana-devnet" value: 16423721717087811551 + }, + { + key: "solana-mainnet" + value: 124615329519749607 } ] } diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index c39f7731..257af0df 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -1072,6 +1072,10 @@ service Client { { key: "solana-devnet" value: 16423721717087811551 + }, + { + key: "solana-mainnet" + value: 124615329519749607 } ] } From b3feadd222f2c0c076d6e830afda5a1bb61a5e42 Mon Sep 17 00:00:00 2001 From: Tejaswi Nadahalli Date: Thu, 11 Jun 2026 13:56:17 +0200 Subject: [PATCH 33/49] Move binary_url back into the hash; deprecate the outside-envelope field (#387) * Deprecate outside-envelope binary_url and vault_don_secrets; restore in-hash binary_url Pivot away from the per-node pre-signed URL design. binary_url returns to WorkflowExecution (PublicData, covered by ComputeRequest.Hash()) as a stable canonical locator; the enclave authenticates to the storage service out of band via a fetch sidecar, so per-node URLs are no longer needed. - WorkflowExecution.binary_url: restored as the canonical field. - ConfidentialWorkflowRequest.binary_url: deprecated (kept for back-compat). - vault_don_secrets: deprecated (enclave fetches secrets dynamically at runtime). * Drop vault_don_secrets deprecation; keep only the binary_url pivot capabilities-development does not deprecate vault_don_secrets, so neither should this PR. Revert that field and its message comment to match the branch; the only net change is the binary_url move back into the hash. * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- .../confidentialworkflow/v1alpha/client.proto | 27 ++++++++----------- cre/go/installer/pkg/embedded_gen.go | 27 ++++++++----------- 2 files changed, 22 insertions(+), 32 deletions(-) diff --git a/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto b/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto index a3cdc670..001a2776 100644 --- a/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto +++ b/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto @@ -18,10 +18,12 @@ message SecretIdentifier { message WorkflowExecution { // workflow_id identifies the workflow to execute. string workflow_id = 1; - // binary_url is retained for backward compatibility with existing consumers. - // New consumers must use ConfidentialWorkflowRequest.binary_url, which lives - // outside the hash envelope so each node can mint its own per-node URL - // without breaking F+1 quorum. See ConfidentialWorkflowRequest.binary_url. + // binary_url is the URL from which the enclave fetches the compiled WASM + // binary. It lives inside WorkflowExecution (PublicData), covered by + // ComputeRequest.Hash() for F+1 quorum, so every node agrees on the same + // canonical locator. Authentication to the storage service is handled out of + // band by the fetch sidecar, so this is a stable, node-agnostic locator + // rather than a per-node pre-signed URL. string binary_url = 2; // binary_hash is the expected SHA-256 hash of the WASM binary, for integrity verification. bytes binary_hash = 3; @@ -53,18 +55,11 @@ message WorkflowExecution { message ConfidentialWorkflowRequest { repeated SecretIdentifier vault_don_secrets = 1; WorkflowExecution execution = 2; - // binary_url is the pre-signed URL used by the enclave to fetch the WASM - // binary. It lives here, on ConfidentialWorkflowRequest, rather than inside - // WorkflowExecution: every workflow DON node mints its own URL with its own - // signature and expiry timestamp, so the value differs across nodes. - // WorkflowExecution serializes into ComputeRequest.PublicData, which is - // covered by ComputeRequest.Hash() for F+1 quorum matching at the enclave. - // A per-node value inside that envelope would break quorum. - // - // The integrity anchor for the fetched bytes is execution.binary_hash, inside - // PublicData (and therefore signed and quorum-checked). The URL is a fetch - // hint; tampering with it is caught by the hash check on the returned bytes. - string binary_url = 3; + // Deprecated: the per-node pre-signed URL approach is superseded. binary_url + // now travels inside WorkflowExecution (PublicData) as a canonical locator, + // with authentication to the storage service handled out of band by the fetch + // sidecar. Retained for back-compat; no longer populated. + string binary_url = 3 [deprecated = true]; } // ConfidentialWorkflowResponse is the output from the confidential workflows capability. diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 257af0df..fa043482 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -1419,10 +1419,12 @@ message SecretIdentifier { message WorkflowExecution { // workflow_id identifies the workflow to execute. string workflow_id = 1; - // binary_url is retained for backward compatibility with existing consumers. - // New consumers must use ConfidentialWorkflowRequest.binary_url, which lives - // outside the hash envelope so each node can mint its own per-node URL - // without breaking F+1 quorum. See ConfidentialWorkflowRequest.binary_url. + // binary_url is the URL from which the enclave fetches the compiled WASM + // binary. It lives inside WorkflowExecution (PublicData), covered by + // ComputeRequest.Hash() for F+1 quorum, so every node agrees on the same + // canonical locator. Authentication to the storage service is handled out of + // band by the fetch sidecar, so this is a stable, node-agnostic locator + // rather than a per-node pre-signed URL. string binary_url = 2; // binary_hash is the expected SHA-256 hash of the WASM binary, for integrity verification. bytes binary_hash = 3; @@ -1454,18 +1456,11 @@ message WorkflowExecution { message ConfidentialWorkflowRequest { repeated SecretIdentifier vault_don_secrets = 1; WorkflowExecution execution = 2; - // binary_url is the pre-signed URL used by the enclave to fetch the WASM - // binary. It lives here, on ConfidentialWorkflowRequest, rather than inside - // WorkflowExecution: every workflow DON node mints its own URL with its own - // signature and expiry timestamp, so the value differs across nodes. - // WorkflowExecution serializes into ComputeRequest.PublicData, which is - // covered by ComputeRequest.Hash() for F+1 quorum matching at the enclave. - // A per-node value inside that envelope would break quorum. - // - // The integrity anchor for the fetched bytes is execution.binary_hash, inside - // PublicData (and therefore signed and quorum-checked). The URL is a fetch - // hint; tampering with it is caught by the hash check on the returned bytes. - string binary_url = 3; + // Deprecated: the per-node pre-signed URL approach is superseded. binary_url + // now travels inside WorkflowExecution (PublicData) as a canonical locator, + // with authentication to the storage service handled out of band by the fetch + // sidecar. Retained for back-compat; no longer populated. + string binary_url = 3 [deprecated = true]; } // ConfidentialWorkflowResponse is the output from the confidential workflows capability. From db97012a6c32746dd3891cedf4d3f1746d4ba87d Mon Sep 17 00:00:00 2001 From: ilija42 <57732589+ilija42@users.noreply.github.com> Date: Thu, 11 Jun 2026 08:31:41 -0400 Subject: [PATCH 34/49] Add source account to ReadContractRequest (#397) --- cre/capabilities/blockchain/stellar/v1alpha/client.proto | 4 ++++ cre/go/installer/pkg/embedded_gen.go | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/cre/capabilities/blockchain/stellar/v1alpha/client.proto b/cre/capabilities/blockchain/stellar/v1alpha/client.proto index e8677643..a583a6d3 100644 --- a/cre/capabilities/blockchain/stellar/v1alpha/client.proto +++ b/cre/capabilities/blockchain/stellar/v1alpha/client.proto @@ -15,6 +15,10 @@ message ReadContractRequest { string contract_id = 1; string function = 2; repeated ScVal args = 3; // Typed Soroban contract arguments (replaces raw XDR bytes) + // Source account (G… StrKey) to simulate the call as (the invoker). Required for contracts + // whose result depends on the caller, e.g. that call require_auth or branch on the invoker. + // Leave empty for source-insensitive reads; a deterministic placeholder account is used. + string source_account = 4; } message ReadContractResponse { diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index fa043482..6633edce 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -1114,6 +1114,10 @@ message ReadContractRequest { string contract_id = 1; string function = 2; repeated ScVal args = 3; // Typed Soroban contract arguments (replaces raw XDR bytes) + // Source account (G… StrKey) to simulate the call as (the invoker). Required for contracts + // whose result depends on the caller, e.g. that call require_auth or branch on the invoker. + // Leave empty for source-insensitive reads; a deterministic placeholder account is used. + string source_account = 4; } message ReadContractResponse { From 3e275988138f0ad3851c7a4da78359c263ccc962 Mon Sep 17 00:00:00 2001 From: Yashvardhan Nevatia Date: Mon, 15 Jun 2026 13:54:30 +0100 Subject: [PATCH 35/49] Chore sync with main 15 06 (#402) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add Pharos Atlantic support (#306) * Added Pharos Atlantic support * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * aptos proto: add ledger_version to ViewRequest (#310) * aptos proto: add ledger_version to ViewRequest * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add xlayer, megaeth, cronos, mantle, tac, unichain, scroll, sonic testnet support (#308) * Added xlayer megaeth cronos mantle tac unichain scroll sonic support * Auto-fix: buf format, gofmt, go generate, go mod tidy * Added celo sepolia * Auto-fix: buf format, gofmt, go generate, go mod tidy * Added gnosis chiado * Auto-fix: buf format, gofmt, go generate, go mod tidy * Removed celo sepolia * Auto-fix: buf format, gofmt, go generate, go mod tidy * Removed gnosis chiado * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add andesite chain (#313) * Added andesite chain * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add new mainnet chains to client proto (#315) * Added new mainnet chains to client proto * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Remove aptos (moved to capabilities-development branch) (#316) * remove aptos * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add owner and execution_id to WorkflowExecution proto (#317) Adds workflow-level context to the app-specific proto rather than the generic ComputeRequest type, per vreff's feedback on CC PR #277. The enclave app reads these from the deserialized WorkflowExecution for runtime secret fetching from VaultDON via the relay DON. * Add Privacy as codeowners of protos embedded gen files (#318) * feat: add NodeBuildInfo proto and register it in chip schemas (#320) * Revert "Remove aptos (moved to capabilities-development branch) (#316)" (#321) This reverts commit 1124ff8c35a15379c5b7ad415bb79cbd10d595b1. * Add hyperliquid mainnet to client proto (#322) * Added hyperliquid mainnet to client proto * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add gnosis chiado to client proto (#324) * Added gnosis chiado to client proto * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * add WorkflowUserMetric (#319) * add WorkflowUserMetric * fix metric suffix * bot: regenerate protobuf files * add USER_METRIC_TYPE_UNSPECIFIED * bot: regenerate protobuf files * update WorkflowUserMetric value to double * drop histogram support * bot: regenerate protobuf files --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Revert "Revert "Remove aptos (moved to capabilities-development branch) (#316…" (#331) This reverts commit ad04ed6d891e0349a00c8e96920e95f5d5adf39f. * Add capability-development branch protection CI (#327) * Add capability-development branch protection ci * Upgraded checkout action to major version tag * Updated validation to only occur when target branch is main * Addressed feedback * beholder: publish workflows/v2/workflow_user_metric (#333) * beholder: publish workflows/v2/workflow_user_metric.proto * remove entry from deprecated files * cre-1835: steady and transition indicators (#334) * feat(op-catalog): add SEMANTICS_DELETE to EditSemantics enum (#342) * Version Packages (#343) Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add Fastlane Atlas userOp message (#344) * Add fastlane userOp message * bot: regenerate protobuf files --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * OEV-851 Add optional dualBroadcastParams field to TxMessage (#302) * Adding job spec protos for Data Feeds (#346) * Adding job spec protos for Data Feeds * Removing iron-flask-data-feeds file * Restoring file, only deleting what was added * trailing newline * Adding subdomain data-feeds.job-spec * Removing added yarn.lock * Registering job_spec messages for Beholder domain (#348) * Add node job info platform event proto (#345) * Updating CODEOWNERS for data-feeds (#350) * Simplifying job spec protos (#349) * Simplying job spec protos * Simplifying job spec protos * Moving location of contract_id * Update gh worflow file to trigger on changes to chip `.json` (#352) * Message rules API (#351) * Message rules API * bot: regenerate protobuf files * Bump GRPC deps --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add celo-sepolia and adi-testnet support (#358) (#359) * Added celo-sepolia and adi-testnet support * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add adi-mainnet support (#366) (#367) * Added adi-mainnet support * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> Co-authored-by: Justin Kaseman * Add private-testnet-rhyolite support (#368) (#372) * Added private-testnet-rhyolite support * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Cherry-pick WR solana (#373) * add solana WriteReport for main cherry-pick * tweak ci to accept proto changes * node-platform: register beholder domain schemas (#377) Add beholder-schemas.json and extend the registration workflow to publish ChainPluginConfig, NodeBuildInfo, and NodeJobInfo under beholder__node-platform__messages. Co-authored-by: Cursor * Revert "node-platform: register beholder domain schemas (#377)" (#379) * adding TEE metadata to workflow execution finished (#362) * adding TEE metadata to workflow execution finished * bot: regenerate protobuf files --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * workflow execution profile (#382) * workflow execution profile * format * bot: regenerate protobuf files --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * feat(feedsmanager): add OCR2 onchain signing address pub key field (#380) * feat(feedsmanager): add OCR2 onchain signing address pub key field Expose the full uncompressed EVM secp256k1 public key on OCR2 key bundles for Job Distributor node config proposals. Co-authored-by: Cursor * bot: regenerate protobuf files * fix(feedsmanager): rename onchain signing pub key field per review Rename onchain_signing_address_pub_key to onchain_signing_pub_key and add changeset for @chainlink/orchestrator. --------- Co-authored-by: Cursor Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * add pub key to ocr bundle jd (#391) * add pub key to ocr bundle jd * bot: regenerate protobuf files --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * fix: changeset generation (#392) * fix: pin human id version (#393) * Version Packages (#394) Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add privacy team as CODEOWNERS for confidential workflow (#339) * [CRE] Add Solana mainnet (#398) (#399) * [CRE] Add solana mainnet selector --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * fix * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: amit-momin <108959691+amit-momin@users.noreply.github.com> Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> Co-authored-by: cawthorne Co-authored-by: Tejaswi Nadahalli Co-authored-by: vreff <104409744+vreff@users.noreply.github.com> Co-authored-by: Gheorghe Strimtu Co-authored-by: karen-stepanyan <91897037+karen-stepanyan@users.noreply.github.com> Co-authored-by: mchain0 Co-authored-by: Giorgio Gambino <151543+giogam@users.noreply.github.com> Co-authored-by: Dimitris Grigoriou Co-authored-by: Geert <117188496+cll-gg@users.noreply.github.com> Co-authored-by: thomjg <103059015+thomjg@users.noreply.github.com> Co-authored-by: hendoxc <42331373+hendoxc@users.noreply.github.com> Co-authored-by: Simon B.Robert Co-authored-by: Justin Kaseman Co-authored-by: Vladimir Co-authored-by: Pavel <177363085+pkcll@users.noreply.github.com> Co-authored-by: Cursor Co-authored-by: Patrick Co-authored-by: Matthew Pendrey Co-authored-by: Sishir Giri Co-authored-by: Chris Amora <27789416+ChrisAmora@users.noreply.github.com> --- .github/CODEOWNERS | 1 + .../verify-cre-proto-subset-of-capdev.sh | 126 +++++++++ .github/workflows/cre-branch-protection.yml | 13 +- job-distributor/CHANGELOG.md | 6 + job-distributor/package.json | 2 +- job-distributor/v1/node/node.pb.go | 15 +- job-distributor/v1/node/node.proto | 1 + orchestrator/CHANGELOG.md | 6 + orchestrator/feedsmanager/feedsmanager.pb.go | 20 +- orchestrator/feedsmanager/feedsmanager.proto | 2 + orchestrator/package.json | 2 +- package.json | 9 +- pnpm-lock.yaml | 133 +++++---- workflows/go/generate.go | 1 + .../go/v2/workflow_execution_finished.pb.go | 13 +- .../go/v2/workflow_execution_profile.pb.go | 253 ++++++++++++++++++ .../v2/workflow_execution_finished.proto | 1 + .../v2/workflow_execution_profile.proto | 22 ++ 18 files changed, 553 insertions(+), 73 deletions(-) create mode 100755 .github/scripts/verify-cre-proto-subset-of-capdev.sh create mode 100644 workflows/go/v2/workflow_execution_profile.pb.go create mode 100644 workflows/workflows/v2/workflow_execution_profile.proto diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index c838ca50..3d0d6f8b 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -22,6 +22,7 @@ #CRE Privacy /cre/capabilities/networking/confidentialhttp @smartcontractkit/privacy @smartcontractkit/op-tooling +/cre/capabilities/compute/confidentialworkflow @smartcontractkit/privacy @smartcontractkit/op-tooling # Data /data-feeds/ @smartcontractkit/data-feeds-engineers @smartcontractkit/op-tooling diff --git a/.github/scripts/verify-cre-proto-subset-of-capdev.sh b/.github/scripts/verify-cre-proto-subset-of-capdev.sh new file mode 100755 index 00000000..53686419 --- /dev/null +++ b/.github/scripts/verify-cre-proto-subset-of-capdev.sh @@ -0,0 +1,126 @@ +#!/usr/bin/env bash +# Verify PR cre/ proto changes are already present on capabilities-development. +# +# Usage (from repo root, on a PR branch): +# bash ./.github/scripts/verify-cre-proto-subset-of-capdev.sh + +set -euo pipefail + +BASE_BRANCH="${BASE_BRANCH:-main}" +CAP_DEV_BRANCH="${CAP_DEV_BRANCH:-capabilities-development}" +# When set to 1 (CI fallback after patch-id failure), fail if the PR has no proto changes. +REQUIRE_PROTO_CHANGES="${REQUIRE_PROTO_CHANGES:-0}" + +git fetch origin "${BASE_BRANCH}" "${CAP_DEV_BRANCH}" --quiet + +PROTO_FILES=$(git diff --name-only "origin/${BASE_BRANCH}...HEAD" -- 'cre/**/*.proto' || true) + +if [[ -z "${PROTO_FILES}" ]]; then + if [[ "${REQUIRE_PROTO_CHANGES}" == "1" ]]; then + echo "::error::Patch-id check failed and PR has no cre/**/*.proto changes for subset fallback." + exit 1 + fi + echo "No cre/ proto files changed in PR. Subset check skipped." + exit 0 +fi + +echo "Checking proto file(s) against origin/${CAP_DEV_BRANCH}..." +echo "" + +WORKDIR=$(mktemp -d) +trap 'rm -rf "$WORKDIR"' EXIT + +fail() { + echo "::error::$1" + exit 1 +} + +extract_block() { + local file=$1 kind=$2 name=$3 + awk -v kind="$kind" -v name="$name" ' + $1 == kind && $2 == name { + depth = 0 + in_block = 1 + } + in_block { + print + if ($0 ~ /{/) depth++ + if ($0 ~ /}/) { + depth-- + if (depth == 0) { exit } + } + } + ' "$file" +} + +field_lines() { + grep -E '^\s*(repeated\s+)?[A-Za-z0-9_.]+\s+[A-Za-z0-9_]+\s*=\s*[0-9]+;' || true +} + +check_proto_subset() { + local rel=$1 + local pr_file=$2 + local cap_file=$3 + + echo " file: ${rel}" + + while IFS= read -r rpc_line; do + [[ -z "$rpc_line" ]] && continue + grep -qF "$rpc_line" "$cap_file" || fail "${rel}: RPC missing on ${CAP_DEV_BRANCH}: ${rpc_line}" + done </dev/null || \ + fail "${rel}: enum missing on ${CAP_DEV_BRANCH}: ${enum_name}" + + while IFS= read -r val_line; do + [[ -z "$val_line" ]] && continue + grep -qF "$val_line" "$cap_file" || \ + fail "${rel}: enum value missing on ${CAP_DEV_BRANCH} (${enum_name}): ${val_line}" + done </dev/null || \ + fail "${rel}: message missing on ${CAP_DEV_BRANCH}: ${msg_name}" + + while IFS= read -r field_line; do + [[ -z "$field_line" ]] && continue + grep -qF "$field_line" "$cap_file" || \ + fail "${rel}: field missing on ${CAP_DEV_BRANCH} (${msg_name}): ${field_line}" + done </dev/null; then + fail "${rel} does not exist on origin/${CAP_DEV_BRANCH}" + fi + + git show "HEAD:${rel}" > "${WORKDIR}/pr.proto" + git show "origin/${CAP_DEV_BRANCH}:${rel}" > "${WORKDIR}/cap.proto" + + check_proto_subset "$rel" "${WORKDIR}/pr.proto" "${WORKDIR}/cap.proto" + echo "" +done <=6.9.0'} - '@changesets/apply-release-plan@7.0.13': - resolution: {integrity: sha512-BIW7bofD2yAWoE8H4V40FikC+1nNFEKBisMECccS16W1rt6qqhNTBDmIw5HaqmMgtLNz9e7oiALiEUuKrQ4oHg==} + '@changesets/apply-release-plan@7.1.1': + resolution: {integrity: sha512-9qPCm/rLx/xoOFXIHGB229+4GOL76S4MC+7tyOuTsR6+1jYlfFDQORdvwR5hDA6y4FL2BPt3qpbcQIS+dW85LA==} - '@changesets/assemble-release-plan@6.0.9': - resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} + '@changesets/assemble-release-plan@6.0.10': + resolution: {integrity: sha512-rSDcqdJ9KbVyjpBIuCidhvZNIiVt1XaIYp73ycVQRIA5n/j6wQaEk0ChRLMUQ1vkxZe51PTQ9OIhbg6HQMW45A==} '@changesets/changelog-git@0.2.1': resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} - '@changesets/changelog-github@0.5.1': - resolution: {integrity: sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ==} + '@changesets/changelog-github@0.7.0': + resolution: {integrity: sha512-rBsbRvc4TVn+FvFnOVM3LxlFJfTXXCp8gfVJ+0BubxWNSVnLuAzowi5j+IEraLLP52w8AAs9QfKbPS3MMiXQJA==} - '@changesets/cli@2.29.7': - resolution: {integrity: sha512-R7RqWoaksyyKXbKXBTbT4REdy22yH81mcFK6sWtqSanxUCbUi9Uf+6aqxZtDQouIqPdem2W56CdxXgsxdq7FLQ==} + '@changesets/cli@2.31.0': + resolution: {integrity: sha512-AhI4enNTgHu2IZr6K4WZyf0EPch4XVMn1yOMFmCD9gsfBGqMYaHXls5HyDv6/CL5axVQABz68eG30eCtbr2wFg==} hasBin: true - '@changesets/config@3.1.1': - resolution: {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==} + '@changesets/config@3.1.4': + resolution: {integrity: sha512-pf0bvD/v6WI2cRlZ6hzpjtZdSlXDXMAJ+Iz7xfFzV4ZxJ8OGGAON+1qYc99ZPrijnt4xp3VGG7eNvAOGS24V1Q==} '@changesets/errors@0.2.0': resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - '@changesets/get-dependents-graph@2.1.3': - resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} + '@changesets/get-dependents-graph@2.1.4': + resolution: {integrity: sha512-ZsS00x6WvmHq3sQv8oCMwL0f/z3wbXCVuSVTJwCnnmbC/iBdNJGFx1EcbMG4PC6sXRyH69liM4A2WKXzn/kRPg==} - '@changesets/get-github-info@0.6.0': - resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} + '@changesets/get-github-info@0.8.0': + resolution: {integrity: sha512-cRnC+xdF0JIik7coko3iUP9qbnfi1iJQ3sAa6dE+Tx3+ET8bjFEm63PA4WEohgjYcmsOikPHWzPsMWWiZmntOQ==} - '@changesets/get-release-plan@4.0.13': - resolution: {integrity: sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==} + '@changesets/get-release-plan@4.0.16': + resolution: {integrity: sha512-2K5Om6CrMPm45rtvckfzWo7e9jOVCKLCnXia5eUPaURH7/LWzri7pK1TycdzAuAtehLkW7VPbWLCSExTHmiI6g==} '@changesets/get-version-range-type@0.4.0': resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} @@ -77,14 +88,14 @@ packages: '@changesets/logger@0.1.1': resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} - '@changesets/parse@0.4.1': - resolution: {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==} + '@changesets/parse@0.4.3': + resolution: {integrity: sha512-ZDmNc53+dXdWEv7fqIUSgRQOLYoUom5Z40gmLgmATmYR9NbL6FJJHwakcCpzaeCy+1D0m0n7mT4jj2B/MQPl7A==} '@changesets/pre@2.0.2': resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} - '@changesets/read@0.6.5': - resolution: {integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==} + '@changesets/read@0.6.7': + resolution: {integrity: sha512-D1G4AUYGrBEk8vj8MGwf75k9GpN6XL3wg8i42P2jZZwFLXnlr2Pn7r9yuQNbaMCarP7ZQWNJbV6XLeysAIMhTA==} '@changesets/should-skip-package@0.1.2': resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} @@ -139,6 +150,9 @@ packages: argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -154,10 +168,6 @@ packages: chardet@2.1.0: resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -262,6 +272,10 @@ packages: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true + js-yaml@4.2.0: + resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==} + hasBin: true + jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -436,9 +450,9 @@ snapshots: '@babel/runtime@7.28.4': {} - '@changesets/apply-release-plan@7.0.13': + '@changesets/apply-release-plan@7.1.1': dependencies: - '@changesets/config': 3.1.1 + '@changesets/config': 3.1.4 '@changesets/get-version-range-type': 0.4.0 '@changesets/git': 3.0.4 '@changesets/should-skip-package': 0.1.2 @@ -452,10 +466,10 @@ snapshots: resolve-from: 5.0.0 semver: 7.7.2 - '@changesets/assemble-release-plan@6.0.9': + '@changesets/assemble-release-plan@6.0.10': dependencies: '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.3 + '@changesets/get-dependents-graph': 2.1.4 '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 @@ -465,38 +479,36 @@ snapshots: dependencies: '@changesets/types': 6.1.0 - '@changesets/changelog-github@0.5.1': + '@changesets/changelog-github@0.7.0': dependencies: - '@changesets/get-github-info': 0.6.0 + '@changesets/get-github-info': 0.8.0 '@changesets/types': 6.1.0 dotenv: 8.6.0 transitivePeerDependencies: - encoding - '@changesets/cli@2.29.7': + '@changesets/cli@2.31.0': dependencies: - '@changesets/apply-release-plan': 7.0.13 - '@changesets/assemble-release-plan': 6.0.9 + '@changesets/apply-release-plan': 7.1.1 + '@changesets/assemble-release-plan': 6.0.10 '@changesets/changelog-git': 0.2.1 - '@changesets/config': 3.1.1 + '@changesets/config': 3.1.4 '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.3 - '@changesets/get-release-plan': 4.0.13 + '@changesets/get-dependents-graph': 2.1.4 + '@changesets/get-release-plan': 4.0.16 '@changesets/git': 3.0.4 '@changesets/logger': 0.1.1 '@changesets/pre': 2.0.2 - '@changesets/read': 0.6.5 + '@changesets/read': 0.6.7 '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 '@inquirer/external-editor': 1.0.2 '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 - ci-info: 3.9.0 enquirer: 2.4.1 fs-extra: 7.0.1 mri: 1.2.0 - p-limit: 2.3.0 package-manager-detector: 0.2.11 picocolors: 1.1.1 resolve-from: 5.0.0 @@ -506,11 +518,12 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@changesets/config@3.1.1': + '@changesets/config@3.1.4': dependencies: '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.3 + '@changesets/get-dependents-graph': 2.1.4 '@changesets/logger': 0.1.1 + '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 @@ -520,26 +533,26 @@ snapshots: dependencies: extendable-error: 0.1.7 - '@changesets/get-dependents-graph@2.1.3': + '@changesets/get-dependents-graph@2.1.4': dependencies: '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 picocolors: 1.1.1 semver: 7.7.2 - '@changesets/get-github-info@0.6.0': + '@changesets/get-github-info@0.8.0': dependencies: dataloader: 1.4.0 node-fetch: 2.7.0 transitivePeerDependencies: - encoding - '@changesets/get-release-plan@4.0.13': + '@changesets/get-release-plan@4.0.16': dependencies: - '@changesets/assemble-release-plan': 6.0.9 - '@changesets/config': 3.1.1 + '@changesets/assemble-release-plan': 6.0.10 + '@changesets/config': 3.1.4 '@changesets/pre': 2.0.2 - '@changesets/read': 0.6.5 + '@changesets/read': 0.6.7 '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 @@ -557,10 +570,10 @@ snapshots: dependencies: picocolors: 1.1.1 - '@changesets/parse@0.4.1': + '@changesets/parse@0.4.3': dependencies: '@changesets/types': 6.1.0 - js-yaml: 3.14.1 + js-yaml: 4.2.0 '@changesets/pre@2.0.2': dependencies: @@ -569,11 +582,11 @@ snapshots: '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - '@changesets/read@0.6.5': + '@changesets/read@0.6.7': dependencies: '@changesets/git': 3.0.4 '@changesets/logger': 0.1.1 - '@changesets/parse': 0.4.1 + '@changesets/parse': 0.4.3 '@changesets/types': 6.1.0 fs-extra: 7.0.1 p-filter: 2.1.0 @@ -638,6 +651,8 @@ snapshots: dependencies: sprintf-js: 1.0.3 + argparse@2.0.1: {} + array-union@2.1.0: {} better-path-resolve@1.0.0: @@ -650,8 +665,6 @@ snapshots: chardet@2.1.0: {} - ci-info@3.9.0: {} - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -754,6 +767,10 @@ snapshots: argparse: 1.0.10 esprima: 4.0.1 + js-yaml@4.2.0: + dependencies: + argparse: 2.0.1 + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 diff --git a/workflows/go/generate.go b/workflows/go/generate.go index 36fb64c5..73a2d2e0 100644 --- a/workflows/go/generate.go +++ b/workflows/go/generate.go @@ -31,6 +31,7 @@ package workflows //go:generate protoc --proto_path=../ --go_out=./ --go_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go ../workflows/v2/workflow_user_log.proto //go:generate protoc --proto_path=../ --go_out=./ --go_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go ../workflows/v2/workflow_user_metric.proto //go:generate protoc --proto_path=../ --go_out=./ --go_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go ../workflows/v2/xxx_no_send.proto +//go:generate protoc --proto_path=../ --go_out=./ --go_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go ../workflows/v2/workflow_execution_profile.proto // sources/v1 - workflow metadata source service //go:generate protoc --proto_path=../ --go_out=./ --go-grpc_out=./ --go_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go --go-grpc_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go ../sources/v1/workflow_metadata_source.proto diff --git a/workflows/go/v2/workflow_execution_finished.pb.go b/workflows/go/v2/workflow_execution_finished.pb.go index ae335ea0..31502f54 100644 --- a/workflows/go/v2/workflow_execution_finished.pb.go +++ b/workflows/go/v2/workflow_execution_finished.pb.go @@ -29,6 +29,7 @@ type WorkflowExecutionFinished struct { Timestamp string `protobuf:"bytes,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` Status ExecutionStatus `protobuf:"varint,5,opt,name=status,proto3,enum=workflows.v2.ExecutionStatus" json:"status,omitempty"` Error string `protobuf:"bytes,6,opt,name=error,proto3" json:"error,omitempty"` + ExecutedInTEE bool `protobuf:"varint,7,opt,name=executedInTEE,proto3" json:"executedInTEE,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -105,18 +106,26 @@ func (x *WorkflowExecutionFinished) GetError() string { return "" } +func (x *WorkflowExecutionFinished) GetExecutedInTEE() bool { + if x != nil { + return x.ExecutedInTEE + } + return false +} + var File_workflows_v2_workflow_execution_finished_proto protoreflect.FileDescriptor const file_workflows_v2_workflow_execution_finished_proto_rawDesc = "" + "\n" + - ".workflows/v2/workflow_execution_finished.proto\x12\fworkflows.v2\x1a\x1bworkflows/v2/cre_info.proto\x1a\x1fworkflows/v2/workflow_key.proto\x1a\x1eworkflows/v2/xxx_no_send.proto\"\xa0\x02\n" + + ".workflows/v2/workflow_execution_finished.proto\x12\fworkflows.v2\x1a\x1bworkflows/v2/cre_info.proto\x1a\x1fworkflows/v2/workflow_key.proto\x1a\x1eworkflows/v2/xxx_no_send.proto\"\xc6\x02\n" + "\x19WorkflowExecutionFinished\x12/\n" + "\acreInfo\x18\x01 \x01(\v2\x15.workflows.v2.CreInfoR\acreInfo\x125\n" + "\bworkflow\x18\x02 \x01(\v2\x19.workflows.v2.WorkflowKeyR\bworkflow\x120\n" + "\x13workflowExecutionID\x18\x03 \x01(\tR\x13workflowExecutionID\x12\x1c\n" + "\ttimestamp\x18\x04 \x01(\tR\ttimestamp\x125\n" + "\x06status\x18\x05 \x01(\x0e2\x1d.workflows.v2.ExecutionStatusR\x06status\x12\x14\n" + - "\x05error\x18\x06 \x01(\tR\x05errorB>ZZZ workflows.v2.ExecutionProfileStep + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_workflows_v2_workflow_execution_profile_proto_init() } +func file_workflows_v2_workflow_execution_profile_proto_init() { + if File_workflows_v2_workflow_execution_profile_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_workflows_v2_workflow_execution_profile_proto_rawDesc), len(file_workflows_v2_workflow_execution_profile_proto_rawDesc)), + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_workflows_v2_workflow_execution_profile_proto_goTypes, + DependencyIndexes: file_workflows_v2_workflow_execution_profile_proto_depIdxs, + MessageInfos: file_workflows_v2_workflow_execution_profile_proto_msgTypes, + }.Build() + File_workflows_v2_workflow_execution_profile_proto = out.File + file_workflows_v2_workflow_execution_profile_proto_goTypes = nil + file_workflows_v2_workflow_execution_profile_proto_depIdxs = nil +} diff --git a/workflows/workflows/v2/workflow_execution_finished.proto b/workflows/workflows/v2/workflow_execution_finished.proto index dfe22c8f..b70624bd 100644 --- a/workflows/workflows/v2/workflow_execution_finished.proto +++ b/workflows/workflows/v2/workflow_execution_finished.proto @@ -16,4 +16,5 @@ message WorkflowExecutionFinished { ExecutionStatus status = 5; string error = 6; + bool executedInTEE = 7; } diff --git a/workflows/workflows/v2/workflow_execution_profile.proto b/workflows/workflows/v2/workflow_execution_profile.proto new file mode 100644 index 00000000..b0d32cc1 --- /dev/null +++ b/workflows/workflows/v2/workflow_execution_profile.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; + +package workflows.v2; + +option go_package = "github.com/smartcontractkit/chainlink-protos/workflows/go/v2"; + +message ExecutionProfile { + string workflowID = 1; + string workflowExecutionID = 2; + string startTime = 3; + string endTime = 4; + string status = 5; + repeated ExecutionProfileStep steps = 6; +} + +message ExecutionProfileStep { + string stepID = 1; + string startTime = 2; + string endTime = 3; + string capabilityID = 4; + bool hasError = 5; +} From f650681540ef97d5b44250feefda440154395ff4 Mon Sep 17 00:00:00 2001 From: Yashvardhan Nevatia Date: Mon, 15 Jun 2026 14:59:43 +0100 Subject: [PATCH 36/49] Add Tx Timestamp for Aptos WriteReportReply (#403) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add Pharos Atlantic support (#306) * Added Pharos Atlantic support * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * aptos proto: add ledger_version to ViewRequest (#310) * aptos proto: add ledger_version to ViewRequest * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add xlayer, megaeth, cronos, mantle, tac, unichain, scroll, sonic testnet support (#308) * Added xlayer megaeth cronos mantle tac unichain scroll sonic support * Auto-fix: buf format, gofmt, go generate, go mod tidy * Added celo sepolia * Auto-fix: buf format, gofmt, go generate, go mod tidy * Added gnosis chiado * Auto-fix: buf format, gofmt, go generate, go mod tidy * Removed celo sepolia * Auto-fix: buf format, gofmt, go generate, go mod tidy * Removed gnosis chiado * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add andesite chain (#313) * Added andesite chain * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add new mainnet chains to client proto (#315) * Added new mainnet chains to client proto * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Remove aptos (moved to capabilities-development branch) (#316) * remove aptos * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add owner and execution_id to WorkflowExecution proto (#317) Adds workflow-level context to the app-specific proto rather than the generic ComputeRequest type, per vreff's feedback on CC PR #277. The enclave app reads these from the deserialized WorkflowExecution for runtime secret fetching from VaultDON via the relay DON. * Add Privacy as codeowners of protos embedded gen files (#318) * feat: add NodeBuildInfo proto and register it in chip schemas (#320) * Revert "Remove aptos (moved to capabilities-development branch) (#316)" (#321) This reverts commit 1124ff8c35a15379c5b7ad415bb79cbd10d595b1. * Add hyperliquid mainnet to client proto (#322) * Added hyperliquid mainnet to client proto * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add gnosis chiado to client proto (#324) * Added gnosis chiado to client proto * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * add WorkflowUserMetric (#319) * add WorkflowUserMetric * fix metric suffix * bot: regenerate protobuf files * add USER_METRIC_TYPE_UNSPECIFIED * bot: regenerate protobuf files * update WorkflowUserMetric value to double * drop histogram support * bot: regenerate protobuf files --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Revert "Revert "Remove aptos (moved to capabilities-development branch) (#316…" (#331) This reverts commit ad04ed6d891e0349a00c8e96920e95f5d5adf39f. * Add capability-development branch protection CI (#327) * Add capability-development branch protection ci * Upgraded checkout action to major version tag * Updated validation to only occur when target branch is main * Addressed feedback * beholder: publish workflows/v2/workflow_user_metric (#333) * beholder: publish workflows/v2/workflow_user_metric.proto * remove entry from deprecated files * cre-1835: steady and transition indicators (#334) * feat(op-catalog): add SEMANTICS_DELETE to EditSemantics enum (#342) * Version Packages (#343) Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add Fastlane Atlas userOp message (#344) * Add fastlane userOp message * bot: regenerate protobuf files --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * OEV-851 Add optional dualBroadcastParams field to TxMessage (#302) * Adding job spec protos for Data Feeds (#346) * Adding job spec protos for Data Feeds * Removing iron-flask-data-feeds file * Restoring file, only deleting what was added * trailing newline * Adding subdomain data-feeds.job-spec * Removing added yarn.lock * Registering job_spec messages for Beholder domain (#348) * Add node job info platform event proto (#345) * Updating CODEOWNERS for data-feeds (#350) * Simplifying job spec protos (#349) * Simplying job spec protos * Simplifying job spec protos * Moving location of contract_id * Update gh worflow file to trigger on changes to chip `.json` (#352) * Message rules API (#351) * Message rules API * bot: regenerate protobuf files * Bump GRPC deps --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add celo-sepolia and adi-testnet support (#358) (#359) * Added celo-sepolia and adi-testnet support * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add adi-mainnet support (#366) (#367) * Added adi-mainnet support * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> Co-authored-by: Justin Kaseman * Add private-testnet-rhyolite support (#368) (#372) * Added private-testnet-rhyolite support * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Cherry-pick WR solana (#373) * add solana WriteReport for main cherry-pick * tweak ci to accept proto changes * node-platform: register beholder domain schemas (#377) Add beholder-schemas.json and extend the registration workflow to publish ChainPluginConfig, NodeBuildInfo, and NodeJobInfo under beholder__node-platform__messages. Co-authored-by: Cursor * Revert "node-platform: register beholder domain schemas (#377)" (#379) * adding TEE metadata to workflow execution finished (#362) * adding TEE metadata to workflow execution finished * bot: regenerate protobuf files --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * workflow execution profile (#382) * workflow execution profile * format * bot: regenerate protobuf files --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * feat(feedsmanager): add OCR2 onchain signing address pub key field (#380) * feat(feedsmanager): add OCR2 onchain signing address pub key field Expose the full uncompressed EVM secp256k1 public key on OCR2 key bundles for Job Distributor node config proposals. Co-authored-by: Cursor * bot: regenerate protobuf files * fix(feedsmanager): rename onchain signing pub key field per review Rename onchain_signing_address_pub_key to onchain_signing_pub_key and add changeset for @chainlink/orchestrator. --------- Co-authored-by: Cursor Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * add pub key to ocr bundle jd (#391) * add pub key to ocr bundle jd * bot: regenerate protobuf files --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * fix: changeset generation (#392) * fix: pin human id version (#393) * Version Packages (#394) Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * Add privacy team as CODEOWNERS for confidential workflow (#339) * [CRE] Add Solana mainnet (#398) (#399) * [CRE] Add solana mainnet selector --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> * fix * Add Tx Timestamp for Aptos WriteReportReply * Update SubmitTxReply * Only WriteReportReply --------- Co-authored-by: amit-momin <108959691+amit-momin@users.noreply.github.com> Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> Co-authored-by: cawthorne Co-authored-by: Tejaswi Nadahalli Co-authored-by: vreff <104409744+vreff@users.noreply.github.com> Co-authored-by: Gheorghe Strimtu Co-authored-by: karen-stepanyan <91897037+karen-stepanyan@users.noreply.github.com> Co-authored-by: mchain0 Co-authored-by: Giorgio Gambino <151543+giogam@users.noreply.github.com> Co-authored-by: Dimitris Grigoriou Co-authored-by: Geert <117188496+cll-gg@users.noreply.github.com> Co-authored-by: thomjg <103059015+thomjg@users.noreply.github.com> Co-authored-by: hendoxc <42331373+hendoxc@users.noreply.github.com> Co-authored-by: Simon B.Robert Co-authored-by: Justin Kaseman Co-authored-by: Vladimir Co-authored-by: Pavel <177363085+pkcll@users.noreply.github.com> Co-authored-by: Cursor Co-authored-by: Patrick Co-authored-by: Matthew Pendrey Co-authored-by: Sishir Giri Co-authored-by: Chris Amora <27789416+ChrisAmora@users.noreply.github.com> --- cre/capabilities/blockchain/aptos/v1alpha/client.proto | 1 + cre/go/installer/pkg/embedded_gen.go | 1 + 2 files changed, 2 insertions(+) diff --git a/cre/capabilities/blockchain/aptos/v1alpha/client.proto b/cre/capabilities/blockchain/aptos/v1alpha/client.proto index 60b6b621..88dcfdec 100644 --- a/cre/capabilities/blockchain/aptos/v1alpha/client.proto +++ b/cre/capabilities/blockchain/aptos/v1alpha/client.proto @@ -162,6 +162,7 @@ message WriteReportReply { optional uint64 transaction_fee = 3; // gas used in octas optional string error_message = 4; optional ReceiverContractExecutionStatus receiver_contract_execution_status = 5; + optional uint64 tx_timestamp = 6; // transaction timestamp in microseconds } // ========== Service ========== diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 6633edce..cbe49bb5 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -165,6 +165,7 @@ message WriteReportReply { optional uint64 transaction_fee = 3; // gas used in octas optional string error_message = 4; optional ReceiverContractExecutionStatus receiver_contract_execution_status = 5; + optional uint64 tx_timestamp = 6; // transaction timestamp in microseconds } // ========== Service ========== From 8b52f3f386f2d2b7e7e19b9017b55b435111cbaa Mon Sep 17 00:00:00 2001 From: Yashvardhan Nevatia Date: Tue, 16 Jun 2026 12:49:54 +0100 Subject: [PATCH 37/49] Rename tx_timestamp to block_timestamp (#404) --- cre/capabilities/blockchain/aptos/v1alpha/client.proto | 2 +- cre/go/installer/pkg/embedded_gen.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cre/capabilities/blockchain/aptos/v1alpha/client.proto b/cre/capabilities/blockchain/aptos/v1alpha/client.proto index 88dcfdec..37a33ae7 100644 --- a/cre/capabilities/blockchain/aptos/v1alpha/client.proto +++ b/cre/capabilities/blockchain/aptos/v1alpha/client.proto @@ -162,7 +162,7 @@ message WriteReportReply { optional uint64 transaction_fee = 3; // gas used in octas optional string error_message = 4; optional ReceiverContractExecutionStatus receiver_contract_execution_status = 5; - optional uint64 tx_timestamp = 6; // transaction timestamp in microseconds + optional uint64 block_timestamp = 6; // block timestamp in microseconds } // ========== Service ========== diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index cbe49bb5..db65adb9 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -165,7 +165,7 @@ message WriteReportReply { optional uint64 transaction_fee = 3; // gas used in octas optional string error_message = 4; optional ReceiverContractExecutionStatus receiver_contract_execution_status = 5; - optional uint64 tx_timestamp = 6; // transaction timestamp in microseconds + optional uint64 block_timestamp = 6; // block timestamp in microseconds } // ========== Service ========== From 9a69bb7e7ebf9df88c9fb18741ee6e812b93519e Mon Sep 17 00:00:00 2001 From: amit-momin <108959691+amit-momin@users.noreply.github.com> Date: Tue, 16 Jun 2026 18:21:43 -0500 Subject: [PATCH 38/49] Add support private-testnet-pumice (#407) * Added support private-testnet-pumice * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- cre/capabilities/blockchain/evm/v1alpha/client.proto | 4 ++++ cre/go/installer/pkg/embedded_gen.go | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/cre/capabilities/blockchain/evm/v1alpha/client.proto b/cre/capabilities/blockchain/evm/v1alpha/client.proto index 8583f985..525f11e7 100644 --- a/cre/capabilities/blockchain/evm/v1alpha/client.proto +++ b/cre/capabilities/blockchain/evm/v1alpha/client.proto @@ -365,6 +365,10 @@ service Client { key: "private-testnet-andesite" value: 6915682381028791124 }, + { + key: "private-testnet-pumice" + value: 1564738277398880633 + }, { key: "private-testnet-rhyolite" value: 604447335222770945 diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index db65adb9..1914c563 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -569,6 +569,10 @@ service Client { key: "private-testnet-andesite" value: 6915682381028791124 }, + { + key: "private-testnet-pumice" + value: 1564738277398880633 + }, { key: "private-testnet-rhyolite" value: 604447335222770945 From 432eb85805e72af1a9c0d122f4d4592659bd7d09 Mon Sep 17 00:00:00 2001 From: Krish-vemula <152236536+Krish-vemula@users.noreply.github.com> Date: Thu, 18 Jun 2026 13:56:34 +0530 Subject: [PATCH 39/49] add Stellar WriteReport proto with error_message field (#409) * add Stellar WriteReport proto with error_message field * Auto-fix: buf format, gofmt, go generate, go mod tidy * Add block timestamp * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- cre/capabilities/blockchain/stellar/v1alpha/client.proto | 2 ++ cre/go/installer/pkg/embedded_gen.go | 2 ++ 2 files changed, 4 insertions(+) diff --git a/cre/capabilities/blockchain/stellar/v1alpha/client.proto b/cre/capabilities/blockchain/stellar/v1alpha/client.proto index a583a6d3..b9dc8ce4 100644 --- a/cre/capabilities/blockchain/stellar/v1alpha/client.proto +++ b/cre/capabilities/blockchain/stellar/v1alpha/client.proto @@ -61,6 +61,8 @@ message WriteReportReply { optional string tx_hash = 3; optional uint64 transaction_fee = 4; // total fee paid in stroops optional uint32 ledger_sequence = 5; + optional string error_message = 6; // user-actionable failure reason + optional uint64 block_timestamp = 7; // block timestamp in microseconds } service Client { diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 1914c563..0aa59278 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -1165,6 +1165,8 @@ message WriteReportReply { optional string tx_hash = 3; optional uint64 transaction_fee = 4; // total fee paid in stroops optional uint32 ledger_sequence = 5; + optional string error_message = 6; // user-actionable failure reason + optional uint64 block_timestamp = 7; // block timestamp in microseconds } service Client { From c8e129347b8b52ae41980030788e1cc6c8de9ce1 Mon Sep 17 00:00:00 2001 From: Ryan Tinianov Date: Mon, 22 Jun 2026 11:21:57 -0400 Subject: [PATCH 40/49] Allow pre-hook for restrictions on capability calls and secrets (#411) --- .../confidentialworkflow/v1alpha/client.proto | 4 + cre/go/installer/pkg/embedded_gen.go | 53 ++ cre/go/sdk/sdk.pb.go | 738 ++++++++++++++++-- cre/sdk/v1alpha/sdk.proto | 49 ++ 4 files changed, 764 insertions(+), 80 deletions(-) diff --git a/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto b/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto index 001a2776..c73c39e8 100644 --- a/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto +++ b/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto @@ -48,6 +48,10 @@ message WorkflowExecution { // the other). Consumers that want the typed message read this; legacy // consumers continue to unmarshal execute_request. sdk.v1alpha.ExecuteRequest sdk_execute_request = 9; + + // restrictions on the capabilities and the secrets.bool + // This is sent to avoid overhead when a TEE is not compromised, the DON will verify the restrictions on its end as well. + sdk.v1alpha.Restrictions restrictions = 10; } // ConfidentialWorkflowRequest is the input provided to the confidential workflows capability. diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 0aa59278..1cc8594e 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -1460,6 +1460,10 @@ message WorkflowExecution { // the other). Consumers that want the typed message read this; legacy // consumers continue to unmarshal execute_request. sdk.v1alpha.ExecuteRequest sdk_execute_request = 9; + + // restrictions on the capabilities and the secrets.bool + // This is sent to avoid overhead when a TEE is not compromised, the DON will verify the restrictions on its end as well. + sdk.v1alpha.Restrictions restrictions = 10; } // ConfidentialWorkflowRequest is the input provided to the confidential workflows capability. @@ -1957,6 +1961,7 @@ message TriggerSubscription { google.protobuf.Any payload = 2; string method = 3; Requirements requirements = 4; + bool pre_hook = 5; } enum TeeType { @@ -2009,6 +2014,7 @@ message ExecuteRequest { oneof request { google.protobuf.Empty subscribe = 2; Trigger trigger = 3; + Trigger pre_hook = 5; } uint64 max_response_size = 4; } @@ -2018,6 +2024,7 @@ message ExecutionResult { values.v1.Value value = 1; string error = 2; TriggerSubscriptionRequest trigger_subscriptions = 3; + Restrictions restrictions = 4; } } @@ -2063,6 +2070,52 @@ message SecretResponse { message SecretResponses { repeated SecretResponse responses = 1; } + +message MethodRestriction { + string id = 1; + string method = 2; + int32 max_calls = 3; +} + +message CapabilityRestriction { + oneof restriction { + MethodRestriction method = 1; + } +} + +enum CapabilityRestrictionType { + CAPABILITY_RESTRICTION_TYPE_CLOSED = 0; + CAPABILITY_RESTRICTION_TYPE_OPEN = 1; +} + +message CapabilityRestrictions { + repeated CapabilityRestriction restrictions = 1; + int32 max_total_calls = 2; + CapabilityRestrictionType type = 3; +} + +message SecretPrefixRestriction { + string prefix = 1; + string namespace = 2; + int32 max_secrets = 3; +} + +message SecretRestriction { + oneof restriction { + Secret exact_secret = 1; + SecretPrefixRestriction prefixed_secret = 2; + } +} + +message SecretsRestritions { + repeated SecretRestriction restrictions = 1; + int32 max_secrets = 2; +} + +message Restrictions { + SecretsRestritions secrets = 1; + CapabilityRestrictions capabilities = 2; +} ` const v1betaSdkEmbedded = `syntax = "proto3"; diff --git a/cre/go/sdk/sdk.pb.go b/cre/go/sdk/sdk.pb.go index 383abf8f..14849c9f 100644 --- a/cre/go/sdk/sdk.pb.go +++ b/cre/go/sdk/sdk.pb.go @@ -174,6 +174,52 @@ func (TeeType) EnumDescriptor() ([]byte, []int) { return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{2} } +type CapabilityRestrictionType int32 + +const ( + CapabilityRestrictionType_CAPABILITY_RESTRICTION_TYPE_CLOSED CapabilityRestrictionType = 0 + CapabilityRestrictionType_CAPABILITY_RESTRICTION_TYPE_OPEN CapabilityRestrictionType = 1 +) + +// Enum value maps for CapabilityRestrictionType. +var ( + CapabilityRestrictionType_name = map[int32]string{ + 0: "CAPABILITY_RESTRICTION_TYPE_CLOSED", + 1: "CAPABILITY_RESTRICTION_TYPE_OPEN", + } + CapabilityRestrictionType_value = map[string]int32{ + "CAPABILITY_RESTRICTION_TYPE_CLOSED": 0, + "CAPABILITY_RESTRICTION_TYPE_OPEN": 1, + } +) + +func (x CapabilityRestrictionType) Enum() *CapabilityRestrictionType { + p := new(CapabilityRestrictionType) + *p = x + return p +} + +func (x CapabilityRestrictionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CapabilityRestrictionType) Descriptor() protoreflect.EnumDescriptor { + return file_sdk_v1alpha_sdk_proto_enumTypes[3].Descriptor() +} + +func (CapabilityRestrictionType) Type() protoreflect.EnumType { + return &file_sdk_v1alpha_sdk_proto_enumTypes[3] +} + +func (x CapabilityRestrictionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CapabilityRestrictionType.Descriptor instead. +func (CapabilityRestrictionType) EnumDescriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{3} +} + type SimpleConsensusInputs struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to Observation: @@ -750,6 +796,7 @@ type TriggerSubscription struct { Payload *anypb.Any `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` Method string `protobuf:"bytes,3,opt,name=method,proto3" json:"method,omitempty"` Requirements *Requirements `protobuf:"bytes,4,opt,name=requirements,proto3" json:"requirements,omitempty"` + PreHook bool `protobuf:"varint,5,opt,name=pre_hook,json=preHook,proto3" json:"pre_hook,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -812,6 +859,13 @@ func (x *TriggerSubscription) GetRequirements() *Requirements { return nil } +func (x *TriggerSubscription) GetPreHook() bool { + if x != nil { + return x.PreHook + } + return false +} + type TeeTypeAndRegions struct { state protoimpl.MessageState `protogen:"open.v1"` Type TeeType `protobuf:"varint,1,opt,name=type,proto3,enum=sdk.v1alpha.TeeType" json:"type,omitempty"` @@ -1269,6 +1323,7 @@ type ExecuteRequest struct { // // *ExecuteRequest_Subscribe // *ExecuteRequest_Trigger + // *ExecuteRequest_PreHook Request isExecuteRequest_Request `protobuf_oneof:"request"` MaxResponseSize uint64 `protobuf:"varint,4,opt,name=max_response_size,json=maxResponseSize,proto3" json:"max_response_size,omitempty"` unknownFields protoimpl.UnknownFields @@ -1337,6 +1392,15 @@ func (x *ExecuteRequest) GetTrigger() *Trigger { return nil } +func (x *ExecuteRequest) GetPreHook() *Trigger { + if x != nil { + if x, ok := x.Request.(*ExecuteRequest_PreHook); ok { + return x.PreHook + } + } + return nil +} + func (x *ExecuteRequest) GetMaxResponseSize() uint64 { if x != nil { return x.MaxResponseSize @@ -1356,10 +1420,16 @@ type ExecuteRequest_Trigger struct { Trigger *Trigger `protobuf:"bytes,3,opt,name=trigger,proto3,oneof"` } +type ExecuteRequest_PreHook struct { + PreHook *Trigger `protobuf:"bytes,5,opt,name=pre_hook,json=preHook,proto3,oneof"` +} + func (*ExecuteRequest_Subscribe) isExecuteRequest_Request() {} func (*ExecuteRequest_Trigger) isExecuteRequest_Request() {} +func (*ExecuteRequest_PreHook) isExecuteRequest_Request() {} + type ExecutionResult struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to Result: @@ -1367,6 +1437,7 @@ type ExecutionResult struct { // *ExecutionResult_Value // *ExecutionResult_Error // *ExecutionResult_TriggerSubscriptions + // *ExecutionResult_Restrictions Result isExecutionResult_Result `protobuf_oneof:"result"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -1436,6 +1507,15 @@ func (x *ExecutionResult) GetTriggerSubscriptions() *TriggerSubscriptionRequest return nil } +func (x *ExecutionResult) GetRestrictions() *Restrictions { + if x != nil { + if x, ok := x.Result.(*ExecutionResult_Restrictions); ok { + return x.Restrictions + } + } + return nil +} + type isExecutionResult_Result interface { isExecutionResult_Result() } @@ -1452,12 +1532,18 @@ type ExecutionResult_TriggerSubscriptions struct { TriggerSubscriptions *TriggerSubscriptionRequest `protobuf:"bytes,3,opt,name=trigger_subscriptions,json=triggerSubscriptions,proto3,oneof"` } +type ExecutionResult_Restrictions struct { + Restrictions *Restrictions `protobuf:"bytes,4,opt,name=restrictions,proto3,oneof"` +} + func (*ExecutionResult_Value) isExecutionResult_Result() {} func (*ExecutionResult_Error) isExecutionResult_Result() {} func (*ExecutionResult_TriggerSubscriptions) isExecutionResult_Result() {} +func (*ExecutionResult_Restrictions) isExecutionResult_Result() {} + type GetSecretsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Requests []*SecretRequest `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"` @@ -1912,6 +1998,438 @@ func (x *SecretResponses) GetResponses() []*SecretResponse { return nil } +type MethodRestriction struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Method string `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"` + MaxCalls int32 `protobuf:"varint,3,opt,name=max_calls,json=maxCalls,proto3" json:"max_calls,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MethodRestriction) Reset() { + *x = MethodRestriction{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MethodRestriction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MethodRestriction) ProtoMessage() {} + +func (x *MethodRestriction) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[28] + 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 MethodRestriction.ProtoReflect.Descriptor instead. +func (*MethodRestriction) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{28} +} + +func (x *MethodRestriction) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *MethodRestriction) GetMethod() string { + if x != nil { + return x.Method + } + return "" +} + +func (x *MethodRestriction) GetMaxCalls() int32 { + if x != nil { + return x.MaxCalls + } + return 0 +} + +type CapabilityRestriction struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Restriction: + // + // *CapabilityRestriction_Method + Restriction isCapabilityRestriction_Restriction `protobuf_oneof:"restriction"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CapabilityRestriction) Reset() { + *x = CapabilityRestriction{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CapabilityRestriction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CapabilityRestriction) ProtoMessage() {} + +func (x *CapabilityRestriction) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[29] + 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 CapabilityRestriction.ProtoReflect.Descriptor instead. +func (*CapabilityRestriction) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{29} +} + +func (x *CapabilityRestriction) GetRestriction() isCapabilityRestriction_Restriction { + if x != nil { + return x.Restriction + } + return nil +} + +func (x *CapabilityRestriction) GetMethod() *MethodRestriction { + if x != nil { + if x, ok := x.Restriction.(*CapabilityRestriction_Method); ok { + return x.Method + } + } + return nil +} + +type isCapabilityRestriction_Restriction interface { + isCapabilityRestriction_Restriction() +} + +type CapabilityRestriction_Method struct { + Method *MethodRestriction `protobuf:"bytes,1,opt,name=method,proto3,oneof"` +} + +func (*CapabilityRestriction_Method) isCapabilityRestriction_Restriction() {} + +type CapabilityRestrictions struct { + state protoimpl.MessageState `protogen:"open.v1"` + Restrictions []*CapabilityRestriction `protobuf:"bytes,1,rep,name=restrictions,proto3" json:"restrictions,omitempty"` + MaxTotalCalls int32 `protobuf:"varint,2,opt,name=max_total_calls,json=maxTotalCalls,proto3" json:"max_total_calls,omitempty"` + Type CapabilityRestrictionType `protobuf:"varint,3,opt,name=type,proto3,enum=sdk.v1alpha.CapabilityRestrictionType" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CapabilityRestrictions) Reset() { + *x = CapabilityRestrictions{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CapabilityRestrictions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CapabilityRestrictions) ProtoMessage() {} + +func (x *CapabilityRestrictions) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[30] + 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 CapabilityRestrictions.ProtoReflect.Descriptor instead. +func (*CapabilityRestrictions) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{30} +} + +func (x *CapabilityRestrictions) GetRestrictions() []*CapabilityRestriction { + if x != nil { + return x.Restrictions + } + return nil +} + +func (x *CapabilityRestrictions) GetMaxTotalCalls() int32 { + if x != nil { + return x.MaxTotalCalls + } + return 0 +} + +func (x *CapabilityRestrictions) GetType() CapabilityRestrictionType { + if x != nil { + return x.Type + } + return CapabilityRestrictionType_CAPABILITY_RESTRICTION_TYPE_CLOSED +} + +type SecretPrefixRestriction struct { + state protoimpl.MessageState `protogen:"open.v1"` + Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + MaxSecrets int32 `protobuf:"varint,3,opt,name=max_secrets,json=maxSecrets,proto3" json:"max_secrets,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SecretPrefixRestriction) Reset() { + *x = SecretPrefixRestriction{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SecretPrefixRestriction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SecretPrefixRestriction) ProtoMessage() {} + +func (x *SecretPrefixRestriction) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[31] + 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 SecretPrefixRestriction.ProtoReflect.Descriptor instead. +func (*SecretPrefixRestriction) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{31} +} + +func (x *SecretPrefixRestriction) GetPrefix() string { + if x != nil { + return x.Prefix + } + return "" +} + +func (x *SecretPrefixRestriction) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *SecretPrefixRestriction) GetMaxSecrets() int32 { + if x != nil { + return x.MaxSecrets + } + return 0 +} + +type SecretRestriction struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Restriction: + // + // *SecretRestriction_ExactSecret + // *SecretRestriction_PrefixedSecret + Restriction isSecretRestriction_Restriction `protobuf_oneof:"restriction"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SecretRestriction) Reset() { + *x = SecretRestriction{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SecretRestriction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SecretRestriction) ProtoMessage() {} + +func (x *SecretRestriction) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[32] + 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 SecretRestriction.ProtoReflect.Descriptor instead. +func (*SecretRestriction) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{32} +} + +func (x *SecretRestriction) GetRestriction() isSecretRestriction_Restriction { + if x != nil { + return x.Restriction + } + return nil +} + +func (x *SecretRestriction) GetExactSecret() *Secret { + if x != nil { + if x, ok := x.Restriction.(*SecretRestriction_ExactSecret); ok { + return x.ExactSecret + } + } + return nil +} + +func (x *SecretRestriction) GetPrefixedSecret() *SecretPrefixRestriction { + if x != nil { + if x, ok := x.Restriction.(*SecretRestriction_PrefixedSecret); ok { + return x.PrefixedSecret + } + } + return nil +} + +type isSecretRestriction_Restriction interface { + isSecretRestriction_Restriction() +} + +type SecretRestriction_ExactSecret struct { + ExactSecret *Secret `protobuf:"bytes,1,opt,name=exact_secret,json=exactSecret,proto3,oneof"` +} + +type SecretRestriction_PrefixedSecret struct { + PrefixedSecret *SecretPrefixRestriction `protobuf:"bytes,2,opt,name=prefixed_secret,json=prefixedSecret,proto3,oneof"` +} + +func (*SecretRestriction_ExactSecret) isSecretRestriction_Restriction() {} + +func (*SecretRestriction_PrefixedSecret) isSecretRestriction_Restriction() {} + +type SecretsRestritions struct { + state protoimpl.MessageState `protogen:"open.v1"` + Restrictions []*SecretRestriction `protobuf:"bytes,1,rep,name=restrictions,proto3" json:"restrictions,omitempty"` + MaxSecrets int32 `protobuf:"varint,2,opt,name=max_secrets,json=maxSecrets,proto3" json:"max_secrets,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SecretsRestritions) Reset() { + *x = SecretsRestritions{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SecretsRestritions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SecretsRestritions) ProtoMessage() {} + +func (x *SecretsRestritions) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[33] + 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 SecretsRestritions.ProtoReflect.Descriptor instead. +func (*SecretsRestritions) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{33} +} + +func (x *SecretsRestritions) GetRestrictions() []*SecretRestriction { + if x != nil { + return x.Restrictions + } + return nil +} + +func (x *SecretsRestritions) GetMaxSecrets() int32 { + if x != nil { + return x.MaxSecrets + } + return 0 +} + +type Restrictions struct { + state protoimpl.MessageState `protogen:"open.v1"` + Secrets *SecretsRestritions `protobuf:"bytes,1,opt,name=secrets,proto3" json:"secrets,omitempty"` + Capabilities *CapabilityRestrictions `protobuf:"bytes,2,opt,name=capabilities,proto3" json:"capabilities,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Restrictions) Reset() { + *x = Restrictions{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Restrictions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Restrictions) ProtoMessage() {} + +func (x *Restrictions) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[34] + 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 Restrictions.ProtoReflect.Descriptor instead. +func (*Restrictions) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{34} +} + +func (x *Restrictions) GetSecrets() *SecretsRestritions { + if x != nil { + return x.Secrets + } + return nil +} + +func (x *Restrictions) GetCapabilities() *CapabilityRestrictions { + if x != nil { + return x.Capabilities + } + return nil +} + var File_sdk_v1alpha_sdk_proto protoreflect.FileDescriptor const file_sdk_v1alpha_sdk_proto_rawDesc = "" + @@ -1959,12 +2477,13 @@ const file_sdk_v1alpha_sdk_proto_rawDesc = "" + "\apayload\x18\x01 \x01(\v2\x14.google.protobuf.AnyH\x00R\apayload\x12\x16\n" + "\x05error\x18\x02 \x01(\tH\x00R\x05errorB\n" + "\n" + - "\bresponse\"\xac\x01\n" + + "\bresponse\"\xc7\x01\n" + "\x13TriggerSubscription\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12.\n" + "\apayload\x18\x02 \x01(\v2\x14.google.protobuf.AnyR\apayload\x12\x16\n" + "\x06method\x18\x03 \x01(\tR\x06method\x12=\n" + - "\frequirements\x18\x04 \x01(\v2\x19.sdk.v1alpha.RequirementsR\frequirements\"W\n" + + "\frequirements\x18\x04 \x01(\v2\x19.sdk.v1alpha.RequirementsR\frequirements\x12\x19\n" + + "\bpre_hook\x18\x05 \x01(\bR\apreHook\"W\n" + "\x11TeeTypeAndRegions\x12(\n" + "\x04type\x18\x01 \x01(\x0e2\x14.sdk.v1alpha.TeeTypeR\x04type\x12\x18\n" + "\aregions\x18\x03 \x03(\tR\aregions\"d\n" + @@ -1990,17 +2509,19 @@ const file_sdk_v1alpha_sdk_proto_rawDesc = "" + "\tresponses\x18\x01 \x03(\v25.sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntryR\tresponses\x1a]\n" + "\x0eResponsesEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\x05R\x03key\x125\n" + - "\x05value\x18\x02 \x01(\v2\x1f.sdk.v1alpha.CapabilityResponseR\x05value:\x028\x01\"\xc9\x01\n" + + "\x05value\x18\x02 \x01(\v2\x1f.sdk.v1alpha.CapabilityResponseR\x05value:\x028\x01\"\xfc\x01\n" + "\x0eExecuteRequest\x12\x16\n" + "\x06config\x18\x01 \x01(\fR\x06config\x126\n" + "\tsubscribe\x18\x02 \x01(\v2\x16.google.protobuf.EmptyH\x00R\tsubscribe\x120\n" + - "\atrigger\x18\x03 \x01(\v2\x14.sdk.v1alpha.TriggerH\x00R\atrigger\x12*\n" + + "\atrigger\x18\x03 \x01(\v2\x14.sdk.v1alpha.TriggerH\x00R\atrigger\x121\n" + + "\bpre_hook\x18\x05 \x01(\v2\x14.sdk.v1alpha.TriggerH\x00R\apreHook\x12*\n" + "\x11max_response_size\x18\x04 \x01(\x04R\x0fmaxResponseSizeB\t\n" + - "\arequest\"\xbd\x01\n" + + "\arequest\"\xfe\x01\n" + "\x0fExecutionResult\x12(\n" + "\x05value\x18\x01 \x01(\v2\x10.values.v1.ValueH\x00R\x05value\x12\x16\n" + "\x05error\x18\x02 \x01(\tH\x00R\x05error\x12^\n" + - "\x15trigger_subscriptions\x18\x03 \x01(\v2'.sdk.v1alpha.TriggerSubscriptionRequestH\x00R\x14triggerSubscriptionsB\b\n" + + "\x15trigger_subscriptions\x18\x03 \x01(\v2'.sdk.v1alpha.TriggerSubscriptionRequestH\x00R\x14triggerSubscriptions\x12?\n" + + "\frestrictions\x18\x04 \x01(\v2\x19.sdk.v1alpha.RestrictionsH\x00R\frestrictionsB\b\n" + "\x06result\"l\n" + "\x11GetSecretsRequest\x126\n" + "\brequests\x18\x01 \x03(\v2\x1a.sdk.v1alpha.SecretRequestR\brequests\x12\x1f\n" + @@ -2032,7 +2553,34 @@ const file_sdk_v1alpha_sdk_proto_rawDesc = "" + "\n" + "\bresponse\"L\n" + "\x0fSecretResponses\x129\n" + - "\tresponses\x18\x01 \x03(\v2\x1b.sdk.v1alpha.SecretResponseR\tresponses*\xb8\x01\n" + + "\tresponses\x18\x01 \x03(\v2\x1b.sdk.v1alpha.SecretResponseR\tresponses\"X\n" + + "\x11MethodRestriction\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" + + "\x06method\x18\x02 \x01(\tR\x06method\x12\x1b\n" + + "\tmax_calls\x18\x03 \x01(\x05R\bmaxCalls\"`\n" + + "\x15CapabilityRestriction\x128\n" + + "\x06method\x18\x01 \x01(\v2\x1e.sdk.v1alpha.MethodRestrictionH\x00R\x06methodB\r\n" + + "\vrestriction\"\xc4\x01\n" + + "\x16CapabilityRestrictions\x12F\n" + + "\frestrictions\x18\x01 \x03(\v2\".sdk.v1alpha.CapabilityRestrictionR\frestrictions\x12&\n" + + "\x0fmax_total_calls\x18\x02 \x01(\x05R\rmaxTotalCalls\x12:\n" + + "\x04type\x18\x03 \x01(\x0e2&.sdk.v1alpha.CapabilityRestrictionTypeR\x04type\"p\n" + + "\x17SecretPrefixRestriction\x12\x16\n" + + "\x06prefix\x18\x01 \x01(\tR\x06prefix\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x1f\n" + + "\vmax_secrets\x18\x03 \x01(\x05R\n" + + "maxSecrets\"\xad\x01\n" + + "\x11SecretRestriction\x128\n" + + "\fexact_secret\x18\x01 \x01(\v2\x13.sdk.v1alpha.SecretH\x00R\vexactSecret\x12O\n" + + "\x0fprefixed_secret\x18\x02 \x01(\v2$.sdk.v1alpha.SecretPrefixRestrictionH\x00R\x0eprefixedSecretB\r\n" + + "\vrestriction\"y\n" + + "\x12SecretsRestritions\x12B\n" + + "\frestrictions\x18\x01 \x03(\v2\x1e.sdk.v1alpha.SecretRestrictionR\frestrictions\x12\x1f\n" + + "\vmax_secrets\x18\x02 \x01(\x05R\n" + + "maxSecrets\"\x92\x01\n" + + "\fRestrictions\x129\n" + + "\asecrets\x18\x01 \x01(\v2\x1f.sdk.v1alpha.SecretsRestritionsR\asecrets\x12G\n" + + "\fcapabilities\x18\x02 \x01(\v2#.sdk.v1alpha.CapabilityRestrictionsR\fcapabilities*\xb8\x01\n" + "\x0fAggregationType\x12 \n" + "\x1cAGGREGATION_TYPE_UNSPECIFIED\x10\x00\x12\x1b\n" + "\x17AGGREGATION_TYPE_MEDIAN\x10\x01\x12\x1e\n" + @@ -2045,7 +2593,10 @@ const file_sdk_v1alpha_sdk_proto_rawDesc = "" + "\tMODE_NODE\x10\x02*;\n" + "\aTeeType\x12\x18\n" + "\x14TEE_TYPE_UNSPECIFIED\x10\x00\x12\x16\n" + - "\x12TEE_TYPE_AWS_NITRO\x10\x01b\x06proto3" + "\x12TEE_TYPE_AWS_NITRO\x10\x01*i\n" + + "\x19CapabilityRestrictionType\x12&\n" + + "\"CAPABILITY_RESTRICTION_TYPE_CLOSED\x10\x00\x12$\n" + + " CAPABILITY_RESTRICTION_TYPE_OPEN\x10\x01b\x06proto3" var ( file_sdk_v1alpha_sdk_proto_rawDescOnce sync.Once @@ -2059,84 +2610,102 @@ func file_sdk_v1alpha_sdk_proto_rawDescGZIP() []byte { return file_sdk_v1alpha_sdk_proto_rawDescData } -var file_sdk_v1alpha_sdk_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_sdk_v1alpha_sdk_proto_msgTypes = make([]protoimpl.MessageInfo, 31) +var file_sdk_v1alpha_sdk_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_sdk_v1alpha_sdk_proto_msgTypes = make([]protoimpl.MessageInfo, 38) var file_sdk_v1alpha_sdk_proto_goTypes = []any{ (AggregationType)(0), // 0: sdk.v1alpha.AggregationType (Mode)(0), // 1: sdk.v1alpha.Mode (TeeType)(0), // 2: sdk.v1alpha.TeeType - (*SimpleConsensusInputs)(nil), // 3: sdk.v1alpha.SimpleConsensusInputs - (*FieldsMap)(nil), // 4: sdk.v1alpha.FieldsMap - (*ConsensusDescriptor)(nil), // 5: sdk.v1alpha.ConsensusDescriptor - (*ReportRequest)(nil), // 6: sdk.v1alpha.ReportRequest - (*ReportResponse)(nil), // 7: sdk.v1alpha.ReportResponse - (*AttributedSignature)(nil), // 8: sdk.v1alpha.AttributedSignature - (*CapabilityRequest)(nil), // 9: sdk.v1alpha.CapabilityRequest - (*CapabilityResponse)(nil), // 10: sdk.v1alpha.CapabilityResponse - (*TriggerSubscription)(nil), // 11: sdk.v1alpha.TriggerSubscription - (*TeeTypeAndRegions)(nil), // 12: sdk.v1alpha.TeeTypeAndRegions - (*TriggerSubscriptionRequest)(nil), // 13: sdk.v1alpha.TriggerSubscriptionRequest - (*Trigger)(nil), // 14: sdk.v1alpha.Trigger - (*Regions)(nil), // 15: sdk.v1alpha.Regions - (*TeeTypesAndRegions)(nil), // 16: sdk.v1alpha.TeeTypesAndRegions - (*Tee)(nil), // 17: sdk.v1alpha.Tee - (*Requirements)(nil), // 18: sdk.v1alpha.Requirements - (*AwaitCapabilitiesRequest)(nil), // 19: sdk.v1alpha.AwaitCapabilitiesRequest - (*AwaitCapabilitiesResponse)(nil), // 20: sdk.v1alpha.AwaitCapabilitiesResponse - (*ExecuteRequest)(nil), // 21: sdk.v1alpha.ExecuteRequest - (*ExecutionResult)(nil), // 22: sdk.v1alpha.ExecutionResult - (*GetSecretsRequest)(nil), // 23: sdk.v1alpha.GetSecretsRequest - (*AwaitSecretsRequest)(nil), // 24: sdk.v1alpha.AwaitSecretsRequest - (*AwaitSecretsResponse)(nil), // 25: sdk.v1alpha.AwaitSecretsResponse - (*SecretRequest)(nil), // 26: sdk.v1alpha.SecretRequest - (*Secret)(nil), // 27: sdk.v1alpha.Secret - (*SecretError)(nil), // 28: sdk.v1alpha.SecretError - (*SecretResponse)(nil), // 29: sdk.v1alpha.SecretResponse - (*SecretResponses)(nil), // 30: sdk.v1alpha.SecretResponses - nil, // 31: sdk.v1alpha.FieldsMap.FieldsEntry - nil, // 32: sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntry - nil, // 33: sdk.v1alpha.AwaitSecretsResponse.ResponsesEntry - (*pb.Value)(nil), // 34: values.v1.Value - (*anypb.Any)(nil), // 35: google.protobuf.Any - (*emptypb.Empty)(nil), // 36: google.protobuf.Empty + (CapabilityRestrictionType)(0), // 3: sdk.v1alpha.CapabilityRestrictionType + (*SimpleConsensusInputs)(nil), // 4: sdk.v1alpha.SimpleConsensusInputs + (*FieldsMap)(nil), // 5: sdk.v1alpha.FieldsMap + (*ConsensusDescriptor)(nil), // 6: sdk.v1alpha.ConsensusDescriptor + (*ReportRequest)(nil), // 7: sdk.v1alpha.ReportRequest + (*ReportResponse)(nil), // 8: sdk.v1alpha.ReportResponse + (*AttributedSignature)(nil), // 9: sdk.v1alpha.AttributedSignature + (*CapabilityRequest)(nil), // 10: sdk.v1alpha.CapabilityRequest + (*CapabilityResponse)(nil), // 11: sdk.v1alpha.CapabilityResponse + (*TriggerSubscription)(nil), // 12: sdk.v1alpha.TriggerSubscription + (*TeeTypeAndRegions)(nil), // 13: sdk.v1alpha.TeeTypeAndRegions + (*TriggerSubscriptionRequest)(nil), // 14: sdk.v1alpha.TriggerSubscriptionRequest + (*Trigger)(nil), // 15: sdk.v1alpha.Trigger + (*Regions)(nil), // 16: sdk.v1alpha.Regions + (*TeeTypesAndRegions)(nil), // 17: sdk.v1alpha.TeeTypesAndRegions + (*Tee)(nil), // 18: sdk.v1alpha.Tee + (*Requirements)(nil), // 19: sdk.v1alpha.Requirements + (*AwaitCapabilitiesRequest)(nil), // 20: sdk.v1alpha.AwaitCapabilitiesRequest + (*AwaitCapabilitiesResponse)(nil), // 21: sdk.v1alpha.AwaitCapabilitiesResponse + (*ExecuteRequest)(nil), // 22: sdk.v1alpha.ExecuteRequest + (*ExecutionResult)(nil), // 23: sdk.v1alpha.ExecutionResult + (*GetSecretsRequest)(nil), // 24: sdk.v1alpha.GetSecretsRequest + (*AwaitSecretsRequest)(nil), // 25: sdk.v1alpha.AwaitSecretsRequest + (*AwaitSecretsResponse)(nil), // 26: sdk.v1alpha.AwaitSecretsResponse + (*SecretRequest)(nil), // 27: sdk.v1alpha.SecretRequest + (*Secret)(nil), // 28: sdk.v1alpha.Secret + (*SecretError)(nil), // 29: sdk.v1alpha.SecretError + (*SecretResponse)(nil), // 30: sdk.v1alpha.SecretResponse + (*SecretResponses)(nil), // 31: sdk.v1alpha.SecretResponses + (*MethodRestriction)(nil), // 32: sdk.v1alpha.MethodRestriction + (*CapabilityRestriction)(nil), // 33: sdk.v1alpha.CapabilityRestriction + (*CapabilityRestrictions)(nil), // 34: sdk.v1alpha.CapabilityRestrictions + (*SecretPrefixRestriction)(nil), // 35: sdk.v1alpha.SecretPrefixRestriction + (*SecretRestriction)(nil), // 36: sdk.v1alpha.SecretRestriction + (*SecretsRestritions)(nil), // 37: sdk.v1alpha.SecretsRestritions + (*Restrictions)(nil), // 38: sdk.v1alpha.Restrictions + nil, // 39: sdk.v1alpha.FieldsMap.FieldsEntry + nil, // 40: sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntry + nil, // 41: sdk.v1alpha.AwaitSecretsResponse.ResponsesEntry + (*pb.Value)(nil), // 42: values.v1.Value + (*anypb.Any)(nil), // 43: google.protobuf.Any + (*emptypb.Empty)(nil), // 44: google.protobuf.Empty } var file_sdk_v1alpha_sdk_proto_depIdxs = []int32{ - 34, // 0: sdk.v1alpha.SimpleConsensusInputs.value:type_name -> values.v1.Value - 5, // 1: sdk.v1alpha.SimpleConsensusInputs.descriptors:type_name -> sdk.v1alpha.ConsensusDescriptor - 34, // 2: sdk.v1alpha.SimpleConsensusInputs.default:type_name -> values.v1.Value - 31, // 3: sdk.v1alpha.FieldsMap.fields:type_name -> sdk.v1alpha.FieldsMap.FieldsEntry + 42, // 0: sdk.v1alpha.SimpleConsensusInputs.value:type_name -> values.v1.Value + 6, // 1: sdk.v1alpha.SimpleConsensusInputs.descriptors:type_name -> sdk.v1alpha.ConsensusDescriptor + 42, // 2: sdk.v1alpha.SimpleConsensusInputs.default:type_name -> values.v1.Value + 39, // 3: sdk.v1alpha.FieldsMap.fields:type_name -> sdk.v1alpha.FieldsMap.FieldsEntry 0, // 4: sdk.v1alpha.ConsensusDescriptor.aggregation:type_name -> sdk.v1alpha.AggregationType - 4, // 5: sdk.v1alpha.ConsensusDescriptor.fields_map:type_name -> sdk.v1alpha.FieldsMap - 8, // 6: sdk.v1alpha.ReportResponse.sigs:type_name -> sdk.v1alpha.AttributedSignature - 35, // 7: sdk.v1alpha.CapabilityRequest.payload:type_name -> google.protobuf.Any - 35, // 8: sdk.v1alpha.CapabilityResponse.payload:type_name -> google.protobuf.Any - 35, // 9: sdk.v1alpha.TriggerSubscription.payload:type_name -> google.protobuf.Any - 18, // 10: sdk.v1alpha.TriggerSubscription.requirements:type_name -> sdk.v1alpha.Requirements + 5, // 5: sdk.v1alpha.ConsensusDescriptor.fields_map:type_name -> sdk.v1alpha.FieldsMap + 9, // 6: sdk.v1alpha.ReportResponse.sigs:type_name -> sdk.v1alpha.AttributedSignature + 43, // 7: sdk.v1alpha.CapabilityRequest.payload:type_name -> google.protobuf.Any + 43, // 8: sdk.v1alpha.CapabilityResponse.payload:type_name -> google.protobuf.Any + 43, // 9: sdk.v1alpha.TriggerSubscription.payload:type_name -> google.protobuf.Any + 19, // 10: sdk.v1alpha.TriggerSubscription.requirements:type_name -> sdk.v1alpha.Requirements 2, // 11: sdk.v1alpha.TeeTypeAndRegions.type:type_name -> sdk.v1alpha.TeeType - 11, // 12: sdk.v1alpha.TriggerSubscriptionRequest.subscriptions:type_name -> sdk.v1alpha.TriggerSubscription - 35, // 13: sdk.v1alpha.Trigger.payload:type_name -> google.protobuf.Any - 12, // 14: sdk.v1alpha.TeeTypesAndRegions.tee_type_and_regions:type_name -> sdk.v1alpha.TeeTypeAndRegions - 15, // 15: sdk.v1alpha.Tee.any_regions:type_name -> sdk.v1alpha.Regions - 16, // 16: sdk.v1alpha.Tee.tee_types_and_regions:type_name -> sdk.v1alpha.TeeTypesAndRegions - 17, // 17: sdk.v1alpha.Requirements.tee:type_name -> sdk.v1alpha.Tee - 32, // 18: sdk.v1alpha.AwaitCapabilitiesResponse.responses:type_name -> sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntry - 36, // 19: sdk.v1alpha.ExecuteRequest.subscribe:type_name -> google.protobuf.Empty - 14, // 20: sdk.v1alpha.ExecuteRequest.trigger:type_name -> sdk.v1alpha.Trigger - 34, // 21: sdk.v1alpha.ExecutionResult.value:type_name -> values.v1.Value - 13, // 22: sdk.v1alpha.ExecutionResult.trigger_subscriptions:type_name -> sdk.v1alpha.TriggerSubscriptionRequest - 26, // 23: sdk.v1alpha.GetSecretsRequest.requests:type_name -> sdk.v1alpha.SecretRequest - 33, // 24: sdk.v1alpha.AwaitSecretsResponse.responses:type_name -> sdk.v1alpha.AwaitSecretsResponse.ResponsesEntry - 27, // 25: sdk.v1alpha.SecretResponse.secret:type_name -> sdk.v1alpha.Secret - 28, // 26: sdk.v1alpha.SecretResponse.error:type_name -> sdk.v1alpha.SecretError - 29, // 27: sdk.v1alpha.SecretResponses.responses:type_name -> sdk.v1alpha.SecretResponse - 5, // 28: sdk.v1alpha.FieldsMap.FieldsEntry.value:type_name -> sdk.v1alpha.ConsensusDescriptor - 10, // 29: sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntry.value:type_name -> sdk.v1alpha.CapabilityResponse - 30, // 30: sdk.v1alpha.AwaitSecretsResponse.ResponsesEntry.value:type_name -> sdk.v1alpha.SecretResponses - 31, // [31:31] is the sub-list for method output_type - 31, // [31:31] is the sub-list for method input_type - 31, // [31:31] is the sub-list for extension type_name - 31, // [31:31] is the sub-list for extension extendee - 0, // [0:31] is the sub-list for field type_name + 12, // 12: sdk.v1alpha.TriggerSubscriptionRequest.subscriptions:type_name -> sdk.v1alpha.TriggerSubscription + 43, // 13: sdk.v1alpha.Trigger.payload:type_name -> google.protobuf.Any + 13, // 14: sdk.v1alpha.TeeTypesAndRegions.tee_type_and_regions:type_name -> sdk.v1alpha.TeeTypeAndRegions + 16, // 15: sdk.v1alpha.Tee.any_regions:type_name -> sdk.v1alpha.Regions + 17, // 16: sdk.v1alpha.Tee.tee_types_and_regions:type_name -> sdk.v1alpha.TeeTypesAndRegions + 18, // 17: sdk.v1alpha.Requirements.tee:type_name -> sdk.v1alpha.Tee + 40, // 18: sdk.v1alpha.AwaitCapabilitiesResponse.responses:type_name -> sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntry + 44, // 19: sdk.v1alpha.ExecuteRequest.subscribe:type_name -> google.protobuf.Empty + 15, // 20: sdk.v1alpha.ExecuteRequest.trigger:type_name -> sdk.v1alpha.Trigger + 15, // 21: sdk.v1alpha.ExecuteRequest.pre_hook:type_name -> sdk.v1alpha.Trigger + 42, // 22: sdk.v1alpha.ExecutionResult.value:type_name -> values.v1.Value + 14, // 23: sdk.v1alpha.ExecutionResult.trigger_subscriptions:type_name -> sdk.v1alpha.TriggerSubscriptionRequest + 38, // 24: sdk.v1alpha.ExecutionResult.restrictions:type_name -> sdk.v1alpha.Restrictions + 27, // 25: sdk.v1alpha.GetSecretsRequest.requests:type_name -> sdk.v1alpha.SecretRequest + 41, // 26: sdk.v1alpha.AwaitSecretsResponse.responses:type_name -> sdk.v1alpha.AwaitSecretsResponse.ResponsesEntry + 28, // 27: sdk.v1alpha.SecretResponse.secret:type_name -> sdk.v1alpha.Secret + 29, // 28: sdk.v1alpha.SecretResponse.error:type_name -> sdk.v1alpha.SecretError + 30, // 29: sdk.v1alpha.SecretResponses.responses:type_name -> sdk.v1alpha.SecretResponse + 32, // 30: sdk.v1alpha.CapabilityRestriction.method:type_name -> sdk.v1alpha.MethodRestriction + 33, // 31: sdk.v1alpha.CapabilityRestrictions.restrictions:type_name -> sdk.v1alpha.CapabilityRestriction + 3, // 32: sdk.v1alpha.CapabilityRestrictions.type:type_name -> sdk.v1alpha.CapabilityRestrictionType + 28, // 33: sdk.v1alpha.SecretRestriction.exact_secret:type_name -> sdk.v1alpha.Secret + 35, // 34: sdk.v1alpha.SecretRestriction.prefixed_secret:type_name -> sdk.v1alpha.SecretPrefixRestriction + 36, // 35: sdk.v1alpha.SecretsRestritions.restrictions:type_name -> sdk.v1alpha.SecretRestriction + 37, // 36: sdk.v1alpha.Restrictions.secrets:type_name -> sdk.v1alpha.SecretsRestritions + 34, // 37: sdk.v1alpha.Restrictions.capabilities:type_name -> sdk.v1alpha.CapabilityRestrictions + 6, // 38: sdk.v1alpha.FieldsMap.FieldsEntry.value:type_name -> sdk.v1alpha.ConsensusDescriptor + 11, // 39: sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntry.value:type_name -> sdk.v1alpha.CapabilityResponse + 31, // 40: sdk.v1alpha.AwaitSecretsResponse.ResponsesEntry.value:type_name -> sdk.v1alpha.SecretResponses + 41, // [41:41] is the sub-list for method output_type + 41, // [41:41] is the sub-list for method input_type + 41, // [41:41] is the sub-list for extension type_name + 41, // [41:41] is the sub-list for extension extendee + 0, // [0:41] is the sub-list for field type_name } func init() { file_sdk_v1alpha_sdk_proto_init() } @@ -2163,23 +2732,32 @@ func file_sdk_v1alpha_sdk_proto_init() { file_sdk_v1alpha_sdk_proto_msgTypes[18].OneofWrappers = []any{ (*ExecuteRequest_Subscribe)(nil), (*ExecuteRequest_Trigger)(nil), + (*ExecuteRequest_PreHook)(nil), } file_sdk_v1alpha_sdk_proto_msgTypes[19].OneofWrappers = []any{ (*ExecutionResult_Value)(nil), (*ExecutionResult_Error)(nil), (*ExecutionResult_TriggerSubscriptions)(nil), + (*ExecutionResult_Restrictions)(nil), } file_sdk_v1alpha_sdk_proto_msgTypes[26].OneofWrappers = []any{ (*SecretResponse_Secret)(nil), (*SecretResponse_Error)(nil), } + file_sdk_v1alpha_sdk_proto_msgTypes[29].OneofWrappers = []any{ + (*CapabilityRestriction_Method)(nil), + } + file_sdk_v1alpha_sdk_proto_msgTypes[32].OneofWrappers = []any{ + (*SecretRestriction_ExactSecret)(nil), + (*SecretRestriction_PrefixedSecret)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_sdk_v1alpha_sdk_proto_rawDesc), len(file_sdk_v1alpha_sdk_proto_rawDesc)), - NumEnums: 3, - NumMessages: 31, + NumEnums: 4, + NumMessages: 38, NumExtensions: 0, NumServices: 0, }, diff --git a/cre/sdk/v1alpha/sdk.proto b/cre/sdk/v1alpha/sdk.proto index bfa6c715..60fac926 100644 --- a/cre/sdk/v1alpha/sdk.proto +++ b/cre/sdk/v1alpha/sdk.proto @@ -79,6 +79,7 @@ message TriggerSubscription { google.protobuf.Any payload = 2; string method = 3; Requirements requirements = 4; + bool pre_hook = 5; } enum TeeType { @@ -131,6 +132,7 @@ message ExecuteRequest { oneof request { google.protobuf.Empty subscribe = 2; Trigger trigger = 3; + Trigger pre_hook = 5; } uint64 max_response_size = 4; } @@ -140,6 +142,7 @@ message ExecutionResult { values.v1.Value value = 1; string error = 2; TriggerSubscriptionRequest trigger_subscriptions = 3; + Restrictions restrictions = 4; } } @@ -185,3 +188,49 @@ message SecretResponse { message SecretResponses { repeated SecretResponse responses = 1; } + +message MethodRestriction { + string id = 1; + string method = 2; + int32 max_calls = 3; +} + +message CapabilityRestriction { + oneof restriction { + MethodRestriction method = 1; + } +} + +enum CapabilityRestrictionType { + CAPABILITY_RESTRICTION_TYPE_CLOSED = 0; + CAPABILITY_RESTRICTION_TYPE_OPEN = 1; +} + +message CapabilityRestrictions { + repeated CapabilityRestriction restrictions = 1; + int32 max_total_calls = 2; + CapabilityRestrictionType type = 3; +} + +message SecretPrefixRestriction { + string prefix = 1; + string namespace = 2; + int32 max_secrets = 3; +} + +message SecretRestriction { + oneof restriction { + Secret exact_secret = 1; + SecretPrefixRestriction prefixed_secret = 2; + } +} + +message SecretsRestritions { + repeated SecretRestriction restrictions = 1; + int32 max_secrets = 2; +} + +message Restrictions { + SecretsRestritions secrets = 1; + CapabilityRestrictions capabilities = 2; +} From e0322b819f62e8adce3812aad603d573bd962813 Mon Sep 17 00:00:00 2001 From: amit-momin <108959691+amit-momin@users.noreply.github.com> Date: Tue, 23 Jun 2026 15:08:41 -0500 Subject: [PATCH 41/49] Add private-testnet-quartzite support (#412) * Added private-testnet-quartzite support * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- cre/capabilities/blockchain/evm/v1alpha/client.proto | 4 ++++ cre/go/go.mod | 2 +- cre/go/go.sum | 4 ++-- cre/go/installer/pkg/embedded_gen.go | 4 ++++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/cre/capabilities/blockchain/evm/v1alpha/client.proto b/cre/capabilities/blockchain/evm/v1alpha/client.proto index 525f11e7..5ed820b2 100644 --- a/cre/capabilities/blockchain/evm/v1alpha/client.proto +++ b/cre/capabilities/blockchain/evm/v1alpha/client.proto @@ -369,6 +369,10 @@ service Client { key: "private-testnet-pumice" value: 1564738277398880633 }, + { + key: "private-testnet-quartzite" + value: 4175996748267305081 + }, { key: "private-testnet-rhyolite" value: 604447335222770945 diff --git a/cre/go/go.mod b/cre/go/go.mod index fe879bc6..3f2be7ad 100644 --- a/cre/go/go.mod +++ b/cre/go/go.mod @@ -5,7 +5,7 @@ go 1.24.5 require ( github.com/go-viper/mapstructure/v2 v2.4.0 github.com/shopspring/decimal v1.4.0 - github.com/smartcontractkit/chain-selectors v1.0.100 + github.com/smartcontractkit/chain-selectors v1.0.104 github.com/stretchr/testify v1.11.1 google.golang.org/protobuf v1.36.7 ) diff --git a/cre/go/go.sum b/cre/go/go.sum index d596ab23..9894ee83 100644 --- a/cre/go/go.sum +++ b/cre/go/go.sum @@ -10,8 +10,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= -github.com/smartcontractkit/chain-selectors v1.0.100 h1:wpiSpmI/eFjY+wx/nPr5VuNF4hki0prIBMKEaQWn3g4= -github.com/smartcontractkit/chain-selectors v1.0.100/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= +github.com/smartcontractkit/chain-selectors v1.0.104 h1:/n9pPGM5W/+r1eHoWZv4VwX9LNS1af4+ICyhM8zKRNM= +github.com/smartcontractkit/chain-selectors v1.0.104/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 1cc8594e..08cb0bc8 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -573,6 +573,10 @@ service Client { key: "private-testnet-pumice" value: 1564738277398880633 }, + { + key: "private-testnet-quartzite" + value: 4175996748267305081 + }, { key: "private-testnet-rhyolite" value: 604447335222770945 From 02c54659e84802e7828799cd2c15402e84bb1104 Mon Sep 17 00:00:00 2001 From: Cedric Date: Mon, 29 Jun 2026 16:59:26 +0100 Subject: [PATCH 42/49] Add suspend_on_await bool (#414) * Add suspend_on_await bool * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- cre/go/installer/pkg/embedded_gen.go | 1 + cre/go/sdk/sdk.pb.go | 13 +++++++++++-- cre/sdk/v1alpha/sdk.proto | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 08cb0bc8..5fd52662 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -2021,6 +2021,7 @@ message ExecuteRequest { Trigger pre_hook = 5; } uint64 max_response_size = 4; + bool suspend_on_await = 6; } message ExecutionResult { diff --git a/cre/go/sdk/sdk.pb.go b/cre/go/sdk/sdk.pb.go index 14849c9f..937f3e13 100644 --- a/cre/go/sdk/sdk.pb.go +++ b/cre/go/sdk/sdk.pb.go @@ -1326,6 +1326,7 @@ type ExecuteRequest struct { // *ExecuteRequest_PreHook Request isExecuteRequest_Request `protobuf_oneof:"request"` MaxResponseSize uint64 `protobuf:"varint,4,opt,name=max_response_size,json=maxResponseSize,proto3" json:"max_response_size,omitempty"` + SuspendOnAwait bool `protobuf:"varint,6,opt,name=suspend_on_await,json=suspendOnAwait,proto3" json:"suspend_on_await,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1408,6 +1409,13 @@ func (x *ExecuteRequest) GetMaxResponseSize() uint64 { return 0 } +func (x *ExecuteRequest) GetSuspendOnAwait() bool { + if x != nil { + return x.SuspendOnAwait + } + return false +} + type isExecuteRequest_Request interface { isExecuteRequest_Request() } @@ -2509,13 +2517,14 @@ const file_sdk_v1alpha_sdk_proto_rawDesc = "" + "\tresponses\x18\x01 \x03(\v25.sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntryR\tresponses\x1a]\n" + "\x0eResponsesEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\x05R\x03key\x125\n" + - "\x05value\x18\x02 \x01(\v2\x1f.sdk.v1alpha.CapabilityResponseR\x05value:\x028\x01\"\xfc\x01\n" + + "\x05value\x18\x02 \x01(\v2\x1f.sdk.v1alpha.CapabilityResponseR\x05value:\x028\x01\"\xa6\x02\n" + "\x0eExecuteRequest\x12\x16\n" + "\x06config\x18\x01 \x01(\fR\x06config\x126\n" + "\tsubscribe\x18\x02 \x01(\v2\x16.google.protobuf.EmptyH\x00R\tsubscribe\x120\n" + "\atrigger\x18\x03 \x01(\v2\x14.sdk.v1alpha.TriggerH\x00R\atrigger\x121\n" + "\bpre_hook\x18\x05 \x01(\v2\x14.sdk.v1alpha.TriggerH\x00R\apreHook\x12*\n" + - "\x11max_response_size\x18\x04 \x01(\x04R\x0fmaxResponseSizeB\t\n" + + "\x11max_response_size\x18\x04 \x01(\x04R\x0fmaxResponseSize\x12(\n" + + "\x10suspend_on_await\x18\x06 \x01(\bR\x0esuspendOnAwaitB\t\n" + "\arequest\"\xfe\x01\n" + "\x0fExecutionResult\x12(\n" + "\x05value\x18\x01 \x01(\v2\x10.values.v1.ValueH\x00R\x05value\x12\x16\n" + diff --git a/cre/sdk/v1alpha/sdk.proto b/cre/sdk/v1alpha/sdk.proto index 60fac926..b0b1af87 100644 --- a/cre/sdk/v1alpha/sdk.proto +++ b/cre/sdk/v1alpha/sdk.proto @@ -135,6 +135,7 @@ message ExecuteRequest { Trigger pre_hook = 5; } uint64 max_response_size = 4; + bool suspend_on_await = 6; } message ExecutionResult { From 3b9194fc4487261ce7f04db9612c9bf472f42175 Mon Sep 17 00:00:00 2001 From: ilija42 <57732589+ilija42@users.noreply.github.com> Date: Wed, 1 Jul 2026 20:01:41 +0200 Subject: [PATCH 43/49] Add stellar to jd chain types (#418) * Add stellar to jd chain types * bot: regenerate protobuf files --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- .changeset/modern-planets-bake.md | 5 +++++ job-distributor/v1/node/node.pb.go | 8 ++++++-- job-distributor/v1/node/node.proto | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 .changeset/modern-planets-bake.md diff --git a/.changeset/modern-planets-bake.md b/.changeset/modern-planets-bake.md new file mode 100644 index 00000000..b0a4b2a1 --- /dev/null +++ b/.changeset/modern-planets-bake.md @@ -0,0 +1,5 @@ +--- +"@chainlink/job-distributor": minor +--- + +Add CHAIN_TYPE_STELLAR to the node ChainType enum diff --git a/job-distributor/v1/node/node.pb.go b/job-distributor/v1/node/node.pb.go index dcdcb981..33b09fda 100644 --- a/job-distributor/v1/node/node.pb.go +++ b/job-distributor/v1/node/node.pb.go @@ -34,6 +34,7 @@ const ( ChainType_CHAIN_TYPE_TRON ChainType = 5 ChainType_CHAIN_TYPE_TON ChainType = 6 ChainType_CHAIN_TYPE_SUI ChainType = 7 + ChainType_CHAIN_TYPE_STELLAR ChainType = 8 ) // Enum value maps for ChainType. @@ -47,6 +48,7 @@ var ( 5: "CHAIN_TYPE_TRON", 6: "CHAIN_TYPE_TON", 7: "CHAIN_TYPE_SUI", + 8: "CHAIN_TYPE_STELLAR", } ChainType_value = map[string]int32{ "CHAIN_TYPE_UNSPECIFIED": 0, @@ -57,6 +59,7 @@ var ( "CHAIN_TYPE_TRON": 5, "CHAIN_TYPE_TON": 6, "CHAIN_TYPE_SUI": 7, + "CHAIN_TYPE_STELLAR": 8, } ) @@ -1983,7 +1986,7 @@ const file_v1_node_node_proto_rawDesc = "" + "\fP2PKeyBundle\x12\x17\n" + "\apeer_id\x18\x01 \x01(\tR\x06peerId\x12\x1d\n" + "\n" + - "public_key\x18\x02 \x01(\tR\tpublicKey*\xbe\x01\n" + + "public_key\x18\x02 \x01(\tR\tpublicKey*\xd6\x01\n" + "\tChainType\x12\x1a\n" + "\x16CHAIN_TYPE_UNSPECIFIED\x10\x00\x12\x12\n" + "\x0eCHAIN_TYPE_EVM\x10\x01\x12\x15\n" + @@ -1992,7 +1995,8 @@ const file_v1_node_node_proto_rawDesc = "" + "\x10CHAIN_TYPE_APTOS\x10\x04\x12\x13\n" + "\x0fCHAIN_TYPE_TRON\x10\x05\x12\x12\n" + "\x0eCHAIN_TYPE_TON\x10\x06\x12\x12\n" + - "\x0eCHAIN_TYPE_SUI\x10\a*`\n" + + "\x0eCHAIN_TYPE_SUI\x10\a\x12\x16\n" + + "\x12CHAIN_TYPE_STELLAR\x10\b*`\n" + "\vEnableState\x12\x1c\n" + "\x18ENABLE_STATE_UNSPECIFIED\x10\x00\x12\x18\n" + "\x14ENABLE_STATE_ENABLED\x10\x01\x12\x19\n" + diff --git a/job-distributor/v1/node/node.proto b/job-distributor/v1/node/node.proto index 9d5086f8..d238089d 100644 --- a/job-distributor/v1/node/node.proto +++ b/job-distributor/v1/node/node.proto @@ -55,6 +55,7 @@ enum ChainType { CHAIN_TYPE_TRON = 5; CHAIN_TYPE_TON = 6; CHAIN_TYPE_SUI = 7; + CHAIN_TYPE_STELLAR = 8; } message Chain { From ca350beacd4bd971331b4b2b6ad11b2f33fe7bd1 Mon Sep 17 00:00:00 2001 From: amit-momin <108959691+amit-momin@users.noreply.github.com> Date: Tue, 7 Jul 2026 14:54:16 -0500 Subject: [PATCH 44/49] Add dtcc-mainnet-appchain support (#421) * Added dtcc-mainnet-appchain support * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- cre/capabilities/blockchain/evm/v1alpha/client.proto | 4 ++++ cre/go/installer/pkg/embedded_gen.go | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/cre/capabilities/blockchain/evm/v1alpha/client.proto b/cre/capabilities/blockchain/evm/v1alpha/client.proto index 5ed820b2..abd12874 100644 --- a/cre/capabilities/blockchain/evm/v1alpha/client.proto +++ b/cre/capabilities/blockchain/evm/v1alpha/client.proto @@ -213,6 +213,10 @@ service Client { key: "cronos-testnet" value: 2995292832068775165 }, + { + key: "dtcc-mainnet-appchain" + value: 13879014182901017172 + }, { key: "dtcc-testnet-andesite" value: 15513093881969820114 diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 5fd52662..016dab1a 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -417,6 +417,10 @@ service Client { key: "cronos-testnet" value: 2995292832068775165 }, + { + key: "dtcc-mainnet-appchain" + value: 13879014182901017172 + }, { key: "dtcc-testnet-andesite" value: 15513093881969820114 From 29c5577b5f551b7ce0f0b7ccf041f9ef4ffcb626 Mon Sep 17 00:00:00 2001 From: Bolek <1416262+bolekk@users.noreply.github.com> Date: Tue, 14 Jul 2026 10:08:05 -0700 Subject: [PATCH 45/49] [CRE][SDK] New consensus aggregation type: FREQUENCY_LIST (#428) * [CRE][SDK] Add new aggregation type * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- cre/go/installer/pkg/embedded_gen.go | 2 ++ cre/go/sdk/sdk.pb.go | 28 ++++++++++++++++------------ cre/sdk/v1alpha/sdk.proto | 1 + cre/sdk/v1beta/sdk.proto | 1 + 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 016dab1a..4ed35190 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -1902,6 +1902,7 @@ enum AggregationType { AGGREGATION_TYPE_IDENTICAL = 2; AGGREGATION_TYPE_COMMON_PREFIX = 3; AGGREGATION_TYPE_COMMON_SUFFIX = 4; + AGGREGATION_TYPE_FREQUENCY_LIST = 5; } message SimpleConsensusInputs { @@ -2141,6 +2142,7 @@ enum AggregationType { AGGREGATION_TYPE_IDENTICAL = 2; AGGREGATION_TYPE_COMMON_PREFIX = 3; AGGREGATION_TYPE_COMMON_SUFFIX = 4; + AGGREGATION_TYPE_FREQUENCY_LIST = 5; } message SimpleConsensusInputs { diff --git a/cre/go/sdk/sdk.pb.go b/cre/go/sdk/sdk.pb.go index 937f3e13..bb714390 100644 --- a/cre/go/sdk/sdk.pb.go +++ b/cre/go/sdk/sdk.pb.go @@ -27,11 +27,12 @@ const ( type AggregationType int32 const ( - AggregationType_AGGREGATION_TYPE_UNSPECIFIED AggregationType = 0 - AggregationType_AGGREGATION_TYPE_MEDIAN AggregationType = 1 - AggregationType_AGGREGATION_TYPE_IDENTICAL AggregationType = 2 - AggregationType_AGGREGATION_TYPE_COMMON_PREFIX AggregationType = 3 - AggregationType_AGGREGATION_TYPE_COMMON_SUFFIX AggregationType = 4 + AggregationType_AGGREGATION_TYPE_UNSPECIFIED AggregationType = 0 + AggregationType_AGGREGATION_TYPE_MEDIAN AggregationType = 1 + AggregationType_AGGREGATION_TYPE_IDENTICAL AggregationType = 2 + AggregationType_AGGREGATION_TYPE_COMMON_PREFIX AggregationType = 3 + AggregationType_AGGREGATION_TYPE_COMMON_SUFFIX AggregationType = 4 + AggregationType_AGGREGATION_TYPE_FREQUENCY_LIST AggregationType = 5 ) // Enum value maps for AggregationType. @@ -42,13 +43,15 @@ var ( 2: "AGGREGATION_TYPE_IDENTICAL", 3: "AGGREGATION_TYPE_COMMON_PREFIX", 4: "AGGREGATION_TYPE_COMMON_SUFFIX", + 5: "AGGREGATION_TYPE_FREQUENCY_LIST", } AggregationType_value = map[string]int32{ - "AGGREGATION_TYPE_UNSPECIFIED": 0, - "AGGREGATION_TYPE_MEDIAN": 1, - "AGGREGATION_TYPE_IDENTICAL": 2, - "AGGREGATION_TYPE_COMMON_PREFIX": 3, - "AGGREGATION_TYPE_COMMON_SUFFIX": 4, + "AGGREGATION_TYPE_UNSPECIFIED": 0, + "AGGREGATION_TYPE_MEDIAN": 1, + "AGGREGATION_TYPE_IDENTICAL": 2, + "AGGREGATION_TYPE_COMMON_PREFIX": 3, + "AGGREGATION_TYPE_COMMON_SUFFIX": 4, + "AGGREGATION_TYPE_FREQUENCY_LIST": 5, } ) @@ -2589,13 +2592,14 @@ const file_sdk_v1alpha_sdk_proto_rawDesc = "" + "maxSecrets\"\x92\x01\n" + "\fRestrictions\x129\n" + "\asecrets\x18\x01 \x01(\v2\x1f.sdk.v1alpha.SecretsRestritionsR\asecrets\x12G\n" + - "\fcapabilities\x18\x02 \x01(\v2#.sdk.v1alpha.CapabilityRestrictionsR\fcapabilities*\xb8\x01\n" + + "\fcapabilities\x18\x02 \x01(\v2#.sdk.v1alpha.CapabilityRestrictionsR\fcapabilities*\xdd\x01\n" + "\x0fAggregationType\x12 \n" + "\x1cAGGREGATION_TYPE_UNSPECIFIED\x10\x00\x12\x1b\n" + "\x17AGGREGATION_TYPE_MEDIAN\x10\x01\x12\x1e\n" + "\x1aAGGREGATION_TYPE_IDENTICAL\x10\x02\x12\"\n" + "\x1eAGGREGATION_TYPE_COMMON_PREFIX\x10\x03\x12\"\n" + - "\x1eAGGREGATION_TYPE_COMMON_SUFFIX\x10\x04*9\n" + + "\x1eAGGREGATION_TYPE_COMMON_SUFFIX\x10\x04\x12#\n" + + "\x1fAGGREGATION_TYPE_FREQUENCY_LIST\x10\x05*9\n" + "\x04Mode\x12\x14\n" + "\x10MODE_UNSPECIFIED\x10\x00\x12\f\n" + "\bMODE_DON\x10\x01\x12\r\n" + diff --git a/cre/sdk/v1alpha/sdk.proto b/cre/sdk/v1alpha/sdk.proto index b0b1af87..928bfdf5 100644 --- a/cre/sdk/v1alpha/sdk.proto +++ b/cre/sdk/v1alpha/sdk.proto @@ -12,6 +12,7 @@ enum AggregationType { AGGREGATION_TYPE_IDENTICAL = 2; AGGREGATION_TYPE_COMMON_PREFIX = 3; AGGREGATION_TYPE_COMMON_SUFFIX = 4; + AGGREGATION_TYPE_FREQUENCY_LIST = 5; } message SimpleConsensusInputs { diff --git a/cre/sdk/v1beta/sdk.proto b/cre/sdk/v1beta/sdk.proto index 39d73ae0..59c90216 100644 --- a/cre/sdk/v1beta/sdk.proto +++ b/cre/sdk/v1beta/sdk.proto @@ -12,6 +12,7 @@ enum AggregationType { AGGREGATION_TYPE_IDENTICAL = 2; AGGREGATION_TYPE_COMMON_PREFIX = 3; AGGREGATION_TYPE_COMMON_SUFFIX = 4; + AGGREGATION_TYPE_FREQUENCY_LIST = 5; } message SimpleConsensusInputs { From af58e67b2a574cef84d421d305070488aab31947 Mon Sep 17 00:00:00 2001 From: Russell Stern Date: Thu, 30 Jul 2026 17:04:01 -0400 Subject: [PATCH 46/49] Switch to uint instead of int (#436) --- cre/go/installer/pkg/embedded_gen.go | 4 ++-- cre/go/sdk/sdk.pb.go | 12 ++++++------ cre/sdk/v1alpha/sdk.proto | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 4ed35190..b7e67707 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -2107,7 +2107,7 @@ message CapabilityRestrictions { message SecretPrefixRestriction { string prefix = 1; string namespace = 2; - int32 max_secrets = 3; + uint32 max_secrets = 3; } message SecretRestriction { @@ -2119,7 +2119,7 @@ message SecretRestriction { message SecretsRestritions { repeated SecretRestriction restrictions = 1; - int32 max_secrets = 2; + uint32 max_secrets = 2; } message Restrictions { diff --git a/cre/go/sdk/sdk.pb.go b/cre/go/sdk/sdk.pb.go index bb714390..02724e8c 100644 --- a/cre/go/sdk/sdk.pb.go +++ b/cre/go/sdk/sdk.pb.go @@ -2199,7 +2199,7 @@ type SecretPrefixRestriction struct { state protoimpl.MessageState `protogen:"open.v1"` Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"` Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - MaxSecrets int32 `protobuf:"varint,3,opt,name=max_secrets,json=maxSecrets,proto3" json:"max_secrets,omitempty"` + MaxSecrets uint32 `protobuf:"varint,3,opt,name=max_secrets,json=maxSecrets,proto3" json:"max_secrets,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2248,7 +2248,7 @@ func (x *SecretPrefixRestriction) GetNamespace() string { return "" } -func (x *SecretPrefixRestriction) GetMaxSecrets() int32 { +func (x *SecretPrefixRestriction) GetMaxSecrets() uint32 { if x != nil { return x.MaxSecrets } @@ -2340,7 +2340,7 @@ func (*SecretRestriction_PrefixedSecret) isSecretRestriction_Restriction() {} type SecretsRestritions struct { state protoimpl.MessageState `protogen:"open.v1"` Restrictions []*SecretRestriction `protobuf:"bytes,1,rep,name=restrictions,proto3" json:"restrictions,omitempty"` - MaxSecrets int32 `protobuf:"varint,2,opt,name=max_secrets,json=maxSecrets,proto3" json:"max_secrets,omitempty"` + MaxSecrets uint32 `protobuf:"varint,2,opt,name=max_secrets,json=maxSecrets,proto3" json:"max_secrets,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2382,7 +2382,7 @@ func (x *SecretsRestritions) GetRestrictions() []*SecretRestriction { return nil } -func (x *SecretsRestritions) GetMaxSecrets() int32 { +func (x *SecretsRestritions) GetMaxSecrets() uint32 { if x != nil { return x.MaxSecrets } @@ -2580,7 +2580,7 @@ const file_sdk_v1alpha_sdk_proto_rawDesc = "" + "\x17SecretPrefixRestriction\x12\x16\n" + "\x06prefix\x18\x01 \x01(\tR\x06prefix\x12\x1c\n" + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x1f\n" + - "\vmax_secrets\x18\x03 \x01(\x05R\n" + + "\vmax_secrets\x18\x03 \x01(\rR\n" + "maxSecrets\"\xad\x01\n" + "\x11SecretRestriction\x128\n" + "\fexact_secret\x18\x01 \x01(\v2\x13.sdk.v1alpha.SecretH\x00R\vexactSecret\x12O\n" + @@ -2588,7 +2588,7 @@ const file_sdk_v1alpha_sdk_proto_rawDesc = "" + "\vrestriction\"y\n" + "\x12SecretsRestritions\x12B\n" + "\frestrictions\x18\x01 \x03(\v2\x1e.sdk.v1alpha.SecretRestrictionR\frestrictions\x12\x1f\n" + - "\vmax_secrets\x18\x02 \x01(\x05R\n" + + "\vmax_secrets\x18\x02 \x01(\rR\n" + "maxSecrets\"\x92\x01\n" + "\fRestrictions\x129\n" + "\asecrets\x18\x01 \x01(\v2\x1f.sdk.v1alpha.SecretsRestritionsR\asecrets\x12G\n" + diff --git a/cre/sdk/v1alpha/sdk.proto b/cre/sdk/v1alpha/sdk.proto index 928bfdf5..e5597600 100644 --- a/cre/sdk/v1alpha/sdk.proto +++ b/cre/sdk/v1alpha/sdk.proto @@ -217,7 +217,7 @@ message CapabilityRestrictions { message SecretPrefixRestriction { string prefix = 1; string namespace = 2; - int32 max_secrets = 3; + uint32 max_secrets = 3; } message SecretRestriction { @@ -229,7 +229,7 @@ message SecretRestriction { message SecretsRestritions { repeated SecretRestriction restrictions = 1; - int32 max_secrets = 2; + uint32 max_secrets = 2; } message Restrictions { From d009be416b1c49045e695281e5748886efdae50a Mon Sep 17 00:00:00 2001 From: Russell Stern Date: Tue, 4 Aug 2026 13:58:39 -0400 Subject: [PATCH 47/49] Switched other restrictions to use uints (#438) --- cre/go/installer/pkg/embedded_gen.go | 4 ++-- cre/go/sdk/sdk.pb.go | 12 ++++++------ cre/sdk/v1alpha/sdk.proto | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index b7e67707..0312a892 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -2084,7 +2084,7 @@ message SecretResponses { message MethodRestriction { string id = 1; string method = 2; - int32 max_calls = 3; + uint32 max_calls = 3; } message CapabilityRestriction { @@ -2100,7 +2100,7 @@ enum CapabilityRestrictionType { message CapabilityRestrictions { repeated CapabilityRestriction restrictions = 1; - int32 max_total_calls = 2; + uint32 max_total_calls = 2; CapabilityRestrictionType type = 3; } diff --git a/cre/go/sdk/sdk.pb.go b/cre/go/sdk/sdk.pb.go index 02724e8c..d435aea2 100644 --- a/cre/go/sdk/sdk.pb.go +++ b/cre/go/sdk/sdk.pb.go @@ -2013,7 +2013,7 @@ type MethodRestriction struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Method string `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"` - MaxCalls int32 `protobuf:"varint,3,opt,name=max_calls,json=maxCalls,proto3" json:"max_calls,omitempty"` + MaxCalls uint32 `protobuf:"varint,3,opt,name=max_calls,json=maxCalls,proto3" json:"max_calls,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2062,7 +2062,7 @@ func (x *MethodRestriction) GetMethod() string { return "" } -func (x *MethodRestriction) GetMaxCalls() int32 { +func (x *MethodRestriction) GetMaxCalls() uint32 { if x != nil { return x.MaxCalls } @@ -2138,7 +2138,7 @@ func (*CapabilityRestriction_Method) isCapabilityRestriction_Restriction() {} type CapabilityRestrictions struct { state protoimpl.MessageState `protogen:"open.v1"` Restrictions []*CapabilityRestriction `protobuf:"bytes,1,rep,name=restrictions,proto3" json:"restrictions,omitempty"` - MaxTotalCalls int32 `protobuf:"varint,2,opt,name=max_total_calls,json=maxTotalCalls,proto3" json:"max_total_calls,omitempty"` + MaxTotalCalls uint32 `protobuf:"varint,2,opt,name=max_total_calls,json=maxTotalCalls,proto3" json:"max_total_calls,omitempty"` Type CapabilityRestrictionType `protobuf:"varint,3,opt,name=type,proto3,enum=sdk.v1alpha.CapabilityRestrictionType" json:"type,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -2181,7 +2181,7 @@ func (x *CapabilityRestrictions) GetRestrictions() []*CapabilityRestriction { return nil } -func (x *CapabilityRestrictions) GetMaxTotalCalls() int32 { +func (x *CapabilityRestrictions) GetMaxTotalCalls() uint32 { if x != nil { return x.MaxTotalCalls } @@ -2569,13 +2569,13 @@ const file_sdk_v1alpha_sdk_proto_rawDesc = "" + "\x11MethodRestriction\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" + "\x06method\x18\x02 \x01(\tR\x06method\x12\x1b\n" + - "\tmax_calls\x18\x03 \x01(\x05R\bmaxCalls\"`\n" + + "\tmax_calls\x18\x03 \x01(\rR\bmaxCalls\"`\n" + "\x15CapabilityRestriction\x128\n" + "\x06method\x18\x01 \x01(\v2\x1e.sdk.v1alpha.MethodRestrictionH\x00R\x06methodB\r\n" + "\vrestriction\"\xc4\x01\n" + "\x16CapabilityRestrictions\x12F\n" + "\frestrictions\x18\x01 \x03(\v2\".sdk.v1alpha.CapabilityRestrictionR\frestrictions\x12&\n" + - "\x0fmax_total_calls\x18\x02 \x01(\x05R\rmaxTotalCalls\x12:\n" + + "\x0fmax_total_calls\x18\x02 \x01(\rR\rmaxTotalCalls\x12:\n" + "\x04type\x18\x03 \x01(\x0e2&.sdk.v1alpha.CapabilityRestrictionTypeR\x04type\"p\n" + "\x17SecretPrefixRestriction\x12\x16\n" + "\x06prefix\x18\x01 \x01(\tR\x06prefix\x12\x1c\n" + diff --git a/cre/sdk/v1alpha/sdk.proto b/cre/sdk/v1alpha/sdk.proto index e5597600..0a562a17 100644 --- a/cre/sdk/v1alpha/sdk.proto +++ b/cre/sdk/v1alpha/sdk.proto @@ -194,7 +194,7 @@ message SecretResponses { message MethodRestriction { string id = 1; string method = 2; - int32 max_calls = 3; + uint32 max_calls = 3; } message CapabilityRestriction { @@ -210,7 +210,7 @@ enum CapabilityRestrictionType { message CapabilityRestrictions { repeated CapabilityRestriction restrictions = 1; - int32 max_total_calls = 2; + uint32 max_total_calls = 2; CapabilityRestrictionType type = 3; } From b7a850ae7648ec7c6d74d9f73066d30bfa35e3cd Mon Sep 17 00:00:00 2001 From: Krish-vemula <152236536+Krish-vemula@users.noreply.github.com> Date: Tue, 4 Aug 2026 12:15:26 -0700 Subject: [PATCH 48/49] add monad mainnet (#440) * add monad mainnet * Auto-fix: buf format, gofmt, go generate, go mod tidy * Fix monad-mainnet typo and trailing whitespace * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- cre/capabilities/blockchain/evm/v1alpha/client.proto | 4 ++++ cre/go/installer/pkg/embedded_gen.go | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/cre/capabilities/blockchain/evm/v1alpha/client.proto b/cre/capabilities/blockchain/evm/v1alpha/client.proto index abd12874..97fac0cd 100644 --- a/cre/capabilities/blockchain/evm/v1alpha/client.proto +++ b/cre/capabilities/blockchain/evm/v1alpha/client.proto @@ -341,6 +341,10 @@ service Client { key: "megaeth-testnet-2" value: 18241817625092392675 }, + { + key: "monad-mainnet" + value: 8481857512324358265 + }, { key: "pharos-atlantic-testnet" value: 16098325658947243212 diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 0312a892..ad48e3c6 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -545,6 +545,10 @@ service Client { key: "megaeth-testnet-2" value: 18241817625092392675 }, + { + key: "monad-mainnet" + value: 8481857512324358265 + }, { key: "pharos-atlantic-testnet" value: 16098325658947243212 From 343d0c388289e12ca65b2de85af501dd18bec39e Mon Sep 17 00:00:00 2001 From: amit-momin <108959691+amit-momin@users.noreply.github.com> Date: Wed, 12 Aug 2026 11:55:00 -0500 Subject: [PATCH 49/49] Add CRE support for Monad, T-REX, Robinhood, Stable, Tempo testnets (#446) (#447) * Added CRE support for Monad, T-REX, Robinhood, Stable, Tempo testnets * Auto-fix: buf format, gofmt, go generate, go mod tidy --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com> --- .../blockchain/evm/v1alpha/client.proto | 20 +++++++++++++++++++ cre/go/installer/pkg/embedded_gen.go | 20 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/cre/capabilities/blockchain/evm/v1alpha/client.proto b/cre/capabilities/blockchain/evm/v1alpha/client.proto index 97fac0cd..c2a4faa5 100644 --- a/cre/capabilities/blockchain/evm/v1alpha/client.proto +++ b/cre/capabilities/blockchain/evm/v1alpha/client.proto @@ -345,6 +345,10 @@ service Client { key: "monad-mainnet" value: 8481857512324358265 }, + { + key: "monad-testnet" + value: 2183018362218727504 + }, { key: "pharos-atlantic-testnet" value: 16098325658947243212 @@ -385,6 +389,10 @@ service Client { key: "private-testnet-rhyolite" value: 604447335222770945 }, + { + key: "robinhood-testnet" + value: 2032988798112970440 + }, { key: "sonic-mainnet" value: 1673871237479749969 @@ -393,10 +401,22 @@ service Client { key: "sonic-testnet" value: 1763698235108410440 }, + { + key: "stable-testnet" + value: 11793402411494852765 + }, { key: "tac-testnet" value: 9488606126177218005 }, + { + key: "tempo-testnet-moderato" + value: 8457817439310187923 + }, + { + key: "t-rex-testnet" + value: 17611928792452358269 + }, { key: "xlayer-testnet" value: 10212741611335999305 diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index ad48e3c6..b5e80b76 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -549,6 +549,10 @@ service Client { key: "monad-mainnet" value: 8481857512324358265 }, + { + key: "monad-testnet" + value: 2183018362218727504 + }, { key: "pharos-atlantic-testnet" value: 16098325658947243212 @@ -589,6 +593,10 @@ service Client { key: "private-testnet-rhyolite" value: 604447335222770945 }, + { + key: "robinhood-testnet" + value: 2032988798112970440 + }, { key: "sonic-mainnet" value: 1673871237479749969 @@ -597,10 +605,22 @@ service Client { key: "sonic-testnet" value: 1763698235108410440 }, + { + key: "stable-testnet" + value: 11793402411494852765 + }, { key: "tac-testnet" value: 9488606126177218005 }, + { + key: "tempo-testnet-moderato" + value: 8457817439310187923 + }, + { + key: "t-rex-testnet" + value: 17611928792452358269 + }, { key: "xlayer-testnet" value: 10212741611335999305