NewMemKeystore
Creates a new empty in-memory keystore. MemKeystore is thread-safe (uses mutex), intended for testing and development, and not persistent (keys are lost when program exits). For production, implement a custom Keystore that securely persists keys.
Function Signature
func NewMemKeystore() *MemKeystoreSource: keystore.go
Parameters
None
Returns
*MemKeystore- New empty MemKeystore instance
Usage Example
package main
import (
"fmt"
"math/big"
"github.com/NethermindEth/juno/core/felt"
"github.com/NethermindEth/starknet.go/account"
)
func main() {
ks := account.NewMemKeystore()
fmt.Println("Created new empty MemKeystore")
privKeyFelt, _ := new(felt.Felt).SetRandom()
bytes := privKeyFelt.Bytes()
privKey := new(big.Int).SetBytes(bytes[:])
pubKey := "0x1234567890abcdef"
fmt.Printf("\nTest key pair:")
fmt.Printf("Public Key: %s\n", pubKey)
fmt.Printf("Private Key: %s\n", privKey)
fmt.Println("\nAttempting to get non-existent key:")
_, err := ks.Get("0x9999")
if err != nil {
fmt.Printf("Error (expected): %v\n", err)
}
fmt.Println("\nAdding key to keystore:")
ks.Put(pubKey, privKey)
fmt.Println("Key added successfully")
fmt.Println("\nRetrieving key from keystore:")
retrieved, err := ks.Get(pubKey)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Retrieved key: %s\n", retrieved)
fmt.Printf("Key retrieved successfully: %v\n", retrieved != nil)
}
fmt.Println("\nAdding another key:")
pubKey2 := "0xfedcba0987654321"
privKey2 := new(big.Int).SetUint64(999999)
ks.Put(pubKey2, privKey2)
fmt.Printf("Added key with public key: %s\n", pubKey2)
retrieved2, err := ks.Get(pubKey2)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Retrieved second key: %s\n", retrieved2)
}
}Error Handling
NewMemKeystore does not return errors. It always creates a valid empty keystore instance.
Common Use Cases
- Creating an empty keystore before adding keys with Put method
- Initializing keystore for test accounts
- Setting up keystore for development environments
- Managing multiple key pairs in testing scenarios

