试想一下。

你想到一个不错的区块链创业想法,通过SAFT(Simple Agreement for Future Tokens,未来代币简单协议)融到了风投融资。你开始研究决定释放安排和代币价值。你不想流动性释放的太快,所以你为种子轮投资者设定了3年的释放期,私募轮设定了32个月的释放期。你要怎样安全、高效地把这些代币释放到他们的钱包中呢

一个种常见的做法,是项目方创建一个代币领取网站,让投资者可以随着释放节奏领取他们的代币。这一做法的好处是由投资者支付交易费用。不过,如果直接每天发送给投资者将会更加高效,但经济上这种方法可行吗?让我们一起来讨论下。

以Only1为例,我们有超过900个地址在3年的时间中每天进行代币发放。如果我们在以太坊上来进行这些交易,保守地假设10美元的交易费,单单在交易费上我们也要花费约1000万美元。在Solana,交易费为0.00025美元,总费用只有250美元。这正是为何未来的Web 3.0社交和元宇宙需要建立在如Solana这样的可扩展区块链上的原因。

通过Solana程序进行分发

或许一个最为显而易见的选择是,部署一个Solana程序,由其来向白名单的地址转账释放的代币。在此基础上,你还需要一个简单的一键式页面来实现领取功能。

用户将支付交易费,但你需要支付部署费和任何释放计划调整产生的更新费用(新轮次、钱包地址变更等)。

这里的主要缺点是,如果你的释放计划非常复杂,比如像下图这样,那么这一解决方案并不灵活。

 

从左到右、从下向上文字依次为:种子轮、锁定6个月以后、释放代币量

另一个你可能面临的问题会在你的投资者数量非常大的时候出现。例如,如果你的投资者之一是一个DAO,则意味着近一千个钱包。这时候,你需要考虑你是否会针对他们每一个人调整释放安排,如果情况有所变动(例如地址),更新的流程将是怎样的。 

通过多签名申领 

另一种选择可能更灵活,那就是通过授权者的签名实现领取过程。释放钱包的私钥存储在一个服务器上(最好是通过AWS Secret Manager这样的密码存储解决方案)。用户创建一笔交易领取代币,服务器验证这一特定用户是否有资格进行这一交易。如果有,服务器则用释放钱包秘钥签署这一交易。在这一情景下,交易有两重签名,用户被指定为费用支付方。 

这一方法让我们在创建不同的释放安排和场景时有更多灵活性。但由于交易需要在不同的电脑上进行签署,你需要处理耐久随机数(Durable Nonce),而这需要另一个并不轻松的解决方案。


从左到右文字依次是:用户签署一笔交易->服务器APP检查用户是否有资格进行这笔交易->服务器通过释放钱包私钥签署交易->服务器发送交易给Solana 

空投

Solana非常好。它速度快,并且发送交易成本极低,而且也具有每天都进行交易的稳定性。你可能认为如果你用空投的方式进行分发会需要支付很多交易费。让我们看一看Only1释放钱包的一次数据吧。


图上文字:您花费0.43077◎的Solana交易费。目前相当于97.74美元。您使用了43077000 Lamport的费用,发送了86091笔交易,每笔交易平均费用为5004 Lamport。其中5个交易失败了,消耗了您0.00005◎(0.01美元)。

如果你想要查看你的钱包的类似数据,你可以访问https://fees.solar/

8.6万笔交易只花费了97美元。这是非常多的交易!还好我们建立在Solana上。从时间上来看,基础部署只需要花费30分钟的时间。如果你想要采用空投的方法,一个需要注意的问题是: 

1. 对所有信息进行日志记录。

2. 分批发送。这样做,如果你是用的是官方主网-Beta末端你不会被封掉,而所有接收方也能同时收到交易(10分钟内)。

3. 不要使用WebSockets等待确认。

4. 交易发送后检查几分钟,交易是否确认。如果没有,再次发送。

5. 设置好让其按照一定安排在云端运行:比如一天/周/月一次。理想的情况是,部署以后你就不需要再动它了。

6. 在你开始执行前,检查下从你的释放钱包发送的区块链上此前确认的交易。

7. 保留变更钱包地址的选择,让程序可以整合多个接收地址,将其视为一个。

8. 设置一个Slack/Telegram机器人,通知这一操作的状态,告知释放钱包资金是否已用尽。 

空投对于Only1来说是明显更好的方式,因为其具有灵活性,易于调整。但是每个项目都有所不同,对于我们而言非常好的方案可能不适用于你的项目。

如果你有任何问题,或想要分享你的经验,欢迎给我们留言。 

感谢阅读!

关于Dan Lilienblum,Only1首席技术官

此前为币安和Dash高级软件工程师。拥有数学硕士学位,以往从事数学建模。随后加入和推出了多个初创早期项目。自2017年进入加密领域。