黑客马拉松显示对不可升级的桥智能合同的偏爱。为什么开发人员在构建协议或dapp时会将此视为一种优势?说它是“可升级的”不是更好吗?
对于(1)开发人员和(2) dapp/合同的日常用户来说,可升级合同到底是什么,以及可升级性对这两方的影响?
发布于 2022-12-09 05:42:10
可升级契约是一个可以在保持相同存储(数据)的同时更改逻辑的契约。例如,您可以在可升级合同中添加新功能,而不会丢失其任何数据。
从开发人员的角度来看,它通过使用两个契约来工作:代理契约和逻辑(实现)契约。每个人都与代理契约交互,代理契约简单地将事务中继到逻辑契约。通过更新代理中的合同引用(地址),可以将逻辑契约转换为新的契约。所有数据都存储在代理合同中。
从用户的角度来看,两者并没有太大的差别。它们只是与代理契约(它显示实现契约的功能)进行交互,甚至可能没有注意到底层逻辑契约是否被切换(升级)。
一些人认为可升级性不好的原因是某些实体具有改变逻辑的能力。从理论上讲,他们可以通过转换合同,把所有的资产都转让给他们,从而支持这个项目。如果没有可升级性,则不存在此攻击矢量。
发布于 2022-12-09 05:42:43
可升级契约是智能契约,存储和逻辑存储在两个不同的地址上。这允许在部署契约后更改逻辑(在https://blog.chain.link/upgradable-smart-contracts/上有更多信息)。这些问题的主要问题是集中。我们允许合同所有者在任何时候更改逻辑(可能是恶意的)。不太重要,但仍然值得注意的是,这会带来额外的天然气成本。
对于开发人员来说,可升级能力是一把双刃剑,因为在升级时,您必须注意原始合同的存储布局。
对于最终用户来说,除了我前面提到的问题(集中化问题+增加的天然气成本)之外,它并没有真正改变任何事情。
发布于 2022-12-09 17:57:48
有人可能更喜欢不可升级的合同的原因很简单:你看到的是你得到了什么。例如,如果你投资一个不能升级的AMM,那么你就知道AMM总是遵循合同中的规则,而不是偷你的钱。
如果合同是可升级的,业主可以升级到一个偷你的钱。因此,一个可升级的合同并不完全是一个合同,但更像是一个复杂的方式,相信别人的钱。
https://ethereum.stackexchange.com/questions/140893
复制相似问题