Unit ID
62LXSaLpzjdOT7diHsr32wOvIEXD9+zV8BJhXRRvKiM=
Received
18.04.2020 20:38:14
Confirmation delay (full node)
35 minutes 23 seconds
Confirmation delay (light node)
41 minutes 13 seconds
Messages
Definition
Definition: [ "autonomous agent", { "messages": { "cases": [ { "messages": [ { "app": "data", "payload": { "withdraw": 1, "asset": "base", "amount": "all" } }, { "app": "payment", "payload": { "asset": "base", "outputs": [ { "address": "{$ODEX}", "amount": 10000 } ] } }, { "app": "state", "state": "{var['low_fee_mode'] = true;response['message'] = 'Low fee mode active. Until AA depletion all operations are subsidized';}" } ], "if": "{!var['low_fee_mode'] AND $total_bal+var[$ODEX][$ODEX_KEY] > 10000000}" }, { "messages": [ { "app": "data", "payload": { "order1": "{trigger.data.order}", "order2": "{$order_to_match}" } }, { "app": "payment", "payload": { "asset": "base", "outputs": [ { "address": "{$ODEX}", "amount": "{var['low_fee_mode']?1:9000}" } ] } }, { "app": "payment", "payload": { "asset": "base", "outputs": [ { "address": "{trigger.address}", "amount": 9500 } ] }, "if": "{var['low_fee_mode']}" }, { "app": "state", "state": "{$id1 = sha256($my_order.address || $my_order.sell_asset || $my_order.buy_asset || $my_order.sell_amount || $my_order.price || ($my_order.nonce otherwise '') || (trigger.data.order.last_ball_unit otherwise '-'));$order2 = $order_to_match.signed_message;$id2 = sha256($order2.address || $order2.sell_asset || $order2.buy_asset || $order2.sell_amount || $order2.price || ($order2.nonce otherwise '') || ($order_to_match.last_ball_unit otherwise '-'));$amount_left1 = var['amount_left_' || $id1] otherwise $order1.sell_amount;$amount_left2 = var['amount_left_' || $id2] otherwise $order2.sell_amount;$maker_price = $my_order.price;$buy_amount1 = round($amount_left1 * $my_order.price);if ($buy_amount1 > $amount_left2)var[$order_key] = false;if(var['low_fee_mode'] AND $total_bal < 30000)var['low_fee_mode'] = false;}" } ], "if": "{trigger.data.match}", "init": "{$my_order = trigger.data.order.signed_message;$order_key = trigger.data.addr_to_match;$order_pkg = var[$order_key];if(!$order_pkg)bounce('no order to match');if(typeof($order_pkg) != 'string')bounce('order already matched');if ($my_order.matcher != this_address)bounce('wrong matcher in order');if(!exists($my_order.matcher_fee_asset) or $my_order.matcher_fee_asset != 'base')bounce('matcher_fee_asset must be base');if(!is_valid_address($my_order.matcher) OR $my_order.matcher != this_address)bounce('I am the matcher, fuck offchain matchers');if($my_order.matcher_fee != 0)bounce('matcher fees not needed');if ($my_order.affiliate)bounce('affiliates not needed');$order_to_match = json_parse($order_pkg);}" }, { "messages": [ { "app": "data", "payload": { "order1": "{$order1}", "order2": "{$order2}" } }, { "app": "payment", "payload": { "asset": "base", "outputs": [ { "address": "{$ODEX}", "amount": "{var['low_fee_mode']?1:9000}" } ] } }, { "app": "payment", "payload": { "asset": "base", "outputs": [ { "address": "{trigger.address}", "amount": 10000 } ] } }, { "app": "state", "state": "{$order1s = $order1.signed_message;$order2s = $order2.signed_message;$id1 = sha256($order1s.address || $order1s.sell_asset || $order1s.buy_asset || $order1s.sell_amount || $order1s.price || ($order1s.nonce otherwise '') || ($order1.last_ball_unit otherwise '-'));$id2 = sha256($order2s.address || $order2s.sell_asset || $order2s.buy_asset || $order2s.sell_amount || $order2s.price || ($order2s.nonce otherwise '') || ($order2.last_ball_unit otherwise '-'));$amount_left1 = var['amount_left_' || $id1] otherwise $order1s.sell_amount;$amount_left2 = var['amount_left_' || $id2] otherwise $order2s.sell_amount;$maker_price = $order1s.price;$buy_amount1 = round($amount_left1 * $order1s.price);if ($buy_amount1 > $amount_left2){$id_smaller = $id2;$id_larger = $id1;$amount_left_larger = $amount_left1;$buy_amount2 = round($amount_left2 / $maker_price);$buy_amount_smaller = $buy_amount2;}else{$id_smaller = $id1;$id_larger = $id2;$amount_left_larger = $amount_left2;$buy_amount_smaller = $buy_amount1;}$new_amount_left_larger = $amount_left_larger - $buy_amount_smaller;if($id1 == $id_smaller || (!$new_amount_left_larger AND $id1 == $id_larger))var[trigger.address] = false;if($id2 == $id_smaller || (!$new_amount_left_larger AND $id2 == $id_larger))var[$to_match] = false;}" } ], "if": "{trigger.data.match_stored}", "init": "{$to_match = trigger.data.addr_to_match;$str1 = var[trigger.address];$str2 = var[$to_match];if(!var[trigger.address])bounce('you have not stored order');if(!$to_match OR !is_valid_address($to_match) OR !$order2)bounce('addr_to_match must be an address with stored order');$order1 = json_parse($str1);$order2 = json_parse($str2);}" }, { "messages": [ { "app": "data", "payload": { "cancel": 1, "order": "{$order}" } }, { "app": "payment", "payload": { "asset": "base", "outputs": [ { "address": "{$ODEX}", "amount": "{var['low_fee_mode']?1000:9000}" } ] } }, { "app": "payment", "payload": { "asset": "base", "outputs": [ { "address": "{trigger.address}", "amount": 8500 } ] }, "if": "{var['low_fee_mode']}" }, { "app": "state", "state": "{var[trigger.address] = false;}" } ], "if": "{trigger.data.cancel}", "init": "{$str1 = var[trigger.address];if(!$str1)bounce('you have not stored order');$order1 = json_parse($str1);}" }, { "messages": [ { "app": "payment", "payload": { "asset": "base", "outputs": [ { "address": "{trigger.address}", "amount": 9500 } ] }, "if": "{var['low_fee_mode']}" }, { "app": "state", "state": "{var[trigger.address] = json_stringify(trigger.data.order);if(var['low_fee_mode'] AND $total_bal < 30000)var['low_fee_mode'] = false;response['message'] = 'Stored order with id '||trigger.data.id;}" } ], "if": "{trigger.data.store}", "init": "{if(var[trigger.address])bounce('already stored, must be matched or cancelled first');$order = trigger.data.order.signed_message;if (!$order.sell_amount OR $order.sell_amount <= 0 or !$order.price or $order.price <= 0)bounce('wrong data in order');if (!$order.sell_asset or !$order.buy_asset)bounce('buy_asset or sell_asset missing');if(($order.sell_asset != 'base' and !asset[$order.sell_asset].exists) or ($order.buy_asset != 'base' and !asset[$order.buy_asset].exists))bounce('invalid asset');if ($order.sell_asset == $order.buy_asset)bounce('same asset');if ($order.matcher != this_address)bounce('wrong matcher in order, I am the matcher, fuck offchain matchers');if ($order.aa != $ODEX )bounce('wrong aa in order');if ($order.expiry_ts AND $order.expiry_ts <= timestamp)bounce('order expired');if(!exists($order.matcher_fee_asset) or $order.matcher_fee_asset != 'base')bounce('matcher_fee_asset must be base');$sell_key1 = 'balance_' || $order.address || '_' || $order.sell_asset;if($order.sell_amount <= 0)bounce('sell_amount must be greater than 0');$id1 = sha256($order.address || $order.sell_asset || $order.buy_asset || $order.sell_amount || $order.price || ($order.nonce otherwise '') || (trigger.data.order.last_ball_unit otherwise '-'));if (var[$ODEX]['executed_' || $id1])bounce('order already executed');if (var[$ODEX]['cancelled_' || $id1])bounce('order already cancelled');$amount_left1 = var[$ODEX]['amount_left_' || $id1] otherwise $order.sell_amount;if ($amount_left1 > var[$ODEX][$sell_key1] + 0)bounce('not sufficient balance in sell asset to complete order');if($order.matcher_fee != 0)bounce('matcher fees not needed');if ($order.affiliate)bounce('affiliates not needed');$signer1 = trigger.data.order.authors[0].address;if($order.address != trigger.address OR $signer1 != $order.address)bounce('you have to store and sign your order');if (!is_valid_signed_package(trigger.data.order, $signer1))bounce('bad signature of order');$base_key1 = 'balance_' || $order.address || '_base';if (var[$ODEX][$base_key1] <= 1000)bounce('not enough balance for AA fees');}" }, { "messages": [ { "app": "state", "state": "{response['message'] = 'bytes received';}" } ] } ] }, "init": "{$ODEX = 'VGXZ74WH6SP7ZIQIIOMY4IAC2K5ZIKYO';$ODEX_KEY = 'balance_'||this_address||'_base';if(trigger.output[[asset!=base]].asset != 'none')bounce('no assets here');$total_bal = balance[base]-storage_size-trigger.output[[asset=base]];}" } ]
Technical information
Fees:
7,129 bytes
(264 headers, 6865 payload)
Level:5472173
Witnessed level:5472164
Main chain index:5329302
Latest included mc index:5329272
Status:stable/confirmed/final