以太坊智能合约。我可以屏蔽/隐藏合同创建者地址吗?如果可以,我需要吗?

Posted

技术标签:

【中文标题】以太坊智能合约。我可以屏蔽/隐藏合同创建者地址吗?如果可以,我需要吗?【英文标题】:Ethereum Smart Contracts. Could I mask / hide the Contract Creator address and if so, do I need to? 【发布时间】:2019-05-31 22:48:03 【问题描述】:

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

背景:

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

我的担忧:

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

对我们来说最糟糕的风险是,如果我们可公开访问的代码中存在缺陷,不良行为者可能会以未加密状态访问每个用户的数据。

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

我的问题

这些是现实的担忧吗?

如果是这样,我们可以参考哪些总体方向来降低这些风险 如果是这样,有没有办法可以在 Etherscan 中隐藏 Creator 地址,而不会产生其他负面影响

开发人员是外包的第 3 方和优秀的合作伙伴。但我目前正在寻找一种替代意见,而不只是他们的意见。

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

提前感谢您的宝贵时间。

【问题讨论】:

【参考方案1】:

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

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

此外,智能合约数据可能可供以太坊网络中的任何参与者使用。但是,这是基于以下几点:

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

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

鉴于您所描述的合约场景,如果应该有权访问这些用户数据智能合约的唯一参与者是他们自己的用户,那么您只需应用类似于 @987654322 的东西@你的智能合约逻辑。在链接的示例中,对智能合约数据的访问仅限于单个特定的以太坊用户地址。

如果是这样,我可以在 Etherscan 中隐藏 Creator 地址,而不会产生其他负面影响

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

【讨论】:

Ben,非常感谢您抽出宝贵时间提供此见解。非常感谢。您的意见给了我很多考虑。为了回答您的一个问题,我们的应用程序代表用户部署 SC。我们的应用程序是否仍然可以代表用户执行此操作,但将用户帐户设为创建者地址?如果是这样,我将要求开发人员实施。非常感谢您的帮助。 @AdamDaniel,这取决于您如何连接应用程序。如果用户通过他们的以太坊帐户向应用程序进行身份验证,则应用程序基本上可以为用户部署合约,因此“创建者地址”将是用户的地址。对此的替代方案是让服务使用“您”(作为应用程序开发人员)拥有的处理所有合同部署的以太坊帐户。但是,在您的情况下,第一种情况似乎是最适用和最有益的。 再次非常感谢。我有一种感觉,要到达我想去的地方需要一些代码更改,这不是我第一次说 :) 非常感谢。

以上是关于以太坊智能合约。我可以屏蔽/隐藏合同创建者地址吗?如果可以,我需要吗?的主要内容,如果未能解决你的问题,请参考以下文章

以太坊gas limit啥意思

区块链2.0以太坊漫谈

以太坊智能合约入门项目-众筹项目

合约代码无法存储,请检查您的gas限制:以太坊智能合约部署失败:

以太坊合约地址计算

智能合约重构社会契约以太坊总结