打字猴:1.703878411e+09
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服务端的公钥。现在用户可以使用前面命令的输出代替数据源和/或数据源的输入。
1703878424
1703878425
1703878426 为了防止误用加密的查询(即重播攻击),第一个用一个特定加密查询Oraclize的合约成为合法的所有者。任何重复使用完全相同的字符串的合约将不被允许使用它,并且将接收一个空的结果。因此,切记在使用加密查询重新部署合约时,总是要生成新的加密字符串。
1703878427
1703878428 解码数据源
1703878429
1703878430 还有一个称为decrypt的数据源,它用于解码加密的字符串。但是这个数据源不返回任何结果,否则任何人就都有能力解码数据源和数据源的输入了。
1703878431
1703878432 它是专门应用于嵌套数据源的,用于对部分查询进行加密。这是它唯一的使用例子。
1703878433
1703878434
1703878435
1703878436
1703878437 区块链项目开发指南 [:1703875374]
1703878438 区块链项目开发指南 7.1.7 Oraclize Web IDE
1703878439
1703878440 Oraclize提供了一个Web IDE,使用它就可以编写、编译和测试以Oraclize为基础的应用(参见http://DApp.Oraclize.it/browser-Solidity/)。
1703878441
1703878442 如果访问该链接,将注意到它和Browser Solidity看起来一模一样,它实际上就是Browser Solidity添加的一个额外功能。为了理解这个功能是什么,我们需要更深入地理解Browser Solidity。
1703878443
1703878444 Browser Solidity不仅允许用户为合约编写、编译和生成web3.js代码,还允许测试合约。到目前为止,为了测试合约,我们设置一个以太坊节点并向它发送交易。但是Browser Solidity可以不用连接至任何节点就执行合约,所有操作都在内存中进行。之所以能够这样,是因为使用了ethereumjs-vm(EVM的一种JavaScript实现)。用户可以使用ethereumjs-vm创建自己的EVM和运行字节码,也可以通过提供目标URL来配置Browser Solidity,以使用以太坊节点。UI的信息量很大,用户可以自己尝试一遍。
1703878445
1703878446 Oraclize Web IDE的特殊之处在于,它在in-memory执行环境下部署Oraclize合约,这样就不需要连接到测试网或者主网节点,但是使用Browser Solidity时必须连接到测试网或者主网节点,以测试Oraclize API。
1703878447
1703878448
1703878449 如需更多关于Oraclize的资源,请访问https://dev.Oraclize.it/。
1703878450
1703878451
1703878452
1703878453
1703878454 区块链项目开发指南 [:1703875375]
1703878455 区块链项目开发指南 7.2 处理字符串
1703878456
1703878457 在Solidity中,处理字符串不像在其他高级编程语言(例如JavaScript、Python等)中那么简单。因此,许多Solidity开发人员使用多种库和合约,以简化字符串的处理。
1703878458
1703878459 strings库是最常见的字符串库。它通过把字符串转换为slice(切片),来进行添加、连接、分割、比较等操作。slice是一个包含字符串长度和字符串地址的数据类型。由于一个slice只需要指定offset(位移)和length(长度),因此复制和操作slices比复制和操作它们所引用的字符串要高效得多。
1703878460
[ 上一页 ]  [ :1.703878411e+09 ]  [ 下一页 ]