问题描述
将智能合约代码发布到区块链后,每个人都可以看到我的源代码是否正确?
每个人都可以看到应用程序的业务状态和保存在区块链中的信息是否正确?
例如,以下示例向区块链发送请求,从区块链接收响应。在这种情况下,任何人都可以看到源代码和业务信息吗?该应用程序通过solidity使用以太坊区块链。
https://docs.microsoft.com/en-us/azure/blockchain/service/send-transaction
是否可以保护源代码,并且用户只能通过UI查看业务状态?像传统的Web应用程序一样。
解决方法
在任何区块链中,区块链网络或财团的参与者都可以看到业务信息/状态。任何智能合约状态更改都是通过交易参与者之间共享的交易完成的。因此,通过该智能合约公开的内容/操作对于该交易的参与者也是可见的,以便他们可以验证其有效性/对于是否接受/拒绝该交易具有共识。
要回答您的问题,“所有人”可能看不到内容,除非它是您正在处理的公共智能合约/交易。在公共交易/合同的情况下,该公共链可见。如果是私人交易,则只有私人交易的参与者才能看到。
参考:Q&A
,智能合约状态以及存储在区块链中的任何信息对于区块链外部的所有观察者都是可见的,甚至包括本地变量和私有变量。 (其他智能合约不一定可见)。
可靠性源代码本身并不存储在区块链上,而是存储在已编译的字节码中,该字节码由以太坊虚拟机的低级机器指令(称为操作码)组成。尽管无法轻松地将其转换回源代码(即所有变量名都将丢失),但它的确显示了有关您代码执行情况的信息。