Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
b9c5c37
increase app state size
Geometer1729 Jun 17, 2025
f2d3c64
update proof cache
Geometer1729 Jul 2, 2025
95a0b5f
update blockchain_snakr_vk.json
Geometer1729 Jul 2, 2025
6fa95e3
use const
Geometer1729 Jul 2, 2025
a869580
fix two 8s I missed
Geometer1729 Jul 3, 2025
294b152
Move code from comment to script and regenerate transaction hash
Geometer1729 Jul 3, 2025
d39f287
reformat
Geometer1729 Jul 3, 2025
17409aa
regenerate proof caches again
Geometer1729 Jul 3, 2025
2b352da
Fix more 8s
Geometer1729 Jul 3, 2025
4621eee
fix jsons
Geometer1729 Jul 3, 2025
7fd6c67
fix another json list
Geometer1729 Jul 7, 2025
6a89335
add changelog
Geometer1729 Jul 9, 2025
2c89a73
regenerate archive
Geometer1729 Jul 9, 2025
fc7d268
delete regeneration script provided by other PR
Geometer1729 Jul 11, 2025
1ffbec6
comment out hetzner-itn-1-1795.json tests and fix regtest-devnet tests
Geometer1729 Jul 11, 2025
8091761
Merge branch 'brian/increment-versions' into brian/app-state32
Geometer1729 Jul 21, 2025
d0f0e89
Merge branch 'brian/increment-versions' into brian/app-state32
Geometer1729 Jul 21, 2025
b4b38a7
Merge branch 'brian/increment-versions' into brian/app-state32
Geometer1729 Jul 24, 2025
8107e0f
Increase Events & Actions limit: 100->1024
glyh Jul 25, 2025
6ec4cc6
Account update > Body: split Events' -> Events' and Actions', let the
glyh Jul 25, 2025
b63201c
clarify TODO
Geometer1729 Jul 25, 2025
b09b6dd
Account Update: document why we're still setting bounds on per event/…
glyh Jul 30, 2025
4fcbfff
Merge remote-tracking branch 'origin/lyh/bump-events-actions-limit-10…
glyh Oct 30, 2025
c52c4d3
Zkapp Command: use new constraint for valid Zkapp Command. Remove
glyh Jun 11, 2025
25cd6c2
Unconfigurable Constants: remove outdated comment info on zkapp comma…
glyh Jun 18, 2025
3996a54
Merge branch 'lyh/breaking/raise-zkapp-update-limit' into lyh/mesa-te…
glyh Nov 4, 2025
e96bc28
Merge branch 'lyh/compat-into-dev-nov4-2025' into lyh/mesa-testing
glyh Nov 4, 2025
0064b4e
Merge remote-tracking branch 'origin/develop' into lyh/mesa-testing
glyh Nov 4, 2025
c5d5bb1
Update protocol version to 4.0.0 for Mesa
cjjdespres Nov 4, 2025
da5f006
Decrease compiled-config slot time to 90s
cjjdespres Nov 4, 2025
2bebe6d
Decrease compiled config coinbase from 720 to 360
cjjdespres Nov 4, 2025
1dc5369
Merge remote-tracking branch 'origin/develop' into lyh/app-state-size…
glyh Nov 5, 2025
e7bfcab
Merge remote-tracking branch 'origin/cjjdespres/bump-protocol-version…
glyh Nov 5, 2025
781c759
print_block_chian_snark_vk test: update hardcoded VK json as we've bu…
glyh Nov 5, 2025
59cac40
Merge branch 'lyh/app-state-size32-dev' into lyh/mesa-testing. Additi…
glyh Nov 6, 2025
6091588
Merge remote-tracking branch 'origin/cjjdespres/default-slot-time-90s…
glyh Nov 6, 2025
239439e
Mina_base > Permissions: bump txnVersion in unit test "json"
glyh Nov 6, 2025
7fba2a6
block reward test: read coinbase from constraint constant instead of …
glyh Nov 6, 2025
b4d0e0f
Run `scripts/regenerate-proof-cache.sh` to patch failing
glyh Nov 6, 2025
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
3 changes: 3 additions & 0 deletions changes/17462.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# PR #17462 Increase the App state to 32

Increase the app state size from 8 to 32
48 changes: 48 additions & 0 deletions src/app/archive/create_schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,30 @@ CREATE TABLE zkapp_states_nullable
, element5 int REFERENCES zkapp_field(id)
, element6 int REFERENCES zkapp_field(id)
, element7 int REFERENCES zkapp_field(id)
, element8 int REFERENCES zkapp_field(id)
, element9 int REFERENCES zkapp_field(id)
, element10 int REFERENCES zkapp_field(id)
, element11 int REFERENCES zkapp_field(id)
, element12 int REFERENCES zkapp_field(id)
, element13 int REFERENCES zkapp_field(id)
, element14 int REFERENCES zkapp_field(id)
, element15 int REFERENCES zkapp_field(id)
, element16 int REFERENCES zkapp_field(id)
, element17 int REFERENCES zkapp_field(id)
, element18 int REFERENCES zkapp_field(id)
, element19 int REFERENCES zkapp_field(id)
, element20 int REFERENCES zkapp_field(id)
, element21 int REFERENCES zkapp_field(id)
, element22 int REFERENCES zkapp_field(id)
, element23 int REFERENCES zkapp_field(id)
, element24 int REFERENCES zkapp_field(id)
, element25 int REFERENCES zkapp_field(id)
, element26 int REFERENCES zkapp_field(id)
, element27 int REFERENCES zkapp_field(id)
, element28 int REFERENCES zkapp_field(id)
, element29 int REFERENCES zkapp_field(id)
, element30 int REFERENCES zkapp_field(id)
, element31 int REFERENCES zkapp_field(id)
);

/* like zkapp_states_nullable, but elements are not NULL */
Expand All @@ -163,6 +187,30 @@ CREATE TABLE zkapp_states
, element5 int NOT NULL REFERENCES zkapp_field(id)
, element6 int NOT NULL REFERENCES zkapp_field(id)
, element7 int NOT NULL REFERENCES zkapp_field(id)
, element8 int NOT NULL REFERENCES zkapp_field(id)
, element9 int NOT NULL REFERENCES zkapp_field(id)
, element10 int NOT NULL REFERENCES zkapp_field(id)
, element11 int NOT NULL REFERENCES zkapp_field(id)
, element12 int NOT NULL REFERENCES zkapp_field(id)
, element13 int NOT NULL REFERENCES zkapp_field(id)
, element14 int NOT NULL REFERENCES zkapp_field(id)
, element15 int NOT NULL REFERENCES zkapp_field(id)
, element16 int NOT NULL REFERENCES zkapp_field(id)
, element17 int NOT NULL REFERENCES zkapp_field(id)
, element18 int NOT NULL REFERENCES zkapp_field(id)
, element19 int NOT NULL REFERENCES zkapp_field(id)
, element20 int NOT NULL REFERENCES zkapp_field(id)
, element21 int NOT NULL REFERENCES zkapp_field(id)
, element22 int NOT NULL REFERENCES zkapp_field(id)
, element23 int NOT NULL REFERENCES zkapp_field(id)
, element24 int NOT NULL REFERENCES zkapp_field(id)
, element25 int NOT NULL REFERENCES zkapp_field(id)
, element26 int NOT NULL REFERENCES zkapp_field(id)
, element27 int NOT NULL REFERENCES zkapp_field(id)
, element28 int NOT NULL REFERENCES zkapp_field(id)
, element29 int NOT NULL REFERENCES zkapp_field(id)
, element30 int NOT NULL REFERENCES zkapp_field(id)
, element31 int NOT NULL REFERENCES zkapp_field(id)
);

/* like zkapp_states, but for action states */
Expand Down
2 changes: 1 addition & 1 deletion src/app/print_blockchain_snark_vk/blockchain_snark_vk.json

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions src/app/test_executive/block_reward_test.ml
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@ module Make (Inputs : Intf.Test.Inputs_intf) = struct
(Wait_condition.nodes_to_initialize
(Core.String.Map.data all_mina_nodes) )
in
let constraint_constants = Network.constraint_constants network in
let node = Network.block_producer_exn network "node" in
let bp_keypair = (Network.genesis_keypair_exn network "node-key").keypair in
let bp_pk = bp_keypair.public_key |> Signature_lib.Public_key.compress in
let bp_pk_account_id = Account_id.create bp_pk Token_id.default in
let bp_original_balance = Currency.Amount.of_mina_string_exn "1000" in
let coinbase_reward = Currency.Amount.of_mina_string_exn "720" in
let%bind () =
section_hard "wait for 1 block to be produced"
(wait_for t (Wait_condition.blocks_to_be_produced 1))
Expand All @@ -58,7 +58,8 @@ module Make (Inputs : Intf.Test.Inputs_intf) = struct
test_constants.coinbase_amount for whatever reason, so hardcoding this
until that is fixed *)
let bp_expected =
Currency.Amount.add bp_original_balance coinbase_reward
Currency.Amount.add bp_original_balance
constraint_constants.coinbase_amount
|> Option.value_exn
in
[%log info] "bp_expected: %s"
Expand Down
28 changes: 16 additions & 12 deletions src/app/zkapp_limits/zkapp_limits.ml
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,35 @@
open Core_kernel

let main () =
let genesis_constants = Genesis_constants.Compiled.genesis_constants in
let cost_limit = genesis_constants.zkapp_transaction_cost_limit in
let max_event_elements = genesis_constants.max_event_elements in
let max_action_elements = genesis_constants.max_action_elements in
let values = List.init 20 ~f:Fn.id in
let Genesis_constants.
{ max_event_elements
; max_action_elements
; max_zkapp_segment_per_transaction
; _
} =
Genesis_constants.Compiled.genesis_constants
in
let values = List.init (1 + max_zkapp_segment_per_transaction) ~f:Fn.id in
printf "max field elements for events per transaction: %d\n"
max_event_elements ;
printf "max field elements for actions per transaction: %d\n"
max_action_elements ;
printf "All possible zkApp account update combinations:\n" ;
List.iter values ~f:(fun proofs ->
List.iter values ~f:(fun proof_segments ->
List.iter values ~f:(fun signed_single_segments ->
List.iter values ~f:(fun signed_pair_segments ->
let cost =
Mina_base.Zkapp_command.zkapp_cost ~proof_segments:proofs
Mina_base.Zkapp_command.zkapp_cost ~proof_segments
~signed_single_segments ~signed_pair_segments
~genesis_constants ()
in
if Float.(cost <. cost_limit) then
if cost <= max_zkapp_segment_per_transaction then
printf
"Proofs updates=%d Signed/None updates=%d Pairs of \
Signed/None updates=%d: Total account updates: %d Cost: %f \n\
Signed/None updates=%d: Total account updates: %d Cost: %d \n\
%!"
proofs signed_single_segments signed_pair_segments
(proofs + signed_single_segments + (signed_pair_segments * 2))
proof_segments signed_single_segments signed_pair_segments
( proof_segments + signed_single_segments
+ (signed_pair_segments * 2) )
cost ) ) )

let () = main ()
6 changes: 3 additions & 3 deletions src/config/devnet.mlh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@


(*BEGIN src/config/coinbase/realistic.mlh*)
[%%define coinbase "720"]
[%%define coinbase "360"]
(*END src/config/coinbase/realistic.mlh*)


Expand Down Expand Up @@ -57,7 +57,7 @@
[%%define plugins false]
[%%define genesis_ledger "testnet_postake"]
[%%define genesis_state_timestamp "2021-09-24T00:00:00Z"]
[%%define block_window_duration 180000]
[%%define block_window_duration 90000]
[%%define print_versioned_types false]
[%%define test_full_epoch false]

Expand All @@ -81,4 +81,4 @@

(* Constants determining sync ledger query/response size*)
[%%define sync_ledger_max_subtree_depth 8]
[%%define sync_ledger_default_subtree_depth 6]
[%%define sync_ledger_default_subtree_depth 6]
2 changes: 1 addition & 1 deletion src/config/lightnet.mlh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@


(*BEGIN src/config/coinbase/realistic.mlh*)
[%%define coinbase "720"]
[%%define coinbase "360"]
(*END src/config/coinbase/realistic.mlh*)


Expand Down
4 changes: 2 additions & 2 deletions src/config/mainnet.mlh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@


(*BEGIN src/config/coinbase/realistic.mlh*)
[%%define coinbase "720"]
[%%define coinbase "360"]
(*END src/config/coinbase/realistic.mlh*)


Expand Down Expand Up @@ -57,7 +57,7 @@
[%%define plugins false]
[%%define genesis_ledger "testnet_postake"]
[%%define genesis_state_timestamp "2020-09-16 03:15:00-07:00"]
[%%define block_window_duration 180000]
[%%define block_window_duration 90000]
[%%define print_versioned_types false]
[%%define test_full_epoch false]

Expand Down
16 changes: 7 additions & 9 deletions src/lib/genesis_constants/genesis_constants.ml
Original file line number Diff line number Diff line change
Expand Up @@ -215,10 +215,11 @@ module T = struct
{ protocol : Protocol.Stable.Latest.t
; txpool_max_size : int
; num_accounts : int option
; zkapp_proof_update_cost : float
; zkapp_signed_single_update_cost : float
; zkapp_signed_pair_update_cost : float
; zkapp_transaction_cost_limit : float
; max_zkapp_segment_per_transaction : int
(** The maximum number of segments allowed per zkapp command. A
segment is either: a proof, a signed single update, or a signed
pair update. Transactions with a number of segments equal to this
limit are valid. *)
; max_event_elements : int
; max_action_elements : int
; zkapp_cmd_limit_hardcap : int
Expand Down Expand Up @@ -425,11 +426,8 @@ module Make (Node_config : Node_config_intf.S) : S = struct
}
; txpool_max_size = pool_max_size
; num_accounts = None
; zkapp_proof_update_cost = Node_config.zkapp_proof_update_cost
; zkapp_signed_single_update_cost =
Node_config.zkapp_signed_single_update_cost
; zkapp_signed_pair_update_cost = Node_config.zkapp_signed_pair_update_cost
; zkapp_transaction_cost_limit = Node_config.zkapp_transaction_cost_limit
; max_zkapp_segment_per_transaction =
Node_config.max_zkapp_segment_per_transaction
; max_event_elements = Node_config.max_event_elements
; max_action_elements = Node_config.max_action_elements
; zkapp_cmd_limit_hardcap = Node_config.zkapp_cmd_limit_hardcap
Expand Down
17 changes: 4 additions & 13 deletions src/lib/genesis_ledger_helper/lib/genesis_ledger_helper_lib.ml
Original file line number Diff line number Diff line change
Expand Up @@ -563,18 +563,9 @@ let make_genesis_constants ~logger ~(default : Genesis_constants.t)
; txpool_max_size =
Option.value ~default:default.txpool_max_size
(config.daemon >>= fun cfg -> cfg.txpool_max_size)
; zkapp_proof_update_cost =
Option.value ~default:default.zkapp_proof_update_cost
(config.daemon >>= fun cfg -> cfg.zkapp_proof_update_cost)
; zkapp_signed_single_update_cost =
Option.value ~default:default.zkapp_signed_single_update_cost
(config.daemon >>= fun cfg -> cfg.zkapp_signed_single_update_cost)
; zkapp_signed_pair_update_cost =
Option.value ~default:default.zkapp_signed_pair_update_cost
(config.daemon >>= fun cfg -> cfg.zkapp_signed_pair_update_cost)
; zkapp_transaction_cost_limit =
Option.value ~default:default.zkapp_transaction_cost_limit
(config.daemon >>= fun cfg -> cfg.zkapp_transaction_cost_limit)
; max_zkapp_segment_per_transaction =
Option.value ~default:default.max_zkapp_segment_per_transaction
(config.daemon >>= fun cfg -> cfg.max_zkapp_segment_per_transaction)
; max_event_elements =
Option.value ~default:default.max_event_elements
(config.daemon >>= fun cfg -> cfg.max_event_elements)
Expand Down Expand Up @@ -647,7 +638,7 @@ let%test_module "Runtime config" =
sprintf
{json| {"accounts": [ { "pk": "%s",
"balance": "1087.37",
"zkapp": { "app_state": [ "14", "0", "0", "0", "0", "0", "0", "0" ],
"zkapp": { "app_state": [ "14", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" ],
"verification_key": null,
"zkapp_version": "0",
"action_state": [ "0", "0", "0", "0", "0" ],
Expand Down
36 changes: 29 additions & 7 deletions src/lib/mina_base/account_update.ml
Original file line number Diff line number Diff line change
Expand Up @@ -1087,13 +1087,35 @@ module Body = struct
let hash_fold_array f init x = Array.fold ~init ~f x

module Events' = struct
(* NOTE: in the "Increase events&actions Limit MIP", we claimed that the
limit is unbounded, the reason we're still using [Bounded_types.ArrayN],
lies in that the serialization of this type is a bit different from a
normal array. Setting the array size limit to [max_event_elements] remove
the limit on event level in practice. Same goes for types in[Actions']. *)
module Bounded = Mina_stdlib.Bounded_types.ArrayN (struct
let max_array_len = Node_config.max_event_elements
end)

[%%versioned
module Stable = struct
module V1 = struct
type t =
Pickles.Backend.Tick.Field.Stable.V1.t
Mina_stdlib.Bounded_types.ArrayN16.Stable.V1.t
list
type t = Pickles.Backend.Tick.Field.Stable.V1.t Bounded.Stable.V1.t list
[@@deriving sexp, equal, hash, compare, yojson]

let to_latest = Fn.id
end
end]
end

module Actions' = struct
module Bounded = Mina_stdlib.Bounded_types.ArrayN (struct
let max_array_len = Node_config.max_action_elements
end)

[%%versioned
module Stable = struct
module V1 = struct
type t = Pickles.Backend.Tick.Field.Stable.V1.t Bounded.Stable.V1.t list
[@@deriving sexp, equal, hash, compare, yojson]

let to_latest = Fn.id
Expand All @@ -1113,7 +1135,7 @@ module Body = struct
(Amount.Stable.V1.t, Sgn.Stable.V1.t) Signed_poly.Stable.V1.t
; increment_nonce : bool
; events : Events'.Stable.V1.t
; actions : Events'.Stable.V1.t
; actions : Actions'.Stable.V1.t
; call_data : Pickles.Backend.Tick.Field.Stable.V1.t
; call_depth : int
; preconditions : Preconditions.Stable.V2.t
Expand Down Expand Up @@ -1171,7 +1193,7 @@ module Body = struct
(Amount.Stable.V1.t, Sgn.Stable.V1.t) Signed_poly.Stable.V1.t
; increment_nonce : bool
; events : Events'.Stable.V1.t
; actions : Events'.Stable.V1.t
; actions : Actions'.Stable.V1.t
; call_data : Pickles.Backend.Tick.Field.Stable.V1.t
; call_depth : int
; preconditions : Preconditions.Stable.V2.t
Expand All @@ -1198,7 +1220,7 @@ module Body = struct
(Amount.Stable.V1.t, Sgn.Stable.V1.t) Signed_poly.Stable.V1.t
; increment_nonce : bool
; events : Events'.Stable.V1.t
; actions : Events'.Stable.V1.t
; actions : Actions'.Stable.V1.t
; call_data : Pickles.Backend.Tick.Field.Stable.V1.t
; preconditions : Preconditions.Stable.V2.t
; use_full_commitment : bool
Expand Down
2 changes: 1 addition & 1 deletion src/lib/mina_base/permissions.ml
Original file line number Diff line number Diff line change
Expand Up @@ -649,7 +649,7 @@ let%test_unit "json value" =
setPermissions: "Signature",
setVerificationKey: {
auth: "Signature",
txnVersion: "3"
txnVersion: "4"
},
setZkappUri: "Signature",
editActionState: "Signature",
Expand Down
2 changes: 1 addition & 1 deletion src/lib/mina_base/test/account_update_test.ml
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ let precondition_to_json () =
balance: null,
nonce: {lower: "34928", upper: "34928"},
receiptChainHash: null, delegate: null,
state: [null,null,null,null,null,null,null,null],
state: [null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],
actionState: null, provedState: null, isNew: null
}|json}
|> Yojson.Safe.from_string |> Yojson.Safe.to_string )
Expand Down
Loading