# Send Transaction

{% hint style="info" %}
Make sure you[ initialize Blocto SDK](/~/changes/lJG0Ie43hDo96Dq7BMVa/blocto-sdk/unity-sdk/solana/getting-started.md) first
{% endhint %}

Once your app is connected to Blocto wallet, it can send transactions on behalf of the user, with the user's permission.

In order to send a transaction, the app must:

* Create an unsigned transaction or transactions.
* Have it be signed by the user's Blocto wallet.
* Send it with Blocto custom JSON-RPC.

For more information about the transactions on Solana, it is recommended to check out the [solnet](https://github.com/bmresearch/Solnet) as well as the [official Solana docs](https://docs.solana.com/developing/programming-model/transactions).

### **Plain Transaction**

For plain transactions (no dApp-side signing involved), you can just create transaction with [solnet](https://github.com/bmresearch/Solnet) and sign-and-send the transaction with `SignAndSendTransaction` method.

```csharp
var address = "SOLANA_ADDRESS";
var transaction = new Transaction();

... // transaction manipulation

bloctoWalletProvider.SignAndSendTransaction(address, transaction, txhash => {                                                                     
                                                                        Debug.Log($"Tx hash: {txhash}");
                                                                  }); 
```

### **Partial Sign Transaction**

For transactions involving dApp-side signing, first, you need to convert the transaction to our wallet-compatible format by calling `ConvertToProgramWalletTransaction`, and sign the instructions with your keys, then sign and send the partial-signed transaction with our `SignAndSendTransaction` method.

```csharp
var address = "SOLANA_ADDRESS";
var wallet = new Wallet(_mnemonicWords);
var signer = wallet.GetAccount(1);

var transaction = new Transaction();
... // transaction manipulation

var convertedTransaction = bloctoWalletProvider.ConvertToProgramWalletTransaction(address, transaction);

convertedTransaction.PartialSign(new List<Account>{ signer });
bloctoWalletProvider.SignAndSendTransaction(address, convertedTransaction, txhash => {
                                                                                 Debug.Log($"Tx hash: {txhash}");
                                                                           });
```

\\


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.blocto.app/~/changes/lJG0Ie43hDo96Dq7BMVa/blocto-sdk/unity-sdk/solana/send-transaction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
