我刚开始聪明的合同开发。我构建了几个示例项目,并将它们部署到我的专用网络中。因此,现在我正在研究智能合同安全方面的最佳做法,以及保护我的知识产权不受那些想窃取它并将其用于自己目的的人的影响。
据我所读,智能契约字节码在区块链中是可见的,但据推测,不可能将这些字节码转换为坚实的代码。即使是这样,是否仍然需要从块链中提取字节码,复制它们并将其用于您自己的目的?
请给我一些最佳做法,在处理智能合同在安全和保护我的知识产权。
发布于 2017-08-15 02:09:45
抱歉让你失望了..。
无法从字节码中恢复原始代码,因为信息在编译过程中丢失。但是,如果字节码是可检索的,则始终可以进行反汇编。由于契约的代码必须由所有完整节点和矿工执行,所以字节代码必须随时可供这些方使用。实际上,由于任何人都可以是节点,这意味着每个人都可以获得字节码。作为一名前程序集程序员,我将断言在这种情况下不可能完全保护您的IP。如果它在经济上是有益的,或者只是简单有趣的,那么它很可能会被反向设计。
不幸的是,我无法提供最佳实践;法律途径可能是您的最佳选择(但不是专利或版权;在这里并不特别有用)。充其量,我认为您可以使用一些反反汇编器技术,但这将增加执行您的合同的成本。作为一个个人从我所拥有的软件中删除反盗版代码以加速它的人,我会要求你尝试一些其他的方法来使你的业务(我想)更好地适应逆向工程。
考虑到即使使用时钟倾斜检测、指令定时检查、基于硬件的保护、加密指令,以及测试物理硬件只会减慢最佳破解速度的检查,在构建更好的产品/业务方面,几乎可以肯定的是更好地利用您的时间/精力,而不是试图在EVM上抵御这种情况(EVM是一个比真正的计算机简单得多的系统,因此由于可以在字节码中使用的东西减少了,所以更容易失败)。如果您必须问这个关于最佳实践的问题,那么几乎可以肯定的是,有一些人(更不用说作为一个团队)能够打破您的混淆工作,而不是您能够实现混淆。
发布于 2017-08-15 05:02:00
我有时会就智能合同的开发、部署、安全等问题向人们咨询。我告诉我的所有客户,如果智能合同不是完全开放的,他们就不应该与它交互。
我们不想训练人们与代码交互,如果代码不是开源的话,它可以用你的钱做任何它想做的事情。
您的业务模型应该包括完全开放、可靠的源代码。如果没有,我想(我也希望)你的收信人很少。
https://ethereum.stackexchange.com/questions/24361
复制相似问题