| 1 | [ |
| 2 | "autonomous agent", |
| 3 | { |
| 4 | "init": "{\r |
| 5 | $nom_AA = 'Validadores';\r |
| 6 | \r |
| 7 | |
| 8 | |
| 9 | $_Portal = trigger.address; |
| 10 | if ( $_Portal != trigger.address ) bounce ( 'Portal no reconegut' );\r |
| 11 | \r |
| 12 | $args = trigger.data;\r |
| 13 | $adr__ = trigger.initial_address;\r |
| 14 | $proces = $args.proces;\r |
| 15 | $dades = $args.dades otherwise {};\r |
| 16 | \r |
| 17 | $__dada = $refval => {\r |
| 18 | data_feed[[ oracles = $args._Registre, feed_name = $refval, ifnone = false ]]\r |
| 19 | };\r |
| 20 | \r |
| 21 | |
| 22 | $__ordinal = $rf => {\r |
| 23 | $ord = $__dada( 'ordinal_' || $rf );\r |
| 24 | $ord ? $ord + 1 : 1\r |
| 25 | };\r |
| 26 | \r |
| 27 | $_actuant_es_isox_000 = $__dada( 'isox_000' ) == $adr__ ;\r |
| 28 | $_estat_isox_actuant = $__dada( 'isox_' || $adr__ || '_estat' ) otherwise '';\r |
| 29 | $autoritzacio = $_actuant_es_isox_000 OR $_estat_isox_actuant == 'habilitat';\r |
| 30 | \r |
| 31 | if ( ! $autoritzacio ) bounce ( 'No autoritzada per a no isox' );\r |
| 32 | \r |
| 33 | $baules_isox = $__dada( 'isox_' || $adr__ || '_baules' ) otherwise 1;\r |
| 34 | $mitjana_baules = $__dada( 'mitjana_baules' ) otherwise 1;\r |
| 35 | if ( $baules_isox > $mitjana_baules * 2 )\r |
| 36 | bounce ( 'No autoritzada per massa baules' );\r |
| 37 | \r |
| 38 | \r |
| 39 | |
| 40 | if ( $proces == 'nou_isox' ) {\r |
| 41 | $estat_isox = $__dada( 'isox_' || $args.adr || '_estat') otherwise '';\r |
| 42 | if ( $estat_isox == 'habilitat' )\r |
| 43 | bounce ( 'Ja hi consta una isox habilitada amb aquesta adreça' );\r |
| 44 | \r |
| 45 | $_aspirant = $__dada( 'aspirant_' || $args.adr );\r |
| 46 | $ord_isox = $__ordinal( 'isox' );\r |
| 47 | \r |
| 48 | if ( $_actuant_es_isox_000 )\r |
| 49 | $dades_alta = [ 'isox_000', 'isox_000', 1 ];\r |
| 50 | else {\r |
| 51 | $nombre_avals =\r |
| 52 | $__dada( 'isox_' || $adr__ || '_aval_2' ) ? 2 :\r |
| 53 | $__dada( 'isox_' || $adr__ || '_aval_1' ) ? 1 :\r |
| 54 | 0;\r |
| 55 | \r |
| 56 | if ( $nombre_avals == 2 ) bounce ( "Ja n'has avalat a 2" );\r |
| 57 | \r |
| 58 | if ( !! $_aspirant ) {\r |
| 59 | $_proposant = $__dada( 'aspirant_' || $args.adr || '_proposant' );\r |
| 60 | \r |
| 61 | if ( $_proposant == $adr__ )\r |
| 62 | bounce ( "Els dos avals han de provenir d'adreces diferents" );\r |
| 63 | \r |
| 64 | $baules_proposant = $__dada( 'isox_' || $_proposant || '_baules' );\r |
| 65 | $baules = round( ( $baules_proposant + $baules_isox ) / 2 );\r |
| 66 | \r |
| 67 | $mitjana_baules_nouisox =\r |
| 68 | ( $__dada( 'mitjana_baules' ) + $baules ) / $ord_isox;\r |
| 69 | $dades[ 'isox_' || $adr__ || '_aval_' || ( $nombre_avals + 1 ) ] = $args.adr;\r |
| 70 | $dades_alta = [ $_proposant, $adr__, $mitjana_baules_nouisox ];\r |
| 71 | \r |
| 72 | } else {\r |
| 73 | $dades[ 'aspirant_' || $args.adr ] = timestamp;\r |
| 74 | $dades[ 'aspirant_' || $args.adr || '_proposant' ] = $adr__;\r |
| 75 | $dades[ 'isox_' || $adr__ || '_aval_' || ( $nombre_avals + 1 ) ] = $args.adr;\r |
| 76 | }\r |
| 77 | }\r |
| 78 | \r |
| 79 | if ( !! $dades_alta[0] ) {\r |
| 80 | $dades[ 'isox_' || $ord_isox ] = $args.adr;\r |
| 81 | $dades[ 'isox_' || $args.adr || '_ordinal' ] = 'isox_' || $ord_isox;\r |
| 82 | $dades[ 'isox_' || $args.adr || '_proposant' ] = $dades_alta[0];\r |
| 83 | $dades[ 'isox_' || $args.adr || '_confirmant' ] = $dades_alta[1];\r |
| 84 | $dades[ 'isox_' || $args.adr || '_data' ] = timestamp;\r |
| 85 | $dades[ 'isox_' || $args.adr || '_estat' ] = 'habilitat';\r |
| 86 | $dades[ 'isox_' || $args.adr || '_mitjana_baules' ] = $dades_alta[2];\r |
| 87 | }\r |
| 88 | }\r |
| 89 | \r |
| 90 | if ( $proces == 'nou_estat_isox' ) {\r |
| 91 | if ( ! $__dada( 'isox_' || $args.adr ) )\r |
| 92 | bounce ( 'No hi consta cap isox amb aquesta adreça' );\r |
| 93 | \r |
| 94 | $dades[ 'isox_' || $args.adr || '_estat' ] = $args.estat;\r |
| 95 | }\r |
| 96 | \r |
| 97 | |
| 98 | if ( $proces == 'nova_delegacio' OR $proces == 'final_delegacio' ) {\r |
| 99 | $_entitat = $__dada( 'entitat_' || $args.ord_entitat );\r |
| 100 | $semiref_delegada = 'entitat_' || $_entitat || '_delegada_';\r |
| 101 | \r |
| 102 | if ( ! $_entitat ) bounce ( 'Entitat inexistent');\r |
| 103 | \r |
| 104 | if ( $_entitat != $adr__ )\r |
| 105 | bounce ( "L'adreça actuant no és la de l'entitat" );\r |
| 106 | \r |
| 107 | $ords = [ "1", "2", "3", "4", "5" ];\r |
| 108 | \r |
| 109 | $ord_delegada_trobada = [];\r |
| 110 | $__troba_delegada = $o => {\r |
| 111 | if (\r |
| 112 | $__dada( $semiref_delegada || $o ) == $args.adr AND\r |
| 113 | ! $ord_delegada_trobada[0]\r |
| 114 | )\r |
| 115 | $ord_delegada_trobada[0] = $o;\r |
| 116 | };\r |
| 117 | \r |
| 118 | $troba_delegada = map( $ords, 5, $__troba_delegada );\r |
| 119 | \r |
| 120 | if ( $proces == 'nova_delegacio' ) {\r |
| 121 | if ( !! $ord_delegada_trobada[0] )\r |
| 122 | bounce ( 'Ja hi consta una delegada amb aquesta adreça' );\r |
| 123 | \r |
| 124 | $lloc_trobat = [];\r |
| 125 | $__troba_lloc_lliure = $o => {\r |
| 126 | if (\r |
| 127 | ! $__dada( $semiref_delegada || $o ) AND\r |
| 128 | ! $lloc_trobat[0]\r |
| 129 | )\r |
| 130 | $dades[ $semiref_delegada || $o ] = $args.adr;\r |
| 131 | $lloc_trobat[0] = true;\r |
| 132 | };\r |
| 133 | \r |
| 134 | $troba_lloc_lliure = map( $ords, 5, $__troba_lloc_lliure );\r |
| 135 | \r |
| 136 | if ( ! $lloc_trobat[0] )\r |
| 137 | bounce( 'Ja hi consten 5 delegacions habilitades' );\r |
| 138 | }\r |
| 139 | \r |
| 140 | if ( $proces == 'final_delegacio' ) {\r |
| 141 | if ( ! $ord_delegada_trobada[0] )\r |
| 142 | bounce ( 'No hi consta cap delegada amb aquesta adreça' );\r |
| 143 | \r |
| 144 | $dades[ $semiref_delegada || $ord_delegada_trobada[0] ] = '';\r |
| 145 | }\r |
| 146 | }\r |
| 147 | \r |
| 148 | $registre = {};\r |
| 149 | $registre.dades = $dades;\r |
| 150 | }", |
| 151 | "messages": [ |
| 152 | { |
| 153 | "app": "data", |
| 154 | "payload": "{ $registre }" |
| 155 | }, |
| 156 | { |
| 157 | "app": "payment", |
| 158 | "payload": { |
| 159 | "asset": "base", |
| 160 | "outputs": [ |
| 161 | { |
| 162 | "address": "{ $args._Registre }", |
| 163 | "amount": "{ $__dada( 'Provisio' ) }" |
| 164 | } |
| 165 | ] |
| 166 | } |
| 167 | }, |
| 168 | { |
| 169 | "app": "state", |
| 170 | "state": "{\r |
| 171 | response[ 'procés' ] = $proces;\r |
| 172 | if ( $proces == 'nou_isox' ) {\r |
| 173 | response[ 'Proposant' ] = $dades_alta[0];\r |
| 174 | if ( !! $_aspirant ) {\r |
| 175 | response[ 'Isox_' || $ord_isox ] = $args.adr;\r |
| 176 | response[ 'Confirmant' ] = $dades_alta[1];\r |
| 177 | response[ 'Estat' ] = 'habilitat';\r |
| 178 | response[ 'Mitjana_baules' ] = $dades_alta[2];\r |
| 179 | }\r |
| 180 | if ( $adr__ != $__dada( 'isox_000' ) )\r |
| 181 | response[ 'Nombre avals de ' || $adr__ ] = ( $nombre_avals + 1 );\r |
| 182 | }\r |
| 183 | \r |
| 184 | if ( $proces == 'nou_estat_isox' )\r |
| 185 | response[ 'Nou estat isox_' || $args.adr ] = $args.estat;\r |
| 186 | \r |
| 187 | if ( $proces == 'nova_delegacio' )\r |
| 188 | response[ 'Nova delegació' ] = \r |
| 189 | 'entitat_' || $adr__ || '_delegada_' || $lloc_trobat[0];\r |
| 190 | \r |
| 191 | if ( $proces == 'final_delegacio' )\r |
| 192 | response[ 'Final delegació' ] =\r |
| 193 | 'entitat_' || $adr__ || '_delegada_' || $ord_delegada_trobada[0];\r |
| 194 | }" |
| 195 | } |
| 196 | ] |
| 197 | } |
| 198 | ] |