<oembed><type>rich</type><version>1.0</version><author_name>npub1assqju94qjdpunps2yck2vtzfhnme5pclv0aantfajkjs5w2057quzu5p3</author_name><author_url>https://nostr.ae/npub1assqju94qjdpunps2yck2vtzfhnme5pclv0aantfajkjs5w2057quzu5p3</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2014-03-04&#xA;📝 Original message:Some people may have seen my service Reality Keys, which can perform a role&#xA;a bit like an External State Oracle as described previously by Mike Hearn&#xA;and others. (I like to think of it as a Certificate Authority for&#xA;propositions, doing for facts what Verisign do for identities.) You&#xA;register a possible outcome with us, we publish a public key for &#34;yes&#34; and&#xA;another for &#34;no&#34;, and once the outcome happens or fails to happen, we&#xA;publish the appropriate private key.&#xA;&#xA;A few people have been asking for advice on the best way to use our keys to&#xA;make m-of-n contracts, where each party locks up their stake in a&#xA;transaction, then the winner gets their private key from Reality Keys and&#xA;uses it to release the funds. Peter Todd suggested what seems like a very&#xA;nice way to do this without needing non-standard transactions or refund&#xA;transactions. I&#39;ve had a go at implementing it and it seems to work, but I&#xA;don&#39;t know enough about this to distinguish the ECC bit of it from magic,&#xA;so I&#39;m wondering if people who do understand it could comment on whether&#xA;it&#39;s a safe thing to be doing.&#xA;&#xA;What I&#39;m trying to do here is to combine the public key of each party with&#xA;the public key of the outcome they&#39;re representing, eg I make a public key&#xA;with:&#xA; &lt;alice-pub&gt; + &lt;reality-key-yes-pub&gt;&#xA;...and another with:&#xA; &lt;bob-pub&gt; + &lt;reality-key-no-pub&gt;&#xA;&#xA;That goes into a 1/2 P2SH address (in the simplest possible case), which is&#xA;spendable by one of Alice or Bob after the outcome occurs with either:&#xA; &lt;alice-priv&gt; + &lt;reality-key-yes-priv&gt;&#xA;...or&#xA; &lt;bob-priv&gt; + &lt;reality-key-no-priv&gt;&#xA;&#xA;I&#39;m making the transaction with add_pubkeys, then spending it with&#xA;add_privkeys, both from:&#xA;https://github.com/vbuterin/pybitcointools/blob/master/pybitcointools/main.py#L173&#xA;&#xA;What&#39;s worrying my superstitious mind is that knowing &lt;reality-key-no-pub&gt;&#xA;before he has to produce &lt;bob-pub&gt;, I&#39;m wondering if there&#39;s something Bob&#xA;could do with &lt;bob-pub&gt; to intentionally weaken the resulting (&lt;bob-pub&gt; +&#xA;&lt;reality-key-no-pub&gt;) so that he could sign a transaction with it without&#xA;needing to know &lt;reality-key-no-priv&gt;.&#xA;&#xA;My example script (and specifically the bit that&#39;s scaring me) is here:&#xA;https://github.com/edmundedgar/realitykeys-examples/blob/master/realitykeysdemo.py#L247&#xA;&#xA;PS. I hope I&#39;m not too far off-topic. Peter Todd suggested it might be&#xA;worth talking about here as it potentially has implications for other&#xA;protocols. If people prefer to respond at bitcointalk instead, we&#39;ve been&#xA;discussing it here:&#xA;https://bitcointalk.org/index.php?topic=260898.60&#xA;&#xA;-- &#xA;Edmund Edgar&#xA;Founder, Social Minds Inc (KK)&#xA;Twitter: @edmundedgar&#xA;Linked In: edmundedgar&#xA;Skype: edmundedgar&#xA;http://www.socialminds.jp&#xA;&#xA;Reality Keys&#xA;@realitykeys&#xA;ed at realitykeys.com&#xA;https://www.realitykeys.com&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20140304/868b6814/attachment.html&gt;</html></oembed>