BCCAPI简介
BCCAPI(BitCoin客户端API),允许你创建一个轻量级安全的JavaBitcoin客户端发送和接收Bitcoins 。BCCAPI连接到服务器保存块链,并跟踪客户的代表客户的钱包余额 。服务器的公共密钥在网络上,并没有详细的位置定义,使用客户钱包里的自有资金 。更多的信息,什么是BCCAPI维基 。
是什么BCCAPI?
简而言之BCCAPI(位投币客户端API),允许您创建一个轻量级的Java安全Bitcoin客户端。BCCAPI连接到服务器保存块链,并跟踪客户的钱包余额。服务器的公共密钥的客户知识,并没有位置,花客户的钱包自有资金。
基于BCCAPI为客户的特点:
- 安全
- 只有客户持有的钱包的私钥。
- 服务器仅持有相应的公共密钥,并可以不花从钱包里的资金。
- 管理私钥取决于客户端上执行。BCCAPI提供一个开源的Java库,它提供客户端:
- 确定性源于强烈的种子中的所有键的功能。这样就减少了,客户端需要处理32字节的敏感数据量。
- 功能产生强烈的种子,从任意长度的口令和盐 。种子产生scrypt几轮keystretching。Scrypt是旨在对硬件蛮力攻击比替代功能,如PBKDF2或bcrypt安全得多 。(http://www.tarsnap.com/scrypt/scrypt.pdf)这个过程需要相当数量的小型设备上的时间,但可能是一个一次性的过程,客户端初始化的一部分。
- 种子使用任意长度的密码进行加密的功能。如果有人获得一个复制的加密种子,他们将不得不暴力破解盗窃被发现之前,资金外流。
- SimpleClient客户端,使用这些函数来实现一个功能齐全,安全,重量轻Bitcoin客户端是一个开放源码的例子。其他客户可以选择使用随机生成的种子,而种子比从口令生成,并结合备份种子的一种手段。这是完全由客户端。
- 所有的客户端 - 服务器通信使用HTTPS保护。
- 登录
- 客户端有一个可确定性就像钱包私钥派生的私人帐户的关键。当登录到服务器的客户端呈现其公共帐户的关键,并获得一个随机的挑战。客户端哈希的挑战和标志使用其私人帐户的关键。签署的挑战是返回到服务器,以及与公众的帐户关键。在第一次登录,创建一个新的帐户,这是与客户端的公共帐户的关键相关联的。唯一需要创建一个帐户是一个公开密钥,并使用相应的私钥对随机挑战的能力,使签名。没有其他的个人信息或电子邮件地址。
- 发送硬币
- 当发送硬币用于下列过程:
- 客户端请求从服务器的Bitcoins数量的发送硬币表格和接收地址。
- 服务器收集来自客户的钱包未动用交易资金,并建立一个无符号的交易的任何更改发送回客户端的地址之一。连同任何交易的交易资金,它是在发送硬币的形式发送到客户端插入输出。
- 客户端验证,资金的输入,输出资金,并接收匹配什么要求。
- 客户端的迹象交易,并把它发送到服务器。
- 服务器验证签名和交易bitcoin网络广播。
- 备份
- 如果口令+盐的方法是用来生成种子有没有需要备份客户端上的任何东西。如果加密的种子文件丢失,可以重新从初始口令和盐在不同的设备。
- 如果一个随机生成的种子是用确定性的密钥生成,只有32字节的种子需要得到一劳永逸备份。种子可以选择在离开客户端加密。
BCCAPI提供上述所有记录以及容易阅读的源代码,是一个完美的比赛,如果你想要写一个重量轻安全的Andriod应用程序发送和接收Bitcoins。
在服务器端
BCCAPI服务器运行在Rackspace,并能处理许多同时发生的帐户。每个帐户的服务器拥有一个公共密钥,这是与所有的公共密钥添加到该帐户的钱包。服务器连接到Bitcoin网络,并不断跟踪块链,和所有簿记必须保持最新的钱包。
常见问题
- 问:服务器有我的钱包呢?
- 答:BCCAPI基本上分成两个你的钱包。
- 一个公共的一部分,这是在服务器端,它允许服务器保持跟踪你的钱包的交易输入和输出。为此,它需要知道你的钱包的公钥。
- 一个私人的一部分,这是在客户端上。客户端部分是一个私钥的控制,它允许你签订交易和花bitcoins。
- 问:能否在服务器花我bitcoins吗?
- 答:服务器是在没有签署与你的钱包关联交易。
- 问:服务器可以做什么邪恶?
- 答:虽然服务器可以不花你的bitcoins,有一些邪恶的服务器可以做:
- 服务器可以躺在钱包平衡,让你相信这是高于或低于它到底是什么。
- 服务器可以使你认为你已经派出一些bitcoins,而它只是没有提出的交易网络。
- 服务器可以尝试让你签署一项交易,输入是已经花。在这种情况下的交易将是无效的和网络的拒绝。你不会失去任何bitcoins。
- 服务器可以尝试让你签署一项交易,将钱别人比你要求。客户端总是验证,交易签约前预期的收件人,所以在这种情况下,客户端将拒绝交易。
- 服务器可以离线,再也不会回来。
在所有上述情况下,你会不高兴,想撤离所有bitcoins到别的地方。由于服务器没有对你bitcoins的控制,这是没有问题的。所有的私钥确定性产生从你的密码和盐。您只需运行一个工具,可生成一个普通bitcoin客户端wallet.dat文件。
- 问:我在哪里可以得到这个工具?
- 答:它的bccapi.jar一部分。寻找com.bccapi.tool.WalletExporter.java,它打印出所有在纯文本的私钥。接下来的事情就是导入到一个wallet.dat文件。这可以使用pywallet。简单易用的工具,是正在进行中 。
- 问:上的地址,我可以使用的数量是否有限制?
- 答:现在你可以同一个帐户关联的地址数限制为10。这是限制在服务器端的压力。
- 问:这对我的服务成本是什么?
- 答:没有。运行和维护的服务器端不费钱,但希望捐款可以从打桩法案。展望未来,我们可能会增加选择连接到一个优先级的服务器,它提供了更快捷的服务支付一小笔费用。
尝试与SimpleClient BCCAPI
SimpleClient是一个基于文本的bitcoin客户端的BCCAPI上实现。这是写在Java和开源。您找到SimpleClient BCCAPI源(com.bccapi.example.SimpleClient.java)内的一个例子。
SimpleClient使用一个确定的钱包的做法,所有键都产生一个口令和盐,这两者都进入了首次推出的客户端是基于。创建一个种子文件,这是在当前工作目录中,从口令和盐,这是使用密码加密。每当SimpleClient推出,它会问该密码,解密的种子,并生成需要的键。
SimpleClient只是许多可能的Bitcoin客户,你就可以建造BCCAPI顶部之一。然而,它功能齐全,安全,leightweight,和一个很好的起点,如果你想使自己的客户。
自己建设的一切
所需软件:颠覆的JDK,ANT。
- 获取代码:SVN检出http://bccapi.googlecode.com/svn/trunk/ bccapi
- 编译的jar:CD bccapi&蚂蚁清洁bccapi - JAR
- jar文件就设在这里:bccapi /构建/ JAR / bccapi.jar
使用预构建的JAR
软件需要JRE或JDK
- 下载bccapi.jar
Bitcoin测试网络测试
这是使用测试bitcoins有没有真正的价值。对于testnet SimpleClient需要能够沟通,互联网的使用目的端口444(HTTPS端口1)。
- 从这样的命令行运行:Java的JAR bccapi.jar testnet
- 按照说明
- 使用选项3,看到你的bitcoin地址。
- Bitcoin Testnet Fauchet和一些硬币转移到您的地址之一。
- 按照屏幕上的交易Testnet座浏览器 。请注意,测试网可能生成块是在没有长期。如果这是一个问题,请使用如下所述的封闭testnet。
- 一旦蜱使用SimlpeClient查询余额
禁区BCCAPI Bitcoin测试网络测试
由于官方Bitcoin testnet矿工人数变化很多,有可能是长时间没有生成块。显然,这可能是一个问题,测试时,您的Bitcoin客户端。为缓解此,我们提供了一个采矿权的不断,一个小的封闭测试网络。Bitcoins这个网络上不能使用官方Bitcoin testnet。要访问的封闭testnet SimpleClient需要能够传达给互联网的使用目的端口445(HTTPS端口2)。
- 从这样的命令行运行:Java的JAR bccapi.jar closedtestnet
- 按照说明
- 使用选项3,看到你的Bitcoin地址。
Bitcoin地址发送一些测试硬币推出的另一个文件夹中!Simpleclient和使用“ASD”作为你的密码和种子。这会给你访问测试Bitcoins与社区共享的钱包。请不要空共享的钱包,别人可能会想一些。如果它是空的给我发电子邮件(jan.moller @ gmail.com),我会填满它。
Bitcoin生产网络测试
这是使用真正的价值与生产bitcoins。
- 从这样的命令行运行:Java的JAR bccapi.jar prodnet
- 按照说明
- 使用选项3,看到你的bitcoin地址。
- 将一些bitcoins使用官方bitcoin客户端所列出的地址之一。是的,你需要有一些真正的Bitcoins做到这一点。
- 按照屏幕上的交易座资源管理器。
- 一旦蜱使用SimlpeClient查询余额
问题或意见
请给我一张字条:jan.moller @ gmail.com |