From cd327d9a03eda3bbe567b1cf0ba56a44ab642afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Pedro=20Sousa?= Date: Tue, 6 Feb 2024 13:23:42 +0000 Subject: [PATCH] finished refactoring react box, added npx script too --- boxes/.gitignore | 2 +- boxes/blank-react/.eslintrc.cjs | 77 +- boxes/blank-react/.gitignore | 3 +- boxes/blank-react/.prettierignore | 2 - boxes/blank-react/.prettierrc.json | 6 - boxes/blank-react/index.html | 25 + boxes/blank-react/package.json | 26 +- boxes/blank-react/src/@types/index.d.ts | 9 - .../app/components/contract_function_form.tsx | 188 ---- boxes/blank-react/src/app/components/index.ts | 2 - .../blank-react/src/app/components/popup.tsx | 26 - boxes/blank-react/src/app/contract.tsx | 145 --- boxes/blank-react/src/app/home.tsx | 37 - .../blank-react/src/app/hooks/useAccounts.tsx | 20 - .../blank-react/src/app/hooks/useContract.tsx | 33 - boxes/blank-react/src/app/index.css | 40 - boxes/blank-react/src/app/index.html | 13 - boxes/blank-react/src/app/index.tsx | 11 - boxes/blank-react/src/assets/aztec_logo.svg | 8 - boxes/blank-react/src/assets/check.svg | 3 - boxes/blank-react/src/assets/copy.svg | 34 - boxes/blank-react/src/assets/favicon.ico | Bin 4286 -> 0 bytes .../src/assets/soehne-leicht-kursiv.ttf | Bin 98204 -> 0 bytes .../src/assets/soehne-web-buch.woff2 | Bin 34312 -> 0 bytes .../assets/soehne-web-halbfett-kursiv.woff2 | Bin 37212 -> 0 bytes .../src/assets/soehne-web-halbfett.woff2 | Bin 34931 -> 0 bytes .../src/assets/soehne-web-kraftig.woff2 | Bin 32915 -> 0 bytes .../src/assets/soehne-web-leicht.woff2 | Bin 33891 -> 0 bytes boxes/blank-react/src/config.ts | 54 +- ...7411b6b375064925b8088b0cd141771-audit.json | 15 - .../log/aztec-sandbox-2024-02-01.debug.log | 5 - .../src/contracts/log/aztec-sandbox.debug.log | 1 - boxes/blank-react/src/contracts/src/main.nr | 25 +- boxes/blank-react/src/hooks/useContract.tsx | 39 + boxes/blank-react/src/hooks/useNumber.tsx | 35 + boxes/blank-react/src/index.tsx | 14 + boxes/blank-react/src/pages/contract.tsx | 58 ++ boxes/blank-react/src/pages/home.tsx | 18 + .../src/scripts/call_contract_function.ts | 21 - boxes/blank-react/src/scripts/index.ts | 4 - boxes/blank-react/src/scripts/util.ts | 36 - .../src/scripts/view_contract_function.ts | 17 - .../blank-react/tests/blank.contract.test.ts | 77 +- boxes/blank-react/tsconfig.json | 13 +- boxes/blank-react/webpack.config.js | 93 +- boxes/blank/tests/blank.contract.test.ts | 2 +- boxes/npx.js | 167 +++ boxes/package.json | 11 + boxes/token/.eslintrc.cjs | 64 -- boxes/token/.gitignore | 7 - boxes/token/.prettierignore | 2 - boxes/token/.prettierrc.json | 6 - boxes/token/README.md | 67 -- boxes/token/package.json | 103 -- boxes/token/postcss.config.cjs | 5 - boxes/token/src/@types/index.d.ts | 4 - .../contract_function_form.module.scss | 66 -- .../app/components/contract_function_form.tsx | 231 ----- .../token/src/app/components/copy.module.scss | 6 - boxes/token/src/app/components/copy.tsx | 28 - .../src/app/components/dropdown.module.scss | 68 -- boxes/token/src/app/components/dropdown.tsx | 83 -- boxes/token/src/app/components/index.ts | 2 - .../src/app/components/popup.module.scss | 27 - boxes/token/src/app/components/popup.tsx | 35 - .../src/app/components/select.module.scss | 65 -- boxes/token/src/app/components/select.tsx | 81 -- boxes/token/src/app/components/terms.tsx | 10 - .../components/wallet_dropdown.module.scss | 9 - .../src/app/components/wallet_dropdown.tsx | 60 -- boxes/token/src/app/contract.module.scss | 55 - boxes/token/src/app/contract.tsx | 154 --- boxes/token/src/app/home.module.scss | 28 - boxes/token/src/app/home.tsx | 91 -- boxes/token/src/app/index.css | 86 -- boxes/token/src/app/index.html | 13 - boxes/token/src/app/index.tsx | 11 - boxes/token/src/assets/aztec_logo.svg | 8 - boxes/token/src/assets/check.svg | 3 - boxes/token/src/assets/copy.svg | 34 - boxes/token/src/assets/favicon.ico | Bin 4286 -> 0 bytes .../token/src/assets/soehne-leicht-kursiv.ttf | Bin 98204 -> 0 bytes boxes/token/src/assets/soehne-web-buch.woff2 | Bin 34312 -> 0 bytes .../assets/soehne-web-halbfett-kursiv.woff2 | Bin 37212 -> 0 bytes .../src/assets/soehne-web-halbfett.woff2 | Bin 34931 -> 0 bytes .../token/src/assets/soehne-web-kraftig.woff2 | Bin 32915 -> 0 bytes .../token/src/assets/soehne-web-leicht.woff2 | Bin 33891 -> 0 bytes boxes/token/src/config.ts | 30 - boxes/token/src/contracts/Nargo.toml | 11 - boxes/token/src/contracts/src/main.nr | 385 ------- boxes/token/src/contracts/src/types.nr | 4 - .../src/contracts/src/types/balance_set.nr | 113 --- .../src/contracts/src/types/balances_map.nr | 34 - .../src/contracts/src/types/token_note.nr | 123 --- .../contracts/src/types/transparent_note.nr | 104 -- .../src/scripts/call_contract_function.ts | 21 - boxes/token/src/scripts/deploy_contract.ts | 26 - boxes/token/src/scripts/index.ts | 4 - boxes/token/src/scripts/util.ts | 51 - .../src/scripts/view_contract_function.ts | 17 - boxes/token/src/typings.d.ts | 4 - boxes/token/tailwind.config.cjs | 39 - boxes/token/tests/token.contract.test.ts | 953 ------------------ boxes/token/tests/token_simulator.ts | 95 -- boxes/token/tsconfig.json | 24 - boxes/token/webpack.config.js | 105 -- boxes/yarn.lock | 588 ++++++++++- 107 files changed, 1082 insertions(+), 4576 deletions(-) delete mode 100644 boxes/blank-react/.prettierignore delete mode 100644 boxes/blank-react/.prettierrc.json create mode 100644 boxes/blank-react/index.html delete mode 100644 boxes/blank-react/src/@types/index.d.ts delete mode 100644 boxes/blank-react/src/app/components/contract_function_form.tsx delete mode 100644 boxes/blank-react/src/app/components/index.ts delete mode 100644 boxes/blank-react/src/app/components/popup.tsx delete mode 100644 boxes/blank-react/src/app/contract.tsx delete mode 100644 boxes/blank-react/src/app/home.tsx delete mode 100644 boxes/blank-react/src/app/hooks/useAccounts.tsx delete mode 100644 boxes/blank-react/src/app/hooks/useContract.tsx delete mode 100644 boxes/blank-react/src/app/index.css delete mode 100644 boxes/blank-react/src/app/index.html delete mode 100644 boxes/blank-react/src/app/index.tsx delete mode 100644 boxes/blank-react/src/assets/aztec_logo.svg delete mode 100644 boxes/blank-react/src/assets/check.svg delete mode 100644 boxes/blank-react/src/assets/copy.svg delete mode 100644 boxes/blank-react/src/assets/favicon.ico delete mode 100644 boxes/blank-react/src/assets/soehne-leicht-kursiv.ttf delete mode 100644 boxes/blank-react/src/assets/soehne-web-buch.woff2 delete mode 100644 boxes/blank-react/src/assets/soehne-web-halbfett-kursiv.woff2 delete mode 100644 boxes/blank-react/src/assets/soehne-web-halbfett.woff2 delete mode 100644 boxes/blank-react/src/assets/soehne-web-kraftig.woff2 delete mode 100644 boxes/blank-react/src/assets/soehne-web-leicht.woff2 delete mode 100644 boxes/blank-react/src/contracts/log/.b7ec86e927411b6b375064925b8088b0cd141771-audit.json delete mode 100644 boxes/blank-react/src/contracts/log/aztec-sandbox-2024-02-01.debug.log delete mode 120000 boxes/blank-react/src/contracts/log/aztec-sandbox.debug.log create mode 100644 boxes/blank-react/src/hooks/useContract.tsx create mode 100644 boxes/blank-react/src/hooks/useNumber.tsx create mode 100644 boxes/blank-react/src/index.tsx create mode 100644 boxes/blank-react/src/pages/contract.tsx create mode 100644 boxes/blank-react/src/pages/home.tsx delete mode 100644 boxes/blank-react/src/scripts/call_contract_function.ts delete mode 100644 boxes/blank-react/src/scripts/index.ts delete mode 100644 boxes/blank-react/src/scripts/util.ts delete mode 100644 boxes/blank-react/src/scripts/view_contract_function.ts create mode 100755 boxes/npx.js delete mode 100644 boxes/token/.eslintrc.cjs delete mode 100644 boxes/token/.gitignore delete mode 100644 boxes/token/.prettierignore delete mode 100644 boxes/token/.prettierrc.json delete mode 100644 boxes/token/README.md delete mode 100644 boxes/token/package.json delete mode 100644 boxes/token/postcss.config.cjs delete mode 100644 boxes/token/src/@types/index.d.ts delete mode 100644 boxes/token/src/app/components/contract_function_form.module.scss delete mode 100644 boxes/token/src/app/components/contract_function_form.tsx delete mode 100644 boxes/token/src/app/components/copy.module.scss delete mode 100644 boxes/token/src/app/components/copy.tsx delete mode 100644 boxes/token/src/app/components/dropdown.module.scss delete mode 100644 boxes/token/src/app/components/dropdown.tsx delete mode 100644 boxes/token/src/app/components/index.ts delete mode 100644 boxes/token/src/app/components/popup.module.scss delete mode 100644 boxes/token/src/app/components/popup.tsx delete mode 100644 boxes/token/src/app/components/select.module.scss delete mode 100644 boxes/token/src/app/components/select.tsx delete mode 100644 boxes/token/src/app/components/terms.tsx delete mode 100644 boxes/token/src/app/components/wallet_dropdown.module.scss delete mode 100644 boxes/token/src/app/components/wallet_dropdown.tsx delete mode 100644 boxes/token/src/app/contract.module.scss delete mode 100644 boxes/token/src/app/contract.tsx delete mode 100644 boxes/token/src/app/home.module.scss delete mode 100644 boxes/token/src/app/home.tsx delete mode 100644 boxes/token/src/app/index.css delete mode 100644 boxes/token/src/app/index.html delete mode 100644 boxes/token/src/app/index.tsx delete mode 100644 boxes/token/src/assets/aztec_logo.svg delete mode 100644 boxes/token/src/assets/check.svg delete mode 100644 boxes/token/src/assets/copy.svg delete mode 100644 boxes/token/src/assets/favicon.ico delete mode 100644 boxes/token/src/assets/soehne-leicht-kursiv.ttf delete mode 100644 boxes/token/src/assets/soehne-web-buch.woff2 delete mode 100644 boxes/token/src/assets/soehne-web-halbfett-kursiv.woff2 delete mode 100644 boxes/token/src/assets/soehne-web-halbfett.woff2 delete mode 100644 boxes/token/src/assets/soehne-web-kraftig.woff2 delete mode 100644 boxes/token/src/assets/soehne-web-leicht.woff2 delete mode 100644 boxes/token/src/config.ts delete mode 100644 boxes/token/src/contracts/Nargo.toml delete mode 100644 boxes/token/src/contracts/src/main.nr delete mode 100644 boxes/token/src/contracts/src/types.nr delete mode 100644 boxes/token/src/contracts/src/types/balance_set.nr delete mode 100644 boxes/token/src/contracts/src/types/balances_map.nr delete mode 100644 boxes/token/src/contracts/src/types/token_note.nr delete mode 100644 boxes/token/src/contracts/src/types/transparent_note.nr delete mode 100644 boxes/token/src/scripts/call_contract_function.ts delete mode 100644 boxes/token/src/scripts/deploy_contract.ts delete mode 100644 boxes/token/src/scripts/index.ts delete mode 100644 boxes/token/src/scripts/util.ts delete mode 100644 boxes/token/src/scripts/view_contract_function.ts delete mode 100644 boxes/token/src/typings.d.ts delete mode 100644 boxes/token/tailwind.config.cjs delete mode 100644 boxes/token/tests/token.contract.test.ts delete mode 100644 boxes/token/tests/token_simulator.ts delete mode 100644 boxes/token/tsconfig.json delete mode 100644 boxes/token/webpack.config.js diff --git a/boxes/.gitignore b/boxes/.gitignore index fd32083ab67..0b262eb6853 100644 --- a/boxes/.gitignore +++ b/boxes/.gitignore @@ -3,4 +3,4 @@ node_modules dest -src/contracts/target \ No newline at end of file +src/contracts/target diff --git a/boxes/blank-react/.eslintrc.cjs b/boxes/blank-react/.eslintrc.cjs index 8b84efd5d65..11d8d8c093c 100644 --- a/boxes/blank-react/.eslintrc.cjs +++ b/boxes/blank-react/.eslintrc.cjs @@ -1,63 +1,42 @@ module.exports = { root: true, env: { browser: true, es2020: true }, - parserOptions: { - project: './tsconfig.json', - }, extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:react-hooks/recommended', - 'plugin:import/recommended', - 'plugin:import/typescript', - 'prettier', + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:react-hooks/recommended", + "plugin:import/recommended", + "plugin:import/typescript", + "prettier", ], settings: { - 'import/resolver': { + "import/resolver": { typescript: true, node: true, }, }, - ignorePatterns: ['dest', 'webpack.config.js', '.eslintrc.cjs'], - parser: '@typescript-eslint/parser', - plugins: ['react-refresh'], - overrides: [ - { - files: ['*.ts', '*.tsx'], - parserOptions: { - project: true, - }, - }, - ], + ignorePatterns: ["dest", "webpack.config.js", ".eslintrc.cjs"], + parser: "@typescript-eslint/parser", + plugins: ["react-refresh"], rules: { - 'react-refresh/only-export-components': ['warn', { allowConstantExport: true }], - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-empty-function': 'off', - '@typescript-eslint/await-thenable': 'error', - '@typescript-eslint/no-floating-promises': 2, - '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }], - 'require-await': 2, - 'no-console': 'warn', - 'no-constant-condition': 'off', - camelcase: 2, - 'no-restricted-imports': [ - 'error', - { - patterns: [ - { - group: ['client-dest'], - message: "Fix this absolute garbage import. It's your duty to solve it before it spreads.", - }, - { - group: ['dest'], - message: 'You should not be importing from a build directory. Did you accidentally do a relative import?', - }, - ], - }, + "react-refresh/only-export-components": [ + "warn", + { allowConstantExport: true }, + ], + "@typescript-eslint/explicit-module-boundary-types": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/no-unused-vars": [ + "error", + { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }, ], - 'import/no-unresolved': 'error', - 'import/no-extraneous-dependencies': 'error', + "require-await": 2, + "no-console": "warn", + "no-constant-condition": "off", + camelcase: 2, + "import/no-unresolved": "error", + "import/no-extraneous-dependencies": "error", }, }; diff --git a/boxes/blank-react/.gitignore b/boxes/blank-react/.gitignore index d37f6988611..7e20050d72e 100644 --- a/boxes/blank-react/.gitignore +++ b/boxes/blank-react/.gitignore @@ -2,6 +2,7 @@ !.yarn/releases node_modules -dest +dist artifacts src/contracts/target +src/contracts/log diff --git a/boxes/blank-react/.prettierignore b/boxes/blank-react/.prettierignore deleted file mode 100644 index a72dfe54860..00000000000 --- a/boxes/blank-react/.prettierignore +++ /dev/null @@ -1,2 +0,0 @@ -src/artifacts/**/*.json -src/artifacts/**/*.ts \ No newline at end of file diff --git a/boxes/blank-react/.prettierrc.json b/boxes/blank-react/.prettierrc.json deleted file mode 100644 index 7c3bbec6848..00000000000 --- a/boxes/blank-react/.prettierrc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "singleQuote": true, - "trailingComma": "all", - "printWidth": 120, - "arrowParens": "avoid" -} diff --git a/boxes/blank-react/index.html b/boxes/blank-react/index.html new file mode 100644 index 00000000000..7e9084bc121 --- /dev/null +++ b/boxes/blank-react/index.html @@ -0,0 +1,25 @@ + + + + + + Private Token Noir Smart Contract + + +
+ + + + diff --git a/boxes/blank-react/package.json b/boxes/blank-react/package.json index bc074a55f52..ea02f332c28 100644 --- a/boxes/blank-react/package.json +++ b/boxes/blank-react/package.json @@ -3,15 +3,15 @@ "private": true, "version": "0.1.0", "type": "module", - "main": "./dest/index.js", + "main": "./dist/index.js", "scripts": { "compile": "cd src/contracts && ${AZTEC_NARGO:-aztec-nargo} compile", "codegen": "${AZTEC_CLI:-aztec-cli} codegen src/contracts/target -o artifacts --ts", "build": "yarn clean && yarn compile && yarn codegen && tsc -b && webpack", - "clean": "rm -rf ./dest .tsbuildinfo ./artifacts ./src/contracts/target", + "clean": "rm -rf ./dist .tsbuildinfo ./artifacts ./src/contracts/target", "prep": "yarn clean && yarn compile && yarn codegen", - "dev": "yarn prep && webpack serve --mode development", - "serve": "serve -p 3000 ./dest", + "dev": "webpack serve --mode development", + "serve": "serve -p 3000 ./dist", "formatting": "prettier --check ./src && eslint ./src", "formatting:fix": "prettier -w ./src", "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --runInBand" @@ -62,10 +62,12 @@ "eslint-plugin-prettier": "^5.0.1", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.3", + "html-webpack-plugin": "^5.6.0", "jest": "^29.6.4", "postcss": "^8.4.29", "postcss-loader": "^7.3.3", "prettier": "^3.1.1", + "react-toastify": "^10.0.4", "resolve-typescript-plugin": "^2.0.1", "stream-browserify": "^3.0.0", "style-loader": "^3.3.3", @@ -79,23 +81,11 @@ "webpack-cli": "^5.1.4", "webpack-dev-server": "^4.15.1" }, - "browserslist": { - "production": [ - ">0.5%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, "files": [ - "dest", + "dist", "src", "!*.test.*" ], - "types": "./dest/index.d.ts", + "types": "./dist/index.d.ts", "packageManager": "yarn@4.0.2" } diff --git a/boxes/blank-react/src/@types/index.d.ts b/boxes/blank-react/src/@types/index.d.ts deleted file mode 100644 index 3598bbcb0be..00000000000 --- a/boxes/blank-react/src/@types/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -declare module '*.svg' { - const content: any; - export default content; -} - -declare module '*.module.scss' { - const content: { [className: string]: string }; - export = content; -} diff --git a/boxes/blank-react/src/app/components/contract_function_form.tsx b/boxes/blank-react/src/app/components/contract_function_form.tsx deleted file mode 100644 index 8623cf0779a..00000000000 --- a/boxes/blank-react/src/app/components/contract_function_form.tsx +++ /dev/null @@ -1,188 +0,0 @@ -// import { useEffect } from 'react'; -// import { CONTRACT_ADDRESS_PARAM_NAMES, pxe } from '../../config.js'; -// import { callContractFunction, viewContractFunction } from '../../scripts/index.js'; -// import { convertArgs } from '../../scripts/util.js'; -// import { AztecAddress, CompleteAddress, ContractArtifact, Fr, FunctionArtifact } from '@aztec/aztec.js'; -// import { useFormik } from 'formik'; -// import * as Yup from 'yup'; - -// type NoirFunctionYupSchema = { -// // hack: add `any` at the end to get the array schema to typecheck -// // eslint-disable-next-line @typescript-eslint/no-explicit-any -// [key: string]: Yup.NumberSchema | Yup.ArraySchema | Yup.BooleanSchema | any; -// }; - -// type NoirFunctionFormValues = { -// [key: string]: string | number | number[] | boolean; -// }; - -// function generateYupSchema(functionAbi: FunctionArtifact, defaultAddress: string) { -// const parameterSchema: NoirFunctionYupSchema = {}; -// const initialValues: NoirFunctionFormValues = {}; -// for (const param of functionAbi.parameters) { -// if (CONTRACT_ADDRESS_PARAM_NAMES.includes(param.name)) { -// // these are hex strings instead, but yup doesn't support bigint so we convert back to bigint on execution -// parameterSchema[param.name] = Yup.string().required(); -// initialValues[param.name] = defaultAddress; -// continue; -// } -// switch (param.type.kind) { -// case 'field': -// parameterSchema[param.name] = Yup.number().required(); -// initialValues[param.name] = 100; -// break; -// // not really needed for private token, since we hide the nullifier helper method which has the array input -// case 'array': -// // eslint-disable-next-line no-case-declarations -// const arrayLength = param.type.length; -// parameterSchema[param.name] = Yup.array() -// .of(Yup.number()) -// .min(arrayLength) -// .max(arrayLength) -// .transform(function (value: number[], originalValue: string) { -// if (typeof originalValue === 'string') { -// return originalValue.split(',').map(Number); -// } -// return value; -// }); -// initialValues[param.name] = Array(arrayLength).fill( -// CONTRACT_ADDRESS_PARAM_NAMES.includes(param.name) ? defaultAddress : 200, -// ); -// break; -// case 'boolean': -// parameterSchema[param.name] = Yup.boolean().required(); -// initialValues[param.name] = false; -// break; -// } -// } -// return { validationSchema: Yup.object().shape(parameterSchema), initialValues }; -// } - -// async function handleFunctionCall( -// contractAddress: AztecAddress | undefined, -// contractArtifact: ContractArtifact, -// functionName: string, -// args: any, -// wallet: CompleteAddress, -// ) { -// const functionAbi = contractArtifact.functions.find(f => f.name === functionName)!; -// const typedArgs: any[] = convertArgs(functionAbi, args); - -// if (functionName === 'constructor' && !!wallet) { -// if (functionAbi === undefined) { -// throw new Error('Cannot find constructor in the ABI.'); -// } -// // hack: addresses are stored as string in the form to avoid bigint compatibility issues with formik -// // convert those back to bigints before sending - -// // for now, dont let user change the salt. requires some change to the form generation if we want to let user choose one -// // since everything is currently based on parsing the contractABI, and the salt parameter is not present there -// const salt = Fr.random(); -// return await deployContract(wallet, contractArtifact, typedArgs, salt, pxe.getPxe()); -// } - -// if (functionAbi.functionType === 'unconstrained') { -// return await viewContractFunction( -// contractAddress!, -// contractArtifact, -// functionName, -// typedArgs, -// pxe.getPxe(), -// wallet, -// ); -// } else { -// const txnReceipt = await callContractFunction( -// contractAddress!, -// contractArtifact, -// functionName, -// typedArgs, -// pxe.getPxe(), -// wallet, -// ); -// return `Transaction ${txnReceipt.status} on block number ${txnReceipt.blockNumber}`; -// } -// } - -// interface ContractFunctionFormProps { -// wallet: CompleteAddress; -// contractAddress?: AztecAddress; -// contractArtifact: ContractArtifact; -// functionArtifact: FunctionArtifact; -// defaultAddress: string; -// title?: string; -// buttonText?: string; -// isLoading: boolean; -// disabled: boolean; -// onSubmit: () => void; -// onSuccess: (result: any) => void; -// onError: (msg: string) => void; -// } - -// export function ContractFunctionForm({ -// wallet, -// contractAddress, -// contractArtifact, -// functionArtifact, -// defaultAddress, -// buttonText = 'Submit', -// isLoading, -// disabled, -// onSubmit, -// onSuccess, -// onError, -// }: ContractFunctionFormProps) { -// const { validationSchema, initialValues } = generateYupSchema(functionArtifact, defaultAddress); -// const formik = useFormik({ -// initialValues: initialValues, -// validationSchema: validationSchema, -// onSubmit: async (values: any) => { -// onSubmit(); -// try { -// const result = await handleFunctionCall( -// contractAddress, -// contractArtifact, -// functionArtifact.name, -// values, -// wallet, -// ); -// onSuccess(result); -// } catch (e: any) { -// onError(e.message); -// } -// }, -// }); - -// useEffect(() => { -// console.log(functionArtifact); -// }, []); - -// return ( -//
-// {functionArtifact.parameters.map(input => ( -//
-// -// -// {formik.touched[input.name] && formik.errors[input.name] && ( -//
{formik.errors[input.name]?.toString()}
-// )} -//
-// ))} -// {isLoading ? ( -//
loading...
-// ) : ( -// -// )} -//
-// ); -// } diff --git a/boxes/blank-react/src/app/components/index.ts b/boxes/blank-react/src/app/components/index.ts deleted file mode 100644 index 1e6803a9fd1..00000000000 --- a/boxes/blank-react/src/app/components/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './contract_function_form.js'; -export * from './popup.js'; diff --git a/boxes/blank-react/src/app/components/popup.tsx b/boxes/blank-react/src/app/components/popup.tsx deleted file mode 100644 index 36be1e5852c..00000000000 --- a/boxes/blank-react/src/app/components/popup.tsx +++ /dev/null @@ -1,26 +0,0 @@ -interface Props { - children: string; - buttonText?: string; - isWarning?: boolean; - onClose?: () => void; -} - -export function Popup({ children, buttonText = 'Close', isWarning = false, onClose }: Props) { - return ( -
- {isWarning && ( - - )} -
{children}
- -
- ); -} diff --git a/boxes/blank-react/src/app/contract.tsx b/boxes/blank-react/src/app/contract.tsx deleted file mode 100644 index 69c37ace90c..00000000000 --- a/boxes/blank-react/src/app/contract.tsx +++ /dev/null @@ -1,145 +0,0 @@ -import { contractArtifact } from '../config.js'; -// import { ContractFunctionForm, Popup } from './components/index.js'; -import { AztecAddress, CompleteAddress, FunctionArtifact } from '@aztec/aztec.js'; -import { ReactNode, useEffect, useState } from 'react'; - -const functionTypeSortOrder = { - secret: 0, - open: 1, - unconstrained: 2, -}; - -interface Props { - wallet: CompleteAddress; -} - -export function Contract({ address }: { address: AztecAddress }) { - useEffect(() => { - console.log(address); - }, []); - - const showForm = ({ currentTarget }: React.FormEvent) => { - const index = parseInt(currentTarget.value); - console.log(contractArtifact.functions[index]); - }; - - return ( -
-

Name: {contractArtifact.name}

- - -
- ); -} - -// export function Contract({ wallet }: Props) { -// const [contractAddress, setContractAddress] = useState(); -// const [processingFunction, setProcessingFunction] = useState(''); -// const [errorMsg, setError] = useState(''); -// const [selectedFunctionIndex, setSelectedFunctionIndex] = useState(-1); -// const [result, setResult] = useState(''); - -// const handleSubmitForm = (functionName: string) => setProcessingFunction(functionName); -// const handleContractDeployed = (address: AztecAddress) => { -// setContractAddress(address); -// setResult(`Contract deployed at: ${address}`); -// }; -// const handleResult = (returnValues: any) => { -// // TODO: serialize returnValues to string according to the returnTypes defined in the function abi. -// setResult(`Return values: ${returnValues}`); -// }; -// const handleClosePopup = () => { -// setResult(''); -// setError(''); -// setProcessingFunction(''); -// }; - -// const constructorAbi = contractArtifact.functions.find(f => f.name === 'constructor')!; -// const hasResult = !!(result || errorMsg); - -// function renderCardContent(contractAddress?: AztecAddress): ReactNode { -// if (contractAddress) { -// const functions = contractArtifact.functions -// .filter(f => f.name !== 'constructor' && !f.isInternal) -// .sort((a, b) => functionTypeSortOrder[a.functionType] - functionTypeSortOrder[b.functionType]); - -// if (selectedFunctionIndex === -1) { -// return ( -//
-//
-//
{`${contractArtifact.name}`}
-//
-//
-// {functions.map((functionAbi: FunctionArtifact, index: number) => ( -// -// ))} -//
-//
-// ); -// } - -// const selectedFunctionAbi = functions[selectedFunctionIndex]; - -// return ( -// <> -// handleSubmitForm(selectedFunctionAbi.name)} -// onSuccess={handleResult} -// onError={setError} -// /> -// -// ); -// } - -// return ( -// handleSubmitForm('constructor')} -// onSuccess={handleContractDeployed} -// onError={setError} -// /> -// ); -// } - -// return ( -// <> -// {renderCardContent(contractAddress)} -// {!!(errorMsg || result) && ( -// -// {errorMsg || result} -// -// )} -// -// ); -// } diff --git a/boxes/blank-react/src/app/home.tsx b/boxes/blank-react/src/app/home.tsx deleted file mode 100644 index 56944311f20..00000000000 --- a/boxes/blank-react/src/app/home.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { pxe } from '../config.js'; -import { Contract } from './contract.js'; -import { useEffect, useRef, useState } from 'react'; -import { useAccount } from './hooks/useAccounts.js'; -import { convertArgs } from '../scripts/util.js'; -import { AztecAddress, CompleteAddress, ContractArtifact, DeployMethod, Fr, PXE } from '@aztec/aztec.js'; -import { useContract } from './hooks/useContract.js'; - -export function Home() { - const [deploymentAccount, setDeploymentAccount] = useState(); - const accounts = useAccount(); - const { deploy, contract } = useContract({ deployer: deploymentAccount }); - - const selectWallet = ({ currentTarget }: React.FormEvent) => { - if (!accounts) return; - const index = parseInt(currentTarget.value); - setDeploymentAccount(accounts[index]); - }; - - if (!contract) { - return ( -
- - - -
- ); - } - - return ; -} diff --git a/boxes/blank-react/src/app/hooks/useAccounts.tsx b/boxes/blank-react/src/app/hooks/useAccounts.tsx deleted file mode 100644 index 4dd99b395f3..00000000000 --- a/boxes/blank-react/src/app/hooks/useAccounts.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { pxe } from '../../config.js'; -import { CompleteAddress } from '@aztec/aztec.js'; -import { useEffect, useState } from 'react'; - -export function useAccount() { - const [accounts, setAccounts] = useState(); - - const getAccounts = async () => { - const acc = await pxe.getPxe().getRegisteredAccounts(); - setAccounts(acc || []); - }; - - useEffect(() => { - if (!accounts) { - getAccounts(); - } - }, []); - - return accounts; -} diff --git a/boxes/blank-react/src/app/hooks/useContract.tsx b/boxes/blank-react/src/app/hooks/useContract.tsx deleted file mode 100644 index 42fb47676d1..00000000000 --- a/boxes/blank-react/src/app/hooks/useContract.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { useState } from 'react'; -import { contractArtifact, pxe } from '../../config.js'; - -import { convertArgs } from '../../scripts/util.js'; -import { AztecAddress, CompleteAddress, Contract, DeployMethod, Fr } from '@aztec/aztec.js'; - -export function useContract({ deployer }: { deployer: CompleteAddress | undefined }) { - const [contract, setContract] = useState(); - - const deploy = async (e: React.FormEvent) => { - e.preventDefault(); - if (!deployer) return; - - const salt = Fr.random(); - const functionAbi = contractArtifact.functions.find(f => f.name === 'constructor')!; - const typedArgs: any[] = convertArgs(functionAbi, []); - - const tx = new DeployMethod( - deployer.publicKey, - pxe.getPxe(), - contractArtifact, - (a, w) => Contract.at(a, contractArtifact, w), - typedArgs, - ).send({ - contractAddressSalt: salt, - }); - - const receipt = await tx.wait(); - setContract(receipt.contractAddress); - }; - - return { deploy, contract }; -} diff --git a/boxes/blank-react/src/app/index.css b/boxes/blank-react/src/app/index.css deleted file mode 100644 index bcc32ed8c27..00000000000 --- a/boxes/blank-react/src/app/index.css +++ /dev/null @@ -1,40 +0,0 @@ -:root { - line-height: 1.5; - font-weight: 400; - - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - text-rendering: optimizeLegibility; - -webkit-text-size-adjust: 100%; - overflow: hidden; - - --foreground-rgb: 0, 0, 0; - --background-start-rgb: 214, 219, 220; - --background-end-rgb: 255, 255, 255; - - color: #213547; - background-color: #ffffff; -} - -body { - color: rgb(var(--foreground-rgb)); - background: linear-gradient(#f6fbfc, #d8d4e7); -} - -#root { - width: 100%; - max-width: 1280px; - margin: 0 auto; - padding: 0rem; - text-align: center; -} - -body { - margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; -} diff --git a/boxes/blank-react/src/app/index.html b/boxes/blank-react/src/app/index.html deleted file mode 100644 index 57ece0ccf91..00000000000 --- a/boxes/blank-react/src/app/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - Private Token Noir Smart Contract - - -
- - - diff --git a/boxes/blank-react/src/app/index.tsx b/boxes/blank-react/src/app/index.tsx deleted file mode 100644 index 451c1c89648..00000000000 --- a/boxes/blank-react/src/app/index.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { Home } from './home.js'; -import './index.css'; -import * as React from 'react'; -import * as ReactDOM from 'react-dom/client'; - -const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement); -root.render( - - - , -); diff --git a/boxes/blank-react/src/assets/aztec_logo.svg b/boxes/blank-react/src/assets/aztec_logo.svg deleted file mode 100644 index 64a3648326d..00000000000 --- a/boxes/blank-react/src/assets/aztec_logo.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/boxes/blank-react/src/assets/check.svg b/boxes/blank-react/src/assets/check.svg deleted file mode 100644 index cabb79ea3d4..00000000000 --- a/boxes/blank-react/src/assets/check.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/boxes/blank-react/src/assets/copy.svg b/boxes/blank-react/src/assets/copy.svg deleted file mode 100644 index 022ddbd0e91..00000000000 --- a/boxes/blank-react/src/assets/copy.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/boxes/blank-react/src/assets/favicon.ico b/boxes/blank-react/src/assets/favicon.ico deleted file mode 100644 index 1c85cef482e601f1fe5e291df4e97a3aef958676..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmcJRv2KGf5QdEy7&=g?Qb*#kQ<4XWRK_Ig17!$p1Hj$6IXcY0Os7Ar&J z%yag+Ws^k_r?_#M-5c9%UC6S@R*$ivC6tCK>`)p8*eCL99>hI?4eM(k#@MJ{C=FBC zp)^R?zBRb8eQA)eciHlb`s@pASjyqllTvo4*Jo>RW&6-Dmpw-Vv2(DikA8Cu z^uuy)E3Wvr5`~{C6m+4|1HBSaVqz)1=1Ki7{1dOc5Cq73Mdt zjz3BLeo31}lO57}vq`E$78gw#MRiidRa_+n&!U>=JmYh`hSzco$8rwN#W~yD%wQHX GiTwx67ZB?J diff --git a/boxes/blank-react/src/assets/soehne-leicht-kursiv.ttf b/boxes/blank-react/src/assets/soehne-leicht-kursiv.ttf deleted file mode 100644 index f3dd8bc7bafcc290a8a5fa1b4d213a04da095a5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98204 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 M(rVbzDo$(S68)HiJ^%m! diff --git a/boxes/blank-react/src/assets/soehne-web-halbfett-kursiv.woff2 b/boxes/blank-react/src/assets/soehne-web-halbfett-kursiv.woff2 deleted file mode 100644 index a31e1f70ab975d9104c253a99d4eb2fc11e51fef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37212 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 A9RL6T diff --git a/boxes/blank-react/src/assets/soehne-web-halbfett.woff2 b/boxes/blank-react/src/assets/soehne-web-halbfett.woff2 deleted file mode 100644 index 66ce02ba66925fc758e143ae583ce1ce1fd003ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34931 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 H)0?;ef)Im^ diff --git a/boxes/blank-react/src/assets/soehne-web-kraftig.woff2 b/boxes/blank-react/src/assets/soehne-web-kraftig.woff2 deleted file mode 100644 index 412a9355afc86d3a4f388ad3b7031d428b1ceeff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32915 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 !IGNORE_FUNCTIONS.includes(f.name), +); diff --git a/boxes/blank-react/src/contracts/log/.b7ec86e927411b6b375064925b8088b0cd141771-audit.json b/boxes/blank-react/src/contracts/log/.b7ec86e927411b6b375064925b8088b0cd141771-audit.json deleted file mode 100644 index fa7254f7300..00000000000 --- a/boxes/blank-react/src/contracts/log/.b7ec86e927411b6b375064925b8088b0cd141771-audit.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "keep": { - "days": false, - "amount": 5 - }, - "auditLog": "log/.b7ec86e927411b6b375064925b8088b0cd141771-audit.json", - "files": [ - { - "date": 1706781698517, - "name": "log/aztec-sandbox-2024-02-01.debug.log", - "hash": "be6605552baab8ccac80b85f9b173dfbf2652f4b6ae69d90dcfa0b09ddf4594c" - } - ], - "hashType": "sha256" -} \ No newline at end of file diff --git a/boxes/blank-react/src/contracts/log/aztec-sandbox-2024-02-01.debug.log b/boxes/blank-react/src/contracts/log/aztec-sandbox-2024-02-01.debug.log deleted file mode 100644 index 028e25bee4f..00000000000 --- a/boxes/blank-react/src/contracts/log/aztec-sandbox-2024-02-01.debug.log +++ /dev/null @@ -1,5 +0,0 @@ -{"level":"info","message":"Debug logs will be written to /Users/zpedro/Documents/GitHub/aztec-packages/boxes/blank-react/src/contracts/log/aztec-sandbox.debug.log","namespace":"aztec:sandbox","timestamp":"2024-02-01T10:01:38.521Z"} -{"level":"info","message":"Setting up Aztec Sandbox v0.1.0 please stand by...","namespace":"aztec:sandbox","timestamp":"2024-02-01T10:01:38.523Z"} -{"level":"warn","message":"Failed to connect to Ethereum node at http://127.0.0.1:8545/. Retrying...","namespace":"aztec:sandbox","timestamp":"2024-02-01T10:01:39.704Z"} -{"level":"warn","message":"Failed to connect to Ethereum node at http://127.0.0.1:8545/. Retrying...","namespace":"aztec:sandbox","timestamp":"2024-02-01T10:01:41.801Z"} -{"level":"info","message":"Shutting down...","namespace":"aztec:sandbox","timestamp":"2024-02-01T10:01:42.205Z"} diff --git a/boxes/blank-react/src/contracts/log/aztec-sandbox.debug.log b/boxes/blank-react/src/contracts/log/aztec-sandbox.debug.log deleted file mode 120000 index fd04a7caf58..00000000000 --- a/boxes/blank-react/src/contracts/log/aztec-sandbox.debug.log +++ /dev/null @@ -1 +0,0 @@ -aztec-sandbox-2024-02-01.debug.log \ No newline at end of file diff --git a/boxes/blank-react/src/contracts/src/main.nr b/boxes/blank-react/src/contracts/src/main.nr index 4ff9f9739ea..bb216edcf27 100644 --- a/boxes/blank-react/src/contracts/src/main.nr +++ b/boxes/blank-react/src/contracts/src/main.nr @@ -1,9 +1,6 @@ contract Blank { use dep::aztec::{ abi, - oracle::{ - get_public_key::get_public_key, - }, protocol_types::address::AztecAddress, state_vars::singleton::Singleton, context::{PrivateContext, PublicContext, Context}, @@ -14,12 +11,12 @@ contract Blank { }, }; - use dep::value_note::value_note::{ValueNote, ValueNoteMethods, VALUE_NOTE_LEN}; + use dep::value_note::value_note::{ValueNote, VALUE_NOTE_LEN}; use dep::easy_private_state::easy_private_state::EasyPrivateUint; struct Storage { - number: Singleton, + number: Singleton, } impl Storage { @@ -27,28 +24,26 @@ contract Blank { Storage { number: Singleton::new( context, - 1, - ValueNoteMethods + 1 ), } } } #[aztec(private)] - fn constructor(number: Field) { - let mut new_number = ValueNote::new(number, context.msg_sender()); - storage.number.initialize(&mut new_number, Option::none(), true); + fn constructor(number: Field, owner: AztecAddress) { + let mut new_number = ValueNote::new(number, owner); + storage.number.initialize(&mut new_number, true); } #[aztec(private)] fn setNumber(number: Field) { let mut new_number = ValueNote::new(number, context.msg_sender()); - let new_number = storage.number.replace(&mut new_number, true); + storage.number.replace(&mut new_number, true); } - #[aztec(public)] - unconstrained fn getNumber(owner: AztecAddress) -> Note { - storage.number.get_note(true) + unconstrained fn getNumber() -> pub ValueNote { + storage.number.view_note() } unconstrained fn compute_note_hash_and_nullifier( @@ -58,6 +53,6 @@ contract Blank { serialized_note: [Field; VALUE_NOTE_LEN] ) -> pub [Field; 4] { let note_header = NoteHeader::new(contract_address, nonce, storage_slot); - note_utils::compute_note_hash_and_nullifier(ValueNoteMethods, note_header, serialized_note) + note_utils::compute_note_hash_and_nullifier(ValueNote::deserialize, note_header, serialized_note) } } diff --git a/boxes/blank-react/src/hooks/useContract.tsx b/boxes/blank-react/src/hooks/useContract.tsx new file mode 100644 index 00000000000..e8b0b01b88f --- /dev/null +++ b/boxes/blank-react/src/hooks/useContract.tsx @@ -0,0 +1,39 @@ +import { useState } from "react"; +import { deployerEnv } from "../config"; + +import { Contract, ContractDeployer, Fr } from "@aztec/aztec.js"; +import { BlankContract } from "../../artifacts/Blank"; +import { toast } from "react-toastify"; + +export function useContract() { + const { artifact, at } = BlankContract; + const [wait, setWait] = useState(false); + const [contract, setContract] = useState(); + + const deploy = async (e: React.FormEvent) => { + e.preventDefault(); + + setWait(true); + const contractDeployer = new ContractDeployer(artifact, deployerEnv.pxe); + const wallet = await deployerEnv.getWallet(); + + const salt = Fr.random(); + const tx = contractDeployer + .deploy(Fr.random(), wallet.getCompleteAddress().address) + .send({ contractAddressSalt: salt }); + const { contractAddress } = await toast.promise(tx.wait(), { + pending: "Deploying contract...", + success: { + render: ({ data }) => `Number: ${data.contractAddress}`, + }, + error: "Error deploying contract", + }); + + const deployerWallet = await deployerEnv.getWallet(); + const contract = await at(contractAddress!, deployerWallet); + setContract(contract); + setWait(false); + }; + + return { deploy, contract, wait }; +} diff --git a/boxes/blank-react/src/hooks/useNumber.tsx b/boxes/blank-react/src/hooks/useNumber.tsx new file mode 100644 index 00000000000..ca7c76d5f48 --- /dev/null +++ b/boxes/blank-react/src/hooks/useNumber.tsx @@ -0,0 +1,35 @@ +import { useState } from 'react'; +import { Contract } from '@aztec/aztec.js'; +import { toast } from 'react-toastify'; + +export function useNumber({ contract }: { contract: Contract }) { + const [wait, setWait] = useState(false); + + const getNumber = async (e: React.FormEvent) => { + e.preventDefault(); + + setWait(true); + const viewTxReceipt = await contract!.methods.getNumber().view(); + toast(`Number is: ${viewTxReceipt.value}`); + setWait(false); + }; + + const setNumber = async (e: React.FormEvent) => { + e.preventDefault(); + + const el = e.currentTarget.elements.namedItem('numberToSet') as HTMLInputElement; + if (el) { + setWait(true); + + const value = BigInt(el.value); + await toast.promise(contract!.methods.setNumber(value).send().wait(), { + pending: 'Setting number...', + success: `Number set to: ${value}`, + error: 'Error setting number', + }); + setWait(false); + } + }; + + return { getNumber, setNumber, wait }; +} diff --git a/boxes/blank-react/src/index.tsx b/boxes/blank-react/src/index.tsx new file mode 100644 index 00000000000..e71d6ce7dcf --- /dev/null +++ b/boxes/blank-react/src/index.tsx @@ -0,0 +1,14 @@ +import { Home } from "./pages/home"; +import "react-toastify/dist/ReactToastify.css"; +import * as ReactDOM from "react-dom/client"; +import { ToastContainer } from "react-toastify"; + +const root = ReactDOM.createRoot( + document.getElementById("root") as HTMLElement, +); +root.render( + <> + + + , +); diff --git a/boxes/blank-react/src/pages/contract.tsx b/boxes/blank-react/src/pages/contract.tsx new file mode 100644 index 00000000000..1310eae0c48 --- /dev/null +++ b/boxes/blank-react/src/pages/contract.tsx @@ -0,0 +1,58 @@ +import { useState } from "react"; +import { Contract } from "@aztec/aztec.js"; +import { useNumber } from "../hooks/useNumber"; +import { filteredInterface } from "../config"; + +export function ContractComponent({ contract }: { contract: Contract }) { + const [showInput, setShowInput] = useState(true); + const { wait, getNumber, setNumber } = useNumber({ contract }); + + return ( +
+

Your Contract

+
+ + + +
+ +
+ + + + +
+
+ ); +} diff --git a/boxes/blank-react/src/pages/home.tsx b/boxes/blank-react/src/pages/home.tsx new file mode 100644 index 00000000000..8c0fb123667 --- /dev/null +++ b/boxes/blank-react/src/pages/home.tsx @@ -0,0 +1,18 @@ +import { ContractComponent } from "./contract"; +import { useContract } from "../hooks/useContract"; + +export function Home() { + const { contract, deploy, wait } = useContract(); + + if (!contract) { + return ( +
+ +
+ ); + } + + return ; +} diff --git a/boxes/blank-react/src/scripts/call_contract_function.ts b/boxes/blank-react/src/scripts/call_contract_function.ts deleted file mode 100644 index d80037eed84..00000000000 --- a/boxes/blank-react/src/scripts/call_contract_function.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { getWallet } from './util.js'; -import { AztecAddress, CompleteAddress, Contract, ContractArtifact, FieldsOf, PXE, TxReceipt } from '@aztec/aztec.js'; - -export async function callContractFunction( - address: AztecAddress, - artifact: ContractArtifact, - functionName: string, - typedArgs: any[], // for the exposed functions, this is an array of field elements Fr[] - pxe: PXE, - wallet: CompleteAddress, -): Promise> { - // selectedWallet is how we specify the "sender" of the transaction - const selectedWallet = await getWallet(wallet, pxe); - - // TODO: switch to the generated typescript class? - const contract = await Contract.at(address, artifact, selectedWallet); - - return contract.methods[functionName](...typedArgs) - .send() - .wait(); -} diff --git a/boxes/blank-react/src/scripts/index.ts b/boxes/blank-react/src/scripts/index.ts deleted file mode 100644 index a5d6bcf1a9b..00000000000 --- a/boxes/blank-react/src/scripts/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './call_contract_function.js'; -export * from './deploy_contract.js'; -export { getWallet } from './util.js'; -export * from './view_contract_function.js'; diff --git a/boxes/blank-react/src/scripts/util.ts b/boxes/blank-react/src/scripts/util.ts deleted file mode 100644 index 3f9d05bfdcb..00000000000 --- a/boxes/blank-react/src/scripts/util.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { AccountWallet, CompleteAddress, Fr, FunctionArtifact, PXE, encodeArguments } from '@aztec/aztec.js'; - -import { getInitialTestAccountsWallets } from '@aztec/accounts/testing'; - -export function convertArgs(functionAbi: FunctionArtifact, args: any): Fr[] { - const untypedArgs = functionAbi.parameters.map(param => { - switch (param.type.kind) { - case 'field': - // hack: addresses are stored as string in the form to avoid bigint compatibility issues with formik - // convert those back to bigints before turning into Fr - return BigInt(args[param.name]); - default: - // they are all fields in the privatetoken contract, need more testing on other types - return args[param.name]; - } - }); - - return encodeArguments(functionAbi, untypedArgs); -} - -/** - * terminology is confusing, but the `account` points to a smart contract's public key information - * while the "wallet" has the account's private key and is used to sign transactions - * we need the "wallet" to actually submit transactions using the "account" identity - * @param account - * @param pxe - * @returns - */ -export async function getWallet(account: CompleteAddress, pxe: PXE): Promise { - const accountWallets: AccountWallet[] = await getInitialTestAccountsWallets(pxe); - const selectedWallet: AccountWallet = accountWallets.find(w => w.getAddress().equals(account.address))!; - if (!selectedWallet) { - throw new Error(`Wallet for account ${account.address.toShortString()} not found in the PXE.`); - } - return selectedWallet; -} diff --git a/boxes/blank-react/src/scripts/view_contract_function.ts b/boxes/blank-react/src/scripts/view_contract_function.ts deleted file mode 100644 index beff0032c77..00000000000 --- a/boxes/blank-react/src/scripts/view_contract_function.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { getWallet } from './util.js'; -import { AztecAddress, CompleteAddress, Contract, ContractArtifact, PXE } from '@aztec/aztec.js'; - -export async function viewContractFunction( - address: AztecAddress, - artifact: ContractArtifact, - functionName: string, - typedArgs: any[], - pxe: PXE, - wallet: CompleteAddress, -) { - // we specify the account that is calling the view function by passing in the wallet to the Contract - const selectedWallet = await getWallet(wallet, pxe); - const contract = await Contract.at(address, artifact, selectedWallet); - - return await contract.methods[functionName](...typedArgs).view({ from: wallet.address }); -} diff --git a/boxes/blank-react/tests/blank.contract.test.ts b/boxes/blank-react/tests/blank.contract.test.ts index c70087824cc..789e952f492 100644 --- a/boxes/blank-react/tests/blank.contract.test.ts +++ b/boxes/blank-react/tests/blank.contract.test.ts @@ -1,70 +1,37 @@ import { BlankContract } from '../artifacts/Blank.js'; -import { callContractFunction, getWallet } from '../src/scripts/index.js'; -import { - AccountWallet, - AztecAddress, - CompleteAddress, - DeployMethod, - Fr, - TxStatus, - Wallet, - createDebugLogger, -} from '@aztec/aztec.js'; -import { pxe } from '../src/config.js'; -import { convertArgs } from '../src/scripts/util.js'; +import { AccountWallet, Fr, Contract, TxStatus, createDebugLogger, ContractDeployer } from '@aztec/aztec.js'; +import { deployerEnv } from '../src/config.js'; const logger = createDebugLogger('aztec:http-pxe-client'); -async function deployZKContract(owner: CompleteAddress, wallet: Wallet, pxe: PXE) { - logger('Deploying Blank contract...'); - - const { artifact } = BlankContract; - const salt = Fr.random(); - const functionAbi = artifact.functions.find(f => f.name === 'constructor')!; - const typedArgs: any[] = convertArgs(functionAbi, []); - const tx = new DeployMethod( - owner.publicKey, - pxe.getPxe(), - artifact, - (a, w) => Contract.at(a, artifact, w), - typedArgs, - ).send({ - contractAddressSalt: salt, - }); - - const { contractAddress } = await tx.wait(); - logger(`L2 contract deployed at ${contractAddress}`); - return BlankContract.at(contractAddress!, wallet); -} - describe('ZK Contract Tests', () => { let wallet: AccountWallet; - let owner: CompleteAddress; - let _account2: CompleteAddress; - let _account3: CompleteAddress; let contract: Contract; - let contractAddress: AztecAddress; + const { artifact } = BlankContract; + const numberToSet = Fr.random(); beforeAll(async () => { - const accounts = await pxe.getPxe().getRegisteredAccounts(); - [owner, _account2, _account3] = accounts; - - wallet = await getWallet(owner, pxe.getPxe()); - - contract = await deployZKContract(owner, wallet, pxe.getPxe()); - contractAddress = contract.address; + wallet = await deployerEnv.getWallet(); + const pxe = deployerEnv.pxe; + const deployer = new ContractDeployer(artifact, pxe); + const salt = Fr.random(); + const tx = deployer.deploy(Fr.random(), wallet.getCompleteAddress().address).send({ contractAddressSalt: salt }); + await tx.wait(); + const { contractAddress } = await tx.getReceipt(); + contract = await BlankContract.at(contractAddress!, wallet); + + logger(`L2 contract deployed at ${contractAddress}`); }, 60000); - test('call succeeds after deploy', async () => { - const callTxReceipt = await callContractFunction( - contractAddress, - contract.artifact, - 'getPublicKey', - [owner.address.toField()], - pxe.getPxe(), - owner, - ); + test('Can set a number', async () => { + logger(`${await wallet.getRegisteredAccounts()}`); + const callTxReceipt = await contract.methods.setNumber(numberToSet).send().wait(); expect(callTxReceipt.status).toBe(TxStatus.MINED); }, 40000); + + test('Can read a number', async () => { + const viewTxReceipt = await contract.methods.getNumber().view(); + expect(numberToSet.toBigInt()).toEqual(viewTxReceipt.value); + }, 40000); }); diff --git a/boxes/blank-react/tsconfig.json b/boxes/blank-react/tsconfig.json index c5f7d9ab2ad..76a1c63ac9b 100644 --- a/boxes/blank-react/tsconfig.json +++ b/boxes/blank-react/tsconfig.json @@ -1,11 +1,11 @@ { "compilerOptions": { - "outDir": "dest", + "outDir": "dist", "tsBuildInfoFile": ".tsbuildinfo", "target": "es2020", "lib": ["esnext", "dom", "DOM.Iterable"], - "module": "NodeNext", - "moduleResolution": "NodeNext", + "module": "ESNext", + "moduleResolution": "Bundler", "strict": true, "declaration": true, "allowSyntheticDefaultImports": true, @@ -20,5 +20,10 @@ "skipLibCheck": true, "jsx": "react-jsx" }, - "include": ["src/**/*.ts", "tests", "src/contracts/target/*.json", "artifacts/**/*.ts"] + "include": [ + "src/**/*.ts*", + "tests/**/*.ts", + "src/contracts/target/*.json", + "artifacts/**/*.ts" + ] } diff --git a/boxes/blank-react/webpack.config.js b/boxes/blank-react/webpack.config.js index 6e825d25aaf..7746f6e0b16 100644 --- a/boxes/blank-react/webpack.config.js +++ b/boxes/blank-react/webpack.config.js @@ -1,85 +1,40 @@ -import CopyWebpackPlugin from 'copy-webpack-plugin'; -import { createRequire } from 'module'; -import { dirname, resolve } from 'path'; -import ResolveTypeScriptPlugin from 'resolve-typescript-plugin'; -import { fileURLToPath } from 'url'; -import webpack from 'webpack'; - +import { createRequire } from "module"; +import webpack from "webpack"; +import HtmlWebpackPlugin from "html-webpack-plugin"; const require = createRequire(import.meta.url); export default (_, argv) => ({ - target: 'web', - mode: 'production', - devtool: 'source-map', + target: "web", + mode: "production", + devtool: "source-map", entry: { - main: './src/app/index.tsx', + main: "./src/index.tsx", }, module: { rules: [ { test: /\.tsx?$/, - use: 'ts-loader', + use: "ts-loader", }, { test: /\.css$/i, - use: ['style-loader', 'css-loader', 'postcss-loader'], - }, - { - test: /\.module\.scss$/, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - modules: { - localIdentName: '[local]_[hash:base64:5]', - }, - }, - }, - 'sass-loader', - ], - }, - { - test: /\.(woff|woff2|eot|ttf|otf)$/, - type: 'asset/resource', - }, - { - test: /\.scss$/, - exclude: /\.module\.scss$/, - use: ['style-loader', 'css-loader', 'sass-loader'], + use: ["style-loader", "css-loader", "postcss-loader"], }, ], }, - output: { - path: resolve(dirname(fileURLToPath(import.meta.url)), './dest'), - filename: 'index.js', - }, plugins: [ + new HtmlWebpackPlugin({ + template: "./index.html", + }), new webpack.DefinePlugin({ - 'process.env': { - NODE_ENV: JSON.stringify(argv.mode || 'production'), + "process.env": { + NODE_ENV: JSON.stringify(argv.mode || "production"), }, }), - new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] }), - new CopyWebpackPlugin({ - patterns: [ - { - from: './src/assets', - }, - { - from: './src/app/index.html', - to: 'index.html', - }, - ], - }), + new webpack.ProvidePlugin({ Buffer: ["buffer", "Buffer"] }), ], resolve: { - plugins: [new ResolveTypeScriptPlugin()], - alias: { - // All node specific code, wherever it's located, should be imported as below. - // Provides a clean and simple way to always strip out the node code for the web build. - './node/index.js': false, - }, + extensions: [".tsx", ".ts", ".js"], fallback: { crypto: false, os: false, @@ -87,19 +42,17 @@ export default (_, argv) => ({ path: false, url: false, worker_threads: false, - events: require.resolve('events/'), - buffer: require.resolve('buffer/'), - util: require.resolve('util/'), - stream: require.resolve('stream-browserify'), - string_decoder: require.resolve('string_decoder/'), - tty: require.resolve('tty-browserify'), + events: require.resolve("events/"), + buffer: require.resolve("buffer/"), + util: require.resolve("util/"), + stream: require.resolve("stream-browserify"), + string_decoder: require.resolve("string_decoder/"), + tty: require.resolve("tty-browserify"), }, }, devServer: { port: 5173, historyApiFallback: true, - client: { - overlay: false, - }, + open: true, }, }); diff --git a/boxes/blank/tests/blank.contract.test.ts b/boxes/blank/tests/blank.contract.test.ts index 34515dce208..6a422177aaf 100644 --- a/boxes/blank/tests/blank.contract.test.ts +++ b/boxes/blank/tests/blank.contract.test.ts @@ -37,7 +37,7 @@ describe('ZK Contract Tests', () => { wallet = await getWallet(owner, pxe.getPxe()); - contract = await deployZKContract(owner, wallet, pxe.getPxe()); + const c = (contract = await deployZKContract(owner, wallet, pxe.getPxe())); contractAddress = contract.address; }, 60000); diff --git a/boxes/npx.js b/boxes/npx.js new file mode 100755 index 00000000000..5bdaf3786c9 --- /dev/null +++ b/boxes/npx.js @@ -0,0 +1,167 @@ +#!/usr/bin/env node +import { Command } from "commander"; +import select from "@inquirer/select"; +import input from "@inquirer/input"; +import confirm from "@inquirer/confirm"; +const program = new Command(); +import tiged from "tiged"; +import { exec, execSync } from "child_process"; +import pty from "node-pty"; +import path from "path"; +import os from "os"; +import fs from "fs"; +import chalk from "chalk"; + +const { log, warn, info } = console; +const targetDir = path.join(os.homedir(), ".aztec/bin"); // Use os.homedir() to get $HOME + +function updatePathEnvVar() { + // Detect the user's shell profile file based on common shells and environment variables + const homeDir = os.homedir(); + let shellProfile; + if (process.env.SHELL?.includes("bash")) { + shellProfile = path.join(homeDir, ".bashrc"); + } else if (process.env.SHELL?.includes("zsh")) { + shellProfile = path.join(homeDir, ".zshrc"); + } else { + // Extend with more conditions for other shells if necessary + warn("Unsupported shell or shell not detected."); + return; + } + + // Read the current content of the shell profile to check if the path is already included + const profileContent = fs.readFileSync(shellProfile, "utf8"); + if (profileContent.includes(targetDir)) { + log(`${targetDir} is already in PATH.`); + return; + } + + // Append the export command to the shell profile file + const exportCmd = `\nexport PATH="$PATH:${targetDir}" # Added by Node.js script\n`; + fs.appendFileSync(shellProfile, exportCmd); + + info(`Added ${targetDir} to PATH in ${shellProfile}.`); +} + +program.action(async () => { + const appType = await select({ + message: "Please choose an option:", + choices: [ + { value: "blank-react", name: "Start a barebones React project" }, + ], + }); + + log(chalk.yellow(`You chose: ${appType}`)); + + try { + // STEP 1: Clone the box + const appName = await input({ + message: "Your app name:", + default: "my-aztec-app", + }); + + const emitter = tiged(`AztecProtocol/aztec-packages/boxes/${appType}`); + + chalk.blue("Cloning the boilerplate code..."); + emitter.on("info", (info) => { + log(info.message); + }); + + await emitter.clone(`./${appName}`).then(() => { + log(chalk.bgGreen("Your code is ready!")); + }); + } catch (error) { + log(chalk.bgRed(error.message)); + process.exit(1); + } + + // STEP 2: Checking for docker + try { + execSync("docker info >/dev/null 2>&1"); + } catch (error) { + log( + chalk.bgRed( + "Doesn't seem like Docker is installed. Please visit https://docs.aztec.network", + ), + ); + process.exit(1); + } + + // STEP 2: Checking for the Aztec Sandbox + try { + execSync("docker image inspect aztecprotocol/aztec > /dev/null 2>&1"); + } catch (error) { + const answer = await confirm({ + message: + "Seems like you don't have the Aztec Sandbox installed. Do you want to install it?", + default: true, + }); + + if (answer) { + try { + const ptySession = new Promise((resolve, reject) => { + const ptyProcess = pty.spawn("bash", [], { + name: "xterm-color", + cols: 80, + rows: 30, + cwd: process.cwd(), + env: process.env, + }); + + ptyProcess.on("data", function (data) { + process.stdout.write(data); + }); + + ptyProcess.write( + "echo y | bash -i <(curl -s install.aztec.network); exit\n", + ); + + ptyProcess.on("exit", function (exitCode, signal) { + updatePathEnvVar(); + resolve(); + log(chalk.bgGreen("The Sandbox is installed!")); + }); + }); + + await ptySession; + } catch (error) { + log( + chalk.bgRed( + "Failed to install the Sandbox. Please visit the docs at https://docs.aztec.network", + ), + ); + } + } + } + + // STEP 2: Running the Sandbox + try { + await fetch("http://localhost:8080", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + jsonrpc: "2.0", + method: "node_getVersion", + id: "null", + }), + }); + } catch (error) { + const answer = await confirm({ + message: + "I can't reach the Sandbox on port 8080. Do you want to start it?", + default: true, + }); + + if (answer) { + log( + chalk.green("Starting the sandbox... This might take a few minutes."), + ); + log(chalk.bgGreen(`Go and explore the boilerplate code while you wait!`)); + execSync(`$HOME/.aztec/bin/aztec sandbox`, { stdio: "inherit" }); + } + } +}); + +program.parse(); diff --git a/boxes/package.json b/boxes/package.json index 9b0417032de..26642817c5c 100644 --- a/boxes/package.json +++ b/boxes/package.json @@ -1,6 +1,7 @@ { "name": "@aztec/boxes", "packageManager": "yarn@4.0.2", + "type": "module", "private": true, "scripts": { "compile": "FORCE_COLOR=true yarn workspaces foreach -A -p -j unlimited -v run compile:local", @@ -11,6 +12,7 @@ "blank-react", "token" ], + "bin": "npx.js", "resolutions": { "@aztec/accounts": "portal:../yarn-project/accounts", "@aztec/aztec.js": "portal:../yarn-project/aztec.js", @@ -20,5 +22,14 @@ "@aztec/circuit-types": "portal:../yarn-project/circuit-types", "@aztec/ethereum": "portal:../yarn-project/ethereum", "@aztec/types": "portal:../yarn-project/types" + }, + "devDependencies": { + "@inquirer/confirm": "^3.0.0", + "@inquirer/input": "^2.0.0", + "@inquirer/select": "^2.0.0", + "chalk": "^5.3.0", + "commander": "^12.0.0", + "node-pty": "^1.0.0", + "tiged": "^2.12.6" } } diff --git a/boxes/token/.eslintrc.cjs b/boxes/token/.eslintrc.cjs deleted file mode 100644 index 1d5617c5bbb..00000000000 --- a/boxes/token/.eslintrc.cjs +++ /dev/null @@ -1,64 +0,0 @@ -module.exports = { - root: true, - env: { browser: true, es2020: true }, - parserOptions: { - project: './tsconfig.json', - }, - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:react-hooks/recommended', - 'plugin:import/recommended', - 'plugin:import/typescript', - 'prettier', - ], - settings: { - 'import/resolver': { - typescript: true, - node: true, - }, - }, - ignorePatterns: ['dest', 'webpack.config.js', '.eslintrc.cjs'], - parser: '@typescript-eslint/parser', - plugins: ['react-refresh'], - overrides: [ - { - files: ['*.ts', '*.tsx'], - parserOptions: { - // hacky workaround for CI not having the same tsconfig setup - project: true, - }, - }, - ], - rules: { - 'react-refresh/only-export-components': ['warn', { allowConstantExport: true }], - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-empty-function': 'off', - '@typescript-eslint/await-thenable': 'error', - '@typescript-eslint/no-floating-promises': 2, - '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }], - 'require-await': 2, - 'no-console': 'warn', - 'no-constant-condition': 'off', - camelcase: 2, - 'no-restricted-imports': [ - 'error', - { - patterns: [ - { - group: ['client-dest'], - message: "Fix this absolute garbage import. It's your duty to solve it before it spreads.", - }, - { - group: ['dest'], - message: 'You should not be importing from a build directory. Did you accidentally do a relative import?', - }, - ], - }, - ], - 'import/no-unresolved': 'error', - 'import/no-extraneous-dependencies': 'error', - }, -}; diff --git a/boxes/token/.gitignore b/boxes/token/.gitignore deleted file mode 100644 index d37f6988611..00000000000 --- a/boxes/token/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -.yarn/* -!.yarn/releases - -node_modules -dest -artifacts -src/contracts/target diff --git a/boxes/token/.prettierignore b/boxes/token/.prettierignore deleted file mode 100644 index a72dfe54860..00000000000 --- a/boxes/token/.prettierignore +++ /dev/null @@ -1,2 +0,0 @@ -src/artifacts/**/*.json -src/artifacts/**/*.ts \ No newline at end of file diff --git a/boxes/token/.prettierrc.json b/boxes/token/.prettierrc.json deleted file mode 100644 index 7c3bbec6848..00000000000 --- a/boxes/token/.prettierrc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "singleQuote": true, - "trailingComma": "all", - "printWidth": 120, - "arrowParens": "avoid" -} diff --git a/boxes/token/README.md b/boxes/token/README.md deleted file mode 100644 index 06bfa7da227..00000000000 --- a/boxes/token/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# Aztec Box - -This box is a one-stop-shop for Aztec that will deploy a full React web page featuring a wallet. You can use it as a boilerplate to start developing your own Aztec app in seconds! - -## Prerequisites - -- You should have Docker installed. If you don't, follow [this guide](https://docs.aztec.network/dev_docs/getting_started/quickstart#install-docker). - -## Installation - -To start, run the Aztec install script: - -```bash -bash -i <(curl -s install.aztec.network)` -``` - -After a few minutes, you should have all the Aztec CLI commands ready to run. - -### 1. Launching the sandbox - -Run: - -```bash -aztec-sandbox -``` - -This will install all the dependencies and run the sandbox on port 8080 together with a anvil node. - -### 2. Unboxing the box - -Unbox the box with: - -```bash -aztec-cli unbox blank-react -``` - -and install dependencies: - -```bash -yarn -``` - -## Start developing - -Time to build. Run: - -```bash -yarn start -``` - -Your React app is waiting for you on port 5176. Time to make it your own! - -In the `src/contracts` folder, you'll find the default contract being deployed. Don't forget to recompile with `aztec-nargo compile`! Read the [aztec.nr documentation](https://docs.aztec.network/dev_docs/contracts/main) to get started with the `aztec.nr` framework. - -[Read the full Sandbox reference](https://docs.aztec.network/dev_docs/cli/sandbox-reference) for more info on what exactly is happening on your machine! - -## More info - -There are five folders in your `src` folder: - -- `app` - This is your actual React app -- `scripts` - These are the scripts the frontend is using to talk with the sandbox -- `contracts` - The Aztec Contracts you just deployed! -- `artifacts` - Auto-generated when you compile -- `test` - A boilerplate with a simple test - -Visit the [Aztec Docs](https://docs.aztec.network) for more information on how Aztec works, and the [Awesome Aztec Repository](https://github.com/AztecProtocol/awesome-aztec) for more cool projects, boilerplates and tooling. diff --git a/boxes/token/package.json b/boxes/token/package.json deleted file mode 100644 index 70985754c89..00000000000 --- a/boxes/token/package.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "name": "@aztec/box-token", - "private": true, - "version": "0.1.0", - "type": "module", - "main": "./dest/index.js", - "scripts": { - "compile": "cd src/contracts && ${AZTEC_NARGO:-aztec-nargo} compile", - "codegen": "${AZTEC_CLI:-aztec-cli} codegen src/contracts/target -o artifacts --ts", - "build": "yarn clean && yarn compile && yarn codegen && tsc -b && webpack", - "clean": "rm -rf ./dest .tsbuildinfo ./artifacts ./src/contracts/target", - "prep": "yarn clean && yarn compile && yarn codegen", - "dev": "yarn prep && webpack serve --mode development", - "serve": "serve -p 3000 ./dest", - "formatting": "prettier --check ./src && eslint ./src", - "formatting:fix": "prettier -w ./src", - "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --runInBand" - }, - "jest": { - "preset": "ts-jest/presets/default-esm", - "transform": { - "^.+\\.(ts|tsx)$": [ - "ts-jest", - { - "useESM": true - } - ] - }, - "moduleNameMapper": { - "^(\\.{1,2}/.*)\\.js$": "$1" - }, - "testRegex": "tests/.*\\.test\\.ts$", - "rootDir": "./" - }, - "dependencies": { - "@aztec/accounts": "^0.16.9", - "@aztec/aztec-ui": "^0.1.14", - "@aztec/aztec.js": "^0.16.9", - "classnames": "^2.3.2", - "formik": "^2.4.3", - "node-sass": "^9.0.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sass-loader": "^13.3.2", - "serve": "^14.2.1", - "yup": "^1.2.0" - }, - "devDependencies": { - "@jest/globals": "^29.6.4", - "@types/jest": "^29.5.0", - "@types/mocha": "^10.0.3", - "@types/node": "^20.5.9", - "@types/react": "^18.2.15", - "@types/react-dom": "^18.2.7", - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", - "autoprefixer": "^10.4.15", - "copy-webpack-plugin": "^11.0.0", - "css-loader": "^6.8.1", - "eslint": "^8.21.0", - "eslint-config-prettier": "^9.0.0", - "eslint-import-resolver-typescript": "^3.5.5", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-prettier": "^5.0.1", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.3", - "jest": "^29.6.4", - "postcss": "^8.4.29", - "postcss-loader": "^7.3.3", - "prettier": "^3.1.1", - "resolve-typescript-plugin": "^2.0.1", - "stream-browserify": "^3.0.0", - "style-loader": "^3.3.3", - "ts-jest": "^29.1.0", - "ts-loader": "^9.4.4", - "ts-node": "^10.9.1", - "tty-browserify": "^0.0.1", - "typescript": "^5.0.4", - "util": "^0.12.5", - "webpack": "^5.88.2", - "webpack-cli": "^5.1.4", - "webpack-dev-server": "^4.15.1" - }, - "browserslist": { - "production": [ - ">0.5%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "files": [ - "dest", - "src", - "!*.test.*" - ], - "types": "./dest/index.d.ts", - "packageManager": "yarn@4.0.2" -} diff --git a/boxes/token/postcss.config.cjs b/boxes/token/postcss.config.cjs deleted file mode 100644 index d95f27e7959..00000000000 --- a/boxes/token/postcss.config.cjs +++ /dev/null @@ -1,5 +0,0 @@ -const autoprefixer = require('autoprefixer'); - -module.exports = { - plugins: [autoprefixer], -}; diff --git a/boxes/token/src/@types/index.d.ts b/boxes/token/src/@types/index.d.ts deleted file mode 100644 index 091d25e2101..00000000000 --- a/boxes/token/src/@types/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module '*.svg' { - const content: any; - export default content; -} diff --git a/boxes/token/src/app/components/contract_function_form.module.scss b/boxes/token/src/app/components/contract_function_form.module.scss deleted file mode 100644 index 056dcc719ff..00000000000 --- a/boxes/token/src/app/components/contract_function_form.module.scss +++ /dev/null @@ -1,66 +0,0 @@ -.input { - border: none; - outline-width: 0; - outline-color: rgba(0, 0, 0, 0); - padding: 2px 20px 0 20px; - width: 100%; - height: 45px; - color: #000; - border: 1px solid rgba(0, 0, 0, 0); - font-size: 16px; - text-align: left; - font-weight: 400; - border-radius: 10px; - text-align: left; - text-overflow: ellipsis; - transition: box-shadow 0.2s; - box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1); - background-color: white; - -webkit-appearance: none; - - &:disabled { - color: #4a4a4a; - background-color: rgba(239, 239, 239, 0.3); - background: radial-gradient(rgba(239, 239, 239, 0.3), rgba(239, 239, 239, 0.3)); - -webkit-text-fill-color: #4a4a4a; - cursor: not-allowed; - } -} - -.label { - font-weight: 450; - font-size: 18px; - display: flex; - width: 100%; - flex-direction: column; - text-align: left; - margin-bottom: 15px; - justify-content: space-between; -} - -.inputWrapper { - width: 100%; - display: flex; - gap: 15px; -} - -.field { - display: flex; - justify-content: start; - flex-direction: column; - align-items: flex-start; -} - -.content { - display: flex; - justify-content: space-between; - flex-direction: column; - margin: 30px; - width: 450px; - gap: 30px; -} - -.actionButton { - width: 100%; - align-self: center; -} diff --git a/boxes/token/src/app/components/contract_function_form.tsx b/boxes/token/src/app/components/contract_function_form.tsx deleted file mode 100644 index d92e046b3ed..00000000000 --- a/boxes/token/src/app/components/contract_function_form.tsx +++ /dev/null @@ -1,231 +0,0 @@ -import { CONTRACT_ADDRESS_PARAM_NAMES, pxe } from '../../config.js'; -import { callContractFunction, deployContract, viewContractFunction } from '../../scripts/index.js'; -import { convertArgs } from '../../scripts/util.js'; -import styles from './contract_function_form.module.scss'; -import { Button, Loader } from '@aztec/aztec-ui'; -import { AztecAddress, CompleteAddress, ContractArtifact, Fr, FunctionArtifact } from '@aztec/aztec.js'; -import { useFormik } from 'formik'; -import * as Yup from 'yup'; - -const DEFAULT_FIELD_VALUE = 100; -interface BasicParamDef { - name: string; - type: { - kind: string; - path?: string; - }; -} -interface ParamDef { - name: string; - type: { - kind: string; - path?: string; - fields?: BasicParamDef[]; - }; -} - -type NoirFunctionYupSchema = { - // hack: add `any` at the end to get the array schema to typecheck - // eslint-disable-next-line @typescript-eslint/no-explicit-any - [key: string]: Yup.NumberSchema | Yup.ArraySchema | Yup.BooleanSchema | any; -}; - -type NoirFunctionFormValues = { - [key: string]: string | number | number[] | boolean | undefined; -}; - -// returns an object where first value is the yup type, second value is the default value -// this handles "base cases", which can be the parameters directly, or used -// in a recursive manner to handle structs -function generateYupDefaultValue(param: any, defaultAddress: string) { - if (CONTRACT_ADDRESS_PARAM_NAMES.includes(param.name)) { - // these are actually fields, which should be numbers, but yup doesn't support bigint so we convert back to bigint on execution - return { yupType: Yup.string().required(), defaultValue: defaultAddress }; - } else if (param.type.kind === 'field') { - return { yupType: Yup.number().required(), defaultValue: DEFAULT_FIELD_VALUE }; - } else if (param.type.kind === 'array') { - const arrayLength = param.type.length; - return { - yupType: Yup.array() - .of(Yup.number()) - .min(arrayLength) - .max(arrayLength) - .transform(function (value: number[], originalValue: string) { - if (typeof originalValue === 'string') { - return originalValue.split(',').map(Number); - } - return value; - }), - defaultValue: Array(arrayLength).fill(CONTRACT_ADDRESS_PARAM_NAMES.includes(param.name) ? defaultAddress : 200), - }; - } else if (param.type.kind === 'boolean') { - return { yupType: Yup.boolean().required(), defaultValue: false }; - } else { - throw new Error('Unsupported type', param); - } -} - -function generateYupSchema(functionAbi: FunctionArtifact, defaultAddress: string) { - const parameterSchema: NoirFunctionYupSchema = {}; - const initialValues: NoirFunctionFormValues = {}; - for (const param of functionAbi.parameters) { - // use helper function for non struct-types - if (['field', 'array', 'boolean'].includes(param.type.kind)) { - const { yupType, defaultValue } = generateYupDefaultValue(param, defaultAddress); - parameterSchema[param.name] = yupType; - initialValues[param.name] = defaultValue; - continue; - } else if (param.type.kind === 'struct') { - // for type checking, can't annotate left side of "for X of Y" statement - const paramFields: ParamDef[] = param.type.fields!; - const structParamSchema: any = {}; - const structInitialValues: any = {}; - for (const structParam of paramFields) { - const { yupType, defaultValue } = generateYupDefaultValue(structParam, defaultAddress); - structParamSchema[structParam.name] = yupType; - structInitialValues[structParam.name] = defaultValue; - } - parameterSchema[param.name] = Yup.object().shape(structParamSchema); - initialValues[param.name] = structInitialValues; - continue; - } - } - return { validationSchema: Yup.object().shape(parameterSchema), initialValues }; -} - -async function handleFunctionCall( - contractAddress: AztecAddress | undefined, - artifact: ContractArtifact, - functionName: string, - args: any, - wallet: CompleteAddress, -) { - const functionAbi = artifact.functions.find(f => f.name === functionName)!; - const typedArgs: any[] = convertArgs(functionAbi, args); - - if (functionName === 'constructor' && !!wallet) { - if (functionAbi === undefined) { - throw new Error('Cannot find constructor in the ABI.'); - } - // hack: addresses are stored as string in the form to avoid bigint compatibility issues with formik - // convert those back to bigints before sending - - // for now, dont let user change the salt. requires some change to the form generation if we want to let user choose one - // since everything is currently based on parsing the contractABI, and the salt parameter is not present there - const salt = Fr.random(); - return await deployContract(wallet, artifact, typedArgs, salt, pxe.getPxe()); - } - - if (functionAbi.functionType === 'unconstrained') { - return await viewContractFunction(contractAddress!, artifact, functionName, typedArgs, pxe.getPxe(), wallet); - } else { - const txnReceipt = await callContractFunction( - contractAddress!, - artifact, - functionName, - typedArgs, - pxe.getPxe(), - wallet, - ); - return `Transaction ${txnReceipt.status} on block number ${txnReceipt.blockNumber}`; - } -} - -interface ContractFunctionFormProps { - wallet: CompleteAddress; - contractAddress?: AztecAddress; - artifact: ContractArtifact; - functionAbi: FunctionArtifact; - defaultAddress: string; - title?: string; - buttonText?: string; - isLoading: boolean; - disabled: boolean; - onSubmit: () => void; - onSuccess: (result: any) => void; - onError: (msg: string) => void; -} - -export function ContractFunctionForm({ - wallet, - contractAddress, - artifact, - functionAbi, - defaultAddress, - buttonText = 'Submit', - isLoading, - disabled, - onSubmit, - onSuccess, - onError, -}: ContractFunctionFormProps) { - const { validationSchema, initialValues } = generateYupSchema(functionAbi, defaultAddress); - const formik = useFormik({ - initialValues: initialValues, - validationSchema: validationSchema, - onSubmit: async (values: any) => { - onSubmit(); - try { - const result = await handleFunctionCall(contractAddress, artifact, functionAbi.name, values, wallet); - onSuccess(result); - } catch (e: any) { - onError(e.message); - } - }, - }); - return ( -
- {functionAbi.parameters.map(input => ( -
- {input.type.kind !== 'struct' ? ( - <> - - - {formik.touched[input.name] && formik.errors[input.name] && ( -
{formik.errors[input.name]?.toString()}
- )} - - ) : ( - // Rendering object properties if the kind is 'struct' - // find a better way to represent that these are part of the same input - // than the text label `${input.name}.${field.name}` - input.type.fields.map(field => ( -
- - - {/* {formik.touched[input.name] && formik.touched[input.name] && formik.errors[input.name] && formik.errors[input.name][field.name] && ( -
{formik.errors[input.name][field.name]?.toString()}
- )} */} -
- )) - )} -
- ))} - {isLoading ? ( - - ) : ( -