| 1 | [ |
| 2 | "autonomous agent", |
| 3 | { |
| 4 | "bounce_fees": { |
| 5 | "base": 10000 |
| 6 | }, |
| 7 | "init": "{ \r |
| 8 | |
| 9 | $INSTRUCTIONS = "Please use 'register' = <aa name> + 'address' = <aa address> to add your AA as a new entry or to update with a new version. Please use '(dis)like' = <aa name> + 'version' = <version> to give your opinion on a version of an AA (you need to be attested by the real name attestor).!";\r |
| 10 | \r |
| 11 | $AA_OWNER = "O7NYCFUL5XIJTYE3O4MKGMGMTN6ATQAJ";\r |
| 12 | $ATTESTATOR = '35IT3ZYKEPQSCXG2F7A7KWNRAD3SZXN4';\r |
| 13 | \r |
| 14 | |
| 15 | $i = trigger.data;\r |
| 16 | $register = $i.register; $aa_address = $i.address;\r |
| 17 | $like = $i.like; $dislike = $i.dislike; $aa_version = $i.version;\r |
| 18 | $need_help = $i.help otherwise $i.h;\r |
| 19 | \r |
| 20 | |
| 21 | $name = $i.register otherwise $i.like otherwise $i.dislike otherwise bounce ($INSTRUCTIONS);\r |
| 22 | $key = $name||"_";\r |
| 23 | $popular_version = var[$key||"popular_version"];\r |
| 24 | $popular_version_number = var[$key||"popular_version_number"];\r |
| 25 | }", |
| 26 | "messages": { |
| 27 | "cases": [ |
| 28 | { |
| 29 | "if": "{ !!$register }", |
| 30 | "init": "{ \r |
| 31 | if (!!var[$key||"owner"])\r |
| 32 | if (var[$key||"owner"] != trigger.address)\r |
| 33 | bounce ("You are not the owner !");\r |
| 34 | if (!$aa_address) bounce ("Please specify 'address' !"); \r |
| 35 | $version = var[$key||"last_version"] + 1 otherwise 1;\r |
| 36 | }", |
| 37 | "messages": [ |
| 38 | { |
| 39 | "app": "state", |
| 40 | "state": "{\r |
| 41 | |
| 42 | var[$key||"owner"] = trigger.address; |
| 43 | var[$key||"last_version_number"] = $version; \r |
| 44 | var[$key||"last_version"] = $aa_address;\r |
| 45 | var[$key||"popular_version"] = $popular_version otherwise $version;\r |
| 46 | var[$key||"popular_version_number"] = $popular_version_number otherwise $version;\r |
| 47 | |
| 48 | var[$key||$version||"_address"] = $aa_address;\r |
| 49 | var[$key||$version||"_likes"] = 0;\r |
| 50 | var[$key||$version||"_dislikes"] = 0;\r |
| 51 | var[$key||$version||"_date"] = timestamp_to_string(timestamp);\r |
| 52 | |
| 53 | response['message'] = "New version of your aa has been registered ^^";\r |
| 54 | }" |
| 55 | } |
| 56 | ] |
| 57 | }, |
| 58 | { |
| 59 | "if": "{ !!$like or !!$dislike}", |
| 60 | "init": "{ \r |
| 61 | if (attestation[[attestors=$ATTESTATOR, address=trigger.address, ifnone=false]] == false)\r |
| 62 | bounce ("To like or dislike you must be attested by "||$ATTESTATOR);\r |
| 63 | $version = $aa_version otherwise bounce ("Please specify 'version'");\r |
| 64 | if (!var[$key||$version||"_address"])\r |
| 65 | bounce ($key||$version||" do not exist !");\r |
| 66 | }", |
| 67 | "messages": [ |
| 68 | { |
| 69 | "app": "payment", |
| 70 | "payload": { |
| 71 | "asset": "base", |
| 72 | "outputs": [ |
| 73 | { |
| 74 | "address": "{trigger.address}", |
| 75 | "amount": "{ trigger.output[[asset=base]]-1000 }" |
| 76 | } |
| 77 | ] |
| 78 | } |
| 79 | }, |
| 80 | { |
| 81 | "app": "state", |
| 82 | "state": "{\r |
| 83 | |
| 84 | if ($b_want_to_like) var[$key||$version||"_likes"] +=1;\r |
| 85 | if ($b_want_to_dislike) var[$key||$version||"_dislikes"] -=1;\r |
| 86 | |
| 87 | if (var[$key||$version||"_likes"] > var[$key||$popular_version_number||"_likes"])\r |
| 88 | {\r |
| 89 | var[$key||"popular_version_number"] = var[$key||$version];\r |
| 90 | var[$key||"popular_version"] = var[$key||$version||"_address"];\r |
| 91 | }\r |
| 92 | response['message'] = "You vote has been taken into account ^^";\r |
| 93 | }" |
| 94 | } |
| 95 | ] |
| 96 | }, |
| 97 | { |
| 98 | "messages": [ |
| 99 | { |
| 100 | "app": "state", |
| 101 | "state": "{\r |
| 102 | if ($need_help) bounce ($INSTRUCTIONS);\r |
| 103 | }" |
| 104 | } |
| 105 | ] |
| 106 | } |
| 107 | ] |
| 108 | } |
| 109 | } |
| 110 | ] |