Haelius
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.

      Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

      Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

      Explore these features while you wait
      Complete general settings
      Bookmark and like published notes
      Write a few more notes
      Complete general settings
      Write a few more notes
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.

    Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Explore these features while you wait
    Complete general settings
    Bookmark and like published notes
    Write a few more notes
    Complete general settings
    Write a few more notes
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # 14/07 - Thursday Recap of Vac positioning: Vac products: - Secure Messaging (mainly "Waku Research") (it also includes the anonymity research) - zk-WASM (some similarity to zk-EVM, but with focus more towards privacy than scalability) - RFCs (previously "Research Support": Specs, academic- and other outreach efforts, support-for-researchers role) - Applied ZK/Explorations ## Administrative assistant role (project manager + secretary): - Find and booking hotels - Visa issues - Twitter - Reporting - Interface between some teams (e.g. logos) - Minutes/Note taking (cf. Jessie's role in attending many meetings and extracting value) - Following events (e.g. conference deadlines) - research proposals - check if requirements are met - check budget/time plan - edit and hand-in proposals to respective funding agencies - Arranging presence at conferences - Marketing role - e.g. university visits and relationships ## Notes - discussed the naming, it should be different from Status, to reflect what we are doing with research and PSE, EF etc. The Research & dev does not indicate what we exactly do, like conferences, publications, etc. Vac and Vac research may sound boring. - [] read the projects, principles and then suggest names and taglines ## Website layout/menu #### (top level) - Main - Oskar - Principles (move it to the left menu) - Projects (update with new content), a project may touch multiple research areas - Research areas (like crypto, distributed systems, indicating them as tag) - Open problems (specific problems, grants, 2 sentences descirbing the problem, adding links if need be) - Sanaz + Daniel - Contribute/Collaborate (How to get startedddContributor's guide, Discord, Forum, GH board, Github issues filter link (e.g. good first issue), Contribute pseudonymously, specific technical problems) - Daniel + Hanno - Richard -> Contributors "chart" - Giuseppe -> Contribute pseudonymously - Media #### Research blog posts - [...] #### External links/Resources: - Specs/RFCs - Forum - Waku.org ## Github repos - [ ] Github VAC org -> Update logo - [ ] Create a Waku GH organization and PIN the repositorires (e.g. status-im/nwaku, status-im/js-waku, etc.) ## RLN (Sanaz) - [ ] vac.dev/rlnp2p page, as a stand alone page, and image from my presentation with summary of the rfc, write up, discord channel (Sanaz), it should be more than rln primitive as presented by [EF applied zk group](https://appliedzkp.org/), a more user-friendly API, give it to Blagoj, EF, others as a landing page, et review from Oskar # rln-relay roadmap (Sanaz) - Getting rln testnet ready - rln contract: Keshav + Sanaz - Standardizing the interface - Fee should be added to the rln contract - should inherit from the semaphore - support of multi chain and interoperability with erc 20 tokens - Integration of zero-kit (cross client): Giuseppe - rln lib as a stand alone primitive; also applied rln e.g., for anonymous authentication, Sanaz - Merkle tree optimization: Sanaz - rln paper: Sanaz ## Qs - What is meant by Merkle tree optimization? Already ideas here. Minimum to keep only leaves on user side, etc. to reconstruct root. - Zerokit integration? If final plan, perhaps not too much effort on testing what we have? Won't be too much time. - Missing things: - Involve Taylor, esp. w Blagoj afk, already in Discord - How does this tie into operator story/trial? - JavaScript implementation for RLN-relay in Waku. - Zerokit for same circuits - RLN and RLN circuit (already written) - RLN-relay in JS, i.e. for Waku - integration into chat2 - ability to sign up - tie into testnet effort - Performance (general) - could be blog post - need more good data - Performance analysis (same as above?) - Key store and wallet integration (all implementations) - Wallet integration both in nim and js and go (same as above?) - Trusted setup (after circuit) - Circuit and contract audit (ask corey) - Effort to get core contributors to test RLN-relay - performance test (to see what is a meaningul optimization of the merkle tree storage), can be only on the nim version - get it tested by Ccs the nim version - get it tested by CCs for the cross client version - write up for the performance - write up inro to rln-relay to get people test it - operator story to run rln-relay, like incentivization and priority queue for rln members (talk to Hanno) # Service credentials (Keshav) - Quick review of plan: - relayer nodes, services and service clients - Tornado Cash model with fund sender, fund receiver and indirection - Tornado Cash Nova? - Amortizing gas cost by claiming batch of credentials - Attack possible by registering in pool without providing Waku ## Qs: _valid game-theoretical analysis for service incentivization (technical part is mostly clear), what are the underlying assumptions -> output is spec and write-up answering "why this will work", work on contract, TC understanding and investigation including smart contract level_ - What about the game-theoretic aspect? The "plan" is just a mechanism to pay at a high abstraction level. - Understanding the work for the next (couple of) month(s): - Focus on the spec and the analysis - We have to look at game theory: under what conditions would both parties act in each other's best interest? A write-up here. - Understand the cost of providing the services - Proof of concept? - Understand the dependency on other things (e.g. where does fit in in relation w/ RLN) - If we focus on store, how does that interact w/ capability discovery? Store has online window - do you pay for that? - Interaction w/ p2p protocols? Payment channels, for example, does it change the waku message, or waku store protocol messages? A new libp2p protocol? - Code changes in nwaku, etc. - Credential exchange needs to encrypted e.g., using Noise since peers do not know eachothers ahead # Anonymity (Daniel) - Presentation by Daniel (perhaps he can link here?) - https://forum.vac.dev/t/towards-a-waku-v2-security-analysis/134 - anonymity trilemma: - low latency and low bandwidth, e.g. Tor - low bandwidth and strong anonymity, e.g. Mixnets - strong anonymity and low latency, e.g. ? - This first step considers for internal attackers that you can get into position. There may be attacks/gossipsub vulnerabilities to get into position earlier (may be in article series). - Dandilion++: - PSE did some preliminary research and found that it's not necessarily feasible. Potential gaps in their analysis, though important point: problem of latency. Latter does not necessarily apply to us, but gain understanding - e.g. what guarantees do we get if only two hops. Tradeoffs possible within trilemma for specific applications? - How long? Mid-September-ish - Roadmap on Daniel's slide. # Specs Raw specs to Draft: - 31/WAKU2-ENR Also Noise and Noise sessions? RLN specs? Draft specs to stable: - 13/WAKU2-STORE - 14/WAKU2-MESSAGE (dependency for most other protocols) - 15/WAKU2-BRIDGE - 23/WAKU2-TOPICS (dependency for bridge) - 10/WAKU2 - remove all not-stable stuff and create new WAKU2 spec in draft - 33/WAKU2-DISCV5 Open Qs: - what do we do with 10/WAKU2 integration which is very dynamic - how should we version 14/WAKU2-MESSAGE? - FT store? - filter protocol changes # Project: Secure Messaging roadmap for next ~3 months (Jul-Oct) ## TEMPLATE: Project (people) ### July - Task 1 - Milestone 1 - ... - ... (person) ### Aug ### Sep ### Oct **TEMPLATE!** (Sep/Oct can also be combined if too far ahead) ## Anonymity (D) * [roadmap issue](https://github.com/vacp2p/research/issues/107) ### Sep * Task: Add new Waku Protocol: Waku-Dandilion - draft raw RFC: XX/WAKU-DANDILION - implement in nwaku - results before devcon ### Oct * Task: Add new Waku Protocol: Waku-Dandilion - research: how to reduce latency. Possible routes: - can dandlion++ be modified (time-box) - use Waku Tor for low latency applications * Task: Write research log posts in the anonymity series - write research log post on Waku-Dandilion - write research log post: Relay anonymity part 2: Waku message ### Nov * Task: perform libp2p anonymity study - do the necessary research - write research log post * Task: Add Tor as an anonymization layer to Waku - write raw RFC on Waku over TOR: XX/WAKU-TOR ### Future (outlook) * Task: Add Tor as an anonymization layer to Waku - implement Tor Waku in nwaku * Task: Write research log posts in the anonymity series - write research log post on anonymity properties of "resource restricted" protocols ## Service credentials (K, L) - Game Theory - Analysis - Pay first or service first? - Reputation implementation via Repitation - Service Gaurantee - Different benchmarks for all three services - lightpush, filter, store - Who is more likely to cheat? End user or relayer? - Difference in incentivization mechanism of lightpush/store/filter - Lightpush: Send the service credentials with message to the server for publishing - Store: Make request for history. Server replies with estimated size of history. Client sends the service credentials. Server sends the history. - Filter: Incentivation mechanism much different than the above two. It is not a single transaction but rather a subscription to the filtered live messages. Client needs to "pre-pay" with credentials to keep receiving the messages. Server notifies the client when all pre-paid credentials have been consumed but new live messages are coming in. - Writeup / Blogpost - Protocol specification details (RFCs) - Lightpush RFC Extension (XX/WAKU-LIGHTPUSH-XYZ) - Store RFC Extension (XX/WAKU-STORE-XYZ) - Filter RFC Extension (XX/WAKU-FILTER-XYZ) + TBD Depends on the definition of the incentivation model for filter - nwaku Implementation details (follow RFC) + Service credentials storage (shared between protocols) + Pay for serv. credentials and reedem of credentials + Requirement: secure comm. channel (to prevent front-running) ### Notes on the above: - July, Aug, Sept division - Focus on Store as a start (make simplifying assumption of credential per page) - More concrete tasks. Be mindful of same resources involved with RLN. - Something for Richard? ## Discovery (D) * [roadmap issue](https://github.com/status-im/nwaku/issues/879) ### July * Task: add peer exchange protocol to Waku - raw RFC: 34/WAKU-PX * Task: add capability discovery protocol to Waku - raw RFC: XX/WAKU-CDISC ### Aug * Task: add peer exchange protocol to Waku - nwaku implementation * Task: add capability discovery protocol to Waku - nwaku implementation ### Future (outlook) * [Discv5 update](https://github.com/ethereum/devp2p/issues/199) - research * DHT academia collaboration ## Store/FT store (S, L) TODO ## Specs (H,D) ### Sep - Task: RFC template - Milestone 1: [finalize RFC template](https://github.com/vacp2p/rfc/pull/488) - generalize to Waku/Logos/Codex ### Oct - Task: Get protocols to stable - Milestone 1: Raw protocols to Draft - Targeted: 31/WAKU2-ENR, 32/RLN-SPEC ?, 37/WAKU2-NOISE-SESSIONS ? - Assigned: Hanno - Milestone 2: Draft protocols to Stable - Targeted: 10/WAKU2, 13/WAKU2-STORE, 14/WAKU2-MESSAGE, 15/WAKU2-BRIDGE, 23/WAKU2-TOPICS, 33/WAKU2-DISCV5 - Merge FT store wire spec with store (this is what's actually used) - Strip unstable stuff from 10/WAKU2 and create new WAKU2 draft spec - Assigned: Hanno - Draft proposal for filter protocol improvements - Ambitious milestone for October, but let's try :) - Could be captured in GH issue - Assigned: Hanno/Lorenzo/Waku team #### Notes on above: - Careful on Status integration - which requires stability - Move some items earlier ## Noise (G) (to tailor to incentivation mechanisms or nwaku needs, i.e. we already have encryption available in status: why pushing for noise?) ### July - Add payload padding - Split nwaku noise module - Manage/implement/test backward compatibility with V1 primitives ### August - Integrate/implement Double-ratchet using PayloadV2 + tests - Noise+DR PoC in Chat2 - Integrate and promote to draft Noise RFC ### September - After-handshake anonymity measures: - anonymity/performance/resources impact analysis for (frequent) contentTopic change - implement contentTopic change/filter/message retrieval every N messages exchanged (towards session management RFC implementation) - Session Management: - Implement device-id assignment logic ### October - Session Management: - 2-to-1 example and PoC - Tests with ChaChaPoly but no Double-ratchet - independent noise sessions (21=NM) - session info share and sync among all users devices (2111 = N11M). - analyze impact of double ratchet secrets' sharing (e.g. session compromise) - Eventually integrate DR. - parametrize to n-to-m - Integrate and promote Session Management spec to draft - Noise+DR+session management Chat2 PoC - go/js implementation support ### Great to have at some point - Add support to Blake2 hash - Anonymous filter query (Private Information Retrieval, Oblivious transfer) - Noise implementation/stack as external library #### Notes on above - Cut this down to be more realistic i.t.o. resources - Be clear about why we do this: gather clear requirements from Waku Product, etc. - Having an understanding on how to do this in other clients (esp. js-waku) ## RLN (S) To be decided by Frank and Richard (a parallel effort) * js/Go rln-relay implementation * wallet integration in js/Go * key-store in js/Go * rln chat2 in js/Go ### July * Dynamic rln-relay * rln-chat2 testnet in nim local test by the Vac team (Sanaz) * rln-relay performance * gathred feedback, get performance insights (Sanaz) * Write a post on the performance result of rln-relay (may spill to August) (Sanaz) * Multi-chain rln-relay - Raw rfc for the contract API with the fee option (Keshav) - Support for ERC20 token as rln payment (Keshav) - Cross-client testnet * nim zero-kit integration under a compiler flag (Giuseppe) * integration of zero-kit in Go (Giuseppe + Richard) ### August * applied rln * applied rln as a stand alone, with usecase in ethereum validators (Sanaz) * rln-relay performance * looking into Merkle tree optimization (research and dev) + protocol design and dev(Sanaz) * Multi-chain rln-relay - Contract Audit (Corey-Keshav) - Wallet integration in nim (Keshav) - key store in nim (Keshav) * Cross-client testnet * zero-kit testnet (Giuseppe) * circuit audit (Giuseppe + Corey) ### September * rln-relay performance * Re-evluating storage/performance with the new merkle tree management design (Sanaz) * cross-client testnet * rln-relay trsuted setup (Sanaz + Giuseppe) * rln-relay based connection management (Sanaz + Hanno) ### October - cross-client testnet (Sanaz + Frank + Richard) - a vac.dev post on introduction to rln-relay for larger audiance to run rln-chat2 (Sanaz) #### Notes on the above: - Make the milestones clearer: e.g. tie under "launch an RLN testnet in August", with the laundry list above as details - Capture interrep and decentralized captcha somewhere in the rln-relat 6 months plan (for the record https://docs.google.com/document/d/1it9_HTzOTvumBsUoeY3SEVFTJA-sSYrW89-HsEjriEg/edit?skip_itp2_check=true&pli=1)

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password
    or
    Sign in via Facebook Sign in via X(Twitter) Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    By signing in, you agree to our terms of service.

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully