# Licensing Default for this repository: **Apache License 2.0**, `Copyright 2026 AERE Network`. See `LICENSE` and `NOTICE`. This repository is the one Aere Network repository that is not MIT, and the reason is not style. It contains code derived from Hyperledger Besu, and Besu is Apache-2.0. A permissive licence on top of Apache-2.0 material is not a free choice: Apache-2.0 section 4 sets conditions on anyone who redistributes, and those conditions are what this page records. Where a file has its own `SPDX-License-Identifier`, **that header governs.** Every source file in this repository carries one, and every one of them says `Apache-2.0`. ## Who wrote what, as measured Read from the copyright line of every file under `precompiles/`. | File | Copyright header | Origin | | --- | --- | --- | | `precompiles/Address.java` | `Copyright contributors to Hyperledger Besu.` | upstream, **modified by Aere Network** | | `precompiles/MainnetPrecompiledContracts.java` | `Copyright contributors to Hyperledger Besu.` | upstream, **modified by Aere Network** | | `precompiles/AereFalconSupport.java` | `Copyright contributors to the AERE Network.` | new, Aere Network | | `precompiles/Falcon512PrecompiledContract.java` | `Copyright contributors to the AERE Network.` | new, Aere Network | | `precompiles/Falcon1024PrecompiledContract.java` | `Copyright contributors to the AERE Network.` | new, Aere Network | | `precompiles/MLDSA44PrecompiledContract.java` | `Copyright contributors to the AERE Network.` | new, Aere Network | | `precompiles/SLHDSA128sPrecompiledContract.java` | `Copyright contributors to the AERE Network.` | new, Aere Network | | `precompiles/SHAKE256PrecompiledContract.java` | `Copyright contributors to the AERE Network.` | new, Aere Network | | `precompiles/MLKEM768PrecompiledContract.java` | `Copyright contributors to the AERE Network.` | new, Aere Network | | `precompiles/HashToPointPrecompiledContract.java` | `Copyright contributors to the AERE Network.` | new, Aere Network | Two upstream files, eight new ones. The diffs under `patches/` apply against upstream Besu commit `d2032017bb3b8cb215a97303980a1e4a643f7180` and touch exactly those same two upstream files. The eight new files are Aere Network's copyright and are still Apache-2.0 rather than MIT. They are written to compile inside a Besu tree and they live in Besu's own package namespace, `org.hyperledger.besu.evm.precompile` and `org.hyperledger.besu.datatypes`. Licensing them to match the tree they are built for is what makes them usable where they are meant to be used. ## How this repository meets Apache-2.0 section 4 | Condition | Where it is met | | --- | --- | | **4(a)** give recipients a copy of the License | `LICENSE`, the full Apache-2.0 text | | **4(b)** modified files carry prominent notices stating you changed them | a `Modifications Copyright 2026 Aere Network` block at the top of `precompiles/Address.java` and `precompiles/MainnetPrecompiledContracts.java`, naming what was changed and against which upstream commit. The same block is inside the diff bodies under `patches/`, so a tree with the patches applied carries it too. The two files are also named in `NOTICE` and in the patch commit messages | | **4(c)** retain all copyright, patent, trademark and attribution notices from the source | `Address.java` and `MainnetPrecompiledContracts.java` keep their upstream `Copyright contributors to Hyperledger Besu.` headers unchanged | | **4(d)** carry a readable copy of the upstream `NOTICE` attributions | `NOTICE`, which reproduces Besu's `NOTICE` in full, including the Tuweni and Apache Software Foundation attributions it in turn carries | ### Where the 4(b) notice lives, and a wrong turn we took first The notice is a `Modifications Copyright` comment block at the top of each of the two modified files, placed below the upstream copyright header and above the `package` declaration. The upstream header itself is untouched, because 4(c) requires that; 4(b) is satisfied by the separate block underneath. This is the shape OpenSearch uses on the Elasticsearch files it inherited, and it is the shape a reader looking at a single copied file will actually see. An earlier version of this page argued that the notice had to live in the patch commit message instead, because putting it in the file would break the claim that `precompiles/` is byte-identical to what the patches install. That argument was wrong, and it was wrong in an avoidable way: it treated the patch as fixed. Put the notice **inside the diff body** and both properties hold at once. The patch installs a file that already carries the notice, and `precompiles/` still matches it byte for byte. There was never a trade to make. The patch commit messages still describe the change, which is useful under `git am`, but nothing now depends on the reader using `git am` rather than `git apply`. ## What is measured here The byte-identity claim used to be recorded on this page as NOT MEASURED. It has now been measured, on 2026-08-02, and the result is in `README.md` under "The patch": the base was confirmed against the `index` pre-image hashes in patch `0001`, both patches applied at exit 0, all ten files that the patches create or modify were compared against `precompiles/`, and the comparison found one real mismatch. `Address.java` and `MainnetPrecompiledContracts.java` after **both** patches are not what this repository ships; this repository ships them at the `0001` state, because `0x0ae6` and `0x0ae7` are testnet-only. That is deliberate, and `README.md` now says so instead of claiming otherwise. Still **NOT MEASURED**: whether the sources in `precompiles/` are the sources that built the binary currently running on the validators. Nothing on this page or in `README.md` asserts a hash for that. ## Aere Network's other repositories The rest of Aere Network's public code is MIT. This repository is Apache-2.0 because of what is in it, not because of a different policy. If you are copying an Aere Network component and want to know which licence applies, read the `LICENSE` file of the repository you are copying from, and the `SPDX-License-Identifier` header of the file you are copying, which wins over both.