From 6703190fa4e625c14363155a773113126380f4a3 Mon Sep 17 00:00:00 2001
From: Greg Skriloff <35093316+gskril@users.noreply.github.com>
Date: Sun, 19 Jan 2025 00:39:27 -0500
Subject: [PATCH 1/4] Enforce `Date` type in frontmatter
---
app/.gitignore => .gitignore | 1 +
app/src/components/Header.tsx | 9 ++++++++-
app/src/specs/validateFrontmatter.ts | 17 +++++------------
ensips/1.md | 2 +-
ensips/2.md | 2 +-
ensips/3.md | 2 +-
ensips/4.md | 2 +-
ensips/5.md | 2 +-
ensips/6.md | 2 +-
ensips/7.md | 2 +-
ensips/8.md | 2 +-
template.md | 3 ++-
12 files changed, 24 insertions(+), 22 deletions(-)
rename app/.gitignore => .gitignore (67%)
diff --git a/app/.gitignore b/.gitignore
similarity index 67%
rename from app/.gitignore
rename to .gitignore
index 08dc7b0..a7e5733 100644
--- a/app/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
node_modules/
dist/
+.DS_Store
diff --git a/app/src/components/Header.tsx b/app/src/components/Header.tsx
index 2b10cc0..e77cbff 100644
--- a/app/src/components/Header.tsx
+++ b/app/src/components/Header.tsx
@@ -15,7 +15,14 @@ export const Header: FC<{ frontmatter: Frontmatter }> = ({ frontmatter }) => {
Created
-
{frontmatter.ensip.created}
+
+ {frontmatter.ensip.created.toLocaleDateString('UTC', {
+ timeZone: 'UTC',
+ year: 'numeric',
+ month: 'long',
+ day: 'numeric',
+ })}
+
diff --git a/app/src/specs/validateFrontmatter.ts b/app/src/specs/validateFrontmatter.ts
index beb14f3..08c13d5 100644
--- a/app/src/specs/validateFrontmatter.ts
+++ b/app/src/specs/validateFrontmatter.ts
@@ -15,15 +15,7 @@ export type UnparsedFrontmatter = {
};
};
-export type Frontmatter = {
- description: string;
- contributors: string[];
- ensip: {
- status: string;
- created: string;
- };
- ignoredRules?: string[];
-};
+export type Frontmatter = z.infer;
export const FrontMatterZod = z.object({
description: z.string().min(5).max(160),
@@ -38,7 +30,7 @@ export const FrontMatterZod = z.object({
.max(10),
ensip: z.object({
status: z.enum(['draft', 'obsolete', 'final']),
- created: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
+ created: z.date(),
}),
ignoredRules: z.array(z.string()).optional(),
});
@@ -48,8 +40,9 @@ export const validateFrontmatter = (
directPath: string
): Frontmatter => {
try {
- // @ts-ignore
- const parsed = parseYaml(frontmatter.value as string) as Frontmatter;
+ const parsed = parseYaml(frontmatter.value as string, {
+ customTags: ['timestamp'],
+ }) as Frontmatter;
return FrontMatterZod.parse(parsed);
} catch (error) {
diff --git a/ensips/1.md b/ensips/1.md
index 256586d..331b166 100644
--- a/ensips/1.md
+++ b/ensips/1.md
@@ -3,7 +3,7 @@ description: Documentation of the basic ENS protocol (formerly EIP-137)
contributors:
- nick.eth
ensip:
- created: '2016-04-04'
+ created: 2016-04-04
status: final
ignoredRules: ["missing:copyright"]
---
diff --git a/ensips/2.md b/ensips/2.md
index 014f22f..49d3f6c 100644
--- a/ensips/2.md
+++ b/ensips/2.md
@@ -5,7 +5,7 @@ contributors:
- avsa.eth
- maurelian
ensip:
- created: '2016-10-25'
+ created: 2016-10-25
status: obsolete
ignoredRules: ["heading:prior-work"]
---
diff --git a/ensips/3.md b/ensips/3.md
index e2591cd..80aab32 100644
--- a/ensips/3.md
+++ b/ensips/3.md
@@ -3,7 +3,7 @@ description: Specifies a TLD, registrar, and resolver interface for reverse reso
contributors:
- nick.eth
ensip:
- created: '2016-12-01'
+ created: 2016-12-01
status: final
---
diff --git a/ensips/4.md b/ensips/4.md
index 149beca..4676c43 100644
--- a/ensips/4.md
+++ b/ensips/4.md
@@ -3,7 +3,7 @@ description: A mechanism for storing ABI definitions in ENS, for easy lookup of
contributors:
- nick.eth
ensip:
- created: '2017-02-06'
+ created: 2017-02-06
status: final
ignoredRules: ["missing:motivation"]
---
diff --git a/ensips/5.md b/ensips/5.md
index fd9eafa..baa69dd 100644
--- a/ensips/5.md
+++ b/ensips/5.md
@@ -3,7 +3,7 @@ description: A standard for storage of text records in ENS (formerly EIP-634).
contributors:
- ricmoo.eth
ensip:
- created: '2017-05-17'
+ created: 2017-05-17
status: final
---
diff --git a/ensips/6.md b/ensips/6.md
index 2ebbd23..9e8db52 100644
--- a/ensips/6.md
+++ b/ensips/6.md
@@ -3,7 +3,7 @@ description: Defines a resolver profile for ENS that provides features for stora
contributors:
- mcdee
ensip:
- created: '2018-06-26'
+ created: 2018-06-26
status: obsolete
ignoredRules: ["heading:implementation", "heading:test-cases"]
---
diff --git a/ensips/7.md b/ensips/7.md
index 40b3a56..f2edc1e 100644
--- a/ensips/7.md
+++ b/ensips/7.md
@@ -4,7 +4,7 @@ contributors:
- nick.eth
- decanus
ensip:
- created: '2018-11-13'
+ created: 2018-11-13
status: final
---
diff --git a/ensips/8.md b/ensips/8.md
index f082fb7..ed056c2 100644
--- a/ensips/8.md
+++ b/ensips/8.md
@@ -3,7 +3,7 @@ description: Defines a method of associating contract interfaces with ENS names
contributors:
- nick.eth
ensip:
- created: '2019-03-05'
+ created: 2019-03-05
status: final
ignoredRules: ["heading:implementation"]
---
diff --git a/template.md b/template.md
index bfa9aba..19f043a 100644
--- a/template.md
+++ b/template.md
@@ -6,7 +6,7 @@ contributors:
- nick.eth
ensip:
# Date of creation
- created: '2024-01-01'
+ created: 2024-01-01
# Status of the proposal, draft by default, updated by the editors
status: draft
---
@@ -56,4 +56,5 @@ Optional security considerations section.
## Copyright
+
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).
From 6287af828322b5a436445cdc258076fe4b3872dc Mon Sep 17 00:00:00 2001
From: Greg Skriloff <35093316+gskril@users.noreply.github.com>
Date: Sun, 19 Jan 2025 00:51:21 -0500
Subject: [PATCH 2/4] Update frontmatter format
"Authors" is more accurate than "Contributors", and flat is generally easier to parse from other apps. This is closer to the EIP format
---
app/src/components/Header.tsx | 10 +++++-----
app/src/specs/validateFrontmatter.ts | 8 +++-----
ensips/1.md | 7 +++----
ensips/10.md | 7 +++----
ensips/11.md | 7 +++----
ensips/12.md | 7 +++----
ensips/13.md | 7 +++----
ensips/14.md | 7 +++----
ensips/15.md | 7 +++----
ensips/16.md | 7 +++----
ensips/17.md | 7 +++----
ensips/18.md | 7 +++----
ensips/19.md | 7 +++----
ensips/2.md | 7 +++----
ensips/3.md | 7 +++----
ensips/4.md | 7 +++----
ensips/5.md | 7 +++----
ensips/6.md | 7 +++----
ensips/7.md | 7 +++----
ensips/8.md | 7 +++----
ensips/9.md | 7 +++----
template.md | 10 +++++-----
22 files changed, 70 insertions(+), 91 deletions(-)
diff --git a/app/src/components/Header.tsx b/app/src/components/Header.tsx
index e77cbff..bef9455 100644
--- a/app/src/components/Header.tsx
+++ b/app/src/components/Header.tsx
@@ -11,12 +11,12 @@ export const Header: FC<{ frontmatter: Frontmatter }> = ({ frontmatter }) => {
Status
-
{frontmatter.ensip.status}
+
{frontmatter.status}
Created
- {frontmatter.ensip.created.toLocaleDateString('UTC', {
+ {frontmatter.created.toLocaleDateString('UTC', {
timeZone: 'UTC',
year: 'numeric',
month: 'long',
@@ -27,11 +27,11 @@ export const Header: FC<{ frontmatter: Frontmatter }> = ({ frontmatter }) => {
Author
- {frontmatter.contributors.length > 1 ? 's' : ''}
+ {frontmatter.authors.length > 1 ? 's' : ''}
- {frontmatter.contributors.map((contributor, index) => {
- return - {contributor}
;
+ {frontmatter.authors.map((author, index) => {
+ return - {author}
;
})}
diff --git a/app/src/specs/validateFrontmatter.ts b/app/src/specs/validateFrontmatter.ts
index 08c13d5..8635be1 100644
--- a/app/src/specs/validateFrontmatter.ts
+++ b/app/src/specs/validateFrontmatter.ts
@@ -19,7 +19,7 @@ export type Frontmatter = z.infer
;
export const FrontMatterZod = z.object({
description: z.string().min(5).max(160),
- contributors: z
+ authors: z
.array(
z
.string()
@@ -28,10 +28,8 @@ export const FrontMatterZod = z.object({
)
.min(1)
.max(10),
- ensip: z.object({
- status: z.enum(['draft', 'obsolete', 'final']),
- created: z.date(),
- }),
+ status: z.enum(['Draft', 'Obsolete', 'Final']),
+ created: z.date(),
ignoredRules: z.array(z.string()).optional(),
});
diff --git a/ensips/1.md b/ensips/1.md
index 331b166..e4311af 100644
--- a/ensips/1.md
+++ b/ensips/1.md
@@ -1,10 +1,9 @@
---
description: Documentation of the basic ENS protocol (formerly EIP-137)
-contributors:
+authors:
- nick.eth
-ensip:
- created: 2016-04-04
- status: final
+created: 2016-04-04
+status: Final
ignoredRules: ["missing:copyright"]
---
diff --git a/ensips/10.md b/ensips/10.md
index 6f3132a..4b2161d 100644
--- a/ensips/10.md
+++ b/ensips/10.md
@@ -1,11 +1,10 @@
---
description: Provides a mechanism to support wildcard resolution of ENS names (formerly EIP-2544).
-contributors:
+authors:
- nick.eth
- 0age
-ensip:
- created: 2020-02-28
- status: draft
+created: 2020-02-28
+status: Draft
---
# ENSIP-10: Wildcard Resolution
diff --git a/ensips/11.md b/ensips/11.md
index 7f6e4c8..a479ab5 100644
--- a/ensips/11.md
+++ b/ensips/11.md
@@ -1,10 +1,9 @@
---
description: Introduces coinType for EVM compatible chains (amending ENSIP9).
-contributors:
+authors:
- matoken.eth
-ensip:
- status: draft
- created: 2022-01-13
+status: Draft
+created: 2022-01-13
---
# ENSIP-11: EVM compatible Chain Address Resolution
diff --git a/ensips/12.md b/ensips/12.md
index 7fb288d..7fd829b 100644
--- a/ensips/12.md
+++ b/ensips/12.md
@@ -1,11 +1,10 @@
---
description: A standard for storage of the avatar text record in ENS.
-contributors:
+authors:
- nick.eth
- matoken.eth
-ensip:
- status: draft
- created: 2022-01-18
+status: Draft
+created: 2022-01-18
---
# ENSIP-12: Avatar Text Records
diff --git a/ensips/13.md b/ensips/13.md
index 6b44fdc..fc43890 100644
--- a/ensips/13.md
+++ b/ensips/13.md
@@ -1,14 +1,13 @@
---
description: Using ENS Text Records to facilitate safer and more convenient signing operations.
-contributors:
+authors:
- wwhchung
- jwahdatehagh
- crydoteth
- sillytuna
- cyberpnkwin
-ensip:
- created: 2021-08-03
- status: draft
+created: 2021-08-03
+status: Draft
ignoredRules: ["missing:specification"]
---
diff --git a/ensips/14.md b/ensips/14.md
index fc12798..b94309b 100644
--- a/ensips/14.md
+++ b/ensips/14.md
@@ -1,11 +1,10 @@
---
description: Using the reveal secret as a way to have on chain information about the source of the registration
-contributors:
+authors:
- aslobodnik
- alexvandesande
-ensip:
- status: draft
- created: 2021-02-07
+status: Draft
+created: 2021-02-07
ignoredRules: ["missing:motivation", "missing:copyright", "heading:user-referral-data", "heading:privacy-concerns", "heading:a-reverse-code-registry"]
---
diff --git a/ensips/15.md b/ensips/15.md
index 5f27bd5..f296792 100644
--- a/ensips/15.md
+++ b/ensips/15.md
@@ -1,10 +1,9 @@
---
description: A standard for storage of the avatar text record in ENS.
-contributors:
+authors:
- adraffy
-ensip:
- status: draft
- created: 2023-04-03
+status: Draft
+created: 2023-04-03
ignoredRules: ["heading:description-of-", "heading:derivation", "heading:appendix:-reference-specifications", "heading:appendix:-additional-resources", "heading:appendix:-validation-tests", "heading:annex:-beautification"]
---
diff --git a/ensips/16.md b/ensips/16.md
index 1f87f18..c3fab2d 100644
--- a/ensips/16.md
+++ b/ensips/16.md
@@ -1,11 +1,10 @@
---
description: Allows metadata to be queried on EIP-3668 enabled names
-contributors:
+authors:
- jefflau
- makoto
-ensip:
- status: draft
- created: 2022-09-22
+status: Draft
+created: 2022-09-22
ignoredRules: ["heading:implementation", "heading:open-items"]
---
diff --git a/ensips/17.md b/ensips/17.md
index eaa105e..79d2e38 100644
--- a/ensips/17.md
+++ b/ensips/17.md
@@ -1,10 +1,9 @@
---
description: A standard for gasless DNS resolution in ENS.
-contributors:
+authors:
- nick.eth
-ensip:
- status: draft
- created: 2024-02-09
+status: Draft
+created: 2024-02-09
---
# ENSIP-17: Gasless DNS Resolution
diff --git a/ensips/18.md b/ensips/18.md
index 989f008..d7f7687 100644
--- a/ensips/18.md
+++ b/ensips/18.md
@@ -1,12 +1,11 @@
---
description: A standard for profile information as text records in ENS
-contributors:
+authors:
- TateB
- adraffy
- galligan
-ensip:
- status: draft
- created: 2023-08-02
+status: Draft
+created: 2023-08-02
---
# ENSIP-18: Profile Text Records
diff --git a/ensips/19.md b/ensips/19.md
index cce0e42..3657b2a 100644
--- a/ensips/19.md
+++ b/ensips/19.md
@@ -1,10 +1,9 @@
---
description: Specifies reverse resolution in a cross-chain context
-contributors:
+authors:
- jefflau.eth
-ensip:
- status: draft
- created: 2023-03-14
+status: Draft
+created: 2023-03-14
---
# ENSIP-19: EVM-chain Reverse Resolution
diff --git a/ensips/2.md b/ensips/2.md
index 49d3f6c..a89e042 100644
--- a/ensips/2.md
+++ b/ensips/2.md
@@ -1,12 +1,11 @@
---
description: Describes the hash registrar initially used to register ENS .eth domains (formerly EIP-162).
-contributors:
+authors:
- nick.eth
- avsa.eth
- maurelian
-ensip:
- created: 2016-10-25
- status: obsolete
+created: 2016-10-25
+status: Obsolete
ignoredRules: ["heading:prior-work"]
---
diff --git a/ensips/3.md b/ensips/3.md
index 80aab32..dcb5930 100644
--- a/ensips/3.md
+++ b/ensips/3.md
@@ -1,10 +1,9 @@
---
description: Specifies a TLD, registrar, and resolver interface for reverse resolution of Ethereum addresses using ENS (formerly EIP-181).
-contributors:
+authors:
- nick.eth
-ensip:
- created: 2016-12-01
- status: final
+created: 2016-12-01
+status: Final
---
# ENSIP-3: Reverse Resolution
diff --git a/ensips/4.md b/ensips/4.md
index 4676c43..7e67b4d 100644
--- a/ensips/4.md
+++ b/ensips/4.md
@@ -1,10 +1,9 @@
---
description: A mechanism for storing ABI definitions in ENS, for easy lookup of contract interfaces by callers (formerly EIP-205).
-contributors:
+authors:
- nick.eth
-ensip:
- created: 2017-02-06
- status: final
+created: 2017-02-06
+status: Final
ignoredRules: ["missing:motivation"]
---
diff --git a/ensips/5.md b/ensips/5.md
index baa69dd..6f0b9ee 100644
--- a/ensips/5.md
+++ b/ensips/5.md
@@ -1,10 +1,9 @@
---
description: A standard for storage of text records in ENS (formerly EIP-634).
-contributors:
+authors:
- ricmoo.eth
-ensip:
- created: 2017-05-17
- status: final
+created: 2017-05-17
+status: Final
---
# ENSIP-5: Text Records
diff --git a/ensips/6.md b/ensips/6.md
index 9e8db52..fb16322 100644
--- a/ensips/6.md
+++ b/ensips/6.md
@@ -1,10 +1,9 @@
---
description: Defines a resolver profile for ENS that provides features for storage and lookup of DNS records (formerly EIP-1185).
-contributors:
+authors:
- mcdee
-ensip:
- created: 2018-06-26
- status: obsolete
+created: 2018-06-26
+status: Obsolete
ignoredRules: ["heading:implementation", "heading:test-cases"]
---
diff --git a/ensips/7.md b/ensips/7.md
index f2edc1e..b065fc6 100644
--- a/ensips/7.md
+++ b/ensips/7.md
@@ -1,11 +1,10 @@
---
description: Introduces a field for storing content addresses and hashes in ENS (formerly EIP-1577).
-contributors:
+authors:
- nick.eth
- decanus
-ensip:
- created: 2018-11-13
- status: final
+created: 2018-11-13
+status: Final
---
# ENSIP-7: Contenthash field
diff --git a/ensips/8.md b/ensips/8.md
index ed056c2..5000338 100644
--- a/ensips/8.md
+++ b/ensips/8.md
@@ -1,10 +1,9 @@
---
description: Defines a method of associating contract interfaces with ENS names and addresses, and of discovering those interfaces (formerly EIP-1844).
-contributors:
+authors:
- nick.eth
-ensip:
- created: 2019-03-05
- status: final
+created: 2019-03-05
+status: Final
ignoredRules: ["heading:implementation"]
---
diff --git a/ensips/9.md b/ensips/9.md
index 25a20d5..92dbfa1 100644
--- a/ensips/9.md
+++ b/ensips/9.md
@@ -1,10 +1,9 @@
---
description: Introduces new overloads for the addr field for ENS resolvers, which permit resolution of addresses for other blockchains via ENS (formerly EIP-2304).
-contributors:
+authors:
- nick.eth
-ensip:
- created: 2019-09-09
- status: final
+created: 2019-09-09
+status: Final
ignoredRules: ["missing:abstract", "heading:tests"]
---
diff --git a/template.md b/template.md
index 19f043a..ec3f908 100644
--- a/template.md
+++ b/template.md
@@ -1,14 +1,14 @@
---
# Description of the proposal
description: Some description about the proposal
-# List of ens names or github handles of contributors
-contributors:
+# List of ENS names or github handles of contributors
+authors:
- nick.eth
-ensip:
+
# Date of creation
created: 2024-01-01
- # Status of the proposal, draft by default, updated by the editors
- status: draft
+ # Status of the proposal, Draft by default, updated by the editors
+ status: Draft
---
# ENSIP-X: Title of the proposal
From a246f7cc36c5bc06b4e7af038ac79ec723b143be Mon Sep 17 00:00:00 2001
From: Greg Skriloff <35093316+gskril@users.noreply.github.com>
Date: Thu, 23 Jan 2025 12:07:22 +0000
Subject: [PATCH 3/4] Fix template
---
template.md | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/template.md b/template.md
index ec3f908..4fc275e 100644
--- a/template.md
+++ b/template.md
@@ -4,11 +4,10 @@ description: Some description about the proposal
# List of ENS names or github handles of contributors
authors:
- nick.eth
-
- # Date of creation
- created: 2024-01-01
- # Status of the proposal, Draft by default, updated by the editors
- status: Draft
+# Date of creation
+created: 2024-01-01
+# Status of the proposal, Draft by default, updated by the editors
+status: Draft
---
# ENSIP-X: Title of the proposal
From 0b52b5f926033f3f7ae5f9d9cd5b39fbffb894fc Mon Sep 17 00:00:00 2001
From: Greg Skriloff <35093316+gskril@users.noreply.github.com>
Date: Thu, 23 Jan 2025 12:16:32 +0000
Subject: [PATCH 4/4] Add missing labels to code snippets
---
ensips/10.md | 4 ++--
ensips/3.md | 6 +++---
ensips/4.md | 2 +-
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/ensips/10.md b/ensips/10.md
index 4b2161d..a64c7c5 100644
--- a/ensips/10.md
+++ b/ensips/10.md
@@ -42,7 +42,7 @@ Let:
ENSIP-10-compliant ENS resolvers MAY implement the following function interface:
-```
+```solidity
interface ExtendedResolver {
function resolve(bytes calldata name, bytes calldata data) external view returns(bytes);
}
@@ -75,7 +75,7 @@ Also note that when wildcard resolution is in use (eg, `name != currentname`), c
### Pseudocode
-```
+```solidity
function getResolver(name) {
for(let currentname = name; currentname !== ''; currentname = parent(currentname)) {
const node = namehash(currentname);
diff --git a/ensips/3.md b/ensips/3.md
index dcb5930..c0b485c 100644
--- a/ensips/3.md
+++ b/ensips/3.md
@@ -38,7 +38,7 @@ When called by account `x`, instructs the ENS registry to transfer ownership of
Allowing the caller to specify an owner other than themselves for the relevant node facilitates contracts that need accurate reverse ENS entries delegating this to their creators with a minimum of code inside their constructor:
-```
+```solidity
reverseRegistrar.claim(msg.sender)
```
@@ -54,7 +54,7 @@ When called by account `x`, sets the resolver for the name `hex(x) + '.addr.reve
A new resolver interface is defined, consisting of the following method:
-```
+```solidity
function name(bytes32 node) constant returns (string);
```
@@ -68,7 +68,7 @@ Future ENSIPs may specify more record types appropriate to reverse ENS records.
This registrar, written in Solidity, implements the specifications outlined above.
-```
+```solidity
pragma solidity ^0.4.10;
import "./AbstractENS.sol";
diff --git a/ensips/4.md b/ensips/4.md
index 7e67b4d..eaee6e6 100644
--- a/ensips/4.md
+++ b/ensips/4.md
@@ -48,7 +48,7 @@ Encoding type 8 indicates that the ABI can be found elsewhere, at the specified
A new resolver interface is defined, consisting of the following method:
-```
+```solidity
function ABI(bytes32 node, uint256 contentType) constant returns (uint256, bytes);
```