首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >令牌&智能合同“升级”

令牌&智能合同“升级”
EN

Ethereum用户
提问于 2020-01-22 12:17:42
回答 2查看 137关注 0票数 0

我不是很专业,但我有个问题。

假设智能合同正在升级为新合同,那么新合同中是否有可能不向某些钱包发送新的令牌?

因此,例如,如果钱包XXXXX是一个已知的黑客基金的稳定者,那么钱包XXXXX不可以从新合同中得到代币吗?

EN

回答 2

Ethereum用户

发布于 2020-01-22 13:00:07

是。您可以在契约中实现一个简单的逻辑:

例如:

代码语言:javascript
复制
 mapping(address => bool) public hacker;   
     function doSomething() public {
         require(!hacker[ADDRESS_TO_CHECK]);
        //continue
    }
票数 1
EN

Ethereum用户

发布于 2020-01-22 20:14:10

假设智能合同正在升级

让我们把它拆开。首先,我认为这取决于你所说的“升级”是什么意思。

显式行政特权

合同可以写成黑名单。因此,它只需要输入一个特殊的用户谁决定谁列入黑名单,每个人都会看到的程序,以黑名单,或决定参加或不。这两种情况都有很好的论据,这取决于您想要证明什么。

代码语言:javascript
复制
function blacklistUser(address badguy) public onlyAdmin {
  badguys[badguy] = true;
}

在其他地方,确保这不是个坏人:

代码语言:javascript
复制
require(!badguys[msg.sender], "You are a badguy. Go away.");

诚然,这一概念过于简化,只是说明了这一概念。

在这种情况下,契约本身不需要升级,因为它清楚地说明了管理员在当前合同上下文中拥有的特殊特权。

可变逻辑

有几种模式用于启用对契约逻辑本身的更改。也就是说,一种使旧规则不再适用的方法,现在就开始新的规则。

开发人员将把这些可升级的合同称为。当它存在时,可升级性是显而易见的,这在很大程度上是因为它的实现并不简单。让这一切发生的代码真的很突出。我无法想象有一种方法可以对代码评审人员隐藏它,因为有这么多额外的东西。

我不想做一个例子,因为这是一个很大的话题,只是说这个想法是从一开始就把逻辑委托给可互换的部分,然后实现一种交换组件的方法。这些委托和交换逻辑的方法是非常明显的。

在大多数情况下,可升级的合同挫败了不可变软件的保证。任何事情都是可能的,因为我们不能确定这件事将来会做什么。

不可升级的合同不能转换为可升级的合同。也就是说,如果没有升级能力的迹象,那么你可以放心,规则不会改变。

如果您对此主题感兴趣,可以通过链接查看此概述:https://medium.com/hackernoon/trustless-upgrades-in-solidity-bf0bd4047d28

希望能帮上忙。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/79217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档