¿Qué es un archivo .SOL?
Un archivo .SOL podría referirse a varios formatos distintos; debería identificarse mediante pistas de contexto como el nombre/ruta del directorio, los bytes de cabecera, la legibilidad del contenido, etc. La interpretación más extendida a día de hoy es la de código fuente del lenguaje Solidity, creado por Ethereum Foundation y los desarrolladores del lenguaje Solidity para contratos inteligentes compatibles con la blockchain de Ethereum. En ese caso, incluirá elementos de código fuente como contracts, imports, libraries, interfaces, declaraciones pragma y eventos, y estos archivos de texto pueden encontrarse en proyectos de blockchain que utilizan Hardhat, Foundry, Remix u otros frameworks y entornos de desarrollo como Truffle y Git.
La otra aplicación ampliamente usada en el pasado para la extensión .SOL eran los local shared objects, también llamados Flash cookies, usados por Macromedia y, después, Adobe para almacenar datos de Flash Player por sitio web, incluidas preferencias y progreso de juego. Estos archivos binarios podían ubicarse dentro de directorios específicos del perfil de determinados reproductores de Flash.
Hay otro campo de uso en el que se aplica la extensión .sol: la optimización. En concreto, el software de IBM ILOG (CPLEX) usa un dialecto de solución XML, y Gurobi, SCIP o CBC crean sus archivos de salida en formato de texto con valores de variables derivados de la optimización de un modelo matemático.
Y para juegos antiguos o sistemas Windows tenemos los siguientes significados de la extensión: se encontraron datos binarios asociados con audio en algunos juegos publicados por Sierra On-Line y que contienen los mencionados archivos .sol, los cuales son independientes de las extensiones de Solidity o Flash. Por ejemplo, archivos de sonido de Sierra usados en la era SCI. El otro formato .sol podría aplicarse a estados de partida guardados para la versión clásica de Solitaire hecha por Microsoft para una versión anterior de este sistema operativo.
Es posible un método de comprobación eficiente: el código Solidity probablemente empezará con declaraciones pragmata/contract, etc., mientras que el archivo .SOL de Flash normalmente debería mostrar la cabecera TCSO alrededor de la posición 6. Archivo de audio de Sierra - con la cadena SOL al principio.
Cómo abrir un archivo .SOL
Abrir un archivo .SOL en Windows
- 1 Ve a la carpeta donde está tu archivo en Explorador de archivos. Normalmente, los archivos descargados terminan en Descargas.
- 2 Haz doble clic en tu archivo .SOL si tienes una aplicación para archivos .sol en tu equipo. Si no se abre, pasa al paso tres.
- 3 Haz clic derecho en tu archivo .SOL -> selecciona .
- 4 Elige Visual Studio Code en la lista (Windows 11: elige Siempre). En Windows 10 -> marca "Usar siempre esta aplicación para abrir archivos .sol" y haz clic en Aceptar.
¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.
Programas para Windows
- Visual Studio Code gratis
- IntelliJ IDEA freemium
- JPEXS Free Flash Decompiler código abierto
- Audacity código abierto
- VLC media player código abierto
- IBM ILOG CPLEX Optimization Studio de pago
- Gurobi Optimizer de pago
- SCIP Optimization Suite código abierto
Abrir un archivo .SOL en macOS
- 1 En la app Finder, localiza tu archivo .SOL.
- 2 Solo haz doble clic en tu archivo .SOL para abrir automáticamente el programa asociado con él.
- 3 ¿Necesitas otra app en tu Mac? Haz Control-clic en el archivo (o clic derecho con el mouse). En el menú emergente, selecciona .
- 4 Si no aparece en la lista, elige y busca la aplicación manualmente.
¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.
Programas para macOS
- Visual Studio Code gratis
- IntelliJ IDEA freemium
- JPEXS Free Flash Decompiler código abierto
- Audacity código abierto
- VLC media player código abierto
- IBM ILOG CPLEX Optimization Studio de pago
- Gurobi Optimizer de pago
- SCIP Optimization Suite código abierto
Abrir un archivo .SOL en Linux
- 1 Abre tu gestor de archivos. Según el escritorio, puede llamarse Archivos (GNOME), Dolphin (KDE Plasma), Nemo (Cinnamon) o Thunar (Xfce).
- 2 Haz doble clic en el archivo.
- 3 O elige otro programa haciendo clic derecho en el archivo -> .
- 4 Instala Visual Studio Code (si no está instalado en tu equipo) desde el centro de software, el repositorio o Flathub.
¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.
Programas para Linux
- Visual Studio Code gratis
- IntelliJ IDEA freemium
- JPEXS Free Flash Decompiler código abierto
- Audacity código abierto
- VLC media player código abierto
- IBM ILOG CPLEX Optimization Studio de pago
- Gurobi Optimizer de pago
- SCIP Optimization Suite código abierto
Abrir un archivo .SOL en Android
- 1 Abre Archivos u otra app de gestión de archivos.
- 2 En Descargas, busca el archivo .SOL y ábrelo tocándolo.
- 3 Se mostrará una lista de apps capaces de abrir el archivo. Toca una aplicación adecuada y pulsa Siempre para asociar de forma permanente este tipo de archivo con esta app.
- 4 ¿No hay ninguna app capaz de abrir este archivo? Descarga una aplicación adecuada desde Google Play Store.
¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.
Programas para Android
- VLC media player código abierto
Abrir un archivo .SOL en iPhone / iPad
- 1 Usa la app Archivos y ve a En mi iPhone, iCloud Drive o Descargas.
- 2 Toca el archivo .SOL que quieras abrir.
- 3 Si el archivo puede abrirse con una app integrada de iOS (formato compatible), se abrirá automáticamente.
- 4 Mantén pulsado el archivo para abrir el menú contextual -> elige -> selecciona una aplicación adecuada en la lista de apps.
- 5 Si no aparece esa opción, primero descarga la app desde el App Store y luego toca el documento otra vez.
¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.
Programas para iPhone / iPad
- VLC media player código abierto
Abrir un archivo .SOL en línea
- 1 Ve al visor en línea en la parte superior de esta página.
- 2 Arrastra el archivo hasta allí o selecciónalo, y su contenido aparecerá en la pestaña de tu navegador. El archivo no se sube.
¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.
Programas para En línea
- Remix IDE código abierto
- Visual Studio Code gratis
Más detalles sobre cómo abrir archivos .SOL
Abre un archivo .sol en plataformas Windows, macOS y Linux usando cualquiera de varios programas de software, por ejemplo: Visual Studio Code; IntelliJ IDEA; o cualquier editor de texto plano, es decir, Notepad, TextEdit en modo de texto plano; Vim o Kate. Visual Studio Code e IntelliJ IDEA serían opciones perfectas para trabajar en un proyecto; solc, Hardhat y Foundry normalmente se seleccionarían si se necesitan errores del compilador, ABI, bytecode, pruebas o resolución de imports. Visual Studio Code, Remix, solc, Hardhat y Foundry son gratuitos; IntelliJ IDEA ofrece su versión gratuita (llamada community), además de otras ediciones de pago.
En tu navegador web, Remix IDE sería la forma más sencilla de trabajar con un archivo solidity (.sol); porque ayuda a ver, editar, compilar e implementar contratos sin necesidad de Node.js, solc, Hardhat o Foundry.
En un dispositivo móvil; los archivos solidity (.sol) se pueden ver en un editor de código móvil. También se pueden ver alternativamente con un remix basado en navegador; sin embargo, una cadena de compilación local completa de Solidity sería incómoda en comparación con una terminal de escritorio o un cloud IDE.
Abrir un archivo .sol de objeto local compartido de Flash es bastante fácil usando las herramientas SOL de JPEXS Free Flash Decompiler o un analizador AMF. No se abrirá en un navegador contemporáneo, ya que Flash Player está descontinuado; normalmente el archivo incluiría el marcador “TCSO” para el formato binario de Flash en el desplazamiento de bytes 6.
Un archivo de solución XML de CPLEX se puede abrir con CPLEX Optimization Studio; cualquier editor de texto/XML; o scripts con analizadores XML. Mientras que para Gurobi y SCIP/COIN-OR CBC, las soluciones también se pueden abrir con las herramientas y el editor del solver correspondiente.
El formato de archivo SOL para Sierra On-Line debe trabajarse con FFmpeg o software basado en FFmpeg.
Para determinar un archivo de audio Sierra (.sol) que no funciona bien en VLC o en cualquier otro reproductor multimedia, convierte el archivo .sol a WAV con FFmpeg para demostrar que en efecto es de Sierra. Y luego intentarías abrir el archivo con el programa de archivo correspondiente.
Detalles técnicos
Los archivos fuente que contienen contratos Solidity se codifican en formato Unicode UTF-8 o en formato ASCII; no se requiere una marca de orden de bytes. Un archivo Solidity consta de las pragmas de Solidity, las declaraciones import, las definiciones de contrato, las funciones del contrato, cualquier modificador personalizado usado, cualquier evento personalizado, errores personalizados, bloques de struct/enumeración/ensamblado en línea. Los archivos Solidity no tienen ningún encabezado mágico; las versiones del compilador normalmente pueden restringirse mediante pragmas de origen del archivo, por ejemplo, pragma solidity ^0.8.20. Las rutas de importación dependen del remapeo del proyecto, la estructura de empaquetado de npm, los includes y el directorio raíz de las herramientas de compilación donde se resuelven los archivos. El tipo MIME apropiado para denotar Solidity source es text/x-solidity, aunque muchos servidores web lo resuelven como text/plain o application/octet-stream.
Flash Local Shared Objects son archivos binarios basados en el conjunto de valores de tipos AMF, pero no en ningún código fuente. Una estructura común del FLASH SOL tendría el identificador ASCII TCSO, los bytes hex 54 43 53 4F en el offset 6, tras lo cual se colocan representaciones serializadas de objetos de actionscript compuestas por cadenas, valores numéricos, valores de fecha, objetos tipados, etc. Los objetos FLASH SO emplearían serialización AMF0 o AMF3; este formato no es un archivo ZIP, no usa compresión como entidad de archivo en general y no está asociado a ningún tipo MIME registrado; application/octet-stream es la etiqueta segura habitual.
Los archivos con extensión sol de CPLEX contienen documentos XML y contienen metadatos relacionados con soluciones, como valores de la función objetivo, valores de variables y, a veces, valores de restricciones / slacks. Dado que los detalles de formato, orden de atributos y estructura del documento cambian según las versiones concretas de CPLEX, se supone que estos archivos se analizan como XML puro. La estructura textual similar, pero usando un dialecto de formato diferente, también se implementa para los archivos sol del solver Gurobi, del solver SCIP o de otros solvers; también se podría mencionar entre los dialectos similares el formato de archivo SOL del solver CBC.
El formato Sol, creado por Sierra On-Line, describe la estructura binaria de los archivos de audio del juego que contienen una firma ASCII SOL, los bytes hex 53 4F 4C en el offset 0. El encabezado contiene los valores de frecuencia de muestreo, los valores de flags, el número de valores de muestra, la variante PCM o de compresión y, posiblemente, algunos otros; FFmpeg tiene decodificadores para tratar con archivos sol. Estos formatos pueden contener archivos de tamaño muy pequeño para source y solver output, o bastante grandes en el caso de audio o de contenido FLASH sol extenso; los errores de codificación podrían ocurrir sobre todo con formatos basados en texto.
Cómo convertir archivos .SOL
Solidity requiere conversión mediante compilación en lugar de una exportación de sus archivos a tipos de documento. ABI JSON para el código de la aplicación; bytecode para la implementación en un EVM desplegable como BIN; metadata JSON, AST JSON y source maps son artefactos típicos después de este paso de compilación. Las herramientas del compilador ofrecen opciones directas para obtener la información necesaria: solc --abi MyContract.sol -o build para el ABI JSON; solc --bin MyContract.sol -o build para el bytecode y solc --combined-json abi,bin,metadata,srcmap MyContract.sol > combined.json para todo lo anterior en un solo archivo de salida. Los proyectos que usan Hardhat y Foundry incluyen solc en la canalización de compilación; por lo tanto, tienen la oportunidad de implementar pruebas y gestionar dependencias y directorios de artefactos.
Hay un precio por todo esto. La salida compilada no conserva comentarios ni diseño. El ABI no incluirá cuerpos de funciones ni lógica interna/privada porque describe solo la parte externa del contrato.
La exportación manual es la solución aquí; Flash Local Shared Objects podrían exportarse como archivos similares en JSON con valores AMF como fechas, referencias a objetos, objetos ActionScript tipados, arrays tipados. Sin embargo, los archivos de audio Sierra SOL deberían convertirse correctamente de FFmpeg a Ogg Vorbis, WAV o formato raw. Por desgracia, algunos puntos de bucle para el audio del juego pueden perderse aquí. Existen scripts para convertir las restricciones y variables en CPLEX SOL XML a CSV, JSON. Gurobi, SCIP y CBC text .sol son legibles como archivos de texto, pero se debe usar la API del solver para trabajar con ello correctamente allí.
| Convertir a | Herramienta | Comando / nota |
|---|---|---|
| ABI JSON | Solidity Compiler | solc --abi MyContract.sol -o build Produce JSON ABI de contratos de Ethereum; los comentarios, el formato y los detalles de implementación que no forman parte del ABI no se representan en la salida. |
| EVM bytecode BIN | Solidity Compiler | solc --bin MyContract.sol -o build Compila código fuente de Solidity a bytecode EVM desplegable; la estructura del código fuente y los comentarios se pierden. |
| Combined compiler JSON | Solidity Compiler | solc --combined-json abi,bin,metadata,srcmap MyContract.sol > combined.json Conveniente para sistemas de compilación que necesitan ABI, bytecode, metadatos y mapas de origen en un solo documento JSON. |
| WAV audio | FFmpeg | ffmpeg -i input.sol output.wav Solo para audio Sierra SOL; convierte el audio de juego decodificado a PCM WAV sin comprimir. |
| FLAC audio | FFmpeg | ffmpeg -i input.sol output.flac Solo para audio Sierra SOL; crea un archivo de audio comprimido sin pérdidas, no un objeto compartido de Flash ni un archivo Solidity. |
| Text/CSV report | Gurobi Optimizer | gurobi_cl ResultFile=solution.sol model.mps Los archivos .sol de solucionadores normalmente se generan a partir de un modelo de optimización; conviértelos a CSV analizando líneas de variable/valor o exportando desde las API del solucionador. |
| Edited Flash data / XML-like inspection | JPEXS Free Flash Decompiler | Para Local Shared Objects de Flash; JPEXS puede inspeccionar y editar valores AMF, pero no existe un formato universal de intercambio sin pérdidas para todos los tipos de datos SOL. |
Problemas comunes y soluciones
ParserError es un error que indica que la versión especificada en un archivo fuente de Solidity no coincide con la actual. Por ejemplo, pragma solidity ^0.8.20; requiere un compilador 0.8.20 o más reciente de la serie 0.8.x, pero el solc instalado es una versión anterior, como 0.8.19. Para solucionar la situación, tienes que actualizar el compilador requerido mediante Hardhat, Foundry, el selector de compilador de Remix o solc-select.
"Source not found," así como, "Import callback not supported," significa que solc no puede resolver una ruta de importación, como @openzeppelin/contracts/token/ERC20/ERC20.sol. Para resolverlo, tienes que actualizar la estructura de tu proyecto o instalar paquetes NPM adicionales, así como definir las raíces del proyecto en Hardhat o añadir remapping en Foundry o proporcionar rutas adicionales en solc.
Binary Flash Local Shared Object abierto en Notepad, TextEdit o VS Code muestra solo secuencias aleatorias de bytes. Además, hay ciertos marcadores específicos en los archivos en el desplazamiento 6, en nuestro caso el marcador ASCII TCSO. Los datos no están relacionados ni con el lenguaje Solidity ni con el código fuente, sino que representan el formato AMF0 o AMF3; tienes que decodificarlos usando software especial como, por ejemplo, JPEXS Free Flash Decompiler.
Hay varias situaciones en las que desaparece el archivo flash .sol: en primer lugar, las operaciones de limpieza del navegador; en segundo lugar, la migración después de que Flash Player alcanzó EOL; y en tercer lugar, el uso de varias herramientas para eliminar estos archivos Local Shared Object de la carpeta de perfil del equipo Windows, Mac OS o Linux.
Errores de Solver como unknown variable, infeasible solution o "Cannot read solution file" suelen significar que este archivo .sol concreto ha sido creado por otra versión del modelo o por otro nombre de variables, así como por otro dialecto de algún Solver. La mayoría de los problemas al analizar XML en archivos .sol del Solver IBM CPLEX están relacionados con truncamientos de descargas o con la edición manual de archivos de solución, o con desajustes en los conjuntos de caracteres.
Cuando FFmpeg falla con archivos .sol de audio de juegos de Sierra On-Line, normalmente es porque estos archivos no son audio clásico de Sierra, sino otro tipo de archivos (.sol format), o porque el archivo es un archivo de juego SCI parcialmente corrupto o no compatible con la versión de FFmpeg utilizada.
Los guardados de Microsoft Windows Solitaire (archivos .sol) dependen de la versión: en Microsoft Solitaire Collection no podrás usar esos .sol creados antes.
Consideraciones de seguridad
Los archivos Solidity .sol son archivos de texto plano que no pueden ejecutarse ni siquiera cuando se cargan en cualquier IDE como Visual Studio Code, Remix o cualquier otra plataforma de edición de texto. Existe la posibilidad de que haya problemas al compilar, probar, implementar o ejecutar a través de proyectos solc, Hardhat y/o Foundry. Antes de construir un repositorio desconocido, busca remappings, imports, npm, forge scripts, hardhat.config y deployment keys.
Los archivos Flash .sol pueden almacenar identificadores, detalles de progreso, valores medidos, números de cuenta o datos de preferencias como información personal. Los exploits no son raros en reproductores Flash heredados o SWF. No cargues los archivos SWF solo para comprobar el contenido de un archivo .sol; usa otras herramientas o software de análisis para abrirlos.
Los archivos solver .sol pueden contener nombres de variables, funciones objetivo, capacidades y/o costos, la estructura de un modelo, decisiones comerciales tomadas por la organización; en general, cualquier información que sea confidencial. Al abrir y analizar CPLEX XML .sol, desactiva las entidades XML externas. El sonido SOL de Sierra Sound Format (.SOL) es pasivo, así que no hay ningún riesgo en usar versiones actualizadas de FFmpeg.
Historia y versiones
Solidity surgió en el año 2014 gracias al esfuerzo de Gavin Wood y evolucionó como parte del proyecto Ethereum, convirtiéndose en un lenguaje de programación de alto nivel líder para contratos inteligentes después del lanzamiento de la red Ethereum en 2015. No se ajusta a un estándar formal como ISO o ECMA, y el formato de código fuente .sol sigue la línea del compilador de Solidity en lugar de cualquier definición estándar. Aunque Solidity es de código abierto, en realidad su especificación consta de tres elementos: el propio compilador, la documentación y las herramientas. Cada serie desde 0.4.x hasta 0.8.x tuvo nuevas semánticas incompatibles, y Solidity 0.8.0 hizo obligatorias las comprobaciones de desbordamiento.
En otros casos de uso, el formato .sol surgió de manera diferente. La extensión solía ser una de las introducidas por Macromedia Flash Local Shared Objects y apareció junto con la sexta versión de su famoso producto Flash Player (2002), que más tarde pasó a pertenecer a Adobe Systems, que compró Macromedia en 2005. El soporte de Flash Player terminó suspendiéndose a partir del 31 de diciembre de 2020, lo que significa que casi todos los archivos sol hoy en día no podrían encontrarse fuera de los perfiles antiguos, los disquetes obsoletos y las copias de seguridad. Los solucionadores de optimización CPLEX, Gurobi, SCIP y CBC empezaron a usar su extensión natural .sol en archivos de solución, pero sin compartir un formato único entre solucionadores.
Formatos relacionados
Los sources de Solidity (.sol) compiten con los archivos fuente de Vyper (.vy) en el ámbito de los smart contracts de Ethereum. Sin embargo, Solidity 0.8.x tiene la ventaja en cuanto a la disponibilidad de herramientas para compilación, editor, auditorías y frameworks de desarrollo, mientras que Vyper usa un lenguaje más restringido, más parecido a Python, pensado para simplificar la sintaxis. Los productos de compilación de Ethereum suelen estar en formato JSON (.json) y contienen ABI, el bytecode ejecutable, así como metadatos. Estos son resultados del compilador generados a partir de sources .sol y no son sustitutos del source.
Flash Local Shared Object (.sol) es similar a las cookies del navegador web, al almacenamiento local de HTML5 y a las bases de datos, pero es específico solo de Flash. Las computadoras más antiguas los colocaban fuera de los límites normales de gestión de cookies del navegador web. Los ejecutables de las películas de Flash están en .swf, mientras que los archivos .sol contienen datos AMF persistentes a los que acceden las películas SWF.
.lp, .mps, .sav, .rew son formatos usados en muchas optimizaciones matemáticas, mientras que .sol contiene información de la salida del solver; existen archivos .mst que contienen los MIP starts y archivos .bas que guardan información de la base simplex para warm start-ups, pero no son archivos de solución en el software Gurobi. .wav, .voc, .aud y .ogg son otros tipos de archivos de audio de juegos, mientras que .sol guarda el audio original usado en video games. Del mismo modo, los formatos de archivo .sgm, .dat o .sav de estilo solitaire son todos binarios y específicos de la aplicación.
Aún no hay comentarios. Sé el primero en compartir tu experiencia con este tipo de archivo.