wallets

package
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 1, 2024 License: MIT Imports: 35 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddressToPublicKeyHash

func AddressToPublicKeyHash(address string) ([]byte, error)

AddressToPublicKeyHash 通过钱包地址获取公钥哈希 参数:

  • address (string): 钱包地址

返回值:

  • []byte: 公钥哈希
  • error: 失败时的错误信息

func DecodeBase58

func DecodeBase58(data string) []byte

DecodeBase58 从Base58格式解码数据 参数:

  • data (string): Base58编码的字符串

返回值:

  • []byte: 解码后的数据

func DoubleSHA256

func DoubleSHA256(data []byte) []byte

DoubleSHA256 对数据执行两次SHA-256哈希 参数:

  • data ([]byte): 需要哈希的数据

返回值:

  • []byte: 哈希值

func EncodeBase58

func EncodeBase58(data []byte) string

EncodeBase58 将数据编码为Base58格式 参数:

  • data ([]byte): 输入的数据

返回值:

  • string: Base58编码后的字符串

func ExtractPublicKey

func ExtractPublicKey(privateKey *ecdsa.PrivateKey) ([]byte, error)

ExtractPublicKey 从ECDSA私钥中提取公钥 参数:

  • privateKey (*ecdsa.PrivateKey): 输入的ECDSA私钥

返回值:

  • []byte: 提取的公钥的字节表示

func GenerateECDSAKeyPair

func GenerateECDSAKeyPair(salt []byte, password []byte, iterations, keyLength int, useSHA512 bool) (*ecdsa.PrivateKey, []byte, error)

GenerateECDSAKeyPair 从给定的种子生成ECDSA密钥对 参数:

  • salt ([]byte): 加密操作的盐值
  • password ([]byte): 用于生成密钥的密码
  • iterations (int): PBKDF2算法的迭代次数
  • keyLength (int): 生成的密钥长度
  • useSHA512 (bool): 是否使用SHA512哈希函数

返回值:

  • *ecdsa.PrivateKey: 生成的私钥
  • []byte: 公钥的字节表示
  • error: 失败时的错误信息

func HashPublicKey

func HashPublicKey(pubKeyBytes []byte) []byte

HashPublicKey 将公钥字节进行SHA-256和RIPEMD-160双重哈希 参数:

  • pubKeyBytes ([]byte): 公钥的字节表示

返回值:

  • []byte: 公钥的哈希值

func IsAddressOfPublicKey

func IsAddressOfPublicKey(address string, publicKey []byte) bool

IsAddressOfPublicKey 验证给定地址是否由指定的公钥生成 参数:

  • address (string): 输入的Base58编码钱包地址
  • publicKey ([]byte): 输入的公钥字节

返回值:

  • bool: 地址是否由公钥生成的布尔值

func IsAddressOfPublicKeyHash

func IsAddressOfPublicKeyHash(address string, publicKeyHash []byte) bool

IsAddressOfPublicKeyHash 验证给定地址是否与公钥哈希匹配 参数:

  • address (string): 输入的Base58编码钱包地址
  • publicKeyHash ([]byte): 输入的公钥哈希

返回值:

  • bool: 地址是否与公钥哈希匹配的布尔值

func IsValidAddress

func IsValidAddress(address string) bool

IsValidAddress 检查钱包地址是否有效 参数:

  • address (string): 钱包地址

返回值:

  • bool: 地址是否有效的布尔值

func IsValidPublicKey

func IsValidPublicKey(pubKeyBytes []byte) bool

IsValidPublicKey 检查公钥字节是否有效 参数:

  • pubKeyBytes ([]byte): 公钥字节

返回值:

  • bool: 公钥是否有效的布尔值

func IsValidPublicKeyHash

func IsValidPublicKeyHash(pubKeyHash []byte) bool

IsValidPublicKeyHash 检查公钥哈希是否有效 参数:

  • pubKeyHash ([]byte): 公钥哈希

返回值:

  • bool: 公钥哈希是否有效的布尔值

func MarshalPrivateKey

func MarshalPrivateKey(privateKey *ecdsa.PrivateKey) ([]byte, error)

MarshalPrivateKey 将ECDSA私钥序列化为字节表示 参数:

  • privateKey (*ecdsa.PrivateKey): 输入的ECDSA私钥

返回值:

  • []byte: 私钥的字节序列
  • error: 失败时的错误信息

func MarshalPublicKey

func MarshalPublicKey(publicKey ecdsa.PublicKey) ([]byte, error)

MarshalPublicKey 将ECDSA公钥序列化为字节表示 参数:

  • publicKey (ecdsa.PublicKey): 输入的ECDSA公钥

返回值:

  • []byte: 公钥的字节序列

func PrivateKeyToAddress

func PrivateKeyToAddress(privateKey *ecdsa.PrivateKey) (string, bool)

PrivateKeyToAddress 通过私钥生成钱包地址 参数:

  • privateKey (*ecdsa.PrivateKey): 私钥

返回值:

  • string: 钱包地址
  • bool: 是否成功

func PrivateKeyToPublicKeyHash

func PrivateKeyToPublicKeyHash(privateKey *ecdsa.PrivateKey) ([]byte, bool)

PrivateKeyToPublicKeyHash 通过私钥生成公钥哈希 参数:

  • privateKey (*ecdsa.PrivateKey): 私钥

返回值:

  • []byte: 公钥哈希
  • bool: 是否成功

func PublicKeyBytesToAddress

func PublicKeyBytesToAddress(pubKeyBytes []byte) (string, bool)

PublicKeyBytesToAddress 通过公钥字节生成钱包地址 参数:

  • pubKeyBytes ([]byte): 公钥字节

返回值:

  • string: 钱包地址
  • bool: 是否成功

func PublicKeyBytesToPublicKeyHash

func PublicKeyBytesToPublicKeyHash(pubKeyBytes []byte) ([]byte, bool)

PublicKeyBytesToPublicKeyHash 通过公钥字节生成公钥哈希 参数:

  • pubKeyBytes ([]byte): 公钥字节

返回值:

  • []byte: 公钥哈希
  • bool: 是否成功

func PublicKeyHashToAddress

func PublicKeyHashToAddress(pubKeyHash []byte) (string, bool)

PublicKeyHashToAddress 通过公钥哈希生成钱包地址 参数:

  • pubKeyHash ([]byte): 公钥哈希

返回值:

  • string: 钱包地址
  • bool: 是否成功

func PublicKeyToAddress

func PublicKeyToAddress(publicKey ecdsa.PublicKey) (string, bool)

PublicKeyToAddress 通过公钥生成钱包地址 参数:

  • publicKey (ecdsa.PublicKey): 公钥

返回值:

  • string: 钱包地址
  • bool: 是否成功

func PublicKeyToPublicKeyHash

func PublicKeyToPublicKeyHash(publicKey ecdsa.PublicKey) ([]byte, bool)

PublicKeyToPublicKeyHash 通过公钥生成公钥哈希 参数:

  • publicKey (ecdsa.PublicKey): 公钥

返回值:

  • []byte: 公钥哈希
  • bool: 是否成功

func UnmarshalPrivateKey

func UnmarshalPrivateKey(privKeyBytes []byte) (*ecdsa.PrivateKey, error)

UnmarshalPrivateKey 将字节序列反序列化为ECDSA私钥 参数:

  • privKeyBytes ([]byte): 私钥的字节表示

返回值:

  • *ecdsa.PrivateKey: 反序列化后的ECDSA私钥
  • error: 失败时的错误信息

func UnmarshalPublicKey

func UnmarshalPublicKey(pubKeyBytes []byte) (ecdsa.PublicKey, error)

UnmarshalPublicKey 将字节序列反序列化为ECDSA公钥 参数:

  • pubKeyBytes ([]byte): 公钥的字节表示

返回值:

  • ecdsa.PublicKey: 反序列化后的ECDSA公钥
  • error: 失败时的错误信息

func VerifyAddressChecksum

func VerifyAddressChecksum(address string) bool

VerifyAddressChecksum 验证地址的校验和是否正确 参数:

  • address (string): 输入的Base58编码钱包地址

返回值:

  • bool: 校验和是否正确的布尔值

Types

type InitWalletOutput

type InitWalletOutput struct {
	fx.Out
	Wallet *Wallet // 钱包
}

InitWalletOutput 初始化钱包输出结构体

func InitWallet

func InitWallet(lc fx.Lifecycle) (out InitWalletOutput, err error)

InitWallet 初始化钱包,包括加载本地钱包数据和设置关闭时的保存逻辑 参数:

  • lc (fx.Lifecycle): 应用程序的生命周期

返回值:

  • InitWalletOutput: 包含初始化的钱包
  • error: 如果初始化过程中发生错误

type LocalWallets

type LocalWallets struct {
	Wallets map[string]WalletInfo // 存储钱包信息的映射,键为钱包地址
}

LocalWallets 本地钱包存储结构

type LoginInfo

type LoginInfo struct {
	Mnemonic   []byte            // 助记词
	PrivateKey *ecdsa.PrivateKey // 私钥
	Password   [16]byte          // 密码的MD5哈希
}

LoginInfo 登录钱包信息结构体

type Wallet

type Wallet struct {
	sync.Mutex
	Mnemonics         sync.Map            // 助记词的存储,保证线程安全
	LocalRecords      map[string][16]byte // 本地记录,存储钱包地址和对应的密码MD5哈希
	CurrentlyLoggedIn *LoginInfo          // 当前登录的钱包信息
}

Wallet 钱包主结构体,管理钱包数据和操作

func (*Wallet) AddMnemonic

func (w *Wallet) AddMnemonic(hash string, mnemonic string)

AddMnemonic 向内存池添加助记词 参数:

  • hash (string): 助记词哈希
  • mnemonic (string): 助记词

func (*Wallet) CheckLoggedInPassword

func (w *Wallet) CheckLoggedInPassword(password string) bool

CheckLoggedInPassword 校验当前登录钱包的密码是否正确 参数:

  • password (string): 输入的密码

返回值:

  • bool: true表示密码正确,否则false

func (*Wallet) ClearAllWallets

func (w *Wallet) ClearAllWallets() error

ClearAllWallets 清除本地所有钱包,包括已登录的信息 返回值:

  • error: 如果清除过程中发生错误

func (*Wallet) DeleteWallet

func (w *Wallet) DeleteWallet(address string) error

DeleteWallet 删除本地钱包信息 输入钱包地址,如果存在则删除该钱包信息 参数:

  • address (string): 钱包地址

返回值:

  • error: 如果删除过程中发生错误

func (*Wallet) GenerateNewMnemonic

func (w *Wallet) GenerateNewMnemonic() ([]string, error)

GenerateNewMnemonic 生成新助记词 返回值:

  • []string: 生成的助记词数组
  • error: 如果生成过程中发生错误

func (*Wallet) GetLoggedInAddress

func (w *Wallet) GetLoggedInAddress() (string, bool)

GetLoggedInAddress 返回当前登录钱包的地址 返回值:

  • string: 当前登录钱包的地址,如果没有登录钱包则返回空字符串

func (*Wallet) GetLoggedInMnemonic

func (w *Wallet) GetLoggedInMnemonic() ([]string, bool)

GetLoggedInMnemonic 返回当前登录钱包的助记词 返回值:

  • []string: 当前登录钱包的助记词,如果没有登录钱包则返回nil

func (*Wallet) GetLoggedInPublicKey

func (w *Wallet) GetLoggedInPublicKey() ([]byte, bool)

GetLoggedInPublicKey 返回当前登录钱包的公钥 返回值:

  • []byte: 当前登录钱包的公钥字节,如果没有登录钱包则返回nil
  • bool: 返回操作是否成功

func (*Wallet) GetLoggedInPublicKeyHash

func (w *Wallet) GetLoggedInPublicKeyHash() ([]byte, bool)

GetLoggedInPublicKeyHash 返回当前登录钱包的公钥哈希 返回值:

  • []byte: 当前登录钱包的公钥哈希,如果没有登录钱包则返回nil
  • bool: 返回操作是否成功

func (*Wallet) GetMnemonic

func (w *Wallet) GetMnemonic(hash string) (string, bool)

GetMnemonic 从内存池获取助记词,并删除键值 参数:

  • hash (string): 助记词哈希

返回值:

  • string: 助记词
  • bool: 是否成功找到助记词

func (*Wallet) GetSortedWalletAddresses

func (w *Wallet) GetSortedWalletAddresses() []string

GetSortedWalletAddresses 返回排序后的钱包地址数组 从 LocalRecords 提取所有钱包地址,进行排序,并返回排序后的地址数组 返回值:

  • []string: 排序后的钱包地址数组

func (*Wallet) ImportWallet

func (w *Wallet) ImportWallet(mnemonic []byte, privateKey *ecdsa.PrivateKey, passwordHash [16]byte) error

ImportWallet 导入钱包 参数:

  • mnemonic ([]byte): 助记词
  • privateKey (*ecdsa.PrivateKey): 私钥
  • passwordHash ([16]byte): 密码的MD5哈希

返回值:

  • error: 如果导入失败

func (*Wallet) ImportWalletWithMnemonic

func (w *Wallet) ImportWalletWithMnemonic(hash, password string) error

ImportWalletWithMnemonic 使用助记词导入钱包的公共子方法 参数:

  • mnemonic (string): 助记词
  • password (string): 用户提供的密码

返回值:

  • error: 处理过程中发生的任何错误

用途说明:

  • 使用助记词生成密钥对,并将钱包导入系统。
  • 最终将钱包设为当前登录状态。

func (*Wallet) IsLoggedInValid

func (w *Wallet) IsLoggedInValid() bool

IsLoggedInValid 检查当前登录的钱包信息是否完整和有效 返回值:

  • bool: true 如果登录信息有效,否则 false

func (*Wallet) LoginWallet

func (w *Wallet) LoginWallet(address, password string) error

LoginWallet 选择钱包地址和输入密码登录钱包 参数:

  • address (string): 钱包地址
  • password (string): 输入的密码

返回值:

  • error: 如果登录失败

func (*Wallet) LogoutWallet

func (w *Wallet) LogoutWallet() error

LogoutWallet 退出当前登录的钱包 返回值:

  • error: 如果退出过程中发生错误

func (*Wallet) RemoveMnemonic

func (w *Wallet) RemoveMnemonic(hash string)

RemoveMnemonic 从内存池删除助记词 参数:

  • hash (string): 助记词哈希

type WalletInfo

type WalletInfo struct {
	Mnemonic   []byte      // 助记词
	PrivateKey []byte      // 私钥
	Password   [16]byte    // 密码的MD5哈希
	ImportTime time.Time   // 钱包导入时间
	LoginTimes []time.Time // 钱包登录时间记录
}

WalletInfo 单个钱包的信息

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL