mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2024-11-17 09:47:37 +00:00
fix balance error when opening existing wallet and add chainId for sending
This commit is contained in:
parent
f9ec370070
commit
5e67b5734c
1 changed files with 35 additions and 30 deletions
|
@ -63,10 +63,10 @@ class EthereumWallet extends CoinServiceAPI {
|
|||
late PriceAPI _priceAPI;
|
||||
final _prefs = Prefs.instance;
|
||||
final _client = Web3Client(
|
||||
"https://mainnet.infura.io/v3/22677300bf774e49a458b73313ee56ba",
|
||||
Client());
|
||||
"https://goerli.infura.io/v3/22677300bf774e49a458b73313ee56ba", Client());
|
||||
|
||||
late EthPrivateKey _credentials;
|
||||
int _chainId = 5; //5 for testnet and 1 for mainnet
|
||||
|
||||
EthereumWallet(
|
||||
{required String walletId,
|
||||
|
@ -107,6 +107,7 @@ class EthereumWallet extends CoinServiceAPI {
|
|||
@override
|
||||
Future<Decimal> get availableBalance async {
|
||||
EtherAmount ethBalance = await _client.getBalance(_credentials.address);
|
||||
print("THIS ETH BALANCE IS $ethBalance");
|
||||
return Decimal.parse(ethBalance.getValueInUnit(EtherUnit.ether).toString());
|
||||
}
|
||||
|
||||
|
@ -126,10 +127,8 @@ class EthereumWallet extends CoinServiceAPI {
|
|||
gasPrice: gasPrice,
|
||||
maxGas: 21000,
|
||||
value: EtherAmount.inWei(bigIntAmount));
|
||||
final transaction = await _client.sendTransaction(
|
||||
_credentials,
|
||||
tx,
|
||||
);
|
||||
final transaction =
|
||||
await _client.sendTransaction(_credentials, tx, chainId: _chainId);
|
||||
|
||||
Logging.instance.log("Generated TX IS $transaction", level: LogLevel.Info);
|
||||
return transaction;
|
||||
|
@ -195,6 +194,13 @@ class EthereumWallet extends CoinServiceAPI {
|
|||
|
||||
@override
|
||||
Future<void> initializeExisting() async {
|
||||
//First get mnemonic so we can initialize credentials
|
||||
final mnemonicString =
|
||||
await _secureStore.read(key: '${_walletId}_mnemonic');
|
||||
|
||||
_credentials =
|
||||
EthPrivateKey.fromHex(StringToHex.toHexString(mnemonicString));
|
||||
|
||||
Logging.instance.log("Opening existing ${coin.prettyName} wallet.",
|
||||
level: LogLevel.Info);
|
||||
|
||||
|
@ -215,15 +221,14 @@ class EthereumWallet extends CoinServiceAPI {
|
|||
Future<void> initializeNew() async {
|
||||
await _prefs.init();
|
||||
final String mnemonic = bip39.generateMnemonic(strength: 256);
|
||||
print("Mnemonic is $mnemonic");
|
||||
_credentials = EthPrivateKey.fromHex(StringToHex.toHexString(mnemonic));
|
||||
|
||||
final String password = generatePassword();
|
||||
var rng = Random.secure();
|
||||
Wallet wallet = Wallet.createNew(_credentials, password, rng);
|
||||
|
||||
await _secureStore.write(key: '${_walletId}_mnemonic', value: mnemonic);
|
||||
|
||||
//Store credentials in secure store
|
||||
await _secureStore.write(
|
||||
key: '${_walletId}_credentials', value: _credentials.toString());
|
||||
|
||||
await DB.instance
|
||||
.put<dynamic>(boxName: walletId, key: "id", value: _walletId);
|
||||
await DB.instance.put<dynamic>(
|
||||
|
@ -329,10 +334,6 @@ class EthereumWallet extends CoinServiceAPI {
|
|||
print("Mnemonic is $mnemonic");
|
||||
_credentials = EthPrivateKey.fromHex(StringToHex.toHexString(mnemonic));
|
||||
|
||||
final String password = generatePassword();
|
||||
var rng = Random.secure();
|
||||
Wallet wallet = Wallet.createNew(_credentials, password, rng);
|
||||
|
||||
await _secureStore.write(key: '${_walletId}_mnemonic', value: mnemonic);
|
||||
|
||||
await DB.instance
|
||||
|
@ -360,13 +361,13 @@ class EthereumWallet extends CoinServiceAPI {
|
|||
@override
|
||||
Future<void> refresh() async {
|
||||
print("CALLING REFRESH");
|
||||
if (refreshMutex) {
|
||||
Logging.instance.log("$walletId $walletName refreshMutex denied",
|
||||
level: LogLevel.Info);
|
||||
return;
|
||||
} else {
|
||||
refreshMutex = true;
|
||||
}
|
||||
// if (refreshMutex) {
|
||||
// Logging.instance.log("$walletId $walletName refreshMutex denied",
|
||||
// level: LogLevel.Info);
|
||||
// return;
|
||||
// } else {
|
||||
// refreshMutex = true;
|
||||
// }
|
||||
|
||||
print("SYNC STATUS IS ");
|
||||
final blockNumber = await _client.getBlockNumber();
|
||||
|
@ -385,6 +386,7 @@ class EthereumWallet extends CoinServiceAPI {
|
|||
GlobalEventBus.instance.fire(RefreshPercentChangedEvent(0.1, walletId));
|
||||
|
||||
final currentHeight = await chainHeight;
|
||||
print("CURRENT CHAIN HEIGHT IS $currentHeight");
|
||||
const storedHeight = 1; //await storedChainHeight;
|
||||
|
||||
Logging.instance
|
||||
|
@ -398,7 +400,7 @@ class EthereumWallet extends CoinServiceAPI {
|
|||
unawaited(updateStoredChainHeight(newHeight: currentHeight));
|
||||
}
|
||||
|
||||
final newTxData = _fetchTransactionData();
|
||||
final newTxData = await _fetchTransactionData();
|
||||
print("RETREIVED TX DATA IS $newTxData");
|
||||
GlobalEventBus.instance
|
||||
.fire(RefreshPercentChangedEvent(0.50, walletId));
|
||||
|
@ -482,17 +484,18 @@ class EthereumWallet extends CoinServiceAPI {
|
|||
String thisAddress = await currentReceivingAddress;
|
||||
int currentBlock = await chainHeight;
|
||||
var balance = await availableBalance;
|
||||
print("MY ADDRESS HERE IS $thisAddress");
|
||||
var n =
|
||||
await _client.getTransactionCount(EthereumAddress.fromHex(thisAddress));
|
||||
|
||||
for (var i = currentBlock; i >= 0 && (n > 0); --i) {
|
||||
for (int i = currentBlock;
|
||||
i >= 0 && (n > 0 || balance.toDouble() > 0.0);
|
||||
--i) {
|
||||
try {
|
||||
// print(StringToHex.toHexString(i.toString()))
|
||||
print(
|
||||
"BLOCK IS $i --------->>>>>>> ${StringToHex.toHexString(i.toString())}");
|
||||
print("BLOCK IS $i --------->>>>>>>");
|
||||
var block = await _client.getBlockInformation(
|
||||
blockNumber: StringToHex.toHexString(i.toString()),
|
||||
isContainFullObj: true);
|
||||
blockNumber: i.toString(), isContainFullObj: true);
|
||||
// var block = await _client.getBlockInformation()
|
||||
print(block);
|
||||
// if (block && block.t) {
|
||||
|
@ -500,7 +503,7 @@ class EthereumWallet extends CoinServiceAPI {
|
|||
// }
|
||||
|
||||
} catch (e, s) {
|
||||
print("Error getting transactions ${e.toString()}");
|
||||
print("Error getting transactions ${e.toString()} $s");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -508,7 +511,9 @@ class EthereumWallet extends CoinServiceAPI {
|
|||
print("THIS CURRECT BLOCK IS $currentBlock");
|
||||
print("THIS BALANCE IS $balance");
|
||||
print("THIS COUNT TRANSACTIONS IS $n");
|
||||
throw UnimplementedError();
|
||||
|
||||
return TransactionData();
|
||||
// throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
Loading…
Reference in a new issue