Skip to content

Commit 54dba49

Browse files
committed
feat: smart contract deploy and test scripts
1 parent 5650a42 commit 54dba49

2 files changed

Lines changed: 67 additions & 0 deletions

File tree

Makefile

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
.PHONY: network deploy-local deploy-sepolia test
2+
include .env
3+
4+
# Start a local Ethereum
5+
network:
6+
anvil
7+
8+
# Deploy smart contracts to local Ethereum
9+
deploy-local:
10+
forge script script/DeployTasks.s.sol:DeployTasks --rpc-url http://127.0.0.1:8545 --private-key ${PRIVATE_KEY_LOCAL} --broadcast
11+
12+
# Deploy smart contracts to Sepolia testnet
13+
deploy-sepolia:
14+
forge script script/DeployTasks.s.sol:DeployTasks \
15+
--rpc-url ${SEPOLIA_RPC_URL} \
16+
--private-key 0x${PRIVATE_KEY} \
17+
--verify \
18+
--etherscan-api-key ${ETHERSCAN_API_KEY}
19+
--broadcast \
20+
21+
# Run smart contract tests
22+
test:
23+
forge test

script/DeployTasks.s.sol

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// SPDX-License-Identifier: GPL-3.0-or-later
2+
pragma solidity ^0.8.24;
3+
4+
import "forge-std/Script.sol";
5+
import "../src/TaskAccess.sol";
6+
import "../src/TaskToken.sol";
7+
import "../src/TaskManager.sol";
8+
import "../src/Verifier.sol";
9+
10+
contract DeployTasks is Script {
11+
function run() external {
12+
// Load private key from environment
13+
uint256 deployerKey = vm.envUint("PRIVATE_KEY_LOCAL");
14+
address deployer = vm.addr(deployerKey);
15+
16+
vm.startBroadcast(deployer);
17+
18+
// 1. Deploy TaskAccess (admin is msg.sender in constructor)
19+
TaskAccess access = new TaskAccess();
20+
console2.log("TaskAccess deployed at:", address(access));
21+
22+
// 2. Deploy TaskToken (owner = deployer)
23+
TaskToken token = new TaskToken();
24+
console2.log("TaskToken deployed at:", address(token));
25+
26+
// 3. Deploy Groth16Verifier
27+
Groth16Verifier verifier = new Groth16Verifier();
28+
console2.log("Groth16Verifier deployed at:", address(verifier));
29+
30+
// 4. Deploy TaskManager
31+
TaskManager manager = new TaskManager(
32+
address(token),
33+
address(access),
34+
address(verifier)
35+
);
36+
console2.log("TaskManager deployed at:", address(manager));
37+
38+
// 5. Wire TaskToken manager
39+
token.setManager(address(manager));
40+
console2.log("TaskToken manager set to:", address(manager));
41+
42+
vm.stopBroadcast();
43+
}
44+
}

0 commit comments

Comments
 (0)