> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sequence.xyz/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/o-cdQA6Z--auxAAK/images/unreal/ecosystem/sign_message.png?fit=max&auto=format&n=o-cdQA6Z--auxAAK&q=85&s=ad7af10f96cefc3feb26ed67eee44c27" 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/o-cdQA6Z--auxAAK/images/unreal/ecosystem/get_fee_options.png?fit=max&auto=format&n=o-cdQA6Z--auxAAK&q=85&s=a1751e5cf5404891a8cedc6b00eb0c73" 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/o-cdQA6Z--auxAAK/images/unreal/ecosystem/send_transaction.png?fit=max&auto=format&n=o-cdQA6Z--auxAAK&q=85&s=c3f570971e9377869215228e30ccc04d" 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/o-cdQA6Z--auxAAK/images/unreal/ecosystem/transaction_without_permissions.png?fit=max&auto=format&n=o-cdQA6Z--auxAAK&q=85&s=a74f054e7a9881e30731086f39acc3ec" 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/ct8uSFDmXfsFOHay/images/unreal/ecosystem/create_contract_transaction.png?fit=max&auto=format&n=ct8uSFDmXfsFOHay&q=85&s=737f475fe241245691258522a38d8cd9" 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/ct8uSFDmXfsFOHay/images/unreal/ecosystem/create_call_data_transaction.png?fit=max&auto=format&n=ct8uSFDmXfsFOHay&q=85&s=f73a05d308816a4138950601fbcb88e4" 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/ct8uSFDmXfsFOHay/images/unreal/ecosystem/create_transaction_batch.png?fit=max&auto=format&n=ct8uSFDmXfsFOHay&q=85&s=a3f0287dafb0d056107051c5a32c8fa8" 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>
