【问题标题】:Visibility of Source Code and Business Information in Ethereum blockchain以太坊区块链中源代码和业务信息的可见性
【发布时间】:2020-12-21 09:42:16
【问题描述】:

智能合约代码发布到区块链后,每个人都可以看到我的源代码是否正确?

每个人都可以看到应用程序的业务状态和保存在区块链中的信息是否正确?

例如,下面的示例向区块链发送请求,从区块链接收响应。在这种情况下,任何人都可以看到源代码和业务信息吗?该应用通过 Solidity 使用以太坊区块链。

https://docs.microsoft.com/en-us/azure/blockchain/service/send-transaction

是否可以保护源代码,用户只能通过 UI 看到业务状态?像传统的 Web 应用程序一样。

【问题讨论】:

    标签: ethereum smartcontracts azure-blockchain-workbench azure-blockchain-service


    【解决方案1】:

    在任何区块链中,区块链网络或联盟的参与者都可以看到业务信息/状态。任何智能合约状态的更改都是通过交易参与者之间共享的交易完成的。因此,通过该智能合约公开的内容/操作对该交易的参与者也是可见的,因此他们可以验证其有效性/就是否接受/拒绝达成共识。

    要回答您的问题,“每个人”可能无法看到内容,除非它是您正在处理的公共智能合约/交易。在公共交易/合同的情况下,该公共链可见。如果是私有交易,那么它只对私有交易的参与者可见。

    参考:Q&A

    【讨论】:

      【解决方案2】:

      智能合约状态和存储在区块链中的任何信息对区块链之外的所有观察者都是可见的,甚至是本地和私有变量。 (它不一定对其他智能合约可见)。

      solidity 源代码本身不存储在区块链上,只有编译后的字节码,由以太坊虚拟机的低级机器指令(称为操作码)组成。虽然这不能轻易地转换回您的源代码(即所有变量名都将丢失),但它确实揭示了有关您的代码正在做什么的信息。

      【讨论】:

      • 谁是观察者?有哪些措施可以保护代码(甚至是机器代码)和业务信息,例如在客户端-服务器模型中的服务器端?
      • 对于公共网络(主网),观察者可以是任何人。对于私有/内部网络,观察者是可以访问网络的任何人。因此,只有在专用网络中,机器代码或业务信息才能受到保护。
      猜你喜欢
      • 2017-10-28
      • 2017-08-07
      • 2019-12-09
      • 2018-12-05
      • 1970-01-01
      • 2022-07-17
      • 2021-07-27
      • 1970-01-01
      • 2022-10-21
      相关资源
      最近更新 更多