> ## Documentation Index
> Fetch the complete documentation index at: https://sequence-0fb8d9e6-codex-update-discord-invite.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Unreal Ecosystem Wallet Blockchain Interactions

> Ecosystem Wallet Documentation for Sequence's Unreal SDK.

## Sign messages

Sign messages on an external browser.

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-codex-update-discord-invite/FTpX4UAFpHQ_Qb4p/images/unreal/ecosystem/sign_message.png?fit=max&auto=format&n=FTpX4UAFpHQ_Qb4p&q=85&s=a690a53697ab018839576bbe4b000a3a" width="967" height="500" data-path="images/unreal/ecosystem/sign_message.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<bool> SuccessCallback = [OnSuccess](const bool& Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceWallet* Wallet = NewObject<USequenceWallet>();
    Wallet->SignMessage(TEXT("some text"), SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Transactions

### Get fee options

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-codex-update-discord-invite/FTpX4UAFpHQ_Qb4p/images/unreal/ecosystem/get_fee_options.png?fit=max&auto=format&n=FTpX4UAFpHQ_Qb4p&q=85&s=1741a6ce93a39d06d157e1f8c01c8c9d" width="1714" height="940" data-path="images/unreal/ecosystem/get_fee_options.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const FString To = TEXT("0x33985d320809E26274a72E03268c8a29927Bc6dA");
    const FString Value = TEXT("0");
    const FString FunctionSignature = TEXT("explicitEmit()");
    const TArray<FString> Values = { };

    UContractTransaction* Transaction = UContractTransaction::CreateContractTransaction(To, Value, FunctionSignature, Values);

    const TSuccessCallback<FFeeOptionsResponse> SuccessCallback = [OnSuccess](const FFeeOptionsResponse& Response) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceWallet* Wallet = NewObject<USequenceWallet>();
    Wallet->GetFeeOptions(Transaction, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

### Send transactions

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-codex-update-discord-invite/FTpX4UAFpHQ_Qb4p/images/unreal/ecosystem/send_transaction.png?fit=max&auto=format&n=FTpX4UAFpHQ_Qb4p&q=85&s=876b64d8be18627fb8ae2aed02b9750c" width="1714" height="940" data-path="images/unreal/ecosystem/send_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const FString To = TEXT("0x33985d320809E26274a72E03268c8a29927Bc6dA");
    const FString Value = TEXT("0");
    const FString FunctionSignature = TEXT("explicitEmit()");
    const TArray<FString> Values = { };

    UContractTransaction* Transaction = UContractTransaction::CreateContractTransaction(To, Value, FunctionSignature, Values);

    FFeeOption EmptyFee;

    const TSuccessCallback<FString> SuccessCallback = [OnSuccess](const FString& Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceWallet* Wallet = NewObject<USequenceWallet>();
    Wallet->SendTransaction(Transaction, EmptyFee, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

### Send transactions without Permissions

Send transactions on an external browser.

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-codex-update-discord-invite/FTpX4UAFpHQ_Qb4p/images/unreal/ecosystem/transaction_without_permissions.png?fit=max&auto=format&n=FTpX4UAFpHQ_Qb4p&q=85&s=dcf049a49c691300cb1d008960acc9f6" width="952" height="500" data-path="images/unreal/ecosystem/transaction_without_permissions.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const FString To = TEXT("0x33985d320809E26274a72E03268c8a29927Bc6dA");
    const FString Value = TEXT("0");
    const FString FunctionSignature = TEXT("explicitEmit()");
    const TArray<FString> Values = { };

    UContractTransaction* Transaction = UContractTransaction::CreateContractTransaction(To, Value, FunctionSignature, Values);

    const TSuccessCallback<FString> SuccessCallback = [OnSuccess](const FString& Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceWallet* Wallet = NewObject<USequenceWallet>();
    Wallet->SendTransactionWithoutPermissions(Transaction, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Transaction Factory

### Create Contract Transaction

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-codex-update-discord-invite/FTpX4UAFpHQ_Qb4p/images/unreal/ecosystem/create_contract_transaction.png?fit=max&auto=format&n=FTpX4UAFpHQ_Qb4p&q=85&s=63a5a33bb0c916e278cb478832df076b" width="1480" height="758" data-path="images/unreal/ecosystem/create_contract_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const FString To = TEXT("0x33985d320809E26274a72E03268c8a29927Bc6dA");
    const FString Value = TEXT("0");
    const FString FunctionSignature = TEXT("explicitEmit()");
    const TArray<FString> Values = { };

    UContractTransaction* Transaction = UContractTransaction::CreateContractTransaction(To, Value, FunctionSignature, Values);
    ```
  </Tab>
</Tabs>

### Create Call Data Transaction

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-codex-update-discord-invite/FTpX4UAFpHQ_Qb4p/images/unreal/ecosystem/create_call_data_transaction.png?fit=max&auto=format&n=FTpX4UAFpHQ_Qb4p&q=85&s=72ce065f864e3792eeb0ba8fe2bf82af" width="1480" height="758" data-path="images/unreal/ecosystem/create_call_data_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const FString To = TEXT("0x33985d320809E26274a72E03268c8a29927Bc6dA");
    const FString Value = TEXT("0");
    const FString Data = TEXT("0x00...");

    UCallDataTransaction* Transaction = UCallDataTransaction::CreateCallDataTransaction(To, Value, Data);
    ```
  </Tab>
</Tabs>

### Create Transaction Batch

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-codex-update-discord-invite/FTpX4UAFpHQ_Qb4p/images/unreal/ecosystem/create_transaction_batch.png?fit=max&auto=format&n=FTpX4UAFpHQ_Qb4p&q=85&s=25d6a65a5fc0b0a41205a4a0de9b0eeb" width="1480" height="758" data-path="images/unreal/ecosystem/create_transaction_batch.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    TArray<TScriptInterface<ISeqTransactionBase>> Transactions;
    Transactions.Add(UCallDataTransaction::CreateCallDataTransaction("0x123...", "0", "0x00.."));

    UTransactionBatch* Transaction = UTransactionBatch::CreateTransactionBatch(To, Value, Data);
    ```
  </Tab>
</Tabs>
