"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
{"functions": ["asset_update_ownership", "asset_update_functions", "asset_create", "asset_batch_create"], "snippet": "def asset_create(info, args):\n assert args['f'] == 'asset_create'\n sender = info['sender']\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 addr = handle_lookup(sender)\n owner, _ = get('asset', 'owner', None, tick)\n assert not owner\n\n put(addr, 'asset', 'owner', addr, tick)\n put(addr, 'asset', 'functions', ['asset_update_ownership', 'asset_update_functions'], tick)\n\ndef asset_update_ownership(info, args):\n assert args['f'] == 'asset_update_ownership'\n sender = info['sender']\n tick = args['a'][0]\n receiver = args['a'][1]\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 addr = handle_lookup(sender)\n owner, _ = get('asset', 'owner', None, tick)\n assert owner == addr\n\n # DO THIS to change the owner using receiver's Zentra token\n functions, _ = get('asset', 'functions', None, tick)\n assert type(functions) is list\n assert functions\n put(receiver, 'asset', 'owner', receiver, tick)\n put(receiver, 'asset', 'functions', functions, tick)\n\n\ndef asset_update_functions(info, args):\n assert args['f'] == 'asset_update_functions'\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 owner, _ = get('asset', 'owner', None, tick)\n assert owner == addr\n\n functions = args['a'][1]\n assert type(functions) is list\n assert functions\n put(addr, 'asset', 'functions', functions, tick)\n\ndef asset_batch_create(info, args):\n assert args['f'] == 'asset_batch_create'\n sender = info['sender']\n addr = handle_lookup(sender)\n committee_members, _ = get('committee', 'members', [])\n committee_members = set(committee_members)\n assert addr in committee_members\n\n ticks = args['a'][0]\n assert type(ticks) is list\n for tick in ticks:\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 addr = handle_lookup(sender)\n owner, _ = get('asset', 'owner', None, tick)\n\n if not owner:\n put(addr, 'asset', 'owner', addr, tick)\n put(addr, 'asset', 'functions', ['asset_update_ownership', 'asset_update_functions'], tick)\n"}
{"votes": [], "snippets": ["f3e19ded26e56bd19d7de9bca70bc83cc9bdf5d53e8270ada052532ff68a2c2f"], "functions": ["asset_create", "asset_update_ownership", "asset_update_functions", "asset_batch_create"]}
["asset_update_ownership", "asset_update_functions"]
["asset_update_ownership", "asset_update_functions"]
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
{"functions": ["asset_update_functions", "asset_update_ownership", "asset_batch_create", "asset_create"], "snippet": "def asset_create(info, args):\n assert args['f'] == 'asset_create'\n sender = info['sender']\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 addr = handle_lookup(sender)\n owner, _ = get('asset', 'owner', None, tick)\n assert not owner\n\n put(addr, 'asset', 'owner', addr, tick)\n put(addr, 'asset', 'functions', ['asset_update_ownership', 'asset_update_functions'], tick)\n\ndef asset_update_ownership(info, args):\n assert args['f'] == 'asset_update_ownership'\n sender = info['sender']\n tick = args['a'][0]\n receiver = args['a'][1]\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 addr = handle_lookup(sender)\n owner, _ = get('asset', 'owner', None, tick)\n assert owner == addr\n\n # DO THIS to change the owner using receiver's Zentra token\n functions, _ = get('asset', 'functions', None, tick)\n assert type(functions) is list\n assert functions\n put(receiver, 'asset', 'owner', receiver, tick)\n put(receiver, 'asset', 'functions', functions, tick)\n\n\ndef asset_update_functions(info, args):\n assert args['f'] == 'asset_update_functions'\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 owner, _ = get('asset', 'owner', None, tick)\n assert owner == addr\n\n functions = args['a'][1]\n assert type(functions) is list\n assert functions\n put(addr, 'asset', 'functions', functions, tick)\n\ndef asset_batch_create(info, args):\n assert args['f'] == 'asset_batch_create'\n sender = info['sender']\n addr = handle_lookup(sender)\n committee_members, _ = get('committee', 'members', [])\n committee_members = set(committee_members)\n assert addr in committee_members\n\n ticks = args['a'][0]\n assert type(ticks) is list\n for tick in ticks:\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 addr = handle_lookup(sender)\n owner, _ = get('asset', 'owner', None, tick)\n assert not owner\n\n if not owner:\n put(addr, 'asset', 'owner', addr, tick)\n put(addr, 'asset', 'functions', ['asset_update_ownership', 'asset_update_functions'], tick)\n"}
{"votes": [], "snippets": ["36779d7edd2940ecc0828d6251fb92fba429919fea7a6dcaa042ebd9e84be429"], "functions": ["asset_create", "asset_update_ownership", "asset_update_functions", "asset_batch_create"]}
["asset_update_ownership", "asset_update_functions"]
"0xe1288759446298f250c3bce5616706d25525ba7f"
["asset_update_ownership", "asset_update_functions"]
["asset_update_ownership", "asset_update_functions"]
"0xe1288759446298f250c3bce5616706d25525ba7f"
"0xe1288759446298f250c3bce5616706d25525ba7f"
{"functions": ["bridge_unset_operator", "bridge_incoming", "bridge_incoming_process", "bridge_set_outgoing_fee", "bridge_set_operator", "bridge_outgoing"], "snippet": "\n# Elliptic Curve parameters for secp256k1\n# P = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F\n# A = 0\n# B = 7\n# Gx = 55066263022277343669578718895168534326250603453777594175500187360389116729240\n# Gy = 32670510020758816978083085130507043184471273380659243275938904335757337482424\n# G = (Gx, Gy)\n# N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141\n# K = 10**18\n\n# def _inverse_mod(k, p):\n# if k == 0:\n# raise\n# return pow(k, p - 2, p)\n\n# def _is_on_curve(point):\n# if point is None:\n# return True\n# x, y = point\n# return (y * y - (x * x * x + A * x + B)) % P == 0\n\n# def _point_add(point1, point2):\n# if point1 is None:\n# return point2\n# if point2 is None:\n# return point1\n# x1, y1 = point1\n# x2, y2 = point2\n# if x1 == x2 and y1 != y2:\n# return None\n# if x1 == x2:\n# m = (3 * x1 * x1 + A) * _inverse_mod(2 * y1, P)\n# else:\n# m = (y2 - y1) * _inverse_mod(x2 - x1, P)\n# m %= P\n# x3 = (m * m - x1 - x2) % P\n# y3 = (m * (x1 - x3) - y1) % P\n# return (x3, y3)\n\n# def _scalar_mult(k, point):\n# result = None\n# addend = point\n# while k:\n# if k & 1:\n# result = _point_add(result, addend)\n# addend = _point_add(addend, addend)\n# k >>= 1\n# return result\n\n# def _ecdsa_verify(msg_hash_hex, signature_hex, public_key_hex):\n# assert msg_hash_hex.startswith('0x')\n# assert signature_hex.startswith('0x')\n# assert public_key_hex.startswith('0x')\n# r = int(signature_hex[2:66], 16)\n# s = int(signature_hex[66:130], 16)\n# if not (1 <= r < N and 1 <= s < N):\n# return False\n# point = (int(public_key_hex[2:66], 16), int(public_key_hex[66:], 16))\n# # print(type(msg_hash_hex), msg_hash_hex)\n# e = int(msg_hash_hex[2:], 16)\n# w = _inverse_mod(s, N)\n# u1 = (e * w) % N\n# u2 = (r * w) % N\n# q = _point_add(_scalar_mult(u1, G), _scalar_mult(u2, point))\n# if q is None:\n# return False\n# x, y = q\n# return r == x % N\n\n# def _ecdsa_recover(msg_hash_hex, signature_hex):\n# assert msg_hash_hex.startswith('0x')\n# assert signature_hex.startswith('0x')\n# r = int(signature_hex[2:66], 16)\n# s = int(signature_hex[66:130], 16)\n# z = int(msg_hash_hex[2:], 16)\n\n# if len(signature_hex[2:]) == 130:\n# v = int(signature_hex[130:], 16)\n# if v >= 27:\n# recovery_id = v - 27\n# else:\n# recovery_id = v\n# recovery_ids = [recovery_id]\n# else:\n# recovery_ids = [0, 1]\n\n# for recovery_id in recovery_ids:\n# for j in range(2):\n# x = r + j * N\n# if x >= P:\n# continue\n\n# y_squared = (pow(x, 3, P) + A * x + B) % P\n# y = pow(y_squared, (P + 1) // 4, P)\n\n# if y % 2 != recovery_id:\n# y = P - y\n\n# point = (x, y)\n# if not _is_on_curve(point):\n# continue\n\n# r_inv = _inverse_mod(r, N)\n# u1 = (-z * r_inv) % N\n# u2 = (s * r_inv) % N\n\n# q = _point_add(_scalar_mult(u1, G), _scalar_mult(u2, point))\n# if q is None:\n# continue\n\n# public_key_hex = f\"0x{q[0]:064x}{q[1]:064x}\"\n# if _ecdsa_verify(msg_hash_hex, signature_hex, public_key_hex):\n# return public_key_hex\n\n# return None\n\n\n# def _encode_uint256(value):\n# return value.to_bytes(32, 'big')\n\n# def _encode_address(address_str):\n# address_bytes = bytes.fromhex(address_str[2:])\n# return b'\\x00' * (32 - len(address_bytes)) + address_bytes\n\n# def _encode_dynamic_bytes(data_hex):\n# data_bytes = bytes.fromhex(data_hex)\n# length = len(data_bytes)\n# padded_length = (length + 31) // 32 * 32 # Calculate padded length for data\n# return length.to_bytes(32, 'big') + data_bytes + b'\\x00' * (padded_length - length)\n\n# # '{\"a\": [845300000000000000000000002, 8453, 43114, \"0x51055892893c17ae7db48a0c0f760145bfe9f1e5\", \"0x09ace2d19b0273a762b0fe22b9e5199505c778de\", 0, \"000000000000000000000000490537058bdddaae99dd4da8b5db5675936bfedf0000000000000000000000000000000000000000000000008ac7230489e80000\", \"0000000000000000000000000000000000000000000000000000000000000000\", \"034da1308a53b6586fed90af2bd4e48cc863913551cc41d6148f43441691e4fd1ea27a1e3daf2b4c1386d0426cc37a4423729204177740768970937c93d648961c\"], \"f\": \"bridge_incoming_process\", \"p\": \"zentest\"}'\n# def bridge_incoming_process(info, args):\n# assert args['f'] == 'bridge_incoming_process'\n# sender = info['sender']\n# addr = handle_lookup(sender)\n# print('bridge_incoming_process')\n\n# txid = args['a'][0]\n# source_chain_id = args['a'][1]\n# dest_chain_id = args['a'][2]\n# source_chain_sender = args['a'][3]\n# dest_chain_recipient = args['a'][4]\n# gas = args['a'][5]\n# user_payload = args['a'][6]\n# exsig = args['a'][7]\n# signature = args['a'][8]\n\n# encoded_txid = _encode_uint256(txid)\n# encoded_source_chain_id = _encode_uint256(source_chain_id)\n# encoded_dest_chain_id = _encode_uint256(dest_chain_id)\n# encoded_source_chain_sender = _encode_address(source_chain_sender)\n# encoded_dest_chain_recipient = _encode_address(dest_chain_recipient)\n# offset_user_payload = 6 * 32\n# encoded_offset_user_payload = _encode_uint256(offset_user_payload)\n\n# header = b''.join([\n# encoded_txid,\n# encoded_source_chain_id,\n# encoded_dest_chain_id,\n# encoded_source_chain_sender,\n# encoded_dest_chain_recipient,\n# encoded_offset_user_payload,\n# ])\n# encoded_user_payload_data = _encode_dynamic_bytes(user_payload)\n\n# encoded_data = b''.join([\n# header,\n# encoded_user_payload_data,\n# ])\n# print(f\"ABI Encoded Data (Pure Python): 0x{encoded_data.hex()}\")\n\n# encoded_data_hash = keccak(encoded_data)\n# x19_msg_prefix = b\"\\x19Ethereum Signed Message:\\n\" + str(len(encoded_data_hash)).encode('utf-8')\n# x19_msg_hash = keccak(x19_msg_prefix + encoded_data_hash)\n# print(f\"x19_msg (Pure Python): 0x{x19_msg_hash.hex()}\")\n\n# print('x19', '0x'+x19_msg_hash.hex())\n# print('signature', '0x'+signature)\n# recovered_public_key = _ecdsa_recover('0x'+x19_msg_hash.hex(), '0x'+signature)\n# print(f\"recovered public key: {recovered_public_key}\")\n# if recovered_public_key:\n# public_key_bytes = bytes.fromhex(recovered_public_key[2:])\n# address_bytes = keccak(public_key_bytes)[-20:]\n# address = '0x' + address_bytes.hex()\n# print(f\"Recovered Ethereum address: {address}\")\n# event('BridgeProcess', [address])\n\n\n# def bridge_incoming2(info, args):\n# assert args['f'] == 'bridge_incoming'\n# print('bridge_incoming', args)\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# operator, _ = get(tick, 'incoming_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# balance, _ = get(tick, 'balance', 0, receiver)\n# balance = int(balance)\n# balance += amount\n# put(receiver, tick, 'balance', balance, receiver)\n\n# asset_owner, _ = get('asset', 'owner', None, tick)\n# total, _ = get(tick, 'total', 0)\n# total = int(total)\n# total += amount\n# put(asset_owner, tick, 'total', total)\n\n# # call('trade_market_order', ['USDC', None, 'ZENT', 50 * 10**18 // 1000])\n# # sender_balance, _ = get(tick_1, 'balance', 0, addr)\n# print('tick', tick, 'balance', balance)\n# # print('quote_value > 0', quote_value)\n\n# if tick != 'USDC':\n# return\n\n# base_tick = 'ZENT'\n# quote_tick = tick\n# pair = '%s_%s' % (base_tick, quote_tick)\n# addr = receiver\n# quote_sum = 0\n# quote_balance = balance\n# base_value = 10**18 // 1000 * 50 # 50 bytes\n# trade_sell_start, _ = get('trade', f'{pair}_sell_start', 1)\n# # trade_buy_start, _ = get('trade', f'{pair}_buy_start', 1)\n\n# # break until the base balance is enough\n# trade_sell_id = trade_sell_start\n# while True:\n# sell, _ = get('trade', f'{pair}_sell', None, str(trade_sell_id))\n# if sell is None:\n# break\n\n# price = sell[3]\n# print(-sell[1], quote_balance * K // price, base_value)\n# dx_base = min(-sell[1], quote_balance * K // price, base_value)\n# dx_quote = dx_base * price // K\n# if dx_base == 0 or dx_quote == 0:\n# break\n# sell[1] += dx_base\n# sell[2] -= dx_quote\n\n# if quote_balance - dx_quote < 0:\n# break\n# quote_balance -= dx_quote\n# quote_sum += dx_quote\n\n# if sell[1] == 0 or sell[1] // price == 0:\n# if sell[4]:\n# prev_sell, _ = get('trade', f'{pair}_sell', None, str(sell[4]))\n# prev_sell[5] = sell[5]\n# put(prev_sell[0], 'trade', f'{pair}_sell', prev_sell, str(sell[4]))\n\n# if sell[5]:\n# next_sell, _ = get('trade', f'{pair}_sell', None, str(sell[5]))\n# next_sell[4] = sell[4]\n# put(next_sell[0], 'trade', f'{pair}_sell', next_sell, str(sell[5]))\n\n# if sell[4] is not None and sell[5] is None:\n# trade_sell_start = sell[4]\n# put(addr, 'trade', f'{pair}_sell_start', trade_sell_start)\n# elif sell[4] is None and sell[5] is None:\n# trade_sell_new, _ = get('trade', f'{pair}_sell_new', 1)\n# trade_sell_start = trade_sell_new\n# put(addr, 'trade', f'{pair}_sell_start', trade_sell_start)\n\n# print(f'{pair}_sell_to_refund', sell)\n# if sell[1] < 0:\n# balance, _ = get(base_tick, 'balance', 0, sell[0])\n# balance -= sell[1]\n# assert balance >= 0\n# put(sell[0], base_tick, 'balance', balance, sell[0])\n\n# put(sell[0], 'trade', f'{pair}_sell', None, str(trade_sell_id))\n# else:\n# put(sell[0], 'trade', f'{pair}_sell', sell, str(trade_sell_id))\n\n# balance, _ = get(quote_tick, 'balance', 0, sell[0])\n# balance += dx_quote\n# assert balance >= 0\n# put(addr, quote_tick, 'balance', balance, sell[0])\n\n# base_value -= dx_base\n# assert base_value >= 0\n# balance, _ = get(base_tick, 'balance', 0, addr)\n# balance += dx_base\n# assert balance >= 0\n# put(addr, base_tick, 'balance', balance, addr)\n\n# if sell[4] is None:\n# break\n# trade_sell_id = sell[4]\n\n# balance, _ = get(quote_tick, 'balance', 0, addr)\n# balance -= quote_sum\n# assert balance >= 0\n# put(addr, quote_tick, 'balance', balance, addr)\n\n\ndef bridge_incoming(info, args):\n assert args['f'] == 'bridge_incoming'\n print('bridge_incoming', args)\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 operator, _ = get(tick, 'incoming_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 balance, _ = get(tick, 'balance', 0, receiver)\n balance = int(balance)\n balance += amount\n put(receiver, tick, 'balance', balance, receiver)\n\n asset_owner, _ = get('asset', 'owner', None, tick)\n total, _ = get(tick, 'total', 0)\n total = int(total)\n total += amount\n put(asset_owner, tick, 'total', total)\n\n\ndef bridge_outgoing(info, args):\n assert args['f'] == 'bridge_outgoing'\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 amount = int(args['a'][1])\n assert amount > 0\n\n chain = args['a'][2]\n assert chain in ['base', 'base-sepolia', 'op-sepolia']\n\n sender = info['sender']\n event('BridgeOutgoing', [tick, amount, chain, sender])\n\n\ndef bridge_set_operator(info, args):\n assert args['f'] == 'bridge_set_operator'\n print('bridge_set_operator', args)\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 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 addr == 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, 'incoming_operator', operator)\n\n\ndef bridge_unset_operator(info, args):\n assert args['f'] == 'bridge_unset_operator'\n print('bridge_unset_operator', args)\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 asset_owner, _ = get('asset', 'owner', None, tick)\n sender = info['sender']\n addr = handle_lookup(sender)\n # print('bridge_unset_operator', asset_owner, addr)\n assert addr == 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, 'incoming_operator', None)\n\ndef bridge_set_outgoing_fee(info, args):\n assert args['f'] == 'bridge_set_outgoing_fee'\n print('bridge_set_outgoing_fee', args)\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 chain = args['a'][1]\n assert chain in ['base', 'base-sepolia', 'op-sepolia']\n\n fee = int(args['a'][2])\n assert fee > 0\n"}
{"votes": [], "snippets": ["3d07512b7230a4038a4a3f9db793fb9b4c05dc87635e0263621ff38870958112"], "functions": ["bridge_incoming_process", "bridge_incoming", "bridge_outgoing", "bridge_set_operator", "bridge_unset_operator", "bridge_set_outgoing_fee"]}
{"snippets": ["820fab69a582b09490a6f161b7921556a9e75364849e542c256c043fff11cd78"]}
{"snippets": ["820fab69a582b09490a6f161b7921556a9e75364849e542c256c043fff11cd78"]}
199999999999999999999999000000000000000000
199999999999999999999999000000000000000000
199999999999999999999999000000000000000000
199999999999999999999999000000000000000000
199999999999999999999999990000000000000000
{"functions": ["token_send", "token_mint_once", "token_mint", "token_burn", "token_transfer", "token_create", "token_accept"], "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\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"}
{"votes": [], "snippets": ["e0fe7978025d6dc254c81cd3406c7eaf4b290ea1752ee031e1c8c3678ec96b1e"], "functions": ["token_create", "token_mint_once", "token_mint", "token_burn", "token_transfer", "token_send", "token_accept"]}
{"snippets": ["ddf674a068b72f7fbe88a704b3994d6a10619d60316a423df6146028491b52a8", "5efa1f2df9ee471ea1e7eeffb22b9bb42d0749b7f9afe2398422776ec63c1826"]}
{"snippets": ["ddf674a068b72f7fbe88a704b3994d6a10619d60316a423df6146028491b52a8", "5efa1f2df9ee471ea1e7eeffb22b9bb42d0749b7f9afe2398422776ec63c1826"]}
{"functions": ["bridge_unset_operator", "bridge_incoming", "bridge_set_outgoing_fee", "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, 'incoming_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 balance, _ = get(tick, 'balance', 0, receiver)\n balance = int(balance)\n balance += amount\n put(receiver, tick, 'balance', balance, receiver)\n\n asset_owner, _ = get('asset', 'owner', None, tick)\n total, _ = get(tick, 'total', 0)\n total = int(total)\n total += amount\n put(asset_owner, tick, 'total', total)\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 chain = args['a'][2]\n assert chain in ['base', 'base-sepolia', 'op-sepolia']\n\n sender = info['sender']\n event('BridgeOutgoing', [tick, amount, chain, sender])\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 addr == 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, 'incoming_operator', 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 # print('bridge_unset_operator', asset_owner, addr)\n assert addr == 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, 'incoming_operator', None)\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"}
{"votes": [], "snippets": ["4ab60a5271b2eeebb72952ec6fb27ce9dcfc1d49277e86adc900d605d2f471a5"], "functions": ["bridge_incoming", "bridge_outgoing", "bridge_set_operator", "bridge_unset_operator", "bridge_set_outgoing_fee"]}
{"functions": ["bridge_unset_operator", "bridge_incoming", "bridge_set_outgoing_fee", "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, sender, 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 balance, _ = get(tick, 'balance', 0, receiver)\n balance = int(balance)\n assert balance - amount >= 0\n balance -= amount\n put(receiver, tick, 'balance', balance, receiver)\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 sender = info['sender']\n # addr = handle_lookup(sender)\n event('BridgeOut', [tick, amount, chain, sender])\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": ["16c78e1a080ab6cd6548ad6065d67929ad817d9fd976d680a03adfef2a4a87dd"], "functions": ["bridge_incoming", "bridge_outgoing", "bridge_set_operator", "bridge_unset_operator", "bridge_set_outgoing_fee"]}
"0xe1288759446298f250c3bce5616706d25525ba7f"
{"functions": ["bridge_unset_operator", "bridge_incoming", "bridge_set_outgoing_fee", "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_mint_free", "token_mint", "token_accept", "token_burn", "token_mint_once", "token_create", "token_send", "token_transfer"], "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_mint_once", "token_burn", "token_send", "token_free_mint", "token_mint", "token_accept", "token_transfer", "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 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_mint_free", "token_mint", "token_accept", "token_burn", "token_mint_once", "token_create", "token_send", "token_transfer"], "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"]}
7000000