> ## Documentation Index
> Fetch the complete documentation index at: https://sequence-0fb8d9e6-6461-checkout-updates.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-6461-checkout-updates/4PRtyLeWilf2Q8cz/images/unreal/ecosystem/sign_message.png?fit=max&auto=format&n=4PRtyLeWilf2Q8cz&q=85&s=83ef4dead6ee51a0b6757f4ef6314cbe" 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-6461-checkout-updates/4PRtyLeWilf2Q8cz/images/unreal/ecosystem/get_fee_options.png?fit=max&auto=format&n=4PRtyLeWilf2Q8cz&q=85&s=b655839d0857fc94208ddb1b411e17b0" 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-6461-checkout-updates/4PRtyLeWilf2Q8cz/images/unreal/ecosystem/send_transaction.png?fit=max&auto=format&n=4PRtyLeWilf2Q8cz&q=85&s=ca8c375846dd9f510f6514b77c8c54b0" 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-6461-checkout-updates/4PRtyLeWilf2Q8cz/images/unreal/ecosystem/transaction_without_permissions.png?fit=max&auto=format&n=4PRtyLeWilf2Q8cz&q=85&s=f02c28df81a736e7c1994ee77e5775dc" 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-6461-checkout-updates/4PRtyLeWilf2Q8cz/images/unreal/ecosystem/create_contract_transaction.png?fit=max&auto=format&n=4PRtyLeWilf2Q8cz&q=85&s=c64f0ad3d479bd4981eeae8914e6231e" 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-6461-checkout-updates/4PRtyLeWilf2Q8cz/images/unreal/ecosystem/create_call_data_transaction.png?fit=max&auto=format&n=4PRtyLeWilf2Q8cz&q=85&s=ebc1030b7d2abcb0b488ee87e3cc7362" 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-6461-checkout-updates/4PRtyLeWilf2Q8cz/images/unreal/ecosystem/create_transaction_batch.png?fit=max&auto=format&n=4PRtyLeWilf2Q8cz&q=85&s=5eee5ddd6320a147a41309a76e063d47" 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>
