| 1 | [ |
| 2 | "autonomous agent", |
| 3 | { |
| 4 | "init": "{ |
| 5 | $release_fee = 1000; |
| 6 | $balance_key = 'balance_'||trigger.address; |
| 7 | }", |
| 8 | "messages": { |
| 9 | "cases": [ |
| 10 | { |
| 11 | "if": "{trigger.data.keep}", |
| 12 | "messages": [ |
| 13 | { |
| 14 | "app": "state", |
| 15 | "state": "{ |
| 16 | var[$balance_key] = var[$balance_key] + trigger.output[[asset=base]]; |
| 17 | response['message'] = trigger.output[[asset=base]] || ' bytes will be keeped.'; |
| 18 | }" |
| 19 | } |
| 20 | ] |
| 21 | }, |
| 22 | { |
| 23 | "if": "{trigger.data.release}", |
| 24 | "init": "{ |
| 25 | if(!var[$balance_key]) bounce('No bytes to release for this address.'); |
| 26 | if(var[$balance_key] <= $release_fee) bounce('Bytes amount is less than ' || $release_fee || ' bytes fee.'); |
| 27 | }", |
| 28 | "messages": [ |
| 29 | { |
| 30 | "app": "payment", |
| 31 | "payload": { |
| 32 | "asset": "base", |
| 33 | "outputs": [ |
| 34 | { |
| 35 | "address": "{trigger.address}", |
| 36 | "amount": "{ var[$balance_key] - $release_fee}" |
| 37 | } |
| 38 | ] |
| 39 | } |
| 40 | }, |
| 41 | { |
| 42 | "app": "state", |
| 43 | "state": "{ |
| 44 | response['message'] = var[$balance_key] || ' bytes will be released minus ' || $release_fee || ' bytes transaction fee'; |
| 45 | var[$balance_key] = 0; |
| 46 | }" |
| 47 | } |
| 48 | ] |
| 49 | }, |
| 50 | { |
| 51 | "messages": [ |
| 52 | { |
| 53 | "app": "state", |
| 54 | "state": "{ |
| 55 | bounce("Welcome user! This AA allows to keep your bytes. Please add 'keep' data field with any value if you want to store bytes or 'release' data field if you want to withdraw previously deposited bytes."); |
| 56 | }" |
| 57 | } |
| 58 | ] |
| 59 | } |
| 60 | ] |
| 61 | } |
| 62 | } |
| 63 | ] |