Unit ID
OOpzCN85opkTXAQIHhKz0bX/10dDWVhgJeho0eyOwoQ=
Received
05.03.2021 18:08:24
Confirmation delay (full node)
4 minutes 49 seconds
Confirmation delay (light node)
7 minutes 13 seconds
Messages
Definition
Definition: [ "autonomous agent", { "init": "{ $nom_AA = 'Accions'; //$_Portal_original = '0000000000'; $_Portal_original = trigger.address; //Hauria de ser fix amb adr darrer Portal $args = trigger.data; $adr__ = trigger.initial_address; $idgeto = trigger.output[[ asset != base ]].asset; $refgeto = $args.refgeto; $dades = $args.dades otherwise {}; $__dada = $refval => var[ $args._Registre ][ $refval ]; $_Portal_actual = $__dada( 'portal_actual' ) otherwise $_Portal_original; if ( $_Portal_actual != trigger.address ) bounce ( 'Portal no reconegut' ); // 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 ); $__param = $refparam => { $refgeto == 'estels'? $__dada( $refparam ) : $__dada( $refgeto || '_' || $refparam ) }; // Comprova si qt proporcionada cobreix import especificat $__qtSuficient = $ref, $q => $__param( $ref ) > $q ? bounce( "L'" || $ref || " és de " || $__param( $ref ) ) : true; // Comprova si adreça consta com a subscrita $__subscrita = $adr => !! $__dada( 'subscripcio_' || $adr || '_en_' || $refgeto ) ? true : bounce( "Adreça no subscrita per a " || $refgeto ); // Comprova si la subscripció ha estat renovada per al cicle actual $__renovada = $adr => { $cicle_renovat = $__dada( 'renovacio_' || $adr || '_en_' || $refgeto || '_cicle' ); $cicle_renovat >= $__dada( 'cicle_actual' ) ? true : bounce( "Subscripció de l'adreça " || $adr || " no renovada en " || $refgeto || " per al cicle actual: " || $__dada( 'cicle_actual' ) ) }; // Arguments i Dades $ACC = $__arg( 'accio' ); $qt = $__arg( 'qt_accio' ); $cicle_actual = $__dada( 'cicle_actual' ) otherwise 1; $escala_actual = $__dada( 'escala_actual' ) otherwise 1; // Avís // Consulta si hi ha cap avís per a adr__ $ref_avis = $refgeto || '_avis_' || $adr__; $rebot = $__dada( $ref_avis || '_rebot' ); $temps_avis = $__dada( $ref_avis ); $avis_es_actual = !! $temps_avis AND $temps_avis + ( $__dada( 'Lapse' ) * 2 ) < timestamp; if ( $avis_es_actual AND $rebot ) bounce ( $__dada( $ref_avis || '_text' ) ); // Total acumulat $secc_ref = $ACC == 'Diposit' OR $ACC == 'Transfer' ? to_lower( $ACC ) || 's' : to_lower( $ACC ) || 'ns'; $ref_total = 'total_' || $secc_ref || '_en_' || $refgeto; $dades[ $ref_total ] = $__dada( $ref_total ) + $qt otherwise $qt; // Activacio if ( $ACC == 'Activacio' ) { $ref_Activacio = 'activacio_' || $adr__ || '_en_' || $refgeto; if ( !! $__dada( $ref_Activacio ) ) bounce( 'Adreça ja activada' ); $condicions = $__qtSuficient( 'Import_Activacio', $qt ) AND $__arg( 'nom' ); $dades[ $ref_Activacio ] = timestamp; $dades[ $ref_Activacio || '_nom' ] = $args.nom; $dades[ $ref_Activacio || '_qt' ] = $qt; $dades[ $ref_Activacio || '_cicle' ] = $cicle_actual; if ( $refgeto == 'estels' ) $dades[ $ref_Activacio || '_escala' ] = $escala_actual; } // Subscripcio if ( $ACC == 'Subscripcio' ) { $ref_subscripcio = 'subscripcio_' || $adr__ || '_en_' || $refgeto; $ref_renovacio = 'renovacio_' || $adr__ || '_en_' || $refgeto; if ( !! $__dada( $ref_subscripcio ) ) bounce( 'Adreça ja subscrita' ); $condicions = $__qtSuficient( 'Import_Subscripcio', $qt ) AND $__arg( 'nom' ) AND $__arg( 'derivacio' ); $dades[ $ref_subscripcio ] = timestamp; $dades[ $ref_subscripcio || '_nom' ] = $args.nom; $dades[ $ref_subscripcio || '_derivacio' ] = $args.derivacio; $dades[ $ref_subscripcio || '_cicle' ] = $cicle_actual; $dades[ $ref_renovacio ] = timestamp; $dades[ $ref_renovacio || '_cicle' ] = $cicle_actual; } // Renovacio if ( $ACC == 'Renovacio' ) { $ref_renovacio = 'renovacio_' || $adr__ || '_en_' || $refgeto; $cicle_renovat = $__dada( $ref_renovacio || '_cicle' ) otherwise 1; if ( $cicle_actual == $cicle_renovat ) bounce( 'Cicle actual ( ' || $cicle_actual || ' ) ja renovat' ); $condicions = $__subscrita( $adr__ ) AND $__qtSuficient( 'Import_Renovacio', $qt ); $dades[ $ref_renovacio ] = timestamp; $dades[ $ref_renovacio || '_cicle' ] = $cicle_actual; } // Diposit if ( $ACC == 'Diposit' ) { $ord_diposit = $__dada( 'ordinal_diposit' ) otherwise 0; $ref_diposit = 'diposit_' || ( $ord_diposit + 1 ); if ( $qt < $__param( 'Diposit_Minim' ) ) bounce( 'El dipòsit mínim és de ' || $__param( 'Diposit_Minim' ) ); $condicions = $__subscrita( $adr__ ) AND $__renovada( $adr__ ); $taxa_conversio = $__param( 'Taxa_Conversio' ); $cicles_diposit = $__param( 'Cicles_Diposit' ); $cicle_conversio = $cicle_actual + $cicles_diposit; $taxa = round( $qt * $taxa_conversio / 100, 0 ); $qt_conversio = $qt - $taxa; $dades[ 'ordinal_diposit' ] = $ord_diposit + 1; $dades[ $ref_diposit ] = $qt; $dades[ $ref_diposit || '_dipositant' ] = $adr__; $dades[ $ref_diposit || '_cicle' ] = $cicle_actual; $dades[ $ref_diposit || '_geto_diposit' ] = $refgeto; $dades[ $ref_diposit || '_data' ] = timestamp; $dades[ $ref_diposit || '_taxa' ] = $taxa_conversio; $dades[ $ref_diposit || '_qt_conversio' ] = $qt_conversio; $dades[ $ref_diposit || '_cicle_conversio' ] = $cicle_conversio; } // Contribucio if ( $ACC == 'Contribucio' ) { $ord_contribucio = $__dada( 'ordinal_contribucio' ) otherwise 0; $ref_contribucio = 'contribucio_' || ( $ord_contribucio + 1 ); $escala_act = $__dada( 'escala_actual' ); $interval = timestamp - $__dada( 'data_escala_' || $escala_act ); $dades[ 'ordinal_contribucio' ] = $ord_contribucio + 1; $dades[ $ref_contribucio ] = $qt; $dades[ $ref_contribucio || '_contribuidora' ] = $adr__; $dades[ $ref_contribucio || '_cicle' ] = $cicle_actual; $dades[ $ref_contribucio || '_escala' ] = $escala_actual; $dades[ $ref_contribucio || '_interval' ] = $interval; $dades[ $ref_contribucio || '_data' ] = timestamp; } if ( $ACC == 'Transfer' ) { $derivacio = $args.derivacio; if ( !! $derivacio ) { $ref_total_FOP = 'total_FOP_en_' || $refgeto; $ref_total_derivacions = 'total_derivacions_en_' || $refgeto; $ref_total_particular = 'total_derivacions_' || $args.receptora || '_en_' || $refgeto; $dades[ $ref_total_FOP ] = $__dada( $ref_total_FOP ) + $derivacio; $dades[ $ref_total_derivacions ] = $__dada( $ref_total_derivacions ) + $derivacio; $dades[ $ref_total_particular ] = $__dada( $ref_total_particular ) + $derivacio; } // Gestió Cicles i Escales $data_cicle_actual = $__dada( 'data_cicle_actual' ) otherwise timestamp; $salt_cicle = timestamp - $data_cicle_actual > $__dada( 'Interval' ); $nou_cicle = ! $__dada( 'cicle_actual' ) ? 1 : $salt_cicle ? $cicle_actual + 1 : $cicle_actual; $total_FOP = $__dada( 'total_FOP_en_estels' ) otherwise 0; $nova_escala = length( $total_FOP ); $salt_escala = $nova_escala > $escala_actual; if ( !! $salt_cicle OR ! $__dada( 'cicle_actual' ) ) { $dades[ 'cicle_actual' ] = $nou_cicle; $dades[ 'data_cicle_' || $nou_cicle ] = timestamp; $dades[ 'escala_cicle_' || $nou_cicle ] = $escala_actual; } if ( !! $salt_escala OR ! $__dada( 'cicle_actual' ) ) { $dades[ 'escala_actual' ] = $nova_escala; $dades[ 'data_escala_' || $nova_escala ] = timestamp; $dades[ 'cicle_escala_' || $nova_escala ] = $cicle_actual; } } if ( $ACC != 'Transfer' ) { $ref_total_FOP = 'total_FOP_en_' || $refgeto; $total_FOP_actual = $__dada( $ref_total_FOP ) otherwise 0; $dades[ $ref_total_FOP ] = $total_FOP_actual + $qt; } $ref_total_unitat = 'total_en_' || $refgeto; $total_unitat = $__dada( $ref_total_unitat ) otherwise 0; $dades[ $ref_total_unitat ] = $total_unitat + $qt; $qt_registre = balance[ base ] > 20000 ? balance[ base ] - 10000 : 3000; $args.dades = $dades; }", "messages": [ { "app": "data", "payload": "{ $args }" }, { "app": "payment", "payload": { "asset": "base", "outputs": [ { "address": "{ $args._Registre }", "amount": "{ $qt_registre }" } ] } }, { "app": "state", "state": "{ // Avis //if ( $_avis AND $avis_es_actual ) if ( $avis_es_actual ) response[ 'AVÍS !' ] = $__dada( $ref_avis || '_text' ); // Transfer if ( !! $derivacio ) { response[ 'Receptora deriva a FOP'] = $derivacio || ' ' || $refgeto; response[ 'Total Derivacions en ' || $refgeto ] = $__dada( $ref_total_derivacions ) + $derivacio; response[ 'Total Derivacions de ' || $args.receptora || '_en_' || $refgeto ] = $__dada( $ref_total_particular ) + $derivacio; } // Activació if ( $ACC == 'Activacio' ) response[ 'Activació' ] = "Amb nom: " || $args.nom || " de l'adr " || $adr__ || " per operar amb " || $refgeto; // Subscripció if ( $ACC == 'Subscripcio' ) response[ 'Subscripció' ] = "Amb nom: " || $args.nom || " de l'adr " || $adr__ || " per al cicle " || $cicle_actual || " per operar amb " || $refgeto; // Renovació if ( $ACC == 'Renovacio' ) response[ 'Renovació' ] = "De la subscripció per al cicle " || $cicle_actual || " de l'adr " || $adr__ || " en " || $refgeto; // Dipòsit if ( $ACC == 'Diposit' ) { response[ 'Dipòsit' ] = $ref_diposit; response[ 'Dipositant' ] = $adr__; response[ 'Qt dipòsit' ] = $qt; response[ 'Qt conversió' ] = $qt_conversio; response[ 'Taxa' ] = $taxa_conversio; response[ 'Data dipòsit' ] = timestamp_to_string( timestamp, 'date' ); response[ 'Hora dipòsit' ] = timestamp_to_string( timestamp, 'time' ); response[ 'Cicle dipòsit' ] = $cicle_actual; response[ 'Cicle conversió' ] = $cicle_actual + $cicle_conversio; } // Contribució if ( $ACC == 'Contribucio' ) { response[ 'Contribució' ] = $ref_contribucio; response[ 'Contribuïdora' ] = $adr__; response[ 'Quantitat' ] = $qt; response[ 'Escala actual' ] = $nova_escala; } // Info general response[ 'Cicle actual' ] = $salt_cicle ? 'Nou cicle: ' || $nou_cicle : $cicle_actual; response[ 'Escala actual' ] = $salt_escala ? 'Nova Escala: ' || $nova_escala : $escala_actual; response[ 'Acció realitzada' ] = $ACC; response[ 'Romanent Accions' ] = balance[ base ] || ' bytes'; response[ 'Transferits a Registre' ] = $qt_registre || ' bytes'; }" } ] } ]
Technical information
Fees:
13,599 bytes
(452 headers, 13147 payload)
Level:1907648
Witnessed level:1907641
Main chain index:1899684
Latest included mc index:1899683
Status:stable/confirmed/final