98 Commits

Author SHA1 Message Date
seugu
1d2f682892 Hashgraphlike consensus small fixes (#221)
done: 
- update uint64 (no need negative numbers in timestamp)
- fixed repeated Vote votes
- renamed expiration_timestamp and its comment
- modify number of rounds to votes
2026-01-06 10:09:37 +03:00
Prem Chaitanya Prathi
dabc31786b fixing format errors in mix rfc (#229)
<img width="1158" height="635" alt="image"
src="https://github.com/user-attachments/assets/3f3582b4-77b2-4eb5-a7ea-12b60951303c"
/>
2025-12-15 13:26:43 +05:30
Prem Chaitanya Prathi
4f54254706 fix format errors in math sections for mix rfc (#225) 2025-12-12 14:59:14 +05:30
Prem Chaitanya Prathi
7f1df32779 chore: use sembreaks for easy review and edits (#223)
Modified the mix spec to use sembreaks and not break line at charater limits
as per
https://github.com/vacp2p/rfc-index/pull/194#pullrequestreview-3562274262
2025-12-11 21:02:15 +05:30
AkshayaMani
e742cd5192 RFC Addition: Section 9 Security Considerations (#194)
This PR continues work from PR #158 and PR #173, and introduces a new
**Section 9: Security Considerations** to the Mix Protocol RFC. It
formalizes the protocol’s core guarantees, trust assumptions, and known
limitations.

### New Section Added

Structured Section 9 with the following subsections:

- [x] **9.1 Security Guarantees of the Core Mix Protocol**
Defines sender anonymity, metadata protection, and statelessness
guarantees.

- [x] **9.2 Exit Node Trust Model**
  Trust assumptions at the final hop:

  - [x] `9.2.1 Message Delivery and Origin Trust`
  - [x] `9.2.2 Origin Protocol Trust and Client Role Abuse`

- [x] **9.3 Destination as Final Hop**
Optional deployment model where the destination operates its own Mix
instance to eliminate exit-level trust.

- [x] **9.4 Known Protocol Limitations**
  Clearly outlines out-of-scope threats:
  - Undetectable node misbehavior
  - Lack of built-in retries or acknowledgments
  - No Sybil resistance
  - Vulnerability to DoS attacks

### Key Improvements
- Clearly delineates what the Mix Protocol guarantees and what it leaves
to external systems.
- Formalizes the exit trust boundary, a key concept for downstream
applications.
- Introduces an alternative destination participation model.
- Enables future discussions around accountability, reliability, and
Sybil resistance.

---------

Co-authored-by: Prem Chaitanya Prathi <chaitanyaprem@gmail.com>
2025-12-10 20:15:32 +05:30
AkshayaMani
9d11a22901 docs: finalize Section 8 Sphinx Packet Construction and Handling (#202)
This PR builds on PR #173 and completes the remaining construction and
runtime processing logic in `Section 8` of the Mix Protocol RFC. It
finalizes the last steps of packet construction (`Section 8.5.2 step 3.
e–f`) and introduces the complete mix node handler logic in `Section
8.6`, including intermediary and exit processing.
It clearly separates construction, role determination, and processing
logic.

### Changes Introduced in This PR

- **8.5.2 Construction Steps (Final Steps Added)**
  - Sphinx packet construction
    - [x] Assemble Final Packet
    - [x] Transmit Packet
    
- **8.6 Sphinx Packet Handling**
  - [x] **8.6.1 Shared Preprocessing**
- Derives session key, validates replay tag and MAC, decrypts
header/payload
  - [x] **8.6.2 Node Role Determination**
- Inspects decrypted header prefix and padding to classify node as
intermediary or exit
  - [x] **8.6.3 Intermediary Processing**
    - Parses next hop address and mean delay
    - Updates ephemeral key and routing fields
    - Samples actual forwarding delay and transmits packet
    - Erases all temporary state.
  - [x] **8.6.4 Exit Processing**
    - Verifies payload padding and extracts destination address
    - Parses and validates application-layer message
- Hands off to Exit Layer along with origin protocol codec and
destination address

### Highlights
  - Explicit role determination via zero-delay and padding inspection
  - Fully decoupled construction and handling logic
  - Forwarding delay behavior updated:
    - Sender selects per-hop mean delay
    - Mix node samples actual delay using pluggable distribution

---------

Co-authored-by: kaiserd <1684595+kaiserd@users.noreply.github.com>
2025-12-10 12:24:23 +00:00
Arunima Chaudhuri
aaf158aa59 VAC/RAW/LOGOS-DISCOVERY-CAPABILITY RFC (#212)
This RFC defines the Logos discovery capability, a DISC-NG-inspired
discovery mechanism built on top of Kad-dht.

---------

Co-authored-by: Hanno Cornelius <68783915+jm-clius@users.noreply.github.com>
Co-authored-by: seugu <99656002+seugu@users.noreply.github.com>
2025-12-09 14:52:01 +05:30
seugu
e39d2884fe VAC/RAW/ ETH-MLS-OFFCHAIN RFC multi-steward support (#193)
adding done: 
- multi steward support sections such as: consensus types, big and small
type flows
- new two de-mls term epoch and backup steward
- violation list section
- who can initiate the consensuses
- deterministically creation of the steward list (against biased list)
- order of the consensus messages
- adding member-id as 160 bit id
- adding flexible committing for multiple steward
- unifying the commit among multiple committing for specific epoch
- clarifying minimum number of steward list s_min and the scenario that
group member number getting below this

next (in a separate PR)
- introducing peer scoring (currently we only kicked off malicious
members)
- anti deadlock mechanism in case of non-active steward (even if the
committing is flexible now)
- identifying the format of dishonesty evidence

---------

Co-authored-by: Ekaterina Broslavskaya <seemenkina@gmail.com>
Co-authored-by: Jazz Turner-Baggs <473256+jazzz@users.noreply.github.com>
2025-11-26 19:12:01 +03:00
Jimmy Debe
dd397adc59 Update Coss Date (#206) 2025-11-04 18:02:05 +01:00
Jimmy Debe
69802377a8 Fix Linting Errors (#204)
Fix linting errors from the sds.md rfc.
2025-10-24 17:11:01 +02:00
Hanno Cornelius
171e934d61 docs: add SDS-Repair extension (#176)
Added SDS-R, an (optional) extension of SDS to allow for coordinated
repair of missing messages over a limited time window.

It functions by allowing subgroups of participants to rebroadcast
dependencies that were reported missing by other participants. As with
the rest of SDS, it aims to scale to larger groups first and could
likely be simplified for 1:1 or small group chats. To prevent an
explosion in repair requests or broadcast storms, it uses backoff timers
to prevent multiple participants from performing the same action (either
request a repair or rebroadcast in response to a repair request) in a
probabilistic manner.

Note that what is still missing is a specified recommended way to use
SDS-R in conjunction with retrieving missing dependencies from Store
nodes.

---------

Co-authored-by: fryorcraken <110212804+fryorcraken@users.noreply.github.com>
2025-10-13 15:37:44 +01:00
AkshayaMani
36be428cdd RFC Refactor: Sphinx Packet Format (#173) 2025-10-05 20:21:16 -04:00
Hanno Cornelius
6672c5bedf docs: update lamport timestamps to uint64, pegged to current time (#196)
Lamport timestamps should remain close to current time (in milliseconds)
for new joiners to be able to have their messages ordered reasonably
close to other messages in the channel.

This means that:
- the `timestamp` field should be large enough to accommodate
millisecond resolution timestamps, i.e. `uint64` (see
https://github.com/vacp2p/rfc-index/pull/195 for reasoning)
- the lamport timestamp should be updated before sending _each_ message
to `max(timeNowInMs, current_lamport_timestamp + 1)`.

The current spec only indicated that Lamport timestamps should be
_initialised_ to current time, which means that the logical timestamp
would soon drift from current time.
2025-10-02 14:07:29 +01:00
fryorcraken
b1da70386e fix: use milliseconds for Lamport timestamp initialization (#179)
Changed Lamport timestamp initialization from nanoseconds to
milliseconds. The current time in nanoseconds exceeds JavaScript's
Number.MAX_SAFE_INTEGER, making nanosecond precision unsuitable for
JavaScript implementations. Milliseconds provide sufficient precision
while remaining well within safe integer bounds for decades to come.
2025-09-15 20:23:58 +10:00
seugu
f051117d37 VAC-RAW/Consensus-hashgraphlike RFC (#142)
This simple, scalable and decentralized consensus is for using in
decentralization MLS RFC.

todo:
- [x] solve lints
- [x] refine the RFC: adding liveness and time expiration section, also
default counting silent peers (peers that dont participate the voting)
- [x] add references
- [x] add license
- [x] first round reviewing 
- [x] second round reviewing
- [x] last round review

---------

Co-authored-by: Ekaterina Broslavskaya <seemenkina@gmail.com>
2025-09-15 10:06:24 +03:00
Jimmy Debe
3505da6bd6 sds lint fix (#177)
Fix lint issue in sds.md
2025-08-22 14:53:34 +02:00
seugu
3b968ccce3 VAC/RAW/ ETH-MLS-OFFCHAIN RFC (#166)
The first version of decentralized MLS (de-MLS) aka ETH-MLS-OFFCHAIN
RFC.

---------

Co-authored-by: Ekaterina Broslavskaya <seemenkina@gmail.com>
Co-authored-by: Jimmy Debe <91767824+jimstir@users.noreply.github.com>
Co-authored-by: kaiserd <1684595+kaiserd@users.noreply.github.com>
2025-08-21 13:33:59 +03:00
Hanno Cornelius
536d31b5b7 docs: re-add sender ID to messages (#170)
Re-added the concept of a participant ID and the corresponding
`sender_id` field in each SDS message.

This is useful to filter "self-triggered" messages as described in
https://github.com/waku-org/js-waku/pull/2528

However, this will also be a necessary part of the protocol once p2p
message exchange is added.

---------

Co-authored-by: fryorcraken <110212804+fryorcraken@users.noreply.github.com>
Co-authored-by: shash256 <111925100+shash256@users.noreply.github.com>
2025-08-19 16:38:42 +01:00
AkshayaMani
5e3b4788ec RFC Refactor PR: Modular Rewrite of Mix Protocol Specification (#158)
This PR rewrites the Mix Protocol RFC for clarity, layering, and
implementability. It reorganizes the spec into a modular structure
aligned with RFC 7322 and RFC 2119, with clean separation between
protocol logic, integration, and pluggable components.

### Goals

- Clearly define Mix as a **message-based routing protocol**, not a
transport or application-layer solution.
- Support **per-message anonymity** via a `mixify` flag and **external
integration** through Entry and Exit layers.
- Adopt a clean, layered structure: motivation → integration → routing
model → cryptographic structure → node behavior.
- Use correct RFC formatting, keywords, and SEMBR for implementation
clarity.

### Changes Completed in This PR

#### Sections 0–5: Foundational Structure and Protocol Layering

* [x] **Abstract**: Concise, non-repetitive summary of protocol purpose
and scope.
* [x] **§1 Introduction**: Cleanly describes protocol role, document
scope, and integration model.
* [x] **§2 Terminology**: Defines all key terms; includes correct use of
`MUST`, `SHOULD`, and informal variants.
* [x] **§3 Motivation and Background**: Articulates need for sender
anonymity in libp2p; includes `§3.1 Comparison with Tor`.

#### Section 4 Mixing Strategy and Packet Format

* [x] **§4.1 Mixing Strategy**: Defines continuous-time mixing;
justifies choice over batching.
* [x] **§4.2 Packet Format Overview**: Defines what a mix packet must
achieve; outlines Sphinx format properties and rationale.

#### Section 5 Protocol Overview and Integration

* [x] **§5 Protocol Overview**: Clean, layered walkthrough of core
protocol behavior and layering in libp2p.
* [x] **§5.1 Integration with Origin Protocols**: External interface
components (Mix Entry/Exit layers).
* [x] **§5.2 Mixify Option**: Per-message flag defined.
* [x] **§5.3 Why a Protocol, Not a Transport**: Explains why Mix is
layered as a libp2p protocol, not a transport.
* [x] **§5.4 Protocol Interaction Flow**: Three-phase diagram and
explanation (entry → routing → exit).

#### Section 6 Pluggable Components

* [x] Discovery: advertise Mix support via ENR, X25519 key
* [x] Delay strategy: sender-defined per-hop delay
* [x] Spam protection: PoW/VDF/RLN options, exit node validation
* [x] Cover traffic: periodic loops for unobservability
* [x] Incentivization: nodes MUST participate to send

#### Section 7 Core Mix Protocol Responsibilities

* [x] Define Sender, Intermediary, Exit node roles
* [x] Specify lifecycle and message flow per role

#### Section 8 Sphinx Packet Format (Detailed Spec)

* [ ] Full field definitions (α, β, γ, δ, delays, MACs)
* [ ] Encoding and padding behavior

#### Section 9 Node Behavior (Mix Protocol Handler)

* [ ] Describe sender node logic: path selection, packet wrapping
* [ ] Describe intermediary/exit node behavior: decryption, delay,
forwarding

#### Section 10 Limitations and Future Work

* [ ] SURB-based reply support (unimplemented)
* [ ] DoS/Sybil attack surface
* [ ] Path overlap, message reordering, end-to-end acks

#### Appendices

* [ ] Appendix A: Proof-of-Work Example
* [ ] Appendix B: ENR-Based Discovery Example
2025-06-27 14:03:10 -04:00
Jimmy Debe
36caaa621a Fix Errors rfc.vac.dev (#165)
Two errors causing build problems on rfc.vac.dev. This should be fix.
2025-06-05 10:13:21 -04:00
Jimmy Debe
db90adc94e Fix LaTeX errors (#163)
LaTeX are causing build errors on rfc.vac.dev. Potential fixes..
2025-06-02 17:33:46 -04:00
Jimmy Debe
517b63984c Update the RFCs: Vac Raw RFC (#143)
Updated a few Vac raw RFCs noise-x3dh-double-ratchet, eth-mls-on-chain,
eth-secpm, eth-dcgka.
2025-04-04 17:04:00 +02:00
Arseniy Klempner
8ee2a6d6b2 docs: add optional retrieval hint to causal history in sds (#130) 2025-03-07 18:32:46 -08:00
Hanno Cornelius
235c1d5aa6 docs: clarify receiving sync messages (#131)
Minor adds to "Receive message" procedure to reflect changes introduced
in https://github.com/vacp2p/rfc-index/pull/129
2025-02-20 11:03:49 +00:00
Arseniy Klempner
718245979f docs: update sds sync message requirements (#129) 2025-02-18 21:10:31 -08:00
Arseniy Klempner
7a01711ffc fix(sds): remove optional from causal history field in Message protobuf (#123) 2025-01-28 12:02:54 +02:00
Jimmy Debe
08b363d67e Update SDS.md: Remove Errors (#115)
Remove markdown error from the SDS rfc.
2024-12-18 03:16:50 +01:00
Hanno Cornelius
bee78c40b9 docs: add SDS protocol for scalable e2e reliability (#108)
Introduces the "Scalable Data Sync" protocol, based on the e2e
reliability mechanisms discussed in the [Vac forum
post](https://forum.vac.dev/t/end-to-end-reliability-for-scalable-distributed-logs/293/10).

The initial aim is to provide an end-to-end reliability protocol for
Status chat protocols, specifically within the context of Status
Communities.

---------

Co-authored-by: fryorcraken <110212804+fryorcraken@users.noreply.github.com>
Co-authored-by: Jimmy Debe <91767824+jimstir@users.noreply.github.com>
2024-11-28 16:22:36 +00:00
Jimmy Debe
ff87c84dc7 Update Waku Links (#104)
Change Waku links that do not point to master waku/specs repo. Also
update title for template, to look better on the rfc website.
2024-11-20 12:32:56 -05:00
Jimmy Debe
776c1b76cd rfc-index: Update (#110)
Removing .DS_Store files and updating some links.
2024-11-20 12:22:29 -05:00
ksr
38fce27d33 typo fix 2024-11-08 08:42:02 +01:00
0xbathang
b717c0aec9 Update README.md (#101) 2024-10-11 16:49:21 +02:00
Afri Schoedon
d5e0072498 cosmetic: fix external links in 1/COSS (#100) 2024-10-09 17:53:44 +02:00
ramsesfv
c655980494 Eth secpm splitted (#91)
This branch contains 2 new RFCs: 
1. An RFC describing the secure 1-to-1 communication channels;
2. An RFC describing the MLS and the decentralized MLS.

---------

Co-authored-by: Ekaterina Broslavskaya <seemenkina@gmail.com>
Co-authored-by: kaiserd <1684595+kaiserd@users.noreply.github.com>
2024-10-03 16:20:18 +02:00
Jimmy Debe
a519e67752 Move Status-URL-scheme (#98)
Move url-scheme to `status/raw`.
2024-09-17 13:11:46 -04:00
AkshayaMani
7f5276e18c libp2p Mix Protocol Spec Draft (#97)
Old PR can be found here: [Mix Protocol Spec
#85](https://github.com/vacp2p/rfc-index/pull/85)
2024-09-16 08:05:47 -04:00
Jimmy Debe
3ab314d87d Fix Files for Linting (#94) 2024-09-13 16:51:09 +02:00
ramsesfv
13aaae37d1 Update eth-secpm.md (#84)
Included preliminary notes related to the onchain component.

---------

Co-authored-by: kaiserd <1684595+kaiserd@users.noreply.github.com>
2024-08-29 12:00:33 +02:00
Jimmy Debe
ed2c68f072 1/COSS: New RFC Process (#4)
Making changes to COSS to reflect new RFC process.

---------

Co-authored-by: kaiserd <1684595+kaiserd@users.noreply.github.com>
2024-08-09 10:38:31 -04:00
Aaryamann Challani
eb25cd06d6 chore: replace email addresses (#86)
Replacing my email addresses with ones that are valid
2024-08-05 09:35:04 -04:00
Pablo Lopez
a5b24ac0a2 fix_: broken image links (#81)
brought from https://github.com/vacp2p/rfc/tree/master/static/rfcs/2
2024-06-28 17:11:23 +03:00
Jimmy Debe
89cac77ae4 feat(60/STATUS-URL-SCHEME): initial draft (#14)
Moved from https://github.com/status-im/specs/pull/159

Reference pull request: https://github.com/vacp2p/rfc/pull/602
2024-06-21 08:35:42 -04:00
Jimmy Debe
cbefa483fc 32/RLN-V1: Move to Draft (#40)
Update 32/RLN-V1 to move to draft.

---------

Co-authored-by: Aaryamann Challani <43716372+rymnc@users.noreply.github.com>
2024-06-06 09:39:56 -04:00
Jimmy Debe
99be3b9745 Move Raw Specs (#37)
Move Vac raw specs into raw subdirectory.
2024-05-27 07:57:18 -04:00
ramsesfv
7e3a625812 ETH-SECPM-DEC (#28)
Co-authored-by: Jimmy Debe <91767824+jimstir@users.noreply.github.com>
Co-authored-by: Ekaterina Broslavskaya <seemenkina@gmail.com>
Co-authored-by: seugu <99656002+seugu@users.noreply.github.com>
2024-05-27 12:15:46 +02:00
ramsesfv
e234e9d5a3 Update eth-secpm.md (#35)
Added flow diagrams

---------

Co-authored-by: Jimmy Debe <91767824+jimstir@users.noreply.github.com>
2024-05-21 11:21:34 +02:00
Jimmy Debe
0b0e00f510 feat(rln-stealth-commitments): add initial tech writeup (#23)
By: rymnc
Reference pull request: https://github.com/vacp2p/rfc/pull/658

Initial writeup on viability of stealth commitments for status
communities

---------

Co-authored-by: fryorcraken <110212804+fryorcraken@users.noreply.github.com>
2024-04-15 17:34:56 +05:30
Jimmy Debe
2eaa7949c4 Broken Links + Change Editors (#26)
Fix to broken links, changed links, and added new editors to spec, 10,
12, 14, 17, 19.
2024-03-21 10:08:40 -04:00
kaiserd
f7733cb7df Move Raw Specs 2024-03-01 19:16:47 +01:00
kaiserd
e05bbd22c0 feat(readme): explain new RFC process 2024-03-01 19:15:13 +01:00