FlutterBIP39助记词生成插件bip39_dart的使用

FlutterBIP39助记词生成插件bip39_dart的使用

BIP39

Dart实现的Bitcoin BIP39: 用于生成确定性密钥的助记词代码

来源于bitcoinjs/bip39

开发者注意事项

请记住允许从具有无效校验和(或你没有词汇表)的助记词短语恢复。

当校验和无效时,警告用户该短语不是由你的应用程序生成的,并询问他们是否愿意继续使用它。这样,你的应用只需要保存支持的语言的词汇表,但你可以恢复其他应用在其他语言中生成的短语。

然而,应该有其他检查措施,例如确保用户输入的是用空格分隔的12个或更多单词。

示例

示例代码

// 生成一个随机的助记词(底层使用crypto.randomBytes),默认为128位熵
var mnemonic = bip39_dart.generateMnemonic();
// => 'seed sock milk update focus rotate barely fade car face mechanic mercy'

// 将助记词转换为十六进制字符串形式的种子
bip39_dart.mnemonicToSeedHex('basket actual');
// => '5cf2d4a8b0355e90295bdfc565a022a409af063d5365bb57bf74d9528f494bfa4400f53d8349b80fdae44082d7f9541e1dba2b003bcfec9d0d53781ca676651f'

// 将助记词转换为Uint8List形式的种子
bip39_dart.mnemonicToSeed('basket actual');
// => Uint8List [92, 242, 212, 168, 176, 53, 94, 144, 41, 91, 223, 197, 101, 160, 34, 164, 9, 175, 6, 61, 83, 101, 187, 87, 191, 116, 217, 82, 143, 73, 75, 250, 68, 0, 245, 61, 131, 73, 184, 15, 218, 228, 64, 130, 215, 249, 84, 30, 29, 186, 43, 0, 59, 207, 236, 157, 13, 83, 120, 28, 166, 118, 101, 31]

// 验证助记词是否有效
bip39_dart.validateMnemonic(mnemonic);
// => true

// 验证助记词是否有效
bip39_dart.validateMnemonic('basket actual');
// => false

完整示例

import 'package:bip39_dart/bip39_dart.dart' as bip39;

void main() async {
  // 只支持BIP39英语词汇表
  // 使用HEX字符串表示熵
  String randomMnemonic = await bip39_dart.generateMnemonic();

  // 将助记词转换为十六进制字符串形式的种子
  String seed = bip39_dart.mnemonicToSeedHex(
      "update elbow source spin squeeze horror world become oak assist bomb nuclear"
  );
  // => '77e6a9b1236d6b53eaa64e2727b5808a55ce09eb899e1938ed55ef5d4f8153170a2c8f4674eb94ce58be7b75922e48e6e56582d806253bd3d72f4b3d896738a4'

  // 将熵转换为助记词
  String mnemonic = await bip39_dart.entropyToMnemonic('00000000000000000000000000000000');
  // => 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about'

  // 验证助记词是否有效
  bool isValid = await bip39_dart.validateMnemonic(mnemonic);
  // => true

  // 验证助记词是否有效
  isValid = await bip39_dart.validateMnemonic('basket actual');
  // => false

  // 将助记词转换回熵
  String entropy = bip39_dart.mnemonicToEntropy(mnemonic);
  // => '00000000000000000000000000000000'
}

更多关于FlutterBIP39助记词生成插件bip39_dart的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于FlutterBIP39助记词生成插件bip39_dart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


bip39_dart 是一个用于生成和管理 BIP39 助记词的 Dart 插件。BIP39 是一种广泛使用的标准,用于生成加密货币钱包的助记词。通过 bip39_dart,你可以轻松地在 Flutter 应用中生成、验证和恢复助记词。

安装插件

首先,你需要在 pubspec.yaml 文件中添加 bip39_dart 依赖:

dependencies:
  bip39_dart: ^1.0.0

然后运行 flutter pub get 来安装依赖。

使用插件

以下是如何在 Flutter 应用中使用 bip39_dart 生成和验证 BIP39 助记词的示例。

1. 生成助记词

import 'package:bip39_dart/bip39_dart.dart' as bip39;

void main() {
  // 生成一个随机的助记词
  String mnemonic = bip39.generateMnemonic();
  
  print('Generated Mnemonic: $mnemonic');
}

2. 验证助记词

import 'package:bip39_dart/bip39_dart.dart' as bip39;

void main() {
  String mnemonic = 'your mnemonic phrase here';

  // 验证助记词是否有效
  bool isValid = bip39.validateMnemonic(mnemonic);

  if (isValid) {
    print('Mnemonic is valid.');
  } else {
    print('Mnemonic is not valid.');
  }
}

3. 从助记词生成种子

import 'package:bip39_dart/bip39_dart.dart' as bip39;

void main() {
  String mnemonic = 'your mnemonic phrase here';

  // 生成种子
  String seed = bip39.mnemonicToSeedHex(mnemonic);

  print('Generated Seed: $seed');
}

4. 从种子生成 HD 钱包

你可以使用 bip32_dart 或其他相关的库来从种子生成 HD 钱包。

import 'package:bip39_dart/bip39_dart.dart' as bip39;
import 'package:bip32_dart/bip32_dart.dart' as bip32;

void main() {
  String mnemonic = 'your mnemonic phrase here';
  String seed = bip39.mnemonicToSeedHex(mnemonic);

  // 生成 HD 钱包
  bip32.BIP32 root = bip32.BIP32.fromSeed(seed);

  // 生成派生地址
  bip32.BIP32 child = root.derivePath("m/44'/0'/0'/0/0");

  print('Address: ${child.toBase58()}');
}
回到顶部