保护关于可靠性的敏感信息的最佳实践? [英] Best practice for protecting sensitive information on solidity?
本文介绍了保护关于可靠性的敏感信息的最佳实践?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的合同中有一个字段。大概是这样的:
contract MyContract {
string private secretField
}
function getSecretField() public view returns {
... some controls here...
return secretField;
}
我希望从我的后端服务器访问该secfield域,并保护它不受任何其他请求者的影响。此操作的最佳实践是什么?
推荐答案
如果它位于公共区块链(大型网、远程测试网等)上,则始终可以通过从离链应用程序查询包含secretField
值的storage slot来访问它。不考虑密度private
可见性修饰符,因为存储查询是在较低层执行的。
示例:如果secretField
是(在此地址上)定义的第一个协定的第一个属性,则其值存储在存储槽0中。
但如果您只想对链上请求者隐藏它,则可以保留该属性private
,并要求只从某个地址访问该getter。
// removed `view` because it's going to interact with the transaction data
function getSecretField() public returns {
// reverts if the sender address is not 0x123
require(msg.sender == address(0x123);
return secretField;
}
请注意,您的后端应用程序必须send
从0x123
地址进行交易才能访问数据。简单call
不会返回任何内容,因为getSecretField()
不再是view
函数。
这篇关于保护关于可靠性的敏感信息的最佳实践?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文