乐趣区

关于物联网:使用Chainlink外部适配器构建RFID区块链集成系统

目前的物联网追踪了比以往任何时候都更多的真实世界对象和流程,也产生了大量的且一直增长的数据。Chainlink 内部适配器非常适合将物联网数据通过平安、牢靠的预言机网络传送到各种物联网智能合约用例中,例如链上供应链业务逻辑或追踪温度数据用于智能合约保险理赔。将 RFID 扫描器 %20is%20a%20device,in%20theory%20to%20bar%20codes.)(射频辨认)数据整合到区块链中就是这样一个例子。

在 Chainlink 黑客马拉松中获得最佳凋谢我的项目奖的开发者 Aram Moghaddassi 和 Aaron Wasserman 应用 Chainlink 内部适配器将 Arduino RFID 连贯到 Chainlink 预言机,用于一个去中心化的图书借阅和跟踪零碎,称为凋谢图书馆我的项目。

在这篇教程文章中,Aram Moghaddassi 解释了他们如何实现这个我的项目。


作者:Aram Moghaddassi

在区块链上启用的硬件零碎是智能合约开发者的新畛域。本篇文章将介绍构建此类零碎的灵感、利用和技术设计,并作为教程(含实例),介绍如何将 Chainlink 节点上的 RFID 传感器的模仿硬件后端集成到智能合约中。

物联网硬件和智能合约的发展潜力


区块链和智能合约有能力确保目前部署的数百亿物联网设施的平安,并每年产生的数十亿字节的数据。从智能家居、城市、工厂、供应链,物联网设施正在彻底改变传统的基础设施,自动化零碎有可能在这个畛域发明弱小的效率和商业逻辑。为此,咱们开发了自定义的内部适配器,使智能合约可能与实时硬件零碎对接。目前咱们正在经营一个带有虚构硬件后端的 RFID 内部适配器,您能够追随本教程亲手实际一下。

Chainlink 去中心化的预言机网络如何将物联网数据安全地反馈给智能合约

咱们的指标是:在 10 分钟内,您将部署一个能够从咱们的 RFID 适配器查问数据的智能合约。咱们心愿让现有的 Web3 开发人员尽可能直观地开始在您的 dApps 中构建硬件集成。

您须要具备的常识


  • 相熟应用 Chainlink 进行 Solidity 开发很重要。咱们将在 Kovan testnet 上应用 Remix Ethereum IDE。
  • 不须要任何硬件!咱们当初曾经上线了一个 RFID 传感器的集成(很快会有更多设施呈现)。它发送样本数据,您能够应用这些数据来疾速启动和运行一个 dApp。

本教程将是咱们 GitHub 代码上的演示的书面版本,你能够在开始之前相熟一下。

01:29

RFID adapter demo

构建 RFID 数据提供商智能合约


Job/Oracle Spec

咱们将应用这个在 Kovan testnet 上运行的 Job 和节点。

RFID 扫描仪适配器将以字节格局返回一个示例卡 UID。

合约概要

这里是一个根本的合约,它调用节点的 RFID 作业,并将响应存储在一个变量中。

在 Remix 中部署这个合约:

pragma solidity ^0.6.0; import “https://github.com/smartcontractkit/chainlink/blob/develop/evm-contracts/src/v0.6/ChainlinkClient.sol”; contract Client is ChainlinkClient {// where to store the last id scanned bytes32 public last_uid; // Chainlink vars for communicating with the RFID external adapter address private oracle; bytes32 private jobId; uint256 private fee; constructor() public {setPublicChainlinkToken(); oracle = 0x42149D794A135989319b66Dbcb770Ad36075a92e; jobId = “785558e0bed6466b9567322cc2f4ca91”; fee = 1 10 * 18; // 0.1 LINK } function requestData() public returns (bytes32 requestId) {// creates the Request Chainlink.Request memory req = buildChainlinkRequest(jobId, address(this), this.fulfill.selector); // Sends the request return sendChainlinkRequestTo(oracle, req, fee); } function fulfill(bytes32 _requestId, bytes32 uid) public recordChainlinkFulfillment(_requestId) {last_uid = uid;} }

部署合约并与交互


依照 Chainlink 文档,如何部署合约并获取 testnet LINK。咱们倡议用至多 10 个 LINK 来存到合约中。

合约中的 requestData 办法会对 RFID 作业进行 Chainlink 申请,实现后会把最初一次扫描的 UID 放到 last_uid 变量中。

利用及前期集成


咱们的 RFID 集成目前还处在概念证实阶段,目前能够在智能合约上运行一个实时硬件设施。咱们心愿一直地建设硬件集成案例,最终在 Chainlink 社区内疏导一个硬件生态系统。不过,最终还是要靠开发者找到应用这项技术的杀手级利用。

以下是咱们对 RFID 适配器的一些想法,你当初就能够进行钻研。

  • 实物的保存治理 – 贴有 RFID 芯片的物品能够在不同的航点进行扫描,平安地追踪地位。这个零碎能够帮忙到基于区块链的供应链治理利用。
  • 酒店入住 / 退房零碎 –Airbnb/ 酒店能够在用户入住某地时主动初始化租赁合约。智能合约能够主动实时收取任何逾期费用。
  • 签订数字协定的物理验证零碎 – 应用 RFID 扫描来验证用户的实在存在。
  • 施展创意吧!RFID 接口的通用性很强,你能设想到的任何货色都有可能构建。

最好的链上硬件利用将利用智能合约的独特属性,取得比传统软件更多的劣势。智能合约是确定性的、去中心化的、数字化的协定。在硬件方面,区块链实现的最有价值的益处是:(1)弱小的机器对机器通信协议和 (2) 来自传感器的不可篡改的数据馈送。

构建本人的硬件内部适配器


在构建凋谢图书馆我的项目时,咱们的团队学到了一些教训。如果你正在思考本人构建硬件内部适配器,这些准则是咱们认为有用的。尽管咱们这些教训是在构建 RFID 扫描仪的硬件适配器时做出的,但这些准则应该实用于任何实时硬件传感器集成。

准则 0:适配器服务器构造与其余所有的适配器服务器构造是一样的。你能够应用任何现有的内部适配器模板作为终点。次要的区别在于以下准则。

准则 1:硬件必须有一些内部适配器能够调用的软件接口 /API。

对于 RFID 扫描器,咱们应用 pyserial 写了一个自定义的解析器,创立了一个简略的接口来从每次扫描中获取 UID 代码。而后咱们能够写一个简略的 flask 服务器,承受 POST 申请来读取 UID。

对于不太能自定义的硬件(比方不是 Arduino),这个软件接口可能由一个开箱即用的 API 提供。在这种状况下,你只须要关怀编写内部适配器接口的问题。

准则 2:内部适配器必须在本地运行(疏忽虚构硬件后端)。

对于那些相熟在云服务器上部署适配器的人来说,这可能看起来很奇怪。然而,思考到咱们正在将数据从本地硬件传感器转移到近程 Chainlink 节点,向节点提供数据的适配器服务器必须在本地运行。咱们设想的最佳设置是应用一个专用的树莓派来运行硬件和服务器(只管咱们在开发过程中应用了笔记本电脑)。


明天就开始应用内部适配器进行构建


如果你是一名开发者,想要将你的智能合约连贯到底层区块链之外的现有硬件或数据,请在这里分割或拜访开发者文档。

如果你在这里学到了一些新的货色,想要展现你所构建的货色,或者为一些演示仓库开发了一个前端,请确保你在 Twitter,Discord 或 Reddit 上分享它,并且用 #Chainlink 来标记你的仓库。

Website | Twitter |Discord | Reddit | YouTube | Telegram | Events | GitHub | Price Feeds | DeFi

RFID Blockchain Integration With Chainlink External Adapters​blog.chain.link

退出移动版