pull down to refresh

https://github.com/justh0dl/DNA-uCash

I recently made a new Bitcoin hardware project / android app.

You can download the APK here:

https://github.com/justh0dl/DNA-uCash/releases/tag/DNAuCash

Would love to see feedback & discussion on the idea.

The tl;dr is you can now mint Casascius style (or open dime style) bitcoin but instead of a scratch off, it uses digital evidence/code on cryptographically enhanced NFC tags. These tags are called DNA NTAG 424 and usually cost anywhere from $1 to $1.50.

Note: these tags are different to the generic 25¢ NTAG215 or NTAG213 tags you can buy on Amazon and have more advanced cryptographic features.

The NTAG424's have an EAL4 security level, stuff like sats card I believe have an EAL6 security level.

As a heads up, it's not a completely trustless system nor is it meant to replace cold storage, seed words or hardware wallets. It's also not meant to replace stuff like open dimes, sats cards, or satochips.

Before you dismiss the app because it's not as "secure" as those other options, consider that these are significantly cheaper and more accessible. All you need is the tag & the app.

for example, if you want to give a $5-$10 tip to a bar tender. W/ regular BTC, you need to convince them download a wallet, generate an address, send the tx & wait for a confirmation.

That's a lot of friction.

With these, you can buy a 50 pack of tags from Amazon or Aliexpress for $50-$70, download the app & and mint 50 different coins to give as gifts.

Your only alternative is an open dime or sats card which costs $6-$20. That's makes giving a $5 tip unrealistic as the device is too expensive.

With this, you can buy a $1 tag, give them the tag, then the bar tender can scan it with their phone and sweep the funds on their own time or spend it by giving it to someone else.

Think about the OG Casascius coins. You needed to trust that Casascius wasn't malicious & didn't back up the private keys, then sweep at a later date. I bet if someone tried giving you a fresh, unrevealed casascius coin, you'd gladly accept.

To me this app makes gifting smaller amounts of BTC a lot more viable, quicker, faster, more convenient and accessible. I think a fair value for the "bearer" tokens is from $1 to $250 or so.

You basically just give someone a tag, then they can spend/redeem/sweep whenever they are ready.

If you download the app, you can get more information on our security assumptions, and the goals of the product that isn't included in the readme on the GitHub.

Alternatively, those pages are also available here:

About text: https://github.com/justh0dl/DNA-uCash/blob/main/app/src/main/java/com/dnaucash/app/AboutText.kt
how coins work: https://github.com/justh0dl/DNA-uCash/blob/main/app/src/main/java/com/dnaucash/app/HowCoinsWorkText.kt
security assumptions: https://github.com/justh0dl/DNA-uCash/blob/main/app/src/main/java/com/dnaucash/app/SecurityText.kt
Minting guide: https://github.com/justh0dl/DNA-uCash/blob/main/app/src/main/java/com/dnaucash/app/MintingGuideText.kt

I would really love to hear feedback from real bitcoiners. I spent a couple of weeks coding everything up to get a "minimum viable product" up. If the idea takes off and is embraced by the community, we can definitely make the system more robust and add federation or node like features that minimize some of the trade offs from using the tag, prevent duplicate coins, add cashu support, etc.

If you're curious and want to learn more, feel free to ask away or pop the GitHub link into your favorite LLM and it should give you pretty accurate responses on the design and trade offs made.

App installed and have some DNA NTAG 424's on the way. I really like the idea of the ability to make the laundry tokens and/or cards look cool as shit. Printing or stickers either way. Like the Zues bills I've seen them posting about. The physical art is a cool dynamic.

reply

Thank you so much! Would absolutely love your feedback on the minting process once you get them in! I've been really the only person to test them as I don't have many "Bitcoin friends" IRL who are savvy enough to really care about this stuff. it would be cool to get feedback on how the experience was for you and if there are UX improvements I can roll out to make it easier. I'd recommend using the electrum wallet android app when minting as it easily gives the private key & the corresponding address.

Regarding the art on the tokens, I thought that was another cool bonus as well. I already had a photo printer & a cheap die cutter at home with sticker paper so these were easy to make for me but making a small run of stickers is also pretty cheap. I literally just colored the tokens with a black sharpie then pasted the sticker on to give it the all black look.

While coding everything up, I had a vision that people would make small "community mints" of sorts. One of the features of the NTAG 424's is that they basically have "immutable" serial numbers that are extremely hard to copy & produce unique results per tap that only the original tag can produce, kind of like a zkproof. So unless you're like a state actor or have extremely advanced lab equipment, it's basically impractical to exploit especially for a $1-$250 tag.

The tags also have server-database authentication/communication features so you can easily build an authentication system on top of the base app. Only reason I haven't coded that up is because the initial idea was to make "sneaker net coins" - ie, offline coins. (The app doesn't need Internet to work, just needs Internet to display the balance of the token)

I am also a bit more "privacy minded" and feel somewhat hesitant to basically implement a "coin tracking" system of sorts 😅. But if people like the idea it would be cool to have some sort of node or federation software that detects duplicates and stuff like that. (Would obviously require an internet connection though)

reply

Any thoughts on https://offline.cash/ based on your foray into this physical realm of bitcoin bearer items?

Is there a way I can directly correspond with you once I get the materials and can play around? Nostr?

reply

The offline cash stuff looks pretty cool, I wonder if they're using the same NFC tags or something different. It does seem pretty complicated though with the multisig stuff

My x handle is @justh0dl and is probably the most reliable way for a quick chat.

I do have nostr but I barely check it. If you'd like email works as well: j@10msats.net

reply

Looks like they are using a proprietary secure element and a closed source required app. Pretty cool though. Lots of reasons and uses for physical Bitcoin. Really interested in your project!

reply
4 sats \ 1 reply \ @OT 3 Jun

Would you put $1 worth of sats onchain? Or you just pass it on forever?

reply

I've minted even less lol. With the sub 1 sat v/B transactions, these actually make more sense now. You can even play "Bitcoin bearer token" poker with them.

reply

Cool I need a way to tip at restaurants and my barber.

But how will they withdraw the tip?

reply

They download the app.

They tap the tag to the back of their phone to see if the tag has ever been "revealed" or not. If the tag is "unrevealed" they can follow prompts to "reveal" the private key. Then they can either pop the private key into blue wallet, electrum mobile wallet or any other wallet that lets you import/sweep/spend WIF private keys.

reply

so they need to download a wallet anyways to sweep.
id much rather be there with them to download the wallet, so they dont download one of the plenty of scam applications out there.
you had that listed as a friction point in your post(downloading a wallet)

cant install so cant see if you have recommendations IN application for what are safe wallets to use, if you do please include links to the projects rather than just naming them.

People who are dealing with stuff they are inexperienced in, are way more likely to just click whatever the first application that pops up when they search in the OS app stores.

from my experience in gifting bitcoin to friends at weddings or family for graduations.

having an accompanying video to show them step by step how to move to a more long term custody solution is extremely important.

reply

Sounds like the perfect use case for AppClip.

reply

IMO one of the cool things about the "physical Bitcoin" stuff is that you don't have to sweep it.

You can just spend by giving it to someone else. Especially if it's a $1-$20 token. The important thing is having the ability to sweep.

Additionally, if your concern is what app people use to sweep, you can include your own message on the token when minting so you can just put a link to your favorite wallet or sweep guide.

I can definitely make a video on how to sweep but right now, but everything is very early stages and it's been hard enough to get regular bitcoin users to not immediately dismiss the project.

reply

having the ability to include the message is a great idea, that way you can include a wallet you know is good and a link to a video on how to sweep precisely.

reply

As I mentioned in another comment, in the future we can also probably pretty easily implement a "sweep" function within the app so users don't need to download additional software & also implement private key generation features as well. In the current build you need to bring your own private key + address key pairs.

Mainly just wanted to build a working prototype then start collecting feedback.

A part of the reason I've been hesitant on shipping any key/wallet generation features is because as stated in the readme, I'm not really "a dev". So I'd prefer to leave that part to the reputable apps. In time though, if the idea is embraced by the community then I can definitely see it being included.

reply
Then they can either pop the private key into blue wallet, electrum mobile wallet or any other wallet that lets you import/sweep/spend WIF private keys.

See that's the 'problem' (if it even is one) because if someone knows what any if that stuff is... They are already a ducking bitcoiner!

reply

If it really is "big problem" then I'm sure in a V2 of the app, we can easily code up a "sweep" function that sweeps & sends to your desired address in a click or two.

For the v1, I just wanted to make a "minimum viable product" and get the conversation going, get feedback from bitcoiners who know their way around the block.

reply

I’ll give a shot once it’s on iOS. I still use Satcards as gifts

reply

I will let you know as soon as the iOS app is ready. I will probably want to get the features like click to sweep and generate private/public key pairs implemented before I work on the port.

reply

Yeah this would be a major friction point

reply

Gifting someone as a tip a coin or card with some bitcoin in my experience... Is like gifting someone from the 18th century the components to a shortwave radio, or gifting them pieces of wiring or copper or electronics hobbyist equipment. They don't really know what to do with it

reply

That was a partial motivation of making this app. One time I gifted someone an opendime and they lost it.

While I don't recommend backing up private keys for "true bearer tokens", you technically can and have the ability to. That way if someone loses the tag you can assist them with recovery. That's also why I call it a "semi-trusted" system.

reply
One time I gifted someone an opendime and they lost it.

This is why I don't gift strangers bitcoin... Any bitcoin.

The other reason I don't have bitcoin 'tipping cards' is because I don't want to look like a weirdo / or get robbed (of what exactly?) By clueless weirdos just for saying the word bitcoin.

So weird situation all around honestly

reply

The app solves for that in a way if you'd like it to.There
are different "token modes"

One of them is called a "stealth token". So when minting, you put a password on the tag & basically make the NFC tag look like a generic NFC tag (ie a Door key tag, employee ID tag, or enter your own data/message) to any generic NFC reader apps like NFC tools.

But if you scan the tag with my app & enter the same password, you will reveal the "true identity" of the tag as a password protected Bitcoin bearer token tag.

reply

fun

reply

The elegance here is that NFC tags make the physical/digital bridge trivially cheap. At $1/tag, you could:

  1. Generate a key, fund it with a small amount
  2. Print a QR on the tag showing the address
  3. Distribute at meetups as "starter wallets"

The FOSS angle is what makes this scale. One question for @justh0dl: does the current implementation support PSBT signing so the physical tag can authorize a spend without exposing the private key? That would be the truly Casascius-equivalent security model — the value is "inside" the physical object until it's physically destroyed/revealed.

Alternatively, using LNURL-withdraw encoded on the NFC tag sidesteps the key exposure problem entirely and would work with existing wallets without any custom app.

This is an awesome project! For anyone building physical Bitcoin projects with NFC tags, utilizing NTAG424 DNA tags is a massive upgrade over generic NTAG213/215 tags.

NTAG424 DNA supports SUN (Secure Unique NDEF). It generates a new AES-128 cryptographic signature (CMAC) on every single scan, which is dynamically appended to the URL query string.

This gives you two critical security properties:

  1. Anti-Cloning: An attacker cannot simply read the NDEF data and clone the tag to another blank tag, because the signature changes on every tap.
  2. Server-side Verification: The verifying server decrypts and validates the CMAC signature to confirm the scan is fresh and authentic, without the tag ever having to reveal its root key.

If you pair NTAG424 DNA SUN with a FOSS server, you get a highly secure physical Casascius coin where the key is safely encrypted, and tap verification is completely secure against replay attacks. Very cool implementation!