Franken Addresses
A pattern for combining payment and stake credentials from different sources
Franken Addresses (Hybrid Pattern)
Important: Franken addresses are not a separate address type. They are simply Base addresses where the payment and stake credentials happen to come from different sources. This is a construction pattern, not a distinct address format.
Franken addresses (also called Frankenstein or chimera addresses) are a way of constructing base addresses where the payment credential and stake credential are cryptographically independent - they come from different wallets, smart contracts, or key sources.
What They Really Are
Franken "Address" = Base Address with Independent Credentials
= Payment Credential (Source A) + Stake Credential (Source B)On-chain: These look exactly like regular base addresses (57 bytes, same header, same format)
Wallets: See them as normal base addresses - no special handling needed
The "Trick": The payment and stake credentials don't share a common derivation path or master key
Key Properties
Independence: Payment and stake keys are from completely different sources
No Trust Required: Each party only controls their respective credential
Standard Format: Still a valid base address - wallets see it as normal
Separate Security: Compromise of one key doesn't affect the other
Credential Combinations
This pattern works with any combination of key hashes and script hashes for payment and stake credentials:
| Payment Credential | Stake Credential | Use Case |
|---|---|---|
| Key Hash | Key Hash | Traditional pattern: two different wallets |
| Script Hash | Key Hash | Smart contract funds + individual staking control |
| Key Hash | Script Hash | Individual payment + DAO-controlled delegation |
| Script Hash | Script Hash | Full smart contract control with separation |
Examples:
- Payment: Script, Stake: Key - Multi-sig treasury where funds require multiple signatures, but delegation is controlled by a single administrator
- Payment: Key, Stake: Script - Individual controls funds, but staking/delegation follows governance decisions (e.g., DAO votes on pool selection)
- Payment: Script A, Stake: Script B - Different smart contracts control spending vs staking logic (e.g., time-locked payments, voting contract for delegation)
This flexibility makes the pattern ideal for complex custody arrangements, DeFi protocols, and governance systems.
Construction
Building Franken Addresses with Core Module
Build directly from two independent key hashes using the Core Address class:
import { } from "@evolution-sdk/evolution";
// Create Franken address with payment from Wallet A, stake from Wallet B
const = new ..({
: 1, // mainnet
: new ..({
: new (28) // Wallet A's payment key hash
}),
: new ..({
: new (28) // Wallet B's stake key hash (different!)
})
});
// Convert to Bech32
const = ..();
.("Franken address:", );Example Use Case: Custodial Platform
A common use case is a custodial platform where the platform controls fund management, but users retain control over staking delegation:
import { } from "@evolution-sdk/evolution";
// Platform controls spending (payment credential)
// User controls delegation (stake credential)
function (
: ,
:
) {
return new ..({
: 1,
: new ..({
:
}),
: new ..({
:
})
});
}
// Usage: Platform derives payment key, user provides their stake key
// Result: Platform can manage funds, user can delegate to their chosen stake poolBenefits of this pattern:
- Platform can manage funds without controlling user's staking rewards
- Users retain autonomy over delegation decisions
- Clear separation of responsibilities
Limitations
Complexity: More mental overhead. Need to understand which credential controls what operation.
Coordination: Multiple parties may need to coordinate, especially for reward distribution.
Backup: Each party must backup their credentials independently. No single recovery mechanism.
Tooling: Not all tools recognize the split credential ownership, though addresses function normally.
Next Steps
- Base Addresses - Understanding the underlying base address format
- Validation - Verifying address structure