{"id":22378,"library":"slip10","title":"python-slip10","description":"A reference implementation of the SLIP-0010 specification that generalizes BIP-0032 hierarchical deterministic wallet derivation for curves secp256k1, NIST P-256, ed25519, and curve25519. Current version 1.1.0, stable maintenance.","status":"active","version":"1.1.0","language":"python","source_language":"en","source_url":"https://github.com/trezor/python-slip10","tags":["SLIP-0010","BIP-0032","HD wallet","cryptography","bitcoin","hierarchical deterministic"],"install":[{"cmd":"pip install slip10","lang":"bash","label":"PyPI install"}],"dependencies":[],"imports":[{"note":"Main function for deriving HD nodes.","wrong":"","symbol":"derive_node","correct":"from slip10 import derive_node"}],"quickstart":{"code":"from slip10 import derive_node\nfrom slip10 import BIP32Curve\n\n# BIP-32 test vector for secp256k1\nseed = bytes.fromhex('000102030405060708090a0b0c0d0e0f')\nchain_code, private_key, public_key = derive_node(\n    seed,\n    path=[44 | 0x80000000, 0 | 0x80000000],\n    curve=BIP32Curve.SECP256K1\n)\nprint(private_key.hex())\nprint(public_key.hex())","lang":"python","description":"Derive a hierarchical deterministic node from a seed."},"warnings":[{"fix":"Always pass curve=BIP32Curve.SECP256K1 (or your desired curve) when calling derive_node.","message":"In version 1.0.0, the derive_node function did not accept the 'curve' parameter; it defaulted to secp256k1. In 1.1.0, the curve parameter is required if not using the default. Code without explicit curve may break if default changes.","severity":"breaking","affected_versions":"<1.0.0"},{"fix":"Unpack as: chain_code, private_key, public_key = derive_node(...).","message":"The return order from derive_node is (chain_code, private_key, public_key). Many users expect (private_key, chain_code, public_code) or similar.","severity":"gotcha","affected_versions":"all"},{"fix":"Use path=[44 | 0x80000000, ...] for hardened derivation.","message":"The path argument uses hardened derivation with the '| 0x80000000' pattern (not apostrophe notation). Using integers without the OR may derive non-hardened keys unintentionally.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Upgrade to slip10>=1.0.0: pip install --upgrade slip10","cause":"Older version of slip10 (pre-1.0.0) did not export derive_node.","error":"ImportError: cannot import name 'derive_node' from 'slip10'"},{"fix":"Include the hardened flag: path=[44 | 0x80000000, ...]","cause":"Passing the path as raw integers without hardened bit for hardened keys.","error":"ValueError: invalid path element at index 0: 44"},{"fix":"Pass curve parameter: derive_node(seed, path, curve=BIP32Curve.SECP256K1)","cause":"In version 1.1.0, curve is required when calling derive_node without defaults.","error":"TypeError: derive_node() missing 1 required positional argument: 'curve'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}