打字猴:1.703878374e+09
1703878374
1703878375
1703878376
1703878377 6.解析助手
1703878378
1703878379 HTTP请求返回的结果可以是HTML、JSON、XML或二进制等格式。在Solidity中,解析结果是很困难的,且代价很高。Oraclize提供了解析助手,在服务端上处理解析,最终得到的结果就是用户需要的那部分。
1703878380
1703878381 为了让Oraclize解析结果,用户需要把URL和下面某一个解析助手(Parsing helpers)“打包”:
1703878382
1703878383 ·xml(..)和json(..)助手让Oraclize只返回部分JSON或者用XML解析的返回值,例如:
1703878384
1703878385 ·为了得到全部返回值,使用带有api.kraken.com/0/public/Ticker?pair=ETHUSD URL实参的URL数据源。
1703878386
1703878387 ·如果只想要最终价字段,需要使用JSON解析调用json(api.kraken.com/0/public/Ticker?pair=ETHUSD).result.XETHZUSD.c.0。
1703878388
1703878389 ·html(..).xpath(..)助手用于HTML scraping,仅需指定想用作xpath(..)实参的XPATH,例如:
1703878390
1703878391 ·为了抓取一个特定tweet的文本,使用html(https://twitter.com/oraclizeit/status/671316655893561344).xpath(//*[contains(@class,‘tweettext’)]/text())。
1703878392
1703878393 ·binary(..)助手用于获得诸如证书文件的二进制文件,例如证书文件:
1703878394
1703878395 ·为了抓取二进制文件的一部分,可以使用slice(offset,length)。其中第一个参数是位移,第二个参数是所需的slice长度(二者都用字节表示)。
1703878396
1703878397 ·示例:从一个二进制CRL中只抓取开头300个字节,用binary(https://www.sk.ee/crls/esteid/esteid2015.crl).slice(0,300)。二进制助手必须和slice选项同时使用,且只接受二进制文件(不接受编译文件)。
1703878398
1703878399
1703878400 如果服务端不响应或连接不上,用户将收到一个空回应。可以在http://app.Oraclize.it/home/test_query测试查询。
1703878401
1703878402 7.获取查询价格
1703878403
1703878404 如果在实际查询之前想知道查询需要多少费用,可以使用Oraclize.getPrice()函数获取所需的wei的数量。第一个实参是数据源,第二个实参是可选项,即自定义gas。
1703878405
1703878406 一个常见的使用示例是,当以太币余额不足以进行查询时,通知客户端向合约添加以太币。
1703878407
1703878408
1703878409
1703878410
1703878411 区块链项目开发指南 [:1703875373]
1703878412 区块链项目开发指南 7.1.6 加密查询
1703878413
1703878414 有时,用户可能不想暴露数据源和/或数据源的输入。例如,可能不想暴露URL中的API(如果有)。Oraclize提供了一种在智能合约中存储加密查询的方式,只有Oraclize的服务端才能解码。
1703878415
1703878416 Oraclize提供一个Python工具(https://github.com/Oraclize/encrypted-queries),可以用于加密数据源和/或数据源的输入。它生成一个非确定性的加密字符串。
1703878417
1703878418 用于加密任意文本字符串的CLI命令如下:
1703878419
1703878420
1703878421
1703878422
1703878423 其中长长的十六进制字符串是Oraclize服务端的公钥。现在用户可以使用前面命令的输出代替数据源和/或数据源的输入。
[ 上一页 ]  [ :1.703878374e+09 ]  [ 下一页 ]