利用云数据集和区块链预言机对冲恶劣天气风险
本文将讨论如何将公共天气数据和区块链技术与Google Cloud结合,提升经济效率并通过推动可持续农业减缓气候变化。
突发的恶劣天气会为许多行业造成经济损失,而随着气候变化不断加剧,恶劣天气越来越频发。比如旱季农作物产量减少、出行安排因暴雪被打乱、体育比赛因暴雨不得不取消、以及严重气候灾害对人类生存和基础设施造成威胁。
虽然我们还无法通过技术控制气候,但如果有能力准确预测气候,也可以有效缓解恶劣天气所带来的影响。好消息是,数据可以有效提高预测的准确性。Google的公共数据集项目(Public Datasets Program)储存了几PB的数据集,其中包括历史天气和气候数据。企业可以立即访问这些数据,根据天气风险优化分析模型,并基于数据生成解决方案。而现在这一愿景已经实现了,原本用于天气预报的机器学习算法正用于打造天气保险等金融产品。
将天气数据直接接入金融市场是另一个降低气候灾害相关损失的有效方案,并有机会提升预报结果的准确性,因为拥有更准确的天气模型的做市商将在天气预报资本市场中最终获利。
我之前提到过区块链/云端混合应用的软件设计模式,而本文将聚焦如何向新兴的去中心化金融(DeFi)资本市场提供优质的天气数据,以实现这一设计模式。这些资本市场面向所有网上用户开放(无须许可),并基于定义清晰的结构化数据运行,因此这些市场可以为全球用户实时提供基于天气数据的金融产品。
然而,由于潜在影响力提升,潜在风险也会随之变大。随着企业逐渐将智能合约(即:区块链网络中信任最小化的数字协议)集成至自己的业务流程中,驱动这些合约的数据必须是高质量且安全可靠的。不过好在这些问题都可以逐一解决,具体解决方案将在下文中详述。
在数据质量方面,Google Cloud在BigQuery中储存了来自美国海洋及大气管理局(NOAA)的每日全球地面摘要(GSOD)。简而言之,GSOD提供了自1929年以来全球9000多个气象站的每日天气和气候观察摘要。天气和气候数据来自权威的数据提供商,其中包括由美国国家航空和宇航局(NASA)和日本宇宙航空研究开发机构(JAXA)合办的GPM项目。该项目基于多个卫星取回的数据每隔三个小时绘制一次降雨量分布图。
下一章将阐述如何通过Chainlink(注:Chainlink是一个区块链预言机解决方案,为智能合约生态保障着超过300亿美元的价值)将数据从Google BigQuery传输至以太坊(注:以太坊是智能合约平台,拥有最大规模的DeFi生态)。最后,我们会讨论这些数据如何最好地用于发展可持续农业,及其背后的逻辑。
用Chainlink将Google Cloud的天气和气候数据集传输至智能合约
区块链智能合约应用可以为企业消除对手方风险、加速结算流程、并减少金融协议中的摩擦。降雨量等天气数据输入至智能合约,可以进一步推动预测市场的发展,参与者可以达成以下协议:
买卖双方约定,如果<某地>的<天气数据>在<某段时间>内<高于或低于><一定值>,则卖方在<结算时间点>向买方以<某一价格>转让<一定量的资产>。
这类协议可以帮助企业对冲极端气候风险,参数包括温度、风速以及降雨量等各种条件。对冲气候风险关系到某些行业的利润率,在一些情况下甚至关系到业务是否能维持下去。
但区块链上的智能合约本身无法访问“链下”天气数据。这是由于区块链自身的安全性决定的。因此要开发区块链/云端混合应用就需要使用区块链预言机作为桥梁。
我与Chainlink的工程师共同开发了一款适配器,可以让智能合约向BigQuery请求NOAA 的GSOD天气数据。GSOD包含了来自9000多个气象站的数据,其中包括每个站点的温度、可视度、风速和降雨量等。
这个适配器可以接收来自50多条区块链上的智能合约发送的请求,并可以将来自第三方应用的链上函数调用转换成正确的格式,获取BigQuery中的GSOD数据,并且将数据返回给下游用户。红色方框/箭头是我们为本文开发的组件。
开发者可以在Github上查看源代码,并且可以在以太坊Goerli测试网(地址:0x6B705Fc5c425bE07EBe59d09aA9fD2C0Df88CAb4)和以太坊主网上(地址:0x7F7D84789eAfb80A6bA0B996D37A06723FCc02c5)接入GSOD数据。
应用开发者可以向某个区域内的气象站请求数据,也可以向距离某个地理坐标点最近的气象站请求数据。
在本文展示的方案中,以太坊智能合约发起的链上数据请求交易在Goerli测试网上生成。这个合约中有几个功能可以返回天气数据,下文将具体举例说明。
虽然这些例子中都是同一个地理位置(挪威卑尔根),但实际上开发者可以用GeoJSON数据结构或Geohash具体定义请求数据的位置。
查询实例一——固定地点:在一定时间范围 <起始时间,结束时间>内 ,挪威卑尔根的<平均温度>是多少?
这个请求交易中,智能合约使用Chainlink预配置的任务调用了requestAvgTemp()函数,请求挪威卑尔根在2021年4月1日到同年5月1日之间的平均温度。请求方提供的数据输入可以通过点击DeCode Input Data在Etherscan页面上查看。链下Chainlink节点在收到请求交易中定义的地理位置坐标、时间范围、聚合方式、天气类型以及单位后,下列数据被输入至节点的外部适配器:
{
"id": "1",
"data": {
"geoJson": { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [ -77.03716278076172, -12.061816289618974 ] } } ] },
"dateFrom": "2021-04-01",
"dateTo": "2021-05-01",
"method": "AVG",
"column": "temp",
"units": "metric"
}
}
外部适配器收到后,输出结果5.29º C,然后通过Chainlink节点管道生成链上响应交易,数值先乘以10的18次方再加密成uint256,以支持小数:
{
"jobRunID": "1",
"result": 5.29301075269,
"statusCode": 200,
"data": {
"result": 5.29301075269
}
}
链上智能合约收到链下天气数据后,可以基于数据执行应用具体的代码逻辑。
查询实例二——固定地点:在一定时间范围 <起始时间,结束时间>内 ,挪威卑尔根的<总降雨量>是多少?
除了获取挪威卑尔根的日均温度外,这个Chainlink节点和外部适配器还可以通过预配置的任务获取其他天气数据集,比如挪威卑尔根的总降雨量。这个请求交易中,智能合约使用预定义的地理位置坐标调用了requestTotalRain()函数,请求挪威卑尔根在2021年4月1日到同年5月1日之间的总降雨量。请求数据的智能合约只提供了数据参考的时间范围。在处理这个数据请求时,Chainlink节点的外部适配器获得以下input payload:
{
"id": "1",
"data": {
"geoJson": { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": {}, "geometry": { "type": "Polygon", "coordinates": [ [ [ 5.2796173095703125, 60.40673218057448 ], [ 5.164947509765625, 60.383665698324926 ], [ 5.17730712890625, 60.211509994185604 ], [ 5.401153564453124, 60.27694067255946 ], [ 5.6188201904296875, 60.436558668419984 ], [ 5.526123046875, 60.42842688461354 ], [ 5.3002166748046875, 60.5387098888639 ], [ 5.238418579101562, 60.4951151199491 ], [ 5.2796173095703125, 60.40673218057448 ] ] ] } } ] },
"dateFrom": "2021-04-01",
"dateTo": "2021-05-01",
"method": "SUM",
"column": "prcp",
"units": "metric"
}
}
通过Google BigQuery获得链下数据后,Chainlink节点的外部适配器会输出以下结果,表明既定时间范围内既定地区内降雨量的毫米数值。然后这个数据会通过链上响应交易发送至链上,返回的结果先乘以10的18次方再加密成uint256,以支持小数:
{
"jobRunID": "1",
"result": 87.1219972121,
"statusCode": 200,
"data": {
"result": 87.1219972121
}
}
查询实例三——固定地点:在一定时间范围 <起始时间,结束时间>内 ,挪威卑尔根的<降冰雹天数>是多少?
在第三个实例中,智能合约可以通过Chainlink节点调用requestHail()函数,查询挪威卑尔根的某一坐标地点在某一时间范围内是否降过冰雹。与上一个任务一样,请求数据的智能合约只需要输入时间范围即可。如果在时间范围内没有将过冰雹,则返回0,而其他数字则表示在时间范围内降冰雹的具体天数。在处理这个数据请求时,Chainlink节点的外部适配器获得以下input payload:
{
"id": "1",
"data": {
"geoJson": { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": {}, "geometry": { "type": "Polygon", "coordinates": [ [ [ 5.2796173095703125, 60.40673218057448 ], [ 5.164947509765625, 60.383665698324926 ], [ 5.17730712890625, 60.211509994185604 ], [ 5.401153564453124, 60.27694067255946 ], [ 5.6188201904296875, 60.436558668419984 ], [ 5.526123046875, 60.42842688461354 ], [ 5.3002166748046875, 60.5387098888639 ], [ 5.238418579101562, 60.4951151199491 ], [ 5.2796173095703125, 60.40673218057448 ] ] ] } } ] },
"dateFrom": "2021-04-01",
"dateTo": "2021-05-01",
"method": "SUM",
"column": "hail"
}
}
在收到payload后,Chainlink节点的外部适配器会从BigQuery获取天气数据,并输出以下数据,表明降冰雹的具体天数,然后数据会通过响应交易发送至链上:
{
"jobRunID": "1",
"result": 2,
"statusCode": 200,
"data": {
"result": 2
}
}
由于结果大于0,因此表示在预定义的区域内至少降了一天冰雹。智能合约通过Chainlink节点可以请求全世界任何一个或多个气象站点的数据。
用智能合约推动下一代农作物保险发展
现在智能合约开发者可以通过Chainlink直接在链上接入Google Cloud上的NOAA天气和气候数据,因此可以开发出预编程的农作物保险协议,基于优质的链下数据自动可靠地进行理赔。
此类保险协议推出后,所有企业,无论其规模大小、在什么司法管辖区和地区运营,都将有能力对冲风险并充分抵御气象灾害,因此可以安全地计划并扩张业务。这些产品可以推动可持续农业的发展,减缓土地利用变化,从而有效降低二氧化碳排放。
同样地,保险智能合约可以为保险公司和客户更好地保障基于真实世界的数据准确执行理赔,这将为农作物保险带来前所未有的透明度和可靠性,并为保险客户降低门槛。
另外,由于天气保险是基于公链智能合约打造的,因此可以覆盖全世界的保险客户和任何保额,并且不存在传统保险公司理赔速度慢且理赔不客观等问题。
用区块链/云端混合应用重新定义全球各个行业
随着智能合约生态对优质链下数据的需求不断快速增长,因此必须为智能合约开发者配备具有颠覆意义的开发工具,打造出任何创新的应用和应用场景。Google Cloud和Chainlink将NOAA天气数据接入区块链,可以实现农作物智能合约保险等去中心化应用,并为用户提供前所未有的风险管理产品。
区块链/云端混合应用可以重新定义金融行业,我们非常期待在未来开发出各种智能合约应用。农作物智能合约保险将提升服务质量并更好地保障合约执行,从而让金融服务惠及更多人群。我们预计将有许多其他智能合约应用通过类似方式,使用Chainlink接入谷歌云平台上的各种公共数据。
我们期待看到更多开发者和企业使用谷歌云平台和Chainlink预言机中间件开发出创新的智能合约应用。
END
▲加入 Chainlink官方社区
Chainlink 官方渠道
QQ群: 6135525
微博: https://weibo.com/chainlinkofficial
知乎:https://www.zhihu.com/people/chainlink
SegmentFault:https://segmentfault.com/u/chainlink
币乎: https://bihu.com/people/1869894547
GitHub: https://github.com/smartcontractkit/chainlink
Discord: https://discord.gg/aSK4zew
Twitter: https://twitter.com/chainlink
中文 Twitter: https://twitter.com/ChainlinkChina
Telegram: https://t.me/chainlinkofficial
合作联系: china@smartcontract.com