Solana空投原理及实现

所有代币空投活动都涉及向多个接收者空投代币。 本文介绍如何一步将代币空投到多个接收者。

Solana空投原理及实现
一键发币: SOLANA | BNB | ETH | BASE | Blast | POLYGON | OKEX

空投活动是一种营销策略,涉及将加密代币分发到满足特定标准的钱包地址,例如特定 NFT 的持有者或特定代币的最高持有者。 这种策略最近很受欢迎,通常由公司用来传播有关产品、硬币或加密货币交易所的信息。 每周大约有五个新的空投出现在各个网站上,并且它们的频率正在与日俱增。

以下是空投活动有益的一些案例。

  • 推广 ICO:首次代币发行或 ICO 是为基于加密货币的产品或服务筹集资金的一种流行方式,空投活动可以帮助推广它们。
  • 参与者的受欢迎程度:加密货币的价值与其受欢迎程度一样,获得受欢迎程度的快速方法是为用户组织空投活动。 毕竟,谁不喜欢免费的钱,对吧?
  • 具有成本效益的营销策略:在营销您的产品或品牌时,必须在成本和结果之间找到平衡。 空投活动迅速流行,且成本极低,使其成为一种有效的营销策略。

1、空投活动的类型

空投活动的主要形式包括标准空投、赏金空投、持有者空投和独家空投。 每种类型都适合特定的活动。 例如,标准空投可以方便地鼓励更多人采用你的代币,而赏金空投则适用于用户因完成某些任务而获得奖励的活动。 持有者空投是为向任何其他特定代币的最大持有者空投代币而组织的活动,并且是为某些在线社区组织的独家空投。

2、设置你自己的空投活动

在本系列文章中,我们将了解如何在 Solana 上设计自己的持有者空投活动。 我们将说明的活动类型是基于代币的持有者活动,其中某一特定代币的最高持有者将收到正在推出的新代币的空投。 这可以通过两个简单的步骤来建立。

  • 首先,我们确定一个代币的前 n 位持有者并收集他们的钱包地址。 在本系列中,我们尝试确定 SHYFT 币的前 5 位持有者,SHYFT 币是我们在 Solana 上定制的可替代代币。
  • 其次,我们继续用新的可替代代币奖励这些钱包地址。 想知道如何在 Solana 上创建可替代代币? 点击这里。

尽管这些任务看起来相当多,但使用 SHYFT API 可以非常轻松地实现这些任务。 SHYFT 为 Solana 区块链上的几乎所有操作提供了一系列 Web3 API,其中包括 NFT、Fungible Tokens、钱包、NFT Marketplace 等 API。 让我们看看如何使用 SHYFT API 创建持有者空投活动。

请在此处阅读 SHYFT API 文档

3、获得最高代币持有者

持有者活动涉及识别持有一组特定 NFT 的钱包地址或某个特定代币的最高持有者。 在本系列文章中,我们将尝试使用 SHYFT 基于 API 的解决方案来识别自定义代币 SHYFT 代币的最高持有者。 用于获取最高代币持有者列表的 API 端点。

GET https://api.shyft.to/sol/v1/token/get_owners

此 API 接受标头中的 x-api-key,这是 SHYFT 使用的授权参数。 你可以在此处从 SHYFT 网站免费获取自己的 API 密钥。 该API调用所需的参数为:

  • network:选择 Solana 网络集群,在本例中为 mainnet-beta。 此 API 不支持 devnettestnet
  • token_address:接受我们试图识别其最高持有者的 SPL-20 代币的地址。
  • limit:这表示一次获取的记录数(例如一页)。 一次最多可以获取 100 条记录。
  • offset:这返回将带来“n”条记录的起始值,“n”在限制字段中指定。 例如,如果我们一次获取 30 条记录(限制 = 30),并且计划显示记录号 31 到 60,则偏移量将为 30。(偏移量从 0 开始)。

成功执行后,返回的响应将包含该特定代币最高持有者的钱包地址列表。 返回的响应看起来有点像这样:

{
    "success": true,
    "message": "Token owners",
    "result": {
        "owners": [
            {
                "ata": "DmKR61BQk5zJTNCK9rrt8fM8HrDH6DSdE3Rt7sXKoAKb",
                "amount": 149407600138142,
                "owner": "8pFhUqCU7Fkxfg2DLytRDf7a9oK4XGtN92PrYwtVQc6G",
                "rank": 1
            },
            {
                "ata": "fArUAncZwVbMimiWv5cPUfFsapdLd8QMXZE4VXqFagR",
                "amount": 133823990000046,
                "owner": "8pFhUqCU7Fkxfg2DLytRDf7a9oK4XGtN92PrYwtVQc6G",
                "rank": 2
            },
            {
                "ata": "HoVhs7NAzcAaavr2tc2aaTynJ6kwhdfC2B2Z7EthKpeo",
                "amount": 63000000000000,
                "owner": "8pFhUqCU7Fkxfg2DLytRDf7a9oK4XGtN92PrYwtVQc6G",
                "rank": 3
            }
        ],
        "total": 243511,
        "limit": 3,
        "offset": 0
    }
}

响应中的 result字段包含按降序排列的最高代币持有者,即拥有最高代币数量的钱包地址将出现在列表中的第一个,也由排名字段指示。 所有者字段指示钱包地址,并且该特定钱包地址持有的金额显示在金额字段中。 ata 表示关联的令牌帐户。

这就是我们如何获得某一特定代币的最高代币持有者的方法,我们现在继续下一步,即将代币空投到最高代币持有者的钱包中。

4、空投代币

一旦确定了代币的顶级持有者,我们就可以向他们空投一些新创建的代币。你可以使用Solana TokenDIY快速创建一个新的SPL代币。

我们可以使用 SHYFT API 一次性向多个用户空投代币。 但首先,让我们创建一个包含 n 个用户的列表(假设前 5 位持有者)以及要空投到他们钱包中的代币数量。 我们可以使用本系列前一部分中收到的钱包地址作为响应。 结果列表应该看起来像这样。

"top_holders": [
    {
      "to_address": "8pFhUqCU7Fkxfg2DLytRDf7a9oK4XGtN92PrYwtVQc6G",
      "amount": 7
    },
    {
      "to_address": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
      "amount": 5
    },
  {
      "to_address": "5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9",
      "amount": 3
    },
  {
      "to_address": "8pFhUqCU7Fkxfg2DLytRDf7a9oK4XGtN92PrYwtVQc6G",
      "amount": 2
    },
  {
      "to_address": "9RhyPYRGhqYCEwhthj7WueWbQStr6qqQWDMqKEduiNEp",
      "amount": 1
    }
  ]

创建完成后,我们就可以空投代币了。

5、调用API向多个用户空投代币

传统上,我们可以对每个钱包地址进行一项一项的空投操作,这是一种相当简单的做法。 然而,这个过程非常耗时,而且我们必须一次又一次地重复一组步骤,因此效率不高。 SHYFT 反过来提供了一种基于 API 的一步式解决方案,用于一次性向多个用户空投代币。

用于一次空投多个代币的 API 端点,

POST https://api.shyft.to/sol/v1/token/airdrop

此 API 接受标头中的 x-api-key,这是 SHYFT 使用的授权参数。 您可以在此处从 SHYFT 网站免费获取您自己的 API 密钥。 该API调用所需的参数为:

  • network:选择 Solana 网络集群,可以是 devnet、testnet 或 mainnet-beta。 在这种情况下,它将是主网测试版,因为我们所有的代币持有者都在主网上。
  • token_address:接受要空投的 SPL-20 代币的地址。 这将是正在空投的新创建的代币。
  • from_address:接受扣除 SPL-20 代币的源账户地址,即空投期间扣除代币的钱包地址。
  • Transfer_info:该字段接受一个对象数组,该数组以指定格式指定接收者地址和要空投的代币数量。 这将是我们在上一步中创建的 top_holders 数组。

请在此处阅读 SHYFT API 文档。

成功执行后,返回的响应包含一个编码交易,需要签名才能成功执行:

{
    "success": true,
    "message": "Airdrop tokens request generated successfully",
    "result": {
        "encoded_transaction": [
            "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAIPjlCtsELWJl97h5yDtobRADXUyvXT9dlM1oxZPoaUeKg/dh9+VD4S2R+3q17KEqlHi/GR+DgdragDPFr+qvd52Ea6sBLL4z5mF7dZ/deiz96fjiMgCfGZEczn2Am+z9AtQ8ueGdnVJq+mbxlyZh43qrWb0nVwNad39QcibG1vQy9qwVfISvnJUlny6o8HbWGwc+8/x3aEM9QiFCvk3M9feYIR4VW/5pMSCihcEFbGcqnPwPUXZFaQBrNflgdkMiumgkLttCjLZYg3h1Iblk7/eoapIpJvHSVho59jNyaKZROC3QmBGYLu6yx9h6yRr9OlJBJ0z51M1cwLpaIugOb9V4o/XXMqfkwj+1I1XZ6nVj2Kjsdrna8pkMcJujNxRTPjyDGmfLg6xNhu9NDmNtXnhx0ZrxBqwdoCsUBaP+p1ChjQL3nfrMt1AYVzT4AwAl5g06l3zFrKTKFs2twILkEdlNmKfn8ji0NWQ/63YuSrES+TC2hsyo7zTuFIJ+wH8OXO6xJVGwfhWyMncZ+RaM842aArSJH7vjkf+fJIPrKRqxkzUnvqkKk9xgLz7ESDXWhSKunzibV+8TTasl6JupSX/Qbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCp4t5rMBYjKjVSUoW1cKJn/RhyIyjJ7jUlV7h3pDHHVesLDgQCDQsACgwAwusLAAAAAAkOBAINCAAKDADC6wsAAAAACQ4EAg0JAAoMAMLrCwAAAAAJDgQCDQwACgwAwusLAAAAAAkOBAINBwAKDADC6wsAAAAACQ4EAg0DAAoMAMLrCwAAAAAJDgQCDQoACgwAwusLAAAAAAkOBAINBgAKDADC6wsAAAAACQ4EAg0FAAoMAMLrCwAAAAAJDgQCDQQACgwAwusLAAAAAAkOBAINAQAKDADC6wsAAAAACQ=="
        ],
        "signer": "AaYFExyZuMHbJHzjimKyQBAH1yfA9sKTxSzBc6Nr5X4s"
    }
}

请注意,空投的代币数量必须小于签名者钱包中的可用数量。 响应中返回的 encoded_transaction包含一组编码交易,需要来自API调用的 from_address字段中指定的钱包的签名(也在响应的signer字段中指定)。

6、签署交易

要了解在 Solana 上签署交易的信息,你可以遵循我们的开发指南,或者也可以查看我们的 GitHub 存储库,了解签署编码交易所需的所有功能。 签名后,指令将由 Solana 运行时执行, top_holders 数组中提到的所有持有者都将收到我们新创建的代币。


原文链接:How to Airdrop Tokens to multiple receivers in an Airdrop Campaign on Solana

DefiPlot翻译整理,转载请标明出处