{"id":23099242,"url":"https://github.com/ringsnetwork/rings-dweb","last_synced_at":"2025-08-02T11:32:59.277Z","repository":{"id":176050242,"uuid":"654630596","full_name":"RingsNetwork/rings-dweb","owner":"RingsNetwork","description":"This is a dweb implementation based on Rings Network, which allows unrestricted access to network services and content. The process of accessing content is end-to-end encrypted. In this demo, we provide a simple decentralized access method for Uniswap and Tornado Cash.","archived":false,"fork":false,"pushed_at":"2023-12-11T10:51:36.000Z","size":16235,"stargazers_count":4,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-04T12:22:32.638Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://dweb.rs/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RingsNetwork.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-06-16T14:55:45.000Z","updated_at":"2025-02-06T14:43:23.000Z","dependencies_parsed_at":"2023-11-29T17:28:23.908Z","dependency_job_id":"4f7a1ad4-6d9d-4924-99f7-3bdc5b5410a4","html_url":"https://github.com/RingsNetwork/rings-dweb","commit_stats":null,"previous_names":["ringsnetwork/rings-dweb"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RingsNetwork/rings-dweb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RingsNetwork%2Frings-dweb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RingsNetwork%2Frings-dweb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RingsNetwork%2Frings-dweb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RingsNetwork%2Frings-dweb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RingsNetwork","download_url":"https://codeload.github.com/RingsNetwork/rings-dweb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RingsNetwork%2Frings-dweb/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268378965,"owners_count":24240907,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-16T23:18:39.903Z","updated_at":"2025-08-02T11:32:59.250Z","avatar_url":"https://github.com/RingsNetwork.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://static.ringsnetwork.io/ringsnetwork_logo.png\"\u003e\n  \u003cimg alt=\"Rings Network\" src=\"https://raw.githubusercontent.com/RingsNetwork/asserts/main/logo/rings_network_red.png\"\u003e\n\u003c/picture\u003e\n\n\ndWeb implementation power by Rings Network\n====\n\n# TL;DR\n\nThis is a dweb implementation based on Rings Network, which allows unrestricted access to network services and content. The process of accessing content is end-to-end encrypted. In this demo, we provide a simple decentralized access method for Uniswap and Tornado Cash.\n\n![Screenshot of tornado](./screenshots/tornado.png)\n![Screenshot of uniswap](./screenshots/uniswap.png)\n\n# principles\n\nIn this demo, the principles Are as follows:\n\n1. Load a wasm-based Rings Node within the browser and connect it to the network.\n\n2. Rings Network utilizes the WebRTC protocol for data transmission and the Chord protocol for routing.\n\n3. Requests specific resource information from other nodes, such as IPFS information for services like Uniswap or Tornado Cash.\n\n4. Some network participants act as an IPFS provider service, responsible for fetching the requested content from the network and forwarding it to the requesting node.\n\nFor more details you can check our [Rings Whitepaper](https://raw.githubusercontent.com/RingsNetwork/whitepaper/master/rings.pdf).\n\n# How network works\n\nOur network is based on the WebRTC protocol, so you can observe how the network performs handshakes and communication by opening `chrome://webrtc-internals/` in Chrome or `about:webrtc` in Firefox. In essence, this process involves three steps: creating an Offer, exchanging the Offer to obtain an Answer from the remote peer, and accepting the Answer to establish the connection.\n\n![Screenshot of chrome:://webrtc-internals](./screenshots/webrtc-internal.png)\n\nRings Network supports direct exchange of SDP (Session Description Protocol) for establishing connections. In this example, we create the connection through the node entry point.\n\n# How message and routing works\n\nYou can observe how our messages are encrypted, transmitted, and routed by examining our debug information. You can use the following commands in the console for debugging:\n\n```text\nlocalStorage.setItem(\"debug\", true);\n```\n\n\n# Contribute and Build\n\n1. Install\n\nPrepare the Rust development environment to compile the latest Rings Node (recommended), or directly use our npm package `@RingsNetwork/rings-node`. If you choose to build with the Rust environment, the rings-node dependency in your package.json should be like this:\n\n```text\n    \"@ringsnetwork/rings-node\": \"https://github.com/RingsNetwork/rings-node.git#master\",\n```\n\nAlternatively, if you have already cloned Rings Node and want to compile it from your local repository:\n\n```text\n    \"@ringsnetwork/rings-node\": \"git+file:\u003csome path\u003e#master\",\n```\n\nNote: The git+file prefix is necessary because Rings Node's package.json relies on the prepare script to compile the Rust portion. Using a local path will bypass this script.\n\nThen simply run:\n\n```\nmake install\n```\n\n2. Setup Environments\n\nYou need to create an .env.local file to load the correct configurations, including the behavior during node initialization, STUN/TURN information, and more. The typical format of this file is as follows:\n\n```text\nNEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID=\"\u003cwalletconnect id\u003e\"\nNEXT_PUBLIC_TURN_URL=\"stun://stun.l.google.com:19302\"\nNEXT_PUBLIC_NODE_URL=\"\u003centry node url\u003e\"\nNEXT_PUBLIC_SERVICE_NODE=\"\u003cnode provids services (optional)\u003e\"\n```\n\n3. Let's Go!!!\n\n```\nmake dev\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fringsnetwork%2Frings-dweb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fringsnetwork%2Frings-dweb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fringsnetwork%2Frings-dweb/lists"}