Definition: [
"autonomous agent",
{
"init": "{
$who = "HFNBIQTUNVMRM7PDP6NT2QRKLR62FOGR" ;
$day = 13 ;
$month = 9 ;
// Time for Birthday Fiddle AA by [email protected]
// usage:
// friends or strangers can contribute to the annual fiddle fund anytime
// the person who has birthday can release the fiddle every year on their birthday to fulfil their wishes
// to release surprise - just send a transaction anytime after the birthday to get the previous year's surprise
// the AA will also keep track of lifetime accumulated amount
// setup:
// set the person who has birthday address, day and month ( year might be a secret ) above
// maybe better to use real attestation, but let's keep it simple for now
$today = timestamp ;
$storage = 1000 ;
$surprise = var[ "surprise" ] otherwise $storage ;
$fiddle = var[ "fiddle" ] otherwise 0 ;
}",
"messages": [
{
"if": "{ trigger.address != $who }",
"app": "data",
"payload": {
"friend": "{ trigger.address }"
}
},
{
"if": "{ trigger.address == $who AND ( balance[ base ] - $surprise ) > 0 }",
"app": "payment",
"payload": {
"cases": [
{
"if": "{ $today <= $fiddle }",
"payload": {
"asset": "base",
"outputs": [
{
"address": "{$who}",
"amount": "{ balance[ base ] - $surprise }"
}
]
}
},
{
"if": "{ $today > $fiddle }",
"payload": {
"asset": "base",
"outputs": [
{
"address": "{$who}",
"amount": "{ balance[ base ] - $storage }"
}
]
}
}
]
}
},
{
"app": "state",
"state": "{
// TIME GATE TECHNIQUE
if( $today > $fiddle ){ // THE FIDDLE PLAYED
var[ "surprise" ] = trigger.output[[asset=base]] - $storage ; // START NEW SURPRISE
$year = json_parse( substring( timestamp_to_string( $today , "date" ) , 0 , 4 ) ) + 1 ; // GET NEXT YEAR
var[ "fiddle" ] = parse_date( $year || "-" || $month || "-" || $day ); // MOVE FIDDLE TO NEXT BIRTHDAY
if( trigger.address == $who ) response[ "happy_birthday" ] = "may your wish come true";
} else var[ "surprise" ] += trigger.output[[asset=base]] - $storage ; // ADD TO SURPRISE
var[ "lifetime_amount" ] += trigger.output[[asset=base]] ;
// hopefully the person didn't put in a lot of money himself, but we will never know
response[ "fiddle" ] = "will be played on " || timestamp_to_string( var[ "fiddle" ] ) ;
}"
}
]
}
]