让我们逐步揭开Bitcoinj的神秘面纱。文章中涉及到的大部分内容都来自:github.com/bitcoinj/bi…
为什么学习Bitcoinj
如果有人问我,为什么想去揭开bitcoinj的什么面纱,为什么会去花费大量的时间去研究和学习bitcoinj,我想第一个原因,就是代码的规范性和可溯源性,代码的规范性对于我的理解是能够找到实现功能的根本,其实和可溯源性是差不多的意思,因为目前网络中充斥着大量的文章,各种不同的对于Bitcoin实现的方式,如何去梳理思路;如何去判断是否正确;如何去评判代码是否合规,是不是有一些隐藏的未被发现的问题;成了初学者入门的难题,对于不同的人,不同的实现方式也对维护和掌握技术提出了更高的要求,如果按照规范来做的话就会很容易解决这些问题;所以我花费了大量的时间来梳理和了解Bitcoinj;就是为了能够让大家掌握Bitcoinj,即便在实际的应用中有规可循,有源可溯;让我们从Bitcoinj实现的功能汇总开始一步一步了解Bitcoinj。学习一个技术做好的入手点便是Sample;Talk is cheap,Show me the code;所以我们也从Sample开始。
文件目录结构如下:package org.bitcoinj.examples
Bitcoinj实现功能汇总
- 1.NetworkEnum 主要记录了4种环境;
- 2.BackupToMnemonicSeed 如何根据钱包生成助记词;
- 3.DoubleSpend 双花问题;
- 4.DumpWallet 加载一个钱包文件,并打印钱包信息;
- 5.FetchBlock 下载指定block hash的区块信息,并打印出来;
- 6.FetchTransactions 下载执行的交易信息,并打印出来;
- 7.PrivateKeys 通过私钥的方式,进行转账交易;
- 8.RefreshWallet 加载一个钱包文件,并更新交易信息;
- 9.RestoreFromSeed 如何从以前生成的确定性种子恢复HD钱包;
- 10.SendRequest 从一个钱包发送交易到指定的地址;
列举完Sample中的例子---部分例子,蓦然回首,发现还是不知道这些例子到底有什么用?到底应该应用在哪里?有一种万事俱备,只欠东风的感觉,想一眼望穿秋水,却发现眼睛被眼前的一层薄雾阻挡;那么如何拨开云雾见青天?那么我们从一个交易开始梳理一下。假定开这篇文章的人,已经了解区块链相关的交易知识;如果不是很了解,请百度一下;
交易梳理
假定交易的双方为Alice和Bob,并且由Alice向Bob转账;
- 1.Alice和Bob都需要一个钱包;
- 2.钱包的信息包括私钥(private)和地址(Address);
- 3.交易需要Alice的私钥进行签名授权;
- 4.交易需要Alice向Bob进行发送;
针对以上的要求,梳理的问题如下:
- 1.如何生成钱包
- 2.如何生成私钥和地址
- 3.如何用私钥进行签名授权
- 4.如何发送交易
我想大概的逻辑我们已经梳理清楚了,我们需要从Bitcoinj的代码中找到以上4个问题的答案,那么我们就能够实现通过Bitcoinj发送交易,完成相关的学习。请等待下一篇文章。