yearn-treasury 0.0.39__cp310-cp310-win32.whl → 0.0.46__cp310-cp310-win32.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of yearn-treasury might be problematic. Click here for more details.
- yearn_treasury/_db.cp310-win32.pyd +0 -0
- yearn_treasury/_ens.cp310-win32.pyd +0 -0
- yearn_treasury/_logging.cp310-win32.pyd +0 -0
- yearn_treasury/_logging.py +2 -0
- yearn_treasury/address_labels.yaml +6 -0
- yearn_treasury/budget/__init__.cp310-win32.pyd +0 -0
- yearn_treasury/budget/_request.cp310-win32.pyd +0 -0
- yearn_treasury/budget/_requests.cp310-win32.pyd +0 -0
- yearn_treasury/main.py +43 -22
- yearn_treasury/rules/constants.cp310-win32.pyd +0 -0
- yearn_treasury/rules/cost_of_revenue/gas.cp310-win32.pyd +0 -0
- yearn_treasury/rules/expense/__init__.cp310-win32.pyd +0 -0
- yearn_treasury/rules/expense/general.cp310-win32.pyd +0 -0
- yearn_treasury/rules/expense/infrastructure.cp310-win32.pyd +0 -0
- yearn_treasury/rules/expense/people.cp310-win32.pyd +0 -0
- yearn_treasury/rules/expense/security.cp310-win32.pyd +0 -0
- yearn_treasury/rules/ignore/general.cp310-win32.pyd +0 -0
- yearn_treasury/rules/ignore/swaps/__init__.py +1 -0
- yearn_treasury/rules/ignore/swaps/aave.py +15 -8
- yearn_treasury/rules/ignore/swaps/auctions.cp310-win32.pyd +0 -0
- yearn_treasury/rules/ignore/swaps/auctions.py +31 -0
- yearn_treasury/rules/ignore/swaps/compound.py +28 -18
- yearn_treasury/rules/ignore/swaps/conversion_factory.cp310-win32.pyd +0 -0
- yearn_treasury/rules/ignore/swaps/cowswap.py +16 -13
- yearn_treasury/rules/ignore/swaps/curve.py +41 -13
- yearn_treasury/rules/ignore/swaps/gearbox.cp310-win32.pyd +0 -0
- yearn_treasury/rules/ignore/swaps/iearn.cp310-win32.pyd +0 -0
- yearn_treasury/rules/ignore/swaps/iearn.py +4 -4
- yearn_treasury/rules/ignore/swaps/otc.cp310-win32.pyd +0 -0
- yearn_treasury/rules/ignore/swaps/pooltogether.cp310-win32.pyd +0 -0
- yearn_treasury/rules/ignore/swaps/synthetix.cp310-win32.pyd +0 -0
- yearn_treasury/rules/ignore/swaps/uniswap.py +26 -6
- yearn_treasury/rules/ignore/swaps/unwrapper.cp310-win32.pyd +0 -0
- yearn_treasury/rules/ignore/swaps/vaults.cp310-win32.pyd +0 -0
- yearn_treasury/rules/ignore/swaps/vaults.py +8 -7
- yearn_treasury/rules/ignore/swaps/woofy.cp310-win32.pyd +0 -0
- yearn_treasury/rules/ignore/swaps/yfi.cp310-win32.pyd +0 -0
- yearn_treasury/rules/ignore/swaps/yfi.py +2 -1
- yearn_treasury/rules/ignore/swaps/yla.cp310-win32.pyd +0 -0
- yearn_treasury/rules/ignore/unit.cp310-win32.pyd +0 -0
- yearn_treasury/rules/ignore/weth.cp310-win32.pyd +0 -0
- yearn_treasury/rules/ignore/ygov.cp310-win32.pyd +0 -0
- yearn_treasury/rules/other_expense/__init__.cp310-win32.pyd +0 -0
- yearn_treasury/rules/other_expense/boost.cp310-win32.pyd +0 -0
- yearn_treasury/rules/other_expense/bugs.cp310-win32.pyd +0 -0
- yearn_treasury/rules/other_expense/donations.cp310-win32.pyd +0 -0
- yearn_treasury/rules/other_expense/dyfi.cp310-win32.pyd +0 -0
- yearn_treasury/rules/other_expense/events.cp310-win32.pyd +0 -0
- yearn_treasury/rules/other_expense/misc.cp310-win32.pyd +0 -0
- yearn_treasury/rules/other_expense/revshare.cp310-win32.pyd +0 -0
- yearn_treasury/rules/other_income/__init__.cp310-win32.pyd +0 -0
- yearn_treasury/rules/other_income/airdrops.cp310-win32.pyd +0 -0
- yearn_treasury/rules/other_income/misc.cp310-win32.pyd +0 -0
- yearn_treasury/rules/other_income/misc.py +1 -1
- yearn_treasury/rules/revenue/bribes.cp310-win32.pyd +0 -0
- yearn_treasury/rules/revenue/farming.cp310-win32.pyd +0 -0
- yearn_treasury/rules/revenue/keepcoins.cp310-win32.pyd +0 -0
- yearn_treasury/rules/revenue/seasolver.cp310-win32.pyd +0 -0
- yearn_treasury/rules/revenue/vaults.py +13 -9
- yearn_treasury/rules/revenue/yteams.cp310-win32.pyd +0 -0
- yearn_treasury/shitcoins.py +7 -0
- yearn_treasury/vaults.cp310-win32.pyd +0 -0
- yearn_treasury/vaults.py +3 -4
- yearn_treasury/yteams.py +208 -0
- {yearn_treasury-0.0.39.dist-info → yearn_treasury-0.0.46.dist-info}/METADATA +2 -3
- {yearn_treasury-0.0.39.dist-info → yearn_treasury-0.0.46.dist-info}/RECORD +70 -65
- yearn_treasury-0.0.46.dist-info/top_level.txt +2 -0
- yearn_treasury__mypyc.cp310-win32.pyd +0 -0
- 4536608332a31e0815c4__mypyc.cp310-win32.pyd +0 -0
- yearn_treasury-0.0.39.dist-info/top_level.txt +0 -2
- {yearn_treasury-0.0.39.dist-info → yearn_treasury-0.0.46.dist-info}/WHEEL +0 -0
- {yearn_treasury-0.0.39.dist-info → yearn_treasury-0.0.46.dist-info}/entry_points.txt +0 -0
|
@@ -104,7 +104,8 @@ def is_buying_with_auction(tx: TreasuryTx) -> bool:
|
|
|
104
104
|
if tx.from_address != receiver:
|
|
105
105
|
print(f"Transfer does not match auction taker: taker={tx.from_address.address} transfer={receiver}") # type: ignore [union-attr]
|
|
106
106
|
continue
|
|
107
|
-
|
|
107
|
+
# TODO get rid of this rounding once we've swapped out sqlite for postgres
|
|
108
|
+
if round(amount, 14) == round(event["taken"], 14): # type: ignore [call-overload]
|
|
108
109
|
return True
|
|
109
110
|
print(f"AuctionTaken: {event} amount does not match Transfer: {transfer}")
|
|
110
111
|
return False
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
from decimal import Decimal
|
|
1
2
|
from logging import getLogger
|
|
2
|
-
from typing import Final, Optional
|
|
3
|
+
from typing import Final, Optional, cast
|
|
3
4
|
|
|
4
5
|
from dao_treasury import TreasuryTx, revenue
|
|
5
6
|
from eth_typing import ChecksumAddress
|
|
@@ -55,7 +56,7 @@ async def _get_controller(vault: Contract) -> Contract:
|
|
|
55
56
|
|
|
56
57
|
@fees("Vaults V1", Network.Mainnet)
|
|
57
58
|
async def is_v1_vault_fees(tx: TreasuryTx) -> bool:
|
|
58
|
-
token = tx.
|
|
59
|
+
token = tx.token_address
|
|
59
60
|
|
|
60
61
|
# Fees from single-sided strategies are not denominated in `vault.token` but everything else is
|
|
61
62
|
is_single_sided = _is_single_sided(tx)
|
|
@@ -85,7 +86,9 @@ async def is_v1_vault_fees(tx: TreasuryTx) -> bool:
|
|
|
85
86
|
return False
|
|
86
87
|
|
|
87
88
|
|
|
88
|
-
def is_inverse_fees_from_stash_contract(
|
|
89
|
+
def is_inverse_fees_from_stash_contract(
|
|
90
|
+
from_address: ChecksumAddress, to_nickname: str | None
|
|
91
|
+
) -> bool:
|
|
89
92
|
return (
|
|
90
93
|
from_address == "0xE376e8e8E3B0793CD61C6F1283bA18548b726C2e"
|
|
91
94
|
and to_nickname == "Token: Curve stETH Pool yVault"
|
|
@@ -94,18 +97,19 @@ def is_inverse_fees_from_stash_contract(from_address: str, to_nickname: str) ->
|
|
|
94
97
|
|
|
95
98
|
@fees("Vaults V2")
|
|
96
99
|
async def is_v2_vault_fees(tx: TreasuryTx) -> bool:
|
|
97
|
-
token = tx.
|
|
98
|
-
from_address = tx.from_address.address
|
|
100
|
+
token = tx.token_address
|
|
101
|
+
from_address = cast(ChecksumAddress, tx.from_address.address)
|
|
99
102
|
if (
|
|
100
103
|
from_address == token
|
|
101
|
-
and (vault := v2.get(from_address))
|
|
104
|
+
and (vault := v2.get(from_address))
|
|
102
105
|
and tx.to_address == await vault.rewards.coroutine(block_identifier=tx.block)
|
|
103
106
|
):
|
|
104
107
|
return True
|
|
105
108
|
|
|
106
|
-
if is_inverse_fees_from_stash_contract(from_address, tx.to_nickname):
|
|
107
|
-
|
|
108
|
-
|
|
109
|
+
if is_inverse_fees_from_stash_contract(from_address, tx.to_nickname):
|
|
110
|
+
value_usd = cast(Decimal, tx.value_usd)
|
|
111
|
+
if value_usd > 0:
|
|
112
|
+
tx.value_usd = -value_usd
|
|
109
113
|
return True
|
|
110
114
|
|
|
111
115
|
return False
|
|
Binary file
|
yearn_treasury/shitcoins.py
CHANGED
|
@@ -54,6 +54,9 @@ _SHITCOINS: Final = {
|
|
|
54
54
|
"0xe2549E429B78458fa60BC7B1b284d4411E1D5105",
|
|
55
55
|
"0xCfdD747d041397bcE08B0Fe6ebF7Ef65E9F46795",
|
|
56
56
|
"0x9745969171a38B40db05c506fe2DA2C36f317627",
|
|
57
|
+
"0x6051C1354Ccc51b4d561e43b02735DEaE64768B8",
|
|
58
|
+
"0xf0814d0E47F2390a8082C4a1BD819FDDe50f9bFc",
|
|
59
|
+
"0x2DBd330bC9B7f3A822a9173aB52172BdDDcAcE2A",
|
|
57
60
|
# just andre tinkering
|
|
58
61
|
"0x5cB5e2d7Ab9Fd32021dF8F1D3E5269bD437Ec3Bf",
|
|
59
62
|
# these arent shitcoins per se but we can't price them and dont expect to in the future, lets save cpu cycles
|
|
@@ -80,6 +83,8 @@ _SHITCOINS: Final = {
|
|
|
80
83
|
"0xdE56173463d6461001B0891bC90DB224965f5762", # MAGNUS
|
|
81
84
|
"0x922824A5b3B3D5f4485fF52F4Ab7Cba5eA491874", # POSEIDON
|
|
82
85
|
"0x84F7D2f6FB447Bb11d3E7Ce64D83e1c02c2F3078", # VIRTUAL
|
|
86
|
+
"0x5C6Ed14E1017cf75C237A4A4b93Ce1D2f83EB002", # GRVT
|
|
87
|
+
"0xf76E6eFf109258fd5F52823d9F9feE7c90C97251", # wkeyDAO
|
|
83
88
|
# test token?
|
|
84
89
|
"0x372d5d02c6b4075bd58892f80300cA590e92d29E", # tOUSG
|
|
85
90
|
# dETH? don't think this is needed
|
|
@@ -106,6 +111,8 @@ _SHITCOINS: Final = {
|
|
|
106
111
|
"0xc83377b9eE3CEe4Cc03CCd58AfdE1FB12864aEE3", # E AI
|
|
107
112
|
"0x927402ab67c0CDA3c187E9DFE34554AC581441f2", # SAITABIT
|
|
108
113
|
"0x691539810DF6e879A377C24CfEE130BBE92708d8", # NVIDIA AI
|
|
114
|
+
"0xdC82aC0A89197854cb2240FaBF7E7760a4fF4d9e", # NVIDIA
|
|
115
|
+
"0x5Fba8ea5A559CF5c99BA6dd884Ae17C1d621fE5B", # OSCAR AI
|
|
109
116
|
# matt furry spam
|
|
110
117
|
"0x73228b3D33cC71cB721Fc62950577bE63bd9c8C9", # Maskman by Matt Furie
|
|
111
118
|
"0x7c28e66436C93BB9F657dDF2BA0eeeCf61369b92", # Bloodboy by Matt Furie
|
|
Binary file
|
yearn_treasury/vaults.py
CHANGED
|
@@ -12,7 +12,7 @@ Key Responsibilities:
|
|
|
12
12
|
- Provide lookup tables for use in vault deposit/withdrawal sort rules.
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
|
-
from typing import Dict, Final
|
|
15
|
+
from typing import Dict, Final
|
|
16
16
|
|
|
17
17
|
from brownie import chain
|
|
18
18
|
from eth_typing import ChecksumAddress
|
|
@@ -41,11 +41,10 @@ if chain.id == Network.Mainnet:
|
|
|
41
41
|
|
|
42
42
|
# TODO: make resolve_ens util in eth-port and refactor this out
|
|
43
43
|
v2_registries = [
|
|
44
|
-
event["newAddress"].hex()
|
|
45
|
-
for event in Events(addresses=resolver, topics=topics).events(now)
|
|
44
|
+
event["newAddress"].hex() for event in Events(addresses=resolver, topics=topics).events(now)
|
|
46
45
|
]
|
|
47
46
|
|
|
48
47
|
for event in Events(addresses=list(map(str, v2_registries))).events(now):
|
|
49
48
|
if event.name == "NewVault":
|
|
50
49
|
vault_address = event["vault"]
|
|
51
|
-
v2[vault_address] = Contract(vault_address)
|
|
50
|
+
v2[vault_address] = Contract(vault_address)
|
yearn_treasury/yteams.py
ADDED
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# This is a loose copy of an old script and will not likely be refactored into something pretty
|
|
2
|
+
import os
|
|
3
|
+
from datetime import datetime, timedelta, timezone
|
|
4
|
+
from decimal import Decimal
|
|
5
|
+
from functools import lru_cache
|
|
6
|
+
from logging import getLogger
|
|
7
|
+
from typing import Any, Dict, Final, List, Set, Tuple
|
|
8
|
+
|
|
9
|
+
import a_sync
|
|
10
|
+
from brownie import chain
|
|
11
|
+
from eth_portfolio.structs import TokenTransfer
|
|
12
|
+
from eth_portfolio._ydb.token_transfers import InboundTokenTransfers
|
|
13
|
+
from pandas import DataFrame, MultiIndex
|
|
14
|
+
from y import Contract, Network, get_block_at_timestamp
|
|
15
|
+
from y.exceptions import ContractNotVerified
|
|
16
|
+
|
|
17
|
+
from yearn_treasury.constants import ZERO_ADDRESS
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
DATA_FOLDER: Final = os.path.join(".", "data")
|
|
21
|
+
OUTPUT_FILE: Final = os.path.join(DATA_FOLDER, f"teams_revenue_{chain.id}.csv")
|
|
22
|
+
NUMBER_OF_MONTHS_TO_INCLUDE_IN_REPORT: Final = 36
|
|
23
|
+
|
|
24
|
+
if not os.path.exists(DATA_FOLDER):
|
|
25
|
+
os.makedirs(DATA_FOLDER)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# TODO: maybe move this into constants for reuse
|
|
29
|
+
yteams_addresses = {
|
|
30
|
+
Network.Mainnet: {
|
|
31
|
+
"v3": {
|
|
32
|
+
"ms": "0x33333333D5eFb92f19a5F94a43456b3cec2797AE",
|
|
33
|
+
"splits": {"0x2A12CAA2c13Af03c117D836CA3811a5Ca946133B": 12.5},
|
|
34
|
+
},
|
|
35
|
+
"dinobots": {
|
|
36
|
+
"ms": "0x2C01B4AD51a67E2d8F02208F54dF9aC4c0B778B6",
|
|
37
|
+
"splits": {"0xC4f238633A85A854C4702d2c66264771D1fa7904": 17.5},
|
|
38
|
+
},
|
|
39
|
+
"ylockers": {
|
|
40
|
+
"ms": "0x4444AAAACDBa5580282365e25b16309Bd770ce4a",
|
|
41
|
+
"splits": {
|
|
42
|
+
"0xac580302548FCCBBf00020de20C3A8AA516821AD": 2.5,
|
|
43
|
+
"0x794f80E899c772de9E326eC83cCfD8D94e208B49": 6.25,
|
|
44
|
+
"0x5FF0f87b05806ce89967638CA727Af8309d92A89": 12.5,
|
|
45
|
+
"0x5A7575368797695BefD785f546C6b8B7e9D37f8c": 15.625,
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
# "ylockers others": {"ms": "0x4444AAAACDBa5580282365e25b16309Bd770ce4a","splits":{"0x5FF0f87b05806ce89967638CA727Af8309d92A89":12.5, "0x5A7575368797695BefD785f546C6b8B7e9D37f8c":15.625}},
|
|
49
|
+
"yaudit": {
|
|
50
|
+
"ms": "0x8973B848775a87a0D5bcf262C555859b87E6F7dA",
|
|
51
|
+
"splits": {
|
|
52
|
+
"0xd7A1DBe236A38528D54317415a530b2326068373": 35,
|
|
53
|
+
"0xF104F38592287e25868BD8C3dcCCa1a311916f88": 35,
|
|
54
|
+
"0x1a9D272C3b7fE427639702A332D51348213B0bC1": 20,
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
"yeth": {
|
|
58
|
+
"ms": "0xeEEEEeeeEe274C3CCe13f77C85d8eBd9F7fd4479",
|
|
59
|
+
"splits": {"0x14EFe6390C6758E3fE4379A14e3B329274b1b072": 25},
|
|
60
|
+
},
|
|
61
|
+
"yfarm": {
|
|
62
|
+
"ms": "0x55157997cb324a374cCd7c40914ff879Fd9D515C",
|
|
63
|
+
"splits": {"0x0B3cCe59E038373F6008D9266B6D6eB4d21689b1": 50},
|
|
64
|
+
},
|
|
65
|
+
"sms": {
|
|
66
|
+
"ms": "0x16388463d60FFE0661Cf7F1f31a7D658aC790ff7",
|
|
67
|
+
"splits": {"0xd6748776CF06a80EbE36cd83D325B31bb916bf54": 25},
|
|
68
|
+
},
|
|
69
|
+
}
|
|
70
|
+
}[Network(chain.id)]
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
logger: Final = getLogger(__name__)
|
|
74
|
+
|
|
75
|
+
_not_verified: Final[Set[str]] = set()
|
|
76
|
+
_warned: Final[Set[TokenTransfer]] = set()
|
|
77
|
+
|
|
78
|
+
_known_tokens_without_prices: Final = frozenset({"SAFE", "vCOW"})
|
|
79
|
+
"""When there is a PriceError for these tokens, no logs will be emitted."""
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
@lru_cache(maxsize=None)
|
|
83
|
+
def transfers_for(wallet: str) -> InboundTokenTransfers:
|
|
84
|
+
return InboundTokenTransfers(wallet, 0, load_prices=True) # type: ignore [arg-type]
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
async def calculate_teams_revenue_expenses() -> None:
|
|
88
|
+
logger.info("Starting process to calculate teams revenues and expenses")
|
|
89
|
+
timestamps = get_timestamps_for_report()
|
|
90
|
+
|
|
91
|
+
async def get_coros_for_timestamp(dt: datetime) -> Dict[str, Dict[str, Decimal]]:
|
|
92
|
+
return await a_sync.gather(
|
|
93
|
+
{
|
|
94
|
+
label: total(label, wallet_info, dt)
|
|
95
|
+
for label, wallet_info in yteams_addresses.items()
|
|
96
|
+
}
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
all_data = await a_sync.gather({dt: get_coros_for_timestamp(dt) for dt in timestamps})
|
|
100
|
+
|
|
101
|
+
result = {
|
|
102
|
+
(dt, teams, movement): values
|
|
103
|
+
for dt, data in all_data.items()
|
|
104
|
+
for teams, info in data.items()
|
|
105
|
+
for movement, values in info.items()
|
|
106
|
+
}
|
|
107
|
+
df = DataFrame.from_dict(result, orient="index")
|
|
108
|
+
print("------------")
|
|
109
|
+
# print(df.index)
|
|
110
|
+
# print(df.head(10))
|
|
111
|
+
df.index = MultiIndex.from_tuples(df.index)
|
|
112
|
+
print("********")
|
|
113
|
+
# print(df.index)
|
|
114
|
+
df.reset_index(inplace=True)
|
|
115
|
+
df.columns = ["datetime", "team", "label", "value"]
|
|
116
|
+
df.to_csv(OUTPUT_FILE)
|
|
117
|
+
logger.info(
|
|
118
|
+
f"Finished processing yteams calculations and saved file to {os.path.abspath(OUTPUT_FILE)}"
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def get_timestamps_for_report() -> List[datetime]:
|
|
123
|
+
now = datetime.now(tz=timezone.utc)
|
|
124
|
+
prev_month_end = datetime(
|
|
125
|
+
year=now.year,
|
|
126
|
+
month=now.month,
|
|
127
|
+
day=1,
|
|
128
|
+
hour=0,
|
|
129
|
+
minute=0,
|
|
130
|
+
second=0,
|
|
131
|
+
microsecond=0,
|
|
132
|
+
tzinfo=timezone.utc,
|
|
133
|
+
) - timedelta(microseconds=1)
|
|
134
|
+
datetimes = []
|
|
135
|
+
print("Exporting report for timestamps:")
|
|
136
|
+
for _ in range(NUMBER_OF_MONTHS_TO_INCLUDE_IN_REPORT):
|
|
137
|
+
print(f" - {prev_month_end}")
|
|
138
|
+
datetimes.append(prev_month_end)
|
|
139
|
+
prev_month_end -= timedelta(days=prev_month_end.day)
|
|
140
|
+
return datetimes
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
async def total(label: str, wallet_info: Dict[str, Any], timestamp: datetime) -> Dict[str, Decimal]:
|
|
144
|
+
rev = await sum_revenue_transfers.sum(wallet_info["splits"].items(), timestamp=timestamp)
|
|
145
|
+
grants = await sum_grants_received(wallet_info["ms"], timestamp)
|
|
146
|
+
if rev > 10_000_000:
|
|
147
|
+
raise ValueError(rev)
|
|
148
|
+
if grants > 10_000_000:
|
|
149
|
+
raise ValueError(grants)
|
|
150
|
+
net = rev - grants
|
|
151
|
+
if label == "yaudit":
|
|
152
|
+
logger.info("--- %s thru %s ---", label, timestamp)
|
|
153
|
+
logger.info("inbound %s", rev)
|
|
154
|
+
logger.info("grants -%s", grants)
|
|
155
|
+
logger.info("net %s", net)
|
|
156
|
+
return {"revenue": rev, "grants": grants, "total": net}
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
@a_sync.a_sync(default="async")
|
|
160
|
+
async def sum_revenue_transfers(params: Tuple[str, Decimal], timestamp: datetime) -> Decimal:
|
|
161
|
+
wallet, rev_share = params
|
|
162
|
+
block = await get_block_at_timestamp(timestamp)
|
|
163
|
+
total = Decimal(0)
|
|
164
|
+
async for transfer in transfers_for(wallet).yield_thru_block(block):
|
|
165
|
+
transfer = await transfer
|
|
166
|
+
if transfer is None:
|
|
167
|
+
# failed to decode, probably shitcoin
|
|
168
|
+
continue
|
|
169
|
+
if not transfer.value:
|
|
170
|
+
# zero value transfer
|
|
171
|
+
continue
|
|
172
|
+
if transfer.price:
|
|
173
|
+
total += transfer.value * transfer.price
|
|
174
|
+
elif transfer not in _warned and transfer.token not in _known_tokens_without_prices:
|
|
175
|
+
logger.warning(f"BAD: {transfer}")
|
|
176
|
+
_warned.add(transfer)
|
|
177
|
+
return round(total * Decimal((100 - rev_share) / 100), 8)
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
async def sum_grants_received(wallet: str, timestamp: datetime) -> Decimal:
|
|
181
|
+
grants = Decimal(0)
|
|
182
|
+
block = await get_block_at_timestamp(timestamp)
|
|
183
|
+
async for transfer in transfers_for(wallet).yield_thru_block(block):
|
|
184
|
+
transfer = await transfer
|
|
185
|
+
if transfer is None:
|
|
186
|
+
# failed to decode, probably shitcoin
|
|
187
|
+
continue
|
|
188
|
+
if not transfer.value:
|
|
189
|
+
# zero value transfer
|
|
190
|
+
continue
|
|
191
|
+
if transfer.price:
|
|
192
|
+
if transfer.from_address != ZERO_ADDRESS:
|
|
193
|
+
try:
|
|
194
|
+
contract = await Contract.coroutine(transfer.from_address)
|
|
195
|
+
if (
|
|
196
|
+
hasattr(contract, "recipient") and await contract.recipient == wallet
|
|
197
|
+
) or transfer.from_address == "0xFEB4acf3df3cDEA7399794D0869ef76A6EfAff52":
|
|
198
|
+
grants += transfer.value * transfer.price
|
|
199
|
+
except ContractNotVerified as e:
|
|
200
|
+
if str(e) not in _not_verified:
|
|
201
|
+
_not_verified.add(str(e))
|
|
202
|
+
logger.debug(f"{e.__class__.__name__}: {e}")
|
|
203
|
+
except Exception as e:
|
|
204
|
+
logger.warning(f"{e.__class__.__name__}: {e}")
|
|
205
|
+
elif transfer not in _warned and transfer.token not in _known_tokens_without_prices:
|
|
206
|
+
logger.warning(f"BAD: {transfer}")
|
|
207
|
+
_warned.add(transfer)
|
|
208
|
+
return round(grants, 8)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: yearn_treasury
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.46
|
|
4
4
|
Summary: This WIP library runs the eth-portfolio and dao-treasury exporters for the Yearn Finance treasury.
|
|
5
5
|
Classifier: Development Status :: 3 - Alpha
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -15,8 +15,7 @@ Classifier: Operating System :: OS Independent
|
|
|
15
15
|
Classifier: Topic :: Software Development :: Libraries
|
|
16
16
|
Requires-Python: >=3.10,<3.13
|
|
17
17
|
Description-Content-Type: text/markdown
|
|
18
|
-
Requires-Dist: dao-treasury
|
|
19
|
-
Requires-Dist: eth-brownie<1.23,>=1.21.0
|
|
18
|
+
Requires-Dist: dao-treasury==0.0.68
|
|
20
19
|
Requires-Dist: faster-async-lru<3,>=2.0.5
|
|
21
20
|
Dynamic: classifier
|
|
22
21
|
Dynamic: description
|
|
@@ -1,123 +1,128 @@
|
|
|
1
|
-
|
|
1
|
+
yearn_treasury__mypyc.cp310-win32.pyd,sha256=41Ki1FEwansDCyamoMFoKpgv4sE0f7NJEH9006kIPDw,374784
|
|
2
2
|
yearn_treasury/__init__.py,sha256=1G3sqPVtNq0SsOCLXjZ8NOMiRYfdQZuRezMEpyrNjmU,426
|
|
3
|
-
yearn_treasury/_db.cp310-win32.pyd,sha256=
|
|
3
|
+
yearn_treasury/_db.cp310-win32.pyd,sha256=PvwdEyKOhp_VOSFyBmpHakK08q3UE-0YICq1SmhjqIY,9216
|
|
4
4
|
yearn_treasury/_db.py,sha256=L5DQolJAx1gg2FAJxEocgiJUVuhWV7zJw4p676dwPvQ,1616
|
|
5
|
-
yearn_treasury/_ens.cp310-win32.pyd,sha256=
|
|
5
|
+
yearn_treasury/_ens.cp310-win32.pyd,sha256=7ty35RfdLuf7oODmoGCC0lB4SSPnENPP2x7bdAeIQH4,9216
|
|
6
6
|
yearn_treasury/_ens.py,sha256=oBn-R1n8dLnM93xsq08p1jYPZRQez9ISVVXS0nJNuSc,1068
|
|
7
|
-
yearn_treasury/_logging.cp310-win32.pyd,sha256=
|
|
8
|
-
yearn_treasury/_logging.py,sha256=
|
|
9
|
-
yearn_treasury/address_labels.yaml,sha256=
|
|
7
|
+
yearn_treasury/_logging.cp310-win32.pyd,sha256=VoBuxgQNaX-Tby2yBkUw0VIIAe_FYYBu0v-_dEC1aPk,9216
|
|
8
|
+
yearn_treasury/_logging.py,sha256=I4nWIxBC1ApCnSCS2vVztF-kl6LoGf0_yVxeBYF07Pw,1829
|
|
9
|
+
yearn_treasury/address_labels.yaml,sha256=R8XC7ATHxLxfR8g1Rl4YDXyOyO8w5a08iw-9_y50XuU,1529
|
|
10
10
|
yearn_treasury/constants.py,sha256=kz9lYQv3Z-O8YI3xfzwa__1FYI7TcTqMXMMwCKjg0UQ,3722
|
|
11
|
-
yearn_treasury/main.py,sha256=
|
|
11
|
+
yearn_treasury/main.py,sha256=4ZWK926ujBOScRJ5QANMK8JMje6FEDAOXgNSLs8WlWc,6653
|
|
12
12
|
yearn_treasury/py.typed,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
|
13
|
-
yearn_treasury/shitcoins.py,sha256=
|
|
14
|
-
yearn_treasury/vaults.
|
|
13
|
+
yearn_treasury/shitcoins.py,sha256=s08VMGosNXdQy-7SOQvRUonl99hUd9GnxSCrCwkqv98,7700
|
|
14
|
+
yearn_treasury/vaults.cp310-win32.pyd,sha256=Bj2yzu21f5mx_3aRuhp10PA1yI_miu6mPt2MVVrb5Hk,9216
|
|
15
|
+
yearn_treasury/vaults.py,sha256=xv7am1RxU_O4RuWbgV0-1IqIOA1rwsvoaV5jiSnxpPA,1745
|
|
15
16
|
yearn_treasury/wallets.yaml,sha256=VP2A4S-W6R6k1yWDHM_ptrhNlO-dwXZhrJg0Bm8qz0w,1137
|
|
16
|
-
yearn_treasury/
|
|
17
|
+
yearn_treasury/yteams.py,sha256=8YWXEueHT4MajTVmRRIPYFmQs6AIR0zUSdS2x9usCts,8201
|
|
18
|
+
yearn_treasury/budget/__init__.cp310-win32.pyd,sha256=4aA3tGzdW8Q7BMSyp53n0qdIV0tbDwAoGbMvSulJpMc,9216
|
|
17
19
|
yearn_treasury/budget/__init__.py,sha256=LY4Isom1ARgNwIpaz9W0ZUcbxHfzw3hC0eLVjLwHdFs,264
|
|
18
|
-
yearn_treasury/budget/_request.cp310-win32.pyd,sha256=
|
|
20
|
+
yearn_treasury/budget/_request.cp310-win32.pyd,sha256=nM5U0Lk8k8jb-tXp-aDL9vAvlxQlzMjGcdzYDrdxm0M,9216
|
|
19
21
|
yearn_treasury/budget/_request.py,sha256=3yw_HKHBy8ePqQytGFLSao9TOoYTHsXqPnap6odrNjk,1054
|
|
20
|
-
yearn_treasury/budget/_requests.cp310-win32.pyd,sha256=
|
|
22
|
+
yearn_treasury/budget/_requests.cp310-win32.pyd,sha256=_C8Bcv6PYhPZvZt4WNrAaqBTVDyPzB7ATul14eAaCKc,9216
|
|
21
23
|
yearn_treasury/budget/_requests.py,sha256=xhjf-Uj_1y2KMijrVrS_ZtSkLJUdww3W8LA7B2SNMKg,3541
|
|
22
24
|
yearn_treasury/rules/__init__.py,sha256=MUwQaDL-f-S3AB_YS3H4k_6Y1VFgPjNsIIVXpL-9Gko,591
|
|
23
|
-
yearn_treasury/rules/constants.cp310-win32.pyd,sha256=
|
|
25
|
+
yearn_treasury/rules/constants.cp310-win32.pyd,sha256=o1zpFBVJekPCsa-B3S8wB-rTzlNzpxMlE2XoXNAPvpA,9216
|
|
24
26
|
yearn_treasury/rules/constants.py,sha256=LYme6yibxVEZR5CxTZkD0GOyjHO8HspPyDtQnwlOSzE,563
|
|
25
27
|
yearn_treasury/rules/cost_of_revenue/__init__.py,sha256=rWPI3t4FRk_QCkdA5fDmgEKRU3p9JACoQbn184AxGD8,56
|
|
26
|
-
yearn_treasury/rules/cost_of_revenue/gas.cp310-win32.pyd,sha256
|
|
28
|
+
yearn_treasury/rules/cost_of_revenue/gas.cp310-win32.pyd,sha256=ruX1dcQuEUOKhe9OocAsuPnGwA5KhudPsZYOQFQq8t4,9216
|
|
27
29
|
yearn_treasury/rules/cost_of_revenue/gas.py,sha256=WUJ6SN-xSwLveYjwPGbjmMh-V4XB7qLslYDrx792gFY,2290
|
|
28
30
|
yearn_treasury/rules/cost_of_revenue/match_on_hash.yaml,sha256=Z7r1CIDzNsSoLWpmUUbXonqE4Vzo0-u8RzISDQGJmNk,562
|
|
29
|
-
yearn_treasury/rules/expense/__init__.cp310-win32.pyd,sha256=
|
|
31
|
+
yearn_treasury/rules/expense/__init__.cp310-win32.pyd,sha256=x4dzgHh37y2zg7w7ujqSh-VjzhFuCZc698LekY3jIG8,9216
|
|
30
32
|
yearn_treasury/rules/expense/__init__.py,sha256=3YzO4g2TOCNg4oWGd7nfWkl18J1A6nmqQF7zezLND8E,215
|
|
31
|
-
yearn_treasury/rules/expense/general.cp310-win32.pyd,sha256=
|
|
33
|
+
yearn_treasury/rules/expense/general.cp310-win32.pyd,sha256=JWx-CFgxWtVIH2Q8mCg9iGQmCgd5ZghWvAnKllo5rcw,9216
|
|
32
34
|
yearn_treasury/rules/expense/general.py,sha256=Ale0ignb0wDN8RyyhMND3j7SUc4bLi39kmSVP-wsmus,377
|
|
33
|
-
yearn_treasury/rules/expense/infrastructure.cp310-win32.pyd,sha256=
|
|
35
|
+
yearn_treasury/rules/expense/infrastructure.cp310-win32.pyd,sha256=K3m0Ns69RLYjHRLCi4XSnw3IJpqN3pRbeWuW5pn6B9Q,9216
|
|
34
36
|
yearn_treasury/rules/expense/infrastructure.py,sha256=rU-HJLFnk-AvwQFRrwNuP1xWaYZMd16LiD97HXqJ9VA,1677
|
|
35
37
|
yearn_treasury/rules/expense/match_on_hash.yaml,sha256=XVYA55_0qW8X99VOM7ojD6ttqW4fgnljXiQlaFU0c7Q,2770
|
|
36
38
|
yearn_treasury/rules/expense/match_on_to_address.yaml,sha256=zq0AB0TD2k87jQ39ZtUZNSyspuvzJy80fvcDh102zMI,213
|
|
37
|
-
yearn_treasury/rules/expense/people.cp310-win32.pyd,sha256=
|
|
39
|
+
yearn_treasury/rules/expense/people.cp310-win32.pyd,sha256=Ae98uGDFhHKc_01yH-evQMvnGb-1wDbbnPJJtq_PzM0,9216
|
|
38
40
|
yearn_treasury/rules/expense/people.py,sha256=JKPAiCKHSBX2pqEZdWRt0yytI3kGcstskUz50K23EvE,3604
|
|
39
|
-
yearn_treasury/rules/expense/security.cp310-win32.pyd,sha256=
|
|
41
|
+
yearn_treasury/rules/expense/security.cp310-win32.pyd,sha256=OwwIcXx85Jd-wsoMAQNtvqBNa7PRBK-AcGqxLOJYNhQ,9216
|
|
40
42
|
yearn_treasury/rules/expense/security.py,sha256=uQVMejp_fptKHLeuaR7X9-Yh8Tgh125_qEGG7nzwi9s,4737
|
|
41
43
|
yearn_treasury/rules/ignore/__init__.py,sha256=8Wuwv6JO4VeMx8U4trNo3ZP5z3ZBIgQk9eFbZxvskPQ,396
|
|
42
|
-
yearn_treasury/rules/ignore/general.cp310-win32.pyd,sha256=
|
|
44
|
+
yearn_treasury/rules/ignore/general.cp310-win32.pyd,sha256=Qp4wc7NnPof4etUBmxdla8maG8NY_crVnL4sryIuGMs,9216
|
|
43
45
|
yearn_treasury/rules/ignore/general.py,sha256=DJEvcZUgfsPlJADu_dmXrWGiUguuiXG2Tid7tKKMDjE,452
|
|
44
46
|
yearn_treasury/rules/ignore/maker.py,sha256=Ll89KDgmBt3DcOxjk2GwfNROp3U4GKO0BM1UmXl1s0s,3549
|
|
45
47
|
yearn_treasury/rules/ignore/passthru.py,sha256=TLy98IufuImGKiJahU7CD6plwTf0a76vBQQzc5M8SJc,12338
|
|
46
48
|
yearn_treasury/rules/ignore/staking.py,sha256=RamaHJyGSmQZHzUEBIKemPIbeAMiUN4toW36AuxakiA,3793
|
|
47
|
-
yearn_treasury/rules/ignore/unit.cp310-win32.pyd,sha256=
|
|
49
|
+
yearn_treasury/rules/ignore/unit.cp310-win32.pyd,sha256=sOvxzoPgliBKtqZyN3hLtadcIPaN3qVuBOyXAT3swbU,9216
|
|
48
50
|
yearn_treasury/rules/ignore/unit.py,sha256=yAKzDrjbCBYyHGzNHAuF2U1r4Ru_59QXjRy4uVFDf38,1294
|
|
49
|
-
yearn_treasury/rules/ignore/weth.cp310-win32.pyd,sha256=
|
|
51
|
+
yearn_treasury/rules/ignore/weth.cp310-win32.pyd,sha256=vvVpGDkqUdLj1YyG6gm9Krr8TAd3rQ7vHEUSOL4o5IE,9216
|
|
50
52
|
yearn_treasury/rules/ignore/weth.py,sha256=896V7Z5L553t0D02FZaj2c-y3QO-vN5ESWlIQzscfC4,1512
|
|
51
|
-
yearn_treasury/rules/ignore/ygov.cp310-win32.pyd,sha256=
|
|
53
|
+
yearn_treasury/rules/ignore/ygov.cp310-win32.pyd,sha256=AwGig2ujdxVEYP7uxuDCqDOe1VKiDhFOS1Wy1FvIVes,9216
|
|
52
54
|
yearn_treasury/rules/ignore/ygov.py,sha256=XioDvPA0wLtwvJ_Rdf1QRUa-ZhFvrZP7Jc0IFwfsfTM,422
|
|
53
|
-
yearn_treasury/rules/ignore/swaps/__init__.py,sha256=
|
|
55
|
+
yearn_treasury/rules/ignore/swaps/__init__.py,sha256=EMtAV7n-EIIEnghH_0JJen--EbLb2L1aV6Z0nAyIOfA,1136
|
|
54
56
|
yearn_treasury/rules/ignore/swaps/_skip_tokens.py,sha256=_ZtBUDgYmuAeqggA6QwiX1gUwaaPocXQWbkoHnI3s9o,161
|
|
55
|
-
yearn_treasury/rules/ignore/swaps/aave.py,sha256=
|
|
56
|
-
yearn_treasury/rules/ignore/swaps/
|
|
57
|
-
yearn_treasury/rules/ignore/swaps/
|
|
57
|
+
yearn_treasury/rules/ignore/swaps/aave.py,sha256=JztS0Thqil5p15BO_ts-7MEqLHZ_lIQWjpNivRsgZS8,2890
|
|
58
|
+
yearn_treasury/rules/ignore/swaps/auctions.cp310-win32.pyd,sha256=8t3x4Y-f1uzXjd6zPJ_hHXVSuLJdDl0TGzqu-DymAGg,9216
|
|
59
|
+
yearn_treasury/rules/ignore/swaps/auctions.py,sha256=yKfPC-xhU95llOuR5ssNqg9_Q0nPGa4xOIn5YkmMEAQ,1068
|
|
60
|
+
yearn_treasury/rules/ignore/swaps/compound.py,sha256=guuz5LgpiLbToF0cS71mGv78AioSlvYNkKCiq7liwf8,2648
|
|
61
|
+
yearn_treasury/rules/ignore/swaps/conversion_factory.cp310-win32.pyd,sha256=S4TPvHud6Dk4PUKZyXgBRI6v36vNO7k5E5UH_SDTQl0,9216
|
|
58
62
|
yearn_treasury/rules/ignore/swaps/conversion_factory.py,sha256=eHD3koaUX9moWbRVNsenrwA-ABk7_SM2Q1-r9oZscKI,930
|
|
59
|
-
yearn_treasury/rules/ignore/swaps/cowswap.py,sha256=
|
|
60
|
-
yearn_treasury/rules/ignore/swaps/curve.py,sha256=
|
|
61
|
-
yearn_treasury/rules/ignore/swaps/gearbox.cp310-win32.pyd,sha256=
|
|
63
|
+
yearn_treasury/rules/ignore/swaps/cowswap.py,sha256=oqhiA2MsNCW5fhvgNCSr0II2zQjdcEdgEn80pnHE1uE,4145
|
|
64
|
+
yearn_treasury/rules/ignore/swaps/curve.py,sha256=tpXnTgNSrcvZAkk0xy4WPnssonKKnTJdirIjdCcZwWo,7440
|
|
65
|
+
yearn_treasury/rules/ignore/swaps/gearbox.cp310-win32.pyd,sha256=YvDBGj8Vk8nFtDv0yzVzU_k41IeTPi0eJ8g0pcaJZtE,9216
|
|
62
66
|
yearn_treasury/rules/ignore/swaps/gearbox.py,sha256=mFxtrSPCQUi-U-tO7bRgdzLbG7DHISRaGWJplaLwJgY,1141
|
|
63
|
-
yearn_treasury/rules/ignore/swaps/iearn.cp310-win32.pyd,sha256=
|
|
64
|
-
yearn_treasury/rules/ignore/swaps/iearn.py,sha256=
|
|
65
|
-
yearn_treasury/rules/ignore/swaps/otc.cp310-win32.pyd,sha256=
|
|
67
|
+
yearn_treasury/rules/ignore/swaps/iearn.cp310-win32.pyd,sha256=mzNmAIR3zMKS7zRoSprTgJWttNfrasAY8VwYaN8KSUE,9216
|
|
68
|
+
yearn_treasury/rules/ignore/swaps/iearn.py,sha256=pdYpS5Py7vvMR7EpSTs9DQADeAyWo4E-gmRVOqfpjtU,1578
|
|
69
|
+
yearn_treasury/rules/ignore/swaps/otc.cp310-win32.pyd,sha256=34H_sUxDZQ4OuXJKGx22cY-BnCYL0xnNtDgWg3fR0kE,9216
|
|
66
70
|
yearn_treasury/rules/ignore/swaps/otc.py,sha256=v0ztjqmxyO0GpebeaTAR-ycoOGd6_0zjTNljcj9eXWQ,2692
|
|
67
|
-
yearn_treasury/rules/ignore/swaps/pooltogether.cp310-win32.pyd,sha256
|
|
71
|
+
yearn_treasury/rules/ignore/swaps/pooltogether.cp310-win32.pyd,sha256=bg4u_fS_fl93xB-sQbG5Scf0yHz-6Sqt0mSvCe_qUXo,9216
|
|
68
72
|
yearn_treasury/rules/ignore/swaps/pooltogether.py,sha256=T42OdErDLoPV_hEEsxDz-Pa2pvIDvyRzMQnIprzRvw4,834
|
|
69
|
-
yearn_treasury/rules/ignore/swaps/synthetix.cp310-win32.pyd,sha256=
|
|
73
|
+
yearn_treasury/rules/ignore/swaps/synthetix.cp310-win32.pyd,sha256=PCsNnhglnhioFJSMwC0lUDibTSiCNG1EsEyWPJrEauM,9216
|
|
70
74
|
yearn_treasury/rules/ignore/swaps/synthetix.py,sha256=USI34Jrfdjc9hKAvyy77m0JpXu0jvPJ-GTWTUNn_Te8,378
|
|
71
|
-
yearn_treasury/rules/ignore/swaps/uniswap.py,sha256=
|
|
72
|
-
yearn_treasury/rules/ignore/swaps/unwrapper.cp310-win32.pyd,sha256=
|
|
75
|
+
yearn_treasury/rules/ignore/swaps/uniswap.py,sha256=p6LqtiQRIFXBGw5hmY6Cppg286hAHLPW1xAF6OHpXug,13428
|
|
76
|
+
yearn_treasury/rules/ignore/swaps/unwrapper.cp310-win32.pyd,sha256=zAmW1KRRM4ciiYMiVZlr36M0lmZqLHJXS38xkOjhEaw,9216
|
|
73
77
|
yearn_treasury/rules/ignore/swaps/unwrapper.py,sha256=FRVEq0jn7EWSp7Q_MvdJFLDXl-P2ujlVZXa1mqSvO0w,477
|
|
74
|
-
yearn_treasury/rules/ignore/swaps/vaults.cp310-win32.pyd,sha256=
|
|
75
|
-
yearn_treasury/rules/ignore/swaps/vaults.py,sha256=
|
|
76
|
-
yearn_treasury/rules/ignore/swaps/woofy.cp310-win32.pyd,sha256=
|
|
78
|
+
yearn_treasury/rules/ignore/swaps/vaults.cp310-win32.pyd,sha256=dVk5pkO_uwmxOS3JOkZaElptKiilyyYJHC1y-vFNQKM,9216
|
|
79
|
+
yearn_treasury/rules/ignore/swaps/vaults.py,sha256=n1eyPZdphw8FQSVsUgki2UMpmG892iHpo4n6p265pB4,10908
|
|
80
|
+
yearn_treasury/rules/ignore/swaps/woofy.cp310-win32.pyd,sha256=n6bBsIZ5M2NICh39qUCBqD0LQuB9fp6OoP-GdNtIzyQ,9216
|
|
77
81
|
yearn_treasury/rules/ignore/swaps/woofy.py,sha256=PWqrX7eH-IhD0PyhL-_zWEstDWNeC619gcnuFKp866U,3198
|
|
78
|
-
yearn_treasury/rules/ignore/swaps/yfi.
|
|
79
|
-
yearn_treasury/rules/ignore/swaps/
|
|
82
|
+
yearn_treasury/rules/ignore/swaps/yfi.cp310-win32.pyd,sha256=zbX186ZjWW0SM6O6jKjZYTov-Y3jMZ241Ho7wpmhx9I,9216
|
|
83
|
+
yearn_treasury/rules/ignore/swaps/yfi.py,sha256=kpWI0nqIKpAEWkXqNjr14lUCThkFS2p7GBAh2fTK78o,4862
|
|
84
|
+
yearn_treasury/rules/ignore/swaps/yla.cp310-win32.pyd,sha256=sderA5wjyTi4hznCzrLwaHHx10rSTrXYPQrBfv9T9Jc,9216
|
|
80
85
|
yearn_treasury/rules/ignore/swaps/yla.py,sha256=I2_18sZBsIsYEhPCexX0EayNaPoRqzmMr6yylGNq1AU,916
|
|
81
|
-
yearn_treasury/rules/other_expense/__init__.cp310-win32.pyd,sha256=
|
|
86
|
+
yearn_treasury/rules/other_expense/__init__.cp310-win32.pyd,sha256=8XUO-ZRL3oKK4CtXGgmkFsg4rTo_Naehs--F1wcVD-U,9216
|
|
82
87
|
yearn_treasury/rules/other_expense/__init__.py,sha256=K1lsFhNu4p7STAnuk_Bywbu45me5rBOTPRnuCJdcM8o,397
|
|
83
|
-
yearn_treasury/rules/other_expense/boost.cp310-win32.pyd,sha256=
|
|
88
|
+
yearn_treasury/rules/other_expense/boost.cp310-win32.pyd,sha256=FparkQCxNADijei_trntQdFlzRHyRcEfHkPK_VQO8GE,9216
|
|
84
89
|
yearn_treasury/rules/other_expense/boost.py,sha256=Ptd1Y-FI_pdNtQNavt4BMDw725kbvADirCva1ig4TQg,2741
|
|
85
|
-
yearn_treasury/rules/other_expense/bugs.cp310-win32.pyd,sha256=
|
|
90
|
+
yearn_treasury/rules/other_expense/bugs.cp310-win32.pyd,sha256=dwbluYUXXdgfNE9OGjiXjgwdZAdMTrHSDwZ8s8ypJ1c,9216
|
|
86
91
|
yearn_treasury/rules/other_expense/bugs.py,sha256=fxmOni4vM1D5hOkUVeQ-aIpIax015cF9W_Dt5zLvS1U,3095
|
|
87
|
-
yearn_treasury/rules/other_expense/donations.cp310-win32.pyd,sha256=
|
|
92
|
+
yearn_treasury/rules/other_expense/donations.cp310-win32.pyd,sha256=xhpMlISIQaAD7aovbcohOTjaSQlgAQ9dce45zShO1TU,9216
|
|
88
93
|
yearn_treasury/rules/other_expense/donations.py,sha256=RP6SU_q4TwQP48x_AnU6lefRWPgPPhPJ6Kv6NGovAPI,1309
|
|
89
|
-
yearn_treasury/rules/other_expense/dyfi.cp310-win32.pyd,sha256=
|
|
94
|
+
yearn_treasury/rules/other_expense/dyfi.cp310-win32.pyd,sha256=mIQD3qzhb0KjQrMSDSdzV-iwLFu7y6wo2MM4QvkDJ5M,9216
|
|
90
95
|
yearn_treasury/rules/other_expense/dyfi.py,sha256=xDTJlEywuYffKTBOdBlI0XeC4ZJw9wr4XWqgRc02mZg,948
|
|
91
|
-
yearn_treasury/rules/other_expense/events.cp310-win32.pyd,sha256=
|
|
96
|
+
yearn_treasury/rules/other_expense/events.cp310-win32.pyd,sha256=tIP4Q85twWR5P6SVeg4RVpXnRfneJhgDkBx5c4Gvd1Q,9216
|
|
92
97
|
yearn_treasury/rules/other_expense/events.py,sha256=LkNWmplmaLrre1IuaMBtCAmnaghZ7odIN5lIIJCYwy8,509
|
|
93
98
|
yearn_treasury/rules/other_expense/match_on_hash.yaml,sha256=t5uQPm5ShPJ54ehAQXotcLym-ttyvvqUy-Qr3HmkazY,2568
|
|
94
99
|
yearn_treasury/rules/other_expense/match_on_to_address.yaml,sha256=-vO99x1ULbHYtkdRjP8-9BFIZxAhAm6bxbpZuME5vg8,222
|
|
95
|
-
yearn_treasury/rules/other_expense/misc.cp310-win32.pyd,sha256=
|
|
100
|
+
yearn_treasury/rules/other_expense/misc.cp310-win32.pyd,sha256=GLl3SUBB6Pl63jRhYn9oPfo3PiNtKj2WTv4iQ5NGBWs,9216
|
|
96
101
|
yearn_treasury/rules/other_expense/misc.py,sha256=3zWC5xp3ACF4ODD1nJyGPqrjhX82RoYBBYNSkODWHTU,1703
|
|
97
|
-
yearn_treasury/rules/other_expense/revshare.cp310-win32.pyd,sha256=
|
|
102
|
+
yearn_treasury/rules/other_expense/revshare.cp310-win32.pyd,sha256=eyM0dl0ZoKOSyALTztB-HHibIZI4P6BD3QouaIK7fSQ,9216
|
|
98
103
|
yearn_treasury/rules/other_expense/revshare.py,sha256=PPihhs6TjeTCiRtWAAE-RO2rFIKmPA3f6--UYXi6p2I,531
|
|
99
|
-
yearn_treasury/rules/other_income/__init__.cp310-win32.pyd,sha256=
|
|
104
|
+
yearn_treasury/rules/other_income/__init__.cp310-win32.pyd,sha256=e9_qRN_FMNsHTrzJOhVREf-IAt3JJadZstDS-AljaWo,9216
|
|
100
105
|
yearn_treasury/rules/other_income/__init__.py,sha256=TgUNNtZrU4tMilawg6mLoiNCQpPHlRFITCNJWlHQCW8,112
|
|
101
|
-
yearn_treasury/rules/other_income/airdrops.cp310-win32.pyd,sha256=
|
|
106
|
+
yearn_treasury/rules/other_income/airdrops.cp310-win32.pyd,sha256=wRKiT8shah8_lsCBCPUsB_LWv8e-dXL3aKrLVp7gKO0,9216
|
|
102
107
|
yearn_treasury/rules/other_income/airdrops.py,sha256=5uAccRiPiraKziHOTJ3f7JVbsWtMNDiHA9lYaz-2rcI,1214
|
|
103
108
|
yearn_treasury/rules/other_income/match_on_hash.yaml,sha256=r1BVF0OJSUO9PVvU2hssNJQ7MFv-uX-au_-5Aq_hSwg,1179
|
|
104
|
-
yearn_treasury/rules/other_income/misc.cp310-win32.pyd,sha256=
|
|
105
|
-
yearn_treasury/rules/other_income/misc.py,sha256=
|
|
109
|
+
yearn_treasury/rules/other_income/misc.cp310-win32.pyd,sha256=JVEJTUUf32-m4VVOU6m9n5M18EzrhxN3BlC8mXSnh6k,9216
|
|
110
|
+
yearn_treasury/rules/other_income/misc.py,sha256=sTMy4xoXDzhxIh4ls5J4AaTx0nwYh7AjKnvPj3tKBtU,2614
|
|
106
111
|
yearn_treasury/rules/revenue/__init__.py,sha256=OsK33eSraGuaE2dcfMsmShUWSH0BQnACIVHsZ_2G6Ok,313
|
|
107
|
-
yearn_treasury/rules/revenue/bribes.cp310-win32.pyd,sha256=
|
|
112
|
+
yearn_treasury/rules/revenue/bribes.cp310-win32.pyd,sha256=_r30U9F3JH5AGF7668PcgutjuVPm4InZSES_7H_bLL4,9216
|
|
108
113
|
yearn_treasury/rules/revenue/bribes.py,sha256=oS5oWXNv8ScOH5ypKTdM4-bn9lF5XQ7p-gVSZZYk0Js,603
|
|
109
|
-
yearn_treasury/rules/revenue/farming.cp310-win32.pyd,sha256=
|
|
114
|
+
yearn_treasury/rules/revenue/farming.cp310-win32.pyd,sha256=FEF-P9yM1ZWQ8Apg6yJgKctA93CUyAKHVscu0lzBPfI,9216
|
|
110
115
|
yearn_treasury/rules/revenue/farming.py,sha256=sACJwLdQb8TpWU4v7lAwuSuRY_BkXja1QmeO_z036rQ,1895
|
|
111
|
-
yearn_treasury/rules/revenue/keepcoins.cp310-win32.pyd,sha256=
|
|
116
|
+
yearn_treasury/rules/revenue/keepcoins.cp310-win32.pyd,sha256=Xb4_9Tg4HB7stHKxIHaCWV6Ne2a-mXx6ejMdg7-gYGQ,9216
|
|
112
117
|
yearn_treasury/rules/revenue/keepcoins.py,sha256=DYs0GzewhkO9LkgmAscqQUSQxi80R18vN-_8Gg_CMxk,2037
|
|
113
118
|
yearn_treasury/rules/revenue/match_on_hash.yaml,sha256=RjfnJygGXNFTFzXO7ClX_EpXovu2QUrDQ9Dw4EbRAFs,167
|
|
114
|
-
yearn_treasury/rules/revenue/seasolver.cp310-win32.pyd,sha256=
|
|
119
|
+
yearn_treasury/rules/revenue/seasolver.cp310-win32.pyd,sha256=mQSKt9OChYtiUfT9EtuLN3SET9pXTm00FXNerRM8H7c,9216
|
|
115
120
|
yearn_treasury/rules/revenue/seasolver.py,sha256=w2OrfbmIKzuR6FlRhUYXAlO2Z076_vO8gTlzcLyQrUg,782
|
|
116
|
-
yearn_treasury/rules/revenue/vaults.py,sha256=
|
|
117
|
-
yearn_treasury/rules/revenue/yteams.cp310-win32.pyd,sha256=
|
|
121
|
+
yearn_treasury/rules/revenue/vaults.py,sha256=h1gaSTTGJGFUgW2POe8zkbB3_iI2HWvY89E5b5xOXXg,5507
|
|
122
|
+
yearn_treasury/rules/revenue/yteams.cp310-win32.pyd,sha256=1xArX6CktDSrqLwoFi7vAVMmFsh0D4Nz-s4D4Nqg4wo,9216
|
|
118
123
|
yearn_treasury/rules/revenue/yteams.py,sha256=K3QgNf8kz5mU97IU6rtXRV8gz0Gr69XhzyyyYo92BmE,637
|
|
119
|
-
yearn_treasury-0.0.
|
|
120
|
-
yearn_treasury-0.0.
|
|
121
|
-
yearn_treasury-0.0.
|
|
122
|
-
yearn_treasury-0.0.
|
|
123
|
-
yearn_treasury-0.0.
|
|
124
|
+
yearn_treasury-0.0.46.dist-info/METADATA,sha256=PlRVyfxJbicEcAcqxTAvYpPHY_egRn9ZWzqcT2WuRoM,3746
|
|
125
|
+
yearn_treasury-0.0.46.dist-info/WHEEL,sha256=GWZF0cboiU4MhsG0baPl8rrtCaXFSLW25384gp3vddM,97
|
|
126
|
+
yearn_treasury-0.0.46.dist-info/entry_points.txt,sha256=SNx2hP429dAQDEjY93mQADPgbPbdSRKoF8mUUtvH3g8,60
|
|
127
|
+
yearn_treasury-0.0.46.dist-info/top_level.txt,sha256=m6UZasCg7vJZr-GyXS_TRPPIzcC2n18kr8ZKdr4qu4Q,37
|
|
128
|
+
yearn_treasury-0.0.46.dist-info/RECORD,,
|
|
Binary file
|
|
Binary file
|
|
File without changes
|