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: [ // {