YCZVSQG53KFQZXVRAPEP7VOGZ3OWXRQD
[
    "autonomous agent",
    {
        "init": "{
        $nom_AA = 'Portal';
        $versio = '0.6';
        $_AUT_000 = 'C4KIJSUWVM7BGWTLXKX3K4PNRXV7OY4W';
        $adr__ = trigger.address;
        $args = trigger.data;
        $__bota = $txt => bounce ( $nom_AA || ' >>> ' || $txt );
        if ( ! $args ) { $__bota( ': Cal proporcionar-ne els arguments' ); }
        $args._Portal = this_address;
        $args._FOP = var[ '_FOP' ];
        $args._Estels = var[ '_Estels' ];
        $args._Validacions = var[ '_Validacions' ];
        $args.geto = trigger.output[[ asset != base ]].asset;
        $args.qt = trigger.output[[ asset = $args.geto ]];
    }",
        "messages": [
            {
                "app": "data",
                "payload": "{ $args }"
            },
            {
                "if": "{ ! $args.admin }",
                "app": "payment",
                "payload": {
                    "asset": "{ $args.geto }",
                    "outputs": [
                        {
                            "address": "{ var[ '_Acces' ] }",
                            "amount": "{ $args.qt }"
                        }
                    ]
                }
            },
            {
                "if": "{ !! $args.admin }",
                "app": "state",
                "state": "{
                // Si no s'ha lliurat l'argument especificat, s'atura
                $__arg = $arg =>
                    $args[ $arg ] ?
                    $args[ $arg ] :
                    $__bota( 'Cal proporcionar el valor de: ' || $arg );
                $_a = $__arg( 'ref' );
                $_b = $__arg( 'val' );
                // Comprova si una adr consta com a autoritzada
                $__autoritzada = ( $x ) => {
                    $aut = var[ '_AUT_' || $x ];
                    $aut AND $aut == $adr__
                };
                // Comprova si la adr__ actuant consta com a autoritzada
                if ( $adr__ != $_AUT_000
                    AND ! $__autoritzada( '0' )
                    AND ! $__autoritzada( 'A' )
                    AND ! $__autoritzada( 'B' )
                    AND ! $__autoritzada( 'C' )
                ) { $__bota( 'No autoritzada' ); }
                response[ 'ref' ] = $args.ref;
                response[ 'val' ] = $args.val;
                // _AUT_000 pot saltar-se la validació mentre no existeixi _AUT_0
                $es_AUT_000 = $adr__ == $_AUT_000;
                if ( ! $es_AUT_000 OR ( !! $es_AUT_000 AND !! var[ '_AUT_0' ] ) ) {
                    
                    if ( $args.ref == 'confirmacio' ) {
                        $proposta = var[ $args.val ];
                        // La proposta ha d'existir
                        if ( ! $proposta )
                        { $__bota( 'No hi ha cap proposta amb aquesta id' ); }
                        // El valor actual i el de la proposta desada no han de coincir
                        if ( !! var[ $proposta.ref ] AND var[ $proposta.ref ] == $proposta.val )
                        { $__bota( 'El valor actual coincideix amb el de la proposta' ); }
                        // L'ordinal de la proposta ha de coincidir amb el de la darrera
                        $ordinal_proposta = var[ 'ordinal_proposta_' || $proposta.ref ];
                        if ( !! $ordinal_proposta AND $ordinal_proposta != $proposta.ordinal )
                        { $__bota( 'Ref incorrecta' ); }
                        // La confirmació l'ha de fer una AUT diferent a la proposant
                        if ( $proposta.proposant == $adr__ )
                        { $__bota( 'La confirmació ha de ser endegada per una altra AUT' ); }
                        // La confirmació només es pot fer quan ha transcorregut el lapse especificat
                        if ( var[ 'Lapse' ] > timestamp - $proposta.temps )
                        { 
                            $resp = 'Lapse: ' || var[ 'Lapse' ] 
                            || 'Temps proposta: ' || $proposta.temps
                            || 'Temps actual: ' || timestamp
                            || 'Resta t.actual menys t.proposta: ' || timestamp - $proposta.temps;
                            $__bota( 'Encara no es pot confirmar la proposta' || $resp ); }
                        // La proposta ha de constar com a validada a _Validacions
                        if ( ! var[ $args._Validacions ][ $args.val ] )
                        { $__bota( 'Encara no ha estat validada' ); }
                        var[ $args.ref ] = $args.val;
                    } else {
                        // El valor actual i el proporcionat no han de coincidir
                        if ( !! var[ $args.ref ] AND var[ $args.ref ] == $args.val )
                        { $__bota( 'El valor actual coincideix amb el de la proposta' ); }
                        // El valor proporcionat no ha de coincidir amb el de la darrera proposta
                        $ord_darrera_prop = var[ 'ordinal_proposta_' || $args.ref ];
                        $darrera_prop = var[ 'proposta_' || $args.ref || '_' || $ord_darrera_prop ];
                        if ( !! $darrera_prop AND $darrera_prop.val == $args.val )
                        { $__bota( 'El valor proposat coincideix amb el de la darrera proposta' ); }
                        $ref_ordinal = 'ordinal_proposta_' || $args.ref;
                        $ordinal = var[ $ref_ordinal ];
                        $nou_ordinal = ! $ordinal ? 1 : $ordinal + 1;
                        var[ $ref_ordinal ] = $nou_ordinal;
                        $id_proposta = 'proposta_' || $args.ref || '_' || $nou_ordinal;
                        var[ $id_proposta ] =
                            {
                                ref: $args.ref,
                                val: $args.val,
                                ordinal: $nou_ordinal,
                                proposant: $adr__,
                                temps: timestamp,
                            };
                        response[ 'id proposta' ] = $id_proposta;
                        response[ 'data proposta' ] = timestamp_to_string( timestamp );
                        response[ 'data inici periode confirmació'] =
                            timestamp_to_string( timestamp + var[ 'Lapse' ] );
                    }
                } else {
                    var[ $args.ref ] = $args.val;
                }
            }"
            }
        ]
    }
]
- MCI: 1781020
- Not bounced
- Response unit: 
- Response: {
    "responseVars": {
        "ref": "Lapse",
        "val": 6000,
        "id proposta": "proposta_Lapse_1",
        "data proposta": "2020-12-04T19:31:22Z",
        "data inici periode confirmació": "2020-12-04T20:54:42Z"
    }
}
- MCI: 1781009
- Not bounced
- Response unit: 
- Response: {
    "responseVars": {
        "ref": "_Validacions",
        "val": "BUU7CYF2CXVEZBEBK5ZMXHMIM74VETWG"
    }
}
- MCI: 1781003
- Not bounced
- Response unit: 
- Response: {
    "responseVars": {
        "ref": "_AUT_B",
        "val": "AMJMY4TSHN7WAMDDNBDJHOVGTL3SG7LN"
    }
}
- MCI: 1780998
- Not bounced
- Response unit: 
- Response: {
    "responseVars": {
        "ref": "_AUT_A",
        "val": "GIIYFJXPZW3KH5MPQKRLZTWO4LIXX25R"
    }
}
- MCI: 1780990
- Not bounced
- Response unit: 
- Response: {
    "responseVars": {
        "ref": "Lapse",
        "val": 5000
    }
}
Show transactions in assets: 
 No transactions found, it may be worth changing the filter 
Unit ID
Date
From
Direction
To
Amount
04.12.2020 19:31:22
YCZVSQG53KFQZXVRAPEP7VOGZ3OWXRQD
out
YCZVSQG53KFQZXVRAPEP7VOGZ3OWXRQD
04.12.2020 19:31:22
in
YCZVSQG53KFQZXVRAPEP7VOGZ3OWXRQD
04.12.2020 19:31:22
in
YCZVSQG53KFQZXVRAPEP7VOGZ3OWXRQD
04.12.2020 19:28:16
YCZVSQG53KFQZXVRAPEP7VOGZ3OWXRQD
out
YCZVSQG53KFQZXVRAPEP7VOGZ3OWXRQD
04.12.2020 19:27:35
YCZVSQG53KFQZXVRAPEP7VOGZ3OWXRQD
out
YCZVSQG53KFQZXVRAPEP7VOGZ3OWXRQD
04.12.2020 19:27:05
YCZVSQG53KFQZXVRAPEP7VOGZ3OWXRQD
out
YCZVSQG53KFQZXVRAPEP7VOGZ3OWXRQD