From 38f4695326313baef023204f36afc9cf1c640027 Mon Sep 17 00:00:00 2001 From: Gregor Date: Fri, 19 Apr 2024 15:15:52 +0200 Subject: [PATCH 1/5] export account type instead of weird account constructor --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 9d4a87ad69..634df83a71 100644 --- a/src/index.ts +++ b/src/index.ts @@ -63,7 +63,6 @@ export { SmartContract, method, declareMethods, - Account, Reducer, } from './lib/mina/zkapp.js'; export { state, State, declareState } from './lib/mina/state.js'; @@ -80,6 +79,7 @@ export { } from './lib/proof-system/zkprogram.js'; export { Cache, CacheHeader } from './lib/proof-system/cache.js'; +export { Account } from './lib/mina/account.js'; export { TokenId, AccountUpdate, From e1ade9743e653375203844b084c23d2b1602a2df Mon Sep 17 00:00:00 2001 From: Gregor Date: Fri, 19 Apr 2024 15:17:42 +0200 Subject: [PATCH 2/5] remove account constructor --- src/lib/mina/zkapp.ts | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/lib/mina/zkapp.ts b/src/lib/mina/zkapp.ts index df885f5c01..cea652cffb 100644 --- a/src/lib/mina/zkapp.ts +++ b/src/lib/mina/zkapp.ts @@ -77,7 +77,7 @@ import { ProvablePure } from '../provable/types/provable-intf.js'; import { MerkleList } from '../provable/merkle-list.js'; // external API -export { SmartContract, method, DeployArgs, declareMethods, Account, Reducer }; +export { SmartContract, method, DeployArgs, declareMethods, Reducer }; const reservedPropNames = new Set(['_methods', '_']); type AsyncFunction = (...args: any) => Promise; @@ -1478,14 +1478,6 @@ type DeployArgs = | { verificationKey?: { data: string; hash: string | Field } } | undefined; -function Account(address: PublicKey, tokenId?: Field) { - if (smartContractContext.get()) { - return AccountUpdate.create(address, tokenId).account; - } else { - return AccountUpdate.defaultAccountUpdate(address, tokenId).account; - } -} - // alternative API which can replace decorators, works in pure JS /** From 8648e148451a776474246fbb66a4f901dbae0146 Mon Sep 17 00:00:00 2001 From: Gregor Date: Fri, 19 Apr 2024 16:20:09 +0200 Subject: [PATCH 3/5] fix examples --- src/examples/zkapps/dex/dex-with-actions.ts | 4 ++-- src/examples/zkapps/dex/dex.ts | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/examples/zkapps/dex/dex-with-actions.ts b/src/examples/zkapps/dex/dex-with-actions.ts index d8fe150ffc..898127df44 100644 --- a/src/examples/zkapps/dex/dex-with-actions.ts +++ b/src/examples/zkapps/dex/dex-with-actions.ts @@ -146,8 +146,8 @@ class Dex extends TokenContract { */ async supplyLiquidity(dx: UInt64) { // calculate dy outside circuit - let x = Account(this.address, TokenId.derive(this.tokenX)).balance.get(); - let y = Account(this.address, TokenId.derive(this.tokenY)).balance.get(); + let x = Mina.getAccount(this.address, TokenId.derive(this.tokenX)).balance; + let y = Mina.getAccount(this.address, TokenId.derive(this.tokenY)).balance; if (x.value.isConstant() && x.value.equals(0).toBoolean()) { throw Error( 'Cannot call `supplyLiquidity` when reserves are zero. Use `supplyLiquidityBase`.' diff --git a/src/examples/zkapps/dex/dex.ts b/src/examples/zkapps/dex/dex.ts index 385c2a54f8..3292ee81d4 100644 --- a/src/examples/zkapps/dex/dex.ts +++ b/src/examples/zkapps/dex/dex.ts @@ -126,8 +126,14 @@ function createDex({ */ async supplyLiquidity(dx: UInt64) { // calculate dy outside circuit - let x = Account(this.address, TokenId.derive(this.tokenX)).balance.get(); - let y = Account(this.address, TokenId.derive(this.tokenY)).balance.get(); + let x = Mina.getAccount( + this.address, + TokenId.derive(this.tokenX) + ).balance; + let y = Mina.getAccount( + this.address, + TokenId.derive(this.tokenY) + ).balance; if (x.value.isConstant() && x.value.equals(0).toBoolean()) { throw Error( 'Cannot call `supplyLiquidity` when reserves are zero. Use `supplyLiquidityBase`.' From 10c9b88279de86fa455b1f1fe90ae8503fba5949 Mon Sep 17 00:00:00 2001 From: Gregor Date: Fri, 19 Apr 2024 16:21:50 +0200 Subject: [PATCH 4/5] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 52367218c4..b8a3854357 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - Improved functionality of `MerkleList` and `MerkleListIterator` for easier traversal of `MerkleList`s. https://github.com/o1-labs/o1js/pull/1562 - Simplified internal logic of reducer. https://github.com/o1-labs/o1js/pull/1577 - `contract.getActions()` now returns a `MerkleList` +- Remove `Account()` constructor which was no different from `AccountUpdate.create().account`, and export `Account` type instead. https://github.com/o1-labs/o1js/pull/1598 ### Added From da1cd44229da9baf85d0c35836aeac5e7a7135ad Mon Sep 17 00:00:00 2001 From: Gregor Date: Fri, 19 Apr 2024 16:31:53 +0200 Subject: [PATCH 5/5] add changelog for other recent change --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b8a3854357..4ed8643ca9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,8 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - Improved functionality of `MerkleList` and `MerkleListIterator` for easier traversal of `MerkleList`s. https://github.com/o1-labs/o1js/pull/1562 - Simplified internal logic of reducer. https://github.com/o1-labs/o1js/pull/1577 - `contract.getActions()` now returns a `MerkleList` +- Add `toValue()` and `fromValue()` interface to `Provable` to encode how provable types map to plain JS values https://github.com/o1-labs/o1js/pull/1271 + - You can now return the plain value from a `Provable.witness()` callback, and it will be transformed into the provable type - Remove `Account()` constructor which was no different from `AccountUpdate.create().account`, and export `Account` type instead. https://github.com/o1-labs/o1js/pull/1598 ### Added