diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c5cd627..03f0101 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,8 +42,24 @@ jobs: - name: "Compile the contracts and generate the TypeChain bindings" run: "pnpm typechain" - - name: "Test the contracts and generate the coverage report" - run: "pnpm coverage" + # - name: "Test the contracts and generate the coverage report" + # run: "pnpm coverage" + + - name: Login to GitHub Container Registry + uses: docker/login-action@49ed152c8eca782a232dede0303416e8f356c37b + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: "CI test" + run: | + pnpm fhevm:start &> fhevm.log & + tail -f fhevm.log | sed '/Starting JSON WebSocket server/ q' + + pnpm fhevm:faucet + pnpm test + pnpm fhevm:stop || true - name: "Add test summary" run: | diff --git a/README.md b/README.md index 1540103..6371423 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,10 @@ You can edit the CI script in [.github/workflows/ci.yml](./.github/workflows/ci. ### Pre Requisites +Install [docker](https://docs.docker.com/engine/install/] + +Install [pnpm](https://pnpm.io/installation) + Before being able to run any command, you need to create a `.env` file and set a BIP-39 compatible mnemonic as an environment variable. You can follow the example in `.env.example`. If you don't already have a mnemonic, you can use this [website](https://iancoleman.io/bip39/) to generate one. @@ -213,7 +217,7 @@ pnpm clean Deploy a new instance of the EncryptedERC20 contract via a task: ```sh -pnpm task:deployEncryptedERC20 --network zama +pnpm task:deployEncryptedERC20 ``` ## Tips diff --git a/package.json b/package.json index e1985e1..d4022e1 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ }, "devDependencies": { "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", - "@nomicfoundation/hardhat-ethers": "^3.0.0", + "@nomicfoundation/hardhat-ethers": "^3.0.4", "@nomicfoundation/hardhat-network-helpers": "^1.0.6", "@nomicfoundation/hardhat-toolbox": "^3.0.0", "@nomicfoundation/hardhat-verify": "^1.0.0", @@ -80,8 +80,8 @@ "task:getEthereumAddress": "hardhat task:getEthereumAddress", "test": "hardhat test", "typechain": "cross-env TS_NODE_TRANSPILE_ONLY=true hardhat typechain", - "fhevm:start": "docker run -it -p 8545:8545 --rm --name fhevm ghcr.io/zama-ai/evmos-dev-node:v0.1.7", - "fhevm:stop": "docker stop fhevm && docker rm fhevm", + "fhevm:start": "docker run -i -p 8545:8545 --rm --name fhevm ghcr.io/zama-ai/evmos-dev-node:v0.1.7", + "fhevm:stop": "docker rm -f fhevm", "fhevm:restart": "fhevm:stop && fhevm:stop", "fhevm:faucet": "docker exec -i fhevm faucet $(npx hardhat task:getEthereumAddress)" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6b9b214..6d64756 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,16 +12,16 @@ dependencies: devDependencies: '@nomicfoundation/hardhat-chai-matchers': specifier: ^2.0.0 - version: 2.0.0(@nomicfoundation/hardhat-ethers@3.0.0)(chai@4.3.7)(ethers@6.4.0)(hardhat@2.12.2) + version: 2.0.0(@nomicfoundation/hardhat-ethers@3.0.4)(chai@4.3.7)(ethers@6.4.0)(hardhat@2.12.2) '@nomicfoundation/hardhat-ethers': - specifier: ^3.0.0 - version: 3.0.0(ethers@6.4.0)(hardhat@2.12.2) + specifier: ^3.0.4 + version: 3.0.4(ethers@6.4.0)(hardhat@2.12.2) '@nomicfoundation/hardhat-network-helpers': specifier: ^1.0.6 version: 1.0.6(hardhat@2.12.2) '@nomicfoundation/hardhat-toolbox': specifier: ^3.0.0 - version: 3.0.0(@nomicfoundation/hardhat-chai-matchers@2.0.0)(@nomicfoundation/hardhat-ethers@3.0.0)(@nomicfoundation/hardhat-network-helpers@1.0.6)(@nomicfoundation/hardhat-verify@1.0.0)(@typechain/ethers-v6@0.4.0)(@typechain/hardhat@8.0.0)(@types/chai@4.3.4)(@types/mocha@10.0.0)(@types/node@18.11.9)(chai@4.3.7)(ethers@6.4.0)(hardhat-gas-reporter@1.0.9)(hardhat@2.12.2)(solidity-coverage@0.8.2)(ts-node@10.9.1)(typechain@8.2.0)(typescript@5.1.6) + version: 3.0.0(@nomicfoundation/hardhat-chai-matchers@2.0.0)(@nomicfoundation/hardhat-ethers@3.0.4)(@nomicfoundation/hardhat-network-helpers@1.0.6)(@nomicfoundation/hardhat-verify@1.0.0)(@typechain/ethers-v6@0.4.0)(@typechain/hardhat@8.0.0)(@types/chai@4.3.4)(@types/mocha@10.0.0)(@types/node@18.11.9)(chai@4.3.7)(ethers@6.4.0)(hardhat-gas-reporter@1.0.9)(hardhat@2.12.2)(solidity-coverage@0.8.2)(ts-node@10.9.1)(typechain@8.2.0)(typescript@5.1.6) '@nomicfoundation/hardhat-verify': specifier: ^1.0.0 version: 1.0.0(hardhat@2.12.2) @@ -982,7 +982,7 @@ packages: - supports-color dev: true - /@nomicfoundation/hardhat-chai-matchers@2.0.0(@nomicfoundation/hardhat-ethers@3.0.0)(chai@4.3.7)(ethers@6.4.0)(hardhat@2.12.2): + /@nomicfoundation/hardhat-chai-matchers@2.0.0(@nomicfoundation/hardhat-ethers@3.0.4)(chai@4.3.7)(ethers@6.4.0)(hardhat@2.12.2): resolution: {integrity: sha512-e2ZFunJBIWDcFKIxQt6GpFRRKUn8ZshoiZ5cmgaKOR1S9XwimiCs2aLUCZ/xjNrdl049kPqdVKYDj6aYeR6WuQ==} peerDependencies: '@nomicfoundation/hardhat-ethers': ^3.0.0 @@ -991,7 +991,7 @@ packages: hardhat: ^2.9.4 dependencies: '@ethersproject/abi': 5.7.0 - '@nomicfoundation/hardhat-ethers': 3.0.0(ethers@6.4.0)(hardhat@2.12.2) + '@nomicfoundation/hardhat-ethers': 3.0.4(ethers@6.4.0)(hardhat@2.12.2) '@types/chai-as-promised': 7.1.5 chai: 4.3.7 chai-as-promised: 7.1.1(chai@4.3.7) @@ -1001,14 +1001,18 @@ packages: ordinal: 1.0.3 dev: true - /@nomicfoundation/hardhat-ethers@3.0.0(ethers@6.4.0)(hardhat@2.12.2): - resolution: {integrity: sha512-0A2hs39YUta//O9EcITnFw/iGzUztJ4FB4UIc2mgdZ2nXvDZUmkQO+Vtdt/guJ6gP66EPbwvFW7t1SRReMGrvg==} + /@nomicfoundation/hardhat-ethers@3.0.4(ethers@6.4.0)(hardhat@2.12.2): + resolution: {integrity: sha512-k9qbLoY7qn6C6Y1LI0gk2kyHXil2Tauj4kGzQ8pgxYXIGw8lWn8tuuL72E11CrlKaXRUvOgF0EXrv/msPI2SbA==} peerDependencies: ethers: ^6.1.0 hardhat: ^2.0.0 dependencies: + debug: 4.3.4(supports-color@8.1.1) ethers: 6.4.0 hardhat: 2.12.2(ts-node@10.9.1)(typescript@5.1.6) + lodash.isequal: 4.5.0 + transitivePeerDependencies: + - supports-color dev: true /@nomicfoundation/hardhat-network-helpers@1.0.6(hardhat@2.12.2): @@ -1020,7 +1024,7 @@ packages: hardhat: 2.12.2(ts-node@10.9.1)(typescript@5.1.6) dev: true - /@nomicfoundation/hardhat-toolbox@3.0.0(@nomicfoundation/hardhat-chai-matchers@2.0.0)(@nomicfoundation/hardhat-ethers@3.0.0)(@nomicfoundation/hardhat-network-helpers@1.0.6)(@nomicfoundation/hardhat-verify@1.0.0)(@typechain/ethers-v6@0.4.0)(@typechain/hardhat@8.0.0)(@types/chai@4.3.4)(@types/mocha@10.0.0)(@types/node@18.11.9)(chai@4.3.7)(ethers@6.4.0)(hardhat-gas-reporter@1.0.9)(hardhat@2.12.2)(solidity-coverage@0.8.2)(ts-node@10.9.1)(typechain@8.2.0)(typescript@5.1.6): + /@nomicfoundation/hardhat-toolbox@3.0.0(@nomicfoundation/hardhat-chai-matchers@2.0.0)(@nomicfoundation/hardhat-ethers@3.0.4)(@nomicfoundation/hardhat-network-helpers@1.0.6)(@nomicfoundation/hardhat-verify@1.0.0)(@typechain/ethers-v6@0.4.0)(@typechain/hardhat@8.0.0)(@types/chai@4.3.4)(@types/mocha@10.0.0)(@types/node@18.11.9)(chai@4.3.7)(ethers@6.4.0)(hardhat-gas-reporter@1.0.9)(hardhat@2.12.2)(solidity-coverage@0.8.2)(ts-node@10.9.1)(typechain@8.2.0)(typescript@5.1.6): resolution: {integrity: sha512-MsteDXd0UagMksqm9KvcFG6gNKYNa3GGNCy73iQ6bEasEgg2v8Qjl6XA5hjs8o5UD5A3153B6W2BIVJ8SxYUtA==} peerDependencies: '@nomicfoundation/hardhat-chai-matchers': ^2.0.0 @@ -1041,8 +1045,8 @@ packages: typechain: ^8.2.0 typescript: '>=4.5.0' dependencies: - '@nomicfoundation/hardhat-chai-matchers': 2.0.0(@nomicfoundation/hardhat-ethers@3.0.0)(chai@4.3.7)(ethers@6.4.0)(hardhat@2.12.2) - '@nomicfoundation/hardhat-ethers': 3.0.0(ethers@6.4.0)(hardhat@2.12.2) + '@nomicfoundation/hardhat-chai-matchers': 2.0.0(@nomicfoundation/hardhat-ethers@3.0.4)(chai@4.3.7)(ethers@6.4.0)(hardhat@2.12.2) + '@nomicfoundation/hardhat-ethers': 3.0.4(ethers@6.4.0)(hardhat@2.12.2) '@nomicfoundation/hardhat-network-helpers': 1.0.6(hardhat@2.12.2) '@nomicfoundation/hardhat-verify': 1.0.0(hardhat@2.12.2) '@typechain/ethers-v6': 0.4.0(ethers@6.4.0)(typechain@8.2.0)(typescript@5.1.6) @@ -4319,6 +4323,10 @@ packages: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} dev: true + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: true + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true