Gocoin bitcoin software
An open-source Bitcoin solution written in Go language (golang). It can be built for every platform that has a working Go compiler. It uses a proprietary license, though is free to use for non-commercial purposes.
Gocoin has a several unique features, that distinguish it from the original bitcoin client.
Node / Client
- All the unspent outputs are kept in memory, which makes switching between different wallets, as well as checking a balance of any address, relatively fast (few seconds max).
- Allows a user to limit the upload and download network bandwidth used by the client.
- Can be monitored and controlled through a web interface (from a web browser).
- Works with its own implementation of a cold storage wallet.
- For security reasons, it is supposed to be used with a PC that has never been (and will never be) connected to a network.
- The wallet is deterministic and a seed-password based. As long as you can remember the password, there is no need for any backups.
- Additionally it can import private keys from an existing bitcoin wallet (that comes in the base58 format).
- Has very low hardware requirements. Can be run on i.e. Raspberry Pi
- Can generate Type-2 deterministic keys/addresses
- Supports signing of P2SH multisig transactions.
It is possible to use Gocoin's wallet, without a need to have a running client node.
The client node requires 64-bit platform and at least 4GB of system memory. It also requires a file system that can handle files larger than 4GB.
- No GUI, though the online node has web interface
- No RPC API
- No IPv6
- No UPnP
Gocoin was written by a single person for a private purposes.
The software's first public release was announced in May 2013 on Bitcointalk forum. Ever since then, the software has been actively maintained and further developed, being armed with new features, further optimized and cleaned up from issues.
It happened twice that the client wasn't able to catch up with the block chain, because of the implementation difference of the chain parsing protocol that was causing it to reject a block (transaction) that the reference implementation would accept. In both cases the issue was fixed within single days. The fist case happened in July 2013 and the fix was introduced in version 0.5.7. The second time was in March 2014 - the fix came with release 0.9.3.