private void SavePasswordButtonClicked()
        {
            settingsPopupAnimator.ShowLoadingIcon(saveButton.gameObject, loadingIcon, true);

            var promise = (dynamicDataCache.GetData("pass") as ProtectedString)?.CreateDisposableData();

            promise.OnSuccess(disposableData =>
                              walletDecryptor.DecryptWallet(walletInfo, (byte[])disposableData.ByteValue.Clone(), seed =>
                                                            walletEncryptor.EncryptWallet(seed, confirmPasswordField.InputFieldBytes, OnNewWalletEncrypted)));
        }
    public void SignTransaction(string walletAddress, string path, byte[] encryptedPasswordBytes, Action <TransactionSignedUnityRequest> onRequestReceived)
    {
        var plainTextBytes = passwordEncryptor.Decrypt(encryptedPasswordBytes);

        walletDecryptor.DecryptWallet(hopeWalletInfoManager.GetWalletInfo(walletAddress), plainTextBytes, seed =>
        {
            TransactionSignedUnityRequest request = new TransactionSignedUnityRequest(
                new Wallet(seed, path).GetAccount(walletAddress),
                ethereumNetworkManager.CurrentNetwork.NetworkUrl);

            MainThreadExecutor.QueueAction(() => onRequestReceived?.Invoke(request));
            ClearData(seed, plainTextBytes);
        });
    }