首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向投资者发送ethersJS代销券

向投资者发送ethersJS代销券
EN

Ethereum用户
提问于 2023-03-28 09:53:38
回答 1查看 20关注 0票数 1

在我的众卖合同中,我提供了一个索赔功能,让投资者可以索取他们的代币(拉)。这没什么问题。

代码语言:javascript
复制
function claim() external nonReentrant {
    claimInvestor(msg.sender);
}

然而,我想提供的功能,也把他们的令牌从合同管理(PUSH)交付给投资者。第一个想法是这样的:

代码语言:javascript
复制
function claimAll() external nonReentrant onlyOwner {
    for (uint i = 0; i < investors.length; i++) {
        claimInvestor(investors[i]);
    }
}

然而,这似乎是一个不好的做法,因为无界循环。

因此,我计划应用工程摊销并通过在合同中提供以下内容将这个循环移动到客户端:

代码语言:javascript
复制
function claimAddress(address investor) external nonReentrant onlyOwner {
    claimInvestor(investor);
}

然后我需要客户端的JS

代码语言:javascript
复制
for (var i = 0; i < investors.length; i++) {
    await ICO_CONTRACT?.claimAddress(investors[i]).then(processClaimSuccess).catch(handleError);
}

问题:

  • 这样的理由可以吗?什么地方?
  • 如何在ethersJS中运行此客户端代码而不打开元请求为每个投资者签署每一笔交易?我可以签名绕过元询问吗?我可以在一个单独的事务中对所有事务进行批次处理吗?

Update1:正如我在这里看到的,它取决于用来签署交易的私钥的钱包。如果是元询问帐户,则应打开元询问。因此,就我的情况而言,第一件事是将合同的所有者更改为钱包中允许以编程方式签名的帐户。

https://ethereum.stackexchange.com/a/117226/94894

EN

回答 1

Ethereum用户

发布于 2023-03-28 10:56:28

为什么不使用额外的映射来存储每个投资者有权拥有的令牌数量

代码语言:javascript
复制
mapping(address => uint256) public entitledTokens;

更确切地说,他们一个接一个地发送给他们,这样他们就可以自行声明他们的令牌,这将是一种更有效和更好的方法。

代码语言:javascript
复制
function claimTokens() public {
   erc20.transferFrom(owner, msg.sender, entitledTokens[msg.sender])
}
票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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