From 4ac50498bd483fa29b88b47e4c97ddf8b554dc07 Mon Sep 17 00:00:00 2001 From: Florian Date: Mon, 30 Oct 2023 15:29:53 +0100 Subject: [PATCH 1/9] bump bindings --- src/bindings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bindings b/src/bindings index 864cb03859..0d36b882ae 160000 --- a/src/bindings +++ b/src/bindings @@ -1 +1 @@ -Subproject commit 864cb038593cdad62ce7101990050f03b9d261be +Subproject commit 0d36b882ae8942dedd1506c1c9c3dbc6981ec7db From 7268251f0f0c48f855dba6ef807e67504cc78c4c Mon Sep 17 00:00:00 2001 From: Florian Date: Mon, 30 Oct 2023 15:30:23 +0100 Subject: [PATCH 2/9] add txnVersion to verification key permission --- src/lib/account_update.ts | 37 +++++++++++++++---- src/lib/mina.ts | 5 ++- src/lib/mina/account.ts | 5 ++- src/mina-signer/src/sign-zkapp-command.ts | 2 + .../src/test-vectors/accountUpdate.ts | 5 ++- 5 files changed, 44 insertions(+), 10 deletions(-) diff --git a/src/lib/account_update.ts b/src/lib/account_update.ts index c1518b1cfa..930ad181af 100644 --- a/src/lib/account_update.ts +++ b/src/lib/account_update.ts @@ -26,7 +26,11 @@ import { } from '../bindings/mina-transaction/transaction-leaves.js'; import { TokenId as Base58TokenId } from './base58-encodings.js'; import { hashWithPrefix, packToFields } from './hash.js'; -import { mocks, prefixes } from '../bindings/crypto/constants.js'; +import { + mocks, + prefixes, + protocolVersions, +} from '../bindings/crypto/constants.js'; import { Context } from './global-context.js'; import { assert } from './errors.js'; import { MlArray } from './ml/base.js'; @@ -63,6 +67,10 @@ export { const ZkappStateLength = 8; +const TxnVersion = { + current: () => UInt32.from(512), +}; + type SmartContractContext = { this: SmartContract; methodCallDepth: number; @@ -199,7 +207,10 @@ interface Permissions extends Permissions_ { * key associated with the circuit tied to this account. Effectively * "upgradeability" of the smart contract. */ - setVerificationKey: Permission; + setVerificationKey: { + auth: Permission; + txnVersion: UInt32; + }; /** * The {@link Permission} corresponding to the ability to set the zkapp uri @@ -265,7 +276,10 @@ let Permissions = { receive: Permission.none(), setDelegate: Permission.signature(), setPermissions: Permission.signature(), - setVerificationKey: Permission.signature(), + setVerificationKey: { + auth: Permission.signature(), + txnVersion: TxnVersion.current(), + }, setZkappUri: Permission.signature(), editActionState: Permission.proof(), setTokenSymbol: Permission.signature(), @@ -281,7 +295,10 @@ let Permissions = { receive: Permission.none(), setDelegate: Permission.signature(), setPermissions: Permission.signature(), - setVerificationKey: Permission.signature(), + setVerificationKey: { + auth: Permission.signature(), + txnVersion: TxnVersion.current(), + }, setZkappUri: Permission.signature(), editActionState: Permission.signature(), setTokenSymbol: Permission.signature(), @@ -298,7 +315,10 @@ let Permissions = { access: Permission.none(), setDelegate: Permission.none(), setPermissions: Permission.none(), - setVerificationKey: Permission.none(), + setVerificationKey: { + auth: Permission.signature(), + txnVersion: TxnVersion.current(), + }, setZkappUri: Permission.none(), editActionState: Permission.none(), setTokenSymbol: Permission.none(), @@ -314,7 +334,10 @@ let Permissions = { access: Permission.impossible(), setDelegate: Permission.impossible(), setPermissions: Permission.impossible(), - setVerificationKey: Permission.impossible(), + setVerificationKey: { + auth: Permission.signature(), + txnVersion: TxnVersion.current(), + }, setZkappUri: Permission.impossible(), editActionState: Permission.impossible(), setTokenSymbol: Permission.impossible(), @@ -350,7 +373,7 @@ let Permissions = { return Object.fromEntries( Object.entries(permissions).map(([k, v]) => [ k, - Permissions.fromString(v), + Permissions.fromString(typeof v === 'string' ? v : v.auth), ]) ) as unknown as Permissions; }, diff --git a/src/lib/mina.ts b/src/lib/mina.ts index 505d917d04..3f264976a0 100644 --- a/src/lib/mina.ts +++ b/src/lib/mina.ts @@ -300,6 +300,9 @@ function newTransaction(transaction: ZkappCommand, proofsEnabled?: boolean) { let self: Transaction = { transaction, sign(additionalKeys?: PrivateKey[]) { + self.transaction.accountUpdates.forEach( + (a) => (a.body.callData = Field(5)) + ); self.transaction = addMissingSignatures(self.transaction, additionalKeys); return self; }, @@ -1280,7 +1283,7 @@ async function verifyAccountUpdate( case 'delegate': return perm.setDelegate; case 'verificationKey': - return perm.setVerificationKey; + return perm.setVerificationKey.auth; case 'permissions': return perm.setPermissions; case 'zkappUri': diff --git a/src/lib/mina/account.ts b/src/lib/mina/account.ts index c45d38587b..0969bedde3 100644 --- a/src/lib/mina/account.ts +++ b/src/lib/mina/account.ts @@ -44,7 +44,10 @@ type FetchedAccount = { receive: AuthRequired; setDelegate: AuthRequired; setPermissions: AuthRequired; - setVerificationKey: AuthRequired; + setVerificationKey: { + auth: AuthRequired; + txnVersion: string; + }; setZkappUri: AuthRequired; editActionState: AuthRequired; setTokenSymbol: AuthRequired; diff --git a/src/mina-signer/src/sign-zkapp-command.ts b/src/mina-signer/src/sign-zkapp-command.ts index 69578ed193..43e13b08ca 100644 --- a/src/mina-signer/src/sign-zkapp-command.ts +++ b/src/mina-signer/src/sign-zkapp-command.ts @@ -119,6 +119,8 @@ function transactionCommitments(zkappCommand: ZkappCommand) { feePayerDigest, commitment, ]); + console.log('commitment', commitment); + console.log('fullCommitment', fullCommitment); return { commitment, fullCommitment }; } diff --git a/src/mina-signer/src/test-vectors/accountUpdate.ts b/src/mina-signer/src/test-vectors/accountUpdate.ts index cb8817b9d4..76eaaa662b 100644 --- a/src/mina-signer/src/test-vectors/accountUpdate.ts +++ b/src/mina-signer/src/test-vectors/accountUpdate.ts @@ -19,7 +19,10 @@ let accountUpdateExample: Json.AccountUpdate = { receive: 'Proof', setDelegate: 'Signature', setPermissions: 'None', - setVerificationKey: 'None', + setVerificationKey: { + auth: 'None', + txnVersion: '3', + }, setZkappUri: 'Signature', editActionState: 'Proof', setTokenSymbol: 'Signature', From 326208ab9a7ec7e5077c2bf077deacd18c62d8bc Mon Sep 17 00:00:00 2001 From: Florian Date: Mon, 30 Oct 2023 16:24:40 +0100 Subject: [PATCH 3/9] add generated constant --- src/lib/account_update.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/account_update.ts b/src/lib/account_update.ts index 930ad181af..fe5cf41e4c 100644 --- a/src/lib/account_update.ts +++ b/src/lib/account_update.ts @@ -68,7 +68,7 @@ export { const ZkappStateLength = 8; const TxnVersion = { - current: () => UInt32.from(512), + current: () => UInt32.from(protocolVersions.txnVersion), }; type SmartContractContext = { From 84d969cdddae66cb55045b025f5c1a44b3dec888 Mon Sep 17 00:00:00 2001 From: Florian Date: Mon, 30 Oct 2023 16:25:33 +0100 Subject: [PATCH 4/9] remove debug code --- src/lib/mina.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/lib/mina.ts b/src/lib/mina.ts index 3f264976a0..e115ef7f12 100644 --- a/src/lib/mina.ts +++ b/src/lib/mina.ts @@ -300,9 +300,6 @@ function newTransaction(transaction: ZkappCommand, proofsEnabled?: boolean) { let self: Transaction = { transaction, sign(additionalKeys?: PrivateKey[]) { - self.transaction.accountUpdates.forEach( - (a) => (a.body.callData = Field(5)) - ); self.transaction = addMissingSignatures(self.transaction, additionalKeys); return self; }, From d4f6252681affcf73ded88b4e454ad581324bcad Mon Sep 17 00:00:00 2001 From: Florian Date: Mon, 30 Oct 2023 17:47:57 +0100 Subject: [PATCH 5/9] add custom js deriver --- src/bindings | 2 +- src/lib/account_update.ts | 1 + src/lib/account_update.unit-test.ts | 2 ++ src/lib/testing/random.ts | 2 ++ src/mina-signer/src/sign-zkapp-command.ts | 2 -- 5 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/bindings b/src/bindings index 0d36b882ae..3809752bc4 160000 --- a/src/bindings +++ b/src/bindings @@ -1 +1 @@ -Subproject commit 0d36b882ae8942dedd1506c1c9c3dbc6981ec7db +Subproject commit 3809752bc43a77d18f7a67eaddf7ea0671312c60 diff --git a/src/lib/account_update.ts b/src/lib/account_update.ts index fe5cf41e4c..a416fd1772 100644 --- a/src/lib/account_update.ts +++ b/src/lib/account_update.ts @@ -718,6 +718,7 @@ class AccountUpdate implements Types.AccountUpdate { this, isSelf ); + this.account = account; this.network = network; this.currentSlot = currentSlot; diff --git a/src/lib/account_update.unit-test.ts b/src/lib/account_update.unit-test.ts index a280b22712..ed35a7ceef 100644 --- a/src/lib/account_update.unit-test.ts +++ b/src/lib/account_update.unit-test.ts @@ -30,6 +30,8 @@ function createAccountUpdate() { // convert accountUpdate to fields in pure JS, leveraging generated code let fields2 = Types.AccountUpdate.toFields(accountUpdate); + console.log(json); + // this is useful console output in the case the test should fail if (fields1.length !== fields2.length) { console.log( diff --git a/src/lib/testing/random.ts b/src/lib/testing/random.ts index b334f61523..c23d52589a 100644 --- a/src/lib/testing/random.ts +++ b/src/lib/testing/random.ts @@ -135,6 +135,7 @@ const Generators: Generators = { null: constant(null), string: base58(nat(50)), // TODO replace various strings, like signature, with parsed types number: nat(3), + TransactionVersion: uint32, }; let typeToBigintGenerator = new Map, Random>( [TypeMap, PrimitiveMap, customTypes] @@ -238,6 +239,7 @@ const JsonGenerators: JsonGenerators = { null: constant(null), string: base58(nat(50)), number: nat(3), + TransactionVersion: json_.uint32, }; let typeToJsonGenerator = new Map, Random>( [TypeMap, PrimitiveMap, customTypes] diff --git a/src/mina-signer/src/sign-zkapp-command.ts b/src/mina-signer/src/sign-zkapp-command.ts index 43e13b08ca..69578ed193 100644 --- a/src/mina-signer/src/sign-zkapp-command.ts +++ b/src/mina-signer/src/sign-zkapp-command.ts @@ -119,8 +119,6 @@ function transactionCommitments(zkappCommand: ZkappCommand) { feePayerDigest, commitment, ]); - console.log('commitment', commitment); - console.log('fullCommitment', fullCommitment); return { commitment, fullCommitment }; } From 4de770dc5442720740640762517af0ab7e4f94a5 Mon Sep 17 00:00:00 2001 From: Florian Date: Tue, 31 Oct 2023 14:14:48 +0100 Subject: [PATCH 6/9] add TransactionVersion --- src/index.ts | 1 + src/lib/account_update.ts | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/index.ts b/src/index.ts index 0813d3da4d..5e684ddb03 100644 --- a/src/index.ts +++ b/src/index.ts @@ -51,6 +51,7 @@ export { AccountUpdate, Permissions, ZkappPublicInput, + TransactionVersion, } from './lib/account_update.js'; export type { TransactionStatus } from './lib/fetch.js'; diff --git a/src/lib/account_update.ts b/src/lib/account_update.ts index a416fd1772..ac94a8f091 100644 --- a/src/lib/account_update.ts +++ b/src/lib/account_update.ts @@ -39,7 +39,7 @@ import { MlFieldConstArray } from './ml/fields.js'; import { transactionCommitments } from '../mina-signer/src/sign-zkapp-command.js'; // external API -export { AccountUpdate, Permissions, ZkappPublicInput }; +export { AccountUpdate, Permissions, ZkappPublicInput, TransactionVersion }; // internal API export { smartContractContext, @@ -67,7 +67,7 @@ export { const ZkappStateLength = 8; -const TxnVersion = { +const TransactionVersion = { current: () => UInt32.from(protocolVersions.txnVersion), }; @@ -278,7 +278,7 @@ let Permissions = { setPermissions: Permission.signature(), setVerificationKey: { auth: Permission.signature(), - txnVersion: TxnVersion.current(), + txnVersion: TransactionVersion.current(), }, setZkappUri: Permission.signature(), editActionState: Permission.proof(), @@ -297,7 +297,7 @@ let Permissions = { setPermissions: Permission.signature(), setVerificationKey: { auth: Permission.signature(), - txnVersion: TxnVersion.current(), + txnVersion: TransactionVersion.current(), }, setZkappUri: Permission.signature(), editActionState: Permission.signature(), @@ -317,7 +317,7 @@ let Permissions = { setPermissions: Permission.none(), setVerificationKey: { auth: Permission.signature(), - txnVersion: TxnVersion.current(), + txnVersion: TransactionVersion.current(), }, setZkappUri: Permission.none(), editActionState: Permission.none(), @@ -336,7 +336,7 @@ let Permissions = { setPermissions: Permission.impossible(), setVerificationKey: { auth: Permission.signature(), - txnVersion: TxnVersion.current(), + txnVersion: TransactionVersion.current(), }, setZkappUri: Permission.impossible(), editActionState: Permission.impossible(), From ec32d2a639298f31b5589ce1395757484e2ed3d5 Mon Sep 17 00:00:00 2001 From: Florian Date: Tue, 31 Oct 2023 14:15:13 +0100 Subject: [PATCH 7/9] adjust examples to work with minimal solution --- src/bindings | 2 +- src/examples/zkapps/dex/upgradability.ts | 6 +++++- src/examples/zkapps/voting/dummyContract.ts | 6 +++++- src/examples/zkapps/voting/membership.ts | 6 +++++- src/examples/zkapps/voting/voting.ts | 6 +++++- src/examples/zkapps/zkapp-self-update.ts | 7 ++++++- 6 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/bindings b/src/bindings index 3809752bc4..5f9f3a3a30 160000 --- a/src/bindings +++ b/src/bindings @@ -1 +1 @@ -Subproject commit 3809752bc43a77d18f7a67eaddf7ea0671312c60 +Subproject commit 5f9f3a3a30d3e98e7f42764ddf4d5c3b9db45a9e diff --git a/src/examples/zkapps/dex/upgradability.ts b/src/examples/zkapps/dex/upgradability.ts index 31d4812a51..2cee0e003c 100644 --- a/src/examples/zkapps/dex/upgradability.ts +++ b/src/examples/zkapps/dex/upgradability.ts @@ -5,6 +5,7 @@ import { Permissions, PrivateKey, UInt64, + TransactionVersion, } from 'snarkyjs'; import { createDex, TokenContract, addresses, keys, tokenIds } from './dex.js'; import { expect } from 'expect'; @@ -427,7 +428,10 @@ async function upgradeabilityTests({ withVesting }: { withVesting: boolean }) { let update = AccountUpdate.createSigned(addresses.dex); update.account.permissions.set({ ...Permissions.initial(), - setVerificationKey: Permissions.impossible(), + setVerificationKey: { + auth: Permissions.impossible(), + txnVersion: TransactionVersion.current(), + }, }); }); await tx.prove(); diff --git a/src/examples/zkapps/voting/dummyContract.ts b/src/examples/zkapps/voting/dummyContract.ts index e2ca2d1068..bc543d85a0 100644 --- a/src/examples/zkapps/voting/dummyContract.ts +++ b/src/examples/zkapps/voting/dummyContract.ts @@ -6,6 +6,7 @@ import { method, DeployArgs, Permissions, + TransactionVersion, } from 'snarkyjs'; export class DummyContract extends SmartContract { @@ -18,7 +19,10 @@ export class DummyContract extends SmartContract { editState: Permissions.proofOrSignature(), editActionState: Permissions.proofOrSignature(), setPermissions: Permissions.proofOrSignature(), - setVerificationKey: Permissions.proofOrSignature(), + setVerificationKey: { + auth: Permissions.signature(), + txnVersion: TransactionVersion.current(), + }, incrementNonce: Permissions.proofOrSignature(), }); this.sum.set(Field(0)); diff --git a/src/examples/zkapps/voting/membership.ts b/src/examples/zkapps/voting/membership.ts index 8a7d38611d..42e1609c0b 100644 --- a/src/examples/zkapps/voting/membership.ts +++ b/src/examples/zkapps/voting/membership.ts @@ -12,6 +12,7 @@ import { provablePure, AccountUpdate, Provable, + TransactionVersion, } from 'snarkyjs'; import { Member } from './member.js'; import { ParticipantPreconditions } from './preconditions.js'; @@ -74,7 +75,10 @@ export class Membership_ extends SmartContract { editState: Permissions.proofOrSignature(), editActionState: Permissions.proofOrSignature(), setPermissions: Permissions.proofOrSignature(), - setVerificationKey: Permissions.proofOrSignature(), + setVerificationKey: { + auth: Permissions.proofOrSignature(), + txnVersion: TransactionVersion.current(), + }, incrementNonce: Permissions.proofOrSignature(), }); } diff --git a/src/examples/zkapps/voting/voting.ts b/src/examples/zkapps/voting/voting.ts index 2cef7197c3..034eaf3f93 100644 --- a/src/examples/zkapps/voting/voting.ts +++ b/src/examples/zkapps/voting/voting.ts @@ -12,6 +12,7 @@ import { provablePure, AccountUpdate, Provable, + TransactionVersion, } from 'snarkyjs'; import { Member } from './member.js'; @@ -103,7 +104,10 @@ export class Voting_ extends SmartContract { editState: Permissions.proofOrSignature(), editActionState: Permissions.proofOrSignature(), incrementNonce: Permissions.proofOrSignature(), - setVerificationKey: Permissions.none(), + setVerificationKey: { + auth: Permissions.none(), + txnVersion: TransactionVersion.current(), + }, setPermissions: Permissions.proofOrSignature(), }); this.accumulatedVotes.set(Reducer.initialActionState); diff --git a/src/examples/zkapps/zkapp-self-update.ts b/src/examples/zkapps/zkapp-self-update.ts index 1400c6554a..9baa9770ce 100644 --- a/src/examples/zkapps/zkapp-self-update.ts +++ b/src/examples/zkapps/zkapp-self-update.ts @@ -12,6 +12,8 @@ import { AccountUpdate, Circuit, Provable, + TransactionVersion, + UInt32, } from 'snarkyjs'; class Foo extends SmartContract { @@ -19,7 +21,10 @@ class Foo extends SmartContract { super.init(); this.account.permissions.set({ ...Permissions.default(), - setVerificationKey: Permissions.proof(), + setVerificationKey: { + auth: Permissions.proof(), + txnVersion: TransactionVersion.current(), + }, }); } From 3785f9bae532285fb5d30ff3f91ed5f90d0899ab Mon Sep 17 00:00:00 2001 From: Florian Date: Tue, 31 Oct 2023 14:51:31 +0100 Subject: [PATCH 8/9] dump vks --- src/examples/regression_test.json | 94 +++++++++++++++---------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/src/examples/regression_test.json b/src/examples/regression_test.json index c8916cc0c4..ac928854b5 100644 --- a/src/examples/regression_test.json +++ b/src/examples/regression_test.json @@ -1,139 +1,139 @@ { "Voting_": { - "digest": "2f0ca1dca22d7af925d31d23f3d4e37686ec1755a9f069063ae3b6300f6b3920", + "digest": "3d94f280d3d143b91564d659073b641b21f6e0ca8d8549c4f9f37434ebeea399", "methods": { "voterRegistration": { "rows": 1260, - "digest": "5d6fa3b1f0f781fba8894da098827088" + "digest": "9f1d08069b07c165fe425b9b1b83d3ba" }, "candidateRegistration": { "rows": 1260, - "digest": "abf93b4d926a8743bf622da4ee0f88b2" + "digest": "6e9e689b9d1bd2eedcc323c842cf8c87" }, "approveRegistrations": { - "rows": 1146, - "digest": "197ce95e1895f940278034d20ab24274" + "rows": 1147, + "digest": "6189a2bf4c618401d61d30aac6328cea" }, "vote": { - "rows": 1674, - "digest": "a0dd0be93734dc39d52fc7d60d0f0bab" + "rows": 1675, + "digest": "ab1190db893274db9cd64d8c306d8b4a" }, "countVotes": { "rows": 5797, - "digest": "9c5503e03dcbb6b04c907eb1da43e26e" + "digest": "cf02e1cd65980bafaf249c0444bfddf3" } }, "verificationKey": { - "data": "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", - "hash": "11565671297372915311669581079391063231397733208021234592662736001743584177724" + "data": "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", + "hash": "3937169542001515602242969811817979001997698429197375219350451752328949933498" } }, "Membership_": { - "digest": "fb87402442d6984de28d7bab62deb87ab8a7f46d5c2d59da4980ae6927dd1ec", + "digest": "110319a1c90f943e63a60a60b414cb4c5c807238a108f221127cf1470253e8b9", "methods": { "addEntry": { "rows": 1354, - "digest": "bdb5dd653383ec699e25e418135aeec0" + "digest": "f44d9087799be73eb45d70624acbe2e5" }, "isMember": { "rows": 470, - "digest": "f1b63907b48c40cd01b1d34166fa86eb" + "digest": "dc1d26c7e30d3e14bd0d562685846026" }, "publish": { "rows": 695, - "digest": "c6be510154c0e624a41756ad349df9de" + "digest": "358a5f723f262cc3a429632a08366782" } }, "verificationKey": { - "data": "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", - "hash": "11513384784058506063139870141763328684986961462198948028100954667309086537868" + "data": "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", + "hash": "9996223880170732158764822649803321417212830666367673158223414893469449014464" } }, "HelloWorld": { - "digest": "5efddf140c592bb0bfd51d9c77252bcc0c0fab1fbd7fbaf85bd3bb051a96596", + "digest": "1f5a4490d9660960367eba05253fb1ee5a8c19ec4cfaa3808a0a3bb021fb49e4", "methods": { "update": { "rows": 2352, - "digest": "217224955830a2c0db65a6dcc91cae29" + "digest": "5fd358199036f97e4d5dd88b8c90f644" } }, "verificationKey": { - "data": "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", - "hash": "16374078687847242751733960472737775252305759960836159362409166419576402399087" + "data": "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", + "hash": "5137663734069454542185980113506904745018869331949819257646538371828146355743" } }, "TokenContract": { - "digest": "10ccc8e9c4a5788084a73993036c15ea25a5b2643ad06b76614de7e2910b2cc", + "digest": "1626d65d9dddb02c2efb061ccd86dde1be0eb2da1f6d2a9d5fc1dd67f6a13a69", "methods": { "init": { "rows": 656, - "digest": "b6debf22e710ad6bfb67177517ed66ea" + "digest": "69166c148367fb957d6ee9ccc88e32bf" }, "init2": { "rows": 653, - "digest": "b5ac64e93cd25de68a96f1a7b8cee9aa" + "digest": "d37b3b719bbc6bafe7569bf00867d45d" }, "deployZkapp": { "rows": 703, - "digest": "9b45cc038648bab83ea14ed64b08aa79" + "digest": "e9f389959f9e151a157e067457f65ad9" }, "approveUpdate": { - "rows": 1929, - "digest": "5ededd9323d9347dc5c91250c08b5206" + "rows": 1944, + "digest": "4c139968037dddff3d5b96b2c2b7f7d6" }, "approveAny": { - "rows": 1928, - "digest": "b34bc95ca48bfc7fc09f8d1b84215389" + "rows": 1943, + "digest": "10540506937a8e900702c11166a28851" }, "approveUpdateAndSend": { - "rows": 2322, - "digest": "7359c73a15841a7c958b97cc86da58e6" + "rows": 2325, + "digest": "6f3a192b42c9b9543833d1419f1cc5fa" }, "transferToAddress": { "rows": 1045, - "digest": "79bdb6579a9f42dc4ec2d3e9ceedbe1c" + "digest": "5563c415f4cbc4e55deee27b28cc2b36" }, "transferToUpdate": { - "rows": 2327, - "digest": "f7297e43a8082e4677855bca9a206a88" + "rows": 2330, + "digest": "c01ade54a6dd1c2b8727cabdf6bdb239" }, "getBalance": { "rows": 687, - "digest": "738dbad00d454b34d06dd87a346aff11" + "digest": "709f06f2e08cfe43ddf3ccbd60e642c8" } }, "verificationKey": { - "data": "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", - "hash": "19471120960548999816351394077166332230185600464930675317083534065611063009411" + "data": "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", + "hash": "12366494402222742422656395986651384766285850064146879115569953837710228942559" } }, "Dex": { - "digest": "2039439604f1b4a88563bd34178bb380c0d998cc662b8fe9b9ea1164eefe70c7", + "digest": "3d52c586067f910c9e2d2c4845f87bc8a94ecae0f29173925a3c84ac792fb4c9", "methods": { "supplyLiquidityBase": { - "rows": 3752, - "digest": "8d00a233c53340e6ef8898bb40ad919c" + "rows": 3754, + "digest": "94cc0fcf15c730ce5985eab050af69ee" }, "swapX": { - "rows": 1986, - "digest": "23a2ddbc46117681d58c03a130cfee3f" + "rows": 1987, + "digest": "b19ba33a99fce487fa57a26d4f94acef" }, "swapY": { - "rows": 1986, - "digest": "c218b1e81ac390ba81678a5be89bc7a7" + "rows": 1987, + "digest": "4de0b8ee16a3d16c1c35ca35b7afb5b3" }, "burnLiquidity": { "rows": 719, - "digest": "63d13fc14775e43e4f6dd6245b74d516" + "digest": "2efa6087ee0f835cd54af2f2be520738" }, "transfer": { "rows": 1045, - "digest": "dd6f98961085734ff5ec578746db3a53" + "digest": "f884b397fd90eb23d5687d9540fd2ba9" } }, "verificationKey": { - "data": "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", - "hash": "14012766312159048636010037107657830276597168503405582242210403680501924916774" + "data": "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", + "hash": "25368023113388663131248907317546981854837405077704880729120589306824127621207" } }, "Group Primitive": { From b58bb48156790f77358c194f86a8349b6828edd1 Mon Sep 17 00:00:00 2001 From: Florian Kluge Date: Mon, 27 Nov 2023 14:52:57 +0100 Subject: [PATCH 9/9] remove debug code --- src/lib/account_update.unit-test.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/lib/account_update.unit-test.ts b/src/lib/account_update.unit-test.ts index ed35a7ceef..a280b22712 100644 --- a/src/lib/account_update.unit-test.ts +++ b/src/lib/account_update.unit-test.ts @@ -30,8 +30,6 @@ function createAccountUpdate() { // convert accountUpdate to fields in pure JS, leveraging generated code let fields2 = Types.AccountUpdate.toFields(accountUpdate); - console.log(json); - // this is useful console output in the case the test should fail if (fields1.length !== fields2.length) { console.log(