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]) {
final addressData = await sub.sdk.api.keyring.addressFromMnemonic(
sub.ss58,
sub.currencyParameters['ss58']!,
cryptoType: CryptoType.sr25519,
mnemonic: generatedMnemonic!,
derivePath: '//$derivationNbr');
@ -435,7 +435,7 @@ class GenerateWalletsProvider with ChangeNotifier {
}
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!);
final balance = await sub.getBalance(addressData.address!).timeout(

View File

@ -29,7 +29,8 @@ class SubstrateSdk with ChangeNotifier {
bool isLoadingEndpoint = false;
String debugConnection = '';
String transactionStatus = '';
int ss58 = 42;
final int initSs58 = 42;
Map<String, int> currencyParameters = {};
/////////////////////////////////////
////////// 1: API METHODS ///////////
@ -66,6 +67,11 @@ class SubstrateSdk with ChangeNotifier {
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() {
return TxSenderData(
keyring.current.address,
@ -108,12 +114,6 @@ class SubstrateSdk with ChangeNotifier {
return 0;
}
Future<Map<String, dynamic>> getParameters() async {
final currencyParameters =
await getStorage('parameters.parametersStorage()') ?? {};
return currencyParameters;
}
Future<bool> hasAccountConsumers(String address) async {
final accountInfo = await getStorage('system.account("$address")');
final consumers = accountInfo['consumers'];
@ -136,6 +136,8 @@ class SubstrateSdk with ChangeNotifier {
// }
Future<Map<String, double>> getBalance(String address) async {
// log.d('currencyParameters: $currencyParameters');
if (!nodeConnected) {
return {
'transferableBalance': 0,
@ -202,17 +204,6 @@ class SubstrateSdk with ChangeNotifier {
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 {
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 //////
@ -276,8 +292,8 @@ class SubstrateSdk with ChangeNotifier {
Future<void> initApi() async {
sdkLoading = true;
await keyring.init([ss58]);
keyring.setSS58(ss58);
await keyring.init([initSs58]);
keyring.setSS58(initSs58);
await sdk.init(keyring);
sdkReady = true;
@ -356,7 +372,7 @@ class SubstrateSdk with ChangeNotifier {
final n = NetworkParams();
n.name = currencyName;
n.endpoint = endpoint;
n.ss58 = ss58;
n.ss58 = currencyParameters['ss58'] ?? initSs58;
node.add(n);
}
return node;
@ -366,7 +382,7 @@ class SubstrateSdk with ChangeNotifier {
final nodeParams = NetworkParams();
nodeParams.name = currencyName;
nodeParams.endpoint = configBox.get('customEndpoint');
nodeParams.ss58 = ss58;
nodeParams.ss58 = currencyParameters['ss58'] ?? initSs58;
return nodeParams;
}
@ -476,7 +492,8 @@ class SubstrateSdk with ChangeNotifier {
}
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!;
return gen.mnemonic!;
@ -654,7 +671,8 @@ class SubstrateSdk with ChangeNotifier {
String? rawParams;
final toCerts = await getCerts(toAddress);
final currencyParameters = await getParameters();
// log.d('debug: ${currencyParameters['minCertForMembership']}');
if (toIdtyStatus == 'noid') {
txInfo = TxInfoData(
@ -665,7 +683,7 @@ class SubstrateSdk with ChangeNotifier {
txOptions = [toAddress];
} else if (toIdtyStatus == 'Validated' ||
toIdtyStatus == 'ConfirmedByOwner') {
if (toCerts[0] >= currencyParameters['wotMinCertForMembership'] &&
if (toCerts[0] >= currencyParameters['minCertForMembership']! - 1 &&
toIdtyStatus != 'Validated') {
log.i('Batch cert and membership validation');
txInfo = TxInfoData(

View File

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