Fonta1n3 / FullyNoded

Self sovereign, secure, powerful, easy to use wallet that utilizes your own node as a backend. Powered by PSBT's and descriptors. Acts as an offline signer using your node as a watch-only wallet. C-Lightning compatible for instant, unfairly cheap payments.
https://fullynoded.app
Other
192 stars 37 forks source link

nostrnode and join market rework #240

Closed Fonta1n3 closed 1 year ago

Fonta1n3 commented 1 year ago

This pr is a major update to nostr functionality and join market wallet usage.

⚠️ Major changes were made, this pr is a WIP/beta!

A rework of how FN interacts with JM was necessary, user should keep in mind the jm api is only designed to work with one jm wallet at a time, so please only work with one jm wallet. Working with multiple wallets works fine but jm wallets use the same bitcoin core wallet for all jmdat files, the balance and transaction history will be there for all jm history.

Nostr now works with: Fully Noded <-> nostrnode <-> Bitcoin Core previously: Fully Noded iPhone <-> Fully Noded Desktop <-> Bitcoin Core

Previously FN would import a duplicate of the jm wallet so that users would get the full FN feature set in a jm wallet including the ability to backup and recover. However it is bad practice to duplicate wallets that watch similiar addresses, it can lead to weird behavior like transactions not showing up in your history. FN now creates a shadow wallet instead and utilizes the join market rpc wallet as per the join market config exclusively. All spend/receive functionality in a join market wallet will occur via the join market api not bitcoin core directly. This means you will not see the transaction verifier. This is an improvement as it simplifies the app, makes it lighter and less likely to produce a bug while improving functionality.

Proper recovery of your jm wallet should be done on jm! You should only use fn as a medium to an existing jm wallet, do not rely on fn to recover jm wallets for you. The reasons for this are: jm fidelity addresses are only spendable by jm and the jm api does not allow for wallet recovery, only the ability to unlock an existing wallet or create a new one.

Users will always be prompted to choose a mixdepth from 0 to 4 to either spend from or receive to when using a jm wallet, if no jm node is active it will fail.

When viewing the jm utxos we use the jm api to fetch those utxos for that specific jm wallet, not the rpc wallet.

We no longer keep utxo labels, we use address labeling by bitcoin core and our own labels/memos for transaction ids, you can use the tx memo/label for utxos.

The gap limit is now 100, we only return 100 transactions/utxos at most.

Esplora is gone, fetching historic fiat is removed, icloud is gone.

Only show onchain balance if no offchain node is active.

getaddressinfo is now called when a recipient address is derived from a wallet, the solvable and path values are visible if sending to the same wallet.