Unit ID
gedNOib0Mn1GCGdk7FY4g5EuiTVZwoEWz80nQ7HcXUk=
Received
11.09.2019 19:51:43
Confirmation delay (full node)
3 minutes 19 seconds
Confirmation delay (light node)
6 minutes 14 seconds
Messages
Definition
Definition: [ "autonomous agent", { "bounce_fees": { "base": 10000 }, "init": "{ // admin stuff $AA_OWNER = "O7NYCFUL5XIJTYE3O4MKGMGMTN6ATQAJ"; // to collect the dust $AA_NAME = "THAANKS"; $LOPAVAA = "K6XFY4PODYMWPUELDOYG6UOJ3GQLMDMT"; // AA used to get last or popular version of other non-sensitives AA $DANAA = var[$LOPAVAA]["DANAA_last_version"]; // get last version of DANAA, Dynamic Asset Names // intructions $INSTRUCTIONS_USE_CASES = "Be first to use 'token = <received token>' after the request time and before the acceptable delay to receive the associated reward. To subscribe as an helper and have a chance to be picked up later use: 'subscribe = true'. To unsubscribe use: 'unsubscribe = true'. If your are an AA use at minimum 'ask_help = <true>'. "; $INSTRUCTIONS_ASK_HELP = "Use 'ask_help = <true>' with optionaly 'helper = <address>' if you want to propose an helper. Use 'private_mode = true' to force the triggering to be done by the specific helper. If you need to be trigger after a given time, use 'request_time = <timestamp>' and if you want to give a dead line use 'acceptable_delay = <delay in seconds>'. "; // definitive constantes $DEFAULT_ACCEPTABLE_DELAY = 10*24*60*60; // trigger variables $user = trigger.address; $i = trigger.data; }", "messages": { "cases": [ { "if": "{ !!$i.ask_help }", "init": "{ if ($i.ask_help != "true") bounce ($INSTRUCTIONS_ASK_HELP); // preparing $aa = $i.aa otherwise $user; $requested_time = $i.requested_time otherwise timestamp; $acceptable_delay = !!$i.acceptable_delay ? $i.acceptable_delay : $DEFAULT_ACCEPTABLE_DELAY; $received_amount = trigger.output[[asset!=base]].amount otherwise trigger.output[[asset=base]].amount; $reward_amount = $received_amount - 1000; $reward_asset = trigger.output[[asset!=base]].asset != "none" ? trigger.output[[asset!=base]].asset : "base"; $asset_nice_name = var[$DANAA][$reward_asset||"_shortName"] otherwise $reward_asset; // defining helper $good_guy_count = var["good_guy_count"] otherwise 0; $helper = $i.helper otherwise $good_guy_count > 0 ? var["good_guy_"||number_from_seed(timestamp,0, $good_guy_count)] : bounce ("No good guy available, use 'helper = <address>'!"); // token used to store var about AA needs for a given time $token = sha256($aa||$requested_time); }", "messages": [ { "app": "data", "payload": { "message": "{"Get "||$reward_amount||" "||$asset_nice_name||" if you are first to send back this 'token = <token received below>'' to me between "||timestamp_to_string($requested_time)||" and "||timestamp_to_string($requested_time+$acceptable_delay, 'datetime')}", "me": "{this_address}", "token": "{$token}" } }, { "app": "payment", "payload": { "asset": "base", "outputs": [ { "address": "{$helper}", "amount": "{4}" } ] } }, { "app": "state", "state": "{ var[$token||"_aa"] = $aa; var[$token||"_helper"] = $helper; var[$token||"_private_mode"] = $i.private_mode; var[$token||"_reward_amount"] = $reward_amount; var[$token||"_reward_asset"] = $reward_asset; var[$token||"_requested_time"] = $requested_time; var[$token||"_acceptable_delay"] = $acceptable_delay; response['message'] = $helper||" has been asked for help ^^"; }" } ] }, { "if": "{ $i.token }", "init": "{ // existing? $token = $i.token otherwise bounce ($INSTRUCTIONS_TRIGGER_FOR_REWARD); // been overtaken? $aa = var[$token||"_aa"]; if (!$aa) bounce ("Too late someone was quicker (or you mistype the token)!"); // too early ? $requested_time = var[$token||"_requested_time"]; if ($requested_time > timestamp)bounce ("Too early, try at "||timestamp_to_string($requested_time)); // too late ? $too_late = timestamp > $requested_time + var[$token||"_acceptable_delay"]; // private ? if (!!var[$token||"_private_mode"]) if (var[$token||"_helper"] != $user) bounce ("You are not allow to get this private reward !"); // prepare rewards ! $bytes = trigger.output[[asset=base]].amount - 2000; // to post this TX and to give 1000 to AA $reward_in_other = var[$token||"_reward_asset"] != "base" ? var[$token||"_reward_amount"] : false; if ($too_late) { $bytes_for_user = $bytes + 2000; // at least send back all the bytes spent... $bytes_for_aa = var[$token||"_reward_asset"] == "base" ? var[$token||"_reward_amount"]-1000 : 0; } else { $bytes_for_user = var[$token||"_reward_asset"] == "base" ? var[$token||"_reward_amount"] + $bytes: $bytes; $bytes_for_aa = 1000; } }", "messages": [ { "if": "{ !!$reward_in_other }", "app": "payment", "payload": { "asset": "{ var[$token||"_reward_asset"] }", "outputs": [ { "address": "{ $too_late ? $aa : $user }", "amount": "{ $reward_in_other }" } ] } }, { "app": "payment", "payload": { "asset": "base", "outputs": [ { "address": "{ $user }", "amount": "{ $bytes_for_user }" }, { "address": "{ $aa }", "amount": "{ $bytes_for_aa }" } ] } }, { "app": "state", "state": "{ var[$token||"_aa"] = false; var[$token||"_helper"] = false; var[$token||"_private_mode"] = false; var[$token||"_reward_amount"] = false; var[$token||"_reward_asset"] = false; var[$token||"_requested_time"] = false; var[$token||"_acceptable_delay"] = false; response['message'] = $too_late ? "Too late, sorry !" : $user||" has been rewarded ^^"; }" } ] }, { "if": "{ $i.subscribe }", "init": "{ if (var[$user]) bounce ("You are motivated, but once is enough!"); }", "messages": [ { "app": "state", "state": "{ var["good_guy_count"] += 1; var["good_guy_"||$user||"_id"] = var["good_guy_count"]; var["good_guy_"||var["good_guy_count"]] = $user; response['message'] = "Subscribed ^^. "; }" } ] }, { "if": "{ $i.unsubscribe }", "init": "{ if (!var[$user]) bounce ("You were not register!"); }", "messages": [ { "app": "state", "state": "{ var["good_guy_count"] -= 1; $id = var["good_guys_"||$user||"_id"]; var["good_guy_"||$user||"_id"] = false; var["good_guy_"||$id] = false; response['message'] = "Unsubscribed ^^. "; }" } ] }, { "init": "{ if ($user != $AA_OWNER) bounce ($INSTRUCTIONS_USE_CASES); }", "messages": [ { "app": "payment", "payload": { "asset": "{'base'}", "outputs": [ { "address": "{$AA_OWNER}", "amount": "{$reward}" } ] } } ] } ] } } ]
Technical information
Fees:
6,549 bytes
(353 headers, 6196 payload)
Level:1056100
Witnessed level:1056093
Main chain index:1054873
Latest included mc index:1054872
Status:stable/confirmed/final