使用云算宝iExec为以太坊实现脱链人工智能计算

什么是人工智能?

人工智能通常被理解为机器或系统通过诸如“学习”和“解决问题”之类的认知过程来模仿类似于人类行为的能力。在计算领域,最接近这一范式的技术是机器学习和深度学习。然而,更一般来说,AI代表系统以“智能”行事的能力,即表示为了实现某一特定目标而解决一个相对复杂和高层次问题的逻辑。这样的定义整合了许多属于人工智能领域的其他技术,包括语音识别,自然语言处理,虚拟助手,生物识别和决策管理。如果您对AI感兴趣,我们建议您阅读Ben Dickson 写的关于解开AI的神秘面纱的帖子。

 

以太坊在人工智能计算的限制

 

区块链对“受信任的第三方”和交易安全问题做出了有力的回应,但是效果如何呢?

 

以太坊通过智能合同可以在它的区块链上执行程序。Solidity,即开发智能合同的语言是图灵完备的,也就是说它能够描述在计算机上运行的任何算法。知道这一点,我们可能想要在区块链上部署任何程序或游戏。然而,由于以太坊的虚拟机具有有限的计算能力,所以无法执行对资源有大量需求任务。

 

让我们举一个象棋游戏的例子。除了其他东西之外,游戏需要一些逻辑控制来检测移动是否有效或者游戏是否结束。即使检测到每一次移动的对峙或僵持也是非常昂贵的,所以并不能在链上计算。它需要区块链提供太多的处理。这个博客的文章非常准确地解释了这个问题。

 

在使用有较高需求程序的同时,从区块链的优点中受益的解决方案是使用一个混合的解决方案,终止程序执行、需要的处理能力和区块链不能提供的内存,脱链。换句话说,昂贵的任务将运行在与以太坊区块链分离的基础设施上,与之相互作用,并将其用作客户端和程序之间可靠的通信渠道。这就是iExec平台所提供的功能。

 

 

Stockfish

Stockfish是一款基于Glaurung的国际象棋引擎,Glaurung是由Tord Romstadis创建的另一款开源棋牌引擎,于2004年发行,被认为是当今最强大的免费棋牌引擎之一。我们已经在iExec基础设施上部署了Stockfish,允许通过智能合同进行交互。智能合同为每个玩家存储游戏数据,但不会进行任何国际象棋AI计算处理。它只是允许客户端和国际象棋引擎之间通信。

测试

要玩Stockfish,你有两个途径:

使用专用的Web前端

使用Solidity浏览器

 

用网页前端

专用前端可见http://52.44.51.109/stockfish/

 

它包括一个文本框,您可以从左到右编辑您的动作和三个按钮,允许分别执行移动的提交,取消玩家和Stockfish引擎的最后一个动作,并开始一个新的游戏。用于描述移动的格式是长代数格式(例如,“a2a4”表示将该块从“a2”移动到“a4”)。此外,玩家只能移动白棋,因为他是目前唯一能够发起游戏的人。如果象棋引擎没有在运行,不要撤销移动,因为它会破坏游戏。当一个交易被发送时,所有的按钮都变灰,但是如果由于某种原因,在Stockfish已经进行移动之前重新加载页面,按钮将再次被点击。

 

动画网址https://cdn-images-1.medium.com/max/800/1*sc-fBYsgG_yYHUannEipQA.gif

 

Solidity浏览器

浏览器Solidity可见https://ethereum.github.io/browser-solidity/

首先要做的是在控制台中填写合同。您只需复制/粘贴智能合同的代码,请访问https://github.com/iExecBlockchainComputing/bridge_stockfish/blob/master/stockfish.sol

 

现在你需要实例化合同。你可以通过右侧的面板点击Stockfish下的绿色按钮“At Address”来实现。应该出现一个弹出窗口要求一个地址,你必须提供这个智能合同的地址是0x91c545a43d09a8f6ea88320b13f26666f8109459

 

选择网络时,请务必选择ropsten。

 

现在您可以使用按钮getResult,undoMove,flushGame和setParam玩Stockfish。他们各自都允许您获得智能合同的结果,撤消您的最后一个动作,开始一个新的游戏并提交一个新的动作。再次小心,stockfish没有运行的时候,请不要撤销你的最后一个动作,理由与网页前端部分相同。要使用setParam,你应该写在单引号之间。

动画网址https://cdn-images-1.medium.com/max/800/1*U3svfOopr4E7ZGsV0KmiYg.gif

 

 

我们非常期待您在我们的Slack#beta测试版频道给予反馈和评论。