Conversation
There was a problem hiding this comment.
worth mentioning that this new solcInputs file is almost the same as the original (already checked into the main branch) save for one difference
--- deployments/mainnet/solcInputs/a646833678744341c349f0a109c850d1.json 2026-01-13 19:15:32.376531854 +0900
+++ deployments/mainnet/solcInputs/bcd8532b3dae86997a3aae16f3b66a58.json 2026-01-13 19:04:32.597336281 +0900
@@ -7,9 +7,6 @@
"src/contracts/interface/CowProtocolTokens.sol": {
"content": "// SPDX-License-Identifier: LGPL-3.0-or-later\npragma solidity ^0.8;\n\n/// @dev Interface exposing some of the functions of the governance token for the CoW Protocol.\n/// @title CoW Protocol Governance Token Minimal Interface\n/// @author CoW Protocol Developers\ninterface CowProtocolToken {\n /// @dev Moves `amount` tokens from the caller's account to `to`.\n /// Returns true. Reverts if the operation didn't succeed.\n function transfer(address to, uint256 amount) external returns (bool);\n}\n\n/// @dev Interface exposing some of the functions of the virtual token for the CoW Protocol.\n/// @title CoW Protocol Virtual Token Minimal Interface\n/// @author CoW Protocol Developers\ninterface CowProtocolVirtualToken {\n /// @dev Converts an amount of (virtual) tokens from this contract to real\n /// tokens based on the claims previously performed by the caller.\n /// @param amount How many virtual tokens to convert into real tokens.\n function swap(uint256 amount) external;\n\n /// @dev Address of the real COW token. Tokens claimed by this contract can\n /// be converted to this token if this contract stores some balance of it.\n function cowToken() external view returns (address);\n}\n"
},
- "src/contracts/test/MockVCow.sol": {
- "content": "// SPDX-License-Identifier: LGPL-3.0-or-later\npragma solidity ^0.8;\n\n/// @dev Mock of vCOW token. Emits an event when calling `swap`.\n/// @title vCOW mock contract\n/// @author CoW Protocol Developers\ncontract MockVcow {\n address public cowToken;\n\n constructor(address _cowToken) {\n cowToken = _cowToken;\n }\n\n event Swapped(address caller, uint256 amount);\n\n function swap(uint256 amount) external {\n emit Swapped(msg.sender, amount);\n }\n}\n"
- },
"src/contracts/vendored/Enum.sol": {
"content": "// SPDX-License-Identifier: LGPL-3.0-only\n\n// Vendored from @gnosis.pm/safe-contracts v1.3.0, see:\n// <https://raw.githubusercontent.com/gnosis/safe-contracts/v1.3.0/contracts/common/Enum.sol>\n\npragma solidity >=0.7.0 <0.9.0;\n\n/// @title Enum - Collection of enums\n/// @author Richard Meissner - <[email protected]>\ncontract Enum {\n enum Operation {\n Call,\n DelegateCall\n }\n}\n"
},
I think functionally its the same as what ends up on mainnet down to the CBOR, but wouldn't it be nice to reuse the existing artifact?
kaze-cow
left a comment
There was a problem hiding this comment.
inclusion of the solcInputs file was a bit surprising to me as the inputs should be the same, but turns out there is one small difference in the inclusion of the MockVCow test file in the compilation output. I don't think this harms anything, but interesting to see.
deployment itself seems good. initcode is the same as the original deployment except for the Safe address, and addresses match up.
anxolin
left a comment
There was a problem hiding this comment.
Everytying worked as described in the instructions. Thanks for the detailed steps and setting expectations!
ubernit: not from this PR, but I wish start-vesting would have written the output file nam in the console log. I check in the script cause at first I didn't know where to look
The contract introduced in #230 was deployed on mainnet. (Up-to-date as of commit e297f00.)
Deployment output:
deployment
contract verification (already verified)
Relevant instructions to enable the module:
Allocation
For completeness, we generate the expected allocation transaction in the proposal.
Generation
Using the following CSV input (2026-01-08-dao-vesting-revised.csv):
and running the script:
we get the following transaction builder output:
The resulting transaction builder file is the following:
2026-01-08-cow-funding-dao-proposal.json
A simulation can be found here.
Note that it already includes the enabling of the module discussed above, meaning that this file contains the entire proposal.
(It's expected to show a warning "This batch contains some changed properties since you saved or downloaded it" since the format used lacks the checksum.)
Test Plan
Check that the verified contract code matches.
You can also compare the bytecode of
0xd2D2946402c60d1C97195fa22eaD21812e1ff25Dand0x582A254713b65c140840ade25A692fBe2610682dto confirm that there are no changes outside of the deployment parameters.bytecode diff