保护关于可靠性的敏感信息的最佳实践? [英] Best practice for protecting sensitive information on solidity?

查看:15
本文介绍了保护关于可靠性的敏感信息的最佳实践?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的合同中有一个字段。大概是这样的:

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;
}
请注意,您的后端应用程序必须send0x123地址进行交易才能访问数据。简单call不会返回任何内容,因为getSecretField()不再是view函数。

这篇关于保护关于可靠性的敏感信息的最佳实践?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆