def erc20(t, chain):
    t.languages['vyper'] = compiler.Compiler()
    contract_code = open('examples/tokens/vypercoin.v.py').read()
    return chain.contract(
        contract_code,
        language='vyper',
        args=[TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS, TOKEN_INITIAL_SUPPLY])
示例#2
0
def auction_tester(t):
    from vyper import compiler
    t.languages['vyper'] = compiler.Compiler()
    contract_code = open('contracts/auctions/simple_open_auction.v.py').read()
    t.c = t.s.contract(contract_code,
                       language='vyper',
                       args=[t.accounts[0], FIVE_DAYS])
    return t
 def setUp(self):
     # Initialize tester, contract and expose relevant objects
     self.t = tester
     self.s = self.t.Chain()
     self.s.head_state.gas_limit = 10**7
     from vyper import compiler
     self.t.languages['vyper'] = compiler.Compiler()
     contract_code = open('BurnablePayments.v.py').read()
     self.c = self.s.contract(contract_code, language='vyper', args=[])
示例#4
0
def token_tester():
    t = tester
    tester.s = t.Chain()
    from vyper import compiler
    t.languages['vyper'] = compiler.Compiler()
    contract_code = open('examples/tokens/vipercoin.v.py').read()
    tester.c = tester.s.contract(
        contract_code,
        language='vyper',
        args=[TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS, TOKEN_INITIAL_SUPPLY])
    return tester
示例#5
0
def tester():
    tester = t
    tester.s = t.Chain()
    tester.s.head_state.gas_limit = 10**9
    tester.languages['vyper'] = compiler.Compiler()
    contract_code = open('examples/stock/company.v.py').read()
    tester.company_address = t.a0
    # Company with 1000 shares @ 10^6 wei / share
    tester.c = tester.s.contract(contract_code, language='vyper',
            args=[tester.company_address, 1000, 10**6])
    return tester
示例#6
0
 def setUp(self):
     # Initialize tester, contract and expose relevant objects
     self.t = tester
     self.s = self.t.Chain()
     self.s.head_state.gas_limit = 10**7
     from vyper import compiler
     self.t.languages['vyper'] = compiler.Compiler()
     contract_code = open('examples/voting/ballot.v.py').read()
     self.c = self.s.contract(contract_code,
                              language='vyper',
                              args=[["Clinton", "Trump"]])
示例#7
0
    def setUpClass(cls):
        super(TestVyperERC20, cls).setUpClass()

        from vyper import compiler
        cls.t.languages['vyper'] = compiler.Compiler()
        contract_code = open(PATH_TO_CONTRACTS + '/../../../../examples/tokens/ERC20_solidity_compatible/ERC20.v.py').read()
        cls.c = cls.s.contract(contract_code, language='vyper')
        # Bad version of contract were totalSupply / num_issued never gets updated after init
        # (required for full decision/branch coverage)
        bad_code = contract_code.replace("self.num_issued = uint256_add", "x: uint256 = uint256_add")
        cls.c_bad = cls.s.contract(bad_code, language='vyper')

        cls.initial_state = cls.s.snapshot()
        cls.strict_log_mode = True
        cls.listenForEvents()
示例#8
0
def test_chain(alloc=tester.base_alloc, genesis_gas_limit=9999999,
               min_gas_limit=5000, startgas=3141592):
    # genesis
    header = {
        "number": 0, "gas_limit": genesis_gas_limit,
        "gas_used": 0, "timestamp": 1467446877, "difficulty": 1,
        "uncles_hash": '0x'+utils.encode_hex(utils.sha3(rlp.encode([])))
    }
    genesis = mk_basic_state(alloc, header, tester.get_env(None))
    # tester
    tester.languages['vyper'] = compiler.Compiler()
    tester.STARTGAS = startgas
    chain = tester.Chain(alloc=alloc, genesis=genesis)
    chain.chain.env.config['MIN_GAS_LIMIT'] = min_gas_limit
    chain.mine(1)
    return chain
示例#9
0
    def setUpClass(cls):
        super(TestVyperERC20, cls).setUpClass()

        from vyper import compiler
        cls.t.languages['vyper'] = compiler.Compiler()
        with open(PATH_TO_CONTRACTS + '/ERC20.v.py') as fd:
            contract_code = fd.read()
        cls.c = cls.s.contract(contract_code, language='vyper')
        # Bad version of contract where totalSupply / num_issued never gets updated after init
        # (required for full decision/branch coverage)
        bad_code = contract_code.replace("self.num_issued = num256_add(self.num_issued, _value)", "p:num = 5")
        cls.c_bad = cls.s.contract(bad_code, language='vyper')

        cls.initial_state = cls.s.snapshot()
        cls.strict_log_mode = True
        cls.listenForEvents()
示例#10
0
def uniswap_factory(t, chain, uniswap_exchange):
    chain.mine()
    t.languages['vyper'] = compiler.Compiler()
    return chain.contract(FACTORY_CODE,
                          language='vyper',
                          args=[uniswap_exchange.address])
def ign_tester(t):
    from vyper import compiler
    t.languages['vyper'] = compiler.Compiler()
    contract_code = open('IGN.v.py').read()
    t.c = t.s.contract(contract_code, language='vyper', args=[t.accounts[0]])
    return t
def market_maker(t, chain):
    t.languages['vyper'] = compiler.Compiler()
    contract_code = open(
        'examples/market_maker/on_chain_market_maker.v.py').read()
    return chain.contract(contract_code, language='vyper')
示例#13
0
    # Return all events decoded from the last receipt of the contract
    return [
        contract.translator.decode_event(log.topics, log.data) for log in logs
    ]


def get_last_log_from_contract_receipts(tester, contract, event_name=None):
    # Get only the receipts for the last block from the chain (aka tester.s)
    last_receipt = tester.s.head_state.receipts[-1]
    # Get last log event with correct name and return the decoded event
    print(get_logs(last_receipt, contract, event_name=event_name))
    return get_logs(last_receipt, contract, event_name=event_name)[-1]


# Set the Vyper compiler to run when the Vyper language is requested
tester.languages['vyper'] = compiler.Compiler()
# Set the new "chain" (aka tester.s)
tester.s = tester.Chain()
tester.s.head_state.gas_limit = 10**9
initial_chain_state = tester.s.snapshot()
# Load contract source code
source_code = open('contracts/auctions/simple_open_auction.v.py').read()
# Compile contract code interface (aka tester.c)
FIVE_DAYS = 432000
tester.c = tester.s.contract(source_code,
                             language='vyper',
                             args=[tester.accounts[0], FIVE_DAYS])
# Generate ABI from contract source code
abi = tester.languages['vyper'].mk_full_signature(source_code)
print("ABI: %s", abi)
# Generate Contract Translator from ABI
示例#14
0
def chain():
    tester.languages['vyper'] = compiler.Compiler()
    s = tester.Chain()
    s.head_state.gas_limit = 10**9
    return s
示例#15
0
def uniswap_exchange(t, chain):
    chain.mine()
    t.languages['vyper'] = compiler.Compiler()
    return chain.contract(EXCHANGE_CODE, language='vyper')
示例#16
0
def srp_tester():
    t = tester
    tester.s = t.Chain()
    from vyper import compiler
    t.languages["vyper"] = compiler.Compiler()
    return tester
示例#17
0
def swap_token(t, chain):
    chain.mine()
    t.languages['vyper'] = compiler.Compiler()
    return chain.contract(ERC20_CODE,
                          language='vyper',
                          args=["SWAP Token", "SWAP", 18, 100000 * 10**18])