# Sources et licence du compilateur Solidity

Le package npm solc 0.8.38 comprend une enveloppe MIT et un compilateur Solidity GPL-3.0-or-later avec bibliothèques tierces. licenses/solidity/COMPILER-LICENSE.txt conserve intégralement la réponse de solc.license(), dont GPLv3 et avis des bibliothèques. Aucun droit de ces composants n'est restreint par la licence MTP ou la politique de marque.

MTP invoque node_modules/solc/solc.js --standard-json --base-path node_modules comme programme séparé. Le compilateur reçoit du JSON standard et renvoie du JSON standard. Il n'est pas modifié. Son code n'est pas importé dans le processus serveur. Les contrats générés portent MIT ; les imports OpenZeppelin gardent MIT.

## Sources fournies directement

licenses/solidity/solidity_0.8.38.tar.gz est l'archive officielle de sources, SHA-256 a96f89d20525724acd9717032a0315466078c0176d5d13016d81f4cc81fd4115, vérifié contre le digest de la release officielle. Elle comprend le code, les dépendances vendues, leurs licences et les scripts de construction. La version du compilateur est 0.8.38+commit.1835d247. Le WASM extrait du package npm et celui du soljson officiel sont identiques : SHA-256 4d8f27f605f0b1af6559812acf2c759f7f47e5a2cedd8d43d68b0e696e8dfa5d.

Les archives dans licenses/solidity/build-sources fournissent aussi Boost 1.83.0, Emscripten 3.1.54 et Z3 z3-4.13.3, versions de la recette officielle. Leurs textes sont conservés dans les sources et toolchain-notices/. build-source-inventory.json indique URLs, tailles, sommes locales et distingue les sommes comparées à une valeur amont de celles calculées localement.

Boost est fractionné en trois fichiers de 48 Mio au maximum afin d'éviter un fichier de plus de 100 Mo dans le dépôt préparé. Pour le reconstituer dans une copie de travail :

```powershell
python licenses/solidity/build-sources/reassemble-boost.py
```

Le script vérifie chaque morceau et la somme de l'ensemble avant écriture ; il refuse d'écraser un fichier différent. Le résultat boost_1_83_0.tar.bz2 doit avoir SHA-256 6478edfe2f3305127cffe8caf73ea0176c53769f4bf1585be237eb30798c3b8e. Les archives .tar.gz et .tar.bz2 sont des sources ordinaires, extractibles avec tar ou un outil compatible. Python n'est pas nécessaire à l'utilisation du Studio.

## Construction amont

Extraire les sources Solidity dans un dossier de travail et suivre leur README et scripts/build_emscripten.sh, avec scripts/docker/ et la recette emscripten publiée dans l'archive. Consulter la recette pour l'emplacement des dépendances : Boost doit être extrait, Z3 construit avec Emscripten, puis les scripts CMake du projet produisent soljson. Les sources Emscripten sont fournies ; son SDK et les outils de construction généraux peuvent être nécessaires sur un poste de développement. La recette référence l'image ghcr.io/argotorg/solidity-buildpack-deps par digest f9ae0968000ca367ad2c3743a1e6b72c9f3bf32ad42960dab4ee1686d67dc259. Aucun conteneur ou service n'a été exécuté pendant cette mission.

Il s'agit d'une livraison des sources officielles et de leur recette, pas d'une preuve de compilation locale reproductible bit à bit. Aucun changement local du compilateur n'est à appliquer. Le wrapper npm et ses sources sont présents dans le portable et récupérables avec le lockfile du dépôt source. Les fichiers sources fournis restent redistribuables et modifiables selon leurs licences respectives ; aucune publication externe n'est nécessaire pour accéder à cette copie.

Référence : [release Solidity 0.8.38](https://github.com/argotorg/solidity/releases/tag/v0.8.38).
