【发布时间】:2021-04-23 08:04:48
【问题描述】:
我正在研究在我们的赌场中使用 智能合约 的可能性。因为我们不想让玩家为他们玩的每一手牌支付费用,我们希望使用不修改状态的 "view" 交易,因此 不需要任何气体。然而,这带来了以下问题:“由于交易没有保存在区块链上,很难(或不可能?)向某人证明你确实调用了智能合约函数(并且你只调用了一次) .
我想到的一个选项是让 client(browser) 调用智能合约上的函数。但是,由于我们的后端也需要“知道”结果,玩家当然可以在自己的一端更改结果,并发送错误的结果。
另一方面,如果我们让我们的后端调用智能合约上的函数,那么应该有一种方法可以向玩家证明我们确实调用了智能合约,我们只调用了一次。我觉得很难做到。
一个想法是从客户端调用智能合约,使用公钥加密数据并将其发送到后端以便它可以解密它们并查看结果。但是,玩家不知道服务器是否真的使用了这些数据,我什至不确定用公钥加密是否有任何意义,因为智能合约功能的执行是公开的,所以我想每个人都会知道输入。
所以,我的问题是,有没有办法让玩家相信我们真的调用了智能合约并且只调用了一次?
编辑: 我想到的另一个想法是每个游戏会话使用一对私钥/公钥,以便在会话结束时玩家找到私钥,如果我们将所有投注结果的历史存储在客户端上,玩家可以使用他得到的私钥检查这些是否是真实的结果。
仍然存在一个问题,玩家是否会在智能合约上加密之前看到下注结果
【问题讨论】:
标签: cryptography rsa blockchain ethereum solidity