{"id":16419825,"url":"https://github.com/delneg/blockchain_webrtc","last_synced_at":"2026-04-08T20:51:00.525Z","repository":{"id":122526201,"uuid":"387406348","full_name":"delneg/blockchain_webrtc","owner":"delneg","description":"Signaling via blockchain POC with WebRTC","archived":false,"fork":false,"pushed_at":"2021-07-22T08:21:37.000Z","size":972,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-24T13:48:22.695Z","etag":null,"topics":["blockchain","experimental","preact","reactjs","signaling","simple-peer","stun","turn-server","typescript","webrtc","webrtc-signaling"],"latest_commit_sha":null,"homepage":"","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/delneg.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-19T09:16:25.000Z","updated_at":"2021-07-22T08:21:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"ddcabdf5-3dfc-43ff-86a2-8800797da8e3","html_url":"https://github.com/delneg/blockchain_webrtc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/delneg/blockchain_webrtc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/delneg%2Fblockchain_webrtc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/delneg%2Fblockchain_webrtc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/delneg%2Fblockchain_webrtc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/delneg%2Fblockchain_webrtc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/delneg","download_url":"https://codeload.github.com/delneg/blockchain_webrtc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/delneg%2Fblockchain_webrtc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31573788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["blockchain","experimental","preact","reactjs","signaling","simple-peer","stun","turn-server","typescript","webrtc","webrtc-signaling"],"created_at":"2024-10-11T07:26:06.461Z","updated_at":"2026-04-08T20:51:00.503Z","avatar_url":"https://github.com/delneg.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Serverless Blockchain Webrtc video chat\n\n\nThis project is a proof-of-concept (POC) example of how one could achieve serverless-ish video conferencing setup\nusing WebRTC and a 'distributed storage' via blockchain (in this case Sia Skynet https://siasky.net) for signaling and Google's STUN servers.\n\n\n\n## Fundamental problems\n\n1. **p2p mesh doesn't scale**\n\nWebRTC is in nature p2p (peer-to-peer) technology, and that means that each participant has to broadcast his stream as well as receive all other streams.\nThis quickly becomes unmanageable because of the limited bandwidth (especially in mobile scenarios).\nSo, this is only good for ~10 participants max.\n\nhttps://bloggeek.me/webrtc-p2p-mesh/\n\n2. **No TURN**\n\nSTUN server is sufficient in some scenarios, however the majority of connections nowadays are heavily NAT-ted, and thus - require TURN.\n\nWhile STUN server is non-demanding for resources and there are plenty of free STUN servers out there, \nwith TURN servers it's a whole other story - they require A LOT of bandwith because they route all media traffic from the participants.\nThat's why it's uncommon to find free TURN servers.\n\nOne could, however, register an account at https://numb.viagenie.ca/ and use it, however that's against the philosophy of this project.\n\n\n## Achievements\n\n1. It works\n2. Signaling via SkyNet is actually quite fast\n3. The website can be hosted on SkyNet itself\n4. It's actually usable even on the phone\n\n\n\n\n## Used technologies\n\n* SkyNET js sdk (4.0 beta at the time of writing)  https://github.com/SkynetLabs/skynet-js\n* Simple peer https://github.com/feross/simple-peer\n* Preact https://preactjs.com/\n* WebRTC adapter https://github.com/webrtcHacks/adapter\n\n\n\n\n\n## CLI Commands\n*   `npm install`: Installs dependencies\n\n*   `npm run dev`: Run a development, HMR server\n\n*   `npm run serve`: Run a production-like server\n\n*   `npm run build`: Production-ready build\n\n*   `npm run lint`: Pass TypeScript files using ESLint\n\nFor detailed explanation on how things work, checkout the [CLI Readme](https://github.com/developit/preact-cli/blob/master/README.md).\n\n\n\nP.S. THIS IS SDPARTA!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdelneg%2Fblockchain_webrtc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdelneg%2Fblockchain_webrtc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdelneg%2Fblockchain_webrtc/lists"}