Unit ID
xcght1WI0y2h4em5qy6Klpu4JXLibv7upMY6eEK/tsE=
Received
08.02.2021 19:21:20
Confirmation delay (full node)
2 minutes 16 seconds
Confirmation delay (light node)
5 minutes 33 seconds
Messages
Definition
Definition: [ "autonomous agent", { "init": "{\r $nom_AA = 'Accions';\r $darrera_versio = '0000000000';\r //$_Portal_original = '0000000000';\r $_Portal_original = trigger.address; //Hauria de ser fix amb adr darrer Portal \r \r $_Portal_actual = var[ 'nou_portal' ] otherwise $_Portal_original;\r \r if ( $_Portal_actual != trigger.address )\r {\r $_Portal = substring( var[ $_Portal_actual ][ 'versions' ], 0, 32 );\r if ( $_Portal != trigger.address )\r { bounce ( 'Portal no reconegut' ); }\r } else {\r $_Portal = $_Portal_actual;\r }\r \r \r // Principals\r $args = trigger.data;\r $adr__ = trigger.initial_address;\r $idgeto = trigger.output[[ asset != base ]].asset;\r \r $generics = var[ $_Portal ][ 'generics' ];\r \r $versions_portal = var[ $_Portal ][ 'versions' ];\r $versions = var[ $_Portal ][ 'versions_accions' ] otherwise this_address;\r $versions_getons =\r var[ $_Portal ][ 'versions_getons' ] otherwise $generics._Getons;\r \r $refs_getons = var[ $_Portal ][ 'refs_getons' ];\r $refgeto = $args.refgeto otherwise \r bounce( 'refgeto? ' || $args.refgeto || ' qt_accio ' || $args.qt_accio );\r \r $dades = var[ 'dades' ] otherwise {};\r $ordinals = $dades.ordinals otherwise {};\r $cicle_actual = $dades.cicle_actual;\r \r \r // Funcions\r $__ordinal = $rf => $ordinals[ $rf ] ? $ordinals[ $rf ] + 1 : 1;\r \r // Si no s'ha lliurat l'argument especificat bota l'accés\r $__arg = $arg =>\r $args[ $arg ] otherwise \r bounce( "Cal proporcionar el valor de: " || $arg );\r \r $__dada = $refval => {\r data_feed[[ oracles = $versions, feed_name = $refval, ifnone = false ]]\r };\r \r $__dada_geto = $refval => {\r data_feed[[ oracles = $versions_getons, feed_name = $refval, ifnone = false ]]\r };\r \r $__dada_portal = $refval => {\r data_feed[[ oracles = $versions_portal, feed_name = $refval, ifnone = false ]]\r };\r \r $__param = $refparam => {\r $refgeto == 'estels'?\r $generics[ $refparam ] :\r $__dada_geto( $refgeto || '_' || $refparam )\r };\r \r // Consulta si acció restringida\r $__accRestringida = $acc => {\r $refgeto == 'estels' ?\r false :\r $__dada_geto( $refgeto || '_' || $acc || 'ns_restringides' )\r };\r \r // Si acció restringida per al getó especificat, comprova si adreça capacitada\r $__capacitada = ( $acc, $adr ) => true; // Pendent revisió\r \r /*\r $__capacitada = ( $acc, $adr ) => {\r $capacitacio = $__dada_geto( 'capacitacio_' || $refgeto || '_' || $acc || '_' || $adr );\r $__accRestringida( $acc ) AND ! $capacitacio OR $capacitacio != 'capacitada' ?\r bounce( 'Adreça no capacitada per a aquesta acció' ) :\r true\r };\r */\r \r \r // Comprova si adreça activada per operar amb getó especificat\r $__activada = ( $adr, $ref ) => {\r data_feed[[ oracles = $versions, feed_name = 'activacio_' || $adr__ || '_en_' || $ref, ifnone = false ]] ?\r //$__dada( 'activacio_' || $adr__ || '_en_' || $ref ) ?\r true :\r bounce( 'Adreça no activada per a ' || $ref )\r };\r \r // Comprova si qt proporcionada cobreix import especificat\r $__qtSuficient = $ref, $q =>\r $__param( $ref ) > $q ?\r bounce( "L'" || $ref || " és de " || $__param( $ref ) ) :\r true;\r \r // Comprova si adreça consta com a subscrita\r $__subscrita = $adr => {\r $__dada( 'subscripcio_' || $adr__ || '_en_' || $refgeto ) ?\r true :\r bounce( "Adreça no subscrita per a " || $refgeto ) };\r \r // Comprova si la subscripció ha estat renovada per al cicle actual\r $__renovada = $adr => {\r $cicle_renovat = $__dada( 'renovacio_' || $adr__ || '_en_' || $refgeto || '_cicle' );\r ! $cicle_renovat OR $cicle_actual > $cicle_renovat ?\r bounce( "Subscripció de l'adreça no renovada per a " || $refgeto )\r : $__subscrita( $adr ) };\r \r \r // Principals\r $ACC = $__arg( 'accio' );\r $qt = $__arg( 'qt_accio' );\r \r // Avisos\r // Consulta si hi ha cap avís per a adr__\r $ref_avis = $refgeto || '_avis_' || $adr__;\r $rebot = $__dada_geto( $ref_avis || '_rebot' );\r $temps_avis = $__dada_geto( $ref_avis );\r $avis_es_actual =\r $temps_avis AND\r $temps_avis + ( $generics.Lapse * 2 ) < timestamp;\r if ( $avis_es_actual AND $rebot )\r { bounce ( $__dada_geto( $ref_avis ) ); }\r \r \r // Accions\r // Control adr__ activa\r // Tret de l'activació per a Estels, per a la resta d'accions cal\r // que l'adr__ actuant consti com a activada per operar amb Estels \r if ( $refgeto != 'estels' ) {\r $__activada( $adr__, 'estels' );\r if ( $ACC != 'Activacio' )\r { $__activada( $adr__, $refgeto ); }\r }\r else if ( $ACC != 'Activacio' )\r { $__activada( $adr__, 'estels' ); }\r \r \r // Transfer\r if ( $ACC == 'Transfer' ) {\r $receptora = $__arg( 'receptora' );\r $condicions =\r $__activada( $receptora, 'estels' )\r AND $__activada( $receptora, $refgeto )\r AND $refgeto == 'estels' ? true : $__capacitada( 'recepcio', $receptora )\r AND $__subscrita( $adr__ ) ? $__renovada( $receptora ) : true;\r }\r \r \r // Gestió Cicles\r if ( ! $cicle_actual ) {\r $nou_cicle = 1;\r $nova_data = timestamp;\r $nova_data_cicle_anterior = 0;\r $interval = 0;\r $nova_escala = 1;\r } else {\r $data_cicle_actual = $dades.data_cicle_actual;\r $data_cicle_anterior = $dades.data_cicle_anterior;\r $interval = timestamp - $data_cicle_actual;\r if ( $generics.Interval < $interval ) {\r $nou_cicle = $cicle_actual + 1;\r $nova_data = timestamp;\r $nova_data_cicle_anterior = $data_cicle_actual;\r $total_FOP = $__dada_portal( 'total_FOP_en_estels' );\r $nova_escala = $total_FOP ? length( $total_FOP ) : 1;\r } else {\r $nou_cicle = $cicle_actual;\r $nova_data = $data_cicle_actual;\r $nova_data_cicle_anterior = $data_cicle_anterior;\r $nova_escala = $dades.escala_actual;\r }\r }\r \r $dades.cicle_actual = $nou_cicle;\r $dades.data_cicle_actual = $nova_data;\r $dades.data_cicle_anterior = $nova_data_cicle_anterior;\r $dades.escala_actual = $nova_escala;\r \r \r // Activacio\r if ( $ACC == 'Activacio' ) {\r \r if ( $__dada( 'activacio_' || $adr__ || '_en_' || $refgeto ) )\r { bounce( 'Adreça ja activada' ); }\r \r $condicions =\r $__capacitada( 'activacio', $adr__ )\r AND $__qtSuficient( 'Import_Activacio', $qt )\r AND $__arg( 'nom' );\r }\r \r \r // Subscripcio\r if ( $ACC == 'Subscripcio' ) {\r \r if ( $__dada( 'subscripcio_' || $adr__ || '_en_' || $refgeto ) )\r { bounce( 'Adreça ja subscrita' ); }\r \r $condicions =\r $__capacitada( 'subscripcio', $adr__ )\r AND $__qtSuficient( 'Import_Subscripcio', $qt )\r AND $__arg( 'nom' )\r AND $__arg( 'derivacio' );\r }\r \r \r // Renovacio\r if ( $ACC == 'Renovacio' ) {\r $condicions =\r $__subscrita( $adr__ )\r AND $__qtSuficient( 'Import_Renovacio', $qt );\r \r $cicle_renovat = $__dada( 'renovacio_' || $adr__ || '_en_' || $refgeto || '_cicle' );\r if ( $nou_cicle > 1\r AND $cicle_renovat\r AND $nou_cicle == $cicle_renovat )\r { bounce( 'Cicle ja renovat' ); }\r }\r \r \r // Diposit\r if ( $ACC == 'Diposit' ) {\r $condicions =\r $__capacitada( 'conversio', $adr__ )\r AND $__renovada( $adr__ );\r \r $taxa_conversio = $__param( 'Taxa_Conversio' );\r $cicles_diposit = $__param( 'Cicles_Diposit' );\r $cicle_conversio = $nou_cicle + $cicles_diposit;\r $taxa = round( $qt * $taxa_conversio / 100, 0 );\r $qt_conversio = $qt - $taxa;\r }\r \r \r // Contribucio\r if ( $ACC == 'Contribucio' )\r {\r // Ha de ser exclusivament en Estels\r $__arg( 'ref' ); \r }\r \r \r // Ordinal\r $ordinal = $__ordinal( $ACC );\r \r \r // Total acumulat\r $ref_total = $ACC == 'Diposit' ? 'diposits' : to_lower( $ACC ) || 'ns';\r $total_acc = $__dada( 'total_' || $ref_total || '_en_' || $refgeto ) otherwise 0;\r \r }", "messages": [ { "if": "{ $ACC == 'Activacio' }", "app": "data_feed", "payload": { "{ $ref_total }": "{ $total_acc + $qt }", "{ 'activacio_' || $adr__ || '_en_' || $refgeto }": "{ timestamp }", "{ 'activacio_' || $adr__ || '_en_' || $refgeto || '_nom' }": "{ $args.nom }", "{ 'activacio_' || $adr__ || '_en_' || $refgeto || '_qt' }": "{ $qt }", "{ 'activacio_' || $adr__ || '_en_' || $refgeto || '_cicle' }": "{ $nou_cicle }", "{ 'activacio_' || $adr__ || '_en_' || $refgeto || '_ordinal' }": "{ $ordinal }", "{ 'activacio_' || $adr__ || '_en_' || $refgeto || '_escala' }": "{ $refgeto == 'estels' ? $nova_escala : 100 }" } }, { "if": "{ $ACC == 'Subscripcio' }", "app": "data_feed", "payload": { "{ $ref_total }": "{ $total_acc + $qt }", "{ 'subscripcio_' || $adr__ || '_en_' || $refgeto }": "{ timestamp }", "{ 'subscripcio_' || $adr__ || '_en_' || $refgeto || '_nom' }": "{ $args.nom }", "{ 'subscripcio_' || $adr__ || '_en_' || $refgeto || '_cicle' }": "{ $nou_cicle }", "{ 'subscripcio_' || $adr__ || '_en_' || $refgeto || '_ordinal' }": "{ $ordinal }", "{ 'subscripcio_' || $adr__ || '_en_' || $refgeto || '_derivacio' }": "{ $args.derivacio }" } }, { "if": "{ $ACC == 'Renovacio' }", "app": "data_feed", "payload": { "{ $ref_total }": "{ $total_acc + $qt }", "{ 'renovacio_' || $adr__ || '_en_' || $refgeto }": "{ timestamp }", "{ 'renovacio_' || $adr__ || '_en_' || $refgeto || '_cicle' }": "{ $nou_cicle }" } }, { "if": "{ $ACC == 'Diposit' }", "app": "data_feed", "payload": { "{ $ref_total }": "{ $total_acc + $qt }", "{ 'diposit_' || $ordinal || '_en_' || $refgeto }": "{ timestamp }", "{ 'diposit_' || $ordinal || '_en_' || $refgeto || '_dipositant' }": "{ $adr__ }", "{ 'diposit_' || $ordinal || '_en_' || $refgeto || '_qt_diposit' }": "{ $qt }", "{ 'diposit_' || $ordinal || '_en_' || $refgeto || '_qt_conversio' }": "{ $qt_conversio }", "{ 'diposit_' || $ordinal || '_en_' || $refgeto || '_cicle_conversio' }": "{ $taxa_conversio }", "{ 'diposit_' || $ordinal || '_en_' || $refgeto || '_taxa' }": "{ $taxa_conversio }", "{ 'diposit_' || $ordinal || '_en_' || $refgeto || '_cicle' }": "{ $nou_cicle }", "{ 'diposit_' || $ordinal || '_en_' || $refgeto || '_geto_diposit' }": "{ $refgeto }" } }, { "if": "{ $ACC == 'Contribucio' }", "app": "data_feed", "payload": { "{ $ref_total }": "{ $total_acc + $qt }", "{ 'contribucio_' || $ordinal }": "{ timestamp }", "{ 'contribucio_' || $ordinal || '_contribuidora' }": "{ $adr__ }", "{ 'contribucio_' || $ordinal || '_qt' }": "{ $qt }", "{ 'contribucio_' || $ordinal || '_cicle' }": "{ $nou_cicle }", "{ 'contribucio_' || $ordinal || '_escala' }": "{ $nova_escala }" } }, { "app": "state", "state": "{\r \r if ( $ref_avis AND $avis_es_actual )\r { response[ 'AVÍS: ' ] = $__dada_geto( $ref_avis || '_text' ); }\r \r response[ 'cicle actual' ] = $nou_cicle;\r response[ 'data cicle actual' ] = timestamp_to_string( $nova_data );\r response[ 'data cicle anterior' ] = timestamp_to_string( $nova_data_cicle_anterior );\r response[ 'escala actual' ] = $nova_escala;\r response[ 'interval' ] = $interval;\r \r // Activacions\r if ( $ACC == 'Activacio' ) {\r response[ 'Resultat: ' ] =\r "Activació #" || $ordinal || " amb nom: " || $args.nom\r || " de l'adr " || $adr__ || " per operar amb " || $refgeto;\r }\r \r // Subscripcions\r if ( $ACC == 'Subscripcio' ) {\r response[ 'Resultat: ' ] =\r "Subscripció #" || $ordinal || " amb nom: " \r || $args.nom || " de l'adr " || $adr__ || " per al cicle "\r || $nou_cicle || 'per operar amb ' || $refgeto;\r }\r \r // Renovacions\r if ( $ACC == 'Renovacio' ) {\r response[ 'Resultat: ' ] =\r "Renovació de la subscripció per al cicle " || $nou_cicle\r || " de l'adr " || $adr__ || ' en ' || $refgeto;\r }\r \r // Dipòsits\r if ( $ACC == 'Diposit' ) {\r response[ 'Ref dipòsit' ] = 'diposit_' || $ordinal || '_en_' || $refgeto;\r response[ 'Dipositant' ] = $adr__;\r response[ 'Qt dipòsit' ] = $qt;\r response[ 'Qt conversió' ] = $qt_conversio;\r response[ 'Taxa' ] = $taxa_conversio;\r response[ 'Data dipòsit' ] = timestamp_to_string( timestamp );\r response[ 'Cicle dipòsit' ] = $nou_cicle;\r response[ 'Cicle conversió' ] = $nou_cicle + $cicle_conversio;\r }\r \r // Contribucions\r if ( $ACC == 'Contribucio' ) {\r response[ 'Ref contribucio' ] = 'contribucio_' || $ordinal;\r response[ 'Contribuidora' ] = $adr__;\r response[ 'Qt' ] = $qt;\r response[ 'Escala actual' ] = $nova_escala;\r }\r \r // -- Nou Portal\r if ( $_Portal != $_Portal_actual ) {\r var[ 'anterior_portal' ] = var[ 'nou_portal' ];\r var[ 'nou_portal' ] = $_Portal;\r response[ 'Nou portal'] = $_Portal;\r }\r \r // -- Actualització dades\r if ( $args.copia_dades ) {\r var[ 'dades' ] = var[ $darrera_versio ][ 'dades' ];\r } else {\r var[ 'dades' ] = $dades;\r }\r \r response[ 'acció realitzada' ] = $ACC;\r response[ 'cicle actual' ] = $nou_cicle;\r }" } ] } ]
Technical information
Fees:
13,254 bytes
(452 headers, 12802 payload)
Level:1877194
Witnessed level:1877186
Main chain index:1869230
Latest included mc index:1869229
Status:stable/confirmed/final