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
钱包余额展示: