Git Product home page Git Product logo

plasmmer / web3updater Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 1.0 82 KB

The web 3.0 (that came from Ethereum, IPFS and TheGraph) is replacing the web 2.0, and Web3Updater will put it also on OS/app updates! As Web3Updater can be used in any product to manage updates (such as Electron apps), it also uses itself to update itself (meta-language).

Shell 100.00%
ipfs ethereum cli ens ethereum-name-service go-ipfs ipfs-desktop jq ethereal git

web3updater's Introduction

Web3Updater

Imagine Windows Update, but for the Web 3.0 and for any app/CLI program/OS.

Why IPFS?

To not depend on a failure-prone centralized server. The true focus isn't about censorship concerns, but mainly because an OS or app that handles user's digital money shouldn't be vulnerable to individuals.

Why blockchain?

To use a public ledger to validate decentralized DNS/domains.

Why Ethereum?

Because it is the pioneer on smart-contracts and fostering innovation (such as the eco-friendly PoS, token-burning and sharding) while choosing decentralization/security over speed.

How it works

First, W3U takes use of ENS (Ethereum Name System) to store file/folder content hashes (known on IPFS as CIDs - Content IDs), so updates are secured by the Ethereum blockchain; in the next step, these updates are downloaded directly from IPFS (not a blockchain, but a distributed file-sharing protocol like BitTorrent) and patched, and also seeded to other neighboor users (P2P, faster updates).

It can not only be itself updating itself (meta language), but can also be initiated in your projects (soon); for now only CLI apps, but soon we will enable new creative uses such as an NPM package to decentralizedly update Electron apps.


Every time you wish to add an new update: edit files such as update.sh and new_patch_at.json adding commands and increasing numbers and... ...more instructions coming.

Web3Updater is developed with focus on being:

  • Modular
  • Agnostic
  • Portable
  • Scalable
  • Distributed
  • Decentralized

Questions? Suggestions?

Feel free to open an issue, here. Pull requests are also welcome <3

Powered by the amazing:

  • jq (for parsing .JSON data)
  • IPFS (for serving P2P files, running as daemon)
  • ENS - Ethereum Name System (for powering decentralized domains/DNS)
  • Ethereum (for powering ENS on its smart-contract platform)
  • ethereal (for being a CLI to interact with Ethereum and ENS)
  • git (for versioning, de-duplicing and patching update data)

web3updater's People

Contributors

danimesq avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

erikside

web3updater's Issues

Command to add an update

  • Offer the developer to add update commands directly on CLI (get input), then read .new_patch_at@new_patch_at.json to know what the next version to add
  • Or, developer adds a patch to the project's updates.sh
  • CLI automatically or, the developer, increases by 1 the number of new_patch_at.json
  • Initiate a interactive CLI dialog for git commit, using 01 VCS
  • Makes a bare git repo tmp folder called build (mkdir build && git init --bare build && git remote add build build)
  • Push/uploads into it (git push --set-upstream build main)
  • Use 01 VCS' git-unpack at build folder
  • Adds this folder into IPFS (ipfs add -r build)
  • Copies its CID and shows it to user (ipfs add -Qr --only-hash build, ipfs pin add <hash>) until ethereal uses an Floflis keychain to automatically sign/update ENS

Command to init on a project

Only CLI, for now

  • adds the full web3updater lib installable globally
  • its custom new_patch_at.json, updates.sh, update.json, etc
  • web3updater init installs it in a specific project, while the global command manages it (app can run a local or global W3U to programatically use it)
  • init update.json

cat > /usr/lib/web3updater/update.json <<EOF
{
"patch_at": 0,
"cid_at": "",
"recently_checked_at": "",
"recently_updated_at": "",
"ens": ""
}
EOF

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.