Vyper language preview
1. Token contract
decorators, types, and events
horizon-dark
# @version 0.3.10
balances: public(HashMap[address, uint256])
event Transfer:
sender: indexed(address)
receiver: indexed(address)
amount: uint256
@external
def transfer(to: address, amount: uint256) -> bool:
assert self.balances[msg.sender] >= amount, "insufficient balance"
self.balances[msg.sender] -= amount
self.balances[to] += amount
log Transfer(msg.sender, to, amount)
return True atom-one-dark
# @version 0.3.10
balances: public(HashMap[address, uint256])
event Transfer:
sender: indexed(address)
receiver: indexed(address)
amount: uint256
@external
def transfer(to: address, amount: uint256) -> bool:
assert self.balances[msg.sender] >= amount, "insufficient balance"
self.balances[msg.sender] -= amount
self.balances[to] += amount
log Transfer(msg.sender, to, amount)
return True github-dark
# @version 0.3.10
balances: public(HashMap[address, uint256])
event Transfer:
sender: indexed(address)
receiver: indexed(address)
amount: uint256
@external
def transfer(to: address, amount: uint256) -> bool:
assert self.balances[msg.sender] >= amount, "insufficient balance"
self.balances[msg.sender] -= amount
self.balances[to] += amount
log Transfer(msg.sender, to, amount)
return True dracula
# @version 0.3.10
balances: public(HashMap[address, uint256])
event Transfer:
sender: indexed(address)
receiver: indexed(address)
amount: uint256
@external
def transfer(to: address, amount: uint256) -> bool:
assert self.balances[msg.sender] >= amount, "insufficient balance"
self.balances[msg.sender] -= amount
self.balances[to] += amount
log Transfer(msg.sender, to, amount)
return True nord
# @version 0.3.10
balances: public(HashMap[address, uint256])
event Transfer:
sender: indexed(address)
receiver: indexed(address)
amount: uint256
@external
def transfer(to: address, amount: uint256) -> bool:
assert self.balances[msg.sender] >= amount, "insufficient balance"
self.balances[msg.sender] -= amount
self.balances[to] += amount
log Transfer(msg.sender, to, amount)
return True github
# @version 0.3.10
balances: public(HashMap[address, uint256])
event Transfer:
sender: indexed(address)
receiver: indexed(address)
amount: uint256
@external
def transfer(to: address, amount: uint256) -> bool:
assert self.balances[msg.sender] >= amount, "insufficient balance"
self.balances[msg.sender] -= amount
self.balances[to] += amount
log Transfer(msg.sender, to, amount)
return True 2. View functions
constants, immutables, and internal helpers
horizon-dark
MAX_SUPPLY: constant(uint256) = 1_000_000
owner: immutable(address)
@deploy
def __init__():
owner = msg.sender
@view
@external
def is_owner(account: address) -> bool:
return account == owner atom-one-dark
MAX_SUPPLY: constant(uint256) = 1_000_000
owner: immutable(address)
@deploy
def __init__():
owner = msg.sender
@view
@external
def is_owner(account: address) -> bool:
return account == owner github-dark
MAX_SUPPLY: constant(uint256) = 1_000_000
owner: immutable(address)
@deploy
def __init__():
owner = msg.sender
@view
@external
def is_owner(account: address) -> bool:
return account == owner dracula
MAX_SUPPLY: constant(uint256) = 1_000_000
owner: immutable(address)
@deploy
def __init__():
owner = msg.sender
@view
@external
def is_owner(account: address) -> bool:
return account == owner nord
MAX_SUPPLY: constant(uint256) = 1_000_000
owner: immutable(address)
@deploy
def __init__():
owner = msg.sender
@view
@external
def is_owner(account: address) -> bool:
return account == owner github
MAX_SUPPLY: constant(uint256) = 1_000_000
owner: immutable(address)
@deploy
def __init__():
owner = msg.sender
@view
@external
def is_owner(account: address) -> bool:
return account == owner 3. Byte strings
b"..." literal prefix
horizon-dark
SELECTOR: constant(bytes4) = b"\x01\x02\x03\x04"
@external
@pure
def matches(sig: bytes4) -> bool:
return sig == SELECTOR atom-one-dark
SELECTOR: constant(bytes4) = b"\x01\x02\x03\x04"
@external
@pure
def matches(sig: bytes4) -> bool:
return sig == SELECTOR github-dark
SELECTOR: constant(bytes4) = b"\x01\x02\x03\x04"
@external
@pure
def matches(sig: bytes4) -> bool:
return sig == SELECTOR dracula
SELECTOR: constant(bytes4) = b"\x01\x02\x03\x04"
@external
@pure
def matches(sig: bytes4) -> bool:
return sig == SELECTOR nord
SELECTOR: constant(bytes4) = b"\x01\x02\x03\x04"
@external
@pure
def matches(sig: bytes4) -> bool:
return sig == SELECTOR github
SELECTOR: constant(bytes4) = b"\x01\x02\x03\x04"
@external
@pure
def matches(sig: bytes4) -> bool:
return sig == SELECTOR