Last active
July 17, 2022 22:26
-
-
Save JTraversa/a19b90e9bc54b1df902c8500a312f7b1 to your computer and use it in GitHub Desktop.
vault-balances
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from web3._utils.events import get_event_data | |
from web3._utils.filters import construct_event_filter_params | |
import requests | |
import json | |
from web3 import Web3 | |
import math | |
_cache = dict() | |
def truncate(number, digits) -> float: | |
stepper = 10.0 ** digits | |
return math.trunc(stepper * number) / stepper | |
def find_str(s, char): | |
index = 0 | |
if char in s: | |
c = char[0] | |
for ch in s: | |
if ch == c: | |
if s[index:index+len(char)] == char: | |
return index | |
index += 1 | |
return -1 | |
def get_cached_abi(abi_url): | |
"""Per process over-the-network ABI file retriever""" | |
spec = _cache.get(abi_url) | |
if not spec: | |
spec = _cache[abi_url] = requests.get(abi_url).json() | |
return spec['result'] | |
def create_contract(web3, isURL, abi, address,): | |
if isURL == True: | |
spec = get_cached_abi(abi) | |
contract = web3.eth.contract(address, abi=spec) | |
else: | |
contract = web3.eth.contract(address, abi=abi) | |
return contract | |
def fetch_events( | |
event, | |
argument_filters=None, | |
from_block=None, | |
to_block="latest", | |
address=None, | |
topics=None): | |
"""Get events using eth_getLogs API. | |
This is a stateless method, as opposite to createFilter and works with | |
stateless nodes like QuikNode and Infura. | |
:param event: Event instance from your contract.events | |
:param argument_filters: | |
:param from_block: Start block. Use 0 for all history/ | |
:param to_block: Fetch events until this contract | |
:param address: | |
:param topics: | |
:return: | |
""" | |
if from_block is None: | |
raise TypeError("Missing mandatory keyword argument to getLogs: from_Block") | |
abi = event._get_event_abi() | |
abi_codec = event.web3.codec | |
# Set up any indexed event filters if needed | |
argument_filters = dict() | |
_filters = dict(**argument_filters) | |
data_filter_set, event_filter_params = construct_event_filter_params( | |
abi, | |
abi_codec, | |
contract_address=event.address, | |
argument_filters=_filters, | |
fromBlock=from_block, | |
toBlock=to_block, | |
address=address, | |
topics=topics, | |
) | |
# Call node over JSON-RPC API | |
logs = event.web3.eth.getLogs(event_filter_params) | |
# Convert raw binary event data to easily manipulable Python objects | |
for entry in logs: | |
data = get_event_data(abi_codec, abi, entry) | |
yield data | |
#SETUP | |
swivelAddresses = [] | |
feiAddresses =[] | |
swivel='0x3b983B701406010866bD68331aAed374fb9f50C9' | |
contract_abi = '[{"inputs":[{"internalType":"address","name":"m","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"}],"name":"BlockWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"key","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"Cancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"key","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"hash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"maker","type":"address"},{"indexed":false,"internalType":"bool","name":"vault","type":"bool"},{"indexed":false,"internalType":"bool","name":"exit","type":"bool"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"filled","type":"uint256"}],"name":"Exit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"key","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"hash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"maker","type":"address"},{"indexed":false,"internalType":"bool","name":"vault","type":"bool"},{"indexed":false,"internalType":"bool","name":"exit","type":"bool"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"filled","type":"uint256"}],"name":"Initiate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"hold","type":"uint256"}],"name":"ScheduleWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"feenominator","type":"uint256"}],"name":"SetFee","type":"event"},{"inputs":[],"name":"HOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_FEENOMINATOR","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NAME","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"u","type":"address[]"},{"internalType":"address[]","name":"c","type":"address[]"}],"name":"approveUnderlying","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"e","type":"address"}],"name":"blockWithdrawal","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"address","name":"maker","type":"address"},{"internalType":"address","name":"underlying","type":"address"},{"internalType":"bool","name":"vault","type":"bool"},{"internalType":"bool","name":"exit","type":"bool"},{"internalType":"uint256","name":"principal","type":"uint256"},{"internalType":"uint256","name":"premium","type":"uint256"},{"internalType":"uint256","name":"maturity","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"internalType":"struct Hash.Order","name":"o","type":"tuple"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct Sig.Components","name":"c","type":"tuple"}],"name":"cancel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"cancelled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"combineTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"domain","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"address","name":"maker","type":"address"},{"internalType":"address","name":"underlying","type":"address"},{"internalType":"bool","name":"vault","type":"bool"},{"internalType":"bool","name":"exit","type":"bool"},{"internalType":"uint256","name":"principal","type":"uint256"},{"internalType":"uint256","name":"premium","type":"uint256"},{"internalType":"uint256","name":"maturity","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"internalType":"struct Hash.Order[]","name":"o","type":"tuple[]"},{"internalType":"uint256[]","name":"a","type":"uint256[]"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct Sig.Components[]","name":"c","type":"tuple[]"}],"name":"exit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"feenominators","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"filled","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"address","name":"maker","type":"address"},{"internalType":"address","name":"underlying","type":"address"},{"internalType":"bool","name":"vault","type":"bool"},{"internalType":"bool","name":"exit","type":"bool"},{"internalType":"uint256","name":"principal","type":"uint256"},{"internalType":"uint256","name":"premium","type":"uint256"},{"internalType":"uint256","name":"maturity","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"internalType":"struct Hash.Order[]","name":"o","type":"tuple[]"},{"internalType":"uint256[]","name":"a","type":"uint256[]"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct Sig.Components[]","name":"c","type":"tuple[]"}],"name":"initiate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketPlace","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"}],"name":"redeemVaultInterest","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"redeemZcToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"e","type":"address"}],"name":"scheduleWithdrawal","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"i","type":"uint16"},{"internalType":"uint16","name":"d","type":"uint16"}],"name":"setFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"splitUnderlying","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"transferAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"e","type":"address"}],"name":"withdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"withdrawals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]' | |
infura = "https://mainnet.infura.io/v3/b58baa11e019484890eff1543c3dc78f" | |
marketplace='0x998689650D4d55822b4bDd4B7DB5F596bf6b3570' | |
marketplace_abi = '[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlying","type":"address"},{"indexed":true,"internalType":"uint256","name":"maturity","type":"uint256"},{"indexed":false,"internalType":"address","name":"cToken","type":"address"},{"indexed":false,"internalType":"address","name":"zcToken","type":"address"},{"indexed":false,"internalType":"address","name":"vaultTracker","type":"address"}],"name":"Create","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlying","type":"address"},{"indexed":true,"internalType":"uint256","name":"maturity","type":"uint256"},{"indexed":false,"internalType":"address","name":"zcTarget","type":"address"},{"indexed":false,"internalType":"address","name":"nTarget","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"CustodialExit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlying","type":"address"},{"indexed":true,"internalType":"uint256","name":"maturity","type":"uint256"},{"indexed":false,"internalType":"address","name":"zcTarget","type":"address"},{"indexed":false,"internalType":"address","name":"nTarget","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"CustodialInitiate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlying","type":"address"},{"indexed":true,"internalType":"uint256","name":"maturity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maturityRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"matured","type":"uint256"}],"name":"Mature","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlying","type":"address"},{"indexed":true,"internalType":"uint256","name":"maturity","type":"uint256"},{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"P2pVaultExchange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlying","type":"address"},{"indexed":true,"internalType":"uint256","name":"maturity","type":"uint256"},{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"P2pZcTokenExchange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlying","type":"address"},{"indexed":true,"internalType":"uint256","name":"maturity","type":"uint256"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RedeemVaultInterest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlying","type":"address"},{"indexed":true,"internalType":"uint256","name":"maturity","type":"uint256"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RedeemZcToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlying","type":"address"},{"indexed":true,"internalType":"uint256","name":"maturity","type":"uint256"},{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferVaultNotional","type":"event"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"},{"internalType":"address","name":"t","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"burnZcTokenRemovingNotional","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"}],"name":"cTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"m","type":"uint256"},{"internalType":"address","name":"c","type":"address"},{"internalType":"string","name":"n","type":"string"},{"internalType":"string","name":"s","type":"string"}],"name":"createMarket","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"},{"internalType":"address","name":"z","type":"address"},{"internalType":"address","name":"n","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"custodialExit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"},{"internalType":"address","name":"z","type":"address"},{"internalType":"address","name":"n","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"custodialInitiate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"markets","outputs":[{"internalType":"address","name":"cTokenAddr","type":"address"},{"internalType":"address","name":"zcTokenAddr","type":"address"},{"internalType":"address","name":"vaultAddr","type":"address"},{"internalType":"uint256","name":"maturityRate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"}],"name":"matureMarket","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"},{"internalType":"address","name":"t","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"mintZcTokenAddingNotional","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"},{"internalType":"address","name":"f","type":"address"},{"internalType":"address","name":"t","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"p2pVaultExchange","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"},{"internalType":"address","name":"f","type":"address"},{"internalType":"address","name":"t","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"p2pZcTokenExchange","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"b","type":"bool"}],"name":"pause","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"},{"internalType":"address","name":"t","type":"address"}],"name":"redeemVaultInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"},{"internalType":"address","name":"t","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"redeemZcToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"s","type":"address"}],"name":"setSwivelAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swivel","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"transferAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"},{"internalType":"address","name":"t","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"transferVaultNotional","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"},{"internalType":"address","name":"f","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"transferVaultNotionalFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]' | |
vaulttracker_abi = '[{"inputs":[{"internalType":"uint256","name":"m","type":"uint256"},{"internalType":"address","name":"c","type":"address"},{"internalType":"address","name":"s","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"o","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"addNotional","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"o","type":"address"}],"name":"balancesOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cTokenAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"c","type":"uint256"}],"name":"matureVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maturity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maturityRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"o","type":"address"}],"name":"redeemInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"o","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"removeNotional","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swivel","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"f","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"transferNotionalFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"f","type":"address"},{"internalType":"address","name":"t","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"transferNotionalFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"vaults","outputs":[{"internalType":"uint256","name":"notional","type":"uint256"},{"internalType":"uint256","name":"redeemable","type":"uint256"},{"internalType":"uint256","name":"exchangeRate","type":"uint256"}],"stateMutability":"view","type":"function"}]' | |
web3 = Web3(Web3.HTTPProvider(infura)) | |
swivelcontract = create_contract(web3, False, contract_abi, swivel) | |
marketplacecontract = create_contract(web3, False, marketplace_abi, marketplace) | |
vault1 = marketplacecontract.functions.markets('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',1648177200).call()[2] | |
vault2 = marketplacecontract.functions.markets('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',1656039600).call()[2] | |
vault3 = marketplacecontract.functions.markets('0x956F47F50A910163D8BF957Cf5846D573E7f87CA',1656039600).call()[2] | |
vault4 = marketplacecontract.functions.markets('0x6B175474E89094C44Da98b954EedeAC495271d0F',1664550000).call()[2] | |
vault1contract = create_contract(web3, False, vaulttracker_abi, vault1) | |
vault2contract = create_contract(web3, False, vaulttracker_abi, vault2) | |
vault3contract = create_contract(web3, False, vaulttracker_abi, vault3) | |
vault4contract = create_contract(web3, False, vaulttracker_abi, vault4) | |
exits =[] | |
initiates = [] | |
both = [] | |
exits = list(fetch_events(swivelcontract.events.Exit, from_block=13864924)) | |
for i in exits: | |
print(i) | |
both.append(i) | |
initiates = list(fetch_events(swivelcontract.events.Initiate, from_block=13864924)) | |
for i in initiates: | |
print(i) | |
both.append(i) | |
# combine initiates and exits | |
for i in initiates: | |
both.append(i) | |
for i in exits: | |
both.append(i) | |
addresses = [] | |
for i in both: | |
if i['args']['maker'] not in addresses: | |
addresses.append(i['args']['maker']) | |
if i['args']['sender'] not in addresses: | |
addresses.append(i['args']['sender']) | |
market1 = {'market': {'underlying': '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 'maturity': '1648177200'}, 'users': []} | |
# check vault 1 balances for each address | |
for i in addresses: | |
user = {'user': '', 'amounts': {'notional': '', 'redeemable': ''}} | |
balances = vault1contract.functions.balancesOf(i).call() | |
notional = str(balances[0]) | |
redeemable = str(balances[1]) | |
user['user'] = i | |
user['amounts'] = {'notional': notional, 'redeemable': redeemable} | |
if notional != '0' or redeemable != '0': | |
print(user) | |
market1['users'].append(user) | |
market2 = {'market': {'underlying': '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 'maturity': '1656039600'}, 'users': []} | |
users = [] | |
# check vault 2 balances for each address | |
for i in addresses: | |
user = {'user': '', 'amounts': {'notional': '', 'redeemable': ''}} | |
balances = vault2contract.functions.balancesOf(i).call() | |
notional = str(balances[0]) | |
redeemable = str(balances[1]) | |
user['user'] = i | |
user['amounts'] = {'notional': notional, 'redeemable': redeemable} | |
if notional != '0' or redeemable != '0': | |
print(user) | |
market2['users'].append(user) | |
market3 = {'market': {'underlying': '0x956F47F50A910163D8BF957Cf5846D573E7f87CA', 'maturity': '1656039600'}, 'users': []} | |
users = [] | |
# check vault 3 balances for each address | |
for i in addresses: | |
user = {'user': '', 'amounts': {'notional': '', 'redeemable': ''}} | |
balances = vault3contract.functions.balancesOf(i).call() | |
notional = str(balances[0]) | |
redeemable = str(balances[1]) | |
user['user'] = i | |
user['amounts'] = {'notional': notional, 'redeemable': redeemable} | |
if notional != '0' or redeemable != '0': | |
print(user) | |
market3['users'].append(user) | |
market4 = {'market': {'underlying': '0x6B175474E89094C44Da98b954EedeAC495271d0F', 'maturity': '1664550000'}, 'users': []} | |
users = [] | |
# check vault 4 balances for each address | |
for i in addresses: | |
user = {'user': '', 'amounts': {'notional': '', 'redeemable': ''}} | |
balances = vault4contract.functions.balancesOf(i).call() | |
notional = str(balances[0]) | |
redeemable = str(balances[1]) | |
user['user'] = i | |
user['amounts'] = {'notional': notional, 'redeemable': redeemable} | |
if notional != '0' or redeemable != '0': | |
print(user) | |
market4['users'].append(user) | |
markets = [market1, market2, market3, market4] | |
with open("addressesMigration.json", "w", encoding="utf-8") as writeJsonfile: | |
json.dump(addresses, writeJsonfile, indent=4,default=str) | |
with open("comparison.json", "w", encoding="utf-8") as writeJsonfile: | |
json.dump(markets, writeJsonfile, indent=4,default=str) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment