Skip to content

Commit 7f1097f

Browse files
committed
feat: add deployment scripts for BatchTransferFraction on Sepolia and Optimism
1 parent 0d503ed commit 7f1097f

File tree

3 files changed

+43
-2
lines changed

3 files changed

+43
-2
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
"test:coverage:report": "forge coverage --fork-url https://mainnet.optimism.io --report lcov && genhtml lcov.info --branch-coverage --output-dir coverage",
1313
"test:op": "forge clean && forge fmt && forge test --fork-url https://mainnet.optimism.io --fork-block-number 132218259",
1414
"test:sepolia": "forge clean && forge fmt && forge test --fork-url https://sepolia.drpc.org ",
15+
"deploy:sepolia": "forge script script/DeployBatchTransferScript.s.sol --rpc-url https://sepolia.drpc.org --broadcast -vvv --private-key $DEPLOYER_PRIVATE_KEY --etherscan-api-key sepolia --verify",
16+
"deploy:op": "forge script script/DeployBatchTransferScript.s.sol --rpc-url https://mainnet.optimism.io --broadcast -vvv --private-key $DEPLOYER_PRIVATE_KEY --etherscan-api-key optimism --verify",
1517
"format": "forge fmt",
1618
"clean": "forge clean"
1719
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.28;
3+
4+
import "forge-std/Script.sol";
5+
import "../src/BatchTransferFraction.sol";
6+
import "../src/interfaces/IHypercertToken.sol";
7+
import { Create2 } from "@openzeppelin/contracts/utils/Create2.sol";
8+
9+
contract DeployBatchTransferScript is Script {
10+
IHypercertToken internal hypercertToken;
11+
12+
function configureChain() public {
13+
if (block.chainid == 10) {
14+
// Optimism mainnet
15+
hypercertToken = IHypercertToken(0x822F17A9A5EeCFd66dBAFf7946a8071C265D1d07);
16+
} else if (block.chainid == 11_155_111) {
17+
// Sepolia
18+
hypercertToken = IHypercertToken(0xa16DFb32Eb140a6f3F2AC68f41dAd8c7e83C4941);
19+
} else {
20+
revert("Unsupported chain");
21+
}
22+
}
23+
24+
function run() external {
25+
configureChain();
26+
27+
vm.startBroadcast();
28+
29+
bytes32 salt = keccak256(abi.encodePacked("BatchTransferFraction"));
30+
31+
bytes memory arg = abi.encode(address(hypercertToken));
32+
33+
bytes memory bytecode = abi.encodePacked(type(BatchTransferFraction).creationCode, arg);
34+
35+
address deployedAddress = Create2.deploy(0, salt, bytecode);
36+
37+
console.log("BatchTransferFraction deployed to: %s", address(deployedAddress));
38+
vm.stopBroadcast();
39+
}
40+
}

src/BatchTransferFraction.sol

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@ pragma solidity ^0.8.28;
44
import "./interfaces/IHypercertToken.sol";
55

66
contract BatchTransferFraction {
7-
IHypercertToken public hypercertToken;
7+
IHypercertToken public immutable hypercertToken;
88
uint256 internal constant FRACTION_LIMIT = 253;
99

1010
error INVALID_LENGTHS();
11-
1211
error INVALID_DATA();
1312
error INVALID_CALLER(address caller);
1413
error INVALID_HYPERCERT_ADDRESS(address hypercertAddress);

0 commit comments

Comments
 (0)