-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhelpers.py
78 lines (66 loc) · 2.41 KB
/
helpers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/python3
import requests
import yaml
import os
from dotenv import load_dotenv
load_dotenv()
with open('dao_contracts.yaml','r') as f:
contracts = yaml.safe_load(f)
def get_token_price():
payload = {
'ids': 'gton-capital',
'vs_currencies': 'usd'
}
r = requests.get('https://api.coingecko.com/api/v3/simple/price',params=payload).json()
return float(r['gton-capital']['usd'])
def get_total_supply(chain):
total_supply = 0
k = contracts[chain]
contractaddresses = k['TOKEN']
key_name = k['KEY_NAME']
apikey = (os.getenv(key_name))
scanner_api = k['SCANNER_API']
for contractaddress in contractaddresses:
payload = {
'module': 'stats',
'action': 'tokensupply',
'contractaddress': contractaddress,
'apikey': apikey
}
r = requests.get(scanner_api,params=payload).json()
chain_supply = int(r['result'])/(10**18)
total_supply += chain_supply
print("total_supply on", chain,"is",total_supply)
return total_supply
def get_dao_owned_supply(chain):
dao_balance = 0
k = contracts[chain]
contractaddresses = k['TOKEN']
key_name = k['KEY_NAME']
apikey = (os.getenv(key_name))
scanner_api = k['SCANNER_API']
for contractaddress in contractaddresses:
for address in k['DAO']:
payload = {
'module': 'account',
'action': 'tokenbalance',
'contractaddress': contractaddress,
'address': address,
'tag': 'latest',
'apikey': apikey
}
r = requests.get(scanner_api,params=payload).json()
dao_balance += int(r['result'])/(10**18)
print("dao_balance on", chain,"is",dao_balance)
return dao_balance
def get_csupply():
ethereum_csupply = get_total_supply('ETHEREUM')-get_dao_owned_supply('ETHEREUM')-get_total_supply('FANTOM')-get_total_supply('POLYGON')-get_total_supply('BSC')
fantom_csupply = get_total_supply('FANTOM_STAKING')-get_dao_owned_supply('FANTOM_STAKING')
bsc_csupply = get_total_supply('BSC')-get_dao_owned_supply('BSC')
polygon_csupply = get_total_supply('POLYGON')-get_dao_owned_supply('POLYGON')
csupply = ethereum_csupply+fantom_csupply+bsc_csupply+polygon_csupply
return csupply
def get_poa():
return 3681550.9623108814
def get_floor_price():
return get_poa()/get_csupply()