Zcash 'Point Of Sale' prototype (FUNDED!)

Thought I’d share something I’ve been working on, its a crypto checkout for ZEC (and BTC).

My imaginary use case was a market stall selling vegetables - where the buyer and seller actually meet. The stall has an owner and a few helpers that the owner doesn’t trust with access to his wallet. It has to be simple, run on hardware folks already have, and can ONLY receive funds - sort of a ‘one way multi-user wallet’.

I have a prototype running on mainnet (https://chilebob.duckdns.org) and would appreciate feedback, especially if you find any bugs!

The server is self-hosted, uses a home internet connection and the client runs on a smartphone/browser - that way the shop owner sets it up and his helpers use their own phones.

I’ve given it a ‘guest mode’ so anyone can create an account with access to everything. This would normally be disabled and ‘normal’ users restricted to the checkout but for now its all turned on so you can explore.

Here are some screenshots :-

This is the ‘shop wallet’, shows a fixed address for each payment method.

This is the checkout, its a simple calculator that accepts a fiat amount & calculates the ZEC (or BTC) payment amount - clicking one of the coin icons places an order. The exchange rates update every minute & most fiat currencies are supported (data from Coinlib)

This is the active order page - the customer would scan the qrcode and send funds, the order updates when notification and first confirmation are received.

Here’s the list of recent orders received, they’re visible to all users :-

The status page, basic node information :-

That’s more or less it, there’s an ‘About’ screen with the usual disclaimers and information. Don’t forget that this is on mainnet, which means real money (which I’ll happily spend on beer!).

Let me know what you think of it, I hang out here most days.

PS: Thanks @sonya @garethtdavies @rex4539 & @acityinohio for your help & feedback over the last week - much appreciated :slight_smile:

20 Likes

Is the site down or is that something on my end?

Edit: Never mind, it came back.

Its running, looks like dynamic dns from duckdns can be a bit flaky… need to look at alternatives.

2 Likes

This looks great! Can we set some instances of this up for vendors at Zcon1, the way that the Burner Wallet folks set up Point of Sale systems for a dozen taco trucks at EthDenver? :slightly_smiling_face: https://medium.com/gitcoin/burner-wallet-at-ethdenver-was-faa3851ea833

P.S. Not everyone was so satisfied with the ease of use: https://decryptmedia.com/5212/ethdenver-makerdao-buffcoin-stablecoin :laughing:

6 Likes

Sure, nice to have a deadline.

Its a prototype & rough around the edges but there should be enough time to ‘un-bungle’ it before Zcon :slight_smile:

3 Likes

I’m assembling a list of features/fixes for the next version over the coming week, so if anyone has ideas don’t be shy :slight_smile:

Some of the things on the wishlist :-

  • more pages should auto update
  • orders should include the username
  • notify active users when an order confirms
  • memos/invoices should be more descriptive
  • change the front page dog for a cat (seriously?)
  • portrait & landscape

Anything else?

5 Likes

First and foremost, THANK YOU SO MUCH. This app really opens up the world to me. Why do I feel like i have been waiting for something like this forever?! I believe that the first computers that Woz and Jobs sold didn’t even ship assembled! This PoS app seems like a tremendous step towards mass usability.

My one wish:

Why not list the ZEC/BTC price pair? People all over the world may already consider BTC to be their base currency.

They may be interested in the ZEC/BTC price pair to decide which is a better store of value of their earnings. Should they accept ZEC and hold, accept and spend ZEC on inventory, accept and transfer to BTC to hold? etc. etc.

In fact, I don’t really care what it is worth in USD when trading for goods and services - as long as 1 ZEC<7 BTC I’m motivated to earn cybercoin! :wink:

[EDIT:] Not actually sure if my feedback is pertinent - let me try out the app, first, instead of looking at screenshots! Need few days.

2 Likes

You’re welcome, glad you like it :blush:

I’ll add exchange rates to the wishlist - the data comes from Coinlib & to be fair they have a great app for that.

I think its best for the checkout to work with fiat prices - everything is priced in fiat but this gives a ‘pay with crypto’ option. Something crypto-noobs can understand.

3 Likes

Check this out, someone on Twitter linked to it: https://github.com/chingstore/ching

Might be interesting to look around in the code and see if there’s anything helpful.

1 Like

It handles hi volume, I put 5 transactions through it in about 75 sec, did well
Well hi maybe for a single merchant
(That applies to zec wallet too on my piece o junk phone aint too bad)

2 Likes

Idea, push the recent orders w/o refreshing the list if thats optionable
Also username and amount should be options (for instance maybe you have a second large display so customers can see their pending orders associated with their order number but nothing else)

1 Like

I like that - something like an airport display showing arriving/landed flights.

1 Like

I haven’t looked into how it scales, this is really for a single vendor with their own node. I guess it could be a large shop with lots of staff.

The current limit is the number of network sockets available (concurrent connections), it’ll handle 50 right now but could do more.

I guess Anypay are doing a large scale PoS/Gateway, a much harder thing to do & will be interesting to see that.

2 Likes

Last call for tweaks & new features :slight_smile:

Aiming to finish the first ‘proper version’ put it up for testing this week.

1 Like

Looks really good !

Any chances you’ll put some other fiat currencies ? EUR? DKK? SEK? NOK? CNY? …

To get some ideas… looking at some famous POS such as izettle might help … :slight_smile:

1 Like

Yup - it works with any fiat currency supported by Coinlib, so almost all of them. :laughing:

Testing the new version today & had a thought…

Should it allow 0-conf transactions?

My 2 zat opinion is no, its a dodgy practice and allows abuse.

However, ZEC has shorter blocktimes and AFAIK doesn’t have RBF so maybe not an issue - even better after Blossom which will speed things up.

The idea of accepting unconfirmed transactions feels wrong, but thats just my opinion.

Having said that, vendors want things to happen quickly so they can move to the next customer. Maybe 0-conf is acceptable if they’re selling carrots, but not if they’re selling cars.

Maybe the best way is to add confirmations to the config file, different levels for each coin but with a default of 1-conf for all?

What say you?

1 Like

I think it’s pretty impractical to not have 0-conf for vendors selling low value items?

In addition to other risks, Zcash does have transaction expiry which, whether used maliciously or not, could potentially cause issues accepting 0-conf transactions if we ever saw full blocks.

2 Likes

Perhaps a better approach is to config a max fiat value for 0-conf for each coin, ie: ZEC $20, BTC onchain $0, BTC Lightning $10000000, etc

I would let the Vendor using the app have the option to set it where they feel comfortable., some may have different thresholds of whats acceptable risk.

As long as there is a clear warning of the risk of low-confirmation trasactions, it should be good.

3 Likes