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 Keystatic 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

钱包余额展示: