CoreBitcoin implements Bitcoin protocol in Objective-C and provides many additional APIs to make great apps.
CoreBitcoin deliberately implements as much as possible directly in Objective-C with limited dependency on OpenSSL. This gives everyone an opportunity to learn Bitcoin on a clean codebase and enables all Mac and iOS developers to extend and improve Bitcoin protocol.
Do not confuse this with "Bitcoin Core" (previously known as BitcoinQT or "Satoshi client") — the CoreBitcoin is stylized after Apple frameworks (like CoreAnimation and CoreFoundation), and was named this way in 2013, while Bitcoin-QT was renamed into Bitcoin Core in 2014.
See also Release Notes.
See all todo items.
The goal is to implement everything useful related to Bitcoin and organize it nicely in a single powerful library. Pull requests are welcome.
To encode/decode addresses see BTCAddress.
To perform cryptographic operations, use BTCKey, BTCBigNumber and BTCCurvePoint. BTCKeychain implements BIP32 (hierarchical deterministic wallet).
To fetch unspent coins and broadcast transactions use one of the 3rd party APIs: BTCBlockchainInfo (blockchain.info) or Chain-iOS (recommended).
For full wallet workflow see BTCTransaction+Tests.m (fetch unspent outputs, compose a transaction, sign inputs, verify and broadcast).
For multisignature scripts usage see BTCScript+Tests.m: compose and unlock multisig output.
All other files with +Tests
in their name are worth checking out as they contain useful sample code.
Add this to your Podfile:
pod 'CoreBitcoin', :podspec => 'https://raw.github.com/oleganza/CoreBitcoin/master/CoreBitcoin.podspec'
Run in Terminal:
$ pod install
Include headers:
#import <CoreBitcoin/CoreBitcoin.h>
If you'd like to use categories, include different header:
#import <CoreBitcoin/CoreBitcoin+Categories.h>
Clone this repository and build all libraries:
$ ./update_openssl.sh
$ ./build_libraries.sh
Copy iOS or OS X framework located in binaries/iOS or binaries/OSX to your project.
Include headers:
#import <CoreBitcoin/CoreBitcoin.h>
There are also raw universal libraries (.a) with headers located in binaries/include, if you happen to need them for some reason. Frameworks and binary libraries have OpenSSL built-in. If you have different version of OpenSSL in your project, consider using CocoaPods or raw sources of CoreBitcoin.
We love Swift and design the code to be compatible with Swift. That means using modern enums, favoring initializers over factory methods, avoiding obscure C features etc. You are welcome to try using CoreBitcoin from Swift, please file bugs if you have problems.
Swift is awesome to write crypto in it (due to explicit optionals, generics and first-class structs) and we would love to rewrite the entire CoreBitcoin and even relevant portions of OpenSSL in it. Unfortunately, for a year or two it's just out of the question due to instability. And then, using Swift-only features on the API level would mean that Objective-C code wouldn't be able to use CoreBitcoin. Given that, in the medium term we will focus solely on Objective-C implementation compatible with Swift. When everyone jumps exclusively on Swift, we'll make a complete rewrite.
Feel free to open issues, drop us pull requests or contact us to discuss how to do things.
Follow existing code style and use 4 spaces instead of tabs. Methods have opening braces on a new line. There's no line width limit.
Email: oleganza@gmail.com
Twitter: @oleganza
To publish on CocoaPods:
$ pod trunk push --verbose --use-libraries
Released under WTFPL (except for OpenSSL). Have a nice day.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。