Unit ID
+UgiTDO/2+ByytLele9zxT3r/hZ2jOGIDmCCYwA24UE=
Received
07.04.2021 11:08:39
Confirmation delay (full node)
4 minutes 36 seconds
Confirmation delay (light node)
7 minutes 24 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 = 10; // Pendent de definició!!! $proces = $args.proces; $idprop = $args.idprop; $entitats = var[ $_Portal ][ 'entitats' ] otherwise {}; $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 if ( $__dada( 'validacio_' || $idprop ) != '' ) bounce( 'Ja validada' ); // La proposta ha d'existir /*if ( ! $__dada( $idprop ) ) bounce( 'No hi ha cap proposta amb aquesta id' ); */ // Processos if ( $proces == 'convocatoria_validadores' ) { $convocs = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 ]; $nombre_isox = $__dada( 'ordinal_isox' ); $selec_isox = []; $llista = []; $__isox_aleatori = $x => { $ordinal_aleatori = number_from_seed( ( timestamp + $x ), $nombre_isox ); $_isox = $__dada( 'isox_' || $ordinal_aleatori ); $estat_isox = $__dada( 'isox_' || $_isox || '_estat' ) otherwise ''; if( $estat_isox == 'habilitat' AND ! contains( $llista[0], $_isox ) ) { $selec_isox[] = $_isox; $llista[0] = $_isox || ':' || $llista[0]; $dades['convocatoria_' || $idprop || '_validadora_isox_' || $x ] = $_isox; } }; foreach( $convocs, 10, $__isox_aleatori ); /* $nombre_entitats = $__dada( 'ordinal_entitat' ); $selec_delegades = []; $__entitat_aleatoria = $x => { $ord_entitat_aleatoria = number_from_seed( ( timestamp + $x ), $nombre_entitats ); $ref_entitat = $__dada( 'entitat_' || $ord_entitat_aleatoria ); $estat_entitat = $__dada( $ref_entitat || '_estat' ) otherwise ''; if( $estat_entitat == 'operatiu' ) { $ord_delegada_aleatoria = number_from_seed( ( timestamp + $x ), 5 ); $ref_delegada = $ref_entitat || '_delegada_' || $ord_delegada_aleatoria; $_delegada = $__dada( $ref_delegada ); if( $_delegada != '' ) { $selec_delegades[] = $_delegada; $dades['convocatoria' || $idprop || '_validadora_delegada_' || $x ] = $_delegada; } } }; foreach( $convocs, 10, $__entitat_aleatoria ); $selec_valoradores = $selec_isox || $selec_delegades; */ $selec_valoradores = $selec_isox; // || $selec_delegades; $avisos = []; $__avisos_seleccionades = $adr_valoradora => { if( $adr_valoradora ) { $avis_convocatoria = { address : $adr_valoradora, amount : $qt }; $avisos[] = $avis_convocatoria; } }; foreach( $selec_valoradores, 20, $__avisos_seleccionades ); } if ( $proces == 'decisio_validacio' ) { $convocatoria = var[ 'convocatoria_' || $idprop ]; $validacio = $__dada( 'validacio_' || $idprop ); $deliberacio = var[ 'deliberacio_' || $idprop ]; $refus = $__dada( 'refus_' || $idprop ); // 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 = $convocatoria.isox[ $adr__ ] ? $adr__ : false; $_delegada = $convocatoria.delegades[ $adr__ ] ? $adr__ : false; // adr__ actuant ha estat convocada if ( ! $_isox AND ! $_delegada ) { bounce( 'Adreça no convocada' ); } // adr__ actuant pendent decisió if ( $deliberacio.isox.aprovacions[ $adr__ ] OR $deliberacio.delegades.aprovacions[ $adr__ ] ) { bounce( "Ja hi consta una decisió d'aquesta adreça per a aquesta proposta" ); } $grup = $_isox ? 'isox' : $_delegada ? 'delegades' : bounce( 'error' ); // Deliberació pendent if ( $deliberacio[ $grup ].refusada OR $deliberacio[ $grup ].aprovada ) { bounce( 'Deliberacio de ' || $grup || ' ja enllestida' ); } if ( $__arg( 'decisio' ) == 'refusada' ) { $deliberacio[ $grup ].refus = $adr__; $deliberacio[ $grup ].refusada = timestamp; $dades[ 'refus_' || $idprop ] = timestamp; } if ( $__arg( 'decisio' ) == 'aprovada' ) { $deliberacio[ $grup ].aprovacions[] = $adr__; $resp = 'aprovada per' || $adr__; $nombre_aprovacions = $deliberacio[ $grup ].aprovacions; if ( array_length( $nombre_aprovacions == $__dada( 'Nombre_Aprovacions' ))) { $deliberacio[ $grup ].aprovada = timestamp; } } if ( $deliberacio.isox.aprovada AND $deliberacio.delegades.aprovada ) { $dades[ 'validacio_' || $idprop ] = timestamp; } } // Temporalment, per als TESTS!!!............................... if ( $proces == 'validacio_directa_TEST' ) { $dades[ 'validacio_' || $idprop ] = timestamp; } $registre = {}; $registre.dades = $dades; }", "messages": [ { "app": "data", "payload": "{ $registre }" }, { "app": "payment", "payload": { "asset": "base", "outputs": [ { "address": "{ $args._Registre }", "amount": "{ $__dada( 'Provisio' ) }" } ] } }, { "if": "{ $proces == 'convocatoria_validadores' }", "init": "{ $payload = { asset : 'base', outputs : $avisos }; }", "app": "payment", "payload": "{ $payload }" }, { "if": "{ $proces == 'test_outputs' }", "init": "{ $outputs_test = [ { address : $args._deri, amount : $qt }, { address : $args._testori, amount : $qt * 2 } ]; //$outputs = $seleccio_isox || $seleccio_delegades; //$outputs = $seleccio_isox; $payload = { asset : 'base', outputs : $outputs_test }; }", "app": "payment", "payload": "{ $payload }" }, { "app": "state", "state": "{ response[ 'Procés' ] = $proces; response[ 'Proposta' ] = $idprop; if ( $proces == 'convocatoria_validadores' ) { response[ 'Nombre Isox' ] = $nombre_isox; $__isox_seleccionades = $n => { response[ 'Isox seleccionada ' || $n ] = $selec_isox[ $n ]; }; foreach( $convocs, 10, $__isox_seleccionades ); $__isox_convocades = $n => { if( $selec_isox[ $n ] ) { response[ 'Valoradora convocada ' || $n ] = $selec_isox[ $n ]; } }; foreach( $convocs, 10, $__isox_convocades ); /* $__delegades_seleccionades = $n => { response[ 'Isox seleccionada ' || $n ] = $seleccio_delegades[ $n ][0]; }; $llista_delegades = map( $convocs, 10, $__delegades_seleccionades ); */ } if ( $proces == 'decisio_validacio' ) { response[ 'Validació' ] = $__arg( 'decisio' ) || ' per ' || $adr__; if ( $deliberacio[ $grup ].aprovada ) { response[ 'Validació' ] = ' aprovada per ' || $grup; } if ( $deliberacio.isox.aprovada AND $deliberacio.delegades.aprovada ) { response[ 'Validació' ] = 'aprovada'; } if ( $__arg( 'decisio' ) == 'refusada' ) { response[ 'Validació' ] = 'refusada'; } var[ 'deliberacio_' || $idprop ] = $deliberacio; } }" } ] } ]
Technical information
Fees:
10,148 bytes
(452 headers, 9696 payload)
Level:1958680
Witnessed level:1958673
Main chain index:1950715
Latest included mc index:1950714
Status:stable/confirmed/final