-
Notifications
You must be signed in to change notification settings - Fork 228
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
17 changed files
with
324 additions
and
208 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
name: Publish zksync2js Plugin | ||
|
||
on: | ||
push: | ||
tags: | ||
- '@matterlabs/hardhat-zksync-zksync2js@*' | ||
|
||
jobs: | ||
publish: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- uses: actions/setup-node@v3 | ||
with: | ||
node-version: '16' | ||
registry-url: 'https://registry.npmjs.org' | ||
cache: 'yarn' | ||
|
||
- name: Setup environment | ||
run: yarn && yarn build | ||
|
||
- name: Publish | ||
env: | ||
NODE_AUTH_TOKEN: ${{ secrets.NPMJS_NPM_MATTERLABS_AUTOMATION_TOKEN }} | ||
run: | | ||
if [[ ${{ github.ref }} == *"beta"* ]]; then | ||
echo "Publishing package with beta tag" | ||
npm publish @matterlabs/hardhat-zksync-zksync2js --tag beta --workspace=packages/hardhat-zksync-zksync2js --access=public | ||
elif [[ ${{ github.ref }} == *"alpha"* ]]; then | ||
echo "Publishing package with alpha tag" | ||
npm publish @matterlabs/hardhat-zksync-zksync2js --tag alpha --workspace=packages/hardhat-zksync-zksync2js --access=public | ||
else | ||
echo "Publishing package with latest tag" | ||
npm publish @matterlabs/hardhat-zksync-zksync2js --tag latest --workspace=packages/hardhat-zksync-zksync2js --access=public | ||
fi | ||
- name: Create github release from tags | ||
env: | ||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
run: | | ||
if [[ ${{ github.ref }} != *"beta"* ]] && [[ ${{ github.ref }} != *"alpha"* ]]; then | ||
node scripts/create-release-from-tags/run.js --package hardhat-zksync-zksync2js | ||
else | ||
echo "Skipping github release creation for beta and alpha tags" | ||
fi | ||
- name: Create the MM Message | ||
env: | ||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
run: | | ||
gh -R matter-labs/hardhat-zksync release view "$GITHUB_REF_NAME" --json tagName,body --template '## {{.tagName}} {{"\n"}}{{.body}}' > ./release_info | ||
jq --null-input --arg text "$(cat ./release_info)" '{"text": $text}' > mattermost.json | ||
- uses: mattermost/action-mattermost-notify@master | ||
env: | ||
MATTERMOST_USERNAME: "Hardhat Release Bot" | ||
MATTERMOST_WEBHOOK_URL: ${{ secrets.MATTERMOST_URL }} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
module.exports = { | ||
extends: [`${__dirname}/../../config/eslint/eslintrc.js`], | ||
parserOptions: { | ||
project: `${__dirname}/tsconfig.json`, | ||
sourceType: "module", | ||
}, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
cache | ||
artifacts | ||
contracts/tmp |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
# zkSync 2.0 deploy environment example | ||
|
||
This project demonstrates how to compile and deploy your contracts in zkSync 2.0 using the Hardhat plugins. | ||
|
||
## Prerequisites | ||
|
||
- node.js 14.x or later. | ||
- yarn. | ||
|
||
## Configuration | ||
|
||
Plugin configuration is located in [`hardhat.config.ts`](./hardhat.config.ts). | ||
You should only change the zkSync network configuration. | ||
|
||
`hardhat.config.ts` example with zkSync network configured with the name `zkTestnet` and `goerli` used as the underlying layer 1 network: | ||
```ts | ||
import "@matterlabs/hardhat-zksync-deploy"; | ||
import { HardhatUserConfig } from 'hardhat/types'; | ||
|
||
const config: HardhatUserConfig = { | ||
networks: { | ||
goerli: { | ||
url: 'https://goerli.infura.io/v3/<API_KEY>' // you can use either the URL of the Ethereum Web3 RPC, or the identifier of the network (e.g. `mainnet` or `rinkeby`) | ||
}, | ||
zkTestnet: { | ||
url: 'https://zksync2-testnet.zksync.dev', // you should use the URL of the zkSync network RPC | ||
ethNetwork: 'goerli', | ||
zksync: true | ||
}, | ||
} | ||
}; | ||
|
||
export default config; | ||
``` | ||
|
||
## Usage | ||
|
||
Before using plugins, you need to build them first | ||
|
||
```sh | ||
# Run the following in the *root* of the repo. | ||
yarn | ||
yarn build | ||
``` | ||
|
||
After that you should be able to run plugins: | ||
|
||
```sh | ||
# Run the following in `examples/basic-example` folder. | ||
yarn | ||
yarn hardhat compile | ||
yarn hardhat deploy-zksync | ||
``` | ||
|
||
- `yarn hardhat compile`: compiles all the contracts in the `contracts` folder. | ||
- `yarn hardhat deploy-zksync`: runs all the deploy scripts in the `deploy` folder. | ||
- To run a specific script, add the `--script` argument, e.g. `--script 001_deploy.ts`. | ||
- To run on a specific zkSync network, use standard hardhat `--network` argument, e.g. `--network zkTestnet` | ||
(with `zkTestnet` network specified in the `hardhat.config` networks section, with the `zksync` flag set to `true` and `ethNetwork` specified). | ||
|
||
If you don't specify zkSync network (`--network`), `local-setup` with <http://localhost:8545> (Ethereum RPC URL) and <http://localhost:3050> (zkSync RPC URL) will be used. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
// SPDX-License-Identifier: MIT | ||
|
||
pragma solidity ^0.8.0; | ||
pragma abicoder v2; | ||
|
||
contract Greeter { | ||
string greeting; | ||
constructor(string memory _greeting) { | ||
greeting = _greeting; | ||
} | ||
|
||
function greet() public view returns (string memory) { | ||
return greeting; | ||
} | ||
|
||
function setGreeting(string memory _greeting) public { | ||
greeting = _greeting; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
import { HardhatRuntimeEnvironment } from 'hardhat/types'; | ||
import chalk from 'chalk'; | ||
import { Contract } from 'zksync2-js'; | ||
|
||
export default async function (hre: HardhatRuntimeEnvironment) { | ||
console.info(chalk.yellow(`Running deploy`)); | ||
|
||
const greeterFactory = await hre.zksync2js.getContractFactory("Greeter"); | ||
const greeter = await greeterFactory.deploy("Hello, world!") as Contract; | ||
await greeter.waitForDeployment(); | ||
|
||
console.info(chalk.green(`Greeter deployed to: ${await greeter.getAddress()}`)); | ||
console.info(chalk.green(`Greeter greeting set to: ${await greeter.greet()}`)); | ||
await greeter.setGreeting("Hello, world again!"); | ||
console.info(chalk.green(`Greeter greeting set to: ${await greeter.greet()}`)); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
import '@matterlabs/hardhat-zksync-deploy'; | ||
import '@matterlabs/hardhat-zksync-solc'; | ||
import '@matterlabs/hardhat-zksync-zksync2js'; | ||
|
||
import { HardhatUserConfig, task } from 'hardhat/config'; | ||
import { HardhatRuntimeEnvironment } from 'hardhat/types'; | ||
|
||
const config: HardhatUserConfig = { | ||
zksolc: { | ||
compilerSource: 'binary', | ||
settings: { | ||
isSystem: true, | ||
optimizer: { | ||
enabled: true, | ||
}, | ||
} | ||
}, | ||
networks: { | ||
hardhat: { | ||
zksync: true, | ||
}, | ||
}, | ||
// Docker image only works for solidity ^0.8.0. | ||
// For earlier versions you need to use binary releases of zksolc. | ||
solidity: { | ||
version: '0.8.17', | ||
}, | ||
}; | ||
|
||
export default config; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
{ | ||
"name": "harhat-zksync-example-zksync2js", | ||
"version": "0.1.0", | ||
"author": "Matter Labs", | ||
"license": "MIT", | ||
"scripts": { | ||
"lint": "yarn prettier --check && yarn eslint", | ||
"lint:fix": "yarn eslint --fix", | ||
"fmt": "yarn prettier --write", | ||
"eslint": "eslint deploy/*.ts", | ||
"prettier": "prettier deploy/*.ts", | ||
"test": "mocha test/tests.ts --exit", | ||
"build": "tsc --build .", | ||
"clean": "rimraf dist" | ||
}, | ||
"devDependencies": { | ||
"@types/node": "^18.11.17", | ||
"@typescript-eslint/eslint-plugin": "4.29.2", | ||
"@typescript-eslint/parser": "5.13.0", | ||
"eslint": "^8.10.0", | ||
"eslint-config-prettier": "8.3.0", | ||
"eslint-plugin-import": "2.25.4", | ||
"eslint-plugin-prettier": "3.4.0", | ||
"prettier": "2.3.2", | ||
"rimraf": "^3.0.2", | ||
"ts-node": "^10.6.0", | ||
"typescript": "^4.6.2" | ||
}, | ||
"dependencies": { | ||
"@matterlabs/hardhat-zksync-deploy": "link:../../packages/hardhat-zksync-deploy", | ||
"@matterlabs/hardhat-zksync-solc": "link:../../packages/hardhat-zksync-solc", | ||
"@matterlabs/hardhat-zksync-zksync2js": "link:../../packages/hardhat-zksync-zksync2js", | ||
"chalk": "4.1.2", | ||
"hardhat": "^2.14.0", | ||
"ethers": "^6.7.1", | ||
"zksync2-js": "^0.2.0-beta.0" | ||
}, | ||
"prettier": { | ||
"tabWidth": 4, | ||
"printWidth": 120, | ||
"parser": "typescript", | ||
"singleQuote": true, | ||
"bracketSpacing": true | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
{ | ||
"compilerOptions": { | ||
"target": "es5", | ||
"module": "commonjs", | ||
"strict": true, | ||
"esModuleInterop": true, | ||
"moduleResolution": "node", | ||
"forceConsistentCasingInFileNames": true, | ||
"outDir": "dist" | ||
}, | ||
"include": [ | ||
"./hardhat.config.ts", | ||
"./scripts", | ||
"./deploy", | ||
"./test", | ||
"typechain/**/*" | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.