Unit ID
OXEU9jmaJ/M/1VhwaE5dBZZvAFKTDoLN0Ewo2I0FXls=
Received
14.09.2021 08:52:17
Confirmation delay (full node)
2 minutes 49 seconds
Confirmation delay (light node)
5 minutes 2 seconds
Messages
Definition
Definition: [ "autonomous agent", { "init": "{ $_Registre = 'MGIC6DY2L6I4F5MEB3LSBGUCSTNLIJTV'; // Retorna el valor d'una entrada del _Registre $__dada = $refdada => data_feed [[ oracles = $_Registre, feed_name = $refdada, ifnone = 0 ]]; if ( $__dada( '_Portal' ) != trigger.address ) bounce( 'Portal no reconegut' ); // Principals $args = trigger.data; $adr__ = trigger.initial_address; $idgeto = trigger.output[[ asset != base ]].asset; $dades = $args.dades otherwise {}; // Abreviacions $proces = $args.proces; $operacio = $args.operacio; $idprop = $args.idprop; $nova_idprop = $args.nova_idprop; $ref = $args.ref; $val = $args.val; $adr = $args.adr; // Obté valor argument requesta especificat o rebota $__arg = $arg => $args[ $arg ] otherwise bounce( "Cal proporcionar el valor de: " || $arg ); // Admin ísox if ( $proces == 'nova_isox' ) { $ord_isox = $__dada( 'ordinal_isox' ) + 1; $_actuant_es_isox_000 = $__dada( 'isox_000' ) == $adr__ ; $_estat_isox_actuant = $__dada( 'isox_' || $adr__ || '_estat' ) otherwise ''; $autoritzacio = $_actuant_es_isox_000 OR $_estat_isox_actuant == 'habilitat'; if ( ! $autoritzacio ) bounce( $adr__ || ' No autoritzada per a no ísox ' || $_estat_isox_actuant ); $index_baules_isox_actuant = $__dada( 'isox_' || $adr__ || '_index_baules' ) otherwise 1; $mitjana_index_baules = $__dada( 'mitjana_index_baules' ) otherwise 1; $factor_topall_index_baules = $__dada( 'Factor_Topall_Index_Baules' ) otherwise 1.5; if ( $index_baules_isox_actuant > ( $mitjana_index_baules * $factor_topall_index_baules ) ) bounce( 'No autoritzada per massa baules' ); $estat_isox = $__dada( 'isox_' || $adr || '_estat') otherwise ''; if ( $estat_isox == 'habilitat' ) bounce( 'Ja hi consta una ísox habilitada amb aquesta adreça' ); $_aspirant = $__dada( 'aspirant_' || $adr ); if ( $_actuant_es_isox_000 ) { $index_baules_nova_isox = $args.index_baules otherwise $mitjana_index_baules; $dades_alta = [ 'isox_000', 'isox_000', 1, $index_baules_nova_isox ]; } else { $nombre_avals = $__dada( 'isox_' || $adr__ || '_aval_2' ) ? 2 : $__dada( 'isox_' || $adr__ || '_aval_1' ) ? 1 : 0; if ( $nombre_avals == 2 ) bounce( "Ja n'has avalat 2" ); if ( !! $_aspirant ) { $_proposant = $__dada( 'aspirant_' || $adr || '_proposant' ); if ( $_proposant == $adr__ ) bounce( "Els dos avals han de provenir d'adreces diferents" ); $index_baules_proposant = $__dada( 'isox_' || $_proposant || '_index_baules' ); $index_baules_nova_isox = 1 + round( ( $index_baules_proposant + $index_baules_isox_actuant ) / 2 ); $index_absolut = $index_baules_nova_isox + ( $mitjana_index_baules * ( $ord_isox - 1 ) ); $nova_mitjana_index_baules = round( $index_absolut / $ord_isox ); $dades[ 'isox_' || $adr__ || '_aval_' || ( $nombre_avals + 1 ) ] = $adr; $dades_alta = [ $_proposant, $adr__, $index_baules_nova_isox, $nova_mitjana_index_baules ]; } else { $dades[ 'aspirant_' || $adr ] = timestamp; $dades[ 'aspirant_' || $adr || '_proposant' ] = $adr__; $dades[ 'isox_' || $adr__ || '_aval_' || ( $nombre_avals + 1 ) ] = $adr; } } if ( !! $dades_alta[0] ) { $dades[ 'ordinal_isox' ] = $ord_isox; $dades[ 'isox_' || $ord_isox ] = $adr; $dades[ 'isox_' || $adr || '_ordinal' ] = 'isox_' || $ord_isox; $dades[ 'isox_' || $adr || '_proposant' ] = $dades_alta[0]; $dades[ 'isox_' || $adr || '_confirmant' ] = $dades_alta[1]; $dades[ 'isox_' || $adr || '_data' ] = timestamp; $dades[ 'isox_' || $adr || '_estat' ] = 'habilitat'; $dades[ 'isox_' || $adr || '_index_baules' ] = $dades_alta[2]; $dades[ 'mitjana_index_baules' ] = $dades_alta[3]; } } if ( $proces == 'nou_estat_isox' ) { $_isox = $__dada( $idprop || '_adr' ) otherwise $adr; $nou_estat = $__dada( $idprop || '_estat' ) otherwise $args.estat; $estat_actual = $__dada( 'isox_' || $_isox || '_estat' ) otherwise ''; if ( ! $estat_actual ) bounce( 'No hi consta cap ísox amb aquesta adreça' ); if ( $estat_actual == $nou_estat ) bounce( "L'estat actual és el mateix que el proposat" ); if ( $operacio == 'proposta' ) { $dades[ $nova_idprop || '_adr' ] = $adr; $dades[ $nova_idprop || '_estat' ] = $args.estat; } if ( $operacio == 'confirmacio' OR $operacio == 'drecera' ) $dades[ 'isox_' || $adr || '_estat' ] = $nou_estat; } // Admin delegacions if ( $proces == 'nova_delegacio' OR $proces == 'final_delegacio' ) { $ref_entitat = 'entitat_' || $__arg( 'nom' ); $estat_entitat = $__dada( $ref_entitat || '_estat' ) otherwise ''; $adr_entitat = $__dada( $ref_entitat || '_adr' ) otherwise ''; if ( $estat_entitat != 'operatiu' ) bounce( 'Entitat inexistent o no operativa' ); if ( $adr_entitat != $adr__ ) bounce( "L'adreça de l'entitat no és l'actuant" ); // $ords = [ "1", "2", "3", "4", "5" ]; $ords = [ "1", "2", "3" ]; // per als TESTS $ord_delegada_trobada = []; $semiref_delegada = $ref_entitat || '_delegada_'; $__troba_delegada = $o => { $adr_delegada = $__dada( $semiref_delegada || $o ) otherwise ''; if ( ! $ord_delegada_trobada[0] AND $adr_delegada == $adr ) $ord_delegada_trobada[0] = $o; }; //foreach( $ords, 5, $__troba_delegada ); foreach( $ords, 3, $__troba_delegada ); // per als TESTS if ( $proces == 'nova_delegacio' ) { if ( !! $ord_delegada_trobada[0] ) bounce( 'Ja hi consta una delegada amb aquesta adreça' ); $lloc_trobat = []; $__troba_lloc_lliure = $o => { if ( ! $__dada( $semiref_delegada || $o ) AND ! $lloc_trobat[0] ) { $dades[ $semiref_delegada || $o ] = $adr; $lloc_trobat[0] = $o; } }; //$troba_lloc_lliure = map( $ords, 5, $__troba_lloc_lliure ); $troba_lloc_lliure = map( $ords, 3, $__troba_lloc_lliure ); // per als TESTS if ( ! $lloc_trobat[0] ) bounce( 'Ja consten com a habilitades totes les delegacions possibles' ); } if ( $proces == 'final_delegacio' ) { if ( ! $ord_delegada_trobada[0] ) bounce( 'No hi consta cap delegada amb aquesta adreça' ); $dades[ $semiref_delegada || $ord_delegada_trobada[0] ] = ''; } } // Admin vincles if ( $args.admin_vincles ) { $tipus_vincle = $__dada( $idprop || '_tipus' ) otherwise $__arg( 'tipus' ); $nom_vincle = $__dada( $idprop || '_nom' ) otherwise $__arg( 'nom' ); $ref_vincle = $tipus_vincle || '_' || $nom_vincle; $ord_vincle = $__dada( $ref_vincle ) otherwise '---'; $nou_ord_vincle = $__dada( 'ordinal_' || $tipus_vincle ) + 1; if ( $proces == 'nou_vincle' ) { $_vincle = $__dada( $idprop || '_adr' ) otherwise $__arg( 'adr' ); // No ha d'estar registrat if ( $ord_vincle != '---' ) bounce( "Ja n'hi ha un amb aquest nom" ); // Adreça única $adr_registrada = $__dada( $ref_vincle || '_adr' ); if ( !! $adr_registrada ) bounce( "Ja n'hi ha un amb aquesta adreça" ); //... if ( $operacio == 'proposta' ) { $dades[ $nova_idprop || '_adr' ] = $adr; $dades[ $nova_idprop || '_nom' ] = $args.nom; } if ( $operacio == 'confirmacio' OR $operacio == 'drecera' ) { $dades[ $ref_vincle ] = $tipus_vincle || '_' || $nou_ord_vincle; $dades[ $ref_vincle || '_adr' ] = $_vincle; $dades[ $ref_vincle || '_estat' ] = 'operatiu'; $dades[ $tipus_vincle || '_' || $nou_ord_vincle ] = $ref_vincle; $dades[ 'ordinal_' || $tipus_vincle ] = $nou_ord_vincle; } } if ( $proces == 'nou_estat_vincle' ) { // Ha d'estar registrat $estat_actual = $__dada( $ref_vincle || '_estat' ); if ( ! $estat_actual ) bounce( "Vincle desconegut" ); //... if ( $operacio == 'proposta' ) { $dades[ $nova_idprop || '_adr' ] = $adr; $dades[ $nova_idprop || '_estat' ] = $args.estat; } if ( $operacio == 'confirmacio' OR $operacio == 'drecera' ) { $nou_estat = $__dada( $idprop || '_estat' ) otherwise $args.estat; $dades[ $ref_vincle || '_estat' ] = $nou_estat; if ( $nou_estat == 'operatiu' ) { $dades[ $ref_vincle ] = $nou_ord_vincle; $dades[ $tipus_vincle || '_' || $nou_ord_vincle ] = $ref_vincle; } else { $dades[ $ref_vincle ] = '---'; $dades[ $tipus_vincle || '_' || $ord_vincle ] = '---'; } } } } $registre = {}; $registre.dades = $dades; }", "messages": [ { "app": "data", "payload": "{ $registre }" }, { "app": "payment", "payload": { "asset": "base", "outputs": [ { "address": "{ $args._Registre }", "amount": "{ $__dada( 'Provisio' ) }" } ] } }, { "app": "state", "state": "{ if ( !! $nou_estat ) response[ 'Nou estat ' || $ref_vincle ] = $nou_estat; if ( $args.admin_vincles ) { response[ 'Proposta' ] = $nova_idprop otherwise $ref otherwise 'drecera'; response[ 'operacio' ] = $operacio; } response[ 'proces' ] = $proces; }" } ] } ]
Technical information
Fees:
9,865 bytes
(452 headers, 9413 payload)
Level:2323698
Witnessed level:2323691
Main chain index:2311559
Latest included mc index:2311558
Status:stable/confirmed/final