Flutter / Dart生成以太坊地址

栏目: IOS · Android · 发布时间: 7年前

内容简介:Flutter是采用Dart语言的跨平台应用开发框架,目前已经 支持ios、安卓和web等多个平台。本文将介绍如何在Flutter应用中 生成以太坊地址,如果你要开发一个手机钱包,或者要对接以太坊 区块链,相信这篇文章会对你所帮助。作为一个新的框架,适合Flutter的以太坊开发包并没有太多选择,web3dart的安装方法很简单,首先在项目的pubspec.yaml中添加web3dart依赖项。例如:

Flutter是采用Dart语言的跨平台应用开发框架,目前已经 支持ios、安卓和web等多个平台。本文将介绍如何在Flutter应用中 生成以太坊地址,如果你要开发一个手机钱包,或者要对接以太坊 区块链,相信这篇文章会对你所帮助。

1、web3dart简介

作为一个新的框架,适合Flutter的以太坊开发包并没有太多选择, web3dart 算是相对完善一些的Dart实现, 它包含了JSON RPC封装、离线签名、ABI编解码等重要的特性,其目标是提供dart 版的web3.js,能够适应绝大多数Flutter应用对接以太坊区块链的需求。

web3dart的安装方法很简单,首先在项目的pubspec.yaml中添加web3dart依赖项。例如:

name: hubwiz_tutorial
dependencies:
  web3dart: 
    git: git://github.com/simolus3/web3dart.git

然后执行如下命令更新项目依赖:

~/hubwiz_tutorial$ pub get

如果希望快速掌握Flutter / Dart应用对接以太坊区块链的方法,推荐 汇智网的在线互动教程:

2、示例代码:用web3dart生成以太坊地址

生成以太坊地址是绝大多数希望支持以太坊区块链的Flutter应用所需要的功能特性。 web3dart开发包使得这一过程相当简单明了:web3dart的crypto库提供了三个API函数, 分别用于生成私钥、从私钥推导出公钥、以及从公钥推导出以太坊地址:

Flutter / Dart生成以太坊地址

首先我们引入必要的库:

import 'dart:math';                                     // Random
import 'dart:typed_data';                               // Uint8List     
import 'package:web3dart/crypto.dart';

STEP 1# 创建随机私钥

为此我们需要利用 math 库中的安全随机数发生器,然后调用crypto库中的 generateNewPrivateKey() 生成一个随机私钥:

Random rng = Random.secure();                            //安全随机数发生器
BigInt privKey = generateNewPrivateKey(rng);             //生成新的私钥

STEP 2# 从私钥推导出公钥

直接调用crypto库中 privateKeyToPublic() 函数,即可从指定的私钥推导出公钥:

Uint8List pubKey = privateKeyToPublic(privKey);          //从私钥推导出公钥      
print('public Key => ${bytesToHex(pubKey)}');            //显示其16进制字符串表示

bytesToHex() 是crypto库提供的一个辅助API,用于将字节数组(Uint8List)转换为 16进制表示的字符串。

STEP 3# 从公钥推导出地址

直接调用crypto库中 publicKeyToAddress() 方法,从指定的公钥码流推导出地址码流:

Uint8List address = publicKeyToAddress(pubKey);          //从公钥推导出地址
String addressHex = bytesToHex(
                      address,                           //地址字节数组
                      include0x:true,                    //包含0x前缀
                      forcePadLength:40                  //补齐到40字节
                    );
print('address => ${addressHex}');                       //显示地址

汇智网原创,转载请标明出处


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Mobilizing Web Sites

Mobilizing Web Sites

Layon, Kristofer / 2011-12 / 266.00元

Everyone has been talking about the mobile web in recent years, and more of us are browsing the web on smartphones and similar devices than ever before. But most of what we are viewing has not yet bee......一起来看看 《Mobilizing Web Sites》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具