本篇內(nèi)容介紹了“怎么用web3dart為flutter應(yīng)用生成以太坊地址”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站建設(shè)、網(wǎng)站制作與策劃設(shè)計,庫車網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:庫車等地區(qū)。庫車做網(wǎng)站價格咨詢:028-86922220
作為一個新的框架,適合Flutter的以太坊開發(fā)包并沒有太多選擇,web3dart算是相對完善一些的Dart實現(xiàn),它包含了JSON RPC封裝、離線簽名、ABI編解碼等重要的特性,其目標(biāo)是提供dart版的web3.js,能夠適應(yīng)絕大多數(shù)Flutter應(yīng)用對接以太坊區(qū)塊鏈的需求。
web3dart的安裝方法很簡單,首先在項目的pubspec.yaml中添加web3dart依賴項。例如:
name: hubwiz_tutorial dependencies: web3dart: git: git://github.com/simolus3/web3dart.git
然后執(zhí)行如下命令更新項目依賴:
~/hubwiz_tutorial$ pub get
如果希望快速掌握Flutter / Dart應(yīng)用對接以太坊區(qū)塊鏈的方法,推薦 匯智網(wǎng)的在線互動教程:
Flutter以太坊開發(fā)詳解
生成以太坊地址是絕大多數(shù)希望支持以太坊區(qū)塊鏈的Flutter應(yīng)用所需要的功能特性。 web3dart開發(fā)包使得這一過程相當(dāng)簡單明了:web3dart的crypto庫提供了三個API函數(shù), 分別用于生成私鑰、從私鑰推導(dǎo)出公鑰、以及從公鑰推導(dǎo)出以太坊地址:
首先我們引入必要的庫:
import 'dart:math'; // Random import 'dart:typed_data'; // Uint8List import 'package:web3dart/crypto.dart';
為此我們需要利用math
庫中的安全隨機數(shù)發(fā)生器,然后調(diào)用crypto庫中的generateNewPrivateKey()
生成一個隨機私鑰:
Random rng = Random.secure(); //安全隨機數(shù)發(fā)生器 BigInt privKey = generateNewPrivateKey(rng); //生成新的私鑰
直接調(diào)用crypto庫中privateKeyToPublic()
函數(shù),即可從指定的私鑰推導(dǎo)出公鑰:
Uint8List pubKey = privateKeyToPublic(privKey); //從私鑰推導(dǎo)出公鑰 print('public Key => ${bytesToHex(pubKey)}'); //顯示其16進制字符串表示
bytesToHex()
是crypto庫提供的一個輔助API,用于將字節(jié)數(shù)組(Uint8List)轉(zhuǎn)換為16進制表示的字符串。
直接調(diào)用crypto庫中publicKeyToAddress()
方法,從指定的公鑰碼流推導(dǎo)出地址碼流:
Uint8List address = publicKeyToAddress(pubKey); //從公鑰推導(dǎo)出地址 String addressHex = bytesToHex( address, //地址字節(jié)數(shù)組 include0x:true, //包含0x前綴 forcePadLength:40 //補齊到40字節(jié) ); print('address => ${addressHex}'); //顯示地址
“怎么用web3dart為flutter應(yīng)用生成以太坊地址”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!