【问题标题】:Web3J - Creation of Light Wallet takes too longWeb3J - 创建轻钱包的时间太长
【发布时间】:2018-08-08 13:57:19
【问题描述】:

我正在我的 Android 应用程序中创建钱包,使用库 Web3j:https://web3j.io/

查看代码:

String seed = UUID.randomUUID().toString();
ECKeyPair exKey = Keys.createEcKeyPair();

WalletFile wallet = Wallet.createLight(seed,exKey);

它正在正确创建钱包,问题是这个过程需要很长时间,大约 10 分钟。

我是不是做错了什么?

还有其他方法可以让它更快吗?

【问题讨论】:

    标签: android blockchain ethereum web3-java


    【解决方案1】:

    你应该这样创建一个钱包:

    try {
        ECKeyPair ecKeyPair = Keys.createEcKeyPair();
        BigInteger privateKeyInDec = ecKeyPair.getPrivateKey();
        String sPrivatekeyInHex = privateKeyInDec.toString(16);
    
        WalletFile aWallet = Wallet.createLight(UUID.randomUUID().toString(), ecKeyPair);
        String sAddress = aWallet.getAddress();
    } catch (CipherException e | InvalidAlgorithmParameterException e | NoSuchAlgorithmException e | NoSuchProviderException e) {
        //
    }
    

    【讨论】:

    • 有什么区别?在 Wallet.createLight 方法中,我们传递了相同的参数。
    • 不同之处在于,你正在创建一个轻钱包,而另一个你不是。
    • 对不起,我可能遗漏了什么,这是您创建钱包的行:WalletFile aWallet = Wallet.createLight(UUID.randomUUID().toString(), ecKeyPair);这是我的 WalletFile wallet = Wallet.createLight(seed,exKey);其中种子是 UUID.randomUUID().toString() 并且 exKey 与 exKeyPair 相同
    • 对不起,你是对的。我两分钟前就醒了。不同之处在于我的是一个 try catch 方法,所以如果有错误它会捕获。
    • 尝试将createLight更改为createStandard
    【解决方案2】:

    为了生成钱包我改变了方法:

    WalletFile wallet = Wallet.createLight(String seed, ECKeyPair exKey);
    

    对于以下方法:

    WalletFile wallet = Wallet.create(String seed,ECKeyPair exKey, int n, int p);
    

    这比 createLight 快得多(之前是 10 分钟,现在是几秒)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-20
      • 2017-10-30
      • 2021-04-06
      • 2022-11-11
      • 2018-02-10
      • 2018-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多