# GRPC Transaction building

**URL:** <https://forums.sui.io/t/grpc-transaction-building/49264>\
**Category:** General\
**Tags:** sdk\
**Created:** [April 15, 2026, 3:19am UTC](https://forums.sui.io/t/grpc-transaction-building/49264 "2026-04-15T03:19:22Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![felix11](https://avatars.discourse-cdn.com/v4/letter/f/b77776/32.png) [@felix11](https://forums.sui.io/u/felix11)\
**Post date:** [April 15, 2026, 3:19am UTC](https://forums.sui.io/t/grpc-transaction-building/49264/1 "2026-04-15T03:19:22Z")

</div>

Can anyone give me an example of how we can execute transaction using GRPC in rust? I’m stuggling to create the Transaction object which is taken as input in GRPC transaction execution method.

---

<div class="post-metadata">

**Author:** ![tanakarei\_0416](https://dub1.discourse-cdn.com/sui/user_avatar/forums.sui.io/tanakarei_0416/32/31701_2.png) [@tanakarei\_0416](https://forums.sui.io/u/tanakarei_0416)\
**Post date:** [April 17, 2026, 7:27am UTC](https://forums.sui.io/t/grpc-transaction-building/49264/2 "2026-04-17T07:27:27Z")

</div>

Do you know Sui’s Full Node gRPC API?  
It’s one of the most common cases where GRPC call takes Transaction protobuf message as input in the Rust ecosystem. Please check from Sui’s “sui/rpc/v2/transaction.proto”.  
Please use the sui-rust-sdk. It has native GRPC support.  
Let’s communicate together for the future.  
i’m a smart contract and DeAI engineer with 7+ years.

---

<div class="post-metadata">

**Author:** ![terranweb3](https://dub1.discourse-cdn.com/sui/user_avatar/forums.sui.io/terranweb3/32/31715_2.png) [@terranweb3](https://forums.sui.io/u/terranweb3)\
**Post date:** [June 23, 2026, 3:08pm UTC](https://forums.sui.io/t/grpc-transaction-building/49264/3 "2026-06-23T15:08:39Z")

</div>

The main thing I would avoid is manually constructing every protobuf field by hand. The gRPC `Transaction` message is the wire format; for Rust code, prefer building/signing a normal Sui transaction with the Rust SDK crates, then pass that transaction plus signatures into `ExecuteTransactionRequest`.

For current Sui Rust gRPC work, look at the `sui-rust-sdk` repository and its split crates:

- `sui-sdk-types`: core Sui transaction/object/signature types.
- `sui-crypto`: signing utilities.
- `sui-rpc`: gRPC client/protobuf bindings.
- `sui-transaction-builder`: transaction/PTB construction helpers.

The gRPC execution request expects:

- `transaction`: the transaction to execute.
- `signatures`: user signatures authorizing that transaction.
- optional `read_mask`: fields to return, such as effects/status/checkpoint.

So the safer pattern is:

1. Build the PTB/transaction using Sui Rust transaction types or builder helpers.
2. Set sender, gas price, gas budget, expiration, and gas payment correctly.
3. Sign the transaction bytes/data with the sender key.
4. Convert/encode it into the gRPC `Transaction` representation expected by your `sui-rpc` version.
5. Submit it through `TransactionExecutionService.ExecuteTransaction`.

I would not rely on a hand-written protobuf struct unless you are already mirroring the exact BCS/proto layout for your SDK version. The exact Rust imports and helper names are version-sensitive, so check the examples/docs for the specific `sui-rust-sdk` version you are using.

Also make sure you are connecting to a real gRPC endpoint. JSON-RPC and gRPC are different APIs; pointing a gRPC client at a JSON-RPC endpoint can produce misleading errors.

References:

- [GitHub - MystenLabs/sui-rust-sdk · GitHub](https://github.com/MystenLabs/sui-rust-sdk)
- [Sui Full Node gRPC Methods | Sui Documentation](https://docs.sui.io/references/fullnode-protocol)
- [Sui Full Node gRPC Message Definitions | Sui Documentation](https://docs.sui.io/references/fullnode-protocol-messages)
