Skip to content

Conversation

@fedgiac
Copy link
Contributor

@fedgiac fedgiac commented Nov 27, 2025

The contract introduced in #230 was deployed on mainnet. (Up-to-date as of commit e297f00.)

Deployment output:

deployment
$ yarn deploy --network mainnet
yarn run v1.22.22
$ hardhat deploy --network mainnet
Nothing to compile
reusing "AllocationModule" at 0x582A254713b65c140840ade25A692fBe2610682d
To enable this module in the team controller safe, execute a transaction with the following parameters on the team controller safe:
To: 0xca07EaA4253638D286caD71CBcEec11803F2709A
Value: 0
Data: 0x610b5925000000000000000000000000582a254713b65c140840ade25a692fbe2610682d
deploying "CowDaoAllocationModule" (tx: 0x68bf9d00ab29118d45644bb02a528a115b2b2bd9dc2b81079197535a159628dc)...: deployed at 0xd2D2946402c60d1C97195fa22eaD21812e1ff25D with 940371 gas
To enable this module in the CoW DAO safe, execute a transaction with the following parameters on CoW DAO:
To: 0xcA771eda0c70aA7d053aB1B25004559B918FE662
Value: 0
Data: 0x610b5925000000000000000000000000d2d2946402c60d1c97195fa22ead21812e1ff25d
updating 'networks.json'...
contract verification (already verified)
$ yarn verify:etherscan --network mainnet
yarn run v1.22.22
$ hardhat etherscan-verify --license LGPL-3.0 --force-license --network mainnet
already verified: AllocationModule (0x582A254713b65c140840ade25A692fBe2610682d), skipping.
already verified: CowDaoAllocationModule (0xd2D2946402c60d1C97195fa22eaD21812e1ff25D), skipping.
Done in 2.56s.

Relevant instructions to enable the module:

To enable this module in the CoW DAO safe, execute a transaction with the following parameters on CoW DAO:
To: 0xcA771eda0c70aA7d053aB1B25004559B918FE662
Value: 0
Data: 0x610b5925000000000000000000000000d2d2946402c60d1c97195fa22ead21812e1ff25d

Allocation

For completeness, we generate the expected allocation transaction in the proposal.

Generation

Using the following CSV input:

Address,Number of Tokens,Start Date,Duration (days)
0x486c2B52FfbeD401b16ce39b7Ab9E2Ebf56D650f,"100000000",2026-02-11Z08:05:15,1460

and running the script:

$ npx hardhat start-vesting --network mainnet --allocation-module 0xd2D2946402c60d1C97195fa22eaD21812e1ff25D --csv ./2025-11-27-dao-vesting.csv 
┌─────────┬──────────────────────────────────────────────┬───────────────┬────────────────────┬───────────────────┬───────────────────┐
│ (index) │ Beneficiary address                          │ Amount        │ USD cost at launch │ Vesting start     │ Vesting end       │
├─────────┼──────────────────────────────────────────────┼───────────────┼────────────────────┼───────────────────┼───────────────────┤
│ 0       │ '0x486c2B52FfbeD401b16ce39b7Ab9E2Ebf56D650f' │ '100,000,000' │ '15,000,000'       │ 'Wed Feb 11 2026' │ 'Sun Feb 10 2030' │
└─────────┴──────────────────────────────────────────────┴───────────────┴────────────────────┴───────────────────┴───────────────────┘

The allocation module needs to be enabled in the team controller Safe before new vesting positions can be added.
A transaction that enables the allocation module was added at the start of the batch.

we get the following transaction builder output:

{
  "version": "1.0",
  "chainId": "1",
  "createdAt": 1764288497453,
  "meta": {
    "name": "Start Vesting Transactions Batch",
    "description": "A transaction that batches together multiple calls to the allocation modules for starting vesting positions"
  },
  "transactions": [
    {
      "to": "0xcA771eda0c70aA7d053aB1B25004559B918FE662",
      "data": "0x610b5925000000000000000000000000d2d2946402c60d1c97195fa22ead21812e1ff25d",
      "value": "0"
    },
    {
      "to": "0xd2D2946402c60d1C97195fa22eaD21812e1ff25D",
      "data": "0x02a861a6000000000000000000000000486c2b52ffbed401b16ce39b7ab9e2ebf56d650f00000000000000000000000000000000000000000000000000000000698c383b000000000000000000000000000000000000000000000000000000000784ce0000000000000000000000000000000000000000000052b7d2dcc80cd2e4000000",
      "value": "0"
    }
  ]
}

The resulting transaction builder file is the following:

2025-11-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 0xd2D2946402c60d1C97195fa22eaD21812e1ff25D and 0x582A254713b65c140840ade25A692fBe2610682d to confirm that there are no changes outside of the deployment parameters.

bytecode diff image

@fedgiac fedgiac requested a review from a team November 27, 2025 17:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants