{"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\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 sender = info['sender']\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 event('AssetCreated', [tick])\n\n\ndef asset_update_ownership(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'] == 'asset_update_ownership'\n functions, _ = get('asset', 'functions', [], tick)\n assert args['f'] in functions\n\n receiver = args['a'][1].lower()\n sender = info['sender']\n addr = handle_lookup(sender)\n owner, _ = get('asset', 'owner', None, tick)\n assert owner.lower() == 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 event('AssetOwnershipUpdated', [tick, receiver])\n\ndef asset_update_functions(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'] == 'asset_update_functions'\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 functions = args['a'][1]\n assert type(functions) is list\n assert functions\n put(addr, 'asset', 'functions', functions, tick)\n event('AssetFunctionsUpdated', [tick, functions])\n\n\ndef asset_batch_create(info, args):\n assert args['f'] == 'asset_batch_create'\n\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"}