ETH Price: $1,972.37 (+0.19%)
 

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
Transfer164596812023-01-22 3:33:111127 days ago1674358391IN
0x3459cfCe...FBD94c87B
0 ETH0.000374815.58058944

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
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:
Vyper_contract

Compiler Version
vyper:0.2.15

Optimization Enabled:
N/A

Other Settings:
default evmVersion, MIT license

Contract Source Code (Vyper language format)

# @version 0.2.15

"""
@title Bare-bones Token implementation
@notice Based on the ERC-20 token standard as defined at
        https://eips.ethereum.org/EIPS/eip-20
"""

from vyper.interfaces import ERC20

implements: ERC20


event Approval:
    owner: indexed(address)
    spender: indexed(address)
    value: uint256

event Transfer:
    sender: indexed(address)
    receiver: indexed(address)
    value: uint256

name: public(String[64]) 
symbol: public(String[32])
decimals: public(uint256)
totalSupply: public(uint256)

owner: public(address) 

balances: HashMap[address, uint256]
allowances: HashMap[address, HashMap[address, uint256]]

@external
def __init__():
        self.name = "PACDAO GOV"
        self.symbol = "PAC-G"
        self.decimals = 18
        self.totalSupply = 0
        self.owner = 0xf27AC88ac7e80487f21e5c2C847290b2AE5d7B8e 
@view
@external
def balanceOf(_owner: address) -> uint256:
    """
    @notice Getter to check the current balance of an address
    @param _owner Address to query the balance of
    @return Token balance
    """
    return self.balances[_owner]


@view
@external
def allowance(_owner : address, _spender : address) -> uint256:
    """
    @notice Getter to check the amount of tokens that an owner allowed to a spender
    @param _owner The address which owns the funds
    @param _spender The address which will spend the funds
    @return The amount of tokens still available for the spender
    """
    return self.allowances[_owner][_spender]


@external
def approve(_spender : address, _value : uint256) -> bool:
    """
    @notice Approve an address to spend the specified amount of tokens on behalf of msg.sender
    @dev Beware that changing an allowance with this method brings the risk that someone may use both the old
         and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
         race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
         https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    @param _spender The address which will spend the funds.
    @param _value The amount of tokens to be spent.
    @return Success boolean
    """
    self.allowances[msg.sender][_spender] = _value
    log Approval(msg.sender, _spender, _value)
    return True


@internal
def _transfer(_from: address, _to: address, _value: uint256):
    """
    @dev Internal shared logic for transfer and transferFrom
    """
    assert self.balances[_from] >= _value, "Insufficient balance"
    self.balances[_from] -= _value
    self.balances[_to] += _value
    log Transfer(_from, _to, _value)


@external
def transfer(_to : address, _value : uint256) -> bool:
    """
    @notice Transfer tokens to a specified address
    @dev Vyper does not allow underflows, so attempting to transfer more
         tokens than an account has will revert
    @param _to The address to transfer to
    @param _value The amount to be transferred
    @return Success boolean
    """
    assert _to == self.owner, "No transfer"
    self._transfer(msg.sender, _to, _value)
    return True



@external
def transferFrom(_from : address, _to : address, _value : uint256) -> bool:
    """
    @notice Transfer tokens from one address to another
    @dev Vyper does not allow underflows, so attempting to transfer more
         tokens than an account has will revert
    @param _from The address which you want to send tokens from
    @param _to The address which you want to transfer to
    @param _value The amount of tokens to be transferred
    @return Success boolean
    """
    assert _to == self.owner, "No transfer"
    assert self.allowances[_from][msg.sender] >= _value, "Insufficient allowance"
    self.allowances[_from][msg.sender] -= _value
    self._transfer(_from, _to, _value)
    return True

# Mint Functions

@internal
def _mint(_to : address, _value : uint256):
    self.balances[_to] += _value
    self.totalSupply += _value
    log Transfer(ZERO_ADDRESS, _to, _value)



@external
def mint(_to : address, _value : uint256):
    assert self.owner == msg.sender, "Only owner"
    self._mint(_to, _value)

@external
def mintMany(_to_list : address[8], _value_list : uint256[8]):
    assert self.owner == msg.sender, "Only owner"
    for i in range(8):
        if _to_list[i] != ZERO_ADDRESS:
                self._mint(_to_list[i], _value_list[i])


@external
def transferOwner(_new_owner : address):
    assert self.owner == msg.sender, "Only owner"
    self.owner = _new_owner

Contract Security Audit

Contract ABI

API
[{"name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true},{"name":"spender","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Transfer","inputs":[{"name":"sender","type":"address","indexed":true},{"name":"receiver","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"_owner","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":2603},{"stateMutability":"view","type":"function","name":"allowance","inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":2848},{"stateMutability":"nonpayable","type":"function","name":"approve","inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":37791},{"stateMutability":"nonpayable","type":"function","name":"transfer","inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":82629},{"stateMutability":"nonpayable","type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":122724},{"stateMutability":"nonpayable","type":"function","name":"mint","inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[],"gas":80184},{"stateMutability":"nonpayable","type":"function","name":"mintMany","inputs":[{"name":"_to_list","type":"address[8]"},{"name":"_value_list","type":"uint256[8]"}],"outputs":[],"gas":624913},{"stateMutability":"nonpayable","type":"function","name":"transferOwner","inputs":[{"name":"_new_owner","type":"address"}],"outputs":[],"gas":37784},{"stateMutability":"view","type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string"}],"gas":12858},{"stateMutability":"view","type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string"}],"gas":10611},{"stateMutability":"view","type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2688},{"stateMutability":"view","type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2718},{"stateMutability":"view","type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2748}]

600a610140527f50414344414f20474f560000000000000000000000000000000000000000000061016052610140806000602082510161012060006002818352015b8261012051602002111561005457610076565b61012051602002850151610120518501555b8151600101808352811415610041575b5050505050506005610140527f5041432d4700000000000000000000000000000000000000000000000000000061016052610140806004602082510161012060006002818352015b826101205160200211156100d1576100f3565b61012051602002850151610120518501555b81516001018083528114156100be575b5050505050506012600755600060085573f27ac88ac7e80487f21e5c2c847290b2ae5d7b8e60095561092e56600436101561000d57610677565b600035601c5260005134610809576370a0823181141561004b5760043560a01c61080957600a60043560e05260c052604060c0205460005260206000f35b63dd62ed3e8114156100935760043560a01c6108095760243560a01c61080957600b60043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b63095ea7b38114156101065760043560a01c61080957602435600b3360e05260c052604060c02060043560e05260c052604060c0205560243561014052600435337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256020610140a3600160005260206000f35b63a9059cbb8114156101a25760043560a01c610809576009546004351461016c576308c379a061014052602061016052600b610180527f4e6f207472616e736665720000000000000000000000000000000000000000006101a05261018050606461015cfd5b336101405260043561016052602435610180526101805161016051610140516006580161067d565b600050600160005260206000f35b6323b872dd8114156102e75760043560a01c6108095760243560a01c6108095760095460243514610212576308c379a061014052602061016052600b610180527f4e6f207472616e736665720000000000000000000000000000000000000000006101a05261018050606461015cfd5b604435600b60043560e05260c052604060c0203360e05260c052604060c02054101561027d576308c379a0610140526020610160526016610180527f496e73756666696369656e7420616c6c6f77616e6365000000000000000000006101a05261018050606461015cfd5b600b60043560e05260c052604060c0203360e05260c052604060c020805460443580821061080957808203905090508155506004356101405260243561016052604435610180526101805161016051610140516006580161067d565b600050600160005260206000f35b6340c10f1981141561036f5760043560a01c61080957336009541461034b576308c379a061014052602061016052600a610180527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006101a05261018050606461015cfd5b600435610140526024356101605261016051610140516006580161077d565b600050005b639fc84400811415610487576000610120525b610120516004013560a01c6108095760206101205101610120526101006101205110156103ae57610382565b33600954146103fc576308c379a061014052602061016052600a610180527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006101a05261018050606461015cfd5b61014060006008818352015b60006004610140516008811015610809576020020135181561047257610140516004610140516008811015610809576020020135610160526101046101405160088110156108095760200201356101805261018051610160516006580161077d565b610140526000505b5b8151600101808352811415610408575b5050005b634fb2e45d8114156104f35760043560a01c6108095733600954146104eb576308c379a061014052602061016052600a610180527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006101a05261018050606461015cfd5b600435600955005b6306fdde0381141561059057600080610180602082540161012060006003818352015b826101205160200211156105295761054b565b61012051850154610120516020028501525b8151600101808352811415610516575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b6395d89b4181141561062d57600480610180602082540161012060006002818352015b826101205160200211156105c6576105e8565b61012051850154610120516020028501525b81516001018083528114156105b3575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b63313ce5678114156106455760075460005260206000f35b6318160ddd81141561065d5760085460005260206000f35b638da5cb5b8114156106755760095460005260206000f35b505b60006000fd5b6101a05261014052610160526101805261018051600a6101405160e05260c052604060c0205410156106ee576308c379a06101c05260206101e0526014610200527f496e73756666696369656e742062616c616e6365000000000000000000000000610220526102005060646101dcfd5b600a6101405160e05260c052604060c0208054610180518082106108095780820390509050815550600a6101605160e05260c052604060c02080546101805181818301106108095780820190509050815550610180516101c05261016051610140517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206101c0a36101a051565b610180526101405261016052600a6101405160e05260c052604060c02080546101605181818301106108095780820190509050815550600880546101605181818301106108095780820190509050815550610160516101a0526101405160007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206101a0a361018051565b600080fd5b61012061092e0361012060003961012061092e036000f3

Deployed Bytecode

0x600436101561000d57610677565b600035601c5260005134610809576370a0823181141561004b5760043560a01c61080957600a60043560e05260c052604060c0205460005260206000f35b63dd62ed3e8114156100935760043560a01c6108095760243560a01c61080957600b60043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b63095ea7b38114156101065760043560a01c61080957602435600b3360e05260c052604060c02060043560e05260c052604060c0205560243561014052600435337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256020610140a3600160005260206000f35b63a9059cbb8114156101a25760043560a01c610809576009546004351461016c576308c379a061014052602061016052600b610180527f4e6f207472616e736665720000000000000000000000000000000000000000006101a05261018050606461015cfd5b336101405260043561016052602435610180526101805161016051610140516006580161067d565b600050600160005260206000f35b6323b872dd8114156102e75760043560a01c6108095760243560a01c6108095760095460243514610212576308c379a061014052602061016052600b610180527f4e6f207472616e736665720000000000000000000000000000000000000000006101a05261018050606461015cfd5b604435600b60043560e05260c052604060c0203360e05260c052604060c02054101561027d576308c379a0610140526020610160526016610180527f496e73756666696369656e7420616c6c6f77616e6365000000000000000000006101a05261018050606461015cfd5b600b60043560e05260c052604060c0203360e05260c052604060c020805460443580821061080957808203905090508155506004356101405260243561016052604435610180526101805161016051610140516006580161067d565b600050600160005260206000f35b6340c10f1981141561036f5760043560a01c61080957336009541461034b576308c379a061014052602061016052600a610180527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006101a05261018050606461015cfd5b600435610140526024356101605261016051610140516006580161077d565b600050005b639fc84400811415610487576000610120525b610120516004013560a01c6108095760206101205101610120526101006101205110156103ae57610382565b33600954146103fc576308c379a061014052602061016052600a610180527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006101a05261018050606461015cfd5b61014060006008818352015b60006004610140516008811015610809576020020135181561047257610140516004610140516008811015610809576020020135610160526101046101405160088110156108095760200201356101805261018051610160516006580161077d565b610140526000505b5b8151600101808352811415610408575b5050005b634fb2e45d8114156104f35760043560a01c6108095733600954146104eb576308c379a061014052602061016052600a610180527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006101a05261018050606461015cfd5b600435600955005b6306fdde0381141561059057600080610180602082540161012060006003818352015b826101205160200211156105295761054b565b61012051850154610120516020028501525b8151600101808352811415610516575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b6395d89b4181141561062d57600480610180602082540161012060006002818352015b826101205160200211156105c6576105e8565b61012051850154610120516020028501525b81516001018083528114156105b3575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b63313ce5678114156106455760075460005260206000f35b6318160ddd81141561065d5760085460005260206000f35b638da5cb5b8114156106755760095460005260206000f35b505b60006000fd5b6101a05261014052610160526101805261018051600a6101405160e05260c052604060c0205410156106ee576308c379a06101c05260206101e0526014610200527f496e73756666696369656e742062616c616e6365000000000000000000000000610220526102005060646101dcfd5b600a6101405160e05260c052604060c0208054610180518082106108095780820390509050815550600a6101605160e05260c052604060c02080546101805181818301106108095780820190509050815550610180516101c05261016051610140517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206101c0a36101a051565b610180526101405261016052600a6101405160e05260c052604060c02080546101605181818301106108095780820190509050815550600880546101605181818301106108095780820190509050815550610160516101a0526101405160007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206101a0a361018051565b600080fd

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.