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 敏捷是在過去十年中指...