用web3dart爲flutter應用生成以太坊地址

Flutter是採用Dart語言的跨平臺應用開發框架,目前已經支持ios、安卓和web等多個平臺。本文將介紹如何在Flutter應用中生成以太坊地址,若是你要開發一個手機錢包,或者要對接以太坊區塊鏈,相信這篇文章會對你所幫助。ios

一、web3dart簡介

做爲一個新的框架,適合Flutter的以太坊開發包並無太多選擇,web3dart算是相對完善一些的Dart實現,它包含了JSON RPC封裝、離線簽名、ABI編解碼等重要的特性,其目標是提供dart版的web3.js,可以適應絕大多數Flutter應用對接以太坊區塊鏈的需求。git

web3dart的安裝方法很簡單,首先在項目的pubspec.yaml中添加web3dart依賴項。例如:github

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

而後執行以下命令更新項目依賴:web

~/hubwiz_tutorial$ pub get

若是但願快速掌握Flutter / Dart應用對接以太坊區塊鏈的方法,推薦 匯智網的在線互動教程:數組

二、示例代碼:用web3dart生成以太坊地址

生成以太坊地址是絕大多數但願支持以太坊區塊鏈的Flutter應用所須要的功能特性。 web3dart開發包使得這一過程至關簡單明瞭:web3dart的crypto庫提供了三個API函數, 分別用於生成私鑰、從私鑰推導出公鑰、以及從公鑰推導出以太坊地址:安全

account

首先咱們引入必要的庫:框架

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

STEP 1# 建立隨機私鑰

爲此咱們須要利用math庫中的安全隨機數發生器,而後調用crypto庫中的generateNewPrivateKey()生成一個隨機私鑰:dom

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}');                       //顯示地址

原文連接:Fluter/Dart生成以太坊地址 - 匯智網

相關文章
相關標籤/搜索