flutter创建/导入区块链钱包,获取余额

flutter创建/导入区块链钱包,获取余额

作为区块链行业小白刚接触区块链钱包几天,来开发钱包还是需要付出很多努力的.下面记录一下flutter框架下创建/导入区块链钱包,并获取余额

一、创建钱包:

钱包的创建分为三个步骤:

1、生成助记词

(1)、创建助记词: 需要用到bip39插件

bip39: ^1.0.6

(2)、创建方式:


// 获取助记词、
  static String generateMnemonic() {
    String randomMnemonic = bip39.generateMnemonic();
     return randomMnemonic;
  }

2、助记词生成私钥

(1)、生成私钥需要用到插件bip32

bip32: ^2.0.0

(2)、生成方式:

// 助记词转私钥Private Key
static String getPrivateKey(String mnemonic) {
   final seed = bip39.mnemonicToSeed(mnemonic);
    final root = bip32.BIP32.fromSeed(seed);
    final child1 = root.derivePath("m/44'/60'/0'/0/0");
  return bytesToHex(child1.privateKey!.toList());
  }

3、私钥生成钱包地址: 生成地址后钱包就创建完成了

(1)、生成方式:

static Future<EthereumAddress> getPublicAddress(String privateKey) async {
    final private = EthPrivateKey.fromHex(privateKey);
    final address = await private.extractAddress();
    return address;
 }

二、导入钱包

导入钱包很简单、只需要略过生成助记词步骤直接执行一.2和一.3就够可以了

三、查看钱包余额

查看钱包余额是一个链接网络进行请求的过程需要用到插件:web3dart

web3dart: ^2.3.5

集体操作:

/// 获取指定钱包的余额,这里获取的是ETH的余额
  static Future<String> getBalance(String address) async {
    String rpcUrl = Global.getBaseUrl();
    final client = Web3Client(rpcUrl, Client());
    try {
      EtherAmount balance =
          await client.getBalance(EthereumAddress.fromHex(address));
      double b = balance.getValueInUnit(EtherUnit.ether);
      return b.toStringAsFixed(12);
    } catch (e) {
      return "";
    }
  }

参数说明:

address: 0xc9e90f88932827c32065a5e0ddbf077e01cfa1ac//钱包地址、欢迎给我打测试币

rpcUrl: 用到的是以太坊测试网络goerli.infura.io用于测试

https://goerli.infura.io/v3/37caa7b8b2c34ced8819de2b3853c8a2

水龙头领测试币0.5goerli

水龙头地址一:

https://dashboard.alchemy.com/explorer?time_min=1676076893400&time_range_preset=last5Minutes

水龙头地址二(官方):

https://goerli-faucet.mudit.blog

钱包余额展示:

在这里插入图片描述