Skip to content

feat: implement stealth addresses for partial unshield change notes#84

Merged
nol4lej merged 2 commits into
mainfrom
feat/stealth-partial-unshield
May 8, 2026
Merged

feat: implement stealth addresses for partial unshield change notes#84
nol4lej merged 2 commits into
mainfrom
feat/stealth-partial-unshield

Conversation

@nol4lej
Copy link
Copy Markdown
Member

@nol4lej nol4lej commented May 8, 2026

  • Generate unique ephSk-derived stealthOwnerPk per unshield (Task 1.4)
  • Expand memo value to u128 (two u64 LE words)
  • Update memo wire format to 176 bytes (nonce 12 + ciphertext 132 + ephPk 32)
  • Add change_encrypted_memo parameter to pallet extrinsic and EVM precompile
  • Update precompile selector from 0xd21d9a79 to 0xcc1a3b38 (9 parameters)

Prevents linkability of partial unshield change notes to user's global ownerPk. Recipients recover via ECDH + HKDF using ephPk embedded in memo.

Affected: primitives/encrypted-memo, frame/shielded-pool, frame/evm/precompile

nol4lej added 2 commits May 8, 2026 14:09
- Generate unique ephSk-derived stealthOwnerPk per unshield (Task 1.4)
- Expand memo value to u128 (two u64 LE words)
- Update memo wire format to 176 bytes (nonce 12 + ciphertext 132 + ephPk 32)
- Add change_encrypted_memo parameter to pallet extrinsic and EVM precompile
- Update precompile selector from 0xd21d9a79 to 0xcc1a3b38 (9 parameters)

Prevents linkability of partial unshield change notes to user's global ownerPk.
Recipients recover via ECDH + HKDF using ephPk embedded in memo.

Affected: primitives/encrypted-memo, frame/shielded-pool, frame/evm/precompile
@nol4lej nol4lej merged commit e0bc66c into main May 8, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant