def verify(block): print('BRIGHTID') db = ArangoClient(hosts=config.ARANGO_SERVER).db('_system') verifieds = db.aql.execute(''' FOR v in verifications FILTER v.name == 'SeedConnected' AND v.rank > 0 AND v.block == @block RETURN v.user ''', bind_vars={'block': block}) batch_db = db.begin_batch_execution(return_result=True) verifications = batch_db.collection('verifications') for i, verified in enumerate(verifieds): verifications.insert({ 'name': 'BrightID', 'user': verified, 'block': block, 'timestamp': int(time.time() * 1000), 'hash': utils.hash('BrightID', verified) }) if i % 1000 == 0: batch_db.commit() batch_db = db.begin_batch_execution(return_result=True) verifications = batch_db.collection('verifications') batch_db.commit() verifiedCount = db['verifications'].find({ 'name': 'BrightID', 'block': block }).count() print(f'verifieds: {verifiedCount}\n')
def verify(block): print('Update verifications for apps') db = ArangoClient(hosts=config.ARANGO_SERVER).db('_system') parser = Parser() apps = { app["_key"]: app['verification'] for app in db['apps'] if app.get('verification') } batch_db = db.begin_batch_execution(return_result=True) batch_col = batch_db.collection('verifications') counter = 0 for user in db['users']: verifications = {} for v in db['verifications'].find({ 'block': block, 'user': user['_key'] }): verifications[v['name']] = True for k in v: if k in ['_key', '_id', '_rev', 'user', 'name']: continue verifications[f'{v["name"]}.{k}'] = v[k] for app in apps: try: expr = parser.parse(apps[app]) variables = expr.variables() verifications.update( {k: False for k in variables if k not in verifications}) verified = expr.evaluate(verifications) except: print('invalid verification expression') continue if verified: batch_col.insert({ 'app': True, 'name': app, 'user': user['_key'], 'block': block, 'timestamp': int(time.time() * 1000) }) counter += 1 if counter % 1000 == 0: batch_db.commit() batch_db = db.begin_batch_execution(return_result=True) batch_col = batch_db.collection('verifications') batch_db.commit()
def verify(block): print('SOCIAL RECOVERY SETUP') db = ArangoClient(hosts=config.ARANGO_SERVER).db('_system') snapshot_db = ArangoClient(hosts=config.ARANGO_SERVER).db('snapshot') verifieds = snapshot_db.aql.execute(''' FOR u IN users LET recoveryConnections = LENGTH( FOR c IN connections FILTER c._from == u._id AND c.level == 'recovery' RETURN c ) FILTER recoveryConnections > 2 RETURN u._key ''') batch_db = db.begin_batch_execution(return_result=True) verifications = batch_db.collection('verifications') for i, verified in enumerate(verifieds): verifications.insert({ 'name': 'SocialRecoverySetup', 'user': verified, 'block': block, 'timestamp': int(time.time() * 1000), 'hash': utils.hash('SocialRecoverySetup', verified) }) if i % 1000 == 0: batch_db.commit() batch_db = db.begin_batch_execution(return_result=True) verifications = batch_db.collection('verifications') batch_db.commit() verifiedCount = db['verifications'].find({ 'name': 'SocialRecoverySetup', 'block': block }).count() print(f'verifieds: {verifiedCount}\n')