Unit ID
ldxzG9ccG+qP1q9YhFPQGlHd3gxwORZ91WqaxAZvGv0=
Received
31.08.2019 21:43:01
Confirmation delay (full node)
7 minutes 23 seconds
Confirmation delay (light node)
10 minutes 56 seconds
Messages
Definition
Definition: [ "autonomous agent", { "init": "{ $OWNER = "O7NYCFUL5XIJTYE3O4MKGMGMTN6ATQAJ"; //office_testnet_wallet // secondary AAs $THAANKS = "NHBCLOTBP5EOBYCJYWPA6IZTKPD6326D"; // getting user help with trigger $DANAA = "LLAVLVFN3CPBHTAB62NOIZLAMPABR2YF"; // Dynamic Asset Name AA; $percentage_for_helper = 0.5; // 0.5 % $attestor = '35IT3ZYKEPQSCXG2F7A7KWNRAD3SZXN4'; // lottery param $ticket_price = 10000; $round_buying_period = 5*60; // seconds $drawing_time_min = 1*60; // seconds $drawing_time_max = 2*60; // seconds $asset = trigger.output[[asset!=base]].asset != "none" ? trigger.output[[asset!=base]].asset : "base"; $key = var[$DANAA][$asset||"_shortName"] otherwise $asset; $dead_line = var[$key||"_dead_line"] otherwise timestamp + $round_buying_period; }", "messages": { "cases": [ { "if": "{ (timestamp < ($dead_line)) and !(var[$key||"_stopped"]) }", "init": "{ if (trigger.output[[asset=$asset]] != $ticket_price) bounce ("Ticket price is "||$ticket_price||" "||$key); }", "messages": [ { "app": "state", "state": "{ $nop = $key||"_number_of_players"; var[$nop] = !!var[$nop] ? var[$nop] + 1 : 1; var[$key||"_dead_line"] = $dead_line; var[$key||"_player_"||var[$nop]] = trigger.address; var[$key||"_balance"] = var[$key||"_balance"] ? var[$key||"_balance"] + trigger.output[[asset=$asset]] : trigger.output[[asset=$asset]]; // if attested address, it plays a role in the seed if (attestation[[attestors=$attestor, address=trigger.address, ifnone=false]]) var[$key||"_seed"] = sha256(var[$key||"_seed"]||trigger.address); response['message'] = "You have enter the lottery ^^"; }" } ] }, { "if": "{ ( (timestamp > $dead_line)) and !(var[$key||"_stopped"]) }", "init": "{ $buy_last_ticket = trigger.output[[asset=$asset]] >= $ticket_price; if ($buy_last_ticket) $reimbursement = trigger.output[[asset=$asset]] - $ticket_price; else $reimbursement = trigger.output[[asset=$asset]] - 1000; // delay before we draw with seed based only on time variable data $draw_time = timestamp + number_from_seed(var[$key||"_seed"], $drawing_time_min, $drawing_time_max ); // pick a helper from the players, but someone else or a bot will be able to trigger for the reward $old_nop = var[$key||"_number_of_players"] otherwise 0; $nop = $old_nop+1; if ($nop>1) // si un seul jouer pas tirage au sort $helper = var[$key||"_player_"||number_from_seed($draw_time, 1, $nop )]; else $helper = var[$key||"_player_1"]; // calcul reward $temp = round (var[$key||"_balance"] * $percentage_for_helper / 100); $reward = ($temp > 10000) ? $temp : 10000; }", "messages": [ { "app": "data", "payload": { "help": "{ true }", "helper": "{ $helper }", "time": "{ $draw_time }" } }, { "app": "payment", "payload": { "asset": "{ $asset }", "outputs": [ { "address": "{ $THAANKS }", "amount": "{ $reward }" }, { "address": "{ trigger.address }", "amount": "{ $reimbursement }" } ] } }, { "app": "state", "state": "{ if($buy_ticket) { var[$key||"_number_of_players"] = $nop; var[$key||"_player_"||$nop] = trigger.address; var[$key||"_balance"] += trigger.output[[asset=$asset]]-1000; response['message'] = "You have enter the lottery, and trigger the draw ^^"; } else response['message'] = "You have trigger the draw ^^"; var[$key||"_balance"] -= $reward; var[$key||"_seed"] = $helper; // for next helper draw if necessary var[$key||"_stopped"] = timestamp; var[$key||"_drawtime"] = $draw_time; }" } ] }, { "if": "{ !!var[$key||"_stopped"] and $draw_time > timestamp }", "messages": [ { "app": "state", "state": "{ bounce ("Too early draw time is set to "|| var[$key||"_drawtime"]); }" } ] }, { "if": "{ !!var[$key||"_stopped"] and timestamp - $draw_time < 3 * 60 * 1000 }", "init": "{ // all time variable fixed in the dag $timestamp = data_feed[[oracles='OPNUXBRSSQQGHKQNEPD2GLWQYEUY5XLD', feed_name='timestamp']]; $total_cap = data_feed[[oracles='F4KHJUCLJKY4JV7M5F754LAJX4EB7M4N', feed_name='TOTAL_CAP']]; $eth_btc_price = data_feed[[oracles='F4KHJUCLJKY4JV7M5F754LAJX4EB7M4N', feed_name='ETH_BTC']]; //$bitcoin_hash = data_feed[[oracles='', feed_name='bitcoin_hash']]; // not available in testnet? // and the winner is $draw_seed = $timestamp||$total_cap||$bitcoin_hash||$eth_btc_price; $winner_num = number_from_seed($draw_seed, 1, $key||"_number_of_players"); $winner = var["_player_"||$winner_num]; }", "messages": [ { "app": "data", "payload": { "message": "{ "You won the lottery!" }" } }, { "app": "payment", "payload": { "asset": "{ $asset }", "outputs": [ { "address": "{ $winner }", "amount": "{ var[$key||"_balance"] }" } ] } }, { "app": "state", "state": "{ var[$key||"_stopped"] = false; var[$key||"_balance"] = false; var[$key||"_dead_line"] = timestamp + $round_buying_period; var[$key||"_number_of_players"] = false; }" } ] }, { "if": "{ !!var[$key||"_stopped"] and timestamp - $draw_time > 3 * 60 * 1000 }", "init": "{ // delay before we draw with seed based only on time variable data $draw_time = number_from_seed(var[$key||"_seed"], 15 * 60 * 1000, 60 * 60 * 1000); // pick a helper from the players, but someone else or a bot will be able to trigger for the reward $helper = var[$key||"_player_"||number_from_seed($draw_time, 1, var[$key||"_number_of_players"])]; $reward = round (var[$key||"_balance"] * $percentage_for_helper / 100); }", "messages": [ { "app": "data", "payload": { "help": "{ true }", "helper": "{ $helper }", "time": "{ $draw_time }" } }, { "app": "payment", "payload": { "asset": "{ $asset }", "outputs": [ { "address": "{ $THAANKS }", "amount": "{ $reward }" } ] } }, { "app": "state", "state": "{ if($buy_ticket) { $nop = $key||"_number_of_players"; var[$nop] = !!var[$nop] ? var[$nop] + 1 : 1; var["_player_"||var[$nop]] = trigger.address; var[$key||"_balance"] += trigger.output[[asset=$asset]]-1000; response['message'] = "You have enter the lottery, and trigger the draw ^^"; } else response['message'] = "You have trigger the draw ^^"; var[$key||"_balance"] -= $reward; var[$key||"_seed"] = $helper; // for next helper draw if necessary var[$key||"_stopped"] = timestamp; var[$key||"_drawtime"] = $draw_time; }" } ] } ] } } ]
Technical information
Fees:
7,882 bytes
(353 headers, 7529 payload)
Level:1036759
Witnessed level:1036752
Main chain index:1035545
Latest included mc index:1035544
Status:stable/confirmed/final