Hyperpay Wallet HardWallet

HardWallet is committed to build a straightforward and easy-to-use library. The open source framework displays all functions and methods related to the hardware wallet. Contains related mnemonics, private keys, addresses and related signed transactions. And use a ble middleware to simulate the relevant data compression and transmission under Bluetooth communication.

Environment Setup

  • Go Installation
  • git clone https://github.com/hyperpayorg/hardwallet
  • About the missing librarys, use go get xxx .. to install them
  • cd hardwallet

How To Use

For ease of use and understanding, some tests that can be tested directly are written. This can help to quickly understand the relationship between the various components.

Generate Wallet

Private key, public key and address can be generated by GenerateMnWallet func. Language supports: englishkoreanchinese_simplified ,etc. Mnemonics supports: 12 words24 words,etc. Password supported.

ceateAccount := &clientwallet.CreateAccount{
	Language: "english",
	Length:   12,
	Password: "123456",
}
fmt.Println(ceateAccount)
isCreated := clientwallet.GenerateMnWallet(ceateAccount)
fmt.Println(isCreated)

Wallet SignRawTransation

SignRawTransation can be generated by func SignRawTransaction(signIn *SignInput) func.

signIn := &clientwallet.SignInput{
		Coin:     "btc",
		Symbol:   "btc",
		Amount:   10000,
		Change:   25000000 - 10000 - 10000,
		Fee:      10000,
		SrcAddr:  "",
		DestAddr: "",
		Net:      "testnet",
		Password: "123456",
		Inputs:   jsonInputs,
}

signResult := clientwallet.SignRawTransaction(signIn)
fmt.Println(signResult)

Data structure returned as follow:

type WalletAccount struct {
	ResCode    int    // 0 fail 1 Success
	Address    string
	PublicKey  string
	PrivateKey string
	Seed       string // root seed
	Coin       string
	ErrMsg     string // fail messages
	ErrCode    int    // err code
	Params     []byte // reserved fields
}

Wallet EnKeystore

Key information storage supports pwd & udid.

Key := "L1oh9KNH4XpJgqDodxhjPgaEVS1qwXToWvPf2Zyn6bcm7xxxxxxx"
pwd := "11111"
udid := "AOIJF-QWEQR-VDFBET-YTAWWE"

// Encode
enResult := EnKeystore(Key, pwd, udid)
fmt.Println("Keystore : \n", enResult.Result)

Wallet KeyStore File Decrypt

The keystore file is decrypted using the KeyStore json, udid and the password.

To decrypt keystore file, use the following methods:

func DeKeystore(json, password, udid string)

Description: JSON is the KeyStore JSON file

Data structure returned as KeystoreResult

Wallet DeKeystore

enResult := "xxxxxxx"
pwd := "11111"
udid := "AOIJF-QWEQR-VDFBET-YTAWWE"
// Decode
deResult := DeKeystore(enResult, pwd, udid)
fmt.Println("PrivateKey : ", deResult.Result)