From 6e8d4316e0b8d8a403eed6dd416c67301164e3d2 Mon Sep 17 00:00:00 2001 From: ymekuria Date: Thu, 27 Jun 2024 16:16:01 -0600 Subject: [PATCH 01/18] docs(reducer-composite.ts): add warning comment about actions and reducers being in development and not safe for production use --- src/examples/zkapps/reducer/reducer-composite.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/examples/zkapps/reducer/reducer-composite.ts b/src/examples/zkapps/reducer/reducer-composite.ts index a45686f515..1e6201a894 100644 --- a/src/examples/zkapps/reducer/reducer-composite.ts +++ b/src/examples/zkapps/reducer/reducer-composite.ts @@ -1,3 +1,8 @@ +/** + * This example demonstrates a pattern to use actions for concurrent state updates. + * Warning: Actions and Reducers are still in development and currently are not safe to use in production applications. + */ + import { Field, state, From 0707bee5738b4f286ff4efe7ded1a132600870d8 Mon Sep 17 00:00:00 2001 From: ymekuria Date: Thu, 27 Jun 2024 16:42:15 -0600 Subject: [PATCH 02/18] docs(map.ts): add warning message about the development status of Actions and Reducers to inform users not to use them in production applications --- src/examples/zkapps/reducer/map.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/examples/zkapps/reducer/map.ts b/src/examples/zkapps/reducer/map.ts index c4c2cb23ac..0ea1b6d455 100644 --- a/src/examples/zkapps/reducer/map.ts +++ b/src/examples/zkapps/reducer/map.ts @@ -22,6 +22,7 @@ In this example, the keys are public keys, and the values are arbitrary field el This utilizes the `Reducer` as an append online list of actions, which are then looked at to find the value corresponding to a specific key. +Warning: Actions and Reducers are still in development and currently are not safe to use in production applications. ```ts // js From e9260ea04abc7887b46b4e89034e93fec7d0c028 Mon Sep 17 00:00:00 2001 From: ymekuria Date: Thu, 27 Jun 2024 17:44:24 -0600 Subject: [PATCH 03/18] feat(reducer-composite): update production warning --- src/examples/zkapps/reducer/map.ts | 2 +- src/examples/zkapps/reducer/reducer-composite.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/examples/zkapps/reducer/map.ts b/src/examples/zkapps/reducer/map.ts index 0ea1b6d455..f83df60acd 100644 --- a/src/examples/zkapps/reducer/map.ts +++ b/src/examples/zkapps/reducer/map.ts @@ -22,7 +22,7 @@ In this example, the keys are public keys, and the values are arbitrary field el This utilizes the `Reducer` as an append online list of actions, which are then looked at to find the value corresponding to a specific key. -Warning: Actions and Reducers are still in development and currently are not safe to use in production applications. +Warning: actions and reducers are still in development and currently are not safe to use in production applications. ```ts // js diff --git a/src/examples/zkapps/reducer/reducer-composite.ts b/src/examples/zkapps/reducer/reducer-composite.ts index 1e6201a894..6123bd047e 100644 --- a/src/examples/zkapps/reducer/reducer-composite.ts +++ b/src/examples/zkapps/reducer/reducer-composite.ts @@ -1,6 +1,6 @@ /** * This example demonstrates a pattern to use actions for concurrent state updates. - * Warning: Actions and Reducers are still in development and currently are not safe to use in production applications. + * Warning: actions and reducers are still in development and currently are not safe to use in production applications. */ import { From 616f3166ff8597697ea65e63891a1d9ce3f846a0 Mon Sep 17 00:00:00 2001 From: ymekuria Date: Thu, 27 Jun 2024 17:58:19 -0600 Subject: [PATCH 04/18] docs(actions-as-merkle-list-iterator.ts): add warning about actions and reducers being in development and not safe for production use --- src/examples/zkapps/reducer/actions-as-merkle-list-iterator.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/examples/zkapps/reducer/actions-as-merkle-list-iterator.ts b/src/examples/zkapps/reducer/actions-as-merkle-list-iterator.ts index 284a5a56c3..de8d2b7820 100644 --- a/src/examples/zkapps/reducer/actions-as-merkle-list-iterator.ts +++ b/src/examples/zkapps/reducer/actions-as-merkle-list-iterator.ts @@ -4,6 +4,8 @@ * * This is mainly intended as an example for using `Iterator` and `MerkleList`, but it might also be useful as * a blueprint for processing actions in a custom and more explicit way. + * + * Warning: actions and reducers are still in development and currently are not safe to use in production applications. */ import { Field, From 281923f6bf276c0a10c096a539c6bb25e1fc648a Mon Sep 17 00:00:00 2001 From: ymekuria Date: Thu, 27 Jun 2024 18:00:48 -0600 Subject: [PATCH 05/18] docs(actions-as-merkle-list.ts): add warning about actions and reducers being in development and not safe for production use --- src/examples/zkapps/reducer/actions-as-merkle-list.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/examples/zkapps/reducer/actions-as-merkle-list.ts b/src/examples/zkapps/reducer/actions-as-merkle-list.ts index a2a608b3e2..b267183f7d 100644 --- a/src/examples/zkapps/reducer/actions-as-merkle-list.ts +++ b/src/examples/zkapps/reducer/actions-as-merkle-list.ts @@ -4,6 +4,8 @@ * * This is mainly intended as an example for using `MerkleList`, but it might also be useful as * a blueprint for processing actions in a custom and more explicit way. + * + * Warning: actions and reducers are still in development and currently are not safe to use in production applications. */ import { Bool, From b32799ff0e6303ca793fa4ba4bb5cb80da1b48d3 Mon Sep 17 00:00:00 2001 From: ymekuria Date: Mon, 8 Jul 2024 11:07:19 -0700 Subject: [PATCH 06/18] docs(reducer.ts): add warning message to reducer doc comments about the current limitations of the reducer API in o1js and mention ongoing work to address the issue --- src/lib/mina/actions/reducer.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/lib/mina/actions/reducer.ts b/src/lib/mina/actions/reducer.ts index 8be11506fb..f11a26edb6 100644 --- a/src/lib/mina/actions/reducer.ts +++ b/src/lib/mina/actions/reducer.ts @@ -65,6 +65,9 @@ type ReducerReturn = { * ); * ``` * + *Warning: The reducer API in o1js is currently not safe to use in production applications. The reduce() + *method breaks if more than the hard-coded number (default: 32) of actions are pending. Work is actively + *in progress to mitigate this limitation. */ reduce( actions: MerkleList>, From 7e427a92196b98a863f02e693f7e85df336c5919 Mon Sep 17 00:00:00 2001 From: ymekuria Date: Mon, 8 Jul 2024 11:11:22 -0700 Subject: [PATCH 07/18] docs(actions-as-merkle-list-iterator.ts): update warning message about reducer API in o1js to provide more specific details and current limitations --- .../zkapps/reducer/actions-as-merkle-list-iterator.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/examples/zkapps/reducer/actions-as-merkle-list-iterator.ts b/src/examples/zkapps/reducer/actions-as-merkle-list-iterator.ts index de8d2b7820..74fcaa195d 100644 --- a/src/examples/zkapps/reducer/actions-as-merkle-list-iterator.ts +++ b/src/examples/zkapps/reducer/actions-as-merkle-list-iterator.ts @@ -5,8 +5,10 @@ * This is mainly intended as an example for using `Iterator` and `MerkleList`, but it might also be useful as * a blueprint for processing actions in a custom and more explicit way. * - * Warning: actions and reducers are still in development and currently are not safe to use in production applications. - */ + * Warning: The reducer API in o1js is currently not safe to use in production applications. The reduce() + * method breaks if more than the hard-coded number (default: 32) of actions are pending. Work is actively + * in progress to mitigate this limitation. + */ import { Field, Mina, From 3b871a2b334d1f1106427e3bb436ab7e0b72f4a1 Mon Sep 17 00:00:00 2001 From: ymekuria Date: Mon, 8 Jul 2024 11:12:04 -0700 Subject: [PATCH 08/18] docs(actions-as-merkle-list.ts): update warning message to reflect current limitations and ongoing work to address them --- src/examples/zkapps/reducer/actions-as-merkle-list.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/examples/zkapps/reducer/actions-as-merkle-list.ts b/src/examples/zkapps/reducer/actions-as-merkle-list.ts index b267183f7d..8065e9e0fb 100644 --- a/src/examples/zkapps/reducer/actions-as-merkle-list.ts +++ b/src/examples/zkapps/reducer/actions-as-merkle-list.ts @@ -5,8 +5,10 @@ * This is mainly intended as an example for using `MerkleList`, but it might also be useful as * a blueprint for processing actions in a custom and more explicit way. * - * Warning: actions and reducers are still in development and currently are not safe to use in production applications. - */ + * Warning: The reducer API in o1js is currently not safe to use in production applications. The reduce() + * method breaks if more than the hard-coded number (default: 32) of actions are pending. Work is actively + * in progress to mitigate this limitation. + */ import { Bool, Mina, From 6bd9f2aee4a89b3fb682a1c26132b45dce9c8fbe Mon Sep 17 00:00:00 2001 From: ymekuria Date: Mon, 8 Jul 2024 11:13:35 -0700 Subject: [PATCH 09/18] docs(map.ts): update warning message to provide more specific information about the limitations of the reducer API in o1js and ongoing efforts to address them. --- src/examples/zkapps/reducer/map.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/examples/zkapps/reducer/map.ts b/src/examples/zkapps/reducer/map.ts index f83df60acd..fd0d404944 100644 --- a/src/examples/zkapps/reducer/map.ts +++ b/src/examples/zkapps/reducer/map.ts @@ -22,7 +22,10 @@ In this example, the keys are public keys, and the values are arbitrary field el This utilizes the `Reducer` as an append online list of actions, which are then looked at to find the value corresponding to a specific key. -Warning: actions and reducers are still in development and currently are not safe to use in production applications. +Warning: The reducer API in o1js is currently not safe to use in production applications. The reduce() +method breaks if more than the hard-coded number (default: 32) of actions are pending. Work is actively +in progress to mitigate this limitation. + ```ts // js From ce429b67957ad805f41813424fb8a62ce1d427f6 Mon Sep 17 00:00:00 2001 From: ymekuria Date: Mon, 8 Jul 2024 13:00:54 -0700 Subject: [PATCH 10/18] refactor(reducer): format warning messages to mention. --- .../zkapps/reducer/actions-as-merkle-list-iterator.ts | 2 +- src/examples/zkapps/reducer/actions-as-merkle-list.ts | 2 +- src/examples/zkapps/reducer/reducer-composite.ts | 7 +++++-- src/lib/mina/actions/reducer.ts | 6 +++--- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/examples/zkapps/reducer/actions-as-merkle-list-iterator.ts b/src/examples/zkapps/reducer/actions-as-merkle-list-iterator.ts index 74fcaa195d..0f7b7c4a23 100644 --- a/src/examples/zkapps/reducer/actions-as-merkle-list-iterator.ts +++ b/src/examples/zkapps/reducer/actions-as-merkle-list-iterator.ts @@ -5,7 +5,7 @@ * This is mainly intended as an example for using `Iterator` and `MerkleList`, but it might also be useful as * a blueprint for processing actions in a custom and more explicit way. * - * Warning: The reducer API in o1js is currently not safe to use in production applications. The reduce() + * Warning: The reducer API in o1js is currently not safe to use in production applications. The `reduce()` * method breaks if more than the hard-coded number (default: 32) of actions are pending. Work is actively * in progress to mitigate this limitation. */ diff --git a/src/examples/zkapps/reducer/actions-as-merkle-list.ts b/src/examples/zkapps/reducer/actions-as-merkle-list.ts index 8065e9e0fb..1eb813dbb5 100644 --- a/src/examples/zkapps/reducer/actions-as-merkle-list.ts +++ b/src/examples/zkapps/reducer/actions-as-merkle-list.ts @@ -5,7 +5,7 @@ * This is mainly intended as an example for using `MerkleList`, but it might also be useful as * a blueprint for processing actions in a custom and more explicit way. * - * Warning: The reducer API in o1js is currently not safe to use in production applications. The reduce() + * Warning: The reducer API in o1js is currently not safe to use in production applications. The `reduce()` * method breaks if more than the hard-coded number (default: 32) of actions are pending. Work is actively * in progress to mitigate this limitation. */ diff --git a/src/examples/zkapps/reducer/reducer-composite.ts b/src/examples/zkapps/reducer/reducer-composite.ts index 6123bd047e..5ae49e5559 100644 --- a/src/examples/zkapps/reducer/reducer-composite.ts +++ b/src/examples/zkapps/reducer/reducer-composite.ts @@ -1,7 +1,10 @@ /** * This example demonstrates a pattern to use actions for concurrent state updates. - * Warning: actions and reducers are still in development and currently are not safe to use in production applications. - */ + * + * Warning: The reducer API in o1js is currently not safe to use in production applications. The `reduce()` + * method breaks if more than the hard-coded number (default: 32) of actions are pending. Work is actively + * in progress to mitigate this limitation. + */ import { Field, diff --git a/src/lib/mina/actions/reducer.ts b/src/lib/mina/actions/reducer.ts index f11a26edb6..0118e0028e 100644 --- a/src/lib/mina/actions/reducer.ts +++ b/src/lib/mina/actions/reducer.ts @@ -65,9 +65,9 @@ type ReducerReturn = { * ); * ``` * - *Warning: The reducer API in o1js is currently not safe to use in production applications. The reduce() - *method breaks if more than the hard-coded number (default: 32) of actions are pending. Work is actively - *in progress to mitigate this limitation. + * Warning: The reducer API in o1js is currently not safe to use in production applications. The `reduce()` + * method breaks if more than the hard-coded number (default: 32) of actions are pending. Work is actively + * in progress to mitigate this limitation. */ reduce( actions: MerkleList>, From d780e3e813250953279033d2fae6fbc521d8ef3b Mon Sep 17 00:00:00 2001 From: ymekuria Date: Mon, 8 Jul 2024 13:15:54 -0700 Subject: [PATCH 11/18] docs(dex-with-actions.ts): add warning about reducer API limitation in o1js for production applications --- src/examples/zkapps/dex/dex-with-actions.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/examples/zkapps/dex/dex-with-actions.ts b/src/examples/zkapps/dex/dex-with-actions.ts index 898127df44..df1dce0eba 100644 --- a/src/examples/zkapps/dex/dex-with-actions.ts +++ b/src/examples/zkapps/dex/dex-with-actions.ts @@ -2,7 +2,11 @@ * This DEX implementation differs from ./dex.ts in two ways: * - More minimal & realistic; stuff designed only for testing protocol features was removed * - Uses an async pattern with actions that lets users claim funds later and reduces account updates - */ + * + * Warning: The reducer API in o1js is currently not safe to use in production applications. The reduce() + * method breaks if more than the hard-coded number (default: 32) of actions are pending. Work is actively + * in progress to mitigate this limitation. + */ import { Account, AccountUpdate, From 626300e37378d4057d13844a3630022f22bc4314 Mon Sep 17 00:00:00 2001 From: ymekuria Date: Mon, 8 Jul 2024 23:34:57 -0700 Subject: [PATCH 12/18] docs(voting/demo.ts): update comments to provide a warning about the reducer API limitations in o1js --- src/examples/zkapps/voting/demo.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/examples/zkapps/voting/demo.ts b/src/examples/zkapps/voting/demo.ts index 948a773cc7..a920eb1596 100644 --- a/src/examples/zkapps/voting/demo.ts +++ b/src/examples/zkapps/voting/demo.ts @@ -1,5 +1,12 @@ -// used to do a dry run, without tests -// ./run ./src/examples/zkapps/voting/demo.ts + +/* + * used to do a dry run, without tests + * ./run ./src/examples/zkapps/voting/demo.ts + * + * Warning: The reducer API in o1js is currently not safe to use in production applications. The reduce() + * method breaks if more than the hard-coded number (default: 32) of actions are pending. Work is actively + * in progress to mitigate this limitation. + */ import { Mina, AccountUpdate, PrivateKey, UInt64, Reducer, Bool } from 'o1js'; import { VotingApp, VotingAppParams } from './factory.js'; From a78d4f1060ae1cb53653d613b766d0ad3c9d5631 Mon Sep 17 00:00:00 2001 From: ymekuria Date: Mon, 8 Jul 2024 23:43:10 -0700 Subject: [PATCH 13/18] docs(zkapps): update warning messages in dex and voting examples to mention the usage of `reduce()` method in o1js and its limitations --- src/examples/zkapps/dex/dex-with-actions.ts | 2 +- src/examples/zkapps/voting/demo.ts | 2 +- src/examples/zkapps/voting/membership.ts | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/examples/zkapps/dex/dex-with-actions.ts b/src/examples/zkapps/dex/dex-with-actions.ts index df1dce0eba..bb0fe5583f 100644 --- a/src/examples/zkapps/dex/dex-with-actions.ts +++ b/src/examples/zkapps/dex/dex-with-actions.ts @@ -3,7 +3,7 @@ * - More minimal & realistic; stuff designed only for testing protocol features was removed * - Uses an async pattern with actions that lets users claim funds later and reduces account updates * - * Warning: The reducer API in o1js is currently not safe to use in production applications. The reduce() + * Warning: The reducer API in o1js is currently not safe to use in production applications. The `reduce()` * method breaks if more than the hard-coded number (default: 32) of actions are pending. Work is actively * in progress to mitigate this limitation. */ diff --git a/src/examples/zkapps/voting/demo.ts b/src/examples/zkapps/voting/demo.ts index a920eb1596..1a5244f963 100644 --- a/src/examples/zkapps/voting/demo.ts +++ b/src/examples/zkapps/voting/demo.ts @@ -3,7 +3,7 @@ * used to do a dry run, without tests * ./run ./src/examples/zkapps/voting/demo.ts * - * Warning: The reducer API in o1js is currently not safe to use in production applications. The reduce() + * Warning: The reducer API in o1js is currently not safe to use in production applications. The `reduce()` * method breaks if more than the hard-coded number (default: 32) of actions are pending. Work is actively * in progress to mitigate this limitation. */ diff --git a/src/examples/zkapps/voting/membership.ts b/src/examples/zkapps/voting/membership.ts index 3210fb39cb..ea487a6a83 100644 --- a/src/examples/zkapps/voting/membership.ts +++ b/src/examples/zkapps/voting/membership.ts @@ -1,3 +1,8 @@ +/* + * Warning: The reducer API in o1js is currently not safe to use in production applications. The `reduce()` + * method breaks if more than the hard-coded number (default: 32) of actions are pending. Work is actively + * in progress to mitigate this limitation. + */ import { Field, SmartContract, From 4077d3a393d7f042ca818f48e736c8877e45384e Mon Sep 17 00:00:00 2001 From: ymekuria Date: Mon, 8 Jul 2024 23:46:26 -0700 Subject: [PATCH 14/18] docs(voting.ts): add warning comment about the current limitations of the reducer API in o1js to inform developers about potential issues in production applications --- src/examples/zkapps/voting/voting.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/examples/zkapps/voting/voting.ts b/src/examples/zkapps/voting/voting.ts index f68157cdfd..eb42e5020f 100644 --- a/src/examples/zkapps/voting/voting.ts +++ b/src/examples/zkapps/voting/voting.ts @@ -1,3 +1,8 @@ +/* + * Warning: The reducer API in o1js is currently not safe to use in production applications. The `reduce()` + * method breaks if more than the hard-coded number (default: 32) of actions are pending. Work is actively + * in progress to mitigate this limitation. + */ import { Field, SmartContract, From bc50f5f0992be23cb043619c2224286b133e9844 Mon Sep 17 00:00:00 2001 From: ymekuria Date: Tue, 9 Jul 2024 00:03:03 -0700 Subject: [PATCH 15/18] refactor(map.ts): format warning message --- src/examples/zkapps/reducer/map.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/examples/zkapps/reducer/map.ts b/src/examples/zkapps/reducer/map.ts index fd0d404944..23ffde3495 100644 --- a/src/examples/zkapps/reducer/map.ts +++ b/src/examples/zkapps/reducer/map.ts @@ -22,7 +22,7 @@ In this example, the keys are public keys, and the values are arbitrary field el This utilizes the `Reducer` as an append online list of actions, which are then looked at to find the value corresponding to a specific key. -Warning: The reducer API in o1js is currently not safe to use in production applications. The reduce() +Warning: The reducer API in o1js is currently not safe to use in production applications. The `reduce()` method breaks if more than the hard-coded number (default: 32) of actions are pending. Work is actively in progress to mitigate this limitation. From 958f95b2f1d27dbdae60e6ddddae7adb662c61a7 Mon Sep 17 00:00:00 2001 From: ymekuria Date: Tue, 9 Jul 2024 01:50:10 -0700 Subject: [PATCH 16/18] Revert "refactor(map.ts): format warning message" This reverts commit bc50f5f0992be23cb043619c2224286b133e9844. --- src/examples/zkapps/reducer/map.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/examples/zkapps/reducer/map.ts b/src/examples/zkapps/reducer/map.ts index 23ffde3495..fd0d404944 100644 --- a/src/examples/zkapps/reducer/map.ts +++ b/src/examples/zkapps/reducer/map.ts @@ -22,7 +22,7 @@ In this example, the keys are public keys, and the values are arbitrary field el This utilizes the `Reducer` as an append online list of actions, which are then looked at to find the value corresponding to a specific key. -Warning: The reducer API in o1js is currently not safe to use in production applications. The `reduce()` +Warning: The reducer API in o1js is currently not safe to use in production applications. The reduce() method breaks if more than the hard-coded number (default: 32) of actions are pending. Work is actively in progress to mitigate this limitation. From 1c762cfe6cbc9ea277cbcf892c9bc562afc4d7b9 Mon Sep 17 00:00:00 2001 From: ymekuria Date: Tue, 9 Jul 2024 10:56:16 -0700 Subject: [PATCH 17/18] chore(CHANGELOG): update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d4d55df0a..1e820285cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,8 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ### Added +- Warning about the current reducer API limitations, as well as a mention of active work to mitigate them added to doc comments and examples https://github.com/o1-labs/o1js/pull/1728 + - `ForeignField`-based representation of scalars via `ScalarField` https://github.com/o1-labs/o1js/pull/1705 - Introduced new V2 methods for nullifier operations: `isUnusedV2()`, `assertUnusedV2()`, and `setUsedV2()` https://github.com/o1-labs/o1js/pull/1715 From 1c736add4ac2b9a82118ed5f203dac0ac1304eee Mon Sep 17 00:00:00 2001 From: ymekuria Date: Tue, 9 Jul 2024 13:13:16 -0700 Subject: [PATCH 18/18] chore(CHANGELOG.md): update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e820285cc..8c2e405b87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ### Added -- Warning about the current reducer API limitations, as well as a mention of active work to mitigate them added to doc comments and examples https://github.com/o1-labs/o1js/pull/1728 +- A warning about the current reducer API limitations, as well as a mention of active work to mitigate them was added to doc comments and examples https://github.com/o1-labs/o1js/pull/1728 - `ForeignField`-based representation of scalars via `ScalarField` https://github.com/o1-labs/o1js/pull/1705 - Introduced new V2 methods for nullifier operations: `isUnusedV2()`, `assertUnusedV2()`, and `setUsedV2()` https://github.com/o1-labs/o1js/pull/1715