Baby Shopify on the IC

Hey Everyone,

I wanted to share what I’ve been working on these past few months, its a “Shopify” for the IC.

Apologies for the wall of text, but ecommerce is a loaded topic!

ADMIN:

https://7rzy6-eiaaa-aaaal-qdjfq-cai.icp0.io/

PUBLIC CHECKOUT EXAMPLE:

https://7rzy6-eiaaa-aaaal-qdjfq-cai.icp0.io/checkout/fab050262939b6ba2f6d934c022d0db858edfd913786d648c379c7b015965705

(note if you actually test the public checkout, use Sepolia ETH … if you use ICP or SOL the money goes to the sample checkout wallets! If you accidentally send real funds I will refund just send me a DM on this forum)

Why build this?

I took on this project as a personal challenge to see if what I envision as decentralized commerce
could be built on the IC. The overall design philosophy of the platform is:

-Create an ecommerce platform where merchants can be in 100% control of their data and offer customers a simple, fast checkout experience using crypto
-Remove as many possible points of failure and 3rd party dependencies involved in online commerce
-Build something end-users would like to use, thats appealing, fast and reliable
-Avoid storing any sensitive data, tracking or invasive cookies
-Use hardcoded values for known contracts, tokens and endpoints to minimize user input data errors
-Use public, well known, reliable RPCs for transactions and rely on client wallets/biometrics for end user security
-Utilize the best aspects of the Internet Computer such as fast finality, cheap transactions and native multichain to do most of the heavy lifting
-Use and support the most common wallets and connectors and minimize overall trust assumptions

Background

I’ve been in ecommerce for over 2 decades, was doing credit card processing way back before ebay and amazon were a thing. I recall how hard it was to convince people to spend money online, and how risky it was putting personal information online in some sketchy iframe form. Well fast forward to today, and we have social media with people sharing all their personal details for anyone to see online and
online commerce has exploded to 15-20% of all retail transactions.

Crypto is the natural evolution of this. With credit cards there are all kinds of risky intermediaries, invasive tracking / data mining companies and rent seekers taking a % all along the way during a cc transaction.

In the end, the consumer may be protected with their purchase (i.e they can call their credit card company and demand a chargeback) in which case the merchant has to eat that cost. Good for consumer, bad for merchant.

In a past life I ran a few brick and motor businesses - I was losing 5-10% of income due to credit card processing fees, chargebacks and having to “rent” cc processing terminals. I also dealt with all kinds of fraud during my time building an ecommerce consulting agency - credit cards were the ideal place for fraudsters to attack. Storing credit card information is a big “no-no” unless you are PCI/ISO certified and even then, its a bad idea.

This experience drove me to look for better alternatives for merchants. Anyone who has run a small business can probably relate. Its interesting to note many countries around the world started allowing businsses to ‘pass on the cost’ of credit card fees directly onto the consumer - the end result? consumers pay more.

On the merchant side, big or small they need to go through strict KYC and registrations with credit card processors. Try getting a merchant banking account if you are a small business just starting out. If you are a business that is deemed ‘risky’ to payment processors then you are bascially out of luck for trying to sell online. You can try to find a grey market credit card processor but they will charge insane fees just to process cards. How many times have you read about PayPal or Stripe
arbitrarily cutting off merchants selling online? Some kid trying to sell his baseball card collection online gets banned? There has to be a better way.

Crypto offers a superior alternative to the legacy payment network for merchants in my opinion, we are just early in the eventual global rollout of tokenized payment networks. We had to wait for the tech to catch up (wallets and TPS) …which I think we’re pretty much there with the IC and other L2’s/SOL being able to process blocks quickly enough to make the consumer experience close to or on par with existing credit cards.

So what is supercart?

Supercart is a decentralized, non-custodial ecommerce platform running on the Internet Computer.
The platform allows merchants to create an online store, add products to it and configure crypto payments. They can then publish their store for end-consumers to visit and check-out. Payments are done directly onchain with no “intermediary” smart contracts, MEV bots or swaps involved.

There is no master account or super admin for the platform. Each merchant logs into their own store using II only and their data is only accessible by them. The platform is fully non-custodial, as it does not store private keys, tokens or currency. All funds are held by end consumers and merchants using their own wallets. Currently, the platform does not try to offer or create wallets for customers (something I’m investigating but creates a larger attack surface and token ‘jackpot’ for hackers)

Most tokens and values are hardcoded right into the binary, things like token names, contracts and decimal values. I like this approach better as its more secure and honestly, the small group of coins that are feasible for commerce is really small (think ckbtc, eth, icp and stablecoins).

You can view the supported chains and tokens here:

https://7rzy6-eiaaa-aaaal-qdjfq-cai.icp0.io/tokens

Prices are fetched ‘on demand’ during checkout then cached for 10 minutes (for now). This minimized outbound HTTPS outcalls but at the expensive of potential 10min slips on USD > Token values. This is an ongoing area of research for me and will be integrating the exchange rate canister and EVM canister next release to try to make prices more robust along with a TWAP backup.

End consumers, during checkout can use one of 3 supported wallets and chains (so far)

Plug wallet (icp mainnet)
Metamask wallet (eth sepolia / mainnet)
Phantom wallet (sol mainnet)

I plan to add 10-20 chains this year, mostly EVM L2’s as its pretty much copy and paste to implement them. Alsoexploring Bitfinity EVM for integration

I went with ICP, ETH and SOL as the main chains for now as I feel those 3 are the best setup for ecommerce. Once L2’s become more popular I can see growth there but honestly, the wallet/context switching for end users is stupid and L2’s fail hard there.

ICP definitely has the pedigree to be the #1 onchain commerce platform - but if you actually try to checkout using PLUG you will see the downsides (this isn’t a knock at PLUG its a great wallet but its slow for whatever reason when doing transactions. Sometime the wallet rejects transactions for no reason). If anyone has experience doing wallet/ICRC transactions or repos with modern, clean examples across different wallets, please share.

I plan to integrate all the popular IC wallets and wagmi/walletconnect but this will take time. I have only
tested browser wallets and no mobile testing has been done yet (I know its backwards but wanted to get desktop working tight first)

End Remarks

There is a lot to unpack when it comes to online commerce. Literally you can write encyclopedias on all the areas that ecommerce touches (marketing, customer acquisition, merchant plugins, payments, accounting, logistics, shipping, fraud etc)

Most businesses that I have engaged with are not willing to give up or migrate to a new platform. They have spent countless hours/$$ money in making their online store the best it can be. So having them try to ‘downgrade’ to an inferior onchain shopify with scary URLs isn’t realistic. Instead, the more sensible approach is to empower the merchant to enable web3 payments by integrating supercart directly to their existing payment flow.

I have a proof-of-concept of this type of integration running on wordpress and shopify. A task for my next release is to get working examples of live “web2” integrations working with the IC through supercart.

I see this as the end game - where every online store, whether its shopify or magento, woocommerce or bigcommerce - can ‘plug’ supercart into their payment flow and easily accept crypto as an option for checkout (IMO credit cards are not going anywhere despite what any crypto maxi may claim).

You can do crypto checkouts today with coinbase, bitpay etc, but these providers are rent seeking and take custody of funds, take a % of the transaction and are really no different then a credit card processor when you think about it.

Anyhow, please explore the app, I’ll be iterating on it heavily over the next few weeks and would love any / all honest feedback.

Open source

I will be open sourcing the code soon (this weekend?) Im just doing a final pass to make sure I didn’t put my phone number or home address in the code somewhere during testing :slight_smile:

If you want to see the code before you try the app thats totally fair I respect that - most crypto people are paranoid about security and this is a good thing IMO when it comes to online commerce.

Cheers

-d

10 Likes

Very cool

What’s the backend? Motoko?

thanks yeah its motoko and svelte js frontend

2 Likes

Super cool idea, looks well planned.
Im not a dev so i cant really contribute a lot.

One thing is clear, the very first visual impression is most important, its make it or break it.
Its most important to be visually indistinguishable from web2 competitors.
After that, the same thing with functionality.

Is it possible for the merchants to create a online store wich is visually on the same level as the competition on web2?

It should be possible somehow, lets take internetcomputer.org as a example. The website is running fully on chain and is the most beautiful website ever! Its smooth and candy for the eyes + indistinguishable from web2 websites.

If you and your future team nail this aspect, it could become a huge thing!

Super exciting idea of yours, looking forward to see where its going.

Hi Max,

Yes, totally possible to build something that is visually on par or better than existing web2 apps. The frontend of any website is just HTML / CSS you can create anything time/money are really the only constraints.

The upside of this technology (icp) is you remove the entire backend/infrastructure cost of running such an app, in Shopify’s case they are a 100B market-cap company and probably (just guessing) spend 3-5% of their gross on server/infrastructure costs.

They probably spend about the same or more on design and marketing… So the major upside of ICP is that you can operate with a much lighter infrastructure footprint and focus more on sales/marketing efforts. Another hidden, rarely mentioned feature is 100% uptime of the network which in ecommerce directly relates to more sales for the merchant.

For merchants to be able to ‘self serve’ and create a website like interncomputer entirely on their own… that is possible - just requires a lot of fancy frontend builders/editors/drag drop to let merchants design onsite. In reality, its rarely the store owner to builds these sites - its usually an outside design/consulting agency that does all the work and lets the merchant just focus on shipping/logistics

1 Like

Ok nice sounds great!

In that case, somebody should explain it to them so they can also move their stuff on chain :slight_smile:

Works great. Thank you for the project. Btw, it says “(wei)” even when you try to pay with ICP.

Great work! Just a heads up that I changed the category from “Developers” to “Showcase”.

Thanks for testing!

yeah what do we call units on ICP? “e8s” ?
sol = lamports…evm = wei

code as promised

3 Likes

Yes, e8s. But more user friendly would be full ICP with decimal point.

1 Like