Unit ID
5C9w/Si3+DwpFuniBNaIJrysMGS/9s2Y1RD7r6nsBGk=
Received
15.05.2021 09:26:16
Confirmation delay (full node)
5 minutes 47 seconds
Confirmation delay (light node)
8 minutes 35 seconds
Messages
Definition
Definition: [ "autonomous agent", { "init": "{ $nom_AA = 'Validacions'; // Portal //$_Portal = '5WVBJQHTEP54AEYUJGTQKWTXTXZSJQWA'; $_Portal = trigger.address; // * només x tests if ( $_Portal != trigger.address ) bounce ( 'Portal no reconegut' ); // Principals $args = trigger.data; $adr__ = trigger.initial_address; $_unitat = trigger.output[[ asset != base ]].asset; $qt = 1; // Pendent de definició!!! $proces = $args.proces; $idprop = $args.idprop; $dades = $args.dades otherwise {}; // Funcions $__dada = $refval => data_feed[[ oracles = $args._Registre, feed_name = $refval, ifnone = '' ]]; $__arg = $arg => $args[ $arg ] otherwise bounce ( "Cal proporcionar el valor de: " || $arg ); // Comprovacions // La proposta encara no pot estar validada $resultat_validacio = $__dada( 'validacio_' || $idprop ) otherwise ''; if ( $resultat_validacio != '' ) bounce( 'La proposta ja ha estat ' || $resultat_validacio ); if ( ! $__dada( $idprop ) ) bounce( 'No hi ha cap proposta amb aquesta id' ); // Processos if ( $proces == 'convocatoria_validadores' ) { // La convocatòria encara no pot haver estat efectuada $convocatoria_efectuada = $__dada( 'convocatoria_' || $idprop ) otherwise ''; /*if ( $convocatoria_efectuada != '' ) bounce( "La convocatoria d'aquesta proposta ja ha estat efectuada" );*/ $__ord_aleatori = ( $ord, $nombre ) => { $num_aleatori = number_from_seed( ( timestamp + $ord ), 1000 ); round( $num_aleatori / 1000 * $nombre ) }; $convocs_i = [ 1, 2, 3, 4, 5, 6, 7, 8 ]; $nombre_isox = $__dada( 'ordinal_isox' ); $selec_isox = []; $llista_isox = []; $__isox_aleatori = $x => { $ordinal_aleatori = $__ord_aleatori( $x, $nombre_isox ); $_isox = $__dada( 'isox_' || $ordinal_aleatori ); $estat_isox = $__dada( 'isox_' || $_isox || '_estat' ) otherwise ''; if( $estat_isox == 'habilitat' AND ! contains( $llista_isox[0], $_isox ) ) { $selec_isox[] = $_isox; $llista_isox[0] = $_isox || ':' || $llista_isox[0]; $dades[ 'convocatoria_' || $idprop || '_validadora_isox_' || $x ] = $_isox; } }; foreach( $convocs_i, 8, $__isox_aleatori ); $convocs_d = [ 1, 2, 3 ]; // Nombre limitat per als TESTS $nombre_entitats = $__dada( 'ordinal_Entitat' ); $selec_delegades = []; $llista_entitats = []; $llista_delegades = []; $__entitat_aleatoria = $x => { $ord_entitat_aleatoria = $__ord_aleatori( $x, $nombre_entitats ); $ref_entitat = $__dada( 'entitat_' || $ord_entitat_aleatoria ); $estat_entitat = $__dada( $ref_entitat || '_estat' ) otherwise ''; if( $estat_entitat == 'operatiu' AND ! contains( $llista_entitats[0], $ref_entitat ) ) { $ord_delegada_aleatoria = number_from_seed( ( timestamp + $x ), 3 ); $ref_delegada = $ref_entitat || '_delegada_' || $ord_delegada_aleatoria; $_delegada = $__dada( $ref_delegada ) otherwise ''; $llista_entitats[0] = $ref_entitat || ':' || $llista_entitats[0]; if( $_delegada != '' AND ! contains( $llista_delegades[0], $_delegada ) ) { $selec_delegades[] = $_delegada; $llista_delegades[0] = $_delegada || ':' || $llista_delegades[0]; $dades[ 'convocatoria' || $idprop || '_validadora_delegada_' || $x ] = $_delegada; } } }; foreach( $convocs_d, 3, $__entitat_aleatoria ); $selec_valoradores = $selec_isox || $selec_delegades; $convocacions = []; $__convocacions_seleccionades = $adr_valoradora => { if( !! $adr_valoradora ) { $convocacio = { address : $adr_valoradora, amount : $qt }; $convocacions[] = $convocacio; } }; foreach( $selec_valoradores, 16, $__convocacions_seleccionades ); $dades[ 'convocatoria_' || $idprop ] = timestamp; } if ( $proces == 'decisio_validacio' ) { $convocatoria = $__dada( 'convocatoria_' || $idprop ); $validacio = $__dada( 'validacio_' || $idprop ); $refus = $__dada( 'refus_' || $idprop ); $convocs = [ 1, 2, 3, 4, 5, 6, 7, 8 ]; // La convocatoria ha d'existir if ( ! $convocatoria ) bounce( 'No hi ha cap convocatoria amb aquesta id' ); // Tractament proposta encara pendent if ( !! $validacio OR !! $refus ) bounce( 'Aquesta proposta ja ha estat tractada' ); $_isox_convocada = []; $semiref_isox = 'convocatoria_' || $idprop || '_validadora_isox_'; $__troba_convocatoria_isox = $o => { $adr_convo = $__dada( $semiref_isox || $o ) otherwise ''; if ( ! $_isox_convocada[0] AND $adr_convo == $adr__ ) $_isox_convocada[0] = $o; }; foreach( $convocs, 8, $__troba_convocatoria_isox ); $_delegada_convocada = []; $semiref_delegada = 'convocatoria_' || $idprop || '_validadora_delegada_'; $__troba_convocatoria_delegada = $o => { $adr_convo = $__dada( $semiref_delegada || $o ) otherwise ''; if ( ! $_delegada_convocada[0] AND $adr_convo == $adr__ ) $_delegada_convocada[0] = $o; }; foreach( $convocs, 8, $__troba_convocatoria_delegada ); // adr__ actuant ha estat convocada //if ( ! $_isox_convocada[0] AND ! $_delegada_convocada[0] ) if ( ! $_isox_convocada[0] ) // per als TESTs bounce( 'Adreça no convocada' ); if ( !! $_isox_convocada[0] ) $grup = 'isox'; if ( !! $_delegada_convocada[0] ) $grup = 'delegades'; $secc_ref_decisio = $idprop || '_' || $grup; if ( !! $__dada( $secc_ref_decisio || '_' || $adr__ ) ) bounce( "Ja hi consta una decisió d'aquesta adreça per a aquesta proposta" ); // Deliberació en curs $decisio_grup = $__dada( $secc_ref_decisio ); if ( !! $decisio_grup ) bounce( 'Decisió del grup ' || $grup || ' ja pronunciada: ' || $decisio_grup ); if ( $__arg( 'decisio' ) == 'refusada' ) { $dades[ $secc_ref_decisio || '_' || $adr__ ] = 'refusada'; $dades[ $secc_ref_decisio ] = 'refusada'; $dades[ 'refus_' || $idprop ] = timestamp; } if ( $__arg( 'decisio' ) == 'aprovada' ) { $ref_nombre_aprovacions = 'nombre_aprovacions_' || $grup || '_' || $idprop; $nombre_aprovacions = $__dada( $ref_nombre_aprovacions ) otherwise 0; $dades[ $secc_ref_decisio || '_' || $adr__ ] = 'aprovada'; $dades[ $ref_nombre_aprovacions ] = $nombre_aprovacions + 1; if ( $nombre_aprovacions == $__dada( 'Nombre_Aprovacions' ) ) { $dades[ $secc_ref_decisio ] = 'aprovada'; $alter_grup = $grup == 'isox' ? 'delegades' : 'isox'; $decisio_alter_grup = $__dada( $idprop || '_' || $alter_grup ) otherwise ''; if ( $decisio_alter_grup == 'aprovada' ) $dades[ 'validacio_' || $idprop ] = timestamp; } } } // Temporalment, per als TESTS!!!............................... if ( $proces == 'validacio_directa_TEST' ) $dades[ 'validacio_' || $idprop ] = timestamp; $registre = {}; $registre.dades = $dades; }", "messages": [ { "if": "{ $proces == 'convocatoria_validadores' }", "init": "{ $payload = { asset : $_unitat, outputs : $convocacions }; }", "app": "payment", "payload": "{ $payload }" }, { "app": "data", "payload": "{ $registre }" }, { "app": "payment", "payload": { "asset": "base", "outputs": [ { "address": "{ $args._Registre }", "amount": "{ $__dada( 'Provisio' ) }" } ] } }, { "app": "state", "state": "{ response[ 'Procés' ] = $proces; response[ 'Proposta' ] = $idprop; if ( $proces == 'convocatoria_validadores' ) response[ 'Nombre Isox' ] = $nombre_isox; if ( $proces == 'decisio_validacio' ) { response[ 'Validació' ] = $__arg( 'decisio' ) || ' per ' || $adr__; $decisio_presa = $dades[ $secc_ref_decisio ] otherwise ''; if ( $decisio_presa != '' ) response[ 'Validació' ] = $decisio_presa || ' per ' || $grup; if ( !! $dades[ 'validacio_' || $idprop ] ) response[ 'Validació' ] = 'aprovada'; if ( !! $dades[ 'refus_' || $idprop ] ) response[ 'Validació' ] = 'refusada'; } }" } ] } ]
Technical information
Fees:
10,686 bytes
(452 headers, 10234 payload)
Level:2001858
Witnessed level:2001851
Main chain index:1993872
Latest included mc index:1993871
Status:stable/confirmed/final