一.NFT的离线签名1.Solana中的NFT与SPLToken的关系在Solana网络里,NFT(Non-FungibleToken)本质上是基于SPLToken标准的一种特殊代币。
在Solana网络里,NFT(Non-Fungible Token)本质上是基于SPL Token标准的一种特殊代币。与普通代币(如 USDC)在Solana上都有可分割的小数位不同,NFT通常设置了0个小数位(decimals = 0)。这意味着它无法进一步细分,每次转账只能在整单位(即1个)的级别进行,这正好契合了NFT“不可分割”的特性。
Solana的NFT与Ethereum的NFT存在一个有趣的差异:
在Ethereum上,不同的NFT往往共用一个或少量标准合约(如ERC-721或 ERC-1155),每个NFT 再通过合约内的tokenId加以区分。
在Solana上,每一个NFT都会拥有一个对应的Address,这个地址类似NFT的ID,相当于该NFT自身独立的合约地址。在查询或转账时,用户需要特别注意使用这个地址来定位相应的NFT。
这种“每个NFT拥有独立合约地址”的设计,使得Solana的NFT在管理和追踪上有更高的灵活性。开发者可以单独为某个NFT项目定制Token Metadata,不必受到同一合约的统一限制。
区块链交易的本质是对私钥进行签名。当我们需要对某笔交易进行签名而又不想让私钥暴露在联网环境中时,就可以采用“离线签名”的方式。通俗来说,就是事先在离线设备上把交易数据签名好,再在联网的环境中提交签名完成的交易,以保证私钥安全。
通常,我们在进行离线签名时,需要准备好要转账的“代币信息”(对于NFT来说就是其mintAddress)以及交易的关键信息。在Solana中,NFT也是SPL Token,只不过decimals=0。当要转移该NFT时,将原先针对代币转账的方法中的mintAddress替换为目标NFT的mintAddress,并将转账数量设置为1即可。整个流程大致如下:
交易广播到网络后,验证节点会在下一个或者接下来的几个Slot中打包并投票确认。当区块达到一定数量Slot的确认时(32 Slot 及以上),即可认为交易已相对安全地完成。
除去快速、高吞吐量以及在NFT领域的应用,Solana在PoS(Proof of Stake)共识机制下的Staking也非常具有代表性。Staking简言之,就是将你持有的SOL代币质押给网络中运行节点(Validator),节点会帮忙参与出块和验证,用户则可按一定规则获取奖励。
在Solana中,Staking的关键点在于要先创建一个staking account,然后将你想质押的SOL从“普通账户”转移到该staking account,再进行委托,最后才正式生效。
创建Staking Account: 一般使用“author Account”或称“源账户”来发起此过程。通过调用Solana的系统程序指令,可以创建一个新的staking account。这个账户专门用于存储即将被质押的SOL,以及记录Staking的状态。
转入资金: 将你希望质押的SOL从个人持有的“author Account”中转移到刚刚创建的staking account;这个过程类似转账,但目标地址是该staking account。在完成后,相应数量的SOL就属于该staking account所管理。
委托投票权:选择要支持的矿池或节点(Validator)地址,并把staking account的投票权益(vote account)指派给该节点。一旦完成委托,就意味着在下一次 epoch(Solana 中的区块周期概念)开始时,你的质押将正式进入“激活中”的状态。
等待激活:Solana为了保持一致性和公平性,会在每个epoch的边界去更新各账户的激活状态。也就是说,当你执行完质押流程后,需要等待当前 epoch 结束、下一个 epoch 开始时,你的质押才真正进入Active状态。
收益分配:当节点打包交易、参与网络共识后获得的区块奖励,会先分发给节点(Validator),然后由节点根据其内部的分配机制或合约逻辑进行二次分配,把应得的收益转给你。不同节点通常会有不一样的分配策略或手续费率,你可以在委托前进行比较,选择最优方案。通过以上步骤,你就完成了一次完整的Staking流程,并可在接下来每个epoch中持续获得相应的收益。对于想要长期持有SOL并寻求稳定回报的用户而言,Staking是一种低门槛、相对安全的选择。
当你决定停止质押或需要提取资金时,可以通过以下步骤完成解除Staking,即从Active状态退回到可用的SOL余额:
将Active转为Inactive:先发起指令,将staking account中处于Active状态的质押数额切换为Inactive状态;类似地,这个切换并不会马上完成,而是要等到当前epoch结束后,才会正式生效。也就是说,需要等待网络更新状态才能真正看到资金回到Inactive 状态。
提取资金和奖励:在质押变成Inactive后,你就可以从staking account中把资金和累积奖励转回到“author Account”或其他你指定的账户里。提取完成后,这笔SOL就再次拥有完全的流动性,可以用于支付交易手续费、转账或者进行其他投资。
需要注意的是,不同的网络环境和节点状态可能导致激活或取消质押生效的时间有所差异,但通常是以epoch作为最小结算单元。Solana选择在epoch边界进行更新,能够减少在epoch进行过程中频繁切换状态所带来的混乱,也方便系统进行统一的结算与记录。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!