ETH Price: $2,051.00 (+3.89%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Deploy_gauge211698572024-11-12 6:37:23475 days ago1731393443IN
0x43CfC64f...a022E0b91
0 ETH0.0065499725.26617143
Deploy_gauge208406902024-09-27 8:13:11521 days ago1727424791IN
0x43CfC64f...a022E0b91
0 ETH0.0035551911.71630692
Deploy_gauge203785872024-07-24 19:48:11585 days ago1721850491IN
0x43CfC64f...a022E0b91
0 ETH0.000958763.70096352
Deploy_gauge203785822024-07-24 19:47:11585 days ago1721850431IN
0x43CfC64f...a022E0b91
0 ETH0.0009093.50892236
Deploy_gauge203785782024-07-24 19:46:23585 days ago1721850383IN
0x43CfC64f...a022E0b91
0 ETH0.000924933.57043804
Deploy_gauge202853072024-07-11 19:18:11598 days ago1720725491IN
0x43CfC64f...a022E0b91
0 ETH0.001537695.09045473
Deploy_gauge200393102024-06-07 10:19:11633 days ago1717755551IN
0x43CfC64f...a022E0b91
0 ETH0.0033742411.17026594
Deploy_gauge200393032024-06-07 10:17:47633 days ago1717755467IN
0x43CfC64f...a022E0b91
0 ETH0.0037318712.35416752
Deploy_gauge195744252024-04-03 9:42:35698 days ago1712137355IN
0x43CfC64f...a022E0b91
0 ETH0.0056123321.66465307
Deploy_gauge195744222024-04-03 9:41:59698 days ago1712137319IN
0x43CfC64f...a022E0b91
0 ETH0.0063461524.4973098
Deploy_gauge195744182024-04-03 9:41:11698 days ago1712137271IN
0x43CfC64f...a022E0b91
0 ETH0.0060381523.30837887
Set_management195740602024-04-03 8:28:35698 days ago1712132915IN
0x43CfC64f...a022E0b91
0 ETH0.0009638820.52477495
Set_implementati...195740552024-04-03 8:27:35698 days ago1712132855IN
0x43CfC64f...a022E0b91
0 ETH0.0011007421.08781132
Set_legacy_gauge...195740512024-04-03 8:26:47698 days ago1712132807IN
0x43CfC64f...a022E0b91
0 ETH0.0029090120.38082633
Set_gauge_owner195740462024-04-03 8:25:47698 days ago1712132747IN
0x43CfC64f...a022E0b91
0 ETH0.0005867719.72170857

Latest 11 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
0x602d3d81211698572024-11-12 6:37:23475 days ago1731393443
0x43CfC64f...a022E0b91
 Contract Creation0 ETH
0x602d3d81208406902024-09-27 8:13:11521 days ago1727424791
0x43CfC64f...a022E0b91
 Contract Creation0 ETH
0x602d3d81203785872024-07-24 19:48:11585 days ago1721850491
0x43CfC64f...a022E0b91
 Contract Creation0 ETH
0x602d3d81203785822024-07-24 19:47:11585 days ago1721850431
0x43CfC64f...a022E0b91
 Contract Creation0 ETH
0x602d3d81203785782024-07-24 19:46:23585 days ago1721850383
0x43CfC64f...a022E0b91
 Contract Creation0 ETH
0x602d3d81202853072024-07-11 19:18:11598 days ago1720725491
0x43CfC64f...a022E0b91
 Contract Creation0 ETH
0x602d3d81200393102024-06-07 10:19:11633 days ago1717755551
0x43CfC64f...a022E0b91
 Contract Creation0 ETH
0x602d3d81200393032024-06-07 10:17:47633 days ago1717755467
0x43CfC64f...a022E0b91
 Contract Creation0 ETH
0x602d3d81195744252024-04-03 9:42:35698 days ago1712137355
0x43CfC64f...a022E0b91
 Contract Creation0 ETH
0x602d3d81195744222024-04-03 9:41:59698 days ago1712137319
0x43CfC64f...a022E0b91
 Contract Creation0 ETH
0x602d3d81195744182024-04-03 9:41:11698 days ago1712137271
0x43CfC64f...a022E0b91
 Contract Creation0 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Gauge factory

Compiler Version
vyper:0.3.10

Optimization Enabled:
N/A

Other Settings:
default evmVersion, GNU AGPLv3 license
# @version 0.3.10
"""
@title Gauge factory
@author Yearn Finance
@license GNU AGPLv3
@notice
    Permissionless deployment of gauges.
    Gauges are minimal proxies to a gauge implementation contract
"""

interface Gauge:
    def initialize(_asset: address, _owner: address, _controller: address, _data: Bytes[1024]): nonpayable

management: public(address)
pending_management: public(address)
version: public(uint256)
implementation: public(address)
gauge_owner: public(address)
controller: public(address)
gauge_versions: public(HashMap[address, uint256])

event GaugeDeployed:
    asset: indexed(address)
    gauge: address

event SetImplementation:
    version: uint256
    implementation: address

event SetGaugeOwner:
    owner: address

event SetController:
    controller: address

event PendingManagement:
    management: indexed(address)

event SetManagement:
    management: indexed(address)

event SetLegacyGauge:
    gauge: address

@external
def __init__(_controller: address):
    """
    @notice Constructor
    @param _controller Gauge controller
    """
    self.management = msg.sender
    self.gauge_owner = msg.sender
    self.version = 1
    self.controller = _controller

@external
def deploy_gauge(_asset: address, _data: Bytes[1024] = b"") -> address:
    """
    @notice Deploy a new gauge
    @param _asset The underlying asset for the gauge
    @param _data Additional data to pass on to the gauge during initialization (unused)
    """
    assert _asset != empty(address)
    version: uint256 = self.version
    assert version > 1

    gauge: address = create_minimal_proxy_to(self.implementation)
    Gauge(gauge).initialize(_asset, self.gauge_owner, self.controller, _data)
    self.gauge_versions[gauge] = version
    log GaugeDeployed(_asset, gauge)
    return gauge

@external
def set_implementation(_implementation: address) -> uint256:
    """
    @notice Set a new gauge implementation contract
    @param _implementation Implementation contract address
    @return New gauge version number
    @dev Only callable by management
    """
    
    assert msg.sender == self.management
    assert _implementation != empty(address)
    version: uint256 = self.version + 1
    self.version = version
    self.implementation = _implementation
    log SetImplementation(version, _implementation)
    return version

@external
def set_gauge_owner(_gauge_owner: address):
    """
    @notice Set a new owner for future gauges
    @param _gauge_owner New gauge owner
    @dev Only callable by management
    """
    assert msg.sender == self.management
    self.gauge_owner = _gauge_owner
    log SetGaugeOwner(_gauge_owner)

@external
def set_controller(_controller: address):
    """
    @notice Set a new gauge controller
    @param _controller New gauge controller
    @dev Only callable by management
    """
    assert msg.sender == self.management
    assert _controller != empty(address)
    self.controller = _controller
    log SetController(_controller)

@external
def set_legacy_gauges(_gauges: DynArray[address, 8]):
    """
    @notice Mark gauges as legacy
    @param _gauges Gauges to be marked
    @dev Only callable by management
    """
    assert msg.sender == self.management
    for gauge in _gauges:
        assert self.gauge_versions[gauge] == 0
        self.gauge_versions[gauge] = 1
        log SetLegacyGauge(gauge)

@external
def set_management(_management: address):
    """
    @notice 
        Set the pending management address.
        Needs to be accepted by that account separately to transfer management over
    @param _management New pending management address
    """
    assert msg.sender == self.management
    self.pending_management = _management
    log PendingManagement(_management)

@external
def accept_management():
    """
    @notice 
        Accept management role.
        Can only be called by account previously marked as pending management by current management
    """
    assert msg.sender == self.pending_management
    self.pending_management = empty(address)
    self.management = msg.sender
    log SetManagement(msg.sender)

Contract Security Audit

Contract ABI

API
[{"name":"GaugeDeployed","inputs":[{"name":"asset","type":"address","indexed":true},{"name":"gauge","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetImplementation","inputs":[{"name":"version","type":"uint256","indexed":false},{"name":"implementation","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetGaugeOwner","inputs":[{"name":"owner","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetController","inputs":[{"name":"controller","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"PendingManagement","inputs":[{"name":"management","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"name":"SetManagement","inputs":[{"name":"management","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"name":"SetLegacyGauge","inputs":[{"name":"gauge","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_controller","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"deploy_gauge","inputs":[{"name":"_asset","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"deploy_gauge","inputs":[{"name":"_asset","type":"address"},{"name":"_data","type":"bytes"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"set_implementation","inputs":[{"name":"_implementation","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"set_gauge_owner","inputs":[{"name":"_gauge_owner","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_controller","inputs":[{"name":"_controller","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_legacy_gauges","inputs":[{"name":"_gauges","type":"address[]"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_management","inputs":[{"name":"_management","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"accept_management","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"management","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"pending_management","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"implementation","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"gauge_owner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"controller","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"gauge_versions","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]}]

3461003c5760206106335f395f518060a01c61003c57604052335f553360045560016002556040516005556105de610040610000396105de610000f35b5f80fd5f3560e01c60026012820660011b6105ba01601e395f51565b6388a8d60281186105b257346105b6575f5460405260206040f36105b2565b63770817ec811861005357346105b65760015460405260206040f35b63759be10c81186105b257346105b65760015433186105b6575f600155335f55337fafe23f9e1f603b288748a507d5a993957e9f14313a5889d5a070851299939d595f6040a2006105b2565b6354fd4d5081186100bb57346105b65760025460405260206040f35b6391b10ffa81186105b2576024361034176105b6576004358060a01c6105b6576040525f5433186105b657604051156105b6576040516005557f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f7060405160605260206060a1006105b2565b635c60da1b811861014257346105b65760035460405260206040f35b6320a2806f81186105b2576064361034176105b6576024356004016104008135116105b6576020813501808260603750505b6004358060a01c6105b657604052604051156105b6576002546104a05260026104a051106105b6577f602d3d8160093d39f3363d3d373d3d3d363d73000000000000000000000000006104e05260035460601b6104f3527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006105075260366104e05ff080156105b6576104c0526104c05163246581f76104e052608060405161050052600454610520526005546105405280610560528061050001602060605101808282606060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081015050803b156105b6575f6104e06104a46104fc5f855af1610286573d5f5f3e3d5ffd5b506104a05160066104c0516020525f5260405f20556040517f84c1e815d16f55e70a8f12eb8017c6b7d2e5818e20c50f2a1ab8dfb499bbef816104c0516104e05260206104e0a260206104c0f36105b2565b633bcc0d6081186105b257346105b65760045460405260206040f36105b2565b63f77c479181186105b257346105b65760055460405260206040f36105b2565b63a0d4b9078118610353576024361034176105b6576004358060a01c6105b65760405260066040516020525f5260405f205460605260206060f35b63db8841f981186105b2576024361034176105b6576004358060a01c6105b6576040525f5433186105b6576040516004557fe7d030fd2f522eab3cc530fbeac1ac5bfca50103f86598e27fd68858b9ec945e60405160605260206060a1006105b2565b6396bebb3481186103d4576024361034176105b6575f606052610174565b63fd066ecc81186105b2576024361034176105b6576004358060a01c6105b6576040525f5433186105b6576040516001556040517fe7b5cc087e6e47e33e86bdfe4720b7e849891938b18ff6e0c3f92299de79e60c5f6060a2006105b2565b634cd69da081186105b2576024361034176105b6576004358060a01c6105b6576040525f5433186105b657604051156105b657600254600181018181106105b65790506060526060516002556040516003557f4fd8aff94c186c46f9cb59b997817eef25192df5239dcd06745f371c72b66d8560605160805260405160a05260406080a160206060f36105b2565b63db50956d81186105b2576044361034176105b65760043560040160088135116105b65780355f81600881116105b657801561051e57905b8060051b6020850101358060a01c6105b6578160051b606001526001018181186104f9575b50508060405250505f5433186105b6575f604051600881116105b65780156105ae57905b8060051b60600151610160526006610160516020525f5260405f20546105b65760016006610160516020525f5260405f20557ff3c0dc6dc3817acb93f08bfd8574aa71a8a74fa39deb4995f798a9c765fff65d61016051610180526020610180a1600101818118610542575b5050005b5f5ffd5b5f80fd05b205b2009f05b2043302f802d80126003705b2001805b203b605b205b2031805b204c1841905de81182400a16576797065728300030a001500000000000000000000000046b38522422d597ddbaa2d6e98d6c9b397028d5b

Deployed Bytecode

0x5f3560e01c60026012820660011b6105ba01601e395f51565b6388a8d60281186105b257346105b6575f5460405260206040f36105b2565b63770817ec811861005357346105b65760015460405260206040f35b63759be10c81186105b257346105b65760015433186105b6575f600155335f55337fafe23f9e1f603b288748a507d5a993957e9f14313a5889d5a070851299939d595f6040a2006105b2565b6354fd4d5081186100bb57346105b65760025460405260206040f35b6391b10ffa81186105b2576024361034176105b6576004358060a01c6105b6576040525f5433186105b657604051156105b6576040516005557f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f7060405160605260206060a1006105b2565b635c60da1b811861014257346105b65760035460405260206040f35b6320a2806f81186105b2576064361034176105b6576024356004016104008135116105b6576020813501808260603750505b6004358060a01c6105b657604052604051156105b6576002546104a05260026104a051106105b6577f602d3d8160093d39f3363d3d373d3d3d363d73000000000000000000000000006104e05260035460601b6104f3527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006105075260366104e05ff080156105b6576104c0526104c05163246581f76104e052608060405161050052600454610520526005546105405280610560528061050001602060605101808282606060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081015050803b156105b6575f6104e06104a46104fc5f855af1610286573d5f5f3e3d5ffd5b506104a05160066104c0516020525f5260405f20556040517f84c1e815d16f55e70a8f12eb8017c6b7d2e5818e20c50f2a1ab8dfb499bbef816104c0516104e05260206104e0a260206104c0f36105b2565b633bcc0d6081186105b257346105b65760045460405260206040f36105b2565b63f77c479181186105b257346105b65760055460405260206040f36105b2565b63a0d4b9078118610353576024361034176105b6576004358060a01c6105b65760405260066040516020525f5260405f205460605260206060f35b63db8841f981186105b2576024361034176105b6576004358060a01c6105b6576040525f5433186105b6576040516004557fe7d030fd2f522eab3cc530fbeac1ac5bfca50103f86598e27fd68858b9ec945e60405160605260206060a1006105b2565b6396bebb3481186103d4576024361034176105b6575f606052610174565b63fd066ecc81186105b2576024361034176105b6576004358060a01c6105b6576040525f5433186105b6576040516001556040517fe7b5cc087e6e47e33e86bdfe4720b7e849891938b18ff6e0c3f92299de79e60c5f6060a2006105b2565b634cd69da081186105b2576024361034176105b6576004358060a01c6105b6576040525f5433186105b657604051156105b657600254600181018181106105b65790506060526060516002556040516003557f4fd8aff94c186c46f9cb59b997817eef25192df5239dcd06745f371c72b66d8560605160805260405160a05260406080a160206060f36105b2565b63db50956d81186105b2576044361034176105b65760043560040160088135116105b65780355f81600881116105b657801561051e57905b8060051b6020850101358060a01c6105b6578160051b606001526001018181186104f9575b50508060405250505f5433186105b6575f604051600881116105b65780156105ae57905b8060051b60600151610160526006610160516020525f5260405f20546105b65760016006610160516020525f5260405f20557ff3c0dc6dc3817acb93f08bfd8574aa71a8a74fa39deb4995f798a9c765fff65d61016051610180526020610180a1600101818118610542575b5050005b5f5ffd5b5f80fd05b205b2009f05b2043302f802d80126003705b2001805b203b605b205b2031805b204c1

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000046b38522422d597ddbaa2d6e98d6c9b397028d5b

-----Decoded View---------------
Arg [0] : _controller (address): 0x46b38522422D597dDbAA2D6E98D6C9b397028d5B

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000046b38522422d597ddbaa2d6e98d6c9b397028d5b


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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.