def sequencing_hook(self, db_session, parent_block_data, parent_sequenced_block_data): for account_audit in AccountAudit.query(db_session).filter_by(block_id=self.block.id).order_by('event_idx'): try: account = Account.query(db_session).filter_by(id=account_audit.account_id).one() if account_audit.type_id == ACCOUNT_AUDIT_TYPE_REAPED: account.count_reaped += 1 account.is_reaped = True elif account_audit.type_id == ACCOUNT_AUDIT_TYPE_NEW: account.is_reaped = False account.updated_at_block = self.block.id except NoResultFound: account = Account( id=account_audit.account_id, address=ss58_encode(account_audit.account_id, SUBSTRATE_ADDRESS_TYPE), created_at_block=self.block.id, updated_at_block=self.block.id, balance=0 ) # If reaped but does not exist, create new account for now if account_audit.type_id != ACCOUNT_AUDIT_TYPE_NEW: account.is_reaped = True account.count_reaped = 1 account.save(db_session)
def sequencing_hook(self, db_session, parent_block_data, parent_sequenced_block_data): for account_audit in AccountAudit.query(db_session).filter_by( block_id=self.block.id).order_by('event_idx'): try: account = Account.query(db_session).filter_by( id=account_audit.account_id).one() if account_audit.type_id == ACCOUNT_AUDIT_TYPE_REAPED: account.count_reaped += 1 account.is_reaped = True elif account_audit.type_id == ACCOUNT_AUDIT_TYPE_NEW: account.is_reaped = False account.updated_at_block = self.block.id except NoResultFound: account = Account(id=account_audit.account_id, address=bech32.encode( HRP, bytes().fromhex( account_audit.account_id)), created_at_block=self.block.id, updated_at_block=self.block.id, balance=0) # If reaped but does not exist, create new account for now if account_audit.type_id != ACCOUNT_AUDIT_TYPE_NEW: account.is_reaped = True account.count_reaped = 1 account.shard_num = random.randint(1, 10000) account.save(db_session)
def accumulation_hook(self, db_session): # Check event requirements if len(self.event.attributes) == 2 and \ self.event.attributes[0]['type'] == 'AccountId' and self.event.attributes[1]['type'] == 'Balance': account_id = self.event.attributes[0]['value'].replace('0x', '') balance = self.event.attributes[1]['value'] self.block._accounts_new.append(account_id) account_audit = AccountAudit( account_id=account_id, block_id=self.event.block_id, extrinsic_idx=self.event.extrinsic_idx, event_idx=self.event.event_idx, type_id=ACCOUNT_AUDIT_TYPE_NEW) account_total = Account.query(db_session).filter_by( id=account_audit.account_id).count() #print('NewAccountEventProcessor get account_total {} =='.format(account_total)) if account_total <= 0: account = Account(id=account_audit.account_id, address=bech32.encode( HRP, bytes().fromhex( account_audit.account_id)), created_at_block=account_audit.block_id, updated_at_block=account_audit.block_id, balance=0) if account_audit.type_id == ACCOUNT_AUDIT_TYPE_REAPED: account.count_reaped += 1 account.is_reaped = True elif account_audit.type_id == ACCOUNT_AUDIT_TYPE_NEW: account.is_reaped = False account.updated_at_block = account_audit.block_id # If reaped but does not exist, create new account for now if account_audit.type_id != ACCOUNT_AUDIT_TYPE_NEW: account.is_reaped = True account.count_reaped = 1 account.shard_num = 0 #print('NewAccountEventProcessor start add account {} =='.format(account)) account.save(db_session) # db_session.commit() account_audit.save(db_session)
def sequencing_hook(self, db_session, parent_block_data, parent_sequenced_block_data): for account_audit in AccountAudit.query(db_session).filter_by(block_id=self.block.id).order_by('event_idx'): try: account = Account.query(db_session).filter_by(id=account_audit.account_id).one() if account_audit.type_id == ACCOUNT_AUDIT_TYPE_REAPED: account.count_reaped += 1 account.is_reaped = True elif account_audit.type_id == ACCOUNT_AUDIT_TYPE_NEW: account.is_reaped = False account.updated_at_block = self.block.id except NoResultFound: account = Account( id=account_audit.account_id, address=ss58_encode(account_audit.account_id, SUBSTRATE_ADDRESS_TYPE), created_at_block=self.block.id, updated_at_block=self.block.id, balance=0 ) ### account balance substrate = SubstrateInterface(SUBSTRATE_RPC_URL) balance = substrate.get_storage( block_hash=None, module='Balances', function='FreeBalance', params=account_audit.account_id, return_scale_type='Balance', hasher='Blake2_256') or 0 account.balance = balance # If reaped but does not exist, create new account for now if account_audit.type_id != ACCOUNT_AUDIT_TYPE_NEW: account.is_reaped = True account.count_reaped = 1 account.save(db_session)