Why Private Keys will never be exportable - Garliyard/Garliyard GitHub Wiki

This is a huge discussion in the cryptocurrency community, as without the private key you don't nessasarily in all forms have "complete control" over your wallet, and have to invest trust in a service like breadbox, garlicwallet or even Garliyard.

Exporting becomes a problem.

When I started to first write this application, this was a feature I wanted to implemented. I wrote this section of code here: https://github.com/Garliyard/Garliyard/commit/80dd35ba75be060d9fb43e5bda50900b01d0fc25

The goal of this code was to decommission an address from a user's account to prevent double spending, as with an exported private key:

  • A user can make a transaction on their instance of garlicoind or garlicoin-cli
  • The same user could potentially make another transaction on the web panel which would create a "double spend"

After nullifying the association between the user's account and the address, I spotted in development that my balance became negative since this is built ontop of the daemon's sendfrom function.

Will there ever be an export function?

No, the fundamental accounting system built into the daemon is the same since bitcoin-core's release, the same in litecoin-core, and the very same in mostly every other currency.
The code has never changed and likely never will at this rate.

Why is the balance negative?

The way the accounting system works is when you make a transaction, values are coming from a numerous amount of addresses on the same server that you share with other users.

If any wallet service didn't limit your balance at 0.0000000, then you could in theory take money from other users.
In development, I did not have this safeguard in place against myself and I was able to successfully use a balance that was stored in another account.

TL;DR

Exporting is a huge problem that exposes many security problems.
Users will need to accept and invest trust in the wallet service that their funds are properly stored and handled.