如何通过Chainlink外部适配器将特斯拉汽车API连接到智能合约上

本文介绍了智能合约开发者使用Chainlink外部适配器将特斯拉车辆API连接到Chainlink预言机,实现智能合约与特斯拉车辆的集成。详细说明了特斯拉API的使用、外部适配器的创建、车辆认证令牌的存储以及智能合约的创建,展示了该集成在点对点车辆租赁等方面的潜在用例。

作为Chainlink黑客马拉松的特等奖获得者,智能合约开发者Harry Papacharissiou和Matt Durkin使用Chainlink外部适配器将特斯拉车辆API连接到Chainlink预言机,用于点对点车辆租赁应用。他们的特斯拉智能合约是一个说明Chainlink用于连接链外API和智能合约的很好的例子,并实现全新的商业模式。在这篇文章中,Harry和Matt将介绍他们是如何创建实现的。

作者:Harry PapacharissiouMatt Durkin

Chainlink的外部适配器功能可以轻松地将智能合约连接到任何API,实现智能合约触发链外事件的各种用例,并将防篡改的数字协议带到外部系统。

特斯拉公司生产了一系列创新的电动汽车,配备了技术先进的功能和特性。其中一项就是丰富的API,可以为经过认证的客户端提供丰富的车辆数据,以及远程访问并执行车辆上各种状态变化的功能。

通过外部适配器和Chainlink节点来调用API,特斯拉智能合约可以与特斯拉车辆完全集成,这就开辟了几个独特的用例。

在这篇技术文章中,我们将通过:

  • 如何使用特斯拉外部适配器与特斯拉API进行交互?
  • 如何编写一个智能合约,通过链克节点使用特斯拉外部适配器获取车辆数据并修改车辆的状态

特斯拉API

车辆数据API所示特斯拉官方移动应用可以让特斯拉车主获得车辆位置、里程表读数、车辆电池充电状态等数据。这款移动应用还允许用户执行各种远程命令,如锁定解锁车辆远程启动车辆、打开关闭充电口、设置限速等,另外还有很多特斯拉远程命令列表中列出的内容。

这款移动应用使用REST API连接到特斯拉的服务器,而服务器则与每辆车进行通信。在撰写本文的时候,特斯拉还没有向车主发布任何API的官方文档,但社区开发者已经通过逆向工程的方式制作了非官方文档。目前,社区已经在几个第三方应用中应用了这些API,比如这个自带的数据记录器

特斯拉API使用OAuth标准进行身份验证,在成功请求到验证端点后,API会授予访问令牌。向 API 连续发出的需要身份验证的请求时,需要在请求头中包含身份验证令牌,前提是该令牌尚未过期或被撤销。特斯拉API生成的访问令牌有一个长达45天的有效期,并且每次认证请求都会生成一个寿命较长的刷新令牌。如果访问令牌接近到期或过期,我们也可以申请新的访问令牌。

在与特斯拉汽车进行通信之前,必须首先通过向身份验证 API 端点发出 HTTP POST 请求,成功获取其中一个身份验证令牌。使用下面请求体中的参数来完成这一任务。将电子邮件和密码设置为特斯拉车辆账户所有者在特斯拉网站上的登录名。

{
   
   
   "grant_type": "password",
   "client_id": "81527cff06843c8634fdc09e8ac0abefb46ac849f38fe1e431c2ef2106796384",
   "client_secret": "c7257eb71a564034f9419ee651c7d0e5f7aa6bfbd18bafb5c5c033b093bb2fa3",
   "email": "teslaowner@gmail.com",
   "password": "password"
}

你会收到一个含有访问令牌的回复:

{
   
   
    "access_token": "bc031af9351deb7a33e92f689be9eaad4b840e98b49f050a5e951347f140493d",
    "token_type": "bearer",
    "expires_in": 3888000,
    "refresh_token": "77bfff0afe006b7093d7ee23e85d3c667d36c23181e1e938a049237c35aba19c",
    "created_at": 1598934492
}

一旦你有了一个有效的认证令牌,你就需要通过在请求头中传递这个认证令牌到所需的API端点来找出你的车辆ID:

curl -X POST https://owner-api.teslamotors.com/api/1/vehicles -H "content-type:application/json" -H "Authorization: Bearer bc031af9351deb7a33e92f689be9eaad4b840e98b49f050a5e951347f140493d"

所需的车辆ID将在响应’id_s’元素中返回。这是特斯拉服务器将成功验证的车辆ID。其他’id’和’vehicle_id’字段用于其他目的,不适用于网络服务请求。

{
   
   
    "response": [
        {
   
   
            "id": 42555797050350370,
            "vehicle_id": 1832501921,
            "vin": "5YJ3F7EB1KF447777",
            "display_name": "BASED",
            
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值