get onchain consts; fix batch validate membership

This commit is contained in:
poka 2022-08-17 17:50:05 +02:00
parent e8acb59f3e
commit 0687ae072f
3 changed files with 47 additions and 28 deletions

View File

@ -390,7 +390,7 @@ class GenerateWalletsProvider with ChangeNotifier {
for (var derivationNbr in [for (var i = 0; i < numberScan; i += 1) i]) { for (var derivationNbr in [for (var i = 0; i < numberScan; i += 1) i]) {
final addressData = await sub.sdk.api.keyring.addressFromMnemonic( final addressData = await sub.sdk.api.keyring.addressFromMnemonic(
sub.ss58, sub.currencyParameters['ss58']!,
cryptoType: CryptoType.sr25519, cryptoType: CryptoType.sr25519,
mnemonic: generatedMnemonic!, mnemonic: generatedMnemonic!,
derivePath: '//$derivationNbr'); derivePath: '//$derivationNbr');
@ -435,7 +435,7 @@ class GenerateWalletsProvider with ChangeNotifier {
} }
Future<bool> scanRootBalance(SubstrateSdk sub, int currentChestNumber) async { Future<bool> scanRootBalance(SubstrateSdk sub, int currentChestNumber) async {
final addressData = await sub.sdk.api.keyring.addressFromMnemonic(sub.ss58, final addressData = await sub.sdk.api.keyring.addressFromMnemonic(sub.currencyParameters['ss58']!,
cryptoType: CryptoType.sr25519, mnemonic: generatedMnemonic!); cryptoType: CryptoType.sr25519, mnemonic: generatedMnemonic!);
final balance = await sub.getBalance(addressData.address!).timeout( final balance = await sub.getBalance(addressData.address!).timeout(

View File

@ -29,7 +29,8 @@ class SubstrateSdk with ChangeNotifier {
bool isLoadingEndpoint = false; bool isLoadingEndpoint = false;
String debugConnection = ''; String debugConnection = '';
String transactionStatus = ''; String transactionStatus = '';
int ss58 = 42; final int initSs58 = 42;
Map<String, int> currencyParameters = {};
///////////////////////////////////// /////////////////////////////////////
////////// 1: API METHODS /////////// ////////// 1: API METHODS ///////////
@ -66,6 +67,11 @@ class SubstrateSdk with ChangeNotifier {
return await sdk.webView!.evalJavascript('api.query.$call'); return await sdk.webView!.evalJavascript('api.query.$call');
} }
Future getStorageConst(String call) async {
return (await sdk.webView!
.evalJavascript('api.consts.$call', wrapPromise: false))[0];
}
TxSenderData _setSender() { TxSenderData _setSender() {
return TxSenderData( return TxSenderData(
keyring.current.address, keyring.current.address,
@ -108,12 +114,6 @@ class SubstrateSdk with ChangeNotifier {
return 0; return 0;
} }
Future<Map<String, dynamic>> getParameters() async {
final currencyParameters =
await getStorage('parameters.parametersStorage()') ?? {};
return currencyParameters;
}
Future<bool> hasAccountConsumers(String address) async { Future<bool> hasAccountConsumers(String address) async {
final accountInfo = await getStorage('system.account("$address")'); final accountInfo = await getStorage('system.account("$address")');
final consumers = accountInfo['consumers']; final consumers = accountInfo['consumers'];
@ -136,6 +136,8 @@ class SubstrateSdk with ChangeNotifier {
// } // }
Future<Map<String, double>> getBalance(String address) async { Future<Map<String, double>> getBalance(String address) async {
// log.d('currencyParameters: $currencyParameters');
if (!nodeConnected) { if (!nodeConnected) {
return { return {
'transferableBalance': 0, 'transferableBalance': 0,
@ -202,17 +204,6 @@ class SubstrateSdk with ChangeNotifier {
return totalAmount; return totalAmount;
} }
Future<int> getSs58Prefix() async {
final List res = await sdk.webView!.evalJavascript(
'api.consts.system.ss58Prefix.words',
wrapPromise: false) ??
[42];
ss58 = res[0];
log.d(ss58);
return ss58;
}
Future<bool> isMemberGet(String address) async { Future<bool> isMemberGet(String address) async {
return await idtyStatus(address) == 'Validated'; return await idtyStatus(address) == 'Validated';
} }
@ -268,7 +259,32 @@ class SubstrateSdk with ChangeNotifier {
} }
} }
Future getCurencyName() async {} // Future addressToPubkey(String address) async {
// await sdk.api.account.decodeAddress([address]);
// }
// Future pubkeyToAddress(String pubkey) async {
// await sdk.api.account.encodeAddress([pubkey]);
// }
Future initCurrencyParameters() async {
currencyParameters['ss58'] =
await getStorageConst('system.ss58Prefix.words');
currencyParameters['minCertForMembership'] =
await getStorageConst('wot.minCertForMembership.words');
currencyParameters['newAccountPrice'] =
await getStorageConst('account.newAccountPrice.words');
currencyParameters['existentialDeposit'] =
await getStorageConst('balances.existentialDeposit.words');
currencyParameters['certPeriod'] =
await getStorageConst('cert.certPeriod.words');
currencyParameters['certMaxByIssuer'] =
await getStorageConst('cert.maxByIssuer.words');
currencyParameters['certValidityPeriod'] =
await getStorageConst('cert.validityPeriod.words');
log.i('currencyParameters: $currencyParameters');
}
///////////////////////////////////// /////////////////////////////////////
////// 3: SUBSTRATE CONNECTION ////// ////// 3: SUBSTRATE CONNECTION //////
@ -276,8 +292,8 @@ class SubstrateSdk with ChangeNotifier {
Future<void> initApi() async { Future<void> initApi() async {
sdkLoading = true; sdkLoading = true;
await keyring.init([ss58]); await keyring.init([initSs58]);
keyring.setSS58(ss58); keyring.setSS58(initSs58);
await sdk.init(keyring); await sdk.init(keyring);
sdkReady = true; sdkReady = true;
@ -356,7 +372,7 @@ class SubstrateSdk with ChangeNotifier {
final n = NetworkParams(); final n = NetworkParams();
n.name = currencyName; n.name = currencyName;
n.endpoint = endpoint; n.endpoint = endpoint;
n.ss58 = ss58; n.ss58 = currencyParameters['ss58'] ?? initSs58;
node.add(n); node.add(n);
} }
return node; return node;
@ -366,7 +382,7 @@ class SubstrateSdk with ChangeNotifier {
final nodeParams = NetworkParams(); final nodeParams = NetworkParams();
nodeParams.name = currencyName; nodeParams.name = currencyName;
nodeParams.endpoint = configBox.get('customEndpoint'); nodeParams.endpoint = configBox.get('customEndpoint');
nodeParams.ss58 = ss58; nodeParams.ss58 = currencyParameters['ss58'] ?? initSs58;
return nodeParams; return nodeParams;
} }
@ -476,7 +492,8 @@ class SubstrateSdk with ChangeNotifier {
} }
Future<String> generateMnemonic({String lang = appLang}) async { Future<String> generateMnemonic({String lang = appLang}) async {
final gen = await sdk.api.keyring.generateMnemonic(ss58); final gen = await sdk.api.keyring
.generateMnemonic(currencyParameters['ss58'] ?? initSs58);
generatedMnemonic = gen.mnemonic!; generatedMnemonic = gen.mnemonic!;
return gen.mnemonic!; return gen.mnemonic!;
@ -654,7 +671,8 @@ class SubstrateSdk with ChangeNotifier {
String? rawParams; String? rawParams;
final toCerts = await getCerts(toAddress); final toCerts = await getCerts(toAddress);
final currencyParameters = await getParameters();
// log.d('debug: ${currencyParameters['minCertForMembership']}');
if (toIdtyStatus == 'noid') { if (toIdtyStatus == 'noid') {
txInfo = TxInfoData( txInfo = TxInfoData(
@ -665,7 +683,7 @@ class SubstrateSdk with ChangeNotifier {
txOptions = [toAddress]; txOptions = [toAddress];
} else if (toIdtyStatus == 'Validated' || } else if (toIdtyStatus == 'Validated' ||
toIdtyStatus == 'ConfirmedByOwner') { toIdtyStatus == 'ConfirmedByOwner') {
if (toCerts[0] >= currencyParameters['wotMinCertForMembership'] && if (toCerts[0] >= currencyParameters['minCertForMembership']! - 1 &&
toIdtyStatus != 'Validated') { toIdtyStatus != 'Validated') {
log.i('Batch cert and membership validation'); log.i('Batch cert and membership validation');
txInfo = TxInfoData( txInfo = TxInfoData(

View File

@ -167,6 +167,7 @@ class HomeScreen extends StatelessWidget {
sub.reload(); sub.reload();
} else { } else {
await sub.connectNode(ctx); await sub.connectNode(ctx);
await sub.initCurrencyParameters();
} }
}); });
} }