是否应该计算交易成本?
Should transaction costs be calculated?
我们目前正在为基于 Solana 区块链的加密货币支付网关构建去中心化钱包。从以太坊网络上的交易背景来看,我们知道如果您不想大吃一惊,那么计算交易所用的气体使用量是必要且重要的。
我们是否也应该在 Solana 保留此佣金?
在将交易发送到网络之前我需要做些什么吗?
我们知道已经很久了,Solana 的佣金 = 5000 Lamports 用于正常交易
这个值是永远固定的吗??
var tx = new TransactionBuilder().
AddInstruction(SystemProgram.Transfer(sender, toAddress, LamportsAmount)).
SetRecentBlockHash(LastBlockHash.Result.Value.Blockhash).
SetFeePayer(sender).
Build(sender);
var firstSig = await rpcClient.SendTransactionAsync(tx);
起初,最大的计算成本被认为是签名验证,但随着时间的推移,我们注意到一些交易比 运行 更昂贵,尤其是那些不容易并行化的交易,并且网络在高 activity 期间确实会拥塞,这会造成糟糕的体验。
正因为如此,出现了很多处理这个问题的方案。以下是其中的一些:
- 未使用的可写帐户的费用:https://github.com/solana-labs/solana/issues/21883
- 拥堵期间费用较高:https://github.com/solana-labs/solana/issues/21910
- 根据计算单元确定事务的优先级:https://github.com/solana-labs/solana/issues/23207
还有更多。
综上所述,如果您需要检查费用,请始终使用 getFeeForMessage
端点:https://docs.solana.com/developing/clients/jsonrpc-api#getfeeformessage
这是所有 Solana 工具中使用的最佳实践。
我们目前正在为基于 Solana 区块链的加密货币支付网关构建去中心化钱包。从以太坊网络上的交易背景来看,我们知道如果您不想大吃一惊,那么计算交易所用的气体使用量是必要且重要的。
我们是否也应该在 Solana 保留此佣金?
在将交易发送到网络之前我需要做些什么吗?
我们知道已经很久了,Solana 的佣金 = 5000 Lamports 用于正常交易
这个值是永远固定的吗??
var tx = new TransactionBuilder().
AddInstruction(SystemProgram.Transfer(sender, toAddress, LamportsAmount)).
SetRecentBlockHash(LastBlockHash.Result.Value.Blockhash).
SetFeePayer(sender).
Build(sender);
var firstSig = await rpcClient.SendTransactionAsync(tx);
起初,最大的计算成本被认为是签名验证,但随着时间的推移,我们注意到一些交易比 运行 更昂贵,尤其是那些不容易并行化的交易,并且网络在高 activity 期间确实会拥塞,这会造成糟糕的体验。
正因为如此,出现了很多处理这个问题的方案。以下是其中的一些:
- 未使用的可写帐户的费用:https://github.com/solana-labs/solana/issues/21883
- 拥堵期间费用较高:https://github.com/solana-labs/solana/issues/21910
- 根据计算单元确定事务的优先级:https://github.com/solana-labs/solana/issues/23207
还有更多。
综上所述,如果您需要检查费用,请始终使用 getFeeForMessage
端点:https://docs.solana.com/developing/clients/jsonrpc-api#getfeeformessage
这是所有 Solana 工具中使用的最佳实践。