<oembed><type>rich</type><version>1.0</version><author_name>npub1ad7209g90jnu400x74quws0xv8gpxs2fxnjexnpwqnrxwa39exdq5gl2p6</author_name><author_url>https://nostr.ae/npub1ad7209g90jnu400x74quws0xv8gpxs2fxnjexnpwqnrxwa39exdq5gl2p6</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2014-04-08&#xA;📝 Original message:On Tue, Apr 8, 2014 at 3:53 PM, Pieter Wuille &lt;pieter.wuille at gmail.com&gt;wrote:&#xA;&#xA;&gt; I see the cause of our disagreement now.&#xA;&gt;&#xA;&gt; You actually want to share a single BIP32 tree across different&#xA;&gt; currency types, but do it in a way that guarantees that they never use&#xA;&gt; the same keys.&#xA;&gt;&#xA;&gt; I would have expected that different chains would use independent&#xA;&gt; chains, and have serializations encode which chain they belong to.&#xA;&gt;&#xA;&gt; Let me offer an alternative suggestion, which is compatible with the&#xA;&gt; original default BIP32 structure:&#xA;&gt; * You can use one seed across different chains, but the master nodes&#xA;&gt; are separate.&#xA;&gt; * To derive the master node from the seed, the key string &#34;Bitcoin&#xA;&gt; seed&#34; is replaced by something chain-specific.&#xA;&gt;&#xA;&#xA;I&#39;ve discussed the solution of &#34;Litecoin seed&#34; in BIP32 HMAC with Litecoin&#xA;devs already, and after long discussion we&#39;ve concluded that it is&#xA;generally bad idea.&#xA;&#xA;When changing &#34;Bitcoin seed&#34; constant to something different, same&#xA;*entropy* will produce different *master node*. That&#39;s actually the&#xA;opposite what&#39;s requested, because xprv serialization format stores *node*,&#xA;not *entropy*. By changing HMAC constant, you still won&#39;t be able to store&#xA;one node and derive wallets for multiple coins at same time.&#xA;&#xA;&#xA;&#xA;&gt; * Every encoded node (including master nodes) has a chain-specific&#xA;&gt; serialization magic.&#xA;&gt;&#xA;This is in practice almost the same as your suggestion, except that&#xA;&gt; the m/cointype&#39; in m/cointype&#39;/account&#39;/change/n is replaced by&#xA;&gt; different masters. The only disadvantage I see is that you do not have&#xA;&gt; a way to encode the &#34;super master&#34; that is the parent of all&#xA;&gt; chain-specific masters. You can - and with the same security&#xA;&gt; properties - encode the seed, though.&#xA;&gt;&#xA;&gt;&#xA;Actually I don&#39;t understand why there&#39;s such disagreement about &#34;cointype&#34;&#xA;level here, what it breaks? I see it as the cleanest solution so far. It is&#xA;forward and backward compatible, does need any special extension to bip32&#xA;(to be strict, bip32 says &#34;Bitcoin seed&#34;, so client using &#34;Litecoin seed&#34;&#xA;cannot be &#34;bip32 compatible&#34;).&#xA;&#xA;Of course, the problem of &#34;cointype&#34; can be solved in zillion ways, but&#xA;still using cointype in bip32 path seem to be the most elegant way so far,&#xA;because it fullfill all requirements for single backup, for separating&#xA;pubkeys and for handling all coins by one master...&#xA;&#xA;Marek&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20140408/5da80ea7/attachment.html&gt;</html></oembed>