许多合约,比如游戏合约,通常需要保密一些数值。比如,存储玩家的下一步行动或等着被猜的数字。虽然用户或合约都不能直接读取私有变量,但这仍难以保证一定能够保密。在Solidity语言中,使用private似乎是存储秘密值的一个非常简单的方法。然而,这并不会限制任何人读取合约的状态。这是因为合约交易中存储的数据具有可读性。以太坊钱包系统软件开发
如何读取私有状态变量
以太坊上的状态变更通常通过交易来实现。如果接收账户是交易的合约,那么EVM(以太坊虚拟机)将运行合约代码,或直到代码运行完毕或直到执行过程耗尽所有gas。以太坊钱包系统软件开发
每项交易的数据字段规定了细节(如调用哪种方法和输入参数等)。比如,在合约中修改私有状态的变量,你需要通过交易将“private”数值传递给setter方法。考虑到每个交易数据都对所有节点可见,所以如果知道一项交易,就可以轻易读取其中的私有变量。
存储私有信息的一些方法
在合约中,你可能会有存储私有变量的需求,但这个问题会很复杂。对于存储私有信息,人们已经进行了大量的模拟尝试,其中有一个方法很有趣,它采用的是提交显示模式(commit reveal pattern)。在这个方法中,用户需要首先提交私有信息的哈希,当所有其他人也提交了他们的私有信息的哈希时,每个参与者再亮出自己的投票,之后可以对此进行验证。
以太坊钱包系统软件开发
深圳网站/软件服务相关信息
11小时前
13小时前
19小时前
1天前
2天前
2天前
3天前
3天前
12月23日
12月23日