File tree Expand file tree Collapse file tree 3 files changed +43
-2
lines changed
Expand file tree Collapse file tree 3 files changed +43
-2
lines changed Original file line number Diff line number Diff line change 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 }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change @@ -4,11 +4,10 @@ pragma solidity ^0.8.28;
44import "./interfaces/IHypercertToken.sol " ;
55
66contract 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 );
You can’t perform that action at this time.
0 commit comments