Composable Commerce

Composable Commerce

Modular and permissionless eCommerce protocol, which allows anyone to build powerful on-chain experiences without needing to write any code.

Composable Commerce

Composable Commerce

Modular and permissionless eCommerce protocol, which allows anyone to build powerful on-chain experiences without needing to write any code.

The problem Composable Commerce solves

Today, online purchases must be made on the same platform they are listed on. For example, something listed on Amazon must be purchased through Amazon. Something listed on a Shopify site must be purchased on Shopify. An Uber driver must sign up for Uber and Lyft if they want to get hired on both platforms.

This is, of course, because platforms are competitive, and there is no credibly neutral place to list things for sale.

Blockchains solve this problem. So I've built an eCommerce protocol on top of Base and the Ethereum Attestation Service that anyone can use.

It's permissionless, credibly neutral, trustless, and modular.

What does this unlock?

Sell anywhere

  • Sell your product on your own website.
  • Sell your product via a Farcaster frame.
  • Sell your product via a Lens action.
  • Sell your product on some product aggregator that you're not even aware of.
  • Sell anywhere; no platform lock-in.

What do I mean by modular?

Products are attestations on the Ethereum Attestation Service. The Ethereum Attestation Service is a composable schema registry that anyone can add to. It also has the capability to run an arbitary smart contract code before any attestation is made. I've made a smart contract that makes it easy to add or remove any number of plugins to any attestation.

Example plugins (could be built)

  • Free sample if you have a Coinbase Verfication plugin
  • XMTP message after purchase plugin
  • Affiliate tracking plugin
  • Loyalty Program plugin
  • Allowlist plugin
  • And many more

Challenges I ran into

The modular design means there are lots of little pieces that need to be created on every new product. This creates a poor UX when creating a new product.
Two approaches I used to improve the UX are:

  1. Push some things to my backend that didn't need to be signed by the user.
  2. Coinbase wallet batching came very much in handy.

Also, I was hoping to implement Coinbase Commerce for payments, but did not get enough time to implement it. Challenges were that Coinbase Commerce is not yet on base-sepolia, so I needed to implement the raw payments protocol myself. I started work on it, but it requires a backend to listen to events, a db to connect orders and TransferIntents, and more UI components.

Discussion