I've always wanted to pay for eg: groceries using cryptocurrency. There have always been blockers to making this happen, but with the rise of stablecoins and L2s, this may be possible. I'm especially excited by the idea of reusing existing infrastructure to the extent possible, using existing payment UX (card and contactless pay) and payment standards to make it happen.

What it does

I started the hack with very little knowledge about what makes an in-person payment. But I had brought a smart card and a smart card reader, and this was the seed for the hack.

The end deliverable is organized research. I've collected specs, documents, software libraries, online textbooks, etc. to more easily dive into the tech and the problem in a high-signal way.

How we built it

Challenges we ran into

The first night, I had an acquaintance helping set up the smart card toolchain. Unfortunately, he dipped at the first mention of "Java".

Very quickly, I realized that a full implementation of a crypto EMV card + terminal was infeasible for the hackathon timeframe. I was wading though thousands of pages of arcane specs, definitions, abbreviations, old blogposts, etc. and I didn't actually know enough to get started. So I pivoted to just collecting research, and better understanding the problem.

Accomplishments that we're proud of

I'm proud of filtering through the (possibly intentionally) obtuse maze of standards to understand what actually needs to be built for this project.

What we learned

We learned about the following standards

  • Smart cards - ISO 7816 - how they work, how data is stored on cards, how data is transmitted
  • JavaCard - how smart cards are programmed, intricacies of the programming model
  • EMV - the standard used in most/all in-person payments

What's next for Crypto-EMV

Next hackathon, implementation can begin :)

Built With

  • hackmd
  • javacard
Share this project: