ERC-20
Overview
Max Total Supply
200,000 LVB
Holders
18
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 4 Decimals)
Balance
471.5832 LVBValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Vyper_contract
Compiler Version
vyper:0.2.4
Contract Source Code (Vyper language format)
# Contract created by Oswald Castro y Riverberg # https://www.oswaldriverberg.com/ or https://www.oswaldriverberg.art/ # 34% contract ownership is representative of artwork onwership on a FIFO basis. # Artwork details: La Vanille Bourbon - Plantation Paralels # An introspection on the impact of climate change on one of the most expensive spices in the world. # In 2017, vanilla crops of Madagascar were damaged by tropical cyclones which skyrocketed the prices # of the commodity and led to the emergence of a crime wave targeting vanilla farmers. # Oswald Castro y Riverberg, # Madagascar, 2019 # Acrylic on canvas # 75cm by 40cm, 29.13in. by 15.74 in. # # Ownership threshold: # 34% of $LVB maximum supply (102,000 LVB) is required for the smart contract to authenticate an automatic transfer of ownership. from vyper.interfaces import ERC20 implements: ERC20 event Transfer: sender: indexed(address) receiver: indexed(address) value: uint256 event Approval: owner: indexed(address) spender: indexed(address) value: uint256 owner: public(address) newOwner: address name: public(String[64]) symbol: public(String[32]) decimals: public(uint256) max_supply: public(uint256) ownership_threshold: public(uint256) balanceOf: public(HashMap[address, uint256]) allowances: HashMap[address, HashMap[address, uint256]] total_supply: uint256 minter: address @external def __init__(_name: String[64], _symbol: String[32], _decimals: uint256, _supply: uint256, _max_supply: uint256, _ownership_threshold: uint256): init_supply: uint256 = _supply * 10 ** _decimals self.owner = msg.sender self.name = _name self.symbol = _symbol self.decimals = _decimals self.balanceOf[msg.sender] = init_supply self.total_supply = init_supply self.max_supply = _max_supply * 10 ** _decimals self.ownership_threshold = (_max_supply * _ownership_threshold / 100) * 10 ** _decimals self.minter = msg.sender log Transfer(ZERO_ADDRESS, msg.sender, init_supply) @view @external def totalSupply() -> uint256: """ @dev Total number of tokens in existence. """ return self.total_supply @external def ownershipTransfer(_newOwner: address): """ @def Function to transfer ownership to a new address after crossing a defined threshold """ assert msg.sender != self.owner, "You are already the owner." assert _newOwner != ZERO_ADDRESS, "Invalid address." if self.balanceOf[_newOwner] >= self.ownership_threshold: self.minter = _newOwner self.owner = _newOwner else: raise "Insufficient Balance for Ownership transfer." @view @external def allowance(_owner : address, _spender : address) -> uint256: """ @dev Function 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 An uint256 specifying the amount of tokens still available for the spender. """ return self.allowances[_owner][_spender] @external def transfer(_to : address, _value : uint256) -> bool: """ @dev Transfer token for a specified address @param _to The address to transfer to. @param _value The amount to be transferred. """ # NOTE: vyper does not allow underflows # so the following subtraction would revert on insufficient balance self.balanceOf[msg.sender] -= _value self.balanceOf[_to] += _value log Transfer(msg.sender, _to, _value) return True @external def transferFrom(_from : address, _to : address, _value : uint256) -> bool: """ @dev Transfer tokens from one address to another. @param _from address The address which you want to send tokens from @param _to address The address which you want to transfer to @param _value uint256 the amount of tokens to be transferred """ # NOTE: vyper does not allow underflows # so the following subtraction would revert on insufficient balance self.balanceOf[_from] -= _value self.balanceOf[_to] += _value # NOTE: vyper does not allow underflows # so the following subtraction would revert on insufficient allowance self.allowances[_from][msg.sender] -= _value log Transfer(_from, _to, _value) return True @external def approve(_spender : address, _value : uint256) -> bool: """ @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. 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. """ self.allowances[msg.sender][_spender] = _value log Approval(msg.sender, _spender, _value) return True @external def mint(_to: address, _value: uint256): """ @dev Mint an amount of the token and assigns it to an account. This encapsulates the modification of balances such that the proper events are emitted. @param _to The account that will receive the created tokens. @param _value The amount that will be created. """ if (self.total_supply + _value) <= self.max_supply: assert msg.sender == self.minter assert _to != ZERO_ADDRESS, "Invalid Address." self.total_supply += _value self.balanceOf[_to] += _value log Transfer(ZERO_ADDRESS, _to, _value) else: raise "Unable to mint over the stipulated max supply." @internal def _burn(_to: address, _value: uint256): """ @dev Internal function that burns an amount of the token of a given account. @param _to The account whose tokens will be burned. @param _value The amount that will be burned. """ assert _to != ZERO_ADDRESS self.total_supply -= _value self.balanceOf[_to] -= _value log Transfer(_to, ZERO_ADDRESS, _value) @external def burn(_value: uint256): """ @dev Burn an amount of the token of msg.sender. @param _value The amount that will be burned. """ self._burn(msg.sender, _value)
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"Transfer","inputs":[{"type":"address","name":"sender","indexed":true},{"type":"address","name":"receiver","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false,"type":"event"},{"name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false,"type":"event"},{"outputs":[],"inputs":[{"type":"string","name":"_name"},{"type":"string","name":"_symbol"},{"type":"uint256","name":"_decimals"},{"type":"uint256","name":"_supply"},{"type":"uint256","name":"_max_supply"},{"type":"uint256","name":"_ownership_threshold"}],"stateMutability":"nonpayable","type":"constructor"},{"name":"totalSupply","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1151},{"name":"ownershipTransfer","outputs":[],"inputs":[{"type":"address","name":"_newOwner"}],"stateMutability":"nonpayable","type":"function","gas":73292},{"name":"allowance","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"_owner"},{"type":"address","name":"_spender"}],"stateMutability":"view","type":"function","gas":1519},{"name":"transfer","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"stateMutability":"nonpayable","type":"function","gas":74802},{"name":"transferFrom","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_from"},{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"stateMutability":"nonpayable","type":"function","gas":111096},{"name":"approve","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_spender"},{"type":"uint256","name":"_value"}],"stateMutability":"nonpayable","type":"function","gas":37883},{"name":"mint","outputs":[],"inputs":[{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"stateMutability":"nonpayable","type":"function","gas":77640},{"name":"burn","outputs":[],"inputs":[{"type":"uint256","name":"_value"}],"stateMutability":"nonpayable","type":"function","gas":75593},{"name":"owner","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1421},{"name":"name","outputs":[{"type":"string","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":7853},{"name":"symbol","outputs":[{"type":"string","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":6906},{"name":"decimals","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1511},{"name":"max_supply","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1541},{"name":"ownership_threshold","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1571},{"name":"balanceOf","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":1755}]
Contract Creation Code
740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a05260c0610ce56101403934156100a157600080fd5b60606020610ce560c03960c051610ce5016102003960406020610ce560c03960c0516004013511156100d257600080fd5b604060206020610ce50160c03960c051610ce50161028039602060206020610ce50160c03960c05160040135111561010957600080fd5b6101a051604e610180511061011d57600080fd5b61018051600a0a808202821582848304141761013857600080fd5b809050905090506102e0523360005561020080600260c052602060c020602082510161012060006003818352015b826101205160200211156101795761019b565b61012051602002850151610120518501555b8151600101808352811415610166575b50505050505061028080600360c052602060c020602082510161012060006002818352015b826101205160200211156101d3576101f5565b61012051602002850151610120518501555b81516001018083528114156101c0575b505050505050610180516004556102e05160073360e05260c052604060c020556102e0516009556101c051604e610180511061023057600080fd5b61018051600a0a808202821582848304141761024b57600080fd5b809050905090506005556101c0516101e051808202821582848304141761027157600080fd5b809050905090506064808061028557600080fd5b820490509050604e610180511061029b57600080fd5b61018051600a0a80820282158284830414176102b657600080fd5b8090509050905060065533600a556102e051610300523360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610300a3610ccd56600436101561000d576109cc565b600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a0526318160ddd60005114156100c85734156100ba57600080fd5b60095460005260206000f350005b63d3a417a2600051141561022f5734156100e157600080fd5b60043560205181106100f257600080fd5b506308c379a061014052602061016052601a610180527f596f752061726520616c726561647920746865206f776e65722e0000000000006101a05261018050600054331861014157606461015cfd5b6308c379a06101e0526020610200526010610220527f496e76616c696420616464726573732e0000000000000000000000000000000061024052610220506000600435186101905760646101fcfd5b600654600760043560e05260c052604060c020541015156101bc57600435600a5560043560005561022d565b6308c379a06102805260206102a052602c6102c0527f496e73756666696369656e742042616c616e636520666f72204f776e657273686102e0527f6970207472616e736665722e0000000000000000000000000000000000000000610300526102c050600061022c57608461029cfd5b5b005b63dd62ed3e600051141561029657341561024857600080fd5b600435602051811061025957600080fd5b50602435602051811061026b57600080fd5b50600860043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f350005b63a9059cbb60005114156103585734156102af57600080fd5b60043560205181106102c057600080fd5b5060073360e05260c052604060c0208054602435808210156102e157600080fd5b80820390509050815550600760043560e05260c052604060c020805460243581818301101561030f57600080fd5b8082019050905081555060243561014052600435337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610140a3600160005260206000f350005b6323b872dd600051141561046857341561037157600080fd5b600435602051811061038257600080fd5b50602435602051811061039457600080fd5b50600760043560e05260c052604060c0208054604435808210156103b757600080fd5b80820390509050815550600760243560e05260c052604060c02080546044358181830110156103e557600080fd5b80820190509050815550600860043560e05260c052604060c0203360e05260c052604060c02080546044358082101561041d57600080fd5b80820390509050815550604435610140526024356004357fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610140a3600160005260206000f350005b63095ea7b360005114156104f257341561048157600080fd5b600435602051811061049257600080fd5b5060243560083360e05260c052604060c02060043560e05260c052604060c0205560243561014052600435337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256020610140a3600160005260206000f350005b6340c10f19600051141561069957341561050b57600080fd5b600435602051811061051c57600080fd5b5060055460095460243581818301101561053557600080fd5b8082019050905011151561062657600a54331461055157600080fd5b6308c379a0610200526020610220526010610240527f496e76616c696420416464726573732e0000000000000000000000000000000061026052610240506000600435186105a057606461021cfd5b600980546024358181830110156105b657600080fd5b80820190509050815550600760043560e05260c052604060c02080546024358181830110156105e457600080fd5b808201905090508155506024356102a05260043560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206102a0a3610697565b6308c379a061014052602061016052602e610180527f556e61626c6520746f206d696e74206f766572207468652073746970756c61746101a0527f6564206d617820737570706c792e0000000000000000000000000000000000006101c05261018050600061069657608461015cfd5b5b005b600015610745575b610180526101405261016052600061014051186106bd57600080fd5b6009805461016051808210156106d257600080fd5b8082039050905081555060076101405160e05260c052604060c0208054610160518082101561070057600080fd5b80820390509050815550610160516101a0526000610140517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206101a0a361018051565b6342966c68600051141561078057341561075e57600080fd5b3361014052600435610160526101605161014051600658016106a1565b600050005b638da5cb5b60005114156107a757341561079957600080fd5b60005460005260206000f350005b6306fdde03600051141561085b5734156107c057600080fd5b60028060c052602060c020610180602082540161012060006003818352015b826101205160200211156107f257610814565b61012051850154610120516020028501525b81516001018083528114156107df575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f350005b6395d89b41600051141561090f57341561087457600080fd5b60038060c052602060c020610180602082540161012060006002818352015b826101205160200211156108a6576108c8565b61012051850154610120516020028501525b8151600101808352811415610893575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f350005b63313ce567600051141561093657341561092857600080fd5b60045460005260206000f350005b638a333b50600051141561095d57341561094f57600080fd5b60055460005260206000f350005b63e4dce753600051141561098457341561097657600080fd5b60065460005260206000f350005b6370a0823160005114156109cb57341561099d57600080fd5b60043560205181106109ae57600080fd5b50600760043560e05260c052604060c0205460005260206000f350005b5b60006000fd5b6102fb610ccd036102fb6000396102fb610ccd036000f300000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000030d4000000000000000000000000000000000000000000000000000000000000493e0000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000104c6156616e696c6c65426f7572626f6e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034c56420000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x600436101561000d576109cc565b600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a0526318160ddd60005114156100c85734156100ba57600080fd5b60095460005260206000f350005b63d3a417a2600051141561022f5734156100e157600080fd5b60043560205181106100f257600080fd5b506308c379a061014052602061016052601a610180527f596f752061726520616c726561647920746865206f776e65722e0000000000006101a05261018050600054331861014157606461015cfd5b6308c379a06101e0526020610200526010610220527f496e76616c696420616464726573732e0000000000000000000000000000000061024052610220506000600435186101905760646101fcfd5b600654600760043560e05260c052604060c020541015156101bc57600435600a5560043560005561022d565b6308c379a06102805260206102a052602c6102c0527f496e73756666696369656e742042616c616e636520666f72204f776e657273686102e0527f6970207472616e736665722e0000000000000000000000000000000000000000610300526102c050600061022c57608461029cfd5b5b005b63dd62ed3e600051141561029657341561024857600080fd5b600435602051811061025957600080fd5b50602435602051811061026b57600080fd5b50600860043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f350005b63a9059cbb60005114156103585734156102af57600080fd5b60043560205181106102c057600080fd5b5060073360e05260c052604060c0208054602435808210156102e157600080fd5b80820390509050815550600760043560e05260c052604060c020805460243581818301101561030f57600080fd5b8082019050905081555060243561014052600435337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610140a3600160005260206000f350005b6323b872dd600051141561046857341561037157600080fd5b600435602051811061038257600080fd5b50602435602051811061039457600080fd5b50600760043560e05260c052604060c0208054604435808210156103b757600080fd5b80820390509050815550600760243560e05260c052604060c02080546044358181830110156103e557600080fd5b80820190509050815550600860043560e05260c052604060c0203360e05260c052604060c02080546044358082101561041d57600080fd5b80820390509050815550604435610140526024356004357fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610140a3600160005260206000f350005b63095ea7b360005114156104f257341561048157600080fd5b600435602051811061049257600080fd5b5060243560083360e05260c052604060c02060043560e05260c052604060c0205560243561014052600435337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256020610140a3600160005260206000f350005b6340c10f19600051141561069957341561050b57600080fd5b600435602051811061051c57600080fd5b5060055460095460243581818301101561053557600080fd5b8082019050905011151561062657600a54331461055157600080fd5b6308c379a0610200526020610220526010610240527f496e76616c696420416464726573732e0000000000000000000000000000000061026052610240506000600435186105a057606461021cfd5b600980546024358181830110156105b657600080fd5b80820190509050815550600760043560e05260c052604060c02080546024358181830110156105e457600080fd5b808201905090508155506024356102a05260043560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206102a0a3610697565b6308c379a061014052602061016052602e610180527f556e61626c6520746f206d696e74206f766572207468652073746970756c61746101a0527f6564206d617820737570706c792e0000000000000000000000000000000000006101c05261018050600061069657608461015cfd5b5b005b600015610745575b610180526101405261016052600061014051186106bd57600080fd5b6009805461016051808210156106d257600080fd5b8082039050905081555060076101405160e05260c052604060c0208054610160518082101561070057600080fd5b80820390509050815550610160516101a0526000610140517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206101a0a361018051565b6342966c68600051141561078057341561075e57600080fd5b3361014052600435610160526101605161014051600658016106a1565b600050005b638da5cb5b60005114156107a757341561079957600080fd5b60005460005260206000f350005b6306fdde03600051141561085b5734156107c057600080fd5b60028060c052602060c020610180602082540161012060006003818352015b826101205160200211156107f257610814565b61012051850154610120516020028501525b81516001018083528114156107df575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f350005b6395d89b41600051141561090f57341561087457600080fd5b60038060c052602060c020610180602082540161012060006002818352015b826101205160200211156108a6576108c8565b61012051850154610120516020028501525b8151600101808352811415610893575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f350005b63313ce567600051141561093657341561092857600080fd5b60045460005260206000f350005b638a333b50600051141561095d57341561094f57600080fd5b60055460005260206000f350005b63e4dce753600051141561098457341561097657600080fd5b60065460005260206000f350005b6370a0823160005114156109cb57341561099d57600080fd5b60043560205181106109ae57600080fd5b50600760043560e05260c052604060c0205460005260206000f350005b5b60006000fd
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000030d4000000000000000000000000000000000000000000000000000000000000493e0000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000104c6156616e696c6c65426f7572626f6e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034c56420000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): LaVanilleBourbon
Arg [1] : _symbol (string): LVB
Arg [2] : _decimals (uint256): 4
Arg [3] : _supply (uint256): 200000
Arg [4] : _max_supply (uint256): 300000
Arg [5] : _ownership_threshold (uint256): 34
-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [3] : 0000000000000000000000000000000000000000000000000000000000030d40
Arg [4] : 00000000000000000000000000000000000000000000000000000000000493e0
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000022
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000010
Arg [7] : 4c6156616e696c6c65426f7572626f6e00000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [9] : 4c56420000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.