Transaction Details



Transaction Hash:
dcd88200b0668ac6b6d43daf22851a487d5d97d5fbaaa91454a128858a4a4d02
Transaction Index:
13
From:
0xe1288759446298f250c3bce5616706d25525ba7f
Block Height:
34991276

Transaction Data

{'p': 'zentest3', 'f': 'function_snippet', 'a': ['def token_create(info, args):\n    assert args[\'f\'] == \'token_create\'\n\n    sender = info[\'sender\']\n    addr = handle_lookup(sender)\n    owner, _ = get(\'asset\', \'owner\', None, tick)\n    assert owner == addr\n\n    tick = args[\'a\'][0]\n    assert type(tick) is str\n    assert len(tick) > 0 and len(tick) < 42\n    assert tick[0] in string.ascii_uppercase\n    assert set(tick) <= set(string.ascii_uppercase+string.digits+\'_\')\n\n    name = args[\'a\'][1]\n    assert type(name) is str\n    decimal = int(args[\'a\'][2])\n    assert type(decimal) is int\n    assert decimal >= 0 and decimal <= 18\n\n    functions = [\'token_transfer\', \'token_mint_once\', \'asset_update_ownership\', \'asset_update_functions\']\n    if len(args[\'a\']) == 4:\n        functions = args[\'a\'][3]\n        assert type(functions) is list\n\n    put(addr, tick, \'name\', name)\n    put(addr, tick, \'decimal\', decimal)\n    put(addr, \'asset\', \'functions\', functions, tick)\n    event(\'TokenCreated\', [tick, name, decimal, functions])\n\n\ndef token_mint_once(info, args):\n    tick = args[\'a\'][0]\n    assert type(tick) is str\n    assert len(tick) > 0 and len(tick) < 42\n    assert tick[0] in string.ascii_uppercase\n    assert set(tick) <= set(string.ascii_uppercase+string.digits+\'_\')\n\n    assert args[\'f\'] == \'token_mint_once\'\n    functions, _ = get(\'asset\', \'functions\', [], tick)\n    assert args[\'f\'] in functions\n\n    sender = info[\'sender\']\n    addr = handle_lookup(sender)\n    owner, _ = get(\'asset\', \'owner\', None, tick)\n    assert owner == addr\n\n    value = int(args[\'a\'][1])\n    assert value > 0\n\n    total, _ = get(tick, \'total\', None)\n    assert total is None, "Token already minted"\n    put(addr, tick, \'total\', value)\n\n    balance, _ = get(tick, \'balance\', 0, addr)\n    balance += value\n    put(addr, tick, \'balance\', balance, addr)\n    event(\'TokenMintedOnce\', [tick, total])\n\n\ndef token_mint(info, args):\n    tick = args[\'a\'][0]\n    assert type(tick) is str\n    assert len(tick) > 0 and len(tick) < 42\n    assert tick[0] in string.ascii_uppercase\n    assert set(tick) <= set(string.ascii_uppercase+string.digits+\'_\')\n\n    assert args[\'f\'] == \'token_mint\'\n    functions, _ = get(\'asset\', \'functions\', [], tick)\n    assert args[\'f\'] in functions\n\n    sender = info[\'sender\']\n    addr = handle_lookup(sender)\n    owner, _ = get(\'asset\', \'owner\', None, tick)\n    assert owner == addr\n\n    value = int(args[\'a\'][1])\n    assert value > 0\n\n    balance, _ = get(tick, \'balance\', 0, addr)\n    balance += value\n    put(addr, tick, \'balance\', balance, addr)\n\n    total, _ = get(tick, \'total\', 0)\n    total += value\n    put(addr, tick, \'total\', total)\n    event(\'TokenMinted\', [tick, value, total])\n\n\ndef token_burn(info, args):\n    tick = args[\'a\'][0]\n    assert type(tick) is str\n    assert len(tick) > 0 and len(tick) < 42\n    assert tick[0] in string.ascii_uppercase\n    assert set(tick) <= set(string.ascii_uppercase+string.digits+\'_\')\n\n    assert args[\'f\'] == \'token_burn\'\n    functions, _ = get(\'asset\', \'functions\', [], tick)\n    assert args[\'f\'] in functions\n\n    sender = info[\'sender\']\n    addr = handle_lookup(sender)\n    owner, _ = get(\'asset\', \'owner\', None, tick)\n    assert owner == addr\n\n    value = int(args[\'a\'][1])\n    assert value > 0\n\n    balance, _ = get(tick, \'balance\', 0, addr)\n    balance -= value\n    assert balance >= 0\n\n    total, _ = get(tick, \'total\', 0)\n    total -= value\n    assert total >= 0\n\n    put(addr, tick, \'balance\', balance, addr)\n    put(addr, tick, \'total\', total)\n    event(\'TokenBurned\', [tick, value, total])\n\n\ndef token_transfer(info, args):\n    tick = args[\'a\'][0]\n    assert type(tick) is str\n    assert len(tick) > 0 and len(tick) < 42\n    assert tick[0] in string.ascii_uppercase\n    assert set(tick) <= set(string.ascii_uppercase+string.digits+\'_\')\n\n    assert args[\'f\'] == \'token_transfer\'\n    functions, _ = get(\'asset\', \'functions\', [], tick)\n    assert args[\'f\'] in functions\n\n    receiver = args[\'a\'][1].lower()\n    assert len(receiver) <= 42\n    assert type(receiver) is str\n    if len(receiver) == 42:\n        assert receiver.startswith(\'0x\')\n        assert set(receiver[2:]) <= set(string.digits+\'abcdef\')\n    else:\n        assert len(receiver) > 4\n\n    sender = info[\'sender\']\n    addr = handle_lookup(sender)\n\n    value = int(args[\'a\'][2])\n    assert value > 0\n\n    sender_balance, _ = get(tick, \'balance\', 0, addr)\n    assert sender_balance >= value\n    sender_balance -= value\n    put(addr, tick, \'balance\', sender_balance, addr)\n    receiver_balance, _ = get(tick, \'balance\', 0, receiver)\n    receiver_balance += value\n    put(receiver, tick, \'balance\', receiver_balance, receiver)\n    event(\'TokenTransfer\', [tick, addr, receiver, value])\n\n\ndef token_send(info, args):\n    tick = args[\'a\'][0]\n    assert type(tick) is str\n    assert len(tick) > 0 and len(tick) < 42\n    assert tick[0] in string.ascii_uppercase\n    assert set(tick) <= set(string.ascii_uppercase+string.digits+\'_\')\n\n    assert args[\'f\'] == \'token_send\'\n    functions, _ = get(\'asset\', \'functions\', [], tick)\n    assert args[\'f\'] in functions\n\n    sender = info[\'sender\']\n    addr = handle_lookup(sender)\n\n    spender = args[\'a\'][1].lower()  # the address allowed to spend\n    assert len(spender) <= 42\n    assert type(spender) is str\n    if len(spender) == 42:\n        assert spender.startswith(\'0x\')\n        assert set(spender[2:]) <= set(string.digits+\'abcdef\')\n    else:\n        assert len(spender) > 4\n\n    value = int(args[\'a\'][2])\n    assert value >= 0\n\n    put(addr, tick, \'allowance\', value, f\'{addr},{spender}\')\n    event(\'TokenSendApproval\', [tick, addr, spender, value])\n\n\ndef token_accept(info, args):\n    tick = args[\'a\'][0]\n    assert type(tick) is str\n    assert len(tick) > 0 and len(tick) < 42\n    assert tick[0] in string.ascii_uppercase\n    assert set(tick) <= set(string.ascii_uppercase+string.digits+\'_\')\n\n    assert args[\'f\'] == \'token_accept\'\n    functions, _ = get(\'asset\', \'functions\', [], tick)\n    assert args[\'f\'] in functions\n\n    from_addr = args[\'a\'][1].lower()  # the address from which tokens are withdrawn\n    assert len(from_addr) <= 42\n    assert type(from_addr) is str\n    if len(from_addr) == 42:\n        assert from_addr.startswith(\'0x\')\n        assert set(from_addr[2:]) <= set(string.digits+\'abcdef\')\n    else:\n        assert len(from_addr) > 4\n\n    to_addr = info[\'sender\']\n    to_addr = handle_lookup(to_addr)\n    value = int(args[\'a\'][2])\n    assert value > 0\n\n    allowance, _ = get(tick, \'allowance\', 0, f\'{from_addr},{to_addr}\')\n    from_balance, _ = get(tick, \'balance\', 0, from_addr)\n    allowance -= value\n    assert allowance >= 0\n    from_balance -= value\n    assert from_balance >= 0\n    put(from_addr, tick, \'allowance\', allowance, f\'{from_addr},{to_addr}\')\n    put(from_addr, tick, \'balance\', from_balance, from_addr)\n\n    to_balance, _ = get(tick, \'balance\', 0, to_addr)\n    to_balance += value\n    put(to_addr, tick, \'balance\', to_balance, to_addr)\n\n    event(\'TokenSent\', [tick, from_addr, to_addr, value])\n\n']}

Events

[['function_snippet', 'NewFunctionSnippet', 'df4ca4d9b0709e5e6d1ccbee9b13f8ad98ee91e19be89791ce5f469fd5253b3a']]