Unit ID
iQDi9SQFi3b37+VFzCL5VjrC/HR2JBQAOmWmc31RY7A=
Received
01.02.2021 19:02:15
Confirmation delay (full node)
2 minutes 20 seconds
Confirmation delay (light node)
5 minutes 9 seconds
Messages
Definition
Definition: [ "autonomous agent", { "init": "{ $nom_AA = 'Validacions'; $darrera_versio = '0000000000'; //$_Portal_original = '0000000000'; $_Portal_original = trigger.address; //Hauria de ser fix amb adr darrer Portal $_Portal_actual = var[ 'nou_portal' ] otherwise $_Portal_original; if ( $_Portal_actual != trigger.address ) { $_Portal = substring( var[ $_Portal_actual ][ 'versions' ], 0, 32 ); if( $_Portal != trigger.address ) { bounce ( 'Portal no reconegut' ); } } else { $_Portal = $_Portal_actual; } // 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; $generics = var[ $_Portal ][ 'generics' ]; $entitats = var[ $_Portal ][ 'entitats' ]; $versions_portal = var[ $_Portal ][ 'versions' ] otherwise $_Portal; $versions_validacions = var[ $_Portal ][ 'versions_validacions' ] otherwise this_address; // Funcions // Si no s'ha lliurat l'argument especificat bota l'accés $__arg = $arg => $args[ $arg ] otherwise bounce( "Cal proporcionar el valor de: " || $arg ); $__dada = $refval => { data_feed[[ oracles = $versions_validacions, feed_name = $refval, ifnone = false ]] }; $__dada_proposta = $refval => { data_feed[[ oracles = $versions_portal, feed_name = $refval, ifnone = false ]] }; // Comprovacions // La proposta encara no pot estar validada if ( $__dada_proposta( 'validacio_' || $idprop ) ) { bounce( 'Ja validada' ); } // La proposta ha d'existir if ( ! $__dada_proposta( $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, 10 ]; $nombre_isox = $__dada( 'darrer_isox' ); $ordinal_base = number_from_seed( timestamp, $nombre_isox ); $__isox_aleatori = $x => { $ord_isox_aleatori = $ordinal_base + $x > $nombre_isox ? $ordinal_base + $x - $nombre_isox : $ordinal_base + $x; $isox_seleccionat = $__dada( 'isox_' || $ord_isox_aleatori ); $isox_seleccionat AND $__dada( 'isox_' || $ord_isox_aleatori ) == 'habilitat' ? $isox_seleccionat : '' }; $preseleccio_isox = map( $convocs, 8, $__isox_aleatori ); $seleccio_isox = array_length( $preseleccio_isox ) < 10 ? $preseleccio_isox : $preseleccio_isox || map( $convocs, 10, $__isox_aleatori ); $__entitat_aleatoria = $x => { $ord_entitat_aleatoria = number_from_seed( timestamp, array_length( $entitats ) ); $entitat_seleccionada = $entitats[ $ord_entitat_aleatoria ]; $entitats[ $entitat_seleccionada ].estat == 'habilitada' ? $entitat_seleccionada : '' }; $preseleccio_entitats = map( $convocs, 10, $__entitat_aleatoria ); $seleccio_entitats = array_length( $preseleccio_entitats ) < 10 ? $preseleccio_entitats : $preseleccio_entitats || map( $convocs, 10, $__entitat_aleatoria ); $__delegada_aleatoria = $x => { $ord_delegada_aleatoria = number_from_seed( timestamp, $generics.Nombre_Delegades ); $seleccio_entitats[ $ord_delegada_aleatoria ] }; $seleccio_delegades = map( $seleccio_entitats, 12, $__delegada_aleatoria ); $nova_convocatoria = { isox: $seleccio_isox, delegades: $seleccio_delegades, temps: timestamp }; } 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; $validacio_refusada = true; } if ( $__arg( 'decisio' ) == 'aprovada' ) { $deliberacio[ $grup ].aprovacions[] = $adr__; $resp = 'aprovada per' || $adr__; $nombre_aprovacions = $deliberacio[ $grup ].aprovacions; if ( array_length( $nombre_aprovacions == $generics.Nombre_Aprovacions ) ) { $deliberacio[ $grup ].aprovada = timestamp; } } if ( $deliberacio.isox.aprovada AND $deliberacio.delegades.aprovada ) { $validacio_aprovada = true; } } // Temporalment, per als TESTS!!!............................... if ( $proces == 'validacio_directa_TEST' ) { $validacio_aprovada = true; } }", "messages": [ { "app": "data", "payload": "{ $args }" }, { "if": "{ $proces == 'convocatoria_validadores' }", "app": "payment", "payload": { "asset": "{ $_unitat }", "outputs": [ { "if": "{ $seleccio_isox[0] }", "address": "{ $seleccio_isox[0] }", "amount": "{ $qt }" }, { "if": "{ $seleccio_isox[1] }", "address": "{ $seleccio_isox[1] }", "amount": "{ $qt }" }, { "if": "{ $seleccio_isox[2] }", "address": "{ $seleccio_isox[2] }", "amount": "{ $qt }" }, { "if": "{ $seleccio_isox[3] }", "address": "{ $seleccio_isox[3] }", "amount": "{ $qt }" }, { "if": "{ $seleccio_isox[4] }", "address": "{ $seleccio_isox[4] }", "amount": "{ $qt }" }, { "if": "{ $seleccio_isox[5] }", "address": "{ $seleccio_isox[5] }", "amount": "{ $qt }" }, { "if": "{ $seleccio_isox[6] }", "address": "{ $seleccio_isox[6] }", "amount": "{ $qt }" }, { "if": "{ $seleccio_isox[7] }", "address": "{ $seleccio_isox[7] }", "amount": "{ $qt }" }, { "if": "{ $seleccio_isox[8] }", "address": "{ $seleccio_isox[8] }", "amount": "{ $qt }" }, { "if": "{ $seleccio_isox[9] }", "address": "{ $seleccio_isox[9] }", "amount": "{ $qt }" } ] } }, { "if": "{ $validacio_aprovada }", "app": "data_feed", "payload": { "{ 'validacio_' || $idprop }": "{ timestamp }" } }, { "if": "{ $validacio_refusada }", "app": "data_feed", "payload": { "{ 'refus_' || $idprop }": "{ timestamp }" } }, { "app": "state", "state": "{ response[ 'Procés' ] = $proces; response[ 'Proposta' ] = $idprop; if ( $nova_convocatoria ) { var[ 'convocatoria_' || $idprop ] = $nova_convocatoria; } 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'; } var[ 'deliberacio_' || $idprop ] = $deliberacio; } // -- Nou Portal if ( $_Portal != $_Portal_actual ) { var[ 'anterior_portal' ] = var[ 'nou_portal' ]; var[ 'nou_portal' ] = $_Portal; response[ 'Nou portal' ] = $_Portal; } }" } ] } ]
Technical information
Fees:
9,417 bytes
(452 headers, 8965 payload)
Level:1870059
Witnessed level:1870052
Main chain index:1862148
Latest included mc index:1862147
Status:stable/confirmed/final