熟悉了python并踩过坑之后,觉得python还是挺好的。毕竟男人嘛,喜新厌旧都是可以理解的。emmmm………
接上一节。
现在开始改写。毕竟一个dex市场是不够的。需要多个。
所以,我们要求有一个集合
中间两个市场一直无法执行成功。估计是墙的问题。
FACTORY_ADDRESSES = [
CRO_FACTORY_ADDRESS,
# ZEUS_FACTORY_ADDRESS,
# LUA_FACTORY_ADDRESS,
SUSHISWAP_FACTORY_ADDRESS,
UNISWAP_FACTORY_ADDRESS,
]
循环的pagesize和最大页数
BATCH_COUNT_LIMIT = 10
UNISWAP_BATCH_SIZE = 50
修改queryPairs()
def queryPairs():
pairList = []
for i in range(0, len(FACTORY_ADDRESSES)):
factoryAddress = FACTORY_ADDRESSES[i]
print("开始查询--->" + factoryAddress)
result = uniswapQuery.functions.getPairsByIndexRange(factoryAddress, i, UNISWAP_BATCH_SIZE).call()
for pair in result:
pairList.append(EthMarketPair(pair[2], pair[0], pair[1]))
if len(result) < UNISWAP_BATCH_SIZE:
continue
# 如果需要进行token黑名单的校验,则需要获取下列的token地址,再进行类似!blacklistTokens.includes(tokenAddress)校验
# if pair[0] == WETH_ADDRESS:
# tokenAddress = pair[1]
# elif pair[1] == WETH_ADDRESS:
# tokenAddress = pair[0]
# else:
# continue
return pairList
创建一个查询交易对的函数queryReservesByPairs
def queryReservesByPairs(marketAddresList):
# 返回交易对的储备值, token0 -->reserve[0], token1 -->reserve[1], 时间戳reserve[2]
result = uniswapQuery.functions.getReservesByPairs(marketAddresList).call()
print("查询获取库存结果:")
print(result[0])
return result[0]
这里,先暂时进行打印输出,以便我们观察结果。
接下来就是修改main函数。
if __name__ == '__main__':
pairList = queryPairs()
print("查询交易对结果集长度:%d" % len(pairList))
marketAddressList = list(map(lambda pair: pair.marketAddress, pairList))
print("开始查询交易对储备%d" % +len(marketAddressList))
print(marketAddressList)
queryReservesByPairs(marketAddressList)
OK,如果顺利,会有以下提示
好了。坐稳了!下一节我们准备要上国道,之后再进收收费站上高速!!!