CoreBitcoin 0.6.8.1

CoreBitcoin 0.6.8.1

测试已测试
语言语言 Obj-CObjective C
许可证 WTFPL
发布最后发布2016年1月

Oleg Andreev维护。



 
依赖项
OpenSSL-Universal= 1.0.1.16
ISO8601DateFormatter>= 0
 

CoreBitcoin 0.6.8.1

  • 作者:
  • Oleg Andreev

CoreBitcoin在Objective-C中实现了比特币协议,并提供了许多附加API,以创建出色的应用程序。

CoreBitcoin特意尽可能直接在Objective-C中实现,同时依赖OpenSSL的程度较低。这给了每个人学习比特币的机会,并且使得所有Mac和iOS开发者都能扩展和改进比特币协议。

注意,“Bitcoin Core”(以前称为BitcoinQT或“Satoshi 客户端”)是一个完全不同的项目。

使用CoreBitcoin的项目

功能

另见 发布说明

货币工具

  • 支持BTC,mBTC,bits的比特币货币格式化工具(BTCNumberFormatter)。
  • 货币转换器(未链接到任何交易所)支持各种计算汇率的方法(BTCCurrencyConverter)。
  • 多种价格来源和抽象接口,用于添加新的来源(支持Winkdex、CoinDesk、Coinbase、Paymium等,见BTCPriceSource)。

高级特性

  • 符合RFC6979标准的确定性ECDSA签名。
  • 脚本评估机器,用于验证单个交易(见BTCScriptMachine)。
  • 默认签名实现(见BTCBlindSignature)。
  • 椭圆曲线上的数学运算:大数、曲线点、密钥与数字及点的转换(见BTCBigNumberBTCCurvePoint)。
  • 多种密码学原语,如哈希函数和AES加密(见BTCData.h)。

项目路线图

查看所有待办事项

  • 完整支持块和区块头。
  • SPV模式和与其他节点的P2P通信。
  • 完整的区块链验证流程和存储。
  • 导入BitcoinQT、Electrum和Blockchain.info钱包。
  • 除了OpenSSL外,还支持libsecp256k1
  • 随着libconsensus的成熟和特性丰富,最终将支持libconsensus。

目标是实现与比特币相关的所有有用功能,并将它们组织在一个功能强大的库中。欢迎提交补丁。

起点

要编解码地址,请参阅BTCAddress

执行密码学操作时,请使用BTCKeyBTCBigNumberBTCCurvePointBTCKeychain实现了BIP32(分层确定性钱包)。

要获取未花费的币和广播交易,请使用以下第三方API之一:BTCBlockchainInfo(blockchain.info)或Chain-iOS(推荐)。

要完整地进行钱包工作流程,请参阅BTCTransaction+Tests.m(获取未花费输出,组合交易,签名输入,验证和广播)。

要使用多签名脚本,请参阅BTCScript+Tests.m:组合和解锁多签名输出。

所有以+Tests结尾的其他文件都值得查看,因为它们包含有用的示例代码。

使用CoreBitcoin CocoaPod(推荐)

将以下内容添加到Podfile中

pod 'CoreBitcoin', :podspec => 'https://raw.github.com/oleganza/CoreBitcoin/master/CoreBitcoin.podspec'

在终端中运行

$ pod install

包含头文件

#import <CoreBitcoin/CoreBitcoin.h>

如果您想使用类别,请包含不同的头文件

#import <CoreBitcoin/CoreBitcoin+Categories.h>

使用CoreBitcoin.framework

克隆此存储库并构建所有库

$ ./update_openssl.sh
$ ./build_libraries.sh

将iOS或OS X框架(位于binaries/iOS或binaries/OSX)复制到您的项目中。

包含头文件

#import <CoreBitcoin/CoreBitcoin.h>

此外,还有一个包含头文件的原始通用库(.a),位于binaries/include中,如果您出于某种原因需要它们。框架和二进制库已内置OpenSSL。如果您的项目中包含不同版本的OpenSSL,请考虑使用CocoaPods或CoreBitcoin的原始源代码。

悬赏

  • [完成] 0.1 BTC 用于 CocoaPod。OpenSSL 应该能够自动打包(或者作为依赖项)。[@oleganza]
  • [完成] 0.5 BTC 用于构建包含头文件以及支持 x86_64, armv7, armv7s, armv64 的 CoreBitcoin.a。OpenSSL 应该在内部打包。[@oleganza]
  • [完成] 额外 0.5 BTC 用于构建支持 x86_64, armv7, armv7s, armv64 的 CoreBitcoin.framework。OpenSSL 应该在内部打包。可以为 OS X 和 iOS 各自使用一个框架。[@oleganza]
  • 3 BTC 用于 ECIES 加密方案 [@yrashk]
  • 0.25 BTC 用于 P2P 通讯

要添加您的悬赏,在此处添加一行(或编辑现有的一行),提交一个拉取请求,并向以下地址捐款。您的捐款仅保留用于该悬赏。在支付之前,我会联系您检查实现是否可接受。

Swift

我们喜欢 Swift 并设计代码兼容 Swift。这意味着使用现代枚举、更喜欢初始化器而不是工厂方法、避免模糊的 C 语言特性等。欢迎使用 Swift 使用 CoreBitcoin,如果您有问题,请提交错误报告。

Swift非常适合在其中编写加密(由于显式可选、泛型和第一类结构体),我们愿意重写整个CoreBitcoin以及OpenSSL的相关部分。不幸的是,由于不稳定,这使得一年或两年内做这个几乎不可能。然后,在API级别上使用仅Swift的功能意味着Objective-C代码无法使用CoreBitcoin。考虑到这一点,在短期内,我们将专注于与Swift兼容的Objective-C实现。当每个人都完全转向Swift后,我们将进行全面重写。

贡献

请随意打开问题、提交拉取请求或联系我们讨论如何操作。

遵循现有代码风格,使用 4 个空格代替制表符。方法在大括号的开头换行。没有行宽限制。

电邮:[email protected]

推特:@oleganza

发布到 CocoaPods

$ pod trunk push --verbose --use-libraries

捐赠

请将您的捐款发送到这里:1CBtcGivXmHQ8ZqdPgeMfcpQNJrqTrSAcG。

所有资金仅用于悬赏。

您还可以向特定的悬赏捐赠款项。该金额将用于该悬赏并列举在上方。请联系Oleg安排。

许可

WTFPL 下发布,但 OpenSSL 除外。如果您在法律文件中没有提到 CoreBitcoin,CoreBitcoin 的任何捐助者都不会将您告上法庭。为作者提供信誉和改进库是自愿的并非常受欢迎。祝您心情愉快。