以太坊物聯網開發框架 Web3E

2021-10-02 05:32:15 字數 3175 閱讀 8379

web3e,即web3 for embedded,是乙個面向arduino嵌入裝置的全功能web3開發框架,開發語言為c/c++。web3e可以幫助嵌入裝置開發者快速實現能夠接入以太坊區塊鏈的物聯網/iot裝置,為物聯網開發者開啟了一扇新的大門。

web3e的主要特性包括:

建議使用platformio安裝web3e,因為web3e目前已經是platformio開發庫的乙份子了,所以不需要轉殖原始的web3e**庫。

[env:esp32dev]

platform = espressif32

board = esp32dev

framework = arduino

; serial monitor options

monitor_speed = 115200

lib_deps =

# using a library name

web3e

在web3e中預置了4個物聯網+以太坊的示例應用:

查詢錢包餘額:展示在嵌入裝置上如何查詢erc20代幣餘額以及非同質化通證(nft)餘額

交易廣播:展示在嵌入裝置上如何實現erc20和erc875代幣的轉賬交易

以太幣轉賬:展示如何在嵌入裝置上實現以太幣轉賬

例如,下面的**展示了如何使用web3e讓物聯網嵌入裝置支援以太幣轉賬:

// 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);

//obtain balance in wei

uint256_t balance = web3.ethgetbalance(&address);

//get string balance as eth (18 decimals)

string balancestr = util::convertweitoethstring(&balance, 18);

使用web3e讓嵌入裝置支援erc20代幣的傳送要複雜一點,但考慮到這是在用c/c++,也還能夠接受:

string contractaddr = "0x20fe562d797a42dcb3399062ae9546cd06f63280";

contract contract(&web3, contractaddr.c_str());

contract.setprivatekey();

//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);

以太坊開發框架Truffle學習筆記

from 1.安裝node.js 8.11.2 lts 2.安裝truffle npm install g truffle3.建立專案 您可以建立專案模板,但對於新手,更好的選擇是使用truffle boxes 示例應用程式和專案模板。我們將使用metacoin box,該例子建立可在帳戶之間轉移的...

以太坊Dapp開發

名詞 區塊鏈可以分為 公有鏈 聯盟鏈和私有鏈。聯盟鏈 本質仍然是一種私有鏈,只不過它要比小組織開發的私有鏈更大,但是卻沒有公有鏈這麼大的規模,可以理解為它是介於公有鏈和私有鏈的一種區塊鏈。聯盟鏈的特點 聯盟鏈專案 fabric 介紹 fabric 是乙個面向企業應用的區塊鏈框架。以太坊主要是公有鏈,...

敏捷開發框架 物聯網和敏捷開發框架

物聯網 iot 是乙個通過網際網路相互互動的智慧型裝置系統。物聯網可能涉及許多裝置,這些裝置共享網路並彼此生成 傳輸和處理資訊,以實現有用的功能。例如,借助物聯網,您可以使用手機控制門鎖,根據自己的心情自動調節照明等等。現在,讓我們看一下敏捷框架 agile framework 敏捷是在過去十年中指...