Transaction Details


Transaction Hash
7509612274769e77ad1e21312e3c40c93c1e831cd600e03d13cd8f1eaa5c2a87 ↗ Base Sepolia
Transaction Index
1
From
0xe1288759446298f250c3bce5616706d25525ba7f
Block Height
34462797

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\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\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 value = int(args[\'a\'][1])\n assert value > 0\n\n sender = info[\'sender\']\n addr = handle_lookup(sender)\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\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 value = int(args[\'a\'][1])\n assert value > 0\n sender = info[\'sender\']\n addr = handle_lookup(sender)\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\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 value = int(args[\'a\'][1])\n assert value > 0\n sender = info[\'sender\']\n addr = handle_lookup(sender)\n\n balance, _ = get(tick, \'balance\', 0, addr)\n balance -= value\n assert balance >= 0\n\n total, _ = get(tick, \'total\', 0, addr)\n total -= value\n assert total >= 0\n\n put(addr, tick, \'balance\', balance, addr)\n put(addr, tick, \'total\', 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(\'Transfer\', [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(\'SendApproval\', [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(\'Transfer\', [tick, from_addr, to_addr, value])\n\n']}

Events

[['function_snippet', 'NewFunctionSnippet', 'e0fe7978025d6dc254c81cd3406c7eaf4b290ea1752ee031e1c8c3678ec96b1e']]