小试牛刀-Python生成solana Wallet公私钥

news2024/11/15 19:39:30

目录

1.编写目的

2.使用依赖

3.实现方法

3.1 Pynacl实现

3.2 ed25519实现


1.编写目的

        在使用Python开发solana应用过程中,需要生成solana Wallet公私钥,以实现后续应用操作.这里将Python生成方法进行整理,方便日后的查阅,也能帮助到实现相关功能的朋友。

2.使用依赖

主要使用了以下3个Python依赖:

  1.  PyNacl
  2.  ed25519
  3.  base58

安装方法:

# 安装pynacl

pip3 install pynacl

# 安装ed25519

pip install ed25519

# 安装base58

pip install base58 

注意:这里pynacl是使用pip3安装,ed25519版本较早使用pip安装,即pyhton2用ed25519,pyhton3使用pynacl.base58作为公私钥格式转换的依赖.

3.实现方法

3.1 Pynacl实现

from nacl.signing import SigningKey

import base58

def generate_solana_wallet_nacl():
    signing=SigningKey.generate()
    public_key=base58.b58encode(signing.verify_key.encode()).decode('utf-8') 
    private_key=base58.b58encode(signing._signing_key).decode('utf-8')
    print("public:{}".format(public_key))
    print("private_key:{}".format(private_key))

这里生成的public_key即是公钥,也就是Wallet地址,private_key即为私钥,可以用于wallet导入.格式为Base58格式.

3.2 ed25519实现

import ed25519
import base58

def generate_solana_wallet():
    private_key, public_key = ed25519.create_keypair()
    private_key_base58 = base58.b58encode(private_key.to_bytes()).decode('utf-8')
    public_key_base58 = base58.b58encode(public_key.to_bytes()).decode('utf-8')
    return public_key_base58, private_key_base58

这里的public_key_base58即为公钥,private_key_base58即为私钥.格式为Base58

感谢关注,感谢点赞!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在 Vue 项目中使用 FullCalendar

1、先安装依赖包,根据自己的需求安装,建议使用cnpm安装,不然会很慢有时候会出现安装不上的情况。 npm i fullcalendar/vue --save npm i fullcalendar/core --save // 在月视图或日视图中操作事件 npm i fullcalendar/daygrid --save // 在…

[数仓]三、离线数仓(Hive数仓系统)

第1章 数仓分层 1.1 为什么要分层 DIM:dimensionality 维度 1.2 数据集市与数据仓库概念 1.3 数仓命名规范 1.3.1 表命名 ODS层命名为ods_表名DIM层命名为dim_表名DWD层命名为dwd_表名DWS层命名为dws_表名 DWT层命名为dwt_表名ADS层命名为ads_表名临时表命名为…

Java-Redis-Clickhouse-Jenkins-MybatisPlus-Zookeeper-vscode-Docker

文章目录 Clickhouse基础实操windows docker desktop 下载clickhousespringboot项目配置clickhouse Redis谈下你对Redis的了解?Redis一般都有哪些使用的场景?Redis有哪些常见的功能?Redis支持的数据类型有哪些?Redis为什么这么快…

python安装PyTorch+cuda

1,最终结果 import torchprint(torch.cuda.is_available()) #显示True,则安装成功 print(torch.__version__)#打印当前PyTorch版本号。 print(torch.version.cuda)#打印当前CUDA版本号。 print(torch.backends.cudnn.version())# 打印当前cuDNN版本号。 print(torc…

PHP红包拓客微信小程序系统源码

🎉红包狂欢,客源滚滚来!红包拓客微信小程序,营销新利器🚀 🧧一、创意红包,吸引眼球 你还在为如何吸引顾客而烦恼吗?红包拓客微信小程序来帮你!🎁 它以创意红…

网上怎么样可以挣钱,分享几种可以让你在家赚钱的兼职项目

当今社会,压力越来越大,工作、家庭、生活等等,方方面面都需要钱,仅靠一份工作赚钱,已经很难满足我们的需求。所以很多人都会尝试做一些副业,兼职来补贴家用。 现在呢,有很多人都想在网上赚钱&am…

基于Spring Boot的先进时尚室内管理系统

1 项目介绍 1.1 研究背景 随着21世纪信息技术革命的到来,互联网的普及与发展对人类社会的演变产生了深远影响,跨越了物质生活的丰盈边界,更深层次地滋养了人类的精神文化生活。在过去,囿于地理位置和技术条件的限制,…

Mybatis-Plus一文详解BaseMapper和Service 使用

Mybatis-Plus简介 MyBatis-Plus (opens new window)(简称 MP)是一个MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 特性: 无侵入:只做增强不做…

OpenAI年初安全事件引发内部分裂

🦉 AI新闻 🚀 OpenAI年初安全事件引发内部分裂 摘要:《纽约时报》报道,OpenAI于2023年初发生安全事件,黑客入侵公司内部邮件系统,窃取敏感讨论信息,但未涉及客户数据和源代码。因未向执法部门…

黑马点评报错@user_script:17: user_script:17: attempt to compare nil with number

后面发现是需要预先写入缓存seckill:stock:11,其中11是优惠券id 我数据库里面是11 ,这里redis里面也写了11之后就好使了

AI自动生成PPT怎么用?看完这篇文章你就知道啦

小暑,作为夏季的第五个节气,标志着炎炎夏日的正式到来。在这个时节,阳光明媚,万物生长,人们的心情也随着气温的升高而变得热烈。 然而,对于许多职场人士来说,小暑的到来也意味着需要准备各种汇报…

桑基气泡图 – 5个维度展示KEGG通路富集结果

2022年发表在《Nature communication》上的文章Kir2.1-mediated membrane potential promotes nutrient acquisition and inflammation through regulation of nutrient transporters fig1i使用微生信平台绘制了一张图,我们将其命名为“桑基气泡图”。从此&#xff…

Spring事务的进阶。@Transactional的rollbackFor和propagation属性。

1.3 事务进阶 前面我们通过spring事务管理注解Transactional已经控制了业务层方法的事务。接下来我们要来详细的介绍一下Transactional事务管理注解的使用细节。我们这里主要介绍Transactional注解当中的两个常见的属性: 异常回滚的属性:rollbackFor &…

拿客户电脑,用豆包IDE逆天改命完成需求紧急开发!被公司奖励500!

故事背景 原文链接:拿客户电脑,用豆包IDE逆天改命完成需求紧急开发!被公司奖励500! 前几天,业务拉了一个大客户,客户需要先看我们做的样本项目(类似于官网首页),然后才…

一个php文件怎么实现联系表单自动发送邮件

学习PHP:如何编写一个自动发送邮件的联系表单处理器? 无论是反馈意见、业务咨询,还是技术支持,联系表单都能为用户提供便捷的交流途径。AokSend将探讨如何通过一个PHP文件实现联系表单的自动发送邮件功能。 php文件:…

移除元素合并两个有序数组-LeetCode

一、移除元素 . - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; int removeElement(int* nums, int numsSize, int val) {int src0;int dst0;while(src<numsSize){if(nums[src]val){src;}else if (nums[src]!val){nums[dst]nums[src];src;dst;}}return dst…

Java线程的创建·启动和休眠

一.线程的创建和启动 Java中创建线程的两种方式 ◆继承java.lang.Thread类 ◆实现java.lang.Runnable接口 ◆使用线程的步骤 继承Thread类创建线程 ◆自定义线程类继承自Thread类 ◆重写run()方法&#xff0c;编写线程执行体 ◆创建线程对象&#xff0c;调用start()方法启动…

排序的总结

排序的性质 稳定性 相同的值相对顺序不变&#xff0c;对于结构体排序有意义 排序的比较 插入排序&#xff1a;时间复杂度&#xff1a;O(N^2),空间复杂度&#xff1a;O(1),稳定性&#xff1a;稳定 希尔排序&#xff1a;时间复杂度&#xff1a;O(N^1.3),空间复杂度&#xff1…

Web 基础与HTTP 协议

域名的概述 (1 )域名的结构 (2 )域名结构类型 根域&#xff1a;指的是根服务器&#xff0c;要用来管理互联网的主目录&#xff0c;全世界只有13台。1个为 主根服务器&#xff0c;放置在美国。其余12 个均为辅根服务器&#xff0c;其中9个放置在美国&#xff1b;欧 洲2个&…

桥接模式(大话设计模式)C/C++版本

桥接模式 C #include <iostream> using namespace std;class HandsetSoft // 手机软件 { public:virtual ~HandsetSoft() default;virtual void Run() 0; };class HandsetGame : public HandsetSoft // 手机游戏 { public:void Run() override{cout << "运…