Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds Snowbridge to Rococo runtime #2522

Merged
merged 152 commits into from
Dec 21, 2023
Merged
Show file tree
Hide file tree
Changes from 147 commits
Commits
Show all changes
152 commits
Select commit Hold shift + click to select a range
5d52794
wip
alistair-singh Nov 28, 2023
7522d24
remove wococo
alistair-singh Nov 28, 2023
6420517
remove more wococo
alistair-singh Nov 28, 2023
2b534e2
more wococo removal
alistair-singh Nov 28, 2023
c10b7a3
remove more wococo
alistair-singh Nov 28, 2023
0a1b2a3
unrelated changes
alistair-singh Nov 28, 2023
048006f
remove uneeded files
alistair-singh Nov 28, 2023
2e32cc0
fmt
alistair-singh Nov 28, 2023
b51b4b1
remove kusama and polkadot changes
alistair-singh Nov 28, 2023
d2e8a3f
update cargo.lock
alistair-singh Nov 28, 2023
0a842f9
Merge to upstream updates (#57)
claravanstaden Dec 4, 2023
e425895
fix fee amount
Dec 5, 2023
dc5e335
Clara/eth private network 5 (#59)
claravanstaden Dec 5, 2023
07f2c02
Merge branch 'master' into merge-to-upstream
Dec 6, 2023
d554fd7
Merge branch 'master' into merge-to-upstream
Dec 6, 2023
ee67bbe
merge damage
Dec 6, 2023
7519dea
Merge branch 'master' into merge-to-upstream
Dec 7, 2023
a7472bb
fix missing comma
Dec 7, 2023
b5f0d6f
temp fix
Dec 7, 2023
d922bbb
fix dependencies
Dec 7, 2023
47f4d5c
fix toml files
Dec 7, 2023
493e5a3
update lock file
Dec 7, 2023
b687559
fix import
Dec 7, 2023
39c5f80
Merge branch 'master' into merge-to-upstream
Dec 8, 2023
4ce25a0
fix toml format
Dec 8, 2023
c51cbb4
fix rust feature propagation
Dec 8, 2023
44a9c22
zepter fix
Dec 8, 2023
aa16cdd
format config files
Dec 8, 2023
41d7af3
Merge commit 'bc30f25b80c0f9b57e323b552489d7a6f5b0d864' as 'bridges/s…
Dec 8, 2023
bc30f25
Squashed 'bridges/snowbridge/' content from commit c1937d29867
Dec 8, 2023
0a3a3f3
remove unnecessary files
Dec 8, 2023
65ebda0
updates dependencies
Dec 8, 2023
9af3609
Merge branch 'master' into merge-to-upstream
Dec 8, 2023
ae00155
update lock file
Dec 8, 2023
3f58125
fmt
Dec 8, 2023
f3ffb06
fix imports
Dec 8, 2023
8ce8946
fmt
Dec 8, 2023
12d6cfa
fix benchmarks
Dec 9, 2023
7f288b6
clippy
Dec 9, 2023
fed8529
remove unnecessary files
Dec 9, 2023
94ef7c5
escape hasher
Dec 11, 2023
cc69e9a
Merge branch 'master' into merge-to-upstream
claravanstaden Dec 11, 2023
940a80b
docs, try-runtime, fmt
Dec 11, 2023
d95ccef
Merge remote-tracking branch 'origin/merge-to-upstream' into merge-to…
Dec 11, 2023
8b32226
Merge branch 'master' into merge-to-upstream
claravanstaden Dec 11, 2023
f568995
cleanup import
Dec 11, 2023
f28f92f
Merge remote-tracking branch 'origin/merge-to-upstream' into merge-to…
Dec 11, 2023
d26edef
remove cargo toml in snowbridge
Dec 11, 2023
fe2ca0f
remove cargo toml in snowbridge
Dec 11, 2023
5fd0fce
Merge branch 'master' into merge-to-upstream
Dec 11, 2023
e1e61c5
update lock file
Dec 11, 2023
a41c382
fix benchmark error
Dec 12, 2023
baab48f
Merge branch 'master' into merge-to-upstream
claravanstaden Dec 12, 2023
5f03570
Merge branch 'master' into merge-to-upstream
claravanstaden Dec 12, 2023
215961c
fix penpal test
alistair-singh Dec 12, 2023
1fefe88
Merge branch 'master' into merge-to-upstream
claravanstaden Dec 12, 2023
e3da458
Fix benchmark (#63)
claravanstaden Dec 13, 2023
ad86399
Set beacon mainnet spec as default (#61)
claravanstaden Dec 13, 2023
13cb7b9
fix benchmarks
Dec 13, 2023
7d3d9ae
Merge branch 'master' into merge-to-upstream
Dec 13, 2023
9d56662
Merge branch 'master' into merge-to-upstream
claravanstaden Dec 13, 2023
83ca331
adds new DestinationVersion type
Dec 13, 2023
796e9fb
Merge remote-tracking branch 'origin/merge-to-upstream' into merge-to…
Dec 13, 2023
141c227
update benchmarks impls for ToEthereumXcmRouterInstance
Dec 13, 2023
861151a
fix compiler error
Dec 13, 2023
af50d64
removes force benchmark version
Dec 13, 2023
7e4fe1b
benchmark error
Dec 13, 2023
263bec9
fix ethereum benchmark router
Dec 13, 2023
2294a57
fund sovereign account
Dec 13, 2023
75e098a
Merge branch 'master' into merge-to-upstream
Dec 14, 2023
5e05b23
update lock file
Dec 14, 2023
f94daf4
clippy and fmt
Dec 14, 2023
2584d72
remove unused variable
Dec 14, 2023
9d4b726
one more
Dec 14, 2023
3e58d8d
increase funds to sovereign account
Dec 14, 2023
ec82729
try a larger number
Dec 14, 2023
23c2dd4
fixed
Dec 14, 2023
23fe776
Merge branch 'master' into merge-to-upstream
Dec 14, 2023
f5821b6
update lock file
Dec 14, 2023
7bab012
fix comment
Dec 14, 2023
2b0768a
Fix reserve_transfer_token (#64)
yrong Dec 15, 2023
435904f
Merge branch 'master' into merge-to-upstream
Dec 15, 2023
1685dbf
merge
Dec 15, 2023
96ef48b
Merge remote-tracking branch 'origin/merge-to-upstream' into merge-to…
Dec 15, 2023
e674056
Merge branch 'master' into merge-to-upstream
Dec 15, 2023
e856b06
adds subtree script
Dec 15, 2023
064b7e3
updates script
Dec 15, 2023
afc9f05
adds recursively delete folder
Dec 15, 2023
97280b3
use other rm method
Dec 15, 2023
d92777f
updates script
Dec 15, 2023
0ed0c81
Squashed 'bridges/snowbridge/' changes from c1937d2986..63906dd6bc
Dec 15, 2023
3f58414
merge from snowbridge
Dec 15, 2023
1cd8dec
adds PR Doc
Dec 15, 2023
0370c6b
Rust fmt and add licenses (#67)
claravanstaden Dec 16, 2023
d1414fe
Squashed 'bridges/snowbridge/' changes from 63906dd6bc..ffe241f357
Dec 16, 2023
04649b8
updates from upstream
Dec 16, 2023
db09900
Merge commit 'b4c9ebbf976b5f694249ab034dc4a5d042167cf1' into merge-to…
Dec 16, 2023
b4c9ebb
Squashed 'bridges/snowbridge/' changes from ffe241f357..6f9cfdd979
Dec 16, 2023
17a2377
Merge branch 'master' into merge-to-upstream
claravanstaden Dec 16, 2023
4efe3d2
downgrade parity scale codec
Dec 18, 2023
0198f72
Merge remote-tracking branch 'origin/merge-to-upstream' into merge-to…
Dec 18, 2023
ac64db1
Add CustomDigestItem type for application-level digest items
vgeddes Dec 14, 2023
d4e8df2
Encode DigestItem with the prefix
yrong Dec 15, 2023
312457c
Squashed 'bridges/snowbridge/' changes from 6f9cfdd9796..afc668ef634
Dec 18, 2023
bf228ce
update subtree
Dec 18, 2023
15067f6
set up migration
alistair-singh Dec 15, 2023
ce918aa
migration and weights
alistair-singh Dec 17, 2023
3863454
Improve with LengthToFee
yrong Dec 17, 2023
00a003c
Rename to MaxMessageSize
yrong Dec 18, 2023
ab5f0f6
revert weights
alistair-singh Dec 18, 2023
ee4b7fb
Squashed 'bridges/snowbridge/' changes from afc668ef634..0becdae2b8d
Dec 19, 2023
7705c9e
update subtree
Dec 19, 2023
5ae7618
fix clippy
Dec 19, 2023
552bff8
Various PR comments and CI fixes (#76)
claravanstaden Dec 19, 2023
1510236
Squashed 'bridges/snowbridge/' changes from 0becdae2b8d..e5ac19e70b5
Dec 19, 2023
1bd4282
update subtree
Dec 19, 2023
4bf57cd
add gateway to storage
alistair-singh Dec 14, 2023
10adf0e
fix benchmarks
alistair-singh Dec 14, 2023
f07041c
initial
alistair-singh Dec 16, 2023
c637be7
rename storage key
alistair-singh Dec 16, 2023
a76eb37
rename const
alistair-singh Dec 16, 2023
50e6804
update runtime config
vgeddes Dec 18, 2023
d579f21
rename field
vgeddes Dec 18, 2023
ae6ea73
fix emulated tests
alistair-singh Dec 18, 2023
e674265
remove explicit snowbridge teleport
alistair-singh Dec 19, 2023
e14962a
Use SovereignPaidRemoteExporter directly
yrong Dec 17, 2023
53c3d78
check sender's balance for reserve_transfer
yrong Dec 18, 2023
b7cc474
taplo (#78)
claravanstaden Dec 19, 2023
678249e
Squashed 'bridges/snowbridge/' changes from e5ac19e70b5..f64072e98c1
Dec 19, 2023
9bd622e
update subtree
Dec 19, 2023
4f6f75a
Fix missing import and failing test (#79)
claravanstaden Dec 19, 2023
d966d46
clippy
Dec 19, 2023
6125cb5
Runtime config cleanup (#72)
claravanstaden Dec 20, 2023
df436d0
Squashed 'bridges/snowbridge/' changes from f64072e98c1..a13e2a103ac
Dec 20, 2023
b49e11a
update subtree
Dec 20, 2023
ad57843
Use FromNetwork (#80)
alistair-singh Dec 20, 2023
70ec574
Misc documentation and comment updates (#81)
alistair-singh Dec 20, 2023
0687e9e
Squashed 'bridges/snowbridge/' changes from a13e2a103ac..a1e59a6edd5
Dec 20, 2023
bac0c6f
update subtree
Dec 20, 2023
30220f9
CustomDigestItem index (#84)
yrong Dec 21, 2023
8a6e702
Emulated tests PR feedback (#83)
alistair-singh Dec 21, 2023
ac09be0
Squashed 'bridges/snowbridge/' changes from a1e59a6edd5..0627a68e4e9
Dec 21, 2023
7535c5b
update subtree
Dec 21, 2023
449af90
Merge branch 'master' into merge-to-upstream
Dec 21, 2023
5aa5c9e
fix lock file
Dec 21, 2023
284a92f
clippy
Dec 21, 2023
2e1c753
clippy
Dec 21, 2023
26671a6
fmt and markdownlint
Dec 21, 2023
fb56bd9
markdownlint
Dec 21, 2023
152d0bf
adds test and comment (#82)
claravanstaden Dec 21, 2023
c5a3b48
Squashed 'bridges/snowbridge/' changes from 0627a68e4e9..491d9ba0714
Dec 21, 2023
9b7c50e
update subtree
Dec 21, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
956 changes: 889 additions & 67 deletions Cargo.lock

Large diffs are not rendered by default.

14 changes: 14 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,20 @@ members = [
"bridges/primitives/test-utils",
"bridges/primitives/xcm-bridge-hub",
"bridges/primitives/xcm-bridge-hub-router",
"bridges/snowbridge/parachain/pallets/ethereum-beacon-client",
"bridges/snowbridge/parachain/pallets/inbound-queue",
"bridges/snowbridge/parachain/pallets/outbound-queue",
"bridges/snowbridge/parachain/pallets/outbound-queue/merkle-tree",
"bridges/snowbridge/parachain/pallets/outbound-queue/runtime-api",
"bridges/snowbridge/parachain/pallets/system",
"bridges/snowbridge/parachain/pallets/system/runtime-api",
"bridges/snowbridge/parachain/primitives/beacon",
"bridges/snowbridge/parachain/primitives/core",
"bridges/snowbridge/parachain/primitives/ethereum",
"bridges/snowbridge/parachain/primitives/router",
"bridges/snowbridge/parachain/runtime/rococo-common",
"bridges/snowbridge/parachain/runtime/runtime-common",
"bridges/snowbridge/parachain/runtime/tests",
"cumulus/client/cli",
"cumulus/client/collator",
"cumulus/client/consensus/aura",
Expand Down
201 changes: 201 additions & 0 deletions bridges/snowbridge/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.

"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:

(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.

You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
120 changes: 120 additions & 0 deletions bridges/snowbridge/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
# Snowbridge · [![codecov](https://codecov.io/gh/Snowfork/snowbridge/branch/main/graph/badge.svg?token=9hvgSws4rN)](https://codecov.io/gh/Snowfork/snowbridge) ![GitHub](https://img.shields.io/github/license/Snowfork/snowbridge)

Snowbridge is a trustless bridge between Polkadot and Ethereum. For documentation, visit https://docs.snowbridge.network.

## Components

### Parachain

Polkadot parachain and our pallets. See [parachain/README.md](https://github.com/Snowfork/snowbridge/blob/main/parachain/README.md).

### Contracts

Ethereum contracts and unit tests. See [contracts/README.md](https://github.com/Snowfork/snowbridge/blob/main/contracts/README.md)

### Relayer

Off-chain relayer services for relaying messages between Polkadot and Ethereum. See [relayer/README.md](https://github.com/Snowfork/snowbridge/blob/main/relayer/README.md)

### Local Testnet

Scripts to provision a local testnet, running the above services to bridge between local deployments of Polkadot and Ethereum. See [web/packages/test/README.md](https://github.com/Snowfork/snowbridge/blob/main/web/packages/test/README.md).

### Smoke Tests

Integration tests for our local testnet. See [smoketest/README.md](https://github.com/Snowfork/snowbridge/blob/main/smoketest/README.md).

## Development

We use the Nix package manager to provide a reproducible and maintainable developer environment.

After [installing nix](https://nixos.org/download.html) Nix, enable [flakes](https://nixos.wiki/wiki/Flakes):

```sh
mkdir -p ~/.config/nix
echo 'experimental-features = nix-command flakes' >> ~/.config/nix/nix.conf
```

Then activate a developer shell in the root of our repo, where [`flake.nix`](https://github.com/Snowfork/snowbridge/blob/main/flake.nix) is located:

```sh
nix develop
```

Also make sure to run this initialization script once:
```sh
scripts/init.sh
```

### Support for code editors

To ensure your code editor (such as VS Code) can execute tools in the nix shell, startup your editor within the
interactive shell.

Example for VS Code:

```sh
nix develop
code .
```

### Custom shells

The developer shell is bash by default. To preserve your existing shell:

```sh
nix develop --command $SHELL
```

### Automatic developer shells

To automatically enter the developer shell whenever you open the project, install
[`direnv`](https://direnv.net/docs/installation.html) and use the template `.envrc`:

```sh
cp .envrc.example .envrc
direnv allow
```

### Upgrading the Rust toolchain

Sometimes we would like to upgrade rust toolchain. First update `parachain/rust-toolchain.toml` as required and then update `flake.lock` running
```sh
nix flake lock --update-input rust-overlay
```

## Troubleshooting

Check the contents of all `.envrc` files.

Remove untracked files:
```sh
git clean -idx
```

Ensure that the current Rust toolchain is the one selected in `scripts/init.sh`.

Ensure submodules are up-to-date:
```sh
git submodule update
```

Check untracked files & directories:
```sh
git clean -ndx | awk '{print $3}'
```
After removing `node_modules` directories (eg. with `git clean above`), clear the pnpm cache:
```sh
pnpm store prune
```

Check Nix config in `~/.config/nix/nix.conf`.

Run a pure developer shell (note that this removes access to your local tools):
```sh
nix develop -i --pure-eval
```

## Security

The security policy and procedures can be found in SECURITY.md.
Loading
Loading