Definition: [
"autonomous agent",
{
"init": "{
$nom_AA = 'Validacions';
$versio = '0.1';
$_AUT_000 = 'C4KIJSUWVM7BGWTLXKX3K4PNRXV7OY4W';
$adr__ = trigger.address;
$args = trigger.data;
// Funcions auxiliars
$__bota = $txt => bounce ( $nom_AA || ' >>> ' || $txt );
$__autoritzada = ( $x ) => {
$aut = var[ '_AUT_' || $x ];
$aut AND $aut == $adr__
};
// Condicionants
if ( !! $args.ref ) {
if ( $adr__ != $_AUT_000
AND ! $__autoritzada( '0' )
AND ! $__autoritzada( 'A' )
AND ! $__autoritzada( 'B' )
AND ! $__autoritzada( 'C' )
) { $__bota( 'No autoritzada' ); }
}
if ( ! var[ $args.ref ] ) {
// _AUT_000 pot saltar-se el tràmit mentre no existeixi _AUT_0
$es_AUT_000 = $adr__ == $_AUT_000;
if ( ! $es_AUT_000 OR ( !! $es_AUT_000 AND !! var[ '_AUT_0' ] ) ) {
// Es tracta com a confirmació si ja ha estat desada abans com a proposta
$proposta = var[ 'proposta_' || $args.ref ];
if ( !! $proposta ) {
// La confirmació l'ha de fer una AUT diferent a la proposant
if ( $proposta.proposant == $adr__ )
{ $__bota( 'Ja hi consta la teva proposta' ); }
// La confirmació només es pot fer quan ha transcorregut el lapse especificat
if ( timestamp - $proposta.temps > var[ $args._Portal ][ 'Lapse' ] )
{ $__bota( 'Encara no es pot confirmar la proposta' ); }
// La confirmació només es pot fer si compte amb el suport d'un nombre
// mínim d'Isox avaluadors d'entre els escollits aleatòriament
// La confirmació només es pot fer si compte amb el suport d'un nombre
// mínim d'entitats suportants d'entre les escollides aleatòriament
//... altres requeriments
} else { $acc = 'proposta'; }
} else { $acc = 'validacio'; }
} else { $__bota( 'Ja validada' ); }
}",
"messages": [
{
"app": "state",
"state": "{
if ( $acc == 'validacio' ) {
var[ $args.ref ] = timestamp;
response[ 'Ref proposta validada' ] = $args.ref;
}
if ( $acc == 'proposta' ) {
var[ 'proposta_' || $args.ref ] =
{
proposant: $adr__,
data: timestamp,
};
response[ 'proposta' ] = $args.ref;
response[ 'data mínima per a la confirmació'] =
timestamp_to_string( timestamp + var[ $args._Portal ][ 'Lapse' ] , 'datetime' );
}
response[ 'acc' ] = $acc;
}"
}
]
}
]