本篇內(nèi)容介紹了“Web3E開發(fā)框架怎么使用”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、祿豐網(wǎng)站定制設(shè)計、自適應品牌網(wǎng)站建設(shè)、H5開發(fā)、商城網(wǎng)站制作、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應式網(wǎng)頁設(shè)計等建站業(yè)務,價格優(yōu)惠性價比高,為祿豐等各大城市提供網(wǎng)站開發(fā)制作服務。
Web3E,即Web3 for Embedded,是一個面向Arduino嵌入設(shè)備的全功能Web3開發(fā)框架,開發(fā)語言為C/C++。Web3E可以幫助嵌入設(shè)備開發(fā)者快速實現(xiàn)能夠接入以太坊區(qū)塊鏈的物聯(lián)網(wǎng)/IoT設(shè)備,為物聯(lián)網(wǎng)開發(fā)者打開了一扇新的大門。
Web3E主要在ESP32上進行測試,ESP8266也可以正常工作。Web3E還包含了一個快速開發(fā)DApp注入器,可以很方便地將你的嵌入設(shè)備轉(zhuǎn)換為以太坊DApp。
Web3E的開發(fā)始于一個簡單的需求:開發(fā)一個能夠在ESP32上運行的門禁DApp。這期間經(jīng)歷了相當多的挫折,我們意識到需要一個方法來簡化物聯(lián)網(wǎng)嵌入設(shè)備的DApp的開發(fā),這就是開發(fā)Web3E的最初動機。
Web3E的主要特性包括:
支持TokenScript接口
開箱即用的以太坊DApp注入器,可以立刻將物聯(lián)網(wǎng)嵌入設(shè)備轉(zhuǎn)化為支持ECDSA密碼學技術(shù) 的以太坊DApp
經(jīng)過優(yōu)化精簡的密碼學算法實現(xiàn)
交易系統(tǒng)已經(jīng)充分優(yōu)化,以太坊ERC20和ERC875合約都有實際使用
建議使用Platformio安裝Web3E,因為Web3E目前已經(jīng)是Platformio開發(fā)庫的一份子了,所以不需要克隆原始的Web3E代碼庫。
使用Web3E很簡單,只需要在Platformio中創(chuàng)建一個新項目,然后參考如下內(nèi)容修改platformio.ini:
[env:esp32dev] platform = espressif32 board = esp32dev framework = arduino ; Serial Monitor options monitor_speed = 115200 lib_deps = # Using a library name Web3E
在Web3E中預置了4個物聯(lián)網(wǎng)+以太坊的示例應用:
Simple DApp:展示如何創(chuàng)建可以運行在嵌入設(shè)備上的DApp。板載密碼學引擎 可以與用戶輸入充分交互,在ESP32上的公鑰恢復和簽名驗證可以毫秒級完成
查詢錢包余額:展示在嵌入設(shè)備上如何查詢ERC20代幣余額以及非同質(zhì)化通證(NFT)余額
交易廣播:展示在嵌入設(shè)備上如何實現(xiàn)ERC20和ERC875代幣的轉(zhuǎn)賬交易
以太幣轉(zhuǎn)賬:展示如何在嵌入設(shè)備上實現(xiàn)以太幣轉(zhuǎn)賬
例如,下面的代碼展示了如何使用Web3E讓物聯(lián)網(wǎng)嵌入設(shè)備支持以太幣轉(zhuǎn)賬:
// Setup Web3 and Contract with Private Key ... Contract contract(&web3, ""); contract.SetPrivateKey(PRIVATE_KEY); uint32_t nonceVal = (uint32_t)web3.EthGetTransactionCount(&address); //obtain the next nonce uint256_t weiValue = Util::ConvertToWei(0.25, 18); //send 0.25 eth unsigned long long gasPriceVal = 1000000000ULL; uint32_t gasLimitVal = 90000; string emptyString = ""; string toAddress = "0xC067A53c91258ba513059919E03B81CF93f57Ac7"; string result = contract.SendTransaction( nonceVal, gasPriceVal, gasLimitVal, &toAddress, &weiValue, &emptyString);
下面的代碼使用Web3E在物聯(lián)網(wǎng)嵌入設(shè)備上查詢指定的以太坊地址的以太幣余額:
//obtain balance in Wei uint256_t balance = web3.EthGetBalance(&address); //get string balance as Eth (18 decimals) string balanceStr = Util::ConvertWeiToEthString(&balance, 18);
使用Web3E讓嵌入設(shè)備支持ERC20代幣的發(fā)送要復雜一點,但考慮到這是在用C/C++,也還能夠接受:
string contractAddr = "0x20fe562d797a42dcb3399062ae9546cd06f63280"; Contract contract(&web3, contractAddr.c_str()); contract.SetPrivateKey(<Your private key>); //Get contract name string param = contract.SetupContractData("name()", &addr); string result = contract.ViewCall(¶m); string interpreted = Util::InterpretStringResult(web3.getString(&result).c_str()); Serial.println(interpreted.c_str()); //Get Contract decimals param = contract.SetupContractData("decimals()", &addr); result = contract.ViewCall(¶m); int decimals = web3.getInt(&result); Serial.println(decimals); unsigned long long gasPriceVal = 22000000000ULL; uint32_t gasLimitVal = 4300000; //amount of erc20 token to send, note we use decimal value obtained earlier uint256_t weiValue = Util::ConvertToWei(0.1, decimals); //get nonce uint32_t nonceVal = (uint32_t)web3.EthGetTransactionCount(&addr); string toAddress = "0x007bee82bdd9e866b2bd114780a47f2261c684e3"; string valueStr = "0x00"; //Setup contract function call string p = contract.SetupContractData("transfer(address,uint256)", &toAddress, &weiValue); //push transaction to ethereum result = contract.SendTransaction(nonceVal, gasPriceVal, gasLimitVal, &contractAddr, &valueStr, &p); string transactionHash = web3.getString(&result);
“Web3E開發(fā)框架怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
文章題目:Web3E開發(fā)框架怎么使用
本文網(wǎng)址:http://www.ekvhdxd.cn/article30/jiehso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、用戶體驗、面包屑導航、網(wǎng)站制作、營銷型網(wǎng)站建設(shè)、網(wǎng)站維護
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)