diff --git a/frontend/angular.json b/frontend/angular.json
index 92c363c98c..ca9c830cd4 100644
--- a/frontend/angular.json
+++ b/frontend/angular.json
@@ -112,15 +112,6 @@
}
],
"outputHashing": "all"
- },
- "staging": {
- "fileReplacements": [
- {
- "replace": "src/environments/environment.ts",
- "with": "src/environments/environment.staging.ts"
- }
- ],
- "outputHashing": "all"
}
},
"defaultConfiguration": "production"
diff --git a/frontend/src/app/features/benchmarks/wallets/benchmarks-wallets-zk.service.ts b/frontend/src/app/features/benchmarks/wallets/benchmarks-wallets-zk.service.ts
index fa8f45afdf..0b2c681297 100644
--- a/frontend/src/app/features/benchmarks/wallets/benchmarks-wallets-zk.service.ts
+++ b/frontend/src/app/features/benchmarks/wallets/benchmarks-wallets-zk.service.ts
@@ -24,7 +24,8 @@ export class BenchmarksWalletsZkService {
return this.o1jsInterface.pipe(
filter(Boolean),
switchMap((o1js: any) => {
- return fromPromise(o1js.sendZkApp(CONFIG.globalConfig?.graphQL, zkApps[0], this.updates));
+ // return fromPromise(o1js.deployZkApp(CONFIG.globalConfig?.graphQL, zkApps[0], this.updates));
+ return fromPromise(o1js.updateZkApp(CONFIG.globalConfig?.graphQL, zkApps[0], this.updates));
}),
map((response: any) => {
if (response.errors[0]) {
diff --git a/frontend/src/app/features/benchmarks/wallets/benchmarks-wallets-zkapp-toolbar/benchmarks-wallets-zkapp-toolbar.component.html b/frontend/src/app/features/benchmarks/wallets/benchmarks-wallets-zkapp-toolbar/benchmarks-wallets-zkapp-toolbar.component.html
index 435bad5e90..b481b371c5 100644
--- a/frontend/src/app/features/benchmarks/wallets/benchmarks-wallets-zkapp-toolbar/benchmarks-wallets-zkapp-toolbar.component.html
+++ b/frontend/src/app/features/benchmarks/wallets/benchmarks-wallets-zkapp-toolbar/benchmarks-wallets-zkapp-toolbar.component.html
@@ -40,9 +40,9 @@
arrow_drop_down
-
-
-
+
+ {{ updates.step }} {{ updates.duration }}s
+
diff --git a/frontend/src/app/features/benchmarks/wallets/benchmarks-wallets.reducer.ts b/frontend/src/app/features/benchmarks/wallets/benchmarks-wallets.reducer.ts
index dbf0e0c6e4..d25f3a5e61 100644
--- a/frontend/src/app/features/benchmarks/wallets/benchmarks-wallets.reducer.ts
+++ b/frontend/src/app/features/benchmarks/wallets/benchmarks-wallets.reducer.ts
@@ -227,6 +227,7 @@ export function reducer(state: BenchmarksWalletsState = initialState, action: Be
case BENCHMARKS_WALLETS_GET_ALL_TXS_SUCCESS: {
const allTxs = [...action.payload.mempoolTxs, ...action.payload.includedTxs];
+ console.log(allTxs);
return {
...state,
wallets: state.wallets.map((w: BenchmarksWallet) => {
@@ -306,7 +307,7 @@ export function reducer(state: BenchmarksWalletsState = initialState, action: Be
fee: state.sendingFeeZkapps,
nonce,
memo,
- accountUpdates: 8,
+ accountUpdates: 2,
};
});
} else {
@@ -322,7 +323,7 @@ export function reducer(state: BenchmarksWalletsState = initialState, action: Be
fee: state.sendingFeeZkapps,
nonce: nonce.toString(),
memo,
- accountUpdates: 8,
+ accountUpdates: 2,
};
nonce++;
diff --git a/frontend/src/app/shared/constants/config.ts b/frontend/src/app/shared/constants/config.ts
index 8e5c87cd18..6c27b2e5e9 100644
--- a/frontend/src/app/shared/constants/config.ts
+++ b/frontend/src/app/shared/constants/config.ts
@@ -4,6 +4,10 @@ import { hasValue } from '@openmina/shared';
export const CONFIG: Readonly = {
...environment,
+ globalConfig: {
+ ...environment.globalConfig,
+ graphQL: getURL(environment.globalConfig.graphQL),
+ },
configs: environment.configs.map((config) => ({
...config,
url: getURL(config.url),
diff --git a/frontend/src/assets/environments/block_producers.js b/frontend/src/assets/environments/block_producers.js
index fa5e5b493a..bbb420c066 100644
--- a/frontend/src/assets/environments/block_producers.js
+++ b/frontend/src/assets/environments/block_producers.js
@@ -8,6 +8,7 @@ export default {
'snarks': ['scan-state', 'work-pool'],
},
canAddNodes: true,
+ graphQL: 'http://localhost:11010/graphql',
},
configs: [
{
diff --git a/frontend/src/assets/environments/staging.js b/frontend/src/assets/environments/staging.js
index 2e971151a8..6c49290a6b 100644
--- a/frontend/src/assets/environments/staging.js
+++ b/frontend/src/assets/environments/staging.js
@@ -11,7 +11,7 @@ export default {
'benchmarks': ['wallets'],
},
canAddNodes: false,
- graphQL: 'http://adonagy.hz.minaprotocol.network:3000/graphql'
+ graphQL: 'https://adonagy.com/graphql'
},
configs: [
{
diff --git a/frontend/src/assets/o1js/o1jsWrapper.js b/frontend/src/assets/o1js/o1jsWrapper.js
index 91ddab58f1..d9956c0152 100644
--- a/frontend/src/assets/o1js/o1jsWrapper.js
+++ b/frontend/src/assets/o1js/o1jsWrapper.js
@@ -36,7 +36,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
\**********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ sendZkApp: () => (/* reexport safe */ _tutorial_gql4_run__WEBPACK_IMPORTED_MODULE_0__.sendZkApp)\n/* harmony export */ });\n/* harmony import */ var _tutorial_gql4_run__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tutorial-gql4/run */ \"./src/tutorial-gql4/run.ts\");\n// import { runTutorial2 } from './tutorial2/run';\n// import { runTutorialGql } from './tutorial-gql/run';\n// import { runTutorial3 } from './tutorial3/run';\n// import { gql2deploy, gql2update } from './tutorial-gql2/run';\n// import { gql3 } from './tutorial-gql3/run';\n\n// document.getElementById('tutorial2').onclick = () => runTutorial2();\n// document.getElementById('tutorial3').onclick = () => runTutorial3();\n// document.getElementById('tutorialgql').onclick = () => runTutorialGql();\n// document.getElementById('gql2deploy').onclick = () => gql2deploy();\n// document.getElementById('gql2update').onclick = () => gql2update();\n// document.getElementById('gql3').onclick = () => gql3();\n// document.getElementById('gql4').onclick = () => sendZkApp('https://api.minascan.io/node/devnet/v1/graphql',{\n// \t\"payerPublicKey\": \"B62qqLJ26MuC2pAnEYAW8dKdno8YVXY1boB9cDWqepp9q8FtRMbj8Jj\",\n// \t\"payerPrivateKey\": \"EKDk2KzzBcgUz63P9mNUEGD9siSiSfdyh6byu4bBsmhYXtpdmK3T\",\n// \t\"fee\": 0.001,\n// \t\"nonce\": \"21\",\n// \t\"memo\": \"S.T.1727429279075,1,328909544\",\n// \t\"accountUpdates\": 1\n// },{next: (val: string) => console.log(val)});\n// export {\n// \tgql2deploy,\n// \tgql2update,\n// \tzkAppKeys,\n// }\n\n\n\n//# sourceURL=webpack://o1jsWrapper/./src/index.ts?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ deployZkApp: () => (/* reexport safe */ _tutorial_gql4_run__WEBPACK_IMPORTED_MODULE_0__.deployZkApp),\n/* harmony export */ updateZkApp: () => (/* reexport safe */ _tutorial_gql4_run__WEBPACK_IMPORTED_MODULE_0__.updateZkApp)\n/* harmony export */ });\n/* harmony import */ var _tutorial_gql4_run__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tutorial-gql4/run */ \"./src/tutorial-gql4/run.ts\");\n\n// document.getElementById('tutorial2').onclick = () => runTutorial2();\n// document.getElementById('tutorial3').onclick = () => runTutorial3();\n// document.getElementById('tutorialgql').onclick = () => runTutorialGql();\n// document.getElementById('gql2deploy').onclick = () => gql2deploy();\n// document.getElementById('gql2update').onclick = () => gql2update();\n// document.getElementById('gql2deployMultiple').onclick = () => gql2DeployMultipleAccounts();\n// document.getElementById('gql2updateMultiple').onclick = () => gql2UpdateMultipleAccounts();\n// document.getElementById('gql3').onclick = () => gql3();\n// document.getElementById('gql4').onclick = () => gql4();\n// document.getElementById('gql4Update').onclick = () => gql4Update();\n// document.getElementById('zkrollup').onclick = () => zkRollup();\n\n\n\n//# sourceURL=webpack://o1jsWrapper/./src/index.ts?");
/***/ }),
@@ -46,7 +46,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
\**********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ gql4: () => (/* binding */ gql4),\n/* harmony export */ sendZkApp: () => (/* binding */ sendZkApp)\n/* harmony export */ });\n/* harmony import */ var o1js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! o1js */ \"./node_modules/o1js/dist/web/index.js\");\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n\nclass Add extends o1js__WEBPACK_IMPORTED_MODULE_0__.SmartContract {\n constructor() {\n super(...arguments);\n this.num = (0,o1js__WEBPACK_IMPORTED_MODULE_0__.State)();\n }\n init() {\n this.account.provedState.requireEquals(this.account.provedState.get());\n this.account.provedState.get().assertFalse();\n super.init();\n this.num.set((0,o1js__WEBPACK_IMPORTED_MODULE_0__.Field)(1));\n }\n async update() {\n const currentState = this.num.getAndRequireEquals();\n const newState = currentState.add(5);\n this.num.set(newState);\n }\n async deploy() {\n super.deploy();\n this.account.permissions.set({\n ...o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.default(),\n setVerificationKey: {\n txnVersion: o1js__WEBPACK_IMPORTED_MODULE_0__.TransactionVersion.current(),\n auth: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n },\n setDelegate: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n setPermissions: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n setZkappUri: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n setTokenSymbol: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n incrementNonce: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n setVotingFor: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n setTiming: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n send: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n editState: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n receive: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n access: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n editActionState: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n });\n }\n}\n__decorate([\n (0,o1js__WEBPACK_IMPORTED_MODULE_0__.state)(o1js__WEBPACK_IMPORTED_MODULE_0__.Field),\n __metadata(\"design:type\", Object)\n], Add.prototype, \"num\", void 0);\n__decorate([\n o1js__WEBPACK_IMPORTED_MODULE_0__.method,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Promise)\n], Add.prototype, \"update\", null);\nclass IsEven extends o1js__WEBPACK_IMPORTED_MODULE_0__.SmartContract {\n constructor() {\n super(...arguments);\n this.number = (0,o1js__WEBPACK_IMPORTED_MODULE_0__.State)();\n }\n // Initialize the zkApp with a number\n init() {\n super.init();\n this.number.set((0,o1js__WEBPACK_IMPORTED_MODULE_0__.Field)(10));\n }\n // Method to check if the number is even\n async checkEven() {\n this.number.requireEquals(this.number.get());\n const num = this.number.get();\n const isEven = num.isEven();\n this.generateProof(isEven);\n }\n // Generate a proof for the computation\n generateProof(isEven) {\n const hash = o1js__WEBPACK_IMPORTED_MODULE_0__.Poseidon.hash([this.number.get()]);\n o1js__WEBPACK_IMPORTED_MODULE_0__.Provable.log(hash, isEven);\n }\n async deploy() {\n super.deploy();\n this.account.permissions.set({\n ...o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.default(),\n setVerificationKey: {\n txnVersion: o1js__WEBPACK_IMPORTED_MODULE_0__.TransactionVersion.current(),\n auth: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n },\n setDelegate: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n setPermissions: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n setZkappUri: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n setTokenSymbol: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n incrementNonce: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n setVotingFor: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n setTiming: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n send: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n editState: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n receive: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n access: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n editActionState: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n });\n }\n}\n__decorate([\n (0,o1js__WEBPACK_IMPORTED_MODULE_0__.state)(o1js__WEBPACK_IMPORTED_MODULE_0__.Field),\n __metadata(\"design:type\", Object)\n], IsEven.prototype, \"number\", void 0);\n__decorate([\n o1js__WEBPACK_IMPORTED_MODULE_0__.method,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Promise)\n], IsEven.prototype, \"checkEven\", null);\nconst wallets = [\n {\n privateKey: 'EKEQGWy4TjbVeqKjbe7TW81DKQM34min5FNmXpKArHKLyGVd3KSP',\n publicKey: 'B62qpD75xH5R19wxZG2uz8whNsHPTioVoYcPV3zfjjSbzTmaHQHKKEV',\n },\n {\n privateKey: 'EKETKywEr7ktbzqj8D2aj4yYZVMyj33sHuWLQydbzt1M3sGnAbTh',\n publicKey: 'B62qnLjgW4LAnrxkcdLc7Snb49qx6aP5qsmPsp6ueZN4XPMC621cqGc',\n },\n];\nconst payerKeys = {\n publicKey: o1js__WEBPACK_IMPORTED_MODULE_0__.PrivateKey.fromBase58(wallets[0].privateKey).toPublicKey(),\n privateKey: o1js__WEBPACK_IMPORTED_MODULE_0__.PrivateKey.fromBase58(wallets[0].privateKey),\n};\nconst zkApps = [];\nfor (let i = 0; i < 2; i++) {\n const randPrivateKey = o1js__WEBPACK_IMPORTED_MODULE_0__.PrivateKey.random();\n zkApps.push({\n publicKey: randPrivateKey.toPublicKey(),\n privateKey: randPrivateKey,\n });\n}\nasync function gql4(graphQlUrl, input) {\n // const network = Mina.Network('http://65.109.105.40:5000/graphql');\n // const network = Mina.Network('https://api.minascan.io/node/devnet/v1/graphql');\n const network = o1js__WEBPACK_IMPORTED_MODULE_0__.Mina.Network('http://adonagy.hz.minaprotocol.network:3000/graphql');\n o1js__WEBPACK_IMPORTED_MODULE_0__.Mina.setActiveInstance(network);\n // const zkAppPublicKey = PublicKey.fromBase58(wallets[1].publicKey);\n // const zkAppPrivateKey = PrivateKey.fromBase58(wallets[1].privateKey);\n // const zks = zkApps.map((zkApp) => new Add(zkApp.publicKey));\n const zk1 = new Add(zkApps[0].publicKey);\n const zk2 = new Add(zkApps[1].publicKey);\n console.log('fetching account...');\n const { account } = await (0,o1js__WEBPACK_IMPORTED_MODULE_0__.fetchAccount)({ publicKey: payerKeys.publicKey });\n console.log(account);\n console.log('Compiling...');\n await Add.compile();\n console.log('Updating...');\n console.log('ZkAPP pub_key:', zkApps[0].publicKey.toBase58(), zkApps[0].privateKey.toBase58());\n console.log('ZkAPP pub_key:', zkApps[1].publicKey.toBase58(), zkApps[1].privateKey.toBase58());\n const payerAccount = { sender: payerKeys.publicKey, fee: Number('0.1') * 1e9, nonce: o1js__WEBPACK_IMPORTED_MODULE_0__.Types.Account.toJSON(account).nonce };\n let tx = await o1js__WEBPACK_IMPORTED_MODULE_0__.Mina.transaction(payerAccount, async () => {\n o1js__WEBPACK_IMPORTED_MODULE_0__.AccountUpdate.fundNewAccount(payerKeys.publicKey, 2);\n console.log('zkApp deploying...');\n await zk1.deploy();\n await zk2.deploy();\n });\n console.log('Proving...');\n await tx.prove();\n console.log('Submitting...');\n await tx.sign([payerKeys.privateKey, zkApps[0].privateKey, zkApps[1].privateKey]);\n await tx.safeSend().then((sentTx) => {\n console.log(sentTx);\n if (sentTx.data) {\n }\n else if (tx?.errors?.length) {\n console.log('Transaction errors: ', tx?.errors[0]);\n console.log(tx?.errors[0].statusText);\n }\n });\n}\nasync function sendZkApp(graphQlUrl, input, updates) {\n console.log('----------- Sending ZkApp -----------');\n const network = o1js__WEBPACK_IMPORTED_MODULE_0__.Mina.Network(graphQlUrl);\n o1js__WEBPACK_IMPORTED_MODULE_0__.Mina.setActiveInstance(network);\n const pairs = Array.from({ length: input.accountUpdates }, () => {\n const randPrivateKey = o1js__WEBPACK_IMPORTED_MODULE_0__.PrivateKey.random();\n return {\n publicKey: randPrivateKey.toPublicKey(),\n privateKey: randPrivateKey,\n };\n });\n const zkApps = pairs.map((pair) => new IsEven(pair.publicKey));\n let stepStartTime = performance.now();\n const updateStep = (step) => {\n const now = performance.now();\n updates.next({ step, duration: now - stepStartTime });\n let duration = (now - stepStartTime) / 1000;\n console.log(`${step} (${Math.round(duration * 10000) / 10000}s)`);\n stepStartTime = now;\n };\n await IsEven.compile();\n updateStep('Compiled');\n const payerAccount = { sender: o1js__WEBPACK_IMPORTED_MODULE_0__.PublicKey.fromBase58(input.payerPublicKey), fee: input.fee * 1e9, nonce: Number(input.nonce), memo: input.memo };\n let tx = await o1js__WEBPACK_IMPORTED_MODULE_0__.Mina.transaction(payerAccount, async () => {\n o1js__WEBPACK_IMPORTED_MODULE_0__.AccountUpdate.fundNewAccount(o1js__WEBPACK_IMPORTED_MODULE_0__.PublicKey.fromBase58(input.payerPublicKey), input.accountUpdates);\n await Promise.all(zkApps.map((zkApp) => zkApp.deploy()));\n });\n updateStep('Deployed');\n await tx.prove();\n updateStep('Proved');\n await tx.sign([o1js__WEBPACK_IMPORTED_MODULE_0__.PrivateKey.fromBase58(input.payerPrivateKey), ...pairs.map((pair) => pair.privateKey)]);\n updateStep('Signed');\n return tx.safeSend().then((sentTx) => {\n updateStep('Sent');\n console.log(sentTx);\n console.log('----------- Done -----------');\n return sentTx;\n });\n}\n\n\n//# sourceURL=webpack://o1jsWrapper/./src/tutorial-gql4/run.ts?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ deployZkApp: () => (/* binding */ deployZkApp),\n/* harmony export */ gql4: () => (/* binding */ gql4),\n/* harmony export */ gql4Update: () => (/* binding */ gql4Update),\n/* harmony export */ updateZkApp: () => (/* binding */ updateZkApp)\n/* harmony export */ });\n/* harmony import */ var o1js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! o1js */ \"./node_modules/o1js/dist/web/index.js\");\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n\nclass Add extends o1js__WEBPACK_IMPORTED_MODULE_0__.SmartContract {\n constructor() {\n super(...arguments);\n this.num = (0,o1js__WEBPACK_IMPORTED_MODULE_0__.State)();\n }\n init() {\n this.account.provedState.requireEquals(this.account.provedState.get());\n this.account.provedState.get().assertFalse();\n super.init();\n this.num.set((0,o1js__WEBPACK_IMPORTED_MODULE_0__.Field)(1));\n }\n async update() {\n const currentState = this.num.getAndRequireEquals();\n const newState = currentState.add(5);\n this.num.set(newState);\n }\n async deploy() {\n super.deploy();\n this.account.permissions.set({\n ...o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.default(),\n setDelegate: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.signature(),\n setPermissions: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.signature(),\n setZkappUri: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.signature(),\n setTokenSymbol: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.signature(),\n incrementNonce: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.signature(),\n setVotingFor: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.signature(),\n setTiming: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.signature(),\n send: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n editState: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n receive: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.none(),\n access: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.none(),\n editActionState: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n });\n }\n}\n__decorate([\n (0,o1js__WEBPACK_IMPORTED_MODULE_0__.state)(o1js__WEBPACK_IMPORTED_MODULE_0__.Field),\n __metadata(\"design:type\", Object)\n], Add.prototype, \"num\", void 0);\n__decorate([\n o1js__WEBPACK_IMPORTED_MODULE_0__.method,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Promise)\n], Add.prototype, \"update\", null);\nclass IsEven extends o1js__WEBPACK_IMPORTED_MODULE_0__.SmartContract {\n constructor() {\n super(...arguments);\n this.number = (0,o1js__WEBPACK_IMPORTED_MODULE_0__.State)();\n }\n // Initialize the zkApp with a number\n init() {\n this.account.provedState.requireEquals(this.account.provedState.get());\n this.account.provedState.get().assertFalse();\n super.init();\n this.number.set((0,o1js__WEBPACK_IMPORTED_MODULE_0__.Field)(10));\n }\n // Method to check if the number is even\n async checkEven() {\n this.number.requireEquals(this.number.get());\n const num = this.number.get();\n const isEven = num.isEven();\n this.generateProof(isEven);\n }\n // Generate a proof for the computation\n generateProof(isEven) {\n const hash = o1js__WEBPACK_IMPORTED_MODULE_0__.Poseidon.hash([this.number.get()]);\n // Provable.log(hash, isEven);\n }\n async deploy() {\n super.deploy();\n this.account.permissions.set({\n ...o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.default(),\n setDelegate: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.signature(),\n setPermissions: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.signature(),\n setZkappUri: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.signature(),\n setTokenSymbol: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.signature(),\n incrementNonce: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.signature(),\n setVotingFor: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.signature(),\n setTiming: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.signature(),\n send: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n editState: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n receive: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.none(),\n access: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.none(),\n editActionState: o1js__WEBPACK_IMPORTED_MODULE_0__.Permissions.proof(),\n });\n }\n}\n__decorate([\n (0,o1js__WEBPACK_IMPORTED_MODULE_0__.state)(o1js__WEBPACK_IMPORTED_MODULE_0__.Field),\n __metadata(\"design:type\", Object)\n], IsEven.prototype, \"number\", void 0);\n__decorate([\n o1js__WEBPACK_IMPORTED_MODULE_0__.method,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Promise)\n], IsEven.prototype, \"checkEven\", null);\nconst wallets = [\n {\n privateKey: 'EKEQGWy4TjbVeqKjbe7TW81DKQM34min5FNmXpKArHKLyGVd3KSP',\n publicKey: 'B62qpD75xH5R19wxZG2uz8whNsHPTioVoYcPV3zfjjSbzTmaHQHKKEV',\n },\n {\n privateKey: 'EKETKywEr7ktbzqj8D2aj4yYZVMyj33sHuWLQydbzt1M3sGnAbTh',\n publicKey: 'B62qnLjgW4LAnrxkcdLc7Snb49qx6aP5qsmPsp6ueZN4XPMC621cqGc',\n },\n];\nconst payerKeys = {\n publicKey: o1js__WEBPACK_IMPORTED_MODULE_0__.PrivateKey.fromBase58(wallets[0].privateKey).toPublicKey(),\n privateKey: o1js__WEBPACK_IMPORTED_MODULE_0__.PrivateKey.fromBase58(wallets[0].privateKey),\n};\nconst zkApps = [];\nfor (let i = 0; i < 2; i++) {\n const randPrivateKey = o1js__WEBPACK_IMPORTED_MODULE_0__.PrivateKey.random();\n zkApps.push({\n publicKey: randPrivateKey.toPublicKey(),\n privateKey: randPrivateKey,\n });\n}\nasync function gql4() {\n // const network = Mina.Network('http://65.109.105.40:5000/graphql');\n // const network = Mina.Network('https://api.minascan.io/node/devnet/v1/graphql');\n const network = o1js__WEBPACK_IMPORTED_MODULE_0__.Mina.Network('http://adonagy.hz.minaprotocol.network:3000/graphql');\n o1js__WEBPACK_IMPORTED_MODULE_0__.Mina.setActiveInstance(network);\n // const zkAppPublicKey = PublicKey.fromBase58(wallets[1].publicKey);\n // const zkAppPrivateKey = PrivateKey.fromBase58(wallets[1].privateKey);\n // const zks = zkApps.map((zkApp) => new Add(zkApp.publicKey));\n const zk1 = new Add(zkApps[0].publicKey);\n const zk2 = new Add(zkApps[1].publicKey);\n console.log('fetching account...');\n const { account } = await (0,o1js__WEBPACK_IMPORTED_MODULE_0__.fetchAccount)({ publicKey: payerKeys.publicKey });\n console.log(account);\n console.log('Compiling...');\n await Add.compile();\n console.log('Updating...');\n console.log('ZkAPP pub_key:', zkApps[0].publicKey.toBase58(), zkApps[0].privateKey.toBase58());\n console.log('ZkAPP pub_key:', zkApps[1].publicKey.toBase58(), zkApps[1].privateKey.toBase58());\n const payerAccount = { sender: payerKeys.publicKey, fee: Number('0.1') * 1e9, nonce: o1js__WEBPACK_IMPORTED_MODULE_0__.Types.Account.toJSON(account).nonce };\n let tx = await o1js__WEBPACK_IMPORTED_MODULE_0__.Mina.transaction(payerAccount, async () => {\n o1js__WEBPACK_IMPORTED_MODULE_0__.AccountUpdate.fundNewAccount(payerKeys.publicKey, 2);\n console.log('zkApp deploying...');\n await zk1.deploy();\n await zk2.deploy();\n });\n console.log('Proving...');\n await tx.prove();\n console.log('Submitting...');\n await tx.sign([payerKeys.privateKey, zkApps[0].privateKey, zkApps[1].privateKey]);\n await tx.safeSend().then((sentTx) => {\n console.log(sentTx);\n if (sentTx.data) {\n }\n else if (tx?.errors?.length) {\n console.log('Transaction errors: ', tx?.errors[0]);\n console.log(tx?.errors[0].statusText);\n }\n });\n}\nasync function gql4Update(input = {\n payerPrivateKey: 'EKEQGWy4TjbVeqKjbe7TW81DKQM34min5FNmXpKArHKLyGVd3KSP',\n payerPublicKey: 'B62qpD75xH5R19wxZG2uz8whNsHPTioVoYcPV3zfjjSbzTmaHQHKKEV',\n accountUpdates: 1,\n fee: 0.05,\n memo: 'ZkApp Update o1js',\n nonce: null,\n}, updates = { next: (v) => { } }) {\n console.log('----------- Updating ZkApp (Proof) -----------');\n // const network = Mina.Network('http://65.109.105.40:5000/graphql');\n const network = o1js__WEBPACK_IMPORTED_MODULE_0__.Mina.Network('https://api.minascan.io/node/devnet/v1/graphql');\n // const network = Mina.Network('http://adonagy.hz.minaprotocol.network:3000/graphql');\n o1js__WEBPACK_IMPORTED_MODULE_0__.Mina.setActiveInstance(network);\n const pairs = Array.from({ length: input.accountUpdates }, () => {\n const randPrivateKey = o1js__WEBPACK_IMPORTED_MODULE_0__.PrivateKey.fromBase58('EKDx37bQBfayZn7M5rhDSVBZBBQLHZukqJMRfC1esVAPZ5iFzWSM');\n return {\n publicKey: randPrivateKey.toPublicKey(),\n privateKey: randPrivateKey,\n };\n });\n const zkApps = pairs.map((pair) => new IsEven(pair.publicKey));\n let stepStartTime = performance.now();\n const updateStep = (step) => {\n const now = performance.now();\n updates.next({ step, duration: now - stepStartTime });\n let duration = (now - stepStartTime) / 1000;\n console.log(`${step} (${Math.round(duration * 10000) / 10000}s)`);\n stepStartTime = now;\n };\n await IsEven.compile();\n updateStep('Compiled');\n const { account } = await (0,o1js__WEBPACK_IMPORTED_MODULE_0__.fetchAccount)({ publicKey: payerKeys.publicKey });\n const payerAccount = {\n sender: o1js__WEBPACK_IMPORTED_MODULE_0__.PublicKey.fromBase58(input.payerPublicKey),\n fee: input.fee * 1e9,\n nonce: Number(o1js__WEBPACK_IMPORTED_MODULE_0__.Types.Account.toJSON(account).nonce),\n memo: input.memo,\n };\n let tx = await o1js__WEBPACK_IMPORTED_MODULE_0__.Mina.transaction(payerAccount, async () => {\n await Promise.all(zkApps.map((zkApp) => zkApp.checkEven()));\n });\n updateStep('Proved Check Even');\n await tx.prove();\n updateStep('Proved');\n await tx.sign([o1js__WEBPACK_IMPORTED_MODULE_0__.PrivateKey.fromBase58(input.payerPrivateKey), ...pairs.map((pair) => pair.privateKey)]);\n updateStep('Signed');\n return tx.safeSend().then((sentTx) => {\n updateStep('Sent');\n console.log(sentTx);\n console.log('----------- Done -----------');\n return sentTx;\n });\n}\nasync function deployZkApp(graphQlUrl, input, updates) {\n console.log('----------- Sending ZkApp -----------');\n const network = o1js__WEBPACK_IMPORTED_MODULE_0__.Mina.Network(graphQlUrl);\n o1js__WEBPACK_IMPORTED_MODULE_0__.Mina.setActiveInstance(network);\n const pairs = Array.from({ length: input.accountUpdates }, () => {\n const randPrivateKey = o1js__WEBPACK_IMPORTED_MODULE_0__.PrivateKey.random();\n return {\n publicKey: randPrivateKey.toPublicKey(),\n privateKey: randPrivateKey,\n };\n });\n console.log(pairs.map((pair) => pair.privateKey.toBase58()));\n const zkApps = pairs.map((pair) => new Add(pair.publicKey));\n let stepStartTime = performance.now();\n const updateStep = (step) => {\n const now = performance.now();\n if (step === 'Compiling') {\n updates.next({ step, duration: undefined });\n return;\n }\n let duration = Math.round((now - stepStartTime) / 1000 * 1000) / 1000;\n updates.next({ step, duration });\n console.log(`${step} (${duration}s)`);\n stepStartTime = now;\n };\n updateStep('Compiling');\n await Add.compile();\n updateStep('Compiled');\n const payerAccount = { sender: o1js__WEBPACK_IMPORTED_MODULE_0__.PublicKey.fromBase58(input.payerPublicKey), fee: input.fee * 1e9, nonce: Number(input.nonce), memo: input.memo };\n let tx = await o1js__WEBPACK_IMPORTED_MODULE_0__.Mina.transaction(payerAccount, async () => {\n o1js__WEBPACK_IMPORTED_MODULE_0__.AccountUpdate.fundNewAccount(o1js__WEBPACK_IMPORTED_MODULE_0__.PublicKey.fromBase58(input.payerPublicKey), input.accountUpdates);\n for (const zkApp of zkApps) {\n await zkApp.deploy();\n }\n });\n updateStep('Deployed');\n await tx.prove();\n updateStep('Proved');\n await tx.sign([o1js__WEBPACK_IMPORTED_MODULE_0__.PrivateKey.fromBase58(input.payerPrivateKey), ...pairs.map((pair) => pair.privateKey)]);\n updateStep('Signed');\n return tx.safeSend().then((sentTx) => {\n updateStep('Sent');\n console.log(sentTx);\n console.log('----------- Done -----------');\n return sentTx;\n });\n}\nconst deployedZkApps = [\n \"EKEbTHeqQbq5zeFuspjVSoatEebrG7fJnz8CrXyP4aVAXzeD1Z6A\",\n \"EKFF1zZ4KUCZoe7GXHAPcfLdkGPgsYJ5RNtQvHMx8ndhY1pZttaa\"\n];\nasync function updateZkApp(graphQlUrl, input, updates) {\n console.log('----------- Updating ZkApp -----------');\n const network = o1js__WEBPACK_IMPORTED_MODULE_0__.Mina.Network(graphQlUrl);\n o1js__WEBPACK_IMPORTED_MODULE_0__.Mina.setActiveInstance(network);\n const pairs = Array.from({ length: input.accountUpdates }, (_, i) => {\n const randPrivateKey = o1js__WEBPACK_IMPORTED_MODULE_0__.PrivateKey.fromBase58(deployedZkApps[i]);\n return {\n publicKey: randPrivateKey.toPublicKey(),\n privateKey: randPrivateKey,\n };\n });\n const zkApps = pairs.map((pair) => new Add(pair.publicKey));\n let stepStartTime = performance.now();\n const updateStep = (step) => {\n const now = performance.now();\n if (step === 'Compiling') {\n updates.next({ step, duration: undefined });\n return;\n }\n let duration = Math.round((now - stepStartTime) / 1000 * 1000) / 1000;\n updates.next({ step, duration });\n console.log(`${step} (${duration}s)`);\n stepStartTime = now;\n };\n updateStep('Compiling');\n await Add.compile();\n updateStep('Compiled');\n const payerAccount = { sender: o1js__WEBPACK_IMPORTED_MODULE_0__.PublicKey.fromBase58(input.payerPublicKey), fee: input.fee * 1e9, nonce: Number(input.nonce), memo: input.memo };\n let tx = await o1js__WEBPACK_IMPORTED_MODULE_0__.Mina.transaction(payerAccount, async () => {\n for (const zkApp of zkApps) {\n await zkApp.update();\n }\n });\n updateStep('Proved Check Even');\n await tx.prove();\n updateStep('Proved');\n await tx.sign([o1js__WEBPACK_IMPORTED_MODULE_0__.PrivateKey.fromBase58(input.payerPrivateKey), ...pairs.map((pair) => pair.privateKey)]);\n updateStep('Signed');\n return tx.safeSend().then((sentTx) => {\n updateStep('Sent');\n console.log(sentTx);\n console.log('----------- Done -----------');\n return sentTx;\n });\n}\n\n\n//# sourceURL=webpack://o1jsWrapper/./src/tutorial-gql4/run.ts?");
/***/ }),
diff --git a/frontend/src/environments/environment.block_producers.ts b/frontend/src/environments/environment.block_producers.ts
index 2c6fea236d..8f9a1f4dfe 100644
--- a/frontend/src/environments/environment.block_producers.ts
+++ b/frontend/src/environments/environment.block_producers.ts
@@ -10,6 +10,7 @@ export const environment: Readonly = {
'snarks': ['scan-state', 'work-pool'],
},
canAddNodes: true,
+ graphQL: 'http://localhost:11010/graphql',
},
configs: [
{
diff --git a/frontend/src/environments/environment.staging.ts b/frontend/src/environments/environment.staging.ts
deleted file mode 100644
index aff951d38d..0000000000
--- a/frontend/src/environments/environment.staging.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import { MinaEnv } from '@shared/types/core/environment/mina-env.type';
-
-export const environment: Readonly = {
- production: true,
- globalConfig: {
- features: {
- 'dashboard': [],
- 'block-production': ['won-slots'],
- 'nodes': ['overview', 'live', 'bootstrap'],
- 'mempool': [],
- 'state': ['actions'],
- 'snarks': ['scan-state', 'work-pool'],
- 'benchmarks': ['wallets'],
- },
- canAddNodes: false,
- },
- configs: [
- {
- name: 'staging-devnet-bp-0',
- url: 'https://staging-devnet-openmina-bp-0.minaprotocol.network',
- },
- {
- name: 'staging-devnet-bp-1',
- url: 'https://staging-devnet-openmina-bp-1.minaprotocol.network',
- },
- {
- name: 'staging-devnet-bp-2',
- url: 'https://staging-devnet-openmina-bp-2.minaprotocol.network',
- },
- {
- name: 'staging-devnet-bp-3',
- url: 'https://staging-devnet-openmina-bp-3.minaprotocol.network',
- },
- ],
-};
-
diff --git a/frontend/src/environments/environment.ts b/frontend/src/environments/environment.ts
index e9dca000cf..78b37f73e2 100644
--- a/frontend/src/environments/environment.ts
+++ b/frontend/src/environments/environment.ts
@@ -18,7 +18,9 @@ export const environment: Readonly = {
zk: ['test'],
},
canAddNodes: true,
- graphQL: 'http://adonagy.hz.minaprotocol.network:3000/graphql',
+ graphQL: 'https://adonagy.com/graphql',
+ // graphQL: 'https://api.minascan.io/node/devnet/v1/graphql',
+ // graphQL: 'http://65.109.105.40:5000/graphql',
},
configs: [
// {