diff --git a/cre/capabilities/blockchain/aptos/v1alpha/client.proto b/cre/capabilities/blockchain/aptos/v1alpha/client.proto new file mode 100644 index 00000000..11605bf8 --- /dev/null +++ b/cre/capabilities/blockchain/aptos/v1alpha/client.proto @@ -0,0 +1,202 @@ +syntax = "proto3"; +package capabilities.blockchain.aptos.v1alpha; + +import "sdk/v1alpha/sdk.proto"; +import "tools/generator/v1alpha/cre_metadata.proto"; + +// Transaction execution status returned by the forwarder. +enum TxStatus { + TX_STATUS_FATAL = 0; // unrecoverable failure + TX_STATUS_ABORTED = 1; // not executed / dropped + TX_STATUS_SUCCESS = 2; // executed successfully +} + +// ========== AccountAPTBalance ========== + +message AccountAPTBalanceRequest { + bytes address = 1; // 32-byte address +} + +message AccountAPTBalanceReply { + uint64 value = 1; +} + +// ========== View ========== + +message ViewRequest { + ViewPayload payload = 1; +} + +message ViewReply { + bytes data = 1; +} + +message ViewPayload { + ModuleID module = 1; + string function = 2; + repeated TypeTag arg_types = 3; + repeated bytes args = 4; +} + +message ModuleID { + bytes address = 1; // 32-byte address + string name = 2; +} + +message TypeTag { + TypeTagType type = 1; + oneof value { + VectorTag vector = 2; + StructTag struct = 3; + GenericTag generic = 4; + } +} + +enum TypeTagType { + TYPE_TAG_BOOL = 0; + TYPE_TAG_U8 = 1; + TYPE_TAG_U16 = 2; + TYPE_TAG_U32 = 3; + TYPE_TAG_U64 = 4; + TYPE_TAG_U128 = 5; + TYPE_TAG_U256 = 6; + TYPE_TAG_ADDRESS = 7; + TYPE_TAG_SIGNER = 8; + TYPE_TAG_VECTOR = 9; + TYPE_TAG_STRUCT = 10; + TYPE_TAG_GENERIC = 11; +} + +message VectorTag { + TypeTag element_type = 1; +} + +message StructTag { + bytes address = 1; // 32-byte address + string module = 2; + string name = 3; + repeated TypeTag type_params = 4; +} + +message GenericTag { + uint32 index = 1; +} + +// ========== EventsByHandle ========== + +message EventsByHandleRequest { + bytes account = 1; // 32-byte address + string event_handle = 2; // Event handle struct tag + string field_name = 3; // Field in the event handle struct + optional uint64 start = 4; // Starting sequence number + optional uint64 limit = 5; // Number of events to return (default 100) +} + +message EventsByHandleReply { + repeated Event events = 1; +} + +message Event { + uint64 version = 1; // Block version of the event + string type = 2; // Fully qualified name e.g. 0x1::coin::WithdrawEvent + optional GUID guid = 3; // Unique identifier (V1 events only) + uint64 sequence_number = 4; // Sequence number (V1 events only) + bytes data = 5; // Event data as raw bytes +} + +message GUID { + uint64 creation_number = 1; // Number of the GUID + bytes account_address = 2; // 32-byte account address of creator +} + +// ========== TransactionByHash ========== + +message TransactionByHashRequest { + string hash = 1; // Transaction hash (hex string with 0x prefix) +} + +message TransactionByHashReply { + optional Transaction transaction = 1; +} + +enum TransactionVariant { + TRANSACTION_VARIANT_PENDING = 0; + TRANSACTION_VARIANT_USER = 1; + TRANSACTION_VARIANT_GENESIS = 2; + TRANSACTION_VARIANT_BLOCK_METADATA = 3; + TRANSACTION_VARIANT_BLOCK_EPILOGUE = 4; + TRANSACTION_VARIANT_STATE_CHECKPOINT = 5; + TRANSACTION_VARIANT_VALIDATOR = 6; + TRANSACTION_VARIANT_UNKNOWN = 7; +} + +message Transaction { + TransactionVariant type = 1; + string hash = 2; + optional uint64 version = 3; // nil for pending transactions + optional bool success = 4; // nil for pending/genesis transactions + bytes data = 5; // Raw transaction data +} + +// ========== SubmitTransaction ========== + +message SubmitTransactionRequest { + ModuleID receiver_module_id = 1; + bytes encoded_payload = 2; + optional GasConfig gas_config = 3; +} + +message SubmitTransactionReply { + TxStatus tx_status = 1; + string tx_hash = 2; + string tx_idempotency_key = 3; +} + +message GasConfig { + uint64 max_gas_amount = 1; // Maximum gas units willing to pay + uint64 gas_unit_price = 2; // Price per gas unit in octas +} + +// ========== WriteReport ========== + +message WriteReportRequest { + bytes receiver = 1; // 32-byte Aptos account address of the receiver module + optional GasConfig gas_config = 2; // optional gas configuration + sdk.v1alpha.ReportResponse report = 3; // signed report from consensus +} + +message WriteReportReply { + TxStatus tx_status = 1; + 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; +} + +// ========== Service ========== + +service Client { + option (tools.generator.v1alpha.capability) = { + mode: MODE_DON + capability_id: "aptos@1.0.0" + labels: { + // from https://github.com/smartcontractkit/chain-selectors/blob/main/selectors_aptos.yml + key: "ChainSelector" + value: { + uint64_label: { + defaults: [ + { + key: "aptos-mainnet" + value: 4741433654826277614 + }, + { + key: "aptos-testnet" + value: 743186221051783445 + } + ] + } + } + } + }; + + rpc WriteReport(WriteReportRequest) returns (WriteReportReply); +} diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index d20b63cf..bb28f40f 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -1,6 +1,210 @@ // Code generated by github.com/smartcontractkit/chainlink-protos/cre/go/installer/bootstrap. DO NOT EDIT.\n") package pkg +const blockchainAptosV1alphaClientEmbedded = `syntax = "proto3"; +package capabilities.blockchain.aptos.v1alpha; + +import "sdk/v1alpha/sdk.proto"; +import "tools/generator/v1alpha/cre_metadata.proto"; + +// Transaction execution status returned by the forwarder. +enum TxStatus { + TX_STATUS_FATAL = 0; // unrecoverable failure + TX_STATUS_ABORTED = 1; // not executed / dropped + TX_STATUS_SUCCESS = 2; // executed successfully +} + +// ========== AccountAPTBalance ========== + +message AccountAPTBalanceRequest { + bytes address = 1; // 32-byte address +} + +message AccountAPTBalanceReply { + uint64 value = 1; +} + +// ========== View ========== + +message ViewRequest { + ViewPayload payload = 1; +} + +message ViewReply { + bytes data = 1; +} + +message ViewPayload { + ModuleID module = 1; + string function = 2; + repeated TypeTag arg_types = 3; + repeated bytes args = 4; +} + +message ModuleID { + bytes address = 1; // 32-byte address + string name = 2; +} + +message TypeTag { + TypeTagType type = 1; + oneof value { + VectorTag vector = 2; + StructTag struct = 3; + GenericTag generic = 4; + } +} + +enum TypeTagType { + TYPE_TAG_BOOL = 0; + TYPE_TAG_U8 = 1; + TYPE_TAG_U16 = 2; + TYPE_TAG_U32 = 3; + TYPE_TAG_U64 = 4; + TYPE_TAG_U128 = 5; + TYPE_TAG_U256 = 6; + TYPE_TAG_ADDRESS = 7; + TYPE_TAG_SIGNER = 8; + TYPE_TAG_VECTOR = 9; + TYPE_TAG_STRUCT = 10; + TYPE_TAG_GENERIC = 11; +} + +message VectorTag { + TypeTag element_type = 1; +} + +message StructTag { + bytes address = 1; // 32-byte address + string module = 2; + string name = 3; + repeated TypeTag type_params = 4; +} + +message GenericTag { + uint32 index = 1; +} + +// ========== EventsByHandle ========== + +message EventsByHandleRequest { + bytes account = 1; // 32-byte address + string event_handle = 2; // Event handle struct tag + string field_name = 3; // Field in the event handle struct + optional uint64 start = 4; // Starting sequence number + optional uint64 limit = 5; // Number of events to return (default 100) +} + +message EventsByHandleReply { + repeated Event events = 1; +} + +message Event { + uint64 version = 1; // Block version of the event + string type = 2; // Fully qualified name e.g. 0x1::coin::WithdrawEvent + optional GUID guid = 3; // Unique identifier (V1 events only) + uint64 sequence_number = 4; // Sequence number (V1 events only) + bytes data = 5; // Event data as raw bytes +} + +message GUID { + uint64 creation_number = 1; // Number of the GUID + bytes account_address = 2; // 32-byte account address of creator +} + +// ========== TransactionByHash ========== + +message TransactionByHashRequest { + string hash = 1; // Transaction hash (hex string with 0x prefix) +} + +message TransactionByHashReply { + optional Transaction transaction = 1; +} + +enum TransactionVariant { + TRANSACTION_VARIANT_PENDING = 0; + TRANSACTION_VARIANT_USER = 1; + TRANSACTION_VARIANT_GENESIS = 2; + TRANSACTION_VARIANT_BLOCK_METADATA = 3; + TRANSACTION_VARIANT_BLOCK_EPILOGUE = 4; + TRANSACTION_VARIANT_STATE_CHECKPOINT = 5; + TRANSACTION_VARIANT_VALIDATOR = 6; + TRANSACTION_VARIANT_UNKNOWN = 7; +} + +message Transaction { + TransactionVariant type = 1; + string hash = 2; + optional uint64 version = 3; // nil for pending transactions + optional bool success = 4; // nil for pending/genesis transactions + bytes data = 5; // Raw transaction data +} + +// ========== SubmitTransaction ========== + +message SubmitTransactionRequest { + ModuleID receiver_module_id = 1; + bytes encoded_payload = 2; + optional GasConfig gas_config = 3; +} + +message SubmitTransactionReply { + TxStatus tx_status = 1; + string tx_hash = 2; + string tx_idempotency_key = 3; +} + +message GasConfig { + uint64 max_gas_amount = 1; // Maximum gas units willing to pay + uint64 gas_unit_price = 2; // Price per gas unit in octas +} + +// ========== WriteReport ========== + +message WriteReportRequest { + bytes receiver = 1; // 32-byte Aptos account address of the receiver module + optional GasConfig gas_config = 2; // optional gas configuration + sdk.v1alpha.ReportResponse report = 3; // signed report from consensus +} + +message WriteReportReply { + TxStatus tx_status = 1; + 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; +} + +// ========== Service ========== + +service Client { + option (tools.generator.v1alpha.capability) = { + mode: MODE_DON + capability_id: "aptos@1.0.0" + labels: { + // from https://github.com/smartcontractkit/chain-selectors/blob/main/selectors_aptos.yml + key: "ChainSelector" + value: { + uint64_label: { + defaults: [ + { + key: "aptos-mainnet" + value: 4741433654826277614 + }, + { + key: "aptos-testnet" + value: 743186221051783445 + } + ] + } + } + } + }; + + rpc WriteReport(WriteReportRequest) returns (WriteReportReply); +} +` + const blockchainEvmV1alphaClientEmbedded = `syntax = "proto3"; package capabilities.blockchain.evm.v1alpha; @@ -1595,6 +1799,10 @@ message Decimal { ` var allFiles = []*embeddedFile{ + { + name: "capabilities/blockchain/aptos/v1alpha/client.proto", + content: blockchainAptosV1alphaClientEmbedded, + }, { name: "capabilities/blockchain/evm/v1alpha/client.proto", content: blockchainEvmV1alphaClientEmbedded,