Electrum Bitcoin Wallet

Bitcoin wallet source code

Bitcoin Wallet / September 18, 2018

Based on your ignorance of where to begin, I would strongly encourage you to use one of the existing wallets rather than trying to reinvent the wheel. That said, if you're just using this as an exercise to learn the code, poking around in the code can be a great way to learn. So here's what I can tell you about the wallets.

1) Bitcoin Armory is the most full featured wallet, in my opinion, at the cost of using the most resources from your computer. It's the one I use so I know the most about it out of all the wallets. It used to load the blockchain into memory, but as the blockchain grew rapidly, that approach made Armory so RAM intensive that it was essentially unusable for everyone but those with a LOT of RAM. If you want to use that old version, I'd recommend 8 GB+ RAM, the more you have, the better it'll run especially over the long haul since the blockchain is only going to get bigger.

The core developer of Armory, Alan, realized this approach was unsustainable for the majority of Armory users so he redesigned it so that it now makes a copy of the blockchain and uses that instead of loading the entire blockchain. The catch is, of course, that this means that using Armory as a full client means using 2X the size of the blockchain. At present day, the blockchain uses up 22.6 GB according to my computer, so double that for the amount of space on your hard drive Armory needs. It's a resource hog either way, but the tradeoff he made makes sense in my opinion since hard drive space is generally a lot more plentiful than RAM, and acquiring more if need be is also a lot cheaper.

Armory is written in python. I haven't looked at the code, but Alan has said on the bitcointalk forums that it's very well documented. It has some very useful features including: a deterministic wallet, meaning that one backup will last you forever, regardless of how many addresses you use; cold storage that's easy to use, which is for most people the biggest benefit of Armory; and for web developers, there is an Armory Daemon that you can run on your website to accept bitcoin payments. Unfortunately, it is no less resource intensive than the desktop version, and thus impractical unless you have essentially unlimited space on your web host.

2) Electrum is a lightweight bitcoin wallet that is also written in python. Unlike with Armory, Electrum stores the full blockchain on servers that you access via the client / server model. This means that Electrum uses no where near the amount of resources of Armory, it only requires that you host your wallet on your computer. Electrum also supports cold storage and wallets can be recovered using a seed, meaning that you do not need to perform regular backups, you just need to ensure that you never lose / forget that seed.

3) Multibit is also a lightweight wallet that is written in Java. It also operates on the client / server model like Electrum does. According to Multibit's FAQ, the portion of the blockchain that a user has to store is only about 25 MB, in other words, only containing your own transactions. If you're not familar with how Bitcoin works in general, I would encourage you to check out Multibit's FAQ as it explains not just Multibit but how Bitcoin in general works. Multibit's website does not advertise a deterministic wallet feature like Armory and Electrum do, so it may require regular backups like the original bitcoin wallet.

4) Hivewallet is also a lightweight wallet that is written in Java. Like Armory and Electrum, it is also deterministic. According to its website, all you have to do is backup the password and you're set. Hivewallet runs on OSX and Android Operating Systems.

Source: bitcoin.stackexchange.com
Warning:
Text: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.
File: /home/nex99/domains/bitcoin-and-blockchain.education/code/utils.php
Line: 482

Warning:
Text: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.
File: /home/nex99/domains/bitcoin-and-blockchain.education/code/utils.php
Line: 482