Unit ID
KVytrgd6qjQuMZMKmSY2MB6ViBLzASLH+5NNsmxAT/0=
Received
16.01.2021 09:59:59
Confirmation delay (full node)
3 minutes 20 seconds
Confirmation delay (light node)
6 minutes 21 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 = var[ 'nou_portal' ] otherwise $_Portal_original;\r \r if ( $_Portal != trigger.address )\r { bounce ( 'Portal no habilitat' ); }\r \r // Principals\r $args = trigger.data;\r $adr__ = trigger.initial_address;\r $idgeto = trigger.output[[ asset != base ]].asset;\r $qt = trigger.output[[ asset = $idgeto ]];\r \r $dades_portal = var[ $_Portal ][ 'dades' ];\r $generics = $dades_portal.generics;\r $_estels = $generics._estels;\r //$_FOP = $generics._FOP;\r $_FOP = $_Portal;\r $getons = var[ $generics._Getons ][ 'Getons' ];\r $geto = $getons[ $idgeto ];\r $es_en_getons = $idgeto != $_estels;\r \r $dades = var[ 'Dades' ] otherwise {};\r $basiques = $dades.basiques;\r $totals = $dades.totals;\r $ordinals = $dades.ordinals otherwise {};\r $cicle_actual = $basiques.cicle_actual;\r \r $params = $es_en_getons ? $geto.variables : $generics;\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 // Consulta si acció restringida\r $__accRestringida = $acc => {\r $es_en_getons ?\r $geto.capacitacions [ $acc || 'ns_restringides' ] :\r false\r };\r \r // Si acció restringida per al getó especificat, comprova si adreça capacitada\r $__capacitada = ( $acc, $adr ) => {\r $__accRestringida( $acc ) \r AND $geto.capacitacions[ $acc ][ $adr ].estat != 'capacitada' ?\r bounce( 'Adreça no capacitada per a aquesta acció' ) :\r true\r };\r \r // Comprova si adreça activada per operar amb getó especificat\r $__activada = ( $adr, $id_geto ) => {\r var[ 'activacio_' || $adr || '_en_' || $id_geto ] ?\r true :\r bounce( ': Adreça no activada per a ' || $id_geto )\r };\r \r // Comprova si qt proporcionada cobreix import especificat\r $__qtSuficient = $ref =>\r $params[ $ref ] > $qt ?\r bounce( ": L'" || $ref || " és de " || $params[ $ref ] ) :\r true;\r \r // Comprova si adreça consta com a subscrita\r $__subscrita = $adr => {\r $subscripcio = var[ 'subscripcio_' || $adr || '_en_' || $idgeto ];\r $subscripcio ?\r true :\r bounce( ": Adreça no subscrita per a " || $idgeto ) };\r \r // Comprova si la subscripció ha estat renovada per al cicle actual\r $__renovada = $adr => {\r $renovacio = var[ 'renovacio_' || $adr || '_' || $idgeto ];\r ! $renovacio OR $cicle_actual > $renovacio ?\r bounce( ": Subscripció de l'adreça no renovada per a " || $idgeto )\r : $__subscrita( $adr ) };\r \r \r // Consulta si hi ha cap avís per a adr__\r $avis = $geto.avisos[ $adr__ ];\r $avis_es_actual = $avis.temps + ( $generics.Lapse * 2 ) < timestamp;\r if ( $avis AND $avis.rebot AND $avis_es_actual )\r { bounce ( $avis.text ); }\r \r \r // Accions\r $ACC = $__arg( 'accio' );\r $_receptora = $ACC == 'Transfer' ? $__arg( 'receptora' ) : $_FOP;\r \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 ( $es_en_getons ) {\r $__activada( $adr__, $_estels );\r if ( $ACC != 'Activacio' ) \r { $__activada( $adr__, $idgeto ); }\r }\r else if ( $ACC != 'Activacio' )\r { $__activada( $adr__, $_estels ); }\r \r // Activacio\r if ( $ACC == 'Activacio' ) {\r $condicions =\r ! $es_en_getons ?\r $__activada( $adr__, $_estels ) ?\r bounce( ': Adreça ja activada' ) :\r true :\r true\r AND $__capacitada( 'activacio', $adr__ )\r AND $__qtSuficient( 'Import_Activacio' )\r AND $__arg( 'nom' );\r }\r \r // Transfer\r if ( $ACC == 'Transfer' ) {\r $condicions =\r $__activada( $_receptora, $_estels )\r AND $__activada( $_receptora, $idgeto )\r AND $es_en_getons ? $__capacitada( 'recepcio', $_receptora ) : true\r AND $__subscrita( $adr__ ) ? $__renovada( $_receptora ) : true;\r $subscripcio = var[ 'subscripcio_' || $_receptora || '_en_' || $idgeto ];\r $derivacio = $qt * $subscripcio.derivacio / 100;\r $qt_def = $subscripcio ? $qt - $derivacio : $qt;\r } else {\r $qt_def = $qt;\r }\r \r // Renovacio\r if ( $ACC == 'Renovacio' ) {\r $condicions =\r $__subscrita( $adr__ )\r AND $__qtSuficient( 'Import_Renovacio' );\r \r $cicle_renovat = var[ 'renovacio_' || $adr__ || '_en_' || $idgeto ];\r if ( $cicle_actual > 1\r AND $cicle_renovat\r AND $cicle_actual == $cicle_renovat )\r { bounce( ': Cicle ja renovat' ); }\r }\r \r // Subscripcio\r if ( $ACC == 'Subscripcio' ) {\r $condicions =\r $__capacitada( 'subscripcio', $adr__ )\r AND $__subscrita( $adr__ ) ? bounce( ': Adreça ja subscrita' ) : ''\r AND $__qtSuficient( 'Import_Subscripcio' )\r AND $__arg( 'nom' ) \r AND $__arg( 'derivacio' );\r }\r \r // Diposit\r if ( $ACC == 'Diposit' ) {\r $condicions =\r $__capacitada( 'conversio', $adr__ )\r AND $__renovada( $adr__ );\r \r $taxa_conversio = $params[ 'Taxa_Conversio' ];\r $cicles_diposit = $params[ 'Cicles_Diposit' ];\r $cicle_conversio = $cicle_actual + $cicles_diposit;\r $taxa = round( $qt * $taxa_conversio / 100, 0 );\r $qt_conversio = $qt - $taxa;\r }\r \r // Contribucio\r if ( $ACC == 'Contribucio' )\r { \r // Ha de ser exclusivament en Estels\r $__arg( 'ref' ); \r }\r \r }", "messages": [ { "app": "payment", "payload": { "asset": "{ $geto }", "outputs": [ { "address": "{ $_receptora }", "amount": "{ $qt_def }" } ] } }, { "if": "{ $derivacio }", "app": "payment", "payload": { "asset": "{ $geto }", "outputs": [ { "address": "{ $_FOP }", "amount": "{ $derivacio }" } ] } }, { "app": "state", "state": "{\r $ordinal = $__ordinal( $ACC );\r \r if ( $avis AND $avis_es_actual )\r { response[ 'AVÍS: ' ] = $avis.text; }\r \r // Registre Totals\r $seccRef = 'total_' || $ACC || '_';\r $ref_en = $seccRef || '_en_' || $geto;\r $ref_de = $seccRef || '_de_' || $adr__ || '_en_' || $geto;\r $ref_a = $seccRef || '_a_' || $_receptora || '_en_' || $geto;\r $ref_de_a = $seccRef || '_de_' || $adr__ || '_a_' || $_receptora || '_en_' || $geto;\r $totals[ $ref_en ] = $totals[ $ref_en ] + $qt;\r $totals[ $ref_de ] = $totals[ $ref_de ] + $qt;\r $totals[ $ref_a ] = $totals[ $ref_a ] + $qt;\r $totals[ $ref_de_a ] = $totals[ $ref_de_a ] + $qt;\r \r response[ 'Totals en: ' ] = $geto;\r $seccResp = 'Total ' || $ACC;\r response[ 'Totals en: ' ] = $idgeto;\r response[ $seccResp ] = $totals[ $ref_en ];\r response[ $seccResp || ' de ' || $adr__ ] = $totals[ $ref_de ];\r response[ $seccResp || ' a ' || $_receptora ] = $totals[ $ref_a ];\r response[ $seccResp || ' de ' || $adr__ || ' a ' || $_receptora ] = $totals[ $ref_de_a ];\r \r // Registre Derivacions\r if ( $__subscrita( $_receptora ) ) {\r $ref_derivs_en = 'total_Derivacions_en_' || $geto;\r $ref_derivs_de = 'total_Derivacions_de_' || $_receptora || '_en_' || $geto;\r $totals[ $ref_derivs_en ] = $totals[ $ref_derivs_en ] + $derivacio;\r $totals[ $ref_derivs_de ] = $totals[ $ref_derivs_de ] + $derivacio;\r \r response[ 'Total Derivacions ' ] = $totals[ $ref_derivs_en ];\r response[ 'Total Derivacions de ' || $_receptora ] = $totals[ $ref_derivs_de ];\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 $escala = 1;\r } else {\r $data_cicle_actual = $basiques.data_cicle_actual;\r $data_cicle_anterior = $basiques.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_derivacions = $totals[ 'total_Transfers_a_' || $_FOP || '_en_' || $_estels ];\r if ( ! $total_derivacions ) { $nova_escala = 1; }\r else { $nova_escala = length( $total_derivacions ) -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 = $basiques.escala_actual;\r }\r }\r $basiques.cicle_actual = $nou_cicle;\r $basiques.data_cicle_actual = $nova_data;\r $basiques.data_cicle_anterior = $nova_data_cicle_anterior;\r $basiques.escala_actual = $nova_escala;\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 \r // Registre Activacions\r if ( $ACC == 'Activacio' ) {\r $activacio =\r {\r nom: $args.nom,\r qt: $qt_def,\r cicle: $nou_cicle,\r ordinal: $ordinal,\r escala : $es_en_getons ? 100 : var[ 'escala_actual' ]\r }; \r $dades.activacions[ 'activacio_' || $adr__ || '_en_' || $idgeto ] = $activacio;\r response[ 'Resultat: ' ] =\r "Activació #" || $ordinal || " amb nom: " || $args.nom\r || " de l'adr " || $adr__ || " per operar amb " || $idgeto;\r }\r \r // Registre Subscripcions\r if ( $ACC == 'Subscripcio' ) {\r $dades.subscripcions[ 'subscripcio_' || $adr__ || '_en_' || $idgeto ] =\r {\r nom: $args.nom,\r cicle: $nou_cicle,\r ordinal: $ordinal,\r derivacio: $args.derivacio,\r };\r response[ 'Resultat: ' ] = \r "Subscripció #" || $ordinal || " amb nom: " \r || $args.nom || " de l'adr " || $adr__ || " per al cicle "\r || $nou_cicle || 'per operar amb ' || $idgeto;\r }\r \r // Registre Renovacions\r if ( $ACC == 'Renovacio' ) {\r $dades.renovacions[ 'renovacio_' || $adr__ || '_en_' || $idgeto ] = $cicle_actual;\r response[ 'Resultat: ' ] =\r "Renovació de la subscripció per al cicle " || $cicle_actual\r || " de l'adr " || $adr__ || ' en ' || $idgeto;\r }\r \r // Registre Dipòsits\r if ( $ACC == 'Diposit' ) {\r $ref = 'diposit_' || $ordinal || '_en_' || $idgeto;\r $dades.diposits.darrer_diposit = $ref; // Per als TESTS\r $dades.diposits[ $ref ] =\r {\r dipositant: $adr__,\r qt_diposit: $qt,\r qt_conversio: $qt_conversio,\r cicle_conversio: $cicle_conversio,\r taxa: $taxa_conversio,\r temps: timestamp,\r cicle: $nou_cicle,\r geto_diposit: $idgeto,\r };\r response[ 'Ref dipòsit' ] = $ref;\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 // Registre Contribucions\r if ( $ACC == 'Contribucio' ) {\r $ref = 'contribucio_' || $ordinal;\r $dades.contribucions[ $ref ] =\r {\r contribuidora: $adr__,\r qt: $qt,\r temps: timestamp,\r cicle: $nou_cicle,\r escala: $basiques.escala_actual,\r };\r response[ 'Ref contribucio' ] = $ref;\r response[ 'Contribuidora' ] = $adr__;\r response[ 'Qt' ] = $qt;\r response[ 'Cicle actual' ] = $nou_cicle;\r response[ 'Escala actual' ] = $basiques.escala_actual;\r }\r \r \r // -- Nou Portal\r if ( $args.nou_portal ) {\r var[ 'anterior_portal' ] = var[ 'nou_portal' ];\r var[ 'nou_portal' ] = $args.nou_portal;\r response[ 'Nou portal de _Getons ' ] = $args.nou_portal;\r }\r \r \r // -- Actualització dades\r if ( $args.copia_dades ) {\r \r $dades_darrera_versio = var[ $darrera_versio ][ 'dades' ];\r \r if ( ! $args.totes ) {\r $__valvar = $refvar => {\r $dades[ $refvar ] =\r $args[ $refvar ] ?\r $dades_darrera_versio[ $refvar ] :\r {};\r };\r \r $refs = [\r 'basiques', 'totals', 'activacions', 'subscripcions', \r 'renovacions', 'diposits', 'contribucions', 'ordinals'\r ];\r \r $valora = map( $refs, 8, $__valvar );\r }\r } else {\r $dades.basiques = $basiques;\r $dades.totals = $totals;\r $dades.ordinals = $ordinals;\r }\r \r var[ 'dades' ] = $args.totes ? $dades_darrera_versio : $dades;\r response[ 'acció realitzada' ] = $ACC;\r }" } ] } ]
Technical information
Fees:
14,355 bytes
(452 headers, 13903 payload)
Level:1847378
Witnessed level:1847371
Main chain index:1839479
Latest included mc index:1839478
Status:stable/confirmed/final