ETH Price: $3,772.68 (+5.70%)

Contract

0xdFBD4F523Dd7532ff8af2430d9bE36D8D9421825
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Age:30D
Reset Filter

Transaction Hash
Method
Block
From
To

There are no matching entries

Update your filters to view other transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.2.8

Optimization Enabled:
N/A

Other Settings:
default evmVersion, MIT license

Contract Source Code (Vyper language format)

# @version ^0.2.0

interface UniswapV2Pair:
    def sync(): nonpayable

interface Stakable:
    def deposit(_account: address, _amount: uint256) -> bool: nonpayable
    def stake(_reward: uint256) -> bool: nonpayable
    def withdraw(_account: address) -> bool: nonpayable

event CommitOwnership:
    owner: address

event ApplyOwnership:
    owner: address


TOKEN: constant(address) = 0x674C6Ad92Fd080e4004b2312b45f796a192D27a0
MAX_PAIRS_LENGTH: constant(uint256) = 10 ** 3


uniswapPairs: public(address[MAX_PAIRS_LENGTH])
indexByPair: public(HashMap[address, uint256])
lastPairIndex: public(uint256)

author: public(address)
owner: public(address)
futureOwner: public(address)


@external
def __init__():
    self.author = msg.sender
    self.owner = msg.sender


@external
def deposit(_account: address, _amount: uint256) -> bool:
    assert msg.sender == self.owner or msg.sender == self.author, "owner only"
    return Stakable(TOKEN).deposit(_account, _amount)


@external
def stake(_reward: uint256) -> bool:
    assert msg.sender == self.owner or msg.sender == self.author, "owner only"
    assert Stakable(TOKEN).stake(_reward)

    _lastPairIndex: uint256 = self.lastPairIndex
    for i in range(1, MAX_PAIRS_LENGTH):
        if i > _lastPairIndex:
            break

        UniswapV2Pair(self.uniswapPairs[i]).sync()

    return True


@external
def withdraw(_account: address) -> bool:
    assert msg.sender == self.owner or msg.sender == self.author, "owner only"
    return Stakable(TOKEN).withdraw(_account)


@external
def addUniswapPair(_pair: address):
    assert msg.sender == self.owner or msg.sender == self.author, "owner only"
    assert _pair != ZERO_ADDRESS
    pairIndex: uint256 = self.indexByPair[_pair]
    assert pairIndex == 0, "pair is exist"

    pairIndex = self.lastPairIndex + 1
    self.uniswapPairs[pairIndex] = _pair
    self.indexByPair[_pair] = pairIndex
    self.lastPairIndex = pairIndex


@external
def removeUniswapPair(_pair: address):
    assert msg.sender == self.owner or msg.sender == self.author, "owner only"
    pairIndex: uint256 = self.indexByPair[_pair]
    assert pairIndex > 0, "pair is not exist"

    recentPairIndex: uint256 = self.lastPairIndex
    lastPair: address = self.uniswapPairs[recentPairIndex]

    self.uniswapPairs[pairIndex] = lastPair
    self.indexByPair[lastPair] = pairIndex
    self.indexByPair[_pair] = 0
    self.lastPairIndex = recentPairIndex - 1


@external
def transferOwnership(_futureOwner: address):
    assert msg.sender == self.owner or msg.sender == self.author, "owner only"
    self.futureOwner = _futureOwner
    log CommitOwnership(_futureOwner)


@external
def applyOwnership():
    assert msg.sender == self.owner or msg.sender == self.author, "owner only"
    _owner: address = self.futureOwner
    assert _owner != ZERO_ADDRESS, "owner not set"
    self.owner = _owner
    log ApplyOwnership(_owner)

Contract Security Audit

Contract ABI

[{"name":"CommitOwnership","inputs":[{"type":"address","name":"owner","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyOwnership","inputs":[{"type":"address","name":"owner","indexed":false}],"anonymous":false,"type":"event"},{"outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"name":"deposit","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_account"},{"type":"uint256","name":"_amount"}],"stateMutability":"nonpayable","type":"function","gas":3132},{"name":"stake","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"uint256","name":"_reward"}],"stateMutability":"nonpayable","type":"function","gas":3610746},{"name":"withdraw","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_account"}],"stateMutability":"nonpayable","type":"function","gas":3177},{"name":"addUniswapPair","outputs":[],"inputs":[{"type":"address","name":"_pair"}],"stateMutability":"nonpayable","type":"function","gas":109540},{"name":"removeUniswapPair","outputs":[],"inputs":[{"type":"address","name":"_pair"}],"stateMutability":"nonpayable","type":"function","gas":130509},{"name":"transferOwnership","outputs":[],"inputs":[{"type":"address","name":"_futureOwner"}],"stateMutability":"nonpayable","type":"function","gas":38591},{"name":"applyOwnership","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":39447},{"name":"uniswapPairs","outputs":[{"type":"address","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":1380},{"name":"indexByPair","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":1516},{"name":"lastPairIndex","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1331},{"name":"author","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1361},{"name":"owner","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1391},{"name":"futureOwner","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1421}]

33600355336004556108ce56341561000a57600080fd5b6004361015610018576108bc565b600035601c526347e7ef2460005114156101015760043560a01c1561003c57600080fd5b60045433141561004d576001610053565b60035433145b5b151561009f576308c379a061014052602061016052600a610180527f6f776e6572206f6e6c79000000000000000000000000000000000000000000006101a05261018050606461015cfd5b60206101e060446347e7ef2461014052600435610160526024356101805261015c600073674c6ad92fd080e4004b2312b45f796a192d27a05af16100e257600080fd5b601f3d116100ef57600080fd5b6000506101e05160005260206000f350005b63a694fc3a600051141561027757600454331415610120576001610126565b60035433145b5b1515610172576308c379a061014052602061016052600a610180527f6f776e6572206f6e6c79000000000000000000000000000000000000000000006101a05261018050606461015cfd5b60206101c0602463a694fc3a610140526004356101605261015c600073674c6ad92fd080e4004b2312b45f796a192d27a05af16101ae57600080fd5b601f3d116101bb57600080fd5b6000506101c0516101cb57600080fd5b6002546101405261016060016103e7818352015b610140516101605111156101f257610268565b610160516103e8811061020457600080fd5b600060c052602060c02001543b61021a57600080fd5b60006000600463fff6cae96101805261019c6000610160516103e8811061024057600080fd5b600060c052602060c02001545af161025757600080fd5b5b81516001018083528114156101df575b5050600160005260206000f350005b6351cff8d960005114156103535760043560a01c1561029557600080fd5b6004543314156102a65760016102ac565b60035433145b5b15156102f8576308c379a061014052602061016052600a610180527f6f776e6572206f6e6c79000000000000000000000000000000000000000000006101a05261018050606461015cfd5b60206101c060246351cff8d9610140526004356101605261015c600073674c6ad92fd080e4004b2312b45f796a192d27a05af161033457600080fd5b601f3d1161034157600080fd5b6000506101c05160005260206000f350005b63a7f404e260005114156104a65760043560a01c1561037157600080fd5b600454331415610382576001610388565b60035433145b5b15156103d4576308c379a061014052602061016052600a610180527f6f776e6572206f6e6c79000000000000000000000000000000000000000000006101a05261018050606461015cfd5b6000600435186103e357600080fd5b600160043560e05260c052604060c020546101405261014051151515610448576308c379a061016052602061018052600d6101a0527f70616972206973206578697374000000000000000000000000000000000000006101c0526101a050606461017cfd5b600254600181818301101561045c57600080fd5b8082019050905061014052600435610140516103e8811061047c57600080fd5b600060c052602060c020015561014051600160043560e05260c052604060c0205561014051600255005b63a6931ed760005114156106215760043560a01c156104c457600080fd5b6004543314156104d55760016104db565b60035433145b5b1515610527576308c379a061014052602061016052600a610180527f6f776e6572206f6e6c79000000000000000000000000000000000000000000006101a05261018050606461015cfd5b600160043560e05260c052604060c020546101405260006101405111151561058e576308c379a06101605260206101805260116101a0527f70616972206973206e6f742065786973740000000000000000000000000000006101c0526101a050606461017cfd5b60025461016052610160516103e881106105a757600080fd5b600060c052602060c02001546101805261018051610140516103e881106105cd57600080fd5b600060c052602060c02001556101405160016101805160e05260c052604060c020556000600160043560e05260c052604060c020556101605160018082101561061557600080fd5b80820390509050600255005b63f2fde38b60005114156106d85760043560a01c1561063f57600080fd5b600454331415610650576001610656565b60035433145b5b15156106a2576308c379a061014052602061016052600a610180527f6f776e6572206f6e6c79000000000000000000000000000000000000000000006101a05261018050606461015cfd5b600435600555600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b630119020760005114156107db576004543314156106f75760016106fd565b60035433145b5b1515610749576308c379a061014052602061016052600a610180527f6f776e6572206f6e6c79000000000000000000000000000000000000000000006101a05261018050606461015cfd5b60055461014052600061014051141515156107a3576308c379a061016052602061018052600d6101a0527f6f776e6572206e6f7420736574000000000000000000000000000000000000006101c0526101a050606461017cfd5b6101405160045561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b638397e9936000511415610811576004356103e881106107fa57600080fd5b600060c052602060c020015460005260206000f350005b636d124d26600051141561084b5760043560a01c1561082f57600080fd5b600160043560e05260c052604060c0205460005260206000f350005b63fea83b0860005114156108675760025460005260206000f350005b63a6c3e6b960005114156108835760035460005260206000f350005b638da5cb5b600051141561089f5760045460005260206000f350005b63b9e9d1aa60005114156108bb5760055460005260206000f350005b5b60006000fd5b61000c6108ce0361000c60003961000c6108ce036000f3

Deployed Bytecode

0x341561000a57600080fd5b6004361015610018576108bc565b600035601c526347e7ef2460005114156101015760043560a01c1561003c57600080fd5b60045433141561004d576001610053565b60035433145b5b151561009f576308c379a061014052602061016052600a610180527f6f776e6572206f6e6c79000000000000000000000000000000000000000000006101a05261018050606461015cfd5b60206101e060446347e7ef2461014052600435610160526024356101805261015c600073674c6ad92fd080e4004b2312b45f796a192d27a05af16100e257600080fd5b601f3d116100ef57600080fd5b6000506101e05160005260206000f350005b63a694fc3a600051141561027757600454331415610120576001610126565b60035433145b5b1515610172576308c379a061014052602061016052600a610180527f6f776e6572206f6e6c79000000000000000000000000000000000000000000006101a05261018050606461015cfd5b60206101c0602463a694fc3a610140526004356101605261015c600073674c6ad92fd080e4004b2312b45f796a192d27a05af16101ae57600080fd5b601f3d116101bb57600080fd5b6000506101c0516101cb57600080fd5b6002546101405261016060016103e7818352015b610140516101605111156101f257610268565b610160516103e8811061020457600080fd5b600060c052602060c02001543b61021a57600080fd5b60006000600463fff6cae96101805261019c6000610160516103e8811061024057600080fd5b600060c052602060c02001545af161025757600080fd5b5b81516001018083528114156101df575b5050600160005260206000f350005b6351cff8d960005114156103535760043560a01c1561029557600080fd5b6004543314156102a65760016102ac565b60035433145b5b15156102f8576308c379a061014052602061016052600a610180527f6f776e6572206f6e6c79000000000000000000000000000000000000000000006101a05261018050606461015cfd5b60206101c060246351cff8d9610140526004356101605261015c600073674c6ad92fd080e4004b2312b45f796a192d27a05af161033457600080fd5b601f3d1161034157600080fd5b6000506101c05160005260206000f350005b63a7f404e260005114156104a65760043560a01c1561037157600080fd5b600454331415610382576001610388565b60035433145b5b15156103d4576308c379a061014052602061016052600a610180527f6f776e6572206f6e6c79000000000000000000000000000000000000000000006101a05261018050606461015cfd5b6000600435186103e357600080fd5b600160043560e05260c052604060c020546101405261014051151515610448576308c379a061016052602061018052600d6101a0527f70616972206973206578697374000000000000000000000000000000000000006101c0526101a050606461017cfd5b600254600181818301101561045c57600080fd5b8082019050905061014052600435610140516103e8811061047c57600080fd5b600060c052602060c020015561014051600160043560e05260c052604060c0205561014051600255005b63a6931ed760005114156106215760043560a01c156104c457600080fd5b6004543314156104d55760016104db565b60035433145b5b1515610527576308c379a061014052602061016052600a610180527f6f776e6572206f6e6c79000000000000000000000000000000000000000000006101a05261018050606461015cfd5b600160043560e05260c052604060c020546101405260006101405111151561058e576308c379a06101605260206101805260116101a0527f70616972206973206e6f742065786973740000000000000000000000000000006101c0526101a050606461017cfd5b60025461016052610160516103e881106105a757600080fd5b600060c052602060c02001546101805261018051610140516103e881106105cd57600080fd5b600060c052602060c02001556101405160016101805160e05260c052604060c020556000600160043560e05260c052604060c020556101605160018082101561061557600080fd5b80820390509050600255005b63f2fde38b60005114156106d85760043560a01c1561063f57600080fd5b600454331415610650576001610656565b60035433145b5b15156106a2576308c379a061014052602061016052600a610180527f6f776e6572206f6e6c79000000000000000000000000000000000000000000006101a05261018050606461015cfd5b600435600555600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b630119020760005114156107db576004543314156106f75760016106fd565b60035433145b5b1515610749576308c379a061014052602061016052600a610180527f6f776e6572206f6e6c79000000000000000000000000000000000000000000006101a05261018050606461015cfd5b60055461014052600061014051141515156107a3576308c379a061016052602061018052600d6101a0527f6f776e6572206e6f7420736574000000000000000000000000000000000000006101c0526101a050606461017cfd5b6101405160045561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b638397e9936000511415610811576004356103e881106107fa57600080fd5b600060c052602060c020015460005260206000f350005b636d124d26600051141561084b5760043560a01c1561082f57600080fd5b600160043560e05260c052604060c0205460005260206000f350005b63fea83b0860005114156108675760025460005260206000f350005b63a6c3e6b960005114156108835760035460005260206000f350005b638da5cb5b600051141561089f5760045460005260206000f350005b63b9e9d1aa60005114156108bb5760055460005260206000f350005b5b60006000fd

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.