Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions .github/workflows/hardhat.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Tests compilation and E2E integration with hardhat-polkadot, but not runtime correctness.

name: Hardhat Integration

on:
workflow_call:

env:
# Workflow-internal hardhat envs are prefixed with `CI_` to not conflict with the
# `HARDHAT_*` namespace, which hardhat itself will interpret for its configuration.
CI_HARDHAT_PROJECT_ROOT: tooling-projects/hardhat/erc20

jobs:
use-hardhat:
runs-on: ubuntu-24.04
steps:
- name: Checkout revive
uses: actions/checkout@v4

- name: Download resolc Binary
uses: actions/download-artifact@v4
with:
name: resolc-x86_64-unknown-linux-musl
path: resolc-bin

- name: Export resolc Path
run: |
chmod +x resolc-bin/resolc-x86_64-unknown-linux-musl
# This env is used by `hardhat.config.js`.
echo "RESOLC_PATH=$(pwd)/resolc-bin/resolc-x86_64-unknown-linux-musl" >> $GITHUB_ENV

- name: Set Up Node.js
uses: actions/setup-node@v6
with:
node-version: "24"

- name: Install Project Dependencies
working-directory: ${{ env.CI_HARDHAT_PROJECT_ROOT }}
run: npm ci

- name: Compile Project
working-directory: ${{ env.CI_HARDHAT_PROJECT_ROOT }}
run: npx hardhat compile

- name: Verify Output
working-directory: ${{ env.CI_HARDHAT_PROJECT_ROOT }}
run: bash verify-compiler-output.sh
4 changes: 4 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,7 @@ jobs:
# Only run this if `test` successfully completes.
needs: test
uses: ./.github/workflows/differential-tests.yml

run-hardhat-tests:
needs: run-differential-tests
uses: ./.github/workflows/hardhat.yml
17 changes: 17 additions & 0 deletions tooling-projects/hardhat/erc20/contracts/MyToken.sol
Comment thread
elle-j marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// SPDX-License-Identifier: MIT
// Compatible with OpenZeppelin Contracts ^5.0.0
pragma solidity ^0.8.22;

import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";

contract MyToken is ERC20, Ownable {
constructor(address initialOwner)
ERC20("MyToken", "MTK")
Ownable(initialOwner)
{}

function mint(address to, uint256 amount) public onlyOwner {
_mint(to, amount);
}
}
33 changes: 33 additions & 0 deletions tooling-projects/hardhat/erc20/hardhat.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
require("@nomicfoundation/hardhat-toolbox");
require("@parity/hardhat-polkadot");

const RESOLC_PATH_ENV_NAME = "RESOLC_PATH";

function getEnv(name) {
const value = process.env[name];
if (!value) {
throw new Error(`Required environment variable '${name}' is missing`);
}

return value;
}

/** @type {import('hardhat/config').HardhatUserConfig} */
module.exports = {
solidity: "0.8.35",
resolc: {
compilerSource: "binary",
settings: {
resolcPath: getEnv(RESOLC_PATH_ENV_NAME),
optimizer: {
enabled: true,
parameters: "z"
},
},
},
networks: {
hardhat: {
polkadot: true
},
},
};
Loading
Loading