A low-level bitcoin library written in standard C.
cbitcoin is a bitcoin library written in standard C99 and is licensed under the GPLv3 with additional permissions. It is currently in development stage and should only be used experimentally. The purpose of the library is to make it easier for developers to create bitcoin applications and the library should be versatile enough to be used in many bitcoin projects.
The features include:
If you wish to contact the project leader, Matthew Mitchell, about this project please email [email protected]
To build, type into your terminal:
./configure
make
If you wish to test the library then type:
make test
You can install individual tests such as make bin/testCBAccounter
.
The configure script has the following additonal options:
--disable-ec
cbitcoin produces two libraries, one for ordinary file IO and another for file IO with error correction. Both are built, but using this option means that the tests (except for testCBFile and testCBHamming72) and the cbitcoin client are linked without EC.--enable-debug
for debug builds, using -g
instead of -O3
.--disable-werror
disables the -Werror flag.--disable-stack-protector
disables stack protection in the form of -fstack-protector-strong
or -fstack-protector-all
if strong is not available.You can also change CFLAGS, LFLAGS and CC before running ./configure to make changes to how cbitcoin is built.
The library will be built into a ./bin directory.
If you are able to get it to work for other systems then please submit the changes. If you think you have found a debug, then you may wish to submit an issue on the gitbub repository page (https://github.com/MatthewLM/cbitcoin/). Otherwise you may wish to try to fix the problem yourself, in which case please submit fixes. You should check to see that the issue is not being worked upon already.
If you wish to support this project you can donate via the following methods:
Bitcoin: 1D5A1q5d192j5gYuWiP3CSE5fcaaZxe6E9
Charitycoin: CSU54ZAa4VuhiVwzgyAudePmn7eJigkKU5
Paypal: Click here to donate
The following list is for all people that have contributed work that has been accepted into cbitcoin. Please consider making your own contribution to be added to the list.
Matthew Mitchell [email protected] - 1D5A1q5d192j5gYuWiP3CSE5fcaaZxe6E9
Christian von Roques
Andrew Miller [email protected]
linuxdoctor - 1KB3RsW8H7TFV9awpt6MiXsjDqLD15oax3
If you wish to contibute feedback please email Matthew Mitchell at [email protected].
If you wish to contribute code:
Easy! Please email Matthew Mitchell ([email protected]) if you have any queries.
cbitcoin should contain the following header for each file:
//
// CBFileName
// cbitcoin
//
// Created by Full Name on DD/MM/YYYY.
// Copyright (c) 2012 Matthew Mitchell
//
// This file is part of cbitcoin.
//
// cbitcoin is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// cbitcoin is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with cbitcoin. If not, see <http://www.gnu.org/licenses/>.
//
// Additional Permissions under GNU GPL version 3 section 7
//
// Notwithstanding the terms of the license, when you distribute
// a covered work in non-source form, you are not required to provide
// source code corresponding to the covered work.
//
// If you modify this Program, or any covered work, by linking or
// combining it with OpenSSL (or a modified version of that library),
// containing parts covered by the terms of the OpenSSL License, the
// licensors of this Program grant you additional permission to convey
// the resulting work.
Header files should contain information for documentation. cbitcoin uses a Doxygen syntax (See http://www.stack.nl/~dimitri/doxygen/manual.html). Please document all files as well as structures and functions that are exposed by the library. Brief descriptions should be included. Details can be added at a later date, especially once code has been properly implemented. Files should be documented like this:
/**
@file
@brief Brief description of file.
@details More in depth description of file.
*/
Structures should be documented like this:
/**
@brief Brief decription of structure.
*/
typedef struct {
int someInt; /**< Description of data field. */
} CBSomeStruct;
Functions should be documented like this:
/**
@brief Brief decription of function.
@param someParam Brief decription of the function parameter.
@returns What the function returns.
*/
int CBSomeFunc(int someParam);
It may be that other elements are documented and should be documented in a similar fashion and please leave helpful comments in the source code. Type “???” if you wish to provide any details that should be brought forward to other contributors.