Y a il un moyen actuellement de checker si une adresse est active ou non dans le storage ?
Je veux dire pas juste l’identité, mais une address est enregistré en blockchain ?
Super !
Est-ce que je peux batch ce genre de requête sur le storage pour récupérer le data.randomID
de 30 address en une seul et même requête par exemple ?
Je suppose que c’est au niveau de la lib JS que ça se joue ?
Oui le serveur RPC supporte les batchs, par contre c’est à toi de trouver comment envoyer un batch de requêtes avec ta lib
@poka tu peux aussi requeter toute une sous-partie du storage niveau requête RPC, avec la méthode state_getKeys(prefix)
où state_getKeysPaged(prefix, count, startKey?)
, ce sera plus performant qu’un batch RPC, can c’est une seule requête et donc une seule lecture en BD.
Peut-être que ta lib expose un moyen de faire ça, sinon faut l’ajouter, où taper RPC toi-même directement.
prefix
correspond à quoi ici, tu as un exemple à me donner?
Tout ce que je trouve dans le code que j’ai au sujet du mot clé state_getKeys
c’est dans le code JS brut bindé dans Gecko:
getKeysPaged:{alias:["childstate_getKeysPagedAt"],description:"Returns the keys with prefix from a child
storage with pagination support",params:[{name:"childKey",
type:"PrefixedStorageKey"},{
name:"prefix",type:"StorageKey"},{name:"count",type:"u32"},{
name:"startKey",type:"StorageKey",isOptional:!0},{
name:"at",type:"Hash",isHistoric:!0,isOptional:!0}],type:"Vec<StorageKey>"
}
Mais je n’ai pas l’impression que le SDK polkawallet ne bind quoi que ce soit à ce sujet …
Actuellement voilà tout petit bout de code que j’utilise pour vérifier si un compte existe ou non par exemple:
Future<bool> isAccountExit(String address) async {
final _accountInfo = await sdk.webView!
.evalJavascript('api.query.system.account("$address")');
final _randomId = _accountInfo['data']['randomId'];
return _randomId == null ? false : true;
}
Je ne vois rien qui pourrait remplacer evalJavascript
dans le webView
concernant des state_getKeys
.
Peut être qu’il va falloir que je fasse une feature request ou que je m’y colle, le mec est tout seul sur ce SDK, pas très enclin à discuter et bosse en ce moment sur les smart contract etherium visiblement:
A creuser, mais ce serait plus aux dev JS de m’aider là dessus.
À ce que j’ai expliqué dans ma présentation aux RML, et à “l’encoded sotrage key” que tu voit dans polkadotjs.
Bon je crois que je vais faire une requête par address pour le moment, et limiter à 10 address scannés en même temps lors de l’import d’une phrase de restauration pour le moment, je verrai pour le state_getKeys
plus tard.