Grant Proposal - SecretStore

Hey guys! I submitted this as a grant proposal on the Secret Foundation GitHub:

Can asked me to also post it here to get some feedback from the community. The original proposal is as follows:

SecretStore – /

Project Description

The goal is to create an online shopping cart that accepts Secret Network’s SNIP20 tokens as payment, providing merchants and customers with a way of using any cryptocurrency to do business in a private manner.

Problem / Solution

There are numerous online shopping carts available that accept cryptocurrencies as a form of payment. Most cryptocurrencies are not private, which means all transactions between a store and its customers are visible to the public via the blockchain.

One solution to this is to use a cryptocurrency with privacy features, like Monero, and there are shopping carts available that support Monero. However, my proposed solution is a shopping cart that accepts Secret Network’s SNIP20 tokens, providing merchants and customers with a way of using ANY cryptocurrency in a private manner.

Detailed product description

The idea is to create a JavaScript shopping cart and inventory management system that anyone can easily download, configure, and deploy on their own website. I want it to be simple enough for someone with limited blockchain experience to be able to set up.

A store owner will configure their inventory with product images, descriptions, and prices. Prices will be displayed in whichever SNIP20 token the store owner chooses. They will also enter the wallet address that they would like to receive funds at.

Customers will browse the inventory, add items that they want to the shopping cart, and then go through the check-out process. Here they will enter their shipping address, then continue to the payment. This is where the interaction with Secret Network will occur. The payment button will integrate with Keplr, opening a pop-up window with the total amount owed as a transaction between the customer’s wallet and the store wallet. The shopping cart will then take the customer’s wallet address, shipping address, and order total and send it to the backend database. The store owner will then receive a notification that an order has been placed. Before shipping, they can verify the transaction by checking to see if the store wallet received the correct amount from the customer’s wallet.

Go-to-Market plan

As phase one of this project, I will operate the first working version of the code as a Secret Network merch store. This will bring attention to the project and act as a beta test, providing valuable feedback and allowing me fix any bugs. I will sell things with the Secret Network logo on them, such as stickers, coffee mugs, and t-shirts. They will be sold for sSCRT, allowing community members to directly swap their SCRT tokens for merch.

After a month of beta testing, phase two will be to release the code in an easily configurable package, allowing anyone to set up their own store. The project website will be modified, acting not only as a Secret Network merch store, but also encouraging people to download and set up a store on their own website. The site will educate people on the benefits of using SNIP20 tokens for private transactions.

I will continue to operate my example of the code as a Secret Network merch store as long as I’m involved with the community, so for the foreseeable future.

Value capture for Secret Network ecosystem

This project will promote the use of SNIP20 tokens and educate people on the benefits of using Secret Network for private transactions. For the first time ever, people will be able to swap Secret Network tokens directly for real-world items. If it gains popularity, it could spread the use of SNIP20 tokens to many different websites. Other Secret Network entities such as the Secret Foundation, committees, validators, community projects, and partner organizations could set up their own stores and offer items for SNIP20 tokens. NFTs and other virtual items could also be sold.

Questions from Can

  1. What’s the current process of acquiring SCRT merch? I think just the idea of having an online SCRT merch store that accepts snip20s would be cool.

Answer from me: Currently, the only source of SCRT merch that I’m aware of is I’m not sure who runs that site or if it’s still maintained. It does not accept SNIP20s as payment.

  1. What’s your plan on on-boarding other merchants to the platform? Eventually we would like to move beyond just the SCRT merch store

Answer from me: I think the key to getting people outside of the Secret Network community interested will be to to produce educational media (infographics/videos etc.) that demonstrate how traditional cryptocurrency transactions are visible to the public, and how SNIP20’s hide that information. These can be shared on social media, Twitter/Reddit/Telegram etc.

Comments from Jabba:

i am not sure to understand how a shopping card can be generic enough to absorb any item catalog [data model, media, etc]. even for handling a shipping address, that’s customer handling system specific. what can be generic and to be made easily pluggable is the payment part only, with its submission/confirmation/validation flow. else you drag a whole catalog + customer + shipping solution, that might never fit with actual sellers solution, often specific. or you come as an extension to an existing well adopted ecommerce/shopping solution as an alternative payment option, itself an alternative to a Keplr extension
my point is either you go for a full ecommerce platform management, or just for a payment option, ie. an extension to SecretJS with business-oriented methods/clear steps. the shopping cart cannot constrain the catalog, customer & ordering management, it adapts to them.

Answer from me: I understand what you’re saying, Reuven made some similar points when I first asked him about it. It would definitely be most beneficial for the payment mechanism to be useable by existing popular eCommerce platforms, but I don’t know if it could be made generic enough to work with every platform, and also be simple for people to implement at the same time. I want to provide a package that’s easy to install, and doesn’t require coding experience. Maybe we could create several different add-ons/extensions that work with the most popular ecommerce platforms.

from my experience of integrating 3rd party payment solution, e.g. credit card, there is no out-of-the-box solution that can be plugged with any shopping & ordering (with shipping) flow. Coding for its integration and adaptation to the hosting platform is required/mandatory.

Starting from grabbing the total amount, up to getting validation & confirmation to resume the ordering flow and related customer management plus an eventual item delivery management. The sole payment is a very sensitive part and implies supporting complex use cases and corresponding error management support, including editable [multilingual] texts management. And there are also the graphic UI/view + events integration. Else bad customer experience, overhead costs, support & refunding, etc.

So again, either you should propose a fully business-oriented enhancement or extension of SecretJS SDK, a JS lib API well documented, along with a app / web UI integrating it as a reference sample with best practices and full coverage of its abilities (steps & flows, with error management).

Or you propose a fully generic ecommerce solution, with catalog management, customer & ordering, payment & shipping support. quite ambitious.

But not a shopping cart IMO, since the latter wont be reusable in 99% of integration cases by sellers having heterogeneous systems for their catalog, customer, ordering, shipping management. so might deal with time wasted, except for your own shop ofc

im talking as a professional working in that domain (commerce & care) here. my expectations might be too high. feel free to lower them down!

A complete eCommerce solution is what I originally had in mind, but a very simple one. When writing the proposal, I struggled trying to choose between the terms “eCommerce platform” and “shopping cart”. When I say “shopping cart”, I mean to imply that store inventory and order management will be built in.

I actually think doing this will be easier than what you mentioned, trying to make it generic enough to plug in and work with any eCommerce platform. Hopefully though, whatever I come up with can be used as building blocks to create extensions that work with other platforms. Perhaps in the future we can find developers that are both experts on a particular eCommerce platform, and Secret Network, and they can build extensions specific to those platforms. Right now, I just want to create a simple web store that only uses SNIP20s for payment, that anyone can download and deploy right away.

that sounds more realistic, considering that it would consist in the sole payment transactions management to be integrated with the API of the hosting extension/widget/view to be embedded in. Such ecommerce integration platform would already have the widget/plugin API exposed/integrated, as for other supported payment options

Now, would you work against Keplr? else how would you manage the signer authentication without having the customer mnemonic externalised?

alright, go for an online store then :slight_smile:
dont forget the catalog & stock, customer, ordering & shipping, and the billing management :slight_smile:
what barebone solution do you consider to start with? there are a lot of such all-in-one solution available, where you could just implement/replace the payment support maybe? as a new plugin with SecretJS integration + web view & payment related flows

1 Like

last one, sorry. i disagree with that expectation. It is not realistic. a web view is not enough to deploy an online store, far more services management are required in the backstage, and the view doesnt dictate them, the view reflect them. Meaning a your store might not be reusable, except for a copy cat of your business, if you provide the DB + WebService + the items!

This is exactly the approach I had in mind. I’ve been looking at this one as a starting point, but I’m open to suggestions if you have any.

I suppose that’s true, that it’s not going to be so flexible that it could be instantly deployed on any website without first setting up some underlying services. I’m aiming to set it up on Amazon AWS free tier. The idea is just to keep it as simple as possible for people to set up.

nice looking static catalog web UI & UX indeed
now come the burden: dynamic catalog with DB + admin UI & ordering flow management, with payment & shipping support, implying customer & billing management

i was more thinking of using a complete E2E shopping solution (with catalog & ordering management) that you can compose depending on your expected flow & business type, where only its payment step/integration/solution is replaced. but im not up-to-date with that market, and that might imply a paid subscription. finding a foss solution, adopted by many, would be huge. only the infra deployment costs would be left.
Opting for such an already adopted solution would make your payment part easily reused, and even incentivized as a plugin option for its usage by others, depending on the platform you would use, i.e. if it has a marketplace

1 Like

if money is involved, you are accountable, a serious business to take care of.
you need to find the balance between the solution quality/ambition and the required support you would have to provide in order to counter-balance the rainy scenarios IMHO
but is it an online shopping business or a technical product that you target?

If I understand your question correctly, it’s a technical product that I’m trying to provide. I don’t intend to sell it or host it for anyone else. It will be released for free and open source, and provided “as is” with no guarantees.

It’s slightly tangential but a more valuable contribution to the ecosystem would be to build fiat on-off ramp.

I would look into APIs like Plaid or payment processors to take payments and write a smart contract to give out SCRT in return. This would significantly increase access to SCRT

That’s definitely beyond my current skillset haha. Citadel.One has a fiat on-off ramp built into their app now, powered by Moonpay and Transak. Although it isn’t possible to directly buy SCRT with that service, it is possible to buy another currency like BTC and then exchange it for SCRT within the Citadel.One app, which is powered by Changehero and ChangeNOW. It’s a couple of extra steps, but I think it’s very close to the product you’re describing!

My Concern with e-commerce has always been CRM.
You need to as the previous comments are shown make a proper DB, UI, and Services to make it a usual project.

But even with all of those more issues on the business end, how do you ship? How are returns handled? What if a customer does not receive the shipment? What of global shipment costs? What about taxes?

I think these business considerations have to be questioned first especially for physical products.

Of course, if you are going towards a payment solution then this is irrelevant to an extent.

1 Like

that wont be necessary.
I already made it so people can buy fats (a snip20) with paypal and im working on the fats shop at no expense to the secret network, it should go online in roughly 1 month. I also made the fats bot which can be used to query the price of any snip20 found on secret swap.
Its all opensource and a voluntary basis, if you wish to fund development please buy the fats token or stake at fats node.


I have been swayed by your comment and passion pete.

thank you @moonstash

That doesn’t sound like what I’m proposing. The point of this project is to create a web store that accepts any SNIP20 token as payment. Fiat should not be required at all, and neither should FATS. I looked at your website, and don’t really understand the point of the FATS token. It seems to have no function, just a blank template SNIP20 with a low max supply.

This stuff would be up to the person running the store. Drop shipping could be used, or they can manage the shipping and returns themselves. It’s not really in scope of this project, I’d just be providing the code for a store that accepts SNIP20s.