Solana

2025年07月09日更新 9 人订阅
原价: ¥ 8.6 限时优惠
专栏简介 Solana 开发学习之Solana 基础知识 Solana 开发学习之通过RPC与Solana交互 Web3与Solana实操指南:如何签名与发送交易 Web3 新玩法:Solana Nonce Account 让你交易无忧 Web3 快上手:Solana 造你的链上名片 Web3 开发实战:用 Anchor 打造 Solana 猜数游戏 @solana/web3.js 2.0:Solana 转账全流程解析 玩转 Web3 Solana:从零到代币开发 Web3 开发入门:Solana CLI 配置与本地验证器实战 Web3 Eclipse 开发环境搭建与资产跨链桥接实战指南 用 Gill 库解锁 Web3:Solana 代币转账实战 Web3开发:用Rust实现Solana SOL转账教程 用 Rust 开发 Solana:解锁 Web3 交易费用计算 Web3开发入门:Solana账户创建与Rust实践全攻略 Web3 实战:用 Anchor 打造 Solana 智能合约全流程 Solana Web3 快速入门:创建并获取钱包账户的完整指南 Web3 开发实操:用 Anchor 在 Solana 创建代币 Mint Account 从零到 Web3:使用 @solana/kit 快速查询 Solana 账户余额 快速上手 Web3:用 @solana/kit 在 Solana 上创建钱包并查询余额 Web3实战:使用Anchor与Rust开发和调用Solana智能合约 Web3实战:Solana CPI全解析,从Anchor封装到PDA转账 用 Rust 在 Solana 上打造你的专属代币:从零到一的 Web3 实践 探索Solana SDK实战:Web3开发的双路径与轻量模块化 手把手教你用 Solana Token-2022 创建支持元数据的区块链代币 Solana 开发实战:Rust 客户端调用链上程序全流程 Solana 开发进阶:在 Devnet 上实现链上程序部署、调用与更新 Solana 开发进阶:链上事件到链下解析全攻略 从零打造Solana空投工具库:Rust开发实战指南 从零开始:用 Rust 开发 Solana 链上 Token 元数据查询工具 Solana 智能合约终极部署指南:从入门到主网,定制你的专属靓号 Program ID 【Solana 开发实战】轻松搞定链上 IDL:从上传到获取全解析

Web3与Solana实操指南:如何签名与发送交易

Web3与Solana实操指南:如何签名与发送交易Web3技术作为新一代互联网的核心架构,正在快速改变着传统的网络生态。而Solana作为一种高效、快速的区块链平台,已经成为众多开发者的首选。在这篇文章中,我们将通过实际操作,带你深入了解如何在Solana网络上进行Web3交易。我们将介绍如何生成

Web3与Solana实操指南:如何签名与发送交易

Web3技术作为新一代互联网的核心架构,正在快速改变着传统的网络生态。而Solana作为一种高效、快速的区块链平台,已经成为众多开发者的首选。在这篇文章中,我们将通过实际操作,带你深入了解如何在Solana网络上进行Web3交易。我们将介绍如何生成和签名Solana交易,以及如何发送交易并查看其状态,为你的Solana开发之旅提供实用的参考。

本文将详细阐述如何在Solana网络上进行交易操作,涵盖以下几个方面:

  1. Solana交易签名:介绍如何通过编程签名Solana交易,包括如何使用私钥和交易参数生成交易。
  2. 获取最新区块哈希:通过API获取Solana的最新区块哈希,作为交易的有效性验证。
  3. 执行交易发送:通过sendTransaction方法发送已签名的交易,并返回交易结果。
  4. 交易查看与确认:介绍如何通过Solana区块浏览器查看交易的状态,确认交易是否成功。

通过这些步骤,你将能够更好地理解Solana的交易流程,并将这些知识应用于实际开发中,提升Web3应用的开发效率。

实操

第一步:实现signSolTransaction 代码

export async function signSolTransaction(params: any) {
    const {
        txObj: { from, amount, to, nonce, decimal },
        privateKey,
    } = params;
    if (!privateKey) throw new Error("privateKey 为空");
    const fromAccount = Keypair.fromSecretKey(new Uint8Array(Buffer.from(privateKey, "hex")));

    const calcAmount = new BigNumber(amount).times(new BigNumber(10).pow(decimal)).toNumber();
    if (calcAmount.toString().indexOf(".") !== -1) throw new Error("decimal 无效");

    let tx = new Transaction();

    const toPubkey = new PublicKey(to);

    tx.add(
        SystemProgram.transfer({
            fromPubkey: fromAccount.publicKey,
            toPubkey: toPubkey,
            lamports: calcAmount,
        })
    );

    tx.recentBlockhash = nonce;
    tx.sign(fromAccount);
    return tx.serialize().toString("base64");
}

该异步函数用于签署Solana区块链交易,主要流程分为四个步骤:

  • 首先通过十六进制私钥生成发送方密钥对;
  • 接着将代币金额根据小数位数转换为lamports(Solana最小单位),验证数值有效性;
  • 然后构建交易对象,添加包含转账指令的系统程序,设置发送/接收方公钥和金额;
  • 最后通过区块哈希(nonce)确定交易时效性,使用发送方私钥签名,最终返回Base64编码的序列化交易数据。
  • 该实现使用Solana的Web3.js库处理核心区块链操作,特别要注意金额转换时必须确保整型数值,避免因精度问题导致交易失败。

第二步:获取最新区块哈希 getLatestBlockhash

请求参数


{
    "jsonrpc...

剩余50%的内容订阅专栏后可查看

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论