💰 构建一个战利品箱程序
既然你已经让程序正常运转了,那么我们就来调整前端代码,以适应Anchor
。这个配置只需一分钟,稍作等待,我们将会调整一些内容。欢迎来到“发货周”!整个周都将致力于让你的项目做好发货准备。对我们来说,这意味着完善buildoors
项目。对你来说,同样的情况,但我们希望能看到你加入一些个人风格!
剩下要做的主要事情就是实现战利品箱。目前,可以创建一个简单的战利品箱实现。
这意味着:
- 没有经过验证的随机性 - 你可以选择一个简单的伪随机实现,或者根本不使用随机性。
- 现在可以使用静态解决方案 - 例如,不必设计成可以随后更新装备类型。暂时保持简单即可。
- 创造力的展现 - 我说的不仅仅是“使用不同的图片”。请随意构建你自己的架构,并进行真正的创新实验。用密斯·弗里兹尔的名言来说:“冒险一试,犯错误,搞得一团糟!”
info
提示 虽然如此,根据我们对战利品箱计划的处理方式,以下是一些建议(没错,我们将其作为一个独立的程序来处理):
- 我们使用可替代资产而非非同质化代币(
NFT
)来分发战利品箱中的装备。 - 我们刚刚修改了用于创建
BLD
代币的脚本,使每件装备都能生成一个“可替代资产”代币。 - 战利品箱其实只是一个概念 - 没有任何代表它的代币或物品。
为了从多个可能的铸币中分配(随机或其他方式),我们需要设置程序以进行两个单独的交易:
open_lootbox
: 它处理燃烧所需的$BLD
代币以打开战利品箱,然后伪随机选择要铸造给调用者的装备,但是不立即铸造,而是将选择存储在与用户关联的PDA
中。必须这样做,否则你将不得不将所有可能的装备铸造传递给指令,这将非常麻烦。retrieve_item_from_lootbox
: 这个函数会检查之前提到的PDA
,并将指定的装备发放给用户。
再次强调,不要局限于我们的实现方式。在查看我们的解决方案之前,请自己尝试一下。我并不是说只试试20
分钟就好了。我花了整整一天的时间才弄明白,所以在寻求我们的解决方案之前,不要害怕独立工作相当长的一段时间。
祝你好运!