以太坊智能合约我可以掩盖/隐藏“合同创建者”地址吗?如果需要,我是否需要?

时间:2019-01-05 17:50:30

标签: ethereum smartcontracts

我是产品经理,不是区块链编码员,正在寻求第二意见和一些常规的良好实践建议。我有一个粗体的问题,其余的是背景。​​

背景

  • 我们有一个正在开发的应用程序,它将用户信息写入ETH区块链上的智能合约中。
  • 我们部署的SC仅包含信息,没有以太。
  • 每个用户都有自己的SC,该SC仅存储该用户的特定信息。
  • 我们的应用程序允许用户编辑和更新此信息,然后将加密后的更改上传到自己的SC中。
  • 用户的SC地址已“捆绑”到他们自己的以太钱包中(很抱歉,缺乏正确的术语)。
  • 我在Etherscan(Ropsten)上看到一个Contract Creator地址,该地址对于我们的App创建的所有SC都是一个常量。
  • 我假设合同创建者地址对我们来说是唯一的,这是我们创建的代码,因此它仅代表我们的应用程序部署智能合同。
  • 我希望每个SC地址只有其所有者和我们才知道。现在,我看到任何人都可以访问此信息。

我的担忧:

  • 如果我们的代码中存在可利用的漏洞,那么不良行为者就会有要攻击的合同地址列表。

  • 对我们来说,最坏的风险是,如果我们的公众访问代码中存在缺陷,那么行为不端的人可能会以未加密状态访问每个用户的数据。

  • Bad-Actor然后使用该缺陷以及他们可以从Etherscan获取的智能合约地址列表来下载多个用户数据。

我的问题

这些现实的担忧吗?

  • 如果是的话,我们可以考虑采取哪些总体方针来减轻这些风险
  • 如果可以的话,我可以掩盖Etherscan中创建者的地址而不会带来其他负面影响

开发人员已外包给第三方和与之共事的优秀人士。但是,我目前正在仔细检查,以寻求替代的意见,而不只是他们的意见。

如果Ive提供的信息令人困惑或不完整,我们深表歉意。

提前感谢您的时间。

1 个答案:

答案 0 :(得分:0)

  

我希望每个SC地址只有其所有者和我们才知道。现在,我看到任何人都可以访问此信息。

如您在此处所述,有关区块链的数据(即交易哈希,合约地址和用户地址)是透明可用的。这是由以太坊设计的,并允许分类账的可追溯性。

此外,智能合约数据可能潜在可用于以太坊网络中的任何参与者。但是,这基于以下条件:

  1. 为了访问智能合约数据,参与者需要合约ABI。该接口允许编写代码以与智能合约方法进行交互。现在,了解该ABI可以很容易地反向生成,并且具有有关DApp如何与现有智能合约进行交互的足够详细信息。
  2. 如果您的智能合约逻辑具有可利用的漏洞,则网络上的恶意参与者可能会利用此漏洞。这就是为什么合同应该写得很好并且要以接近(如果不是)100%的代码覆盖率进行单元测试的原因。您还应该确定每种合同场景中的潜在参与者,并确保您的测试用例适当地涵盖了这些场景。
  

如果是这样,我们可以考虑采取哪些总体方针来减轻这些风险

鉴于您所描述的合同方案,如果有权访问这些用户数据智能合约的唯一参与者是他们自己的用户,那么您只需要应用类似于{{ 3}}转换为您的智能合约逻辑。在链接的示例中,对智能合约数据的访问仅限于单个特定的以太坊用户地址。

  

如果可以的话,我可以掩盖Etherscan中创建者的地址而不会带来其他负面影响

好的。听起来您当前正在使用一个帐户来部署智能合约,因此创建者地址是不变的。 (旁注:我不确定您为什么要使用此帐户代表用户部署合同,听起来用户应该在部署自己的智能合同)。无论如何,您每次部署智能合约时都可以简单地创建一个新的代理用户地址。但是,我认为这样做没有任何好处,而这只是function modifier的一个示例。