首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行空投令牌最具成本效益的方法

执行空投令牌最具成本效益的方法
EN

Ethereum用户
提问于 2018-02-07 23:19:03
回答 3查看 4.4K关注 0票数 5

我正在做一个项目,在那里我创建一个令牌,并试图将它空投给尽可能多的人。目前的挑战是找出最具成本效益的方法来做到这一点。

我有两个选择:

  1. 创建一个“令牌库”类型的智能契约,向其发送令牌,并将地址和余额数组传递给某个函数。
  2. 在部署之前,只需在我的令牌代码中创建一个新函数,它将类似于(),但具有一个地址数组作为输入。然后让人们执行transferFrom()。

如您所知,这两个选项非常相似,我主要关心的是,这两个选项都要求我传递一系列地址。据我所知,如果我想传递一个1000个地址的数组,它将花费我21000 gas +1000SSTORE操作(20000 gas id _spender不在映射中),总计为20021000 gas (如果确实可以同时传递1000个而不是单独的批)。计算这个时刻的成本,我们可以得到0.02ETH或16.297美元,但这只是因为汽油的价格是1 WEATM机。

好吧,想象一下,如果我成功地为成千上万的人做空投运动,而且由于另一个CryptoKitties,网络将变得拥挤不堪,我们的平均油价将在20到30魏特之间维持数周。是的,部署这种合同的价格将飙升至0.5 ETH左右。

这不是一个商业项目,所以做大众销售(与我计划做的相比,这只花很少的钱)是不可能的。该项目的主要目标是让熟悉ETH平台的熟悉非技术/密码技术的人第一次做一些简单的事情:比如创建钱包、购买ETH、与智能合同交互等等。

您可能会问,在这种情况下,为什么我不创建一个人们可以自己创建的可管理令牌,在我部署令牌合同之后实际上要花费0 eth?那么,我相信,为了让很多人看到,这个钱应该有某种形式的假设价值,否则,没有人会经历一个甚至设立一个钱包,装上ETH的挣扎。而且,当令牌是可自由放置的,即使每个地址的令牌有限制,它也不会阻止一些人通过创建多个帐户并为自己积累大量款项来滥用令牌。换言之,我希望有能力规管总供应,使市民不能滥用空投程序,使空投过程变得一文不值(反正是这样,但至少它可能有一些投机价值,可以促使人们进行整个过程)。

我认为,在不需要昂贵的地址数组的情况下,应该有办法做到这一点。然而,由于我有零到零编程经验,这不是那么明显。也许有一种方法,可以使用一些独特的代码,我可以分发给人,他们将不得不进入,以打开他们的空投令牌?但我必须这样做,这样做不需要我传递一系列这样的代码,以便在合同中被记住。例如,这些代码将满足某些数学函数,但对于除我之外的任何人来说都是非常困难或不可能生成的。

我很感谢你们的意见!感谢您的阅读,并为这么长的一篇文章感到抱歉!

TLDR;

寻找公平分配令牌的最佳成本效益方法,而不必将一系列地址传递给令牌契约。

EN

回答 3

Ethereum用户

回答已采纳

发布于 2018-02-08 00:18:14

因此,这个选项将需要一个不错的设置,但它确实是最便宜的。您可以通过向智能契约提交大量令牌来创建不同类型的支付渠道。您可以设置智能契约,以便只有允许的地址才能请求空投。为了请求空投,他们必须提交一份由你签名的信息。

这将是难以置信的便宜,因为每个用户将支付交易成本发送硬币自己。

示例(更新):

每个用户都将得到一个特定的消息h,它是您签名的\x19Ethereum Signed Message\n32 + keccak256('user-address', 'airdrop-value')以及签名部件vrs的组合。当他们寄到你的合同上取款时,他们会提供必要的签名数据(h,v,r,s),以及组成消息h的值,以便他们可以验证给他们的唯一消息,也可以验证它是由您签署的。

最近,我不得不自己解决这个问题,并编写了一个用于签名数据和提取必要部分的快速python程序:

https://github.com/postables/Postables-Payment-Channel/blob/develop/python/signer.py

票数 6
EN

Ethereum用户

发布于 2019-03-09 10:34:08

也许使用开源https://github.com/bulktokensending/bulktokensending部署版本是有用的,这里是http://bulktokensending.online

票数 1
EN

Ethereum用户

发布于 2021-06-25 06:05:23

没有人提到梅克尔空滴,也许是因为他们似乎出现在这个问题之后,选择答案出现了吗?

无论如何,在我看来,这是一个更好的解决方案:而不是将所有收件人地址存储在智能契约中,这本身就很昂贵,而且会使链膨胀,您可以

  • 在某个地方发布这些文件(比如IPFS)
  • 用这些地址构建一棵Merkle树
  • 将树根存储在智能契约中。
  • 给客户一种提供智能合同的方法,并提供显示其地址在列表中的Merkle证据。
票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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