Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add status and forum link to term 5-6 proposals #386

Merged
merged 3 commits into from
Jan 28, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
65 changes: 0 additions & 65 deletions app/app/opengraph/[...slug]/route.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { ImageResponse } from 'next/og';
import { NextRequest } from 'next/server';
import { readFile } from 'node:fs/promises';

import { getProfilePicture } from '@/utils/contributorHelper';
import { navigation } from '#/config/navigation';

// eslint-disable-next-line unicorn/prevent-abbreviations
Expand Down Expand Up @@ -61,17 +60,6 @@ export async function GET(request: NextRequest) {

const page = await getPageBySlug(slug);

const [avatars, moreAvatars] = (() => {
if (!page.pageProperties.meta?.contributors) return [[], 0];

const v = [...page.pageProperties.meta.contributors].reverse();

const s1 = v.slice(0, 5).reverse();

// grab first 5 contributors
return [s1, v.length - s1.length];
})();

return new ImageResponse(
(
// ImageResponse JSX element
Expand Down Expand Up @@ -178,59 +166,6 @@ export async function GET(request: NextRequest) {
</div>
)}
</div>
<div
style={{
position: 'absolute',
bottom: '16px',
right: '16px',
display: 'flex',
}}
>
{avatars.map((key, index) => (
<div
key={key}
style={{
display: 'flex',
width: '42px',
height: '42px',
borderRadius: '50%',
background: 'lightblue',
marginLeft: index > 0 ? '-16px' : '0',
border: '1px solid #E8E8E8',
}}
>
<img
src={getProfilePicture(key, 'jpg')}
height={42}
width={42}
alt=""
style={{
width: '100%',
height: '100%',
borderRadius: '50%',
}}
/>
</div>
))}
{moreAvatars > 0 && (
<div
style={{
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
width: '42px',
height: '42px',
borderRadius: '50%',
background: '#EEF5FF',
color: '#3889FF',
marginLeft: '-16px',
fontWeight: 700,
}}
>
+ {moreAvatars}
</div>
)}
</div>
<div
style={{
position: 'absolute',
Expand Down
4 changes: 2 additions & 2 deletions app/src/components/contribute/ContributorsSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export const ContributorsSection: FC<{
className="flex w-fit items-center gap-2 transition-all hover:scale-105"
>
<img
src={getProfilePicture(contributors[0], 'webp')}
src={getProfilePicture(contributors[0])}
className="my-0 aspect-square size-6 rounded-full shadow-md"
alt={contributors[0]}
/>
Expand All @@ -39,7 +39,7 @@ export const ContributorsSection: FC<{
className="group relative transition-all hover:scale-105"
>
<img
src={getProfilePicture(contributor, 'webp')}
src={getProfilePicture(contributor)}
className="my-0 aspect-square w-6 rounded-full shadow-md"
alt={contributor}
/>
Expand Down
4 changes: 2 additions & 2 deletions app/src/utils/contributorHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ export const getUsernameType = (
return 'unknown';
};

export const getProfilePicture = (username: string, format: 'webp' | 'jpg') => {
export const getProfilePicture = (username: string) => {
const type = getUsernameType(username);

if (type === 'ens') {
return `https://avatarservice.xyz/64/${username}.${format}`;
return `https://ens-api.gregskril.com/avatar/${username}?width=64`;
}

if (type === 'github') {
Expand Down
36 changes: 20 additions & 16 deletions docs/dao/proposals/5.1.mdx
Original file line number Diff line number Diff line change
@@ -1,34 +1,38 @@
{/** @type {import('@/lib/mdxPageProps').MdxMetaProps} */}
export const meta = {
description: 'Deploy a new version of the DNSSEC oracle and DNS registrar that enables \'gasless DNSSEC\' functionality.',
emoji: '📖',
contributors: [
'arachnid'
],
proposal: {
discourse: '18535',
// snapshot: '0x8e3c8812bd52d1760eb2bbf8dc603d68860741f80d489dc051017e863151a242',
type: 'executable'
}
};
description:
"Deploy a new version of the DNSSEC oracle and DNS registrar that enables 'gasless DNSSEC' functionality.",
emoji: '📖',
contributors: ['arachnid'],
proposal: {
discourse: '18535',
type: 'executable',
tally:
'4208408830555077285685632645423534041634535116286721240943655761928631543220',
},
}

# [EP5.1] [Executable] Upgrade DNSSEC support

## Abstract
| **Status** | Passed |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| **Discussion Thread** | [Forum](https://discuss.ens.domains/t/ep5-1-executable-upgrade-dnssec-support/18535) |
| **Votes** | [Agora](https://agora.ensdao.org/proposals/4208408830555077285685632645423534041634535116286721240943655761928631543220) |

## Abstract

The ENS labs team has been working on a new version of the DNSSEC oracle and the DNS registrar that, combined with wildcard resolution (ENSIP 10) and CCIP-Read, allow for 'gasless DNSSEC' - enabling the use of DNS names inside ENS with no onchain transactions required. This proposal replaces the existing DNSSEC registrar with the new one.

Existing DNS names will continue to function as before, and names can still be imported using the 'legacy' method. The new registrar also allows configuring a name by setting a TXT record on _ens.name.tld, containing the address of a special resolver contract to use, followed by any resolver-specific data. Resolvers designed for the purpose can be configured to parse this extra data, making configuration entirely offchain a possibility.
Existing DNS names will continue to function as before, and names can still be imported using the 'legacy' method. The new registrar also allows configuring a name by setting a TXT record on \_ens.name.tld, containing the address of a special resolver contract to use, followed by any resolver-specific data. Resolvers designed for the purpose can be configured to parse this extra data, making configuration entirely offchain a possibility.

Alongside the new registrar and oracle contracts, a simple resolver is provided that reads the Ethereum address to resolve a name to from the extra data.

Post-execution, ENS Labs will run a process to upgrade all current DNS TLDs to use the new registrar. TLDs will only function with the new registrar once this (permissionless) transaction is sent for the TLD.

## Specification
## Specification

Call `setController` on the Root contract at `root.ens.eth`, passing in the address of the new DNS registrar (`0xb32cb5677a7c971689228ec835800432b339ba2b`).

## Transactions
## Transactions

| Address | Value | Function | Argument | Value |
| ------------------------------------------ | ----- | ------------- | -------- | ------------------------------------------ |
Expand Down
37 changes: 20 additions & 17 deletions docs/dao/proposals/5.10.mdx
Original file line number Diff line number Diff line change
@@ -1,25 +1,29 @@
{/** @type {import('@/lib/mdxPageProps').MdxMetaProps} */}
export const meta = {
description: 'This proposal confirms the 8 individuals for the Security Council, as defined in EP5.7, to protect against governance attacks by canceling malicious proposals using the SecurityCouncil smart contract.',
emoji: '📖',
contributors: [
'alextnetto.eth'
],
proposal: {
snapshot: '0xa0b1bfadf6853b5b0d59d3c4d73c434fc6389339887d05de805361372eb17c3a',
type: 'social'
}
};
description:
'This proposal confirms the 8 individuals for the Security Council, as defined in EP5.7, to protect against governance attacks by canceling malicious proposals using the SecurityCouncil smart contract.',
emoji: '📖',
contributors: ['alextnetto.eth'],
proposal: {
snapshot:
'0xa0b1bfadf6853b5b0d59d3c4d73c434fc6389339887d05de805361372eb17c3a',
type: 'social',
},
}

# [EP5.10] [Social] Confirming the ENS DAO Security Council Members

| **Status** | Passed |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| **Discussion Thread** | [Forum](https://discuss.ens.domains/t/temp-check-enable-cancel-role-on-the-dao/19090) |
| **Votes** | [Snapshot](https://snapshot.box/#/s:ens.eth/proposal/0xa0b1bfadf6853b5b0d59d3c4d73c434fc6389339887d05de805361372eb17c3a) |

## Abstract

Following the successful passing of the [EP5.7](https://snapshot.org/#/ens.eth/proposal/0xf3a4673fe04a3ecfed4a2f066f6ced1539a5466d61630428333360b843653c54), this proposal aims to confirm the 8 individuals who will form the Security Council with the permissions defined in [EP5.7](https://snapshot.org/#/ens.eth/proposal/0xf3a4673fe04a3ecfed4a2f066f6ced1539a5466d61630428333360b843653c54). The Security Council will be responsible for protecting the organization from potential governance attacks by having the ability to cancel malicious proposals using the [SecurityCouncil](https://github.com/blockful-io/security-council-ens/blob/main/README.md) smart contract.

## Specification

A discussion was held in the ENS forum titled **[[Temp Check] Enable CANCEL role on the DAO](https://discuss.ens.domains/t/temp-check-enable-cancel-role-on-the-dao/19090)**.
A discussion was held in the ENS forum titled **[[Temp Check] Enable CANCEL role on the DAO](https://discuss.ens.domains/t/temp-check-enable-cancel-role-on-the-dao/19090)**.
Following that discussion, The [EP5.7](https://snapshot.org/#/ens.eth/proposal/0xf3a4673fe04a3ecfed4a2f066f6ced1539a5466d61630428333360b843653c54) proposal, which can be [found here](https://snapshot.org/#/ens.eth/proposal/0xf3a4673fe04a3ecfed4a2f066f6ced1539a5466d61630428333360b843653c54), detailed the need for a Security Council to mitigate the risk of governance attacks on the ENS DAO. The proposal passed with overwhelming support from the community, receiving 1.4 million votes and 100% approval.

As outlined in the [EP5.7](https://snapshot.org/#/ens.eth/proposal/0xf3a4673fe04a3ecfed4a2f066f6ced1539a5466d61630428333360b843653c54) proposal, the [SecurityCouncil](https://github.com/blockful-io/security-council-ens/blob/main/README.md) smart contract will be deployed, and the Security Council multisig will be granted the PROPOSER_ROLE in the timelock. This will allow the Security Council to cancel malicious proposals, without granting the ability to initiate proposals, vote on proposals, or perform any other actions. The contract also features an expiration mechanism that automatically revokes the council's veto power after 2 years, promoting decentralization.
Expand All @@ -37,7 +41,7 @@ The proposed Security Council will consist of the following 8 individuals in a 4
7. [brantly.eth](https://www.tally.xyz/gov/ens/delegate/brantly.eth)
8. [alextnetto.eth](https://www.tally.xyz/gov/ens/delegate/alextnetto.eth)

The text of [EP5.7](https://snapshot.org/#/ens.eth/proposal/0xf3a4673fe04a3ecfed4a2f066f6ced1539a5466d61630428333360b843653c54) specified that the 5 delegates included on the veto contract would be included in the security council. To fill the remaining 3 places on the council, consideration was given to, delegation power, past activity in governance, economic skin on the game, and jurisdictional diversity (for legal reasons).
The text of [EP5.7](https://snapshot.org/#/ens.eth/proposal/0xf3a4673fe04a3ecfed4a2f066f6ced1539a5466d61630428333360b843653c54) specified that the 5 delegates included on the veto contract would be included in the security council. To fill the remaining 3 places on the council, consideration was given to, delegation power, past activity in governance, economic skin on the game, and jurisdictional diversity (for legal reasons).

### Voting

Expand All @@ -54,15 +58,14 @@ Upon confirmation of the Security Council members through this social proposal,
3. The multisig will accept ownership of the SecurityCouncil contract.
4. The executable proposal will grant the PROPOSER_ROLE to the SecurityCouncil contract address using the grantRole function in the timelock.

Once the executable proposal is passed and the contract is deployed with the necessary roles granted, the Security Council will be able to cancel malicious proposals to protect the ENS DAO.
Once the executable proposal is passed and the contract is deployed with the necessary roles granted, the Security Council will be able to cancel malicious proposals to protect the ENS DAO.

After the specified expiration period (2 years), anyone can revoke the PROPOSER_ROLE from the Security Council, ensuring this is a time-limited mechanism that defaults back to a more decentralized posture.


## Success Criteria
## Success Criteria

For this social proposal to pass, the following quorum and voting requirements must be met:

1. **Quorum**: The proposal must receive a minimum of 1% of the total supply of $ENS (1 million votes) in the form of "Yes" and "Abstain" votes combined. "No" votes do not count towards quorum.

2. **Approval**: Once the quorum is reached, the proposal requires a simple majority (>50%) of "Yes" votes among the "Yes" and "No" votes to pass. "Abstain" votes do not count towards the approval calculation.
2. **Approval**: Once the quorum is reached, the proposal requires a simple majority (>50%) of "Yes" votes among the "Yes" and "No" votes to pass. "Abstain" votes do not count towards the approval calculation.
39 changes: 22 additions & 17 deletions docs/dao/proposals/5.11.mdx
Original file line number Diff line number Diff line change
@@ -1,34 +1,39 @@
{/** @type {import('@/lib/mdxPageProps').MdxMetaProps} */}
export const meta = {
description: 'This proposal funds the Meta-Governance Working Group with 374k USDC and 150k ENS to support DAO-wide operations, including Working Groups, treasury management, and governance initiatives, as specified in EP 5.9 and amended by EP 5.8.',
emoji: '📖',
contributors: [
'avsa.eth'
],
proposal: {
tally: '76312276134880424811339391717815330375652916610982980144903695563372140531115',
type: 'executable'
}
};
description:
'This proposal funds the Meta-Governance Working Group with 374k USDC and 150k ENS to support DAO-wide operations, including Working Groups, treasury management, and governance initiatives, as specified in EP 5.9 and amended by EP 5.8.',
emoji: '📖',
contributors: ['avsa.eth'],
proposal: {
tally:
'76312276134880424811339391717815330375652916610982980144903695563372140531115',
type: 'executable',
},
}

# [EP5.11] [Executable] Fund the Meta-Governance Working Group (Term 5)

## Abstract
| **Status** | Passed |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| **Discussion Thread** | [Forum](https://discuss.ens.domains/t/ep5-11-executable-proposal-fund-the-meta-governance-working-group-term-5/19358) |
| **Votes** | [Agora](https://agora.ensdao.org/proposals/76312276134880424811339391717815330375652916610982980144903695563372140531115) |

Meta-Governance is seeking funding to support DAO-wide operations, including Working Groups, treasury management, and governance initiatives. This request aligns with Rule 10.1.1 of the [Working Group Rules](https://docs.ens.domains/dao/wg/rules) and amendments introduced in [EP 4.8](https://docs.ens.domains/dao/proposals/4.8). This proposal will execute the funding specification according to [EP 5.9](https://snapshot.org/#/ens.eth/proposal/0x66d355555c24ed0d2fed0aee89e4fe009e2925c84144c4edc707d33e7c19e554), as amended by [EP 5.8](https://snapshot.org/#/ens.eth/proposal/0x1f328fd1fda5f3cabfdace3e521403def7ad41b0b0582e27334c135cd23c511d).
## Abstract

Meta-Governance is seeking funding to support DAO-wide operations, including Working Groups, treasury management, and governance initiatives. This request aligns with Rule 10.1.1 of the [Working Group Rules](https://docs.ens.domains/dao/wg/rules) and amendments introduced in [EP 4.8](https://docs.ens.domains/dao/proposals/4.8). This proposal will execute the funding specification according to [EP 5.9](https://snapshot.org/#/ens.eth/proposal/0x66d355555c24ed0d2fed0aee89e4fe009e2925c84144c4edc707d33e7c19e554), as amended by [EP 5.8](https://snapshot.org/#/ens.eth/proposal/0x1f328fd1fda5f3cabfdace3e521403def7ad41b0b0582e27334c135cd23c511d).

## Motivation

### [EP 5.9 — Funding Request: ENS Meta-Governance Working Group Term 5 ](https://discuss.ens.domains/t/4-4-2-social-funding-request-ens-meta-goverance-working-group/17994)
### [EP 5.9 — Funding Request: ENS Meta-Governance Working Group Term 5 ](https://discuss.ens.domains/t/4-4-2-social-funding-request-ens-meta-goverance-working-group/17994)

The Meta-Governance Working Group requests funding of **374,000 USDC and 150,000 ENS** from the ENS DAO treasury ([wallet.ensdao.eth](https://etherscan.io/address/0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7)). This funding will be used to support the governance processes of the ENS DAO and to manage and build infrastructure that supports the ENS DAO, its treasury, and its Working Groups.

## Specification
## Specification

The following transfers are to be made:

- Transfer 374,000 USDC to [main.mg.wg.ens.eth](https://etherscan.io/address/0x91c32893216dE3eA0a55ABb9851f581d4503d39b).
- Transfer 374,000 USDC to [main.mg.wg.ens.eth](https://etherscan.io/address/0x91c32893216dE3eA0a55ABb9851f581d4503d39b).
- Transfer 150,000 ENS to [main.mg.wg.ens.eth](https://etherscan.io/address/0x91c32893216dE3eA0a55ABb9851f581d4503d39b).

Addresses for confirmation:
- 0x91c32893216de3ea0a55abb9851f581d4503d39b for main.mg.wg.ens.eth

- 0x91c32893216de3ea0a55abb9851f581d4503d39b for main.mg.wg.ens.eth
Loading