w3shop
W3Shop.eth
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)
Features
-
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.
Does it work?
-
The digital goods and user data of the shop is stored encrypted on Arweave via the
Bundlr Network. -
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.
Upcoming Features
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).
Usage
Create a Shop
TODO Short description on how to use it.
Sell Digital Content
TODO Short description on how to use it.
Buy Content
TODO Short description on how to use it.
Current Risks
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.
–
Development
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).
Webpage
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
Contracts
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
Contributing
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).
Missing Features
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
- Own implementation of a form wizard
- Improvement of shop creation (and general UX)
- I18N of the shop and the NFT Metadata
- Improvement of mocked classes for a smoother development environment/testing