Documentation ¶
Index ¶
- func AddressToPublicKeyHash(address string) ([]byte, error)
- func DecodeBase58(data string) []byte
- func DoubleSHA256(data []byte) []byte
- func EncodeBase58(data []byte) string
- func ExtractPublicKey(privateKey *ecdsa.PrivateKey) ([]byte, error)
- func GenerateECDSAKeyPair(salt []byte, password []byte, iterations, keyLength int, useSHA512 bool) (*ecdsa.PrivateKey, []byte, error)
- func HashPublicKey(pubKeyBytes []byte) []byte
- func IsAddressOfPublicKey(address string, publicKey []byte) bool
- func IsAddressOfPublicKeyHash(address string, publicKeyHash []byte) bool
- func IsValidAddress(address string) bool
- func IsValidPublicKey(pubKeyBytes []byte) bool
- func IsValidPublicKeyHash(pubKeyHash []byte) bool
- func MarshalPrivateKey(privateKey *ecdsa.PrivateKey) ([]byte, error)
- func MarshalPublicKey(publicKey ecdsa.PublicKey) ([]byte, error)
- func PrivateKeyToAddress(privateKey *ecdsa.PrivateKey) (string, bool)
- func PrivateKeyToPublicKeyHash(privateKey *ecdsa.PrivateKey) ([]byte, bool)
- func PublicKeyBytesToAddress(pubKeyBytes []byte) (string, bool)
- func PublicKeyBytesToPublicKeyHash(pubKeyBytes []byte) ([]byte, bool)
- func PublicKeyHashToAddress(pubKeyHash []byte) (string, bool)
- func PublicKeyToAddress(publicKey ecdsa.PublicKey) (string, bool)
- func PublicKeyToPublicKeyHash(publicKey ecdsa.PublicKey) ([]byte, bool)
- func UnmarshalPrivateKey(privKeyBytes []byte) (*ecdsa.PrivateKey, error)
- func UnmarshalPublicKey(pubKeyBytes []byte) (ecdsa.PublicKey, error)
- func VerifyAddressChecksum(address string) bool
- type InitWalletOutput
- type LocalWallets
- type LoginInfo
- type Wallet
- func (w *Wallet) AddMnemonic(hash string, mnemonic string)
- func (w *Wallet) CheckLoggedInPassword(password string) bool
- func (w *Wallet) ClearAllWallets() error
- func (w *Wallet) DeleteWallet(address string) error
- func (w *Wallet) GenerateNewMnemonic() ([]string, error)
- func (w *Wallet) GetLoggedInAddress() (string, bool)
- func (w *Wallet) GetLoggedInMnemonic() ([]string, bool)
- func (w *Wallet) GetLoggedInPublicKey() ([]byte, bool)
- func (w *Wallet) GetLoggedInPublicKeyHash() ([]byte, bool)
- func (w *Wallet) GetMnemonic(hash string) (string, bool)
- func (w *Wallet) GetSortedWalletAddresses() []string
- func (w *Wallet) ImportWallet(mnemonic []byte, privateKey *ecdsa.PrivateKey, passwordHash [16]byte) error
- func (w *Wallet) ImportWalletWithMnemonic(hash, password string) error
- func (w *Wallet) IsLoggedInValid() bool
- func (w *Wallet) LoginWallet(address, password string) error
- func (w *Wallet) LogoutWallet() error
- func (w *Wallet) RemoveMnemonic(hash string)
- type WalletInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddressToPublicKeyHash ¶
AddressToPublicKeyHash 通过钱包地址获取公钥哈希 参数:
- address (string): 钱包地址
返回值:
- []byte: 公钥哈希
- error: 失败时的错误信息
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 ¶
HashPublicKey 将公钥字节进行SHA-256和RIPEMD-160双重哈希 参数:
- pubKeyBytes ([]byte): 公钥的字节表示
返回值:
- []byte: 公钥的哈希值
func IsAddressOfPublicKey ¶
IsAddressOfPublicKey 验证给定地址是否由指定的公钥生成 参数:
- address (string): 输入的Base58编码钱包地址
- publicKey ([]byte): 输入的公钥字节
返回值:
- bool: 地址是否由公钥生成的布尔值
func IsAddressOfPublicKeyHash ¶
IsAddressOfPublicKeyHash 验证给定地址是否与公钥哈希匹配 参数:
- address (string): 输入的Base58编码钱包地址
- publicKeyHash ([]byte): 输入的公钥哈希
返回值:
- bool: 地址是否与公钥哈希匹配的布尔值
func IsValidPublicKey ¶
IsValidPublicKey 检查公钥字节是否有效 参数:
- pubKeyBytes ([]byte): 公钥字节
返回值:
- bool: 公钥是否有效的布尔值
func IsValidPublicKeyHash ¶
IsValidPublicKeyHash 检查公钥哈希是否有效 参数:
- pubKeyHash ([]byte): 公钥哈希
返回值:
- bool: 公钥哈希是否有效的布尔值
func MarshalPrivateKey ¶
func MarshalPrivateKey(privateKey *ecdsa.PrivateKey) ([]byte, error)
MarshalPrivateKey 将ECDSA私钥序列化为字节表示 参数:
- privateKey (*ecdsa.PrivateKey): 输入的ECDSA私钥
返回值:
- []byte: 私钥的字节序列
- error: 失败时的错误信息
func MarshalPublicKey ¶
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 ¶
PublicKeyBytesToAddress 通过公钥字节生成钱包地址 参数:
- pubKeyBytes ([]byte): 公钥字节
返回值:
- string: 钱包地址
- bool: 是否成功
func PublicKeyBytesToPublicKeyHash ¶
PublicKeyBytesToPublicKeyHash 通过公钥字节生成公钥哈希 参数:
- pubKeyBytes ([]byte): 公钥字节
返回值:
- []byte: 公钥哈希
- bool: 是否成功
func PublicKeyHashToAddress ¶
PublicKeyHashToAddress 通过公钥哈希生成钱包地址 参数:
- pubKeyHash ([]byte): 公钥哈希
返回值:
- string: 钱包地址
- bool: 是否成功
func PublicKeyToAddress ¶
PublicKeyToAddress 通过公钥生成钱包地址 参数:
- publicKey (ecdsa.PublicKey): 公钥
返回值:
- string: 钱包地址
- bool: 是否成功
func PublicKeyToPublicKeyHash ¶
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 ¶
UnmarshalPublicKey 将字节序列反序列化为ECDSA公钥 参数:
- pubKeyBytes ([]byte): 公钥的字节表示
返回值:
- ecdsa.PublicKey: 反序列化后的ECDSA公钥
- error: 失败时的错误信息
func VerifyAddressChecksum ¶
VerifyAddressChecksum 验证地址的校验和是否正确 参数:
- address (string): 输入的Base58编码钱包地址
返回值:
- bool: 校验和是否正确的布尔值
Types ¶
type InitWalletOutput ¶
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) CheckLoggedInPassword ¶
CheckLoggedInPassword 校验当前登录钱包的密码是否正确 参数:
- password (string): 输入的密码
返回值:
- bool: true表示密码正确,否则false
func (*Wallet) DeleteWallet ¶
DeleteWallet 删除本地钱包信息 输入钱包地址,如果存在则删除该钱包信息 参数:
- address (string): 钱包地址
返回值:
- error: 如果删除过程中发生错误
func (*Wallet) GenerateNewMnemonic ¶
GenerateNewMnemonic 生成新助记词 返回值:
- []string: 生成的助记词数组
- error: 如果生成过程中发生错误
func (*Wallet) GetLoggedInAddress ¶
GetLoggedInAddress 返回当前登录钱包的地址 返回值:
- string: 当前登录钱包的地址,如果没有登录钱包则返回空字符串
func (*Wallet) GetLoggedInMnemonic ¶
GetLoggedInMnemonic 返回当前登录钱包的助记词 返回值:
- []string: 当前登录钱包的助记词,如果没有登录钱包则返回nil
func (*Wallet) GetLoggedInPublicKey ¶
GetLoggedInPublicKey 返回当前登录钱包的公钥 返回值:
- []byte: 当前登录钱包的公钥字节,如果没有登录钱包则返回nil
- bool: 返回操作是否成功
func (*Wallet) GetLoggedInPublicKeyHash ¶
GetLoggedInPublicKeyHash 返回当前登录钱包的公钥哈希 返回值:
- []byte: 当前登录钱包的公钥哈希,如果没有登录钱包则返回nil
- bool: 返回操作是否成功
func (*Wallet) GetMnemonic ¶
GetMnemonic 从内存池获取助记词,并删除键值 参数:
- hash (string): 助记词哈希
返回值:
- string: 助记词
- bool: 是否成功找到助记词
func (*Wallet) GetSortedWalletAddresses ¶
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 ¶
ImportWalletWithMnemonic 使用助记词导入钱包的公共子方法 参数:
- mnemonic (string): 助记词
- password (string): 用户提供的密码
返回值:
- error: 处理过程中发生的任何错误
用途说明:
- 使用助记词生成密钥对,并将钱包导入系统。
- 最终将钱包设为当前登录状态。
func (*Wallet) IsLoggedInValid ¶
IsLoggedInValid 检查当前登录的钱包信息是否完整和有效 返回值:
- bool: true 如果登录信息有效,否则 false
func (*Wallet) LoginWallet ¶
LoginWallet 选择钱包地址和输入密码登录钱包 参数:
- address (string): 钱包地址
- password (string): 输入的密码
返回值:
- error: 如果登录失败