"0xe1288759446298f250c3bce5616706d25525ba7f"
{"functions": ["bridge_set_outgoing_fee", "bridge_incoming", "bridge_unset_operator", "bridge_set_operator", "bridge_outgoing"], "snippet": "def bridge_incoming(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'] == 'bridge_incoming'\n functions, _ = get('asset', 'functions', [], tick)\n assert args['f'] in functions\n\n operator, _ = get(tick, 'bridge_operator', None)\n assert operator is not None, \"Bridge is not initialized\"\n sender = info['sender']\n assert sender == operator, \"Only the operator can perform this operation\"\n\n amount = int(args['a'][1])\n assert amount > 0\n\n receiver = args['a'][2].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 chain = args['a'][3].lower()\n assert chain in ['base']\n tx_hash = args['a'][4].lower().replace('0x', '')\n assert len(tx_hash) == 64\n\n balance, _ = get(tick, 'balance', 0, receiver)\n balance = int(balance)\n balance += amount\n put(receiver, tick, 'balance', balance, receiver)\n\n total, _ = get(tick, 'total', 0)\n total = int(total)\n total += amount\n asset_owner, _ = get('asset', 'owner', None, tick)\n assert asset_owner\n put(asset_owner, tick, 'total', total)\n\n event('BridgeIn', [tick, amount, receiver, chain, tx_hash])\n\n\ndef bridge_outgoing(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'] == 'bridge_outgoing'\n functions, _ = get('asset', 'functions', [], tick)\n assert args['f'] in functions\n\n amount = int(args['a'][1])\n assert amount > 0\n\n # decuct balance and total\n sender = info['sender']\n addr = handle_lookup(sender)\n\n balance, _ = get(tick, 'balance', 0, addr)\n balance = int(balance)\n assert balance - amount >= 0\n balance -= amount\n put(addr, tick, 'balance', balance, addr)\n\n total, _ = get(tick, 'total', 0)\n total = int(total)\n assert total - amount >= 0\n total -= amount\n asset_owner, _ = get('asset', 'owner', None, tick)\n assert asset_owner\n put(asset_owner, tick, 'total', total)\n\n chain = args['a'][2]\n assert chain in ['base']\n\n event('BridgeOut', [tick, amount, sender, chain])\n\n\ndef bridge_set_operator(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'] == 'bridge_set_operator'\n functions, _ = get('asset', 'functions', [], tick)\n assert args['f'] in functions\n\n asset_owner, _ = get('asset', 'owner', None, tick)\n sender = info['sender']\n addr = handle_lookup(sender)\n # print('bridge_set_operator', asset_owner, addr)\n assert sender == asset_owner, \"Only the asset owner can perform this operation\"\n\n operator = args['a'][1].lower()\n assert type(operator) is str\n # assert len(operator) == 42\n assert operator.startswith('0x')\n assert set(operator[2:]) <= set(string.digits+'abcdef')\n\n put(addr, tick, 'bridge_operator', operator)\n event('BridgeOperaterSet', [tick, operator])\n\n\ndef bridge_unset_operator(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'] == 'bridge_unset_operator'\n functions, _ = get('asset', 'functions', [], tick)\n assert args['f'] in functions\n\n asset_owner, _ = get('asset', 'owner', None, tick)\n sender = info['sender']\n addr = handle_lookup(sender)\n assert addr == asset_owner, \"Only the asset owner can perform this operation\"\n\n put(addr, tick, 'bridge_operator', None)\n event('BridgeOperaterUnset', [tick])\n\ndef bridge_set_outgoing_fee(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'] == 'bridge_set_outgoing_fee'\n functions, _ = get('asset', 'functions', [], tick)\n assert args['f'] in functions\n\n chain = args['a'][1]\n assert chain in ['base']\n\n fee = int(args['a'][2])\n assert fee > 0\n\n asset_owner, _ = get('asset', 'owner', None, tick)\n sender = info['sender']\n addr = handle_lookup(sender)\n assert addr == asset_owner, \"Only the asset owner can perform this operation\"\n\n put(asset_owner, tick, 'bridgeout_fee', fee)\n event('BridgeOutFeeChanged', [tick, fee])\n"}
{"votes": [], "snippets": ["820fab69a582b09490a6f161b7921556a9e75364849e542c256c043fff11cd78"], "functions": ["bridge_incoming", "bridge_outgoing", "bridge_set_operator", "bridge_unset_operator", "bridge_set_outgoing_fee"]}
{"functions": [], "snippet": "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 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 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 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 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 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 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 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"}
{"votes": [], "snippets": ["f96093718b8cec85b36c8e1d43a0ab8f4fd3485f2f11ee213a95d556a76daca5"], "functions": ["token_create", "token_mint_once", "token_mint", "token_burn", "token_transfer", "token_send", "token_accept"]}
{"votes": [], "snippets": ["820fab69a582b09490a6f161b7921556a9e75364849e542c256c043fff11cd78"], "functions": ["bridge_incoming", "bridge_outgoing", "bridge_set_operator", "bridge_unset_operator", "bridge_set_outgoing_fee"]}
{"functions": ["token_accept", "token_send", "token_burn", "token_transfer", "token_mint_once", "token_mint", "token_mint_free", "token_create"], "snippet": "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, addr)\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"}
{"functions": ["token_accept", "token_send", "token_burn", "token_transfer", "token_mint_once", "token_mint", "token_create", "token_free_mint"], "snippet": "\ndef token_mint_free(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_free'\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 owner, _ = get('asset', 'owner', None, tick)\n assert owner == addr\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('TokenMintedFree', [tick, value, total])\n\n"}
{"votes": [], "snippets": ["ddf674a068b72f7fbe88a704b3994d6a10619d60316a423df6146028491b52a8", "ef1256037fdb5f3bbd261292758905c0aa165d106e874a7d5059388820284d32"], "functions": ["token_create", "token_mint_once", "token_mint", "token_burn", "token_transfer", "token_send", "token_accept", "token_free_mint"]}
{"snippets": ["ddf674a068b72f7fbe88a704b3994d6a10619d60316a423df6146028491b52a8", "ef1256037fdb5f3bbd261292758905c0aa165d106e874a7d5059388820284d32"]}
{"votes": [], "snippets": ["275453fa7f22675f43408e5470eba7e07625350744a1717e54a9c39ca043c30b"], "functions": ["trade_limit_order", "trade_market_order", "trade_limit_order_cancel", "trade_pair_create", "trade_set_quote_token"]}
{"functions": ["token_accept", "token_send", "token_burn", "token_transfer", "token_mint_once", "token_mint", "token_create"], "snippet": "\ndef token_mint_free(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_free'\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 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('TokenMintedFree', [tick, value, total])\n\n"}
{"votes": [], "snippets": ["ddf674a068b72f7fbe88a704b3994d6a10619d60316a423df6146028491b52a8", "5efa1f2df9ee471ea1e7eeffb22b9bb42d0749b7f9afe2398422776ec63c1826"], "functions": ["token_create", "token_mint_once", "token_mint", "token_burn", "token_transfer", "token_send", "token_accept", "token_mint_free"]}
{"snippets": ["ddf674a068b72f7fbe88a704b3994d6a10619d60316a423df6146028491b52a8", "5efa1f2df9ee471ea1e7eeffb22b9bb42d0749b7f9afe2398422776ec63c1826"]}
17000000
{"functions": ["token_accept", "token_send", "token_burn", "token_transfer", "token_mint_once", "token_mint", "token_create"], "snippet": "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"}
{"votes": [], "snippets": ["df4ca4d9b0709e5e6d1ccbee9b13f8ad98ee91e19be89791ce5f469fd5253b3a", "5efa1f2df9ee471ea1e7eeffb22b9bb42d0749b7f9afe2398422776ec63c1826"], "functions": ["token_create", "token_transfer", "token_mint_once", "token_mint", "token_burn", "token_send", "token_accept"]}