user1142: I've read a lot about mangled/franken addresses recently. A mangled address is an address, where the payment part of the address belongs to a different wallet than the stake part. This is an important thing to consider when building DApps on Cardano.
I'm wondering how it is possible to create such an address.
To create a payment address using the cardano-cli, both the private payment key and the private stake key are required:
cardano-cli address build \
    --payment-verification-key-file payment.vkey \
    --stake-verification-key-file stake.vkey \
    --out-file payment.addr \
    --mainnet

Let's say we have Alice who owns wallet A and Bob who owns wallet B.
Alice doesn't have access to the private keys of Bob, so how can Alice create an address with the payment part of her wallet A and the stake part of Bob's wallet B?
Or the other way around: How can Alice create a mangled address with Bob's payment part of wallet B and her stake part of wallet A?

user5926: ADA addresses (ignoring the bootstrap address type) consist of two components, like this (from here):
  = Addr Network (PaymentCredential c) (StakeReference c)

If you have two address, from two different wallets, you can create a franken address by taking the PaymentCredential from one address and the StakeReference from the other.

user4302: Your cardano-cli example is correct - only the verification (public) keys are needed to build addresses, not the private keys. Therefore, we can build shelley addresses with any pair of payment.vkey and stake.vkey, regardless of whether or not they are derived from the same master seed.
"Mangled" in this case just means the payment and stake vkey's are derived from different master seeds.

1142: <p>I've read a lot about mangled/franken addresses recently. A mangled address is an address, where the payment part of the address belongs to a different wallet than the stake part. This is an important thing to consider when building DApps on Cardano.</p>
<p>I'm wondering how it is possible to create such an address.</p>
<p>To <a href="https://developers.cardano.org/docs/stake-pool-course/handbook/keys-addresses/#payment-address" rel="nofollow noreferrer">create a payment address using the cardano-cli</a>, both the private payment key and the private stake key are required:</p>
<pre><code>cardano-cli address build \
    --payment-verification-key-file payment.vkey \
    --stake-verification-key-file stake.vkey \
    --out-file payment.addr \
    --mainnet
</code></pre>
<p>Let's say we have Alice who owns wallet A and Bob who owns wallet B.</p>
<p>Alice doesn't have access to the private keys of Bob, so how can Alice create an address with the payment part of her wallet A and the stake part of Bob's wallet B?</p>
<p>Or the other way around: How can Alice create a mangled address with Bob's payment part of wallet B and her stake part of wallet A?</p>
 5926: <p>ADA addresses (ignoring the bootstrap address type) consist of two components, like this (from <a href="https://github.com/input-output-hk/cardano-ledger/blob/master/libs/cardano-ledger-core/src/Cardano/Ledger/Address.hs#L184-L187" rel="nofollow noreferrer">here</a>):</p>
<pre><code>  = Addr Network (PaymentCredential c) (StakeReference c)
</code></pre>
<p>If you have two address, from two different wallets, you can create a franken address by taking the <code>PaymentCredential</code> from one address and the <code>StakeReference</code> from the other.</p>
 4302: <p>Your <code>cardano-cli</code> example is correct - only the <em>verification</em> (public) keys are needed to build addresses, not the private keys. Therefore, we can build shelley addresses with any pair of <code>payment.vkey</code> and <code>stake.vkey</code>, regardless of whether or not they are derived from the same master seed.</p>
<p>&quot;Mangled&quot; in this case just means the payment and stake <code>vkey</code>'s are derived from different master seeds.</p>
