.fw files.wiki
SOL

Archivos SOL

Archivo de código fuente de Solidity

.SOL se usa sobre todo como código fuente de contratos inteligentes de Solidity; también se usa para objetos compartidos de Flash, salidas de solucionadores y archivos heredados de juegos/audio.

Solidity source code

Más común
Desarrollador
Ethereum Foundation / proyecto Solidity
Categoría
Código fuente
Tipo MIME
text/x-solidity
Formato
Texto
Primera versión
2014
Última versión
0.8.x
Estándar abierto
No

Adobe Flash Local Shared Object

Desarrollador
Macromedia; Adobe
Tipo MIME
application/octet-stream
Formato
Binario
Bytes mágicos
54 43 53 4F @ desplazamiento 6
Primera versión
2002
Última versión
Flash Player 32 / AMF0-AMF3
Estándar abierto
No

IBM ILOG CPLEX XML solution file

Desarrollador
IBM
Tipo MIME
application/xml
Formato
Texto
Primera versión
2003
Última versión
CPLEX 22.1.x
Estándar abierto
No

Mathematical-programming text solution file

Desarrollador
Gurobi Optimization; SCIP; COIN-OR y otros proyectos de solucionadores
Tipo MIME
text/plain
Formato
Texto
Primera versión
2008
Última versión
Tool-dependent
Estándar abierto
No

Sierra On-Line SOL audio file

Desarrollador
Sierra On-Line
Tipo MIME
audio/x-sierra-sol
Formato
Binario
Bytes mágicos
53 4F 4C
Primera versión
1993
Última versión
SCI32-era games
Estándar abierto
No

Classic Microsoft Solitaire saved game

Desarrollador
Microsoft
Tipo MIME
application/octet-stream
Formato
Binario
Primera versión
1990
Última versión
Windows XP/Windows 7 classic Solitaire
Estándar abierto
No

Abrir un archivo .SOL en línea

Leyendo el archivo…

¿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. 1 Ve a la carpeta donde está tu archivo en Explorador de archivos. Normalmente, los archivos descargados terminan en Descargas.
  2. 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. 3 Haz clic derecho en tu archivo .SOL -> selecciona Abrir con -> Elegir otra aplicación.
  4. 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

Abrir un archivo .SOL en macOS

  1. 1 En la app Finder, localiza tu archivo .SOL.
  2. 2 Solo haz doble clic en tu archivo .SOL para abrir automáticamente el programa asociado con él.
  3. 3 ¿Necesitas otra app en tu Mac? Haz Control-clic en el archivo (o clic derecho con el mouse). En el menú emergente, selecciona Abrir con -> Visual Studio Code.
  4. 4 Si no aparece en la lista, elige Otra… y busca la aplicación manualmente.

¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.

Programas para macOS

Abrir un archivo .SOL en Linux

  1. 1 Abre tu gestor de archivos. Según el escritorio, puede llamarse Archivos (GNOME), Dolphin (KDE Plasma), Nemo (Cinnamon) o Thunar (Xfce).
  2. 2 Haz doble clic en el archivo.
  3. 3 O elige otro programa haciendo clic derecho en el archivo -> Abrir con -> Visual Studio Code.
  4. 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

Abrir un archivo .SOL en Android

  1. 1 Abre Archivos u otra app de gestión de archivos.
  2. 2 En Descargas, busca el archivo .SOL y ábrelo tocándolo.
  3. 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. 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

Abrir un archivo .SOL en iPhone / iPad

  1. 1 Usa la app Archivos y ve a En mi iPhone, iCloud Drive o Descargas.
  2. 2 Toca el archivo .SOL que quieras abrir.
  3. 3 Si el archivo puede abrirse con una app integrada de iOS (formato compatible), se abrirá automáticamente.
  4. 4 Mantén pulsado el archivo para abrir el menú contextual -> elige Compartir -> selecciona una aplicación adecuada en la lista de apps.
  5. 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

Abrir un archivo .SOL en línea

  1. 1 Ve al visor en línea en la parte superior de esta página.
  2. 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

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 aHerramientaComando / 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.

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.

Comentarios (0)

Respondiendo a

Aún no hay comentarios. Sé el primero en compartir tu experiencia con este tipo de archivo.