如何在Android中使用bitcoinj(walletappkit)从助记符中创建比特币钱包

时间:2019-08-01 10:57:39

标签: java kotlin blockchain bitcoin bitcoinj

我正在从助记符创建一个钱包,对于以太坊,我已使用web3j库生成助记符,地址及其私钥,现在对于比特币,我想使用相同的生成助记符来生成比特币地址及其私钥,我正在使用Bitcoinj库,但无法获取其地址和密钥。 我也尝试了Walletappkit,但是它的生成地址没有获取助记符,因此在Walletappkit中有使用助记符的任何方式,这样我就可以获取比特币地址并同步交易的比特币链。 也可以使用任何方式使用walletappkit而不进行同步,并获取比特币详细信息,例如其余额和交易信息。

下面是我如何使用web3j和bitcoinj创建以太坊钱包及其助记键的代码。

val wallet = WalletUtils.generateBip39Wallet("", File(path))
            val mnemonics = wallet.mnemonic
            //  bitcoinj
            var seed = DeterministicSeed(wallet.mnemonic, null, "", 1409478661L)
            val chain = DeterministicKeyChain.builder().seed(seed).build()
            val keyPath = HDUtils.parsePath("M/44H/60H/0H/0/0")
            val key = chain.getKeyByPath(keyPath, true)
            val privKey = key.privKey


            // Web3j
            val credentials = Credentials.create(privKey.toString(16))
            val eth_address = credentials.address

2 个答案:

答案 0 :(得分:1)

您可以使用 bitcore.js 生成助记符。我正在共享link的npm软件包,请看看。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:padding="20dp"
android:background="@android:color/black"
android:layout_height="wrap_content">

<TextView
    android:layout_width="110dp"
    android:layout_height="130dp"
    android:id="@+id/tv"
    android:textSize="16sp"
    android:background="@android:color/holo_red_dark"
    android:textColor="@android:color/white"
    android:gravity="center"
    android:padding="40dp"/>

</LinearLayout>

答案 1 :(得分:0)

我不确定我是否正确理解您要做什么,但是如果您想从助记符种子恢复/创建一个Bitcoinj钱包,那么有一个here的官方示例:

// Here we restore our wallet from a seed with no passphrase. Also have a look at the BackupToMnemonicSeed.java example that shows how to backup a wallet by creating a mnemonic sentence.
String seedCode = "yard impulse luxury drive today throw farm pepper survey wreck glass federal";
String passphrase = "";
Long creationtime = 1409478661L;

DeterministicSeed seed = new DeterministicSeed(seedCode, null, passphrase, creationtime);

// The wallet class provides a easy fromSeed() function that loads a new wallet from a given seed.
Wallet wallet = Wallet.fromSeed(params, seed, Script.ScriptType.P2PKH);
相关问题