打字猴:1.703878206e+09
1703878206 区块链项目开发指南 [:1703875368]
1703878207 区块链项目开发指南 7.1.1 Oraclize的工作原理
1703878208
1703878209 下面来看以太坊智能合约使用Oraclize从其他区块链和万维网中抓取数据的过程。
1703878210
1703878211 为了抓取外部数据,以太坊智能合约需要发送一个查询给Oraclize,指定数据源(表示从哪里抓取数据)和数据源的参数(表示抓取什么数据)。
1703878212
1703878213 向Oraclize发送一个查询,意味着发送一个合约调用(即内部交易)给以太坊区块链中出现的Oraclize合约。
1703878214
1703878215 Oraclize服务端不断寻找新传入智能合约的查询。当它发现一个新的查询时,就抓取结果,并调用合约的_callback方法将结果返回。
1703878216
1703878217
1703878218
1703878219
1703878220 区块链项目开发指南 [:1703875369]
1703878221 区块链项目开发指南 7.1.2 数据源
1703878222
1703878223 Oraclize允许智能合约抓取数据的源列表如下:
1703878224
1703878225 ·URL。URL数据源允许用户发送HTTP GET或者POST请求,即万维网中抓取数据。
1703878226
1703878227 ·WolframAlpha。WolframAlpha数据源允许用户向WolframAlpha知识引擎提交查询,并得到答案。
1703878228
1703878229 ·blockchain。blockchain数据源允许用户访问其他区块链的数据。可以提交给blockchain数据源的查询包括bitcoin blockchain height、litecoinhashrate、bitcoin difficulty、1NPFRDJuEdyqEn2nmLNaWMfojNksFjbL4S balance等。
1703878230
1703878231 ·IPFS。IPFS数据源允许用户抓取IPFS中存储的文件。
1703878232
1703878233 ·nested。nested数据源是一个元数据源,它不提供访问其他服务的权限。它用来提供简单相加逻辑,允许单个查询在任何可用数据源的基础上进行子查询,并产生一个单独字符串作为结果,例如:
1703878234
1703878235
1703878236
1703878237
1703878238 ·computation。computation数据源允许特定应用的可审计执行进入安全的链下状,也就是说,它允许抓取应用的链下执行结果。在退出前,该应用必须在最后一行打印查询结果(在标准输出栏)。执行环境用Dockerfile描述,创建和运行该文件会立即启动主应用。Dockerfile初始化和应用执行应当尽快结束:在AWS t2.micro实例中最长执行时间为5min。这里考虑AWS t2.micro实例,因为Oraclize用它执行该应用。由于数据源输入是包含此类文件的ZIP文档包的IPFS多个哈希(Dockerfile和任何外部文件依赖,且Dockerfile必须位于档案的根目录里),用户应当事前小心地准备这个档案,并推送给IPFS。
1703878239
1703878240 在写本书时,已经有这些数据源,但是未来还可能有更多数据源。
1703878241
1703878242
1703878243
1703878244
1703878245 区块链项目开发指南 [:1703875370]
1703878246 区块链项目开发指南 7.1.3 真实性证明
1703878247
1703878248 尽管Oraclize是可信服务,用户可能还想检查一下Oraclize返回的数据是否真实,也就是说,检查它在传输过程中是否受到Oraclize或者其他人的操控。
1703878249
1703878250 Oraclize提供的TLSNotary proof的来源是可选的,包括URL、区块链以及nested和computation数据源。该proof对WolframAlpha和IPFS数据源不可用。目前,Oraclize仅支持TLSNotary proof,但是未来可能支持一些其他验证方式。目前,TLSNotary proof需要手动验证,但是Oraclize已经应用于链上proof验证,也就是说,智能合约代码可以自己验证TLSNotary proof同时从Oraclize接收数据,如果proof结果是非法的,就丢弃该数据。
1703878251
1703878252 这个工具(https://github.com/Oraclize/proof-verification-tool)是Oraclize提供的开源工具,以验证TLSNotary proof。
1703878253
1703878254
1703878255 使用Oraclize或者验证proof不需要理解TLSNotary的工作原理。验证TLSNotary proof的工具是开源的,因此,如果它包含任何恶意代码,就会很容易捕获,故可以信任这个工具。
[ 上一页 ]  [ :1.703878206e+09 ]  [ 下一页 ]