Files
rfc.vac.dev/assets/js/29006328.f43b9643.js
2025-08-01 18:13:23 +00:00

1 line
8.8 KiB
JavaScript

"use strict";(self.webpackChunklogos_docs_template=self.webpackChunklogos_docs_template||[]).push([[7573],{79522:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var a=n(87462),i=(n(67294),n(3905));const r={title:"TEMPLATE",name:"RFC Template",status:"raw/draft/stable/deprecated",category:"Standards Track/Informational/Best Current Practice",editor:"Daniel Kaiser &lt;danielkaiser@status.im&gt;",contributors:null},o=void 0,s={unversionedId:"template",id:"template",title:"TEMPLATE",description:"- Status: raw/draft/stable/deprecated",source:"@site/vac/template.md",sourceDirName:".",slug:"/template",permalink:"/vac/template",draft:!1,tags:[],version:"current",frontMatter:{title:"TEMPLATE",name:"RFC Template",status:"raw/draft/stable/deprecated",category:"Standards Track/Informational/Best Current Practice",editor:"Daniel Kaiser &lt;danielkaiser@status.im&gt;",contributors:null},sidebar:"defaultSidebar",previous:{title:"32/RLN-V1",permalink:"/vac/32/rln-v1"}},l={},c=[{value:"(Info, remove this section)",id:"info-remove-this-section",level:2},{value:"Tags",id:"tags",level:2},{value:"Abstract",id:"abstract",level:2},{value:"Background / Rationale / Motivation",id:"background--rationale--motivation",level:2},{value:"Theory / Semantics",id:"theory--semantics",level:2},{value:"Wire Format Specification / Syntax",id:"wire-format-specification--syntax",level:2},{value:"Implementation Suggestions (optional)",id:"implementation-suggestions-optional",level:2},{value:"(Further Optional Sections)",id:"further-optional-sections",level:2},{value:"Security/Privacy Considerations",id:"securityprivacy-considerations",level:2},{value:"Copyright",id:"copyright",level:2},{value:"References",id:"references",level:2},{value:"normative",id:"normative",level:2},{value:"informative",id:"informative",level:2}],p={toc:c};function d(e){let{components:t,...n}=e;return(0,i.kt)("wrapper",(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Status: raw/draft/stable/deprecated"),(0,i.kt)("li",{parentName:"ul"},"Category: Standards Track/Informational/Best Current Practice"),(0,i.kt)("li",{parentName:"ul"},"Editor: Daniel Kaiser ","<",(0,i.kt)("a",{parentName:"li",href:"mailto:danielkaiser@status.im"},"danielkaiser@status.im"),">")),(0,i.kt)("h2",{id:"info-remove-this-section"},"(Info, remove this section)"),(0,i.kt)("p",null,"This section contains meta info about writing RFCs.\nThis section (including its subsections) MUST be removed."),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://rfc.vac.dev/spec/1/"},"COSS")," explains the Vac RFC process."),(0,i.kt)("h2",{id:"tags"},"Tags"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"tags")," metadata SHOULD contain a list of tags if applicable."),(0,i.kt)("p",null,"Currently identified tags comprise"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"waku/core-protocol")," for Waku protocol definitions (e.g. store, relay, light push),"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"waku/application")," for applications built on top of Waku protocol\n(e.g. eth-dm, toy-chat),")),(0,i.kt)("h2",{id:"abstract"},"Abstract"),(0,i.kt)("h2",{id:"background--rationale--motivation"},"Background / Rationale / Motivation"),(0,i.kt)("p",null,"This section serves as an introduction providing background information and\na motivation/rationale for why the specified protocol is useful."),(0,i.kt)("h2",{id:"theory--semantics"},"Theory / Semantics"),(0,i.kt)("p",null,"A standard track RFC in ",(0,i.kt)("inlineCode",{parentName:"p"},"stable")," status MUST feature this section.\nA standard track RFC in ",(0,i.kt)("inlineCode",{parentName:"p"},"raw")," or ",(0,i.kt)("inlineCode",{parentName:"p"},"draft")," status SHOULD feature this section.\nThis section SHOULD explain in detail how the proposed protocol works.\nIt may touch on the wire format where necessary for the explanation.\nThis section MAY also specify endpoint behaviour when receiving specific messages,\ne.g. the behaviour of certain caches etc."),(0,i.kt)("h2",{id:"wire-format-specification--syntax"},"Wire Format Specification / Syntax"),(0,i.kt)("p",null,"A standard track RFC in ",(0,i.kt)("inlineCode",{parentName:"p"},"stable")," status MUST feature this section.\nA standard track RFC in ",(0,i.kt)("inlineCode",{parentName:"p"},"raw")," or ",(0,i.kt)("inlineCode",{parentName:"p"},"draft")," status SHOULD feature this section.\nThis section SHOULD not contain explanations of semantics and\nfocus on concisely defining the wire format.\nImplementations MUST adhere to these exact formats to interoperate with other implementations.\nIt is fine, if parts of the previous section that touch on the wire format are repeated.\nThe purpose of this section is having a concise definition\nof what an implementation sends and accepts.\nParts that are not specified here are considered implementation details.\nImplementors are free to decide on how to implement these details.\nAn optional ",(0,i.kt)("em",{parentName:"p"},"implementation suggestions")," section may provide suggestions\non how to approach implementation details, and,\nif available, point to existing implementations for reference."),(0,i.kt)("h2",{id:"implementation-suggestions-optional"},"Implementation Suggestions (optional)"),(0,i.kt)("h2",{id:"further-optional-sections"},"(Further Optional Sections)"),(0,i.kt)("h2",{id:"securityprivacy-considerations"},"Security/Privacy Considerations"),(0,i.kt)("p",null,"A standard track RFC in ",(0,i.kt)("inlineCode",{parentName:"p"},"stable")," status MUST feature this section.\nA standard track RFC in ",(0,i.kt)("inlineCode",{parentName:"p"},"raw")," or ",(0,i.kt)("inlineCode",{parentName:"p"},"draft")," status SHOULD feature this section.\nInformational RFCs (in any state) may feature this section.\nIf there are none, this section MUST explicitly state that fact.\nThis section MAY contain additional relevant information,\ne.g. an explanation as to why there are no security consideration\nfor the respective document."),(0,i.kt)("h2",{id:"copyright"},"Copyright"),(0,i.kt)("p",null,"Copyright and related rights waived via ",(0,i.kt)("a",{parentName:"p",href:"https://creativecommons.org/publicdomain/zero/1.0/"},"CC0"),"."),(0,i.kt)("h2",{id:"references"},"References"),(0,i.kt)("p",null,"References MAY be subdivided into normative and informative."),(0,i.kt)("h2",{id:"normative"},"normative"),(0,i.kt)("p",null,"A list of references that MUST be read to fully understand and/or\nimplement this protocol.\nSee ",(0,i.kt)("a",{parentName:"p",href:"https://datatracker.ietf.org/doc/html/rfc3967#section-1.1"},"RFC3967 Section 1.1"),"."),(0,i.kt)("h2",{id:"informative"},"informative"),(0,i.kt)("p",null,"A list of additional references."))}d.isMDXComponent=!0},3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,i=function(e,t){if(null==e)return{};var n,a,i={},r=Object.keys(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(n),m=i,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||r;return n?a.createElement(f,o(o({ref:t},p),{},{components:n})):a.createElement(f,o({ref:t},p))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:i,o[1]=s;for(var c=2;c<r;c++)o[c]=n[c];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}u.displayName="MDXCreateElement"}}]);