Pages:
Author

Topic: [ANNOUNCE] picocoin and libccoin -- C-based bitcoin library and client - page 7. (Read 30592 times)

legendary
Activity: 1596
Merit: 1091
Jeff, I have one comment that has value only very early in the design of your architecture. Since you've made a choice of C as a implementation language I suggest that you add one more target to the list of supported platforms: standalone a.k.a. bare metal.

Yes, embedded usage is another target.

Each module in libccoin is carefully designed to minimize internal dependencies.  The core data structures, address generation, script execution and transaction validation are wholly independent of any filesystem or network design.

These modules may be used on a non-POSIX flash filesystem, with zero network support, today.

picocoin (the client) requires certain network, filesystem and process features, but libccoin (the library) does not.  This is by design.

legendary
Activity: 2128
Merit: 1068
  • Very low resource usage (cpu, disk, and memory)
  • Small codebase (both source code and compiled object)
  • Multi-platform: Linux supported currently.  Should work on OSX/BSD/Windows with minimal modifications.
Comments are welcome.
Jeff, I have one comment that has value only very early in the design of your architecture. Since you've made a choice of C as a implementation language I suggest that you add one more target to the list of supported platforms: standalone a.k.a. bare metal.

It will be nearly impossible to convert your code later unless you very early make a commitment to supporting the event-driven programming like using lwIP-style network interface in addition to socket-style networking.

The same architectural choice needs to be made early to accomodate various lightweight flash-storage access methods instead of Unix-style open/lseek/read/write/close. Same for fork/wait/pthreads versus any RTOS-style explicit synchronization primitives.

One possible advantage of such choices would be that instead of relying purely on donations you may be able to obtain funds via cooperation with future manufacturers of the future Bitcoin devices that will greatly benefit from the "very low resource usage".
legendary
Activity: 1596
Merit: 1091
legendary
Activity: 3920
Merit: 2349
Eadem mutata resurgo
Nice work, thanks. This should be useful.

Edit: did you use anything from cbitcoin https://github.com/MatthewLM/cbitcoin ?
legendary
Activity: 1596
Merit: 1091
Reserved for FAQ etc.
legendary
Activity: 1596
Merit: 1091
Source code URL:  https://github.com/jgarzik/picocoin/

I'd like to announce another bitcoin implementation, which is really two useful pieces in one:

     libccoin - a bitcoin library, written in C
     picocoin - A lightweight, C-based SPV bitcoin wallet client

libccoin supports all key network datastructures (block, transaction, etc.), script parsing and validation, transaction and block validation, a "headers-only" or full block database, and many other features essential to any bitcoin client.  libccoin passes all key encoding, script and transaction tests available in the Satoshi reference bitcoin client.

picocoin is much more under construction.  When complete, it will be a very low resource, command line / JSON-driven bitcoin wallet.  Advanced security features already implemented include required wallet encryption, fork-based process separation of P2P networking and wallet (and chroot/SELinux jailing coming soon), something that the reference Satoshi client does not even support.

Status:  Alpha quality, developer release.  Passes reference client base58/script/transaction tests, but is still a developer-only preview.

Feature list:
  • Liberal Mit/X11 free software license
  • A full-feature bitcoin support library.  The library will not be limited to "what picocoin needs."
  • Supports all core data structures and network messages
  • Full script implementation
  • Passes hundreds of available reference client tests
  • Supports multiple block chains: main or testnet3
  • Very low resource usage (cpu, disk, and memory)
  • Small codebase (both source code and compiled object)
  • Fast.  Loads all block headers in under 2 seconds.
  • Supports advanced thin-client features such as bloom filtering, an upcoming proposal that will reduce client bandwidth usage.
  • Works on big endian machines, as well as little endian machines
  • Multi-platform: Linux, Mac OSX, BSD are working.  Windows support in progress.
  • Library works on Windows.  picocoin will work on Windows with some modifications, but be a bit less secure than other platforms due to lack of fork.
  • Improved security:  fork-based process separation firewall between networking and wallet code -- your wallet is never directly exposed to the network.
  • Follows the philosophy of "do, not hype."  This library is already far more secure and capable than other libraries hyped as the "future of bitcoin" by their authors.

Code contributions are welcome (see github URL above).
Comments are welcome.
Donations are welcome too (see signature).

Pages:
Jump to: