Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft: Decentralized Wallet Proposal #361

Open
RobotsBuildingEducation opened this issue Dec 27, 2024 · 0 comments
Open

Draft: Decentralized Wallet Proposal #361

RobotsBuildingEducation opened this issue Dec 27, 2024 · 0 comments

Comments

@RobotsBuildingEducation

The gist

image

Implementing a private and secure Bitcoin wallet to connect multiple education technology platforms is fairly easy. The software is pretty new and open-sourced, allowing you to choose how deep you want to implement wallet functionalities.

In this case, you would create a receive-only wallet to not obstruct any user experiences or introduce excessive engineering overhead. We can discuss withdrawing Bitcoin at a later date since this is currently in a testing phase (1 satoshi per interaction on https://robotsbuildingeducation)

Demo the implementation

image

visit https://scholarshipment.web.app and select the account button on the top navbar. Press the "Switch account" button and submit the following secret key: nsec170auk3m0uwkcy5hlkk98qx646kzxyh0wf25zgtupht9rjzdwpmpqma7wlf

Doing so will enable "secret mode" which lets you access your wallet and view the amount deposited from other platforms.

No code way

  • Create an account on https://primal.net to generate a keypair for your identity
  • share your public key so I can connect my platform, but keep your private key safe
  • monitor your deposits on https://nutsack.me (an wallet testing platform)
  • wait for the Honeypot wallet later this year to have more access to transaction features like the ability to withdraw

This way you don't need to implement anything and can just connect with my platform anyway. However, for the sake of engineering expertise however:

Implementation details

This software is accomplished using nostr & cashu protocols. nostr handles identity while cashu handles transactions. Both of these protocols are neatly tied by the nostr development kit

The nostr protocol will give you a public key and a private key. Obviously, you keep the private key safe and secure for your eyes only while the public key is something that others can interface with. On my end @ ro.b.e, I would only need your public key in order to send transactions to your platform/wallet. You would need your secret key to access it.

I recommend getting your keypair at https://primal.net since it's a social platform that cares more about overall nostr interactions.

Design details

What I recommend is to create a random route like /wallet or /bank where you can input your secret key to authenticate your public key specifically. This enables "secret mode". Upon authenticating the right public key, you'll be able to render and view your wallet. If other users happen to find this route and submit their secret key, nothing will happen because you're looking for your specific keypair.

Software

There are two main hooks you'll interface with:

Here you'll notice various dependencies but interfacing with the software is relatively easy:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant