ECPIP-1: Quote-posts #2
Replies: 4 comments 14 replies
-
|
thanks for writing it up @davidfurlong! can you elaborate more on why we need to use non-standard suffix specifically for B1? since in CAIP-10 links use colon symbol |
Beta Was this translation helpful? Give feedback.
-
|
I am in favour of option B As a sidenote if there is a CAIP standard for linking to a read method on a contract i might favour linking to e.g. a quote of comment Not sure how sensitive we are to the content length here. Might be worth standardizing a shorthand for efficiency? |
Beta Was this translation helpful? Give feedback.
-
|
Alright thanks everyone for the feedback! A draft CAIP PR is open here: ChainAgnostic/CAIPs#373 |
Beta Was this translation helpful? Give feedback.
-
@davidfurlong in the example, would you mind clarify the details of what function selector and arguments are used to generate |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
ECPIP-1: Standardizing Quote-Posts Using CAIP-373
Abstract
This ECPIP introduces a protocol-agnostic mechanism for quote-posts in the Ethereum Comments Protocol (ECP). While several clients—such as Paper and Interface—already support quote postings independently, there is no unified method across the ecosystem. This proposal adopts CAIP-373: EVM Smart Contract Call Reference Specification as the universal identifier for quoted comments, ensuring interoperability, cross-chain compatibility, and alignment with existing tooling.
Motivation
ECP enables lightweight, decentralized commenting via on-chain storage. Quote-posting remains a key social primitive with no standard implementation. Divergence across clients (e.g., Paper by @kualta and Interface by @palevoo) leads to poor interoperability and fragmentation. This proposal ensures:
Specification
Representation of Quote-Posts
commentType = 0(regular posts).contentfield embeds both the post text and one or more CAIP-373 references to the quoted comments.contentfor embedded CAIP-373 references.Normative Constraints
:block_numbersegment in the CAIP-373 references used for ECP quote-posts. Resolution is always against the latest state.Example
A quote-post referencing the real comment ID
0x6bbab7fa5d988676b01e9b5b72913319de5b835063fa8751ea1155078de81034:{ "commentType": 0, "content": "Key insight:\n\neip155:8453:0xb262C9278fBcac384Ef59Fc49E24d800152E19b1:call:0x8c20d5876bbab7fa5d988676b01e9b5b72913319de5b835063fa8751ea1155078de81034" }eip155:8453identifies the Base chain.0xb262C9278fBcac384Ef59Fc49E24d800152E19b1is the ECP CommentManager contract.call:0x8c20d587…81034represents the ABI-encoded function selector + argument(s) to fetch that specific comment ID.To generate the ABI-encoded function selector, you can use the code below
Advantages of CAIP-373
Implementation Guidelines
contentand resolve them to fetch the referenced comments.Backwards Compatibility
Alternatives Considered
commentType = 2withparentIdcommentType = 2with content-embedded referencescommentType = 0) with content-embedded referencesThis ECPIP refines Solution B by standardizing on CAIP-373 for the reference format.
Original Evaluation (Preserved)
There is currently no standardized way to do Quote-posts on ECP, but there is already one client (paper, shoutout @kualta) that supports quote posts and another (Interface, shoutout @palevoo) that is interested in supporting them, so it makes sense to agree on the best way to support them.
Considerations:
Possible solutions (as originally discussed in the ECP community telegram):
A. Quote-posts as a new
commentType, for examplecommentType=2with thecontentbeing used for the post contents and theparentIdbeing set the post that is being quotedB. Quote-posts as posts (
commentType=0), that mention the quoted-posts in thecontentby some app-agnostic universal identifier for the comment.C. Quote-posts as a new comment Type (for example
commentType=2), that mention the quoted-posts in thecontentby some app-agnostic universal identifier for the comment.Solution A has the notable problem that it only allows quoting one comment, and that it doesn't work across possible future ECP deployments across chains or versions.
Solution C has the problem that the inclusion of at least one quoted post in the contents can't be enforced onchain without a new ECP version release, so it's unreliable onchain at best and needs to be resolved at the indexer level.
Solution B seems to not have any significant downsides, but the question remains what the standardised identifier for a comment should be. A CAIP would be ideal, but since comments in ECP are stored in a mapping and are not NFTs, there isn't a current CAIP as far as I can tell that could be used to uniquely identify a comment.
There's a couple of options for a standardized identifier
B1) Extend a combination of CAIP-2 and CAIP-10 with a non-standard suffix, for example
eip155:8453:0xb262C9278fBcac384Ef59Fc49E24d800152E19b1#commentId=0x..., or corresponding to the mapping namecommentsin the contract:eip155:8453:0xb262C9278fBcac384Ef59Fc49E24d800152E19b1#comments=0x...B2) We could define a new privileged namespace convention for ECP comments, similar to the way IPFS links have their own, for example
ECP://eip155:8453/0xb262C9278fBcac384Ef59Fc49E24d800152E19b1/comments/0x...(corresponding toECP://<caip-2 chainid>/<contract address>/<the mapping name, for now only comments is supported>/<comment id>)B3) Referencing the transaction hash of the comment will likely not work, due to a transaction being able to create multiple comments
Ask: Would love to hear thoughts and ideas, in particular alternatives to the standardised identifier, any relevant CAIP discussions and perhaps inspiration from how other protocols have solved this problem
Beta Was this translation helpful? Give feedback.
All reactions