[
"autonomous agent",
{
"messages": {
"cases": [
{
"if": "{
// Obotic or MicroGrid by
[email protected]
// My best entry, combines techniques from all my previous AA
// Structure based on REDvsBLUE
// 1) Scientist send args
$obots = "
5IZAANLACSTY5ILLCJ6N5P4OX73ZWRJY" ; // Select Random Registered Address AA
$minimum = 3 ;
if( !var[ $obots ][ "count" ] ) bounce( "$obots AA missing 'count'") ;
if( var[ $obots ][ "count" ] < $minimum ) bounce( "waiting for obots=" || $obots || " to have " || $minimum || " obots" ) ;
if( trigger.data.computation_rounds ) bounce( " computation_rounds = " || var[ 'computation_rounds' ] ) ;
$minimum >= 3
}",
"messages": {
"cases": [
{
"if": "{ // REQUEST NEW ROUND
if( !trigger.data.message AND !trigger.data.round AND trigger.output[[asset=base]] < 25000 ) bounce( "need to send minimum 25000 to request a new round");
( !trigger.data.message AND !trigger.data.round )
}",
"messages": [
{
"app": "payment",
"payload": {
"asset": "base",
"outputs": [
{
"address": "{ $obots }",
"amount": "{ trigger.output[[asset=base]] }"
}
]
}
},
{
"app": "data",
"payload": {
"message": "obotic",
"nosend": true
}
}
]
},
{
"if": "{ // START ROUND
if ( trigger.address == $obots AND trigger.data.message AND trigger.data.choosen ){
$message = json_parse( trigger.data.message ) ;
//if( !$message.round ) $message.round = var[ "round" ] + 1 ;
$cruncher = trigger.data.choosen ;
}
( trigger.address == $obots AND trigger.data.message AND trigger.data.choosen )
}",
"messages": [
{
"app": "state",
"state": "{
if( $round ){
var[ "g" || $round ] = timestamp + 43200; // start countdown
response[ "message" ] = $message;
response[ "round" ] = $round;
response[ "redplayer" ] = $sendred;
response[ "blueplayer" ] = $sendblue;
}
if( trigger.address == $obots ){
var[ "redaddr" ] += 1; // new red address
var[ "r" || var[ "redaddr" ] ] = trigger.data.choosen; // save red address
}
if( trigger.address == $blue ){
var[ "blueaddr" ] += 1; // new blue address
var[ "b" || var[ "blueaddr" ] ] = trigger.data.choosen;
}
}"
}
]
},
{
"if": "{ // VOTE IN ROUND
if( trigger.data.round ){
$round = trigger.data.round;
if( !var[ "g" || $round ] ) bounce( "not a valid round");
if( ( !var[ "r" || $round ] OR var[ "r" || $round ] != trigger.address ) AND
( !var[ "b" || $round ] OR var[ "b" || $round ] != trigger.address ) ) bounce( "not a player in this round" );
if( var[ "g" || $round ] < timestamp ) bounce( "round is already over" );
}
$round
}",
"messages": [
{
"app": "state",
"state": "{
if( var[ "r" || $round ] AND trigger.address == var[ "r" || $round ] ){
var[ "red" ] += 1;
var[ "r" || $round ] = false; // clear redaddr
}
if( var[ "b" || $round ] AND trigger.address == var[ "b" || $round ] ){
var[ "blue" ] += 1;
var[ "b" || $round ] = false; // clear blueaddr
}
response[ "red" ] = var[ "red" ];
response[ "blue" ] = var[ "blue" ];
//if( !var[ "r" || $round ] AND !var[ "b" || $round ] ) var[ "g" || $round ] = false; // both voted clear round
}"
}
]
},
{
"messages": [
{
"app": "payment",
"payload": {
"asset": "base",
"outputs": [
{
"address": "
HFNBIQTUNVMRM7PDP6NT2QRKLR62FOGR"
}
]
}
},
{
"app": "state",
"state": "{ if( !var[ "owner" ] ) var[ "owner" ] = "
HFNBIQTUNVMRM7PDP6NT2QRKLR62FOGR"; }"
}
]
}
]
}
}
]
}
}
]