5

web3E(用于单片机的以太坊框架)编译环境说明

 3 years ago
source link: https://learnblockchain.cn/article/2242
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
web3E(用于单片机的以太坊框架)编译环境说明 | 登链社区 | 深入浅出区块链技术

web3E(用于单片机的以太坊框架)编译环境说明

最近在弄IOT上链的方案,基于树莓派的还好一些,原生支持web3j,单片机就比较麻烦了。我大概搜了一下,2018年有人做了一个web3-arduino,2020年有人做了一个web3e,但这两个都有起码一年没再继续做维护了。所以我在这里做一个编译环境的说明,也差不多是网上能找到与单片机以太坊框架相关的第三篇文章了。

最近在弄 IOT 上链的方案,基于树莓派的还好一些,原生支持 web3j,单片机就比较麻烦了。我大概搜了一下,2018 年有人做了一个 web3-arduino,2020 年有人做了一个 web3e,但这两个都有起码一年没再继续做维护了。
而且网上的相关资料就两篇,所以我在这里做一个编译环境的说明,也差不多是网上能找到与单片机以太坊框架相关的第三篇文章了。

首先要买一块 esp32 的开发板,这里要求尽量买便宜的,二三十块钱的那种就行。另外还要准备一条 usb 转接线,一台电脑。
然后管店铺要测试程序和测试代码,保证整个硬件和驱动在逻辑上是畅通的。

首先是安装 Visual Studio Code,这个比较容易安装。
然后是安装 platformio,这个需要在线安装,非常的慢,还容易报错。
然后在 quick access 里面选择 projects & configuration,选择 creeate new project 来新建工程。这里面主要的是 board 里面,一定要确定你的 esp32 的架构是什么,然后选择 finish。
注意 finish 过程中会非常的慢的。

建立好了之后,我们要修改两个地方

一个是 platformio.ini,里面增加:
lib_deps = Web3E
再一个就是在 main 函数里面增加相关的 example。
我们用的是 https://github.com/AlphaWallet/Web3E/tree/master/examples
里面的 Query Token Balance 代码。
该代码的主要功能是可以查询某个以太坊地址里面 erc20 和 erc875 的币量

编译及运行程序

点击 vscode 左下的外星人图标,在 project tasks 里面,有一个叫做 upload and monitor,点击就会自动编译下载,并在串口屏幕进行监控

部分代码说明一

首先是 esp32 的编程主要是两个函数,一个是 void setup(),这个函数是刚开始就启动,并且只启动一次;void loop()是启动后反复循环的函数。

部分代码说明二

const char *ssid = "<YOUR SSID>";
//你的wifi地址
const char *password = "<YOUR WiFi PASSWORD>";
//你的wifi密码
const char *INFURA_HOST = "kovan.infura.io";
//运行的测试网络地址
const char *INFURA_PATH = "/v3/<your Infura token>";    //this is an 
anonymous infura public API key for courtesy testing, please don't use it for production
//你的Infura地址,这个需要在你的Infura网站自行注册
#define NATIVE_ETH_TOKENS "Kovan ETH"                                //if you switch chains you might want to change this
//测试网名称
#define ERC875CONTRACT "0x0b70dd9f8ada11eee393c8ab0dd0d3df6a172876"  //an ERC875 token contract on Kovan
//要测试的erc875代币地址
#define ERC20CONTRACT  "0xb06d72a24df50d4e2cac133b320c5e7de3ef94cb"  //and ERC20 token contract on Kovan
//要测试的erc20代币地址
#define USERACCOUNT "0x835bb27deec61e1cd81b3a2feec9fbd76b15971d"     //a user account that holds Kovan ETH and balances of tokens in the two above contracts 
//要测试的用户地址

部分代码说明三

void setup() 
{
    Serial.begin(115200); //ensure you set your Arduino IDE port config or platformio.ini with monitor_speed = 115200
//设定串口频率
    setup_wifi();
//设定网络
    string userAddress = USERACCOUNT;
//设定用户地址
	queryERC20Balance(ERC20CONTRACT, USERACCOUNT);
//查询erc20币量
    queryERC875Balance(ERC875CONTRACT, USERACCOUNT);
//查询erc875币量
}

放在后面的话

由于需要科学上网的原因,在环境搭建的过程中经常报错;此外 web3e 很久的不更新和例程较少也是很明显的问题。另外一个问题就是 web3e 运行的硬件太少,不够灵活。
本人的计划是制作通用性更强,可以在 stm32,esp32 及 8266 上可以运行的以太坊接口库,并且给出不需要科学上网就能完成的方案。
并在此基础上,完成通用性的 IOT 上链方案。

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 2021-03-08 15:12
  • 阅读 ( 82 )
  • 学分 ( 3 )
  • 分类:DApp

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK