0

在游戏示例中的 plutus playground 中有一个功能

-- | The "startGame" contract endpoint, telling the wallet to start watching
--   the address of the game script. See note [Contract endpoints]
startGame :: MonadWallet m => m ()
startGame =
    -- 'startWatching' is a function of the wallet API. It instructs the wallet
    -- to keep track of all outputs at the address. Player 2 needs to call
    -- 'startGame' before Player 1 uses the 'lock' endpoint, to ensure that
    -- Player 2's wallet is aware of the game address.
    startWatching gameAddress

我不喜欢

Player 2 needs to call
'startGame' before Player 1 uses the 'lock' endpoint, to ensure that
Player 2's wallet is aware of the game address.

游戏启动真的没有办法连接游戏吗(lock调用函数)?

我们需要这个功能吗?我们可以只使用guesslock函数吗?

我可以理解startWatching轻钱包/客户端(使用 merkle 证明来验证交易)如何有意义,但不理解startGame功能对完整客户端有何用处。(其实我没有,轻量级的客户端应该还是可以从其他需求中询问信息)

4

1 回答 1

2

正如您所说的那样,需要的原因startWatching与 Plutus 合约可以访问的钱包的功能有关。

在模拟器的第一次迭代中,我们采用了 Plutus 合约只能对区块链状态进行前瞻性查询的保守假设。也就是说,我们假设由于某些钱包的资源限制,不可能扫描区块链的任意部分。结果是所有针对这个限制性钱包接口编写的合约都必须调用startWatching,然后才能做任何有趣的事情。

实施模拟器时,没有 Plutus 合约可以期望的钱包功能规范——事实上,构建模拟器的动机之一是帮助我们编写规范。而且很有可能当前的限制性界面(仅限前瞻性查询)将被更强大的东西所取代,这样startGame就不再需要端点了。

于 2019-09-09T13:47:23.200 回答