From 4414a59569e1fd233ed0345308495ca8cdc192a5 Mon Sep 17 00:00:00 2001 From: Martin Minkov Date: Thu, 28 Sep 2023 13:48:08 -0300 Subject: [PATCH 01/16] feat: add ocaml build directory to gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index fcb737b159..9246171b93 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,6 @@ tests/test-artifacts/ profiling.md snarkyjs-reference *.tmp.js +_build/ +src/config/ +src/config.mlh From 3b98082c04b54b20a48a6a8f2134bdf103592df9 Mon Sep 17 00:00:00 2001 From: Martin Minkov Date: Thu, 28 Sep 2023 13:48:36 -0300 Subject: [PATCH 02/16] feat: add dune-project file to build bindings from o1js root directory --- dune-project | 1 + 1 file changed, 1 insertion(+) create mode 100644 dune-project diff --git a/dune-project b/dune-project new file mode 100644 index 0000000000..7b17fb2d30 --- /dev/null +++ b/dune-project @@ -0,0 +1 @@ +(lang dune 3.3) From d20f6f6a84a09324e2d87304ed7a39af885a9c93 Mon Sep 17 00:00:00 2001 From: Martin Minkov Date: Fri, 27 Oct 2023 12:36:26 -0700 Subject: [PATCH 03/16] fix(package.json): update 'make' script to use local script Co-authored-by: Gregor Mitscha-Baude --- README-dev.md | 8 +++----- package.json | 11 ++++------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/README-dev.md b/README-dev.md index 42a6771b5e..2925218bc5 100644 --- a/README-dev.md +++ b/README-dev.md @@ -14,9 +14,7 @@ npm run build ## Build and run the web version ```sh -npm install -npm run build:web -npm run serve:web +npm run build:bindings ``` To see the test running in a web browser, go to `http://localhost:8000/`. @@ -50,9 +48,9 @@ To see the test running in a web browser, go to `http://localhost:8000/`. ## Branch Compatibility -SnarkyJS is mostly used to write Mina Smart Contracts and must be compatible with the latest Berkeley Testnet (or soon Mainnet). +SnarkyJS is mostly used to write Mina Smart Contracts and must be compatible with the latest Berkeley Testnet (or soon Mainnet). -The OCaml code is in the snarkyjs-bindings repository, not directly in SnarkyJS. +The OCaml code is in the snarkyjs-bindings repository, not directly in SnarkyJS. To maintain compatibility between the repositories and build SnarkyJS from the [Mina repository](https://github.com/MinaProtocol/mina), make changes to its core, such as the OCaml-bindings in the [snarkyjs-bindings repository](https://github.com/o1-labs/snarkyjs-bindings), you must follow a certain branch compatibility pattern: diff --git a/package.json b/package.json index a489e8e919..5d5c9d157d 100644 --- a/package.json +++ b/package.json @@ -43,14 +43,11 @@ "node": ">=16.4.0" }, "scripts": { - "type-check": "tsc --noEmit", - "dev": "npx tsc -p tsconfig.node.json && node src/build/copy-to-dist.js", - "make": "make -C ../../.. snarkyjs", - "make:no-types": "npm run clean && make -C ../../.. snarkyjs_no_types", - "bindings": "cd ../../.. && ./scripts/update-snarkyjs-bindings.sh && cd src/lib/snarkyjs", + "dev": "npx tsc -p tsconfig.test.json && node src/build/copy-to-dist.js", "build": "node src/build/copy-artifacts.js && rimraf ./dist/node && npm run dev && node src/build/buildNode.js", - "build:test": "npx tsc -p tsconfig.test.json && cp src/snarky.d.ts dist/node/snarky.d.ts", - "build:node": "npm run build", + "build:bindings": "./src/bindings/scripts/build-snarkyjs-node.sh", + "build:update-bindings": "./src/bindings/scripts/update-snarkyjs-bindings.sh", + "build:wasm": "./src/bindings/scripts/update-wasm-and-types.sh", "build:web": "rimraf ./dist/web && node src/build/buildWeb.js", "build:examples": "rimraf ./dist/examples && npx tsc -p tsconfig.examples.json || exit 0", "build:docs": "npx typedoc", From 63a252895c76e8db4074506b2253022a70caaa4b Mon Sep 17 00:00:00 2001 From: Martin Minkov Date: Fri, 27 Oct 2023 12:36:57 -0700 Subject: [PATCH 04/16] fix(tsconfig.json): add './src/mina' to exclude list to prevent unnecessary compilation of mina directory --- tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index 268b0f8b3a..367f1cc41d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,6 @@ { "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.bc.js", "./src/build", "./src/examples"], + "exclude": ["./src/**/*.bc.js", "./src/build", "./src/examples", "./src/mina"], "compilerOptions": { "rootDir": "./src", "outDir": "dist", From 2835ff74022c97bf0a514f7e815eedfbd97e3dcb Mon Sep 17 00:00:00 2001 From: Martin Minkov Date: Fri, 27 Oct 2023 16:13:16 -0700 Subject: [PATCH 05/16] fix(.gitmodules): change MinaProtocol submodule URL from SSH to HTTPS --- .gitmodules | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitmodules b/.gitmodules index b343059624..76a36100bc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "src/snarkyjs-bindings"] path = src/bindings url = https://github.com/o1-labs/snarkyjs-bindings.git +[submodule "src/mina"] + path = src/mina + url = https://github.com/MinaProtocol/mina.git From 854f9fd7c45014946c6b0e34045db42c6474eda9 Mon Sep 17 00:00:00 2001 From: Martin Minkov Date: Fri, 27 Oct 2023 16:47:05 -0700 Subject: [PATCH 06/16] feat(jest.config.js): add 'src/mina/' to modulePathIgnorePatterns to prevent Jest from running tests in this directory --- jest.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/jest.config.js b/jest.config.js index b24c895d96..7f6d944074 100644 --- a/jest.config.js +++ b/jest.config.js @@ -3,6 +3,7 @@ export default { testEnvironment: 'node', extensionsToTreatAsEsm: ['.ts'], transformIgnorePatterns: ['node_modules/', 'dist/node/'], + modulePathIgnorePatterns: ['src/mina/'], globals: { 'ts-jest': { useESM: true, From 087659544b7461df3ace6391e827c365e1e6d4b8 Mon Sep 17 00:00:00 2001 From: Martin Minkov Date: Sun, 29 Oct 2023 20:22:32 -0700 Subject: [PATCH 07/16] docs(README-dev.md): update build instructions and add details about build scripts - Replace opam with Dune in the list of required tools to reflect changes in the build process - Add a new section about build scripts, explaining the role of update-snarkyjs-bindings.sh - Expand on the OCaml bindings section, detailing the use of Dune and Js_of_ocaml in the build process - Add information about the WebAssembly bindings build process, including the output files - Introduce a section about generated constant types, explaining how they are created and their role in ensuring protocol consistency Co-authored-by: Gregor Mitscha-Baude --- README-dev.md | 195 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 159 insertions(+), 36 deletions(-) diff --git a/README-dev.md b/README-dev.md index 2925218bc5..c81b561d08 100644 --- a/README-dev.md +++ b/README-dev.md @@ -1,63 +1,186 @@ -# How to contribute to the SnarkyJS codebase +# o1js README-dev -This README includes information that is helpful for SnarkyJS core contributors. +o1js is a TypeScript framework designed for zk-SNARKs and zkApps on the Mina blockchain. -## Run examples using Node.js +- [zkApps Overview](https://docs.minaprotocol.com/zkapps) +- [Mina README](/src/mina/README.md) + +For more information on our development process and how to contribute, see [CONTRIBUTING.md](https://github.com/o1-labs/o1js/blob/main/CONTRIBUTING.md). This document is meant to guide you through building o1js from source and understanding the development workflow. + +## Prerequisites + +Before starting, ensure you have the following tools installed: + +- [Git](https://git-scm.com/) +- [Node.js and npm](https://nodejs.org/) +- [Dune](https://github.com/ocaml/dune) (only needed when compiling o1js from source) +- [Cargo](https://www.rust-lang.org/learn/get-started) (only needed when compiling o1js from source) + +After cloning the repository, you need to fetch the submodules: + +```sh +git submodule update --init --recursive +``` + +## Building o1js + +For most users, building o1js is as simple as running: ```sh npm install npm run build +``` + +This will compile the TypeScript source files, making it ready for use. The compiled OCaml and WebAssembly artifacts are version-controlled to simplify the build process for end-users. These artifacts are stored under `src/bindings/compiled`, and contain the artifacts needed for both node and web builds. These files do not have to be regenerated unless there are changes to the OCaml or Rust source files. + +## Building Bindings + +If you need to regenerate the OCaml and WebAssembly artifacts, you can do so within the o1js repo. The [bindings](https://github.com/o1-labs/o1js-bindings) and [Mina](https://github.com/MinaProtocol/mina) repos are both submodules of o1js, so you can build them from within the o1js repo. + +o1js depends on OCaml code that is transpiled to JavaScript using [Js_of_ocaml](https://github.com/ocsigen/js_of_ocaml), and Rust code that is transpiled to WebAssembly using [wasm-pack](https://github.com/rustwasm/wasm-pack). These artifacts allow o1js to call into [Pickles](https://github.com/MinaProtocol/mina/blob/develop/src/lib/pickles/README.md), [snarky](https://github.com/o1-labs/snarky), and [Kimchi](https://github.com/o1-labs/proof-systems) to write zk-SNARKs and zkApps. -./run src/examples/api_exploration.ts +The compiled artifacts are stored under `src/bindings/compiled`, and are version-controlled to simplify the build process for end-users. + +If you wish to rebuild the OCaml and Rust artifacts, you must be able to build the Mina repo before building the bindings. See the [Mina Dev Readme](https://github.com/MinaProtocol/mina/blob/develop/README-dev.md) for more information. Once you have configured your environment to build Mina, you can build the bindings: + +```sh +npm run build:update-bindings ``` -## Build and run the web version +This will build the OCaml and Rust artifacts, and copy them to the `src/bindings/compiled` directory. + +### Build Scripts + +The root build script which kicks off the build process is under `src/bindings/scripts/update-snarkyjs-bindings.sh`. This script is responsible for building the Node.js and web artifacts for o1js, and places them under `src/bindings/compiled`, to be used by o1js. + +### OCaml Bindings + +o1js depends on Pickles, snarky, and parts of the Mina transaction logic, all of which are compiled to JavaScript and stored as artifacts to be used by o1js natively. The OCaml bindings are located under `src/bindings`. See the [OCaml Bindings README](https://github.com/o1-labs/o1js-bindings/blob/main/README.md) for more information. + +To compile the OCaml code, a build tool called Dune is used. Dune is a build system for OCaml projects, and is used in addition with Js_of_ocaml to compile the OCaml code to JavaScript. The dune file that is responsible for compiling the OCaml code is located under `src/bindings/ocaml/dune`. There are two build targets: `snarky_js_node` and `snarky_js_web`, which compile the Mina dependencies as well as link the wasm artifacts to build the Node.js and web artifacts, respectively. The output file is `snark_js_node.bc.js`, which is used by o1js. + +### WebAssembly Bindings + +o1js additionally depends on Kimchi, which is compiled to WebAssembly. Kimchi is located in the Mina repo, under `src/mina`. See the [Kimchi README](https://github.com/o1-labs/proof-systems/blob/master/README.md) for more information. + +To compile the wasm code, a combination of Cargo and Dune is used. Both build files are located under `src/mina/src/lib/crypto/kimchi`, where the `wasm` folder contains the Rust code which is compiled to wasm, and the `js` folder which contains a wrapper around the wasm code which allows Js_of_ocaml to compile against the wasm backend. + +For the wasm build, the output files are: + +- `plonk_wasm_bg.wasm`: The compiled WebAssembly binary. +- `plonk_wasm_bg.wasm.d.ts`: TypeScript definition files describing the types of .wasm or .js files. +- `plonk_wasm.js`: JavaScript file that wraps the WASM code for use in Node.js. +- `plonk_wasm.d.ts`: TypeScript definition file for plonk_wasm.js. + +### Generated Constant Types + +In addition to building the OCaml and Rust code, the build script also generates TypeScript types for constants used in the Mina protocol. These types are generated from the OCaml source files, and are located under `src/bindings/crypto/constants.ts` and `src/bindings/mina-transaction/gen`. When building the bindings, these constants are auto-generated by Dune. If you wish to add a new constant, you can edit the `src/bindings/ocaml/snarky_js_constants` file, and then run `npm run build:bindings` to regenerate the TypeScript files. + +These types are used by o1js to ensure that the constants used in the protocol are consistent with the OCaml source files. + +## Development + +### Branch Compatibility + +If you work on o1js, create a feature branch off of one of these base branches. It's encouraged to submit your work-in-progress as a draft PR to raise visibility! When working with submodules and various interconnected parts of the stack, ensure you are on the correct branches that are compatible with each other. + +#### How to Use the Branches + +**Default to `main` as the base branch**. + +The other base branches (`berkeley`, `develop`) are only used in specific scenarios where you want to adapt o1js to changes in the sibling repos on those other branches. Even then, consider whether it is feasible to land your changes to `main` and merge to `berkeley` and `develop` afterwards. Only changes in `main` will ever be released, so anything in the other branches has to be backported and reconciled with `main` eventually. + +| Repository | mina -> o1js -> o1js-bindings | +| ---------- | -------------------------------- | +| Branches | o1js-main -> main -> main | +| | berkeley -> berkeley -> berkeley | +| | develop -> develop -> develop | + +- `o1js-main`: The o1js-main branch in the Mina repository corresponds to the main branch in both o1js and o1js-bindings repositories. This is where stable releases and ramp-up features are maintained. The o1js-main branch runs in parallel to the Mina `berkeley` branch and does not have a subset or superset relationship with it. The branching structure is as follows (<- means direction to merge): + + - `develop` <- `o1js-main` <- `current testnet` - Typically, the current testnet often corresponds to the rampup branch. + +- `berkeley`: The berkeley branch is maintained across all three repositories. This branch is used for features and updates specific to the Berkeley release of the project. + +- `develop`: The develop branch is also maintained across all three repositories. It is used for ongoing development, testing new features, and integration work. + +### Running Tests + +To ensure your changes don't break existing functionality, run the test suite: + +```sh +npm run test +npm run test:unit +``` + +This will run all the unit tests and provide you with a summary of the test results. + +You can additionally run integration tests by running: + +```sh +npm run test:integration +``` + +Finally, we have a set of end-to-end tests that run against the browser. These tests are not run by default, but you can run them by running: ```sh -npm run build:bindings +npm install +npm run e2e:install +npm run build:web + +npm run e2e:prepare-server +npm run test:e2e +npm run e2e:show-report ``` -To see the test running in a web browser, go to `http://localhost:8000/`. +### Run the GitHub actions locally -## Run tests + -- Unit tests +You can execute the CI locally by using [act](https://github.com/nektos/act). First generate a GitHub token and use: - ```sh - npm run test - npm run test:unit - ``` +```sh +act -j Build-And-Test-Server --matrix test_type:"Simple integration tests" -s $GITHUB_TOKEN +``` -- Integration tests +### Releasing - ```sh - npm run test:integration - ``` +To release a new version of o1js, you must first update the version number in `package.json`. Then, you can create a new pull request to merge your changes into the main branch. Once the pull request is merged, a CI job will automatically publish the new version to npm. -- E2E tests +## Test zkApps against the local blockchain network - ```sh - npm install - npm run e2e:install - npm run build:web +In order to be able to test zkApps against the local blockchain network, you need to spin up such a network first. +You can do so in several ways. - npm run e2e:prepare-server - npm run test:e2e - npm run e2e:show-report - ``` +1. Using [zkapp-cli](https://www.npmjs.com/package/zkapp-cli)'s sub commands: -## Branch Compatibility + ```shell + zk lightnet start # start the local network + # Do your tests and other interactions with the network + zk lightnet logs # manage the logs of the local network + zk lightnet explorer # visualize the local network state + zk lightnet stop # stop the local network + ``` -SnarkyJS is mostly used to write Mina Smart Contracts and must be compatible with the latest Berkeley Testnet (or soon Mainnet). + Please refer to `zk lightnet --help` for more information. -The OCaml code is in the snarkyjs-bindings repository, not directly in SnarkyJS. +2. Using the corresponding [Docker image](https://hub.docker.com/r/o1labs/mina-local-network) manually: -To maintain compatibility between the repositories and build SnarkyJS from the [Mina repository](https://github.com/MinaProtocol/mina), make changes to its core, such as the OCaml-bindings in the [snarkyjs-bindings repository](https://github.com/o1-labs/snarkyjs-bindings), you must follow a certain branch compatibility pattern: + ```shell + docker run --rm --pull=missing -it \ + --env NETWORK_TYPE="single-node" \ + --env PROOF_LEVEL="none" \ + --env LOG_LEVEL="Trace" \ + -p 3085:3085 \ + -p 5432:5432 \ + -p 8080:8080 \ + -p 8181:8181 \ + -p 8282:8282 \ + o1labs/mina-local-network:o1js-main-latest-lightnet + ``` -The following branches are compatible: + Please refer to the [Docker Hub repository](https://hub.docker.com/r/o1labs/mina-local-network) for more information. -| repository | mina -> snarkyjs -> snarkyjs-bindings | -| ---------- | ------------------------------------- | -| branches | rampup -> main -> main | -| | berkeley -> berkeley -> berkeley | -| | develop -> develop -> develop | +Next up, you will need the Mina blockchain accounts information in order to be used in your zkApp. +Once the local network is up and running, you can use the [Lightnet](https://github.com/o1-labs/o1js/blob/ec789794b2067addef6b6f9c9a91c6511e07e37c/src/lib/fetch.ts#L1012) `o1js API namespace` to get the accounts information. +The corresponding example can be found here: [src/examples/zkapps/hello_world/run_live.ts](https://github.com/o1-labs/o1js/blob/ec789794b2067addef6b6f9c9a91c6511e07e37c/src/examples/zkapps/hello_world/run_live.ts) From 6aa979923760678437730452933de67db9f97db9 Mon Sep 17 00:00:00 2001 From: Martin Minkov Date: Tue, 14 Nov 2023 13:58:50 -0800 Subject: [PATCH 08/16] fix(.prettierignore): update path for kimchi js files to reflect new directory structure, ensuring correct files are ignored by Prettier --- .prettierignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.prettierignore b/.prettierignore index 099c3fecca..fe67df0c2c 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,4 +2,4 @@ src/bindings/compiled/web_bindings/**/plonk_wasm* src/bindings/compiled/web_bindings/**/*.bc.js src/bindings/compiled/node_bindings/* dist/**/* -src/bindings/kimchi/js/**/*.js +src/mina/src/lib/crypto/kimchi/js/**/*.js From b913ba9197481fa424d5f320caf887c1f512d2c2 Mon Sep 17 00:00:00 2001 From: Martin Minkov Date: Mon, 8 Jan 2024 16:14:32 -0800 Subject: [PATCH 09/16] chore(bindings): update subproject commit hash to 870d7eddfa1504a45de7286e51efa00ad37932d9 for latest changes --- src/bindings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bindings b/src/bindings index 5f9f3a3a30..870d7eddfa 160000 --- a/src/bindings +++ b/src/bindings @@ -1 +1 @@ -Subproject commit 5f9f3a3a30d3e98e7f42764ddf4d5c3b9db45a9e +Subproject commit 870d7eddfa1504a45de7286e51efa00ad37932d9 From e5d93a778384925491234bd17a20f62cb5685d79 Mon Sep 17 00:00:00 2001 From: Martin Minkov Date: Thu, 28 Sep 2023 13:46:46 -0300 Subject: [PATCH 10/16] feat: add mina submodule to o1js --- src/mina | 1 + 1 file changed, 1 insertion(+) create mode 160000 src/mina diff --git a/src/mina b/src/mina new file mode 160000 index 0000000000..396ae46c0f --- /dev/null +++ b/src/mina @@ -0,0 +1 @@ +Subproject commit 396ae46c0f301f697c91771bc6780571a7656a45 From dcc6eceb216e07039505602174f52a361d3e6952 Mon Sep 17 00:00:00 2001 From: Martin Minkov Date: Mon, 8 Jan 2024 16:21:23 -0800 Subject: [PATCH 11/16] chore(mina): update mina submodule to f445fd --- src/mina | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mina b/src/mina index 396ae46c0f..f445fdd2fb 160000 --- a/src/mina +++ b/src/mina @@ -1 +1 @@ -Subproject commit 396ae46c0f301f697c91771bc6780571a7656a45 +Subproject commit f445fdd2fbd756d3437bf501dfd199a046d20965 From 8cda3aeba5ab8e9b165231ab137ce5c3e690b784 Mon Sep 17 00:00:00 2001 From: Martin Minkov Date: Wed, 17 Jan 2024 10:43:36 -0800 Subject: [PATCH 12/16] chore(bindings, mina): update mina to 69770 and bindings to ba1607 --- src/bindings | 2 +- src/mina | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bindings b/src/bindings index 870d7eddfa..ba1607a552 160000 --- a/src/bindings +++ b/src/bindings @@ -1 +1 @@ -Subproject commit 870d7eddfa1504a45de7286e51efa00ad37932d9 +Subproject commit ba1607a552b40024aff4dce095ad3448993f13af diff --git a/src/mina b/src/mina index f445fdd2fb..697709dd3c 160000 --- a/src/mina +++ b/src/mina @@ -1 +1 @@ -Subproject commit f445fdd2fbd756d3437bf501dfd199a046d20965 +Subproject commit 697709dd3cf1d3626d084edff5523c6e41a3f2ef From 8732c3d5aedbab55fa835926b9d5a7413407e255 Mon Sep 17 00:00:00 2001 From: Gregor Date: Tue, 5 Dec 2023 10:26:46 +0100 Subject: [PATCH 13/16] remove use of build:node --- .github/workflows/build-action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-action.yml b/.github/workflows/build-action.yml index f2945f9bec..f042184e0f 100644 --- a/.github/workflows/build-action.yml +++ b/.github/workflows/build-action.yml @@ -43,7 +43,7 @@ jobs: run: | git submodule update --init --recursive npm ci - npm run build:node + npm run build touch profiling.md sh run-ci-tests.sh cat profiling.md >> $GITHUB_STEP_SUMMARY @@ -93,7 +93,7 @@ jobs: run: | git submodule update --init --recursive npm ci - npm run build:node + npm run build - name: Publish to NPM if version has changed uses: JS-DevTools/npm-publish@v1 if: github.ref == 'refs/heads/main' From 8a69267ac4c2200851f94d4500beee90cd7ca196 Mon Sep 17 00:00:00 2001 From: Gregor Date: Tue, 5 Dec 2023 08:35:26 +0100 Subject: [PATCH 14/16] simplify build scripts --- run-unit-tests.sh | 3 +-- src/bindings | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/run-unit-tests.sh b/run-unit-tests.sh index 44881eca5d..3e39307f36 100755 --- a/run-unit-tests.sh +++ b/run-unit-tests.sh @@ -2,8 +2,7 @@ set -e shopt -s globstar # to expand '**' into nested directories./ -# run the build:test -npm run build:test +npm run build # find all unit tests in dist/node and run them # TODO it would be nice to make this work on Mac diff --git a/src/bindings b/src/bindings index ba1607a552..ecc3519753 160000 --- a/src/bindings +++ b/src/bindings @@ -1 +1 @@ -Subproject commit ba1607a552b40024aff4dce095ad3448993f13af +Subproject commit ecc3519753aa9cc7aa88697520bd89a97ab5f8ec From 0a069c6d90cc03e12a6c20f6a1f363f65aa60016 Mon Sep 17 00:00:00 2001 From: Martin Minkov Date: Thu, 18 Jan 2024 08:52:43 -0800 Subject: [PATCH 15/16] chore(bindings): update submodule to commit 5ed3f4 --- src/bindings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bindings b/src/bindings index ecc3519753..5ed3f47ab9 160000 --- a/src/bindings +++ b/src/bindings @@ -1 +1 @@ -Subproject commit ecc3519753aa9cc7aa88697520bd89a97ab5f8ec +Subproject commit 5ed3f47ab9446422280aa04fe748bc72828bc0f1 From 1cdaa3882d3f495c467e9af771f5507fe6a3d0ab Mon Sep 17 00:00:00 2001 From: Martin Minkov Date: Fri, 19 Jan 2024 09:38:36 -0800 Subject: [PATCH 16/16] chore(mina): update minda to 4d8161 --- src/mina | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mina b/src/mina index 697709dd3c..4d81614a94 160000 --- a/src/mina +++ b/src/mina @@ -1 +1 @@ -Subproject commit 697709dd3cf1d3626d084edff5523c6e41a3f2ef +Subproject commit 4d81614a94ee68ae9afe350e46dbb878852695a7