Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
aec5398
note the variables to update; set the initial merkle root
saucepoint Oct 23, 2025
08b18bc
initial fee values
saucepoint Oct 23, 2025
ff46547
Merge branch 'main' into deployer-update
saucepoint Oct 29, 2025
c0b3fe5
use real root and proofs in Deployer fork test
saucepoint Oct 29, 2025
cfa2d8f
Merge branch 'main' into deployer-update
saucepoint Oct 30, 2025
0c6edb8
assert initial fee state
saucepoint Oct 30, 2025
4c9baac
updated default fee values
saucepoint Nov 7, 2025
ecf5b83
Merge branch 'main' into deployer-update
marktoda Nov 13, 2025
95c7cca
feat: add Unification proposal script
marktoda Nov 13, 2025
c7dd6d6
Merge branch 'main' into deployer-update
marktoda Nov 14, 2025
736ebc4
feat: add UNIVesting to deployer
marktoda Nov 14, 2025
79f7e84
feat: add Vesting fork tests
marktoda Nov 14, 2025
212f4b5
feat: add Unichain deployers
marktoda Nov 14, 2025
3906a4a
feat: cleanup
marktoda Nov 14, 2025
3f084e7
fix: deployer test
marktoda Nov 17, 2025
275679e
fix: Unichain rpc url in ci
marktoda Nov 17, 2025
e608700
fix: update proposal comments
marktoda Nov 18, 2025
b8d5546
feat: set labs recipient
marktoda Nov 18, 2025
d71415a
fix: sara suggestions
marktoda Nov 20, 2025
11a9e7a
feat: broadcast in 01 and 02
marktoda Nov 21, 2025
9ab5b18
fix: lint
marktoda Nov 21, 2025
4a36b5a
add attestations and calldata generation to proposal script
wildmolasses Nov 18, 2025
0a1fcc6
add agreement anchor creation script (#2)
wildmolasses Nov 21, 2025
8d2832d
test script
wildmolasses Nov 21, 2025
ffe2419
rename scripts for cleaner diff
wildmolasses Nov 21, 2025
c78405c
Merge pull request #100 from ScopeLift/add-attestations
marktoda Nov 21, 2025
3179995
feat: lower thresholds
marktoda Nov 21, 2025
95b8fc7
feat: cleanup agreement anchors
marktoda Nov 21, 2025
89b4030
feat: use EAS library
marktoda Nov 21, 2025
665fd40
merge in main; fix conflicts
saucepoint Nov 21, 2025
09e2a05
copy over natspec from old deployer
saucepoint Nov 21, 2025
00e9cc4
strengthen insufficient UNI test
saucepoint Nov 21, 2025
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
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,4 @@ jobs:
FOUNDRY_PROFILE: pr
FORGE_SNAPSHOT_CHECK: true
MAINNET_RPC_URL: ${{ secrets.MAINNET_RPC_URL }}
UNICHAIN_RPC_URL: ${{ secrets.UNICHAIN_RPC_URL }}
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,6 @@
[submodule "lib/BokkyPooBahsDateTimeLibrary"]
path = lib/BokkyPooBahsDateTimeLibrary
url = https://github.com/bokkypoobah/BokkyPooBahsDateTimeLibrary
[submodule "lib/dao-signer"]
path = lib/dao-signer
url = https://github.com/ScopeLift/dao-signer
3 changes: 3 additions & 0 deletions foundry.lock
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
"lib/briefcase": {
"rev": "62c718ec25b64ecc95b4e09c2751134d78b89a4f"
},
"lib/dao-signer": {
"rev": "ee1e73fbda9b3328aca30d9e42ca78819f4383a3"
},
"lib/forge-std": {
"rev": "77041d2ce690e692d6e03cc812b57d1ddaa4d505"
},
Expand Down
54 changes: 28 additions & 26 deletions foundry.toml
Original file line number Diff line number Diff line change
@@ -1,39 +1,41 @@
[profile.default]
evm_version = "cancun"
optimizer = true
optimizer_runs = 10_000_000
solc_version = "0.8.29"
verbosity = 3
gas_limit = "9223372036854775807"
no_match_test = "test_fuzz_gas_release_malicious"
evm_version = "cancun"
optimizer = true
optimizer_runs = 10_000_000
solc_version = "0.8.29"
verbosity = 3
gas_limit = "9223372036854775807"
no_match_test = "test_fuzz_gas_release_malicious"

[rpc_endpoints]
mainnet = "${MAINNET_RPC_URL}"
mainnet = "${MAINNET_RPC_URL}"
unichain = "${UNICHAIN_RPC_URL}"

[profile.ci]
fuzz = { runs = 5000 }
invariant = { runs = 1000 }
fuzz = { runs = 5000 }
invariant = { runs = 1000 }

[profile.coverage]
fuzz = { runs = 100 }
invariant = { runs = 0 }
fuzz = { runs = 100 }
invariant = { runs = 0 }

[profile.lite]
fuzz = { runs = 50 }
invariant = { runs = 10 }
# Speed up compilation and tests during development.
optimizer = false
fuzz = { runs = 50 }
invariant = { runs = 10 }
# Speed up compilation and tests during development.
optimizer = false

[fmt]
bracket_spacing = false
int_types = "long"
line_length = 100
multiline_func_header = "attributes_first"
number_underscore = "thousands"
quote_style = "double"
single_line_statement_blocks = "single"
tab_width = 2
wrap_comments = true
bracket_spacing = false
int_types = "long"
line_length = 100
multiline_func_header = "attributes_first"
number_underscore = "thousands"
quote_style = "double"
single_line_statement_blocks = "single"
tab_width = 2
wrap_comments = true

[lint]
exclude_lints = ["mixed-case-variable", "mixed-case-function"]
exclude_lints = ["mixed-case-variable", "mixed-case-function"]

1 change: 1 addition & 0 deletions lib/dao-signer
Submodule dao-signer added at ee1e73
1 change: 1 addition & 0 deletions remappings.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
solmate/=lib/solmate/
@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock
eas-contracts/=lib/dao-signer/lib/eas-contracts/contracts/
25 changes: 25 additions & 0 deletions script/01_DeployMainnet.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import {console2} from "forge-std/console2.sol";
import "forge-std/Script.sol";
import {MainnetDeployer} from "./deployers/MainnetDeployer.sol";

contract DeployMainnet is Script {
function setUp() public {}

function run() public {
require(block.chainid == 1, "Not mainnet");

vm.startBroadcast();

MainnetDeployer deployer = new MainnetDeployer();
console2.log("Deployed Deployer at:", address(deployer));
console2.log("TOKEN_JAR at:", address(deployer.TOKEN_JAR()));
console2.log("RELEASER at:", address(deployer.RELEASER()));
console2.log("V3_FEE_ADAPTER at:", address(deployer.V3_FEE_ADAPTER()));
console2.log("UNI_VESTING at:", address(deployer.UNI_VESTING()));

vm.stopBroadcast();
}
}
24 changes: 24 additions & 0 deletions script/02_DeployUnichain.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import {console2} from "forge-std/console2.sol";
import {Script} from "forge-std/Script.sol";
import {UnichainDeployer} from "./deployers/UnichainDeployer.sol";
import {OptimismBridgedResourceFirepit} from "../src/releasers/OptimismBridgedResourceFirepit.sol";

contract DeployUnichain is Script {
function setUp() public {}

function run() public {
require(block.chainid == 130, "Not Unichain");

vm.startBroadcast();

UnichainDeployer deployer = new UnichainDeployer();
console2.log("Deployed Deployer at:", address(deployer));
console2.log("TOKEN_JAR at:", address(deployer.TOKEN_JAR()));
console2.log("RELEASER at:", address(deployer.RELEASER()));

vm.stopBroadcast();
}
}
37 changes: 37 additions & 0 deletions script/03_CreateAgreementAnchorsMainnet.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.29;

import {Script, console2} from "forge-std/Script.sol";
import {IAgreementAnchorFactory} from "dao-signer/src/interfaces/IAgreementAnchorFactory.sol";
import {AgreementAnchor} from "dao-signer/src/AgreementAnchor.sol";

contract CreateAgreementAnchors is Script {
IAgreementAnchorFactory public constant AGREEMENT_ANCHOR_FACTORY =
IAgreementAnchorFactory(0x5Ef3cCf9eC7E0af61E1767b2EEbB50e052b5Df47);

// TODO: set content hashes and counterparty addresses for DUNI agreements
bytes32 public constant AGREEMENT_ANCHOR_1_CONTENT_HASH = "";
address public constant AGREEMENT_ANCHOR_1_COUNTER_SIGNER = address(0);
bytes32 public constant AGREEMENT_ANCHOR_2_CONTENT_HASH = "";
address public constant AGREEMENT_ANCHOR_2_COUNTER_SIGNER = address(0);

function run() public returns (address, address) {
require(block.chainid == 1, "Not mainnet");
vm.startBroadcast();
address agreementAnchor1 = address(
AGREEMENT_ANCHOR_FACTORY.createAgreementAnchor(
AGREEMENT_ANCHOR_1_CONTENT_HASH, AGREEMENT_ANCHOR_1_COUNTER_SIGNER
)
);

address agreementAnchor2 = address(
AGREEMENT_ANCHOR_FACTORY.createAgreementAnchor(
AGREEMENT_ANCHOR_2_CONTENT_HASH, AGREEMENT_ANCHOR_2_COUNTER_SIGNER
)
);
console2.log("Agreement Anchor 1:", agreementAnchor1);
console2.log("Agreement Anchor 2:", agreementAnchor2);
vm.stopBroadcast();
return (agreementAnchor1, agreementAnchor2);
}
}
Loading
Loading