Unit ID
VF4wEIl59Nf7y1RkZYYpkrBV5SWBJIICFBeoM5zRoFc=
Received
29.10.2019 10:55:09
Confirmation delay (full node)
4 minutes 44 seconds
Confirmation delay (light node)
6 minutes 15 seconds
Messages
Definition
Definition: [ "autonomous agent", { "bounce_fees": { "base": 10000 }, "init": "{ $balance = var['balance'] otherwise 0; $id = var['last_id'] otherwise 1; }", "messages": { "cases": [ { "if": "{ trigger.data.type == 'make_order_sell' AND trigger.data.price_in_eth }", "init": "{ if(trigger.output[[asset=base]].amount < 10000) bounce('Not enough money'); }", "messages": [ { "app": "state", "state": "{ var[$id || '_owner'] = trigger.address; var[$id || '_type'] = 'sell'; var[$id || '_amount'] = trigger.output[[asset=base]].amount; var[$id || '_price_in_eth'] = trigger.data.price_in_eth; var[$id || '_status'] = 'open'; var['last_id'] = $id + 1; response['message'] = 'Oreder created'; response['id'] = $id; }" } ] }, { "if": "{ trigger.data.type == 'make_order_buy' AND trigger.data.amount AND trigger.data.price_in_gb }", "init": "{ if(trigger.data.amount <= 0) bounce('The amount must be greater than 0'); }", "messages": [ { "app": "state", "state": "{ var[$id || '_owner'] = trigger.address; var[$id || '_type'] = 'buy'; var[$id || '_amount'] = trigger.data.amount; var[$id || '_price_in_gb'] = trigger.data.price_in_gb; var[$id || '_status'] = 'open'; var['last_id'] = $id + 1; response['message'] = 'Oreder created'; response['id'] = $id; }" } ] }, { "if": "{ $thisId = trigger.data.id; trigger.data.type == 'redeem' AND trigger.data.id AND trigger.data.hash AND trigger.data.address }", "init": "{ if(!var[$thisId || '_owner']) bounce('Order not found'); if(var[$thisId || '_type'] != 'buy') bounce('This order is not for purchase'); if(var[$thisId || '_status'] != 'open') bounce('Order it not opened'); if(trigger.output[[asset=base]].amount != var[$thisId || '_price_in_gb']) bounce('Amount is incorrect'); }", "messages": [ { "app": "state", "state": "{ var[$thisId || '_status'] = 'lock'; var[$thisId || '_address'] = trigger.data.address; var[$thisId || '_hash'] = trigger.data.hash; var[$thisId || '_unlock_time'] = timestamp + 3600; response['message'] = 'done'; }" } ] }, { "if": "{ $thisId = trigger.data.id; trigger.data.type == 'lock' AND trigger.data.id AND trigger.data.address AND trigger.data.hash }", "init": "{ if(trigger.address != var[$thisId || '_owner']) bounce("You're not the owner"); }", "messages": [ { "app": "state", "state": "{ var[$thisId || '_status'] = 'lock'; var[$thisId || '_address'] = trigger.data.address; var[$thisId || '_hash'] = trigger.data.hash; var[$thisId || '_unlock_time'] = timestamp + 3600; response['message'] = 'done'; }" } ] }, { "if": "{ $thisId = trigger.data.id; trigger.data.type == 'unlock' AND trigger.data.id }", "init": "{ if(trigger.address != var[$thisId || '_owner']) bounce("You're not the owner"); if(timestamp < var[$thisId || '_unlock_time']) bounce('Lock time has not yet expired'); }", "messages": [ { "app": "state", "state": "{ var[$thisId || '_status'] = 'open'; var[$thisId || '_address'] = false; var[$thisId || '_hash'] = false; var[$thisId || '_unlock_time'] = false; response['message'] = 'done'; }" } ] }, { "if": "{ $thisId = trigger.data.id; trigger.data.type == 'withdraw' AND trigger.data.id AND trigger.data.key }", "init": "{ if (trigger.address != var[$thisId || '_address']){ bounce('Incorrect address'); } if (sha256(trigger.data.key) != var[$thisId || '_hash']){ bounce('Incorrect key |' || sha256(trigger.data.key) || ' _ ' || var[$thisId || '_hash']); } $fees_aa = var[$thisId || '_amount'] * 0.25 / 100; }", "messages": [ { "app": "payment", "payload": { "outputs": [ { "address": "{trigger.address}", "amount": "{ceil(var[$thisId || '_amount'] - $fees_aa)}" } ] } }, { "app": "data", "payload": { "id": "{$thisId}", "timestamp": "{timestamp}", "type": "{var[$thisId || '_type']}", "amount": "{var[$thisId || '_amount']}", "price": "{(var[$thisId || '_price_in_eth']) ? var[$thisId || '_price_in_eth'] : var[$thisId || 'price_in_gb']}" } }, { "app": "state", "state": "{ var['balance'] = $balance + $fees_aa; var[$thisId || '_owner'] = false; var[$thisId || '_type'] = false; var[$thisId || '_amount'] = false; var[$thisId || '_price_in_eth'] = false; var[$thisId || '_price_in_gb'] = false; var[$thisId || '_status'] = false; var[$thisId || '_address'] = false; var[$thisId || '_hash'] = false; var[$thisId || '_unlock_time'] = false; response['message'] = 'done'; }" } ] }, { "if": "{ trigger.data.type == 'remove' AND trigger.data.id }", "init": "{ $orderId = trigger.data.id; if(!var[$orderId || '_owner']) bounce('Order not found'); if(var[$orderId || '_owner'] != trigger.address) bounce('You not owner'); if(var[$orderId || '_status'] == 'lock') bounce('Order locked'); }", "messages": [ { "app": "state", "state": "{ var[$thisId || '_owner'] = false; var[$thisId || '_type'] = false; var[$thisId || '_amount'] = false; var[$thisId || '_price_in_eth'] = false; var[$thisId || '_price_in_gb'] = false; var[$thisId || '_status'] = false; response['message'] = 'done'; }" } ] }, { "if": "{ trigger.data.type == 'withdraw_balance' }", "init": "{ if(trigger.address != '2UDX4Q6BPDHVIXIAWZA3RR5OQGKOS6SA') bounce('You not ownder'); }", "messages": [ { "app": "payment", "payload": { "outputs": [ { "address": "{trigger.address}", "amount": "{ceil(var['balance'])}" } ] } }, { "app": "state", "state": "{ var['balance'] = var['balance'] - ceil(var['balance']); }" } ] } ] } } ]
Technical information
Fees:
5,780 bytes
(353 headers, 5427 payload)
Level:1127006
Witnessed level:1126998
Main chain index:1125763
Latest included mc index:1125762
Status:stable/confirmed/final