Overview
ETH Balance
0 ETH
Eth Value
$0.00Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Vyper_contract
Compiler Version
vyper:0.3.7
Contract Source Code (Vyper language format)
# @version 0.3.7
"""
@author fiddy
@notice Calculates the circulating supply of Curve DAO token.
@dev The returned circulating supply is an estimate. There might be
contracts that are not yet accounted for. Should you find one,
please contact the core dev team.
"""
from vyper.interfaces import ERC20
admin: public(address)
CRV: public(constant(address)) = 0xD533a949740bb3306d119CC777fa900bA034cd52
contracts: public(address[100000])
num_contracts: public(uint256)
LEN_CACHED_CONTRACTS: constant(uint256) = 18
cached_contracts: public(constant(address[LEN_CACHED_CONTRACTS])) = [
0x41Df5d28C7e801c4df0aB33421E2ed6ce52D2567, # new employees
0x2b6509Ca3D0FB2CD1c00F354F119aa139f118bb3, # vesting
0xe3997288987E6297Ad550A69B31439504F513267, # community fund
0xd061D61a4d941c39E5453435B6345Dc261C2fcE0, # token minter
0xd2D43555134dC575BF7279F4bA18809645dB0F1D, # founder
0x2A7d59E327759acd5d11A8fb652Bf4072d28AC04, # investors
0xa445521569E93D8a87820E593bC9C51C0123da08, # vesting
0xD533a949740bb3306d119CC777fa900bA034cd52, # crv token
0xf22995a3EA2C83F6764c711115B23A88411CAfdd, # vesting
0x575CCD8e2D300e2377B43478339E364000318E2c, # LPs
0x5f3b5DfEb7B28CDbD7FAba78963EE202a494e2A2, # veCRV
0xf7dBC322d72C1788a1E37eEE738e2eA9C7Fa875e, # vesting
0x679FCB9b33Fc4AE10Ff4f96caeF49c1ae3F8fA67, # employees
0x81930D767a75269dC0E9b83938884E342c1Fa5F6,
0x629347824016530Fcd9a1990a30658ed9a04C834,
0x967E923269475d1Af5718581Ab10bBC6a6154861,
0xf049ae8D0dDccDD63d479e38aC3C51C4EE64fC2C,
0x730E9aF9B71D5F41a1EA211347B888024A76612A,
]
@external
def __init__():
self.admin = msg.sender
self.num_contracts = 18
@external
def add_contract(_contract: address):
"""
@notice Adds a contract to the list of contracts to
check for CRV balances
@param _contract Address of the contract to cache
"""
assert msg.sender == self.admin
self._add_contract(_contract)
@external
@view
def circulating_supply() -> uint256:
"""
@notice Returns the circulating supply of CRV
"""
crv_total_supply: uint256 = ERC20(CRV).totalSupply()
not_circulating: uint256 = self._get_crv_balances_of_cached_contracts()
return crv_total_supply - not_circulating
@external
def set_admin(_new_admin: address):
"""
@notice Set admin. Only callable by current admin.
@dev We can do lazy admin transfer since this is not a critical contract
@param _new_admin The new admin address
"""
assert msg.sender == self.admin
self.admin = _new_admin
@internal
def _add_contract(_contract: address):
assert _contract not in self.contracts
self.contracts[self.num_contracts] = _contract
self.num_contracts += 1
@internal
@view
def _get_crv_balances_of_cached_contracts() -> uint256:
balances: uint256 = 0
for i in range(LEN_CACHED_CONTRACTS):
balances += ERC20(CRV).balanceOf(cached_contracts[i])
for i in range(10000):
if self.contracts[i] == empty(address):
break
balances += ERC20(CRV).balanceOf(self.contracts[i])
return balancesContract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"stateMutability":"nonpayable","type":"constructor","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"add_contract","inputs":[{"name":"_contract","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"circulating_supply","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"set_admin","inputs":[{"name":"_new_admin","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"CRV","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"contracts","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"num_contracts","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"cached_contracts","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]}]Contract Creation Code
3461072d57336000556012620186a15561070b6100216100003961070b610000f36003361161000c5761039a565b60003560e01c346106f957637fab635d811861005157602436106106f9576004358060a01c6106f95760805260005433186106f95760805160405261004f6103a0565b005b63e038c75a81186100e157600436106106f9576318160ddd610320526020610320600461033c73d533a949740bb3306d119cc777fa900ba034cd525afa61009d573d600060003e3d6000fd5b60203d106106f95761032051610300526100b861034061040b565b610340516103205261030051610320518082038281116106f95790509050610340526020610340f35b63e9333fab811861011357602436106106f9576004358060a01c6106f95760405260005433186106f957604051600055005b63f851a440811861013257600436106106f95760005460405260206040f35b63945c9142811861016357600436106106f95773d533a949740bb3306d119cc777fa900ba034cd5260405260206040f35b63474da79a811861019057602436106106f9576004356201869f81116106f9576001015460405260206040f35b63af13c9a081186101b157600436106106f957620186a15460405260206040f35b63903b21f3811861039857602436106106f95760207341df5d28c7e801c4df0ab33421e2ed6ce52d2567604052732b6509ca3d0fb2cd1c00f354f119aa139f118bb360605273e3997288987e6297ad550a69b31439504f51326760805273d061d61a4d941c39e5453435b6345dc261c2fce060a05273d2d43555134dc575bf7279f4ba18809645db0f1d60c052732a7d59e327759acd5d11a8fb652bf4072d28ac0460e05273a445521569e93d8a87820e593bc9c51c0123da086101005273d533a949740bb3306d119cc777fa900ba034cd526101205273f22995a3ea2c83f6764c711115b23a88411cafdd6101405273575ccd8e2d300e2377b43478339e364000318e2c61016052735f3b5dfeb7b28cdbd7faba78963ee202a494e2a26101805273f7dbc322d72c1788a1e37eee738e2ea9c7fa875e6101a05273679fcb9b33fc4ae10ff4f96caef49c1ae3f8fa676101c0527381930d767a75269dc0e9b83938884e342c1fa5f66101e05273629347824016530fcd9a1990a30658ed9a04c8346102005273967e923269475d1af5718581ab10bbc6a61548616102205273f049ae8d0ddccdd63d479e38ac3c51c4ee64fc2c6102405273730e9af9b71d5f41a1ea211347b888024a76612a610260526040600435601181116106f95760051b81019050f35b505b60006000fd5b60405160016060526000620186a0905b806001015483186103c55760006060526103d0565b6001018181186103b0575b50506060519050156106f957604051620186a1546201869f81116106f95760010155620186a154600181018181106106f9579050620186a155565b600060405260006012905b806060526040516370a082316102c0527341df5d28c7e801c4df0ab33421e2ed6ce52d2567608052732b6509ca3d0fb2cd1c00f354f119aa139f118bb360a05273e3997288987e6297ad550a69b31439504f51326760c05273d061d61a4d941c39e5453435b6345dc261c2fce060e05273d2d43555134dc575bf7279f4ba18809645db0f1d61010052732a7d59e327759acd5d11a8fb652bf4072d28ac046101205273a445521569e93d8a87820e593bc9c51c0123da086101405273d533a949740bb3306d119cc777fa900ba034cd526101605273f22995a3ea2c83f6764c711115b23a88411cafdd6101805273575ccd8e2d300e2377b43478339e364000318e2c6101a052735f3b5dfeb7b28cdbd7faba78963ee202a494e2a26101c05273f7dbc322d72c1788a1e37eee738e2ea9c7fa875e6101e05273679fcb9b33fc4ae10ff4f96caef49c1ae3f8fa67610200527381930d767a75269dc0e9b83938884e342c1fa5f66102205273629347824016530fcd9a1990a30658ed9a04c8346102405273967e923269475d1af5718581ab10bbc6a61548616102605273f049ae8d0ddccdd63d479e38ac3c51c4ee64fc2c6102805273730e9af9b71d5f41a1ea211347b888024a76612a6102a0526080606051601181116106f95760051b81019050516102e05260206102c060246102dc73d533a949740bb3306d119cc777fa900ba034cd525afa61062d573d600060003e3d6000fd5b60203d106106f9576102c0518082018281106106f957905090506040526001018181186104165750506000612710905b806060526060516201869f81116106f9576001015461067b576106ef565b6040516370a082316080526060516201869f81116106f9576001015460a052602060806024609c73d533a949740bb3306d119cc777fa900ba034cd525afa6106c8573d600060003e3d6000fd5b60203d106106f9576080518082018281106106f9579050905060405260010181811861065d575b5050604051815250565b600080fda165767970657283000307000b005b600080fd
Deployed Bytecode
0x6003361161000c5761039a565b60003560e01c346106f957637fab635d811861005157602436106106f9576004358060a01c6106f95760805260005433186106f95760805160405261004f6103a0565b005b63e038c75a81186100e157600436106106f9576318160ddd610320526020610320600461033c73d533a949740bb3306d119cc777fa900ba034cd525afa61009d573d600060003e3d6000fd5b60203d106106f95761032051610300526100b861034061040b565b610340516103205261030051610320518082038281116106f95790509050610340526020610340f35b63e9333fab811861011357602436106106f9576004358060a01c6106f95760405260005433186106f957604051600055005b63f851a440811861013257600436106106f95760005460405260206040f35b63945c9142811861016357600436106106f95773d533a949740bb3306d119cc777fa900ba034cd5260405260206040f35b63474da79a811861019057602436106106f9576004356201869f81116106f9576001015460405260206040f35b63af13c9a081186101b157600436106106f957620186a15460405260206040f35b63903b21f3811861039857602436106106f95760207341df5d28c7e801c4df0ab33421e2ed6ce52d2567604052732b6509ca3d0fb2cd1c00f354f119aa139f118bb360605273e3997288987e6297ad550a69b31439504f51326760805273d061d61a4d941c39e5453435b6345dc261c2fce060a05273d2d43555134dc575bf7279f4ba18809645db0f1d60c052732a7d59e327759acd5d11a8fb652bf4072d28ac0460e05273a445521569e93d8a87820e593bc9c51c0123da086101005273d533a949740bb3306d119cc777fa900ba034cd526101205273f22995a3ea2c83f6764c711115b23a88411cafdd6101405273575ccd8e2d300e2377b43478339e364000318e2c61016052735f3b5dfeb7b28cdbd7faba78963ee202a494e2a26101805273f7dbc322d72c1788a1e37eee738e2ea9c7fa875e6101a05273679fcb9b33fc4ae10ff4f96caef49c1ae3f8fa676101c0527381930d767a75269dc0e9b83938884e342c1fa5f66101e05273629347824016530fcd9a1990a30658ed9a04c8346102005273967e923269475d1af5718581ab10bbc6a61548616102205273f049ae8d0ddccdd63d479e38ac3c51c4ee64fc2c6102405273730e9af9b71d5f41a1ea211347b888024a76612a610260526040600435601181116106f95760051b81019050f35b505b60006000fd5b60405160016060526000620186a0905b806001015483186103c55760006060526103d0565b6001018181186103b0575b50506060519050156106f957604051620186a1546201869f81116106f95760010155620186a154600181018181106106f9579050620186a155565b600060405260006012905b806060526040516370a082316102c0527341df5d28c7e801c4df0ab33421e2ed6ce52d2567608052732b6509ca3d0fb2cd1c00f354f119aa139f118bb360a05273e3997288987e6297ad550a69b31439504f51326760c05273d061d61a4d941c39e5453435b6345dc261c2fce060e05273d2d43555134dc575bf7279f4ba18809645db0f1d61010052732a7d59e327759acd5d11a8fb652bf4072d28ac046101205273a445521569e93d8a87820e593bc9c51c0123da086101405273d533a949740bb3306d119cc777fa900ba034cd526101605273f22995a3ea2c83f6764c711115b23a88411cafdd6101805273575ccd8e2d300e2377b43478339e364000318e2c6101a052735f3b5dfeb7b28cdbd7faba78963ee202a494e2a26101c05273f7dbc322d72c1788a1e37eee738e2ea9c7fa875e6101e05273679fcb9b33fc4ae10ff4f96caef49c1ae3f8fa67610200527381930d767a75269dc0e9b83938884e342c1fa5f66102205273629347824016530fcd9a1990a30658ed9a04c8346102405273967e923269475d1af5718581ab10bbc6a61548616102605273f049ae8d0ddccdd63d479e38ac3c51c4ee64fc2c6102805273730e9af9b71d5f41a1ea211347b888024a76612a6102a0526080606051601181116106f95760051b81019050516102e05260206102c060246102dc73d533a949740bb3306d119cc777fa900ba034cd525afa61062d573d600060003e3d6000fd5b60203d106106f9576102c0518082018281106106f957905090506040526001018181186104165750506000612710905b806060526060516201869f81116106f9576001015461067b576106ef565b6040516370a082316080526060516201869f81116106f9576001015460a052602060806024609c73d533a949740bb3306d119cc777fa900ba034cd525afa6106c8573d600060003e3d6000fd5b60203d106106f9576080518082018281106106f9579050905060405260010181811861065d575b5050604051815250565b600080fda165767970657283000307000b
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.