def test_data_token_event_registered(alice_wallet, dtfactory_address, alice_ocean): """Tests that a token registration event is created and can be retrieved.""" dtfactory = DTFactory(dtfactory_address) dt_address = dtfactory.createToken( "foo_blob", "DT1", "DT1", to_base_18(1000.0), from_wallet=alice_wallet ) dt = DataToken(dtfactory.get_token_address(dt_address)) block = alice_ocean.web3.eth.blockNumber # with explicit address registered_event = dtfactory.get_token_registered_event( block - 1, block + 1, token_address=dt.address ) assert registered_event.args.tokenAddress == dt.address
def test_data_token_event_registered( web3, alice_wallet, dtfactory_address, alice_ocean ): """Tests that a token registration event is created and can be retrieved.""" dtfactory = DTFactory(web3, dtfactory_address) dt_address = dtfactory.createToken( "foo_blob", "DT1", "DT1", to_wei(1000), from_wallet=alice_wallet ) dt = DataToken(web3, dtfactory.get_token_address(dt_address)) block = alice_ocean.web3.eth.block_number # with explicit address block_confirmations = alice_ocean.config.block_confirmations.value registered_event = dtfactory.get_token_registered_event( block - (block_confirmations + 1), block, token_address=dt.address ) assert registered_event.args.tokenAddress == dt.address
def _get_all_liquidity_records(self, action, web3, pool_address, block_number=None, to_block=None, token_address=None, raw_result=True): action_to_fn = { 'join': 'get_join_logs', 'exit': 'get_exit_logs', 'swap': 'get_swap_logs' } current_block = to_block if to_block is not None else web3.eth.blockNumber pool = BPool(pool_address) dt_address = token_address or self.get_token_address( pool_address, pool) factory = DTFactory(get_dtfactory_address()) if block_number is None: block_number = factory.get_token_registered_event( 0, current_block, token_address=dt_address).blockNumber logs = getattr(pool, action_to_fn[action])(web3, block_number, current_block) if raw_result: return logs _all = [] for l in logs: if action == 'join': record = (l.args.caller, l.args.tokenIn, l.args.tokenAmountIn, 0, 0, l.blockNumber, l.transactionHash, 'join') elif action == 'exit': record = (l.args.caller, l.args.tokenOut, l.args.tokenAmountOut, 0, 0, l.blockNumber, l.transactionHash, 'exit') else: assert action == 'swap', f'Unknown pool action {action}' record = (l.args.caller, l.args.tokenIn, l.args.tokenAmountIn, l.args.tokenOut, l.args.tokenAmountOut, l.blockNumber, l.transactionHash, 'swap') _all.append(record) return _all
def search_exchange_by_data_token(self, data_token: str) -> List[AttributeDict]: dtfactory_address = get_dtfactory_address(self._config.address_file, web3=self._web3) dtfactory = DTFactory(self._web3, dtfactory_address) token_registered_log = dtfactory.get_token_registered_event( 0, self._web3.eth.block_number, data_token) assert (token_registered_log ), f"No token with '{data_token}' address was created before." from_block = token_registered_log.blockNumber fre = self._exchange_contract() filter_args = {"dataToken": data_token} logs = fre.get_event_logs( event_name="ExchangeCreated", from_block=from_block, to_block=self._web3.eth.block_number, filters=filter_args, ) return logs
def _get_all_liquidity_records( self, action, web3, pool_address, block_number=None, to_block=None, token_address=None, raw_result=True, ): action_to_fn = { "join": "get_join_logs", "exit": "get_exit_logs", "swap": "get_swap_logs", } current_block = to_block if to_block is not None else web3.eth.blockNumber pool = BPool(pool_address) dt_address = token_address or self.get_token_address( pool_address, pool) factory = DTFactory(get_dtfactory_address()) if block_number is None: block_number = factory.get_token_registered_event( 0, current_block, token_address=dt_address).blockNumber logs = getattr(pool, action_to_fn[action])(web3, block_number, current_block) if raw_result: return logs _all = [] for lg in logs: if action == "join": record = ( lg.args.caller, lg.args.tokenIn, lg.args.tokenAmountIn, 0, 0, lg.blockNumber, lg.transactionHash, "join", ) elif action == "exit": record = ( lg.args.caller, lg.args.tokenOut, lg.args.tokenAmountOut, 0, 0, lg.blockNumber, lg.transactionHash, "exit", ) else: assert action == "swap", f"Unknown pool action {action}" record = ( lg.args.caller, lg.args.tokenIn, lg.args.tokenAmountIn, lg.args.tokenOut, lg.args.tokenAmountOut, lg.blockNumber, lg.transactionHash, "swap", ) _all.append(record) return _all
def _get_all_liquidity_records( self, action, pool_address, block_number=None, to_block=None, token_address=None, raw_result=True, ): current_block = to_block if to_block is not None else self.web3.eth.block_number pool = BPool(self.web3, pool_address) dt_address = token_address or self.get_token_address(pool_address, pool) factory = DTFactory(self.web3, self.dtfactory_address) if block_number is None: block_number = factory.get_token_registered_event( 0, current_block, token_address=dt_address ).blockNumber log_args = (block_number, current_block) if action == "join": logs = pool.get_join_logs(*log_args) elif action == "exit": logs = pool.get_exit_logs(*log_args) elif action == "swap": logs = pool.get_swap_logs(*log_args) else: raise ValueError( f"Invalid action: {action}. Expected 'join', 'exit', or 'swap'." ) if raw_result: return logs _all = [] for lg in logs: if action == "join": record = ( lg.args.caller, lg.args.tokenIn, lg.args.tokenAmountIn, 0, 0, lg.blockNumber, lg.transactionHash, "join", ) elif action == "exit": record = ( lg.args.caller, lg.args.tokenOut, lg.args.tokenAmountOut, 0, 0, lg.blockNumber, lg.transactionHash, "exit", ) else: assert action == "swap", f"Unknown pool action {action}" record = ( lg.args.caller, lg.args.tokenIn, lg.args.tokenAmountIn, lg.args.tokenOut, lg.args.tokenAmountOut, lg.blockNumber, lg.transactionHash, "swap", ) _all.append(record) return _all