Arduino以太坊开发框架Web3E安装与使用
Web3E,即Web3 for Embedded,是一个面向Arduino嵌入设备的全功能Web3开发框架,开发语言为C/C++。Web3E可以帮助嵌入设备开发者快速实现能够接入以太坊区块链的物联网/IoT设备,为物联网开发者打开了一扇新的大门。
1、Web3E简介
Web3E主要在ESP32上进行测试,ESP8266也可以正常工作。Web3E还包含了一个快速开发DApp注入器,可以很方便地将你的嵌入设备转换为以太坊DApp。
Web3E的开发始于一个简单的需求:开发一个能够在ESP32上运行的门禁DApp。这期间经历了相当多的挫折,我们意识到需要一个方法来简化物联网嵌入设备的DApp的开发,这就是开发Web3E的最初动机。
Web3E的主要特性包括:
- 支持TokenScript接口
- 开箱即用的以太坊DApp注入器,可以立刻将物联网嵌入设备转化为支持ECDSA密码学技术 的以太坊DApp
- 经过优化精简的密码学算法实现
- 交易系统已经充分优化,以太坊ERC20和ERC875合约都有实际使用
2、Web3E安装
建议使用Platformio安装Web3E,因为Web3E目前已经是Platformio开发库的一份子了,所以不需要克隆原始的Web3E代码库。
使用Web3E很简单,只需要在Platformio中创建一个新项目,然后参考如下内容修改platformio.ini:
[env:esp32dev] platform = espressif32 board = esp32dev framework = arduino ; Serial Monitor options monitor_speed = 115200 lib_deps = # Using a library name Web3E
3、Web3E的示例及使用方法
在Web3E中预置了4个物联网+以太坊的示例应用:
- Simple DApp:展示如何创建可以运行在嵌入设备上的DApp。板载密码学引擎 可以与用户输入充分交互,在ESP32上的公钥恢复和签名验证可以毫秒级完成
- 查询钱包余额:展示在嵌入设备上如何查询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);
下面的代码使用Web3E在物联网嵌入设备上查询指定的以太坊地址的以太币余额:
//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(<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);
4、总结
让嵌入设备接入以太坊,是发挥智能合约能力的重要环节,因为机器天生容易按规矩办事。Web3E提供了一个相对完整的解决方案,虽然目前仅适用于部分Arduino设备,但这对于物联网嵌入设备开发者而言绝对是一个好工具。如果希望系统的学习以太坊开发知识,可以参考如下教程:以太坊DApp开发入门 | 去中心化电商DApp实战
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
2020,最关注企业级云原生实践落地的大会来了!
过去的 2019 年,云原生关注度依然居高不下,更多开发者热衷使用云原生技术,更多企业开始探索云原生架构转型落地。尽管云原生技术已经被广泛接受,其在企业技术栈的落地仍然面临挑战。 在与各行业头部企业深度合作和交流中,我们发现国内云原生实践已累积了诸多宝贵经验。云原生技术带来的资源成本降低、研发运维效率提升等巨大价值,已经驱动企业主动迎接这些挑战。可以预见通过云原生上云最大化使用云的能力,高效的社会分工,使企业聚焦于自身业务发展,将成为企业的共识。 2020,站在一个全新十年的节点上,我们期望在以开放创新为支撑的云原生领域发声,邀请来自国内外 IT 公司的一线云原生技术专家们,碰撞思想、共话实践。全方位洞悉云原生技术趋势,分享企业云原生落地实践痛点及经验,共同探索中国企业的云原生化转型的新路径。 2020 年 2 月 29 日,阿里云主办
- 下一篇
汇付天下与阿里云合作打造企业级移动中台,运营效率提升100%
随着移动互联网的普及,中国移动支付交易规模已超过百万亿元,居全球之首。数字化时代的兴起,促使各大企业都将移动化转型提升到战略高度。 作为国内领先的支付科技公司,2018年汇付天下计划打造企业级移动中台,统一运维、统一运营并统一移动研发规范,支撑业务不断变化及展需求,助力企业降本增效。 在建设移动中台能力时,汇付天下期望依托阿里云移动研发平台EMAS的全面能力,快速完成业务移动化的专项升级目标。提升App研发效率的同时,运用视觉设计和数据技术大幅提升App体验,采用个性化的数据分析,给用户提供极致的千人千面推荐服务。 2019年7月11日,经过30天的紧密建设,汇付天下正式宣布:EMAS平台正式投入运营。在短短2个月时间内,移动端产品的运营效率得到了大幅提升,各项营销活动的用户流量和活动打开率增长100%以上,支付成功率及所带来的的活动营收也成倍增长。 阿里云移动研发平台期望把阿里巴巴近十年在移动互联网行业沉淀的DevOps研发支撑能力、移动App基础中间件能力开放给客户,帮助传统企业快速完成业务移动化的转型升级目标。 未来汇付和阿里云EMAS会在数字化领域做更深入的探索和合作,将目光聚...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Mario游戏-低调大师作品
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装