Solana主网使用自定义的RPC进行转账

1、引言

如果用 browser 连接主网的 RPC server 会收到 error code 403 message 為 Access forbidden, contact your app developer or support@rpcpool.com. 错误,因为主网的 RPC server 会检查 HTTP Header 如果判断出來是 browser 就会报告 403 錯誤。

要解決这个问题就是换一个 RPC server ,可以注册免费的 RPC server 。

2、免费RPC Server

Solana RPC Server 是让开发者存取区块链数据的 Server , Solana 主网有提供一个(Solana Cluster RPC Endpoints (opens new window)),但是为了避免滥用,有设定一些网路存取的限制,存取太快会产生 HTTP 429 的错误。

所以要开发 Solana 应用程式最好还是有个自己的 RPC Server ,不过要建立自己的 RPC Server 代价相当高,根据 How to run a Solana RPC node (opens new window)这篇文章, CPU 要 32 core ,记忆体要 250 GB ,这样的硬体规格租下来可是相当花钱。

于是就有一些公司提供 RPC Server 服务,然后只要注册就可以使用到一些免费额度,这些免费额度对于开发 Solana 应用程式就相当够用了,以下几个是博主试过有免费额度又稳定的 Solana RPC server

Chainstack

一个月免费额度 300 万个 request

QuickNode

一个月免费额度 1000 万个 request

3、sol转账代码

import { useWallet } from 'solana-wallets-vue'
import {Connection, clusterApiUrl, Keypair, SystemProgram, Transaction, PublicKey} from '@solana/web3.js';

const { publicKey, connected, sendTransaction } = useWallet();

const onClick = async () => {
        if (!publicKey) {
            console.log('error', `Send Transaction: Wallet not connected!`);
            return;
        }

        let signature = '';
        try {
            // send 1 lamport to random account
            // https://solanacookbook.com/references/basic-transactions.html#how-to-send-sol

            const account = Keypair.generate();
            const transaction = new Transaction().add(
                SystemProgram.transfer({
                    fromPubkey: publicKey.value,
                    toPubkey: new PublicKey("接收地址"),
                    lamports: 1_000_000,
                })
            );

            //const connection = new Connection(clusterApiUrl('devnet'));
            const connection = new Connection(
                "https://solana-mainnet.core.chainstack.com/xxx", //替换rpc链接
                {
                  wsEndpoint:'wss://solana-mainnet.core.chainstack.com/ws/xxx' //替换rpc链接
                }
            );
            signature = await sendTransaction(transaction, connection);
            await connection.confirmTransaction(signature, 'confirmed');
            console.log("successs")
        } catch (error) {
            console.log('error', `Transaction failed! ${error?.message}`, signature);
            return;
        }
    }

4、转账结果查询

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/537898.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW闭环步进电机运动系统设计及精度分析

LabVIEW闭环步进电机运动系统设计及精度分析 在自动化设备不断发展的当代,闭环步进电机以其高精度和可靠性成为了自动化设备的重要组成部分。以LabVIEW软件为核心,结合运动控制卡及驱动器模块,设计并实现了一个闭环步进电机的多轴运动控制系…

加盟馅饼多少钱合适,加盟哪个馅饼品牌最好?

加盟馅饼,成本是创业者首要考虑的问题。合适的加盟费用应该考虑到品牌知名度、培训支持、店面选址等因素。一般而言,加盟馅饼的费用在几万元至数十万元之间,具体费用因品牌而异。重要的是,加盟费用不应是唯一的考量因素&#xff0…

SpringBoot3 + Vue3 + Uniapp + uView + Elenment 实现动态二级分类以及二级分类的管理

SpringBoot3 Vue3 Uniapp uView Elenment 实现动态二级分类以及二级分类的管理 1. 效果展示1.1 前端显示效果1.2 后台管理一级分类1.3 后台管理二级分类 2. 后端代码2.1 GoodsCategoryController.java2.2.1 GoodsCategoryMapper.java2.2.2 GoodsCategorySonMapper.java2.3.…

Pytest精通指南(06)Fixture scope作用域详解

文章目录 前言Scope 作用域写在测试用例函数文件写在conftest.py文件作用域总结验证默认作用域验证执行顺序遵循验证类中的fixture作用域验证重名fixture作用域 前言 从前文中,我们已经知道固件(fixture)的概念、原理、作用域,并且…

【年度典型案例】扫码就能领补贴?通知社保在线速办?当心是钓鱼骗局!

随着我们生活的数字化程度越来越高,完成各种业务和服务变得前所未有的便捷。只需轻轻一点手机屏幕,我们办事儿变得飞快又方便。然而,正当我们享受这种数字化带来的便捷时,一些不法分子也在暗中伺机而动,利用各种手段制…

k8s知识

k8s是用于容器编排和管理的,docker或者ctr是k8s的运行时,k8s通过容器运行时来启动容器,容器启动需要镜像,镜像可以用docker构建,dockerfile就是用于自定义如何构建镜像,所以上面那套流水线就是先用dockerfi…

Java算法小练习——五道经典算法题

练习一:按照要求进行排序 定义数组并存储一些朋友对象,利用Arrays中sort方法进行排序 要求1:属性有姓名、年龄、身高。 要求2:按照年龄的大小进行排序,年龄一样,按身高排序,身高一样安姓名的字母…

策略为王股票软件源代码-----如何修改为自己软件05

上面是如何修改里面的图标和图片,,, 试用版下载: http://www.ninebulls.com/ 联系方式: support@ninebulls.com 常见问题: 1。源代码经编程后产生的目标文件执行后显示为试用版,这样是否正常?如何切换成专业版? 显示为评估版是正常的,注册后即切换成专业版。 Too…

【算法一则】做算法学数据结构 - 简化路径 - 【栈】

目录 题目栈代码题解 题目 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中,一个点(.)表…

python使用ffmpeg分割视频为Hls分片文件/使用OpenSSL加密m3u8和TS文件

FFmpeg和OpenSSL是一个开源免费的软件,在官网上就能下载, FFmpage网址(建议选择文件名full结尾的文件):Builds - CODEX FFMPEG gyan.dev OpenSSL网址(建议选择win64的MSI文件):Win3…

vscode 中显示 pnpm : 无法加载文件 C:\Users\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本

vscode 中无法运行pnpm vscode中运行pnpm报错解决办法如下 vscode中运行pnpm报错 pnpm : 无法加载文件 C:\Users\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本 解决办法如下 1、用get-ExecutionPolicy命令在vscode终端查询状态 如果返回的是 Restr…

堆排序-升序和降序_TopK-N个数找找最大的前K个

一、堆排序 堆排序即利用堆的思想来进行排序,总共分为两个步骤:1.建堆 升序:建大堆 降序:建小堆 2.利用堆删除思想来进行排序 方法一:把数据拷贝进堆、把堆拷贝进数据 //弊端,1.需要先有一个堆 2.时间复杂度拷贝数据 void HeapSort(int* …

前端学习<四>JavaScript基础——18-数组之隐秘

之前学习的数据类型,只能存储一个值(字符串也为一个值)。如果我们想存储多个值,就可以使用数组。 数组简介 数组(Array)是属于内置对象,数组和普通对象的功能类似,都可以用来存储一…

一文了解HTTPS的加密原理

HTTPS是一种安全的网络通信协议,用于在互联网上提供端到端的加密通信,确保数据在客户端(如Web浏览器)与服务器之间传输时的机密性、完整性和身份验证。HTTPS的加密原理主要基于SSL/TLS协议,以下详细阐述其工作过程&…

C语言易错知识点(3):字符数组的修改、sscanf、sprintf

字符数组是一个很细节的语法,涉及很多知识点,这篇文章我主要分享一下如何理解字符数组,以及对应的sscanf、sprintf有什么用 1.字符数组的初始化以及内容修改易错点 字符数组的初始化方式有两种,一种是直接用字符串进行初始化&am…

蓝桥杯第2152题——红绿灯

问题描述 爱丽丝要开车去上班, 上班的路上有许多红绿灯, 这让爱丽丝很难过。为 了上班不迟到, 她给自己的车安装了氮气喷射装置。现在她想知道自己上班最 短需要多少时间。 爱丽丝的车最高速度是 米每秒, 并且经过改装后, 可以瞬间加速到小于 等于最高速的任意速度, 也可以瞵…

(Java)数据结构——图(第五节)Kruskal的实现最小生成树(MST)

前言 本博客是博主用于复习数据结构以及算法的博客,如果疏忽出现错误,还望各位指正。 Kruskal算法(Kruskal的实现原理) Kruskal算法的原理: 就是每次取最小的边,看看是不是与已经选择的构成回路&#x…

imu6xl点灯(C语言)

参考正点原子开发指南 根据原理图可以看出,我们需要设置低电平导通电路。 在原理图上找到LED0,对应IO为GPIO3 IO复用配置 IMX6UL每个引脚都可以复用 在用户手册第30章可以找到IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03这个寄存器,地址为0x020E0068&…

洛谷-P1036 [NOIP2002 普及组] 选数

P1036 [NOIP2002 普及组] 选数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<bits/stdc.h> using namespace std; const int N30; int n,r; int g[N]; //存用户输入的数 int arr[N]; //存答案 int res0; //存种类数bool is_prime(int y){ //求素数if(y<2){…

HarmonyOS实战开发-音视频录制、如何实现音频录制和视频录制功能的应用

介绍 音视频录制应用是基于AVRecorder接口开发的实现音频录制和视频录制功能的应用&#xff0c;音视频录制的主要工作是捕获音频信号&#xff0c;接收视频信号&#xff0c;完成音视频编码并保存到文件中&#xff0c;帮助开发者轻松实现音视频录制功能&#xff0c;包括开始录制…