- Created common types (Hash, Address) in crypto/common
- Created hexutil utilities for hex encoding/decoding
- Created math utilities for big integer operations
- Created minimal RLP encoder for crypto package needs
- Updated all imports from github.com/luxfi/geth to local packages
- All tests pass with no functionality changes
- Created utils package with common types (Address, Hash, Big1, Big0)
- Added utility functions (BytesToAddress, HexToAddress, CopyBytes, FromHex)
- Implemented math utilities (PaddedBigBytes, MustParseBig256)
- Created minimal RLP encoder for CreateAddress function
- Added hexutil functions for KZG4844 support
- Updated all imports to use local utils instead of geth
- All tests passing successfully
- Implemented proper public key aggregation using direct G1 point addition
- Created DirectPublicKey, DirectSignature, and DirectSecretKey types that
wrap the circl BLS12-381 G1/G2 types directly
- Fixed AggregatePublicKeys to properly add G1 points instead of just
returning the first key
- Added comprehensive tests for aggregation that verify multi-signature works
- Added TODO notes for VerifyProofOfPossession and SignProofOfPossession
to use different domain separation tags (DST) once we have better access
to the underlying circl private key representation
The implementation now properly supports BLS signature aggregation which is
required for the Lux warp/lp118 multi-signature verification.
All tests pass including multi-signature aggregation verification.