This is a user-friendly, decentralized webshop that can be self operated, self hosted and is powered only by Blockchain technology.
Access the Dapp under https://w3shop.eth.limo or https://w3shop.eth (for IPFS enabled browsers)
- No payment processor required. No setup of Paypal or Stripe accounts or even bank accounts to sell or buy digital goods.
- No comission fees.. The smart contracts operate on their own and beside gas fees (which are reduced by using Layer 2 technology) all the proceedings go to the content creator.
- Fully hosted via chain based infrastructure. You don't require an own server. All the static information that forms the heart of your shop is saved via blockchain infrastructure. You pay for it, but you own it.
- You own your shop.. You fully decide what happens to your shop. You can modify, close or even sell it to someone else. Similiar to a real, physical shop.
- Immutable Contracts and permanent storage. Those systems guarantee the accessibility of data for buyers over a long period of time.
- Royalty EIP-2981 support: Digital goods sold via the shop, can signal a royalty fee so the creator can earn on secondary market sells.
- Limited Items: Sell limited editions of your digital items.
WARNING: This project is in an ALPHA stage. The contracts are neither audited nor well tested. Please consider everything as experimental.
DISCLAIMER: Only sell items which you are legally allowed to! Clearify with your jurisdiction on what information you need to provide in order to operate an online shop.
- The digital goods and shop data is stored encrypted on Arweave via the Bundlr Network, referenced by a smart contract that can be accessed from the URL.
- Buyers purchase a NFT, representing their access right to this digital content. They can download it and when they rightfully own the NFT the Lit Protocoll is used to decrypt the digital content.
These feature are loosly planned without a fixed time table. Its not sure if they work out but they are researched and part of the vision:
- Automatic Currency Conversion: Pay in any currencies and the receiving smart contract does an automatic conversion to the currency the shop owner wants to receive.
- Community Curated Shop Directory: Imagine a curated list of shops that is indexed and searchable in a decentralized environment.
- Access Restriction: Use a shop only if you have a special membership NFT.
- Shop Federation: Kickstart new shops that own no digital currency by financing the setup costs via a collective.
Discuss with us in our W3Shop Orbis Club Group about your favorite (or even new ideas).
TODO Short description on how to use it.
TODO Short description on how to use it.
TODO Short description on how to use it.
Not all components that are required to create this project fully decentralized yet. Here is a list of which part of the code is currently critical and what are the associated risks with this technology.
Component | Description | Mitigation |
---|---|---|
ENS Gateway w3shop.eth.limo | This is a DNS resolved IPFS gateway that could be taken down. | You can use a IPFS enabled browser or an addon like ipfs-compagnion to directly resolve w3shop.eth instead. |
Lit Protocol for content decryption | The protocol is in alpha stage and its unclear if it will be there forever or a critical flaw will be found. For more information check their page litprotocol.com | - |
Arweave Gatways | Arweave uses gateways like https://arweave.net/<CONTENT_ID> in order to fetch the saved content. Uses DNS too. |
You can start your own Arweave Gateway. Soon there will be support in the Dapp to point Arweave URLs against a custom gateway. |
Bundlr Network for content upload | Could go offline and is currently centralized and in alpha phase. It currently also uses only two nodes that are reachable via DNS. | - |
Arbitrum | Currently Arbitrum is in beta phase and still can be stopped via their team. Its also not fully decentralized yet so in theory manipulation is possible. Use with caution. | - |
This project requires two parts, one is the shop application that is found in /website
, the other components are
the underyling smart contracts that are found inside /contract
.
To do proper testing you will need some test Ether on Arbitrum Goerli. You can use the Rinkeby faucet (if it is not working you can also try the Chainlink Faucet or the Paradigm Faucet) and the Arbitrum Rinkeby Bridge to transfer those ETH to the test Arbitrum (make sure you switch your Metamaskn network to Arbitrum Goerli).
The shop software is written with Angular. In order to start local developing right away do the following after you checked out the repository:
cd website
npm run start
This sets up a environment where all key components that interact with chain or external infrastructure are mocked away. So you don't need any requirements other then an installed Metamask wallet in order to develop the page locally.
Navigate to http://localhost:4200/
. The app will automatically reload if you change any of the source files.
In case you want to access an example shop you can to to http://localhost:4200/a2p6bDZmZGR1YjloeGYycTMxMmE1cWp0OXJhM295emI3bHRoc3J0d2huZTB3dTU0aXV2ajg1MmJ3OXd4ZnZz
.
In order to run the unit tests (which at this point in time are very incomplete), run:
npm run test # Unit tests
npm run e2e # End 2 End tests
Here is a list of all the contracts deployed to the different networks. Please always check if you interact with the right contracts.
Contract | Network | Address |
---|---|---|
W3ShopFactory | Arbitrum Goerli | 0x89A0027324d7F5e5837e80C238eA0A0C194FBe58 |
W3PaymentProcessor (Default) | Arbitrum Goerli | 0xFd14A937D2889CF24fe84a3c0c9D6BEb285049fB |
W3ShopFactory | Arbitrum One | 0xf6A7028cc183b38e3c615B5Aa0731012DA09Bdd3 |
W3PaymentProcessor (Default) | Arbitrum One | 0x7E3e552721143977F6c0580b4Cf45d8357C65C1d |
This project is created only in my spare time. Feel free to open PR for improvements you would like to see! Any help is welcomed here.
The goal of this project is to maximaze decentralness by not operating any owned infrastracture (like a Raspi Pi in the living room). It should be seen as a demonstrator how to maximize userfriendliness and decentralization. Keep this in mind when introducing new dependencies and think about if the service would still be operational, even if this dependency goes down (e.g. some centralized APIs). Always prefer self-hostable or decentralized infrastructure over central one (e.g. ENS over DNS).
As a few ideas what is currently missing and might be a good starting point:
- Unit and E2E Tests for the website
- Item removal from current shop
- Limited edition items
- Improvement of shop creation (and general UX)
- I18N of the shop and the NFT Metadata
- Tradepost for decentral exchange of shop items