证明您在Solidity中执行了视图函数



我正在研究在我们的赌场中使用智能合约的可能性。因为我们不想让玩家为他们的每一手牌支付费用,我们想使用"视图">不修改状态的事务,因此不需要任何气体。然而,这引入了以下问题:;由于交易没有保存在区块链上,很难(或不可能?)向某人证明你真的调用了智能合约功能(而且你只调用过一次)。

我考虑的一个选项是让cclient(浏览器)调用智能合约上的函数。然而,由于我们的后端也需要"知道";结果,玩家当然可以改变自己的结果,并发送错误的结果。

另一方面,如果我们的后端调用智能合约上的函数,那么应该有一种方法向玩家证明我们真的调用了

智慧合约其中一个想法是从客户端调用智能合约,使用公钥加密数据,并将其发送到后端,以便对其进行解密并查看结果。然而,玩家不知道服务器是否真的使用了这些数据,我甚至不确定用公钥加密是否有意义,因为智能合约功能的执行是公开的,所以我想每个人都会知道输入。

所以,我的问题是,有没有办法让球员相信我们真的称之为智能合同,而且我们只称过一次?

编辑:我想到的另一个想法是在每个游戏会话中使用一对私钥/公钥,这样在会话结束时,玩家就可以找到私钥,如果我们将所有投注结果的历史记录存储在客户端上,玩家可以使用他得到的私钥检查这些结果是否是真实的。

玩家是否会在智能合约上加密之前看到投注结果,这仍然是一个问题

有没有办法让玩家相信我们真的称之为智能合约,而且我们只称过一次?

玩家可以在钱包中签署一条消息,然后你的服务器用这条消息调用智能合约。智能合约对消息进行解密并根据消息进行操作。交易由您的服务器推送到网络,服务器有一个热钱包,用于支付ETH费用。

或者,您可以使用像Optimism这样的第二层网络,那里的交易成本更便宜。你也可以使用带有中继的加油站网络,让用户用代币而不是以太币付款。

  1. 在区块链上实现Casino之前,请检查交易成本。有时每笔交易的费用可能是30美元,你会用这些费用玩游戏吗?目前,这些交易成本只能由进行货币套利的交易机器人支付
  2. 调用合约函数是免费的。您可以从合同中读取任何数据,而无需发布交易。不需要汽油。这只适用于不改变国家的职能。你可以自己将数据输入区块链,用户可以免费阅读
  3. 如果没有存储,您想做的事情是不可行的,您需要以某种方式标记READ操作至少发生过一次,并且为此,您需要发出WRITE操作(这是有成本的)
  4. 数据未使用公钥加密。数据使用私钥加密,公钥用于确定签名者的身份。但您在这里谈论的是对称加密,即两个实体都必须持有用于加密数据的密钥
  5. 要在区块链上存储任何内容,您需要发送交易。想象一下,以太坊是一个固态硬盘,每次你想存储文件时,你都需要发送一个交易,并用你的私钥签名。这就是它的工作原理。阅读是免费的,但为了储存一些东西,没有交易是不可能的。你能用只读硬盘创建一个应用程序吗?不
  6. 你确定你需要以太坊吗?如果你只需要存储一些数据,也许某种对存储普通数据友好的区块链会起作用
  7. 也许,您可以将用户的会话存储在0xMesh网络中,作为某个东西的Maker Order。这不是故意的,但它是对等网络,它是安静的大,发送订单是免费的,但取消订单需要付款。所以,这个方案可能对你有用。用户的会话将以与0x Mesh顺序相同的方式过期。免费。所有订单都已签署,所以它有点适合您的需求。但这并不是为了游戏

相关内容

最新更新