Definition: [
"autonomous agent",
{
"init": "{
$asset = var['asset'];
$destination_aa = '';
$team = '';
}",
"messages": {
"cases": [
{
"if": "{trigger.data.start AND !$asset}",
"messages": [
{
"app": "asset",
"payload": {
"is_private": false,
"is_transferrable": true,
"auto_destroy": false,
"fixed_denominations": false,
"issued_by_definer_only": true,
"cosigned_by_definer": false,
"spender_attested": false
}
},
{
"app": "state",
"state": "{
var[response_unit || '_status'] = 'open';
var['asset'] = response_unit;
response['asset'] = response_unit;
}"
}
]
},
{
"if": "{trigger.output[[asset=base]] >= 1e5 AND $asset}",
"init": "{
if (var[$destination_aa]['finished'])
bounce('game over');
$amount = trigger.output[[asset=base]] - 2000; // to account for fees we need to respond now and to refund bytes or pay shares later
$total_raised = var['total_raised'] + $amount;
$missing_amount = ceil((balance[$destination_aa][base] + $total_raised)*0.51) - var[$destination_aa]['team_' || $team || '_amount'];
$bDone = ($total_raised > $missing_amount);
}",
"messages": [
{
"app": "payment",
"payload": {
"asset": "{$asset}",
"outputs": [
{
"address": "{trigger.address}",
"amount": "{$amount}"
}
]
}
},
{
"if": "{$bDone}",
"app": "payment",
"payload": {
"asset": "base",
"outputs": [
{
"address": "{$destination_aa}",
"amount": "{$total_raised}"
}
]
}
},
{
"if": "{$bDone}",
"app": "data",
"payload": {
"team": "{$team}"
}
},
{
"app": "state",
"state": "{
if ($bDone)
var[$asset || '_status'] = 'raised';
else
var['total_raised'] = $total_raised;
}"
}
]
},
{
"if": "{trigger.output[[asset=var[$destination_aa]['team_' || $team || '_asset']]] AND $asset}",
"messages": [
{
"app": "state",
"state": "{
var[$asset || '_status'] = 'done';
var['asset'] = false;
var['total_raised'] = false;
}"
}
]
},
{
"if": "{$asset AND trigger.output[[asset=$asset]] > 0}",
"init": "{
$amount = trigger.output[[asset=$asset]];
}",
"messages": [
{
"app": "payment",
"payload": {
"asset": "base",
"outputs": [
{
"address": "{trigger.address}",
"amount": "{$amount}"
}
]
}
},
{
"app": "state",
"state": "{
var['total_raised'] -= $amount;
}"
}
]
},
{
"if": "{
$in_asset = trigger.output[[asset!=base]].asset;
var[$in_asset || '_status'] == 'done'
}",
"messages": [
{
"app": "payment",
"payload": {
"asset": "{var[$destination_aa]['team_' || $team || '_asset']}",
"outputs": [
{
"address": "{trigger.address}",
"amount": "{trigger.output[[asset=$in_asset]]}"
}
]
}
}
]
}
]
}
}
]