{"type":"rich","version":"1.0","author_name":"npub1assqju94qjdpunps2yck2vtzfhnme5pclv0aantfajkjs5w2057quzu5p3","author_url":"https://nostr.ae/npub1assqju94qjdpunps2yck2vtzfhnme5pclv0aantfajkjs5w2057quzu5p3","provider_name":"njump","provider_url":"https://nostr.ae","html":"📅 Original date posted:2014-03-04\n📝 Original message:Some people may have seen my service Reality Keys, which can perform a role\na bit like an External State Oracle as described previously by Mike Hearn\nand others. (I like to think of it as a Certificate Authority for\npropositions, doing for facts what Verisign do for identities.) You\nregister a possible outcome with us, we publish a public key for \"yes\" and\nanother for \"no\", and once the outcome happens or fails to happen, we\npublish the appropriate private key.\n\nA few people have been asking for advice on the best way to use our keys to\nmake m-of-n contracts, where each party locks up their stake in a\ntransaction, then the winner gets their private key from Reality Keys and\nuses it to release the funds. Peter Todd suggested what seems like a very\nnice way to do this without needing non-standard transactions or refund\ntransactions. I've had a go at implementing it and it seems to work, but I\ndon't know enough about this to distinguish the ECC bit of it from magic,\nso I'm wondering if people who do understand it could comment on whether\nit's a safe thing to be doing.\n\nWhat I'm trying to do here is to combine the public key of each party with\nthe public key of the outcome they're representing, eg I make a public key\nwith:\n \u003calice-pub\u003e + \u003creality-key-yes-pub\u003e\n...and another with:\n \u003cbob-pub\u003e + \u003creality-key-no-pub\u003e\n\nThat goes into a 1/2 P2SH address (in the simplest possible case), which is\nspendable by one of Alice or Bob after the outcome occurs with either:\n \u003calice-priv\u003e + \u003creality-key-yes-priv\u003e\n...or\n \u003cbob-priv\u003e + \u003creality-key-no-priv\u003e\n\nI'm making the transaction with add_pubkeys, then spending it with\nadd_privkeys, both from:\nhttps://github.com/vbuterin/pybitcointools/blob/master/pybitcointools/main.py#L173\n\nWhat's worrying my superstitious mind is that knowing \u003creality-key-no-pub\u003e\nbefore he has to produce \u003cbob-pub\u003e, I'm wondering if there's something Bob\ncould do with \u003cbob-pub\u003e to intentionally weaken the resulting (\u003cbob-pub\u003e +\n\u003creality-key-no-pub\u003e) so that he could sign a transaction with it without\nneeding to know \u003creality-key-no-priv\u003e.\n\nMy example script (and specifically the bit that's scaring me) is here:\nhttps://github.com/edmundedgar/realitykeys-examples/blob/master/realitykeysdemo.py#L247\n\nPS. I hope I'm not too far off-topic. Peter Todd suggested it might be\nworth talking about here as it potentially has implications for other\nprotocols. If people prefer to respond at bitcointalk instead, we've been\ndiscussing it here:\nhttps://bitcointalk.org/index.php?topic=260898.60\n\n-- \nEdmund Edgar\nFounder, Social Minds Inc (KK)\nTwitter: @edmundedgar\nLinked In: edmundedgar\nSkype: edmundedgar\nhttp://www.socialminds.jp\n\nReality Keys\n@realitykeys\ned at realitykeys.com\nhttps://www.realitykeys.com\n-------------- next part --------------\nAn HTML attachment was scrubbed...\nURL: \u003chttp://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20140304/868b6814/attachment.html\u003e"}
