<oembed><type>rich</type><version>1.0</version><author_name>npub10etkvm8l0jr0jsgdx02dxnhnu5g989dnca90guj5rklwkaplnh3sgjc727</author_name><author_url>https://nostr.ae/npub10etkvm8l0jr0jsgdx02dxnhnu5g989dnca90guj5rklwkaplnh3sgjc727</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2014-01-13&#xA;📝 Original message:On Sun, Jan 12, 2014 at 7:20 PM, Jeremy Spilman &lt;jeremy at taplink.co&gt; wrote:&#xA;&gt; &gt; I think for displaying the payment in the UI after it&#39;s been made via  &#xA;&gt; PP, we have to fully&#xA;&gt; &gt; support sending to a new standard address type anyway.&#xA;&#xA;On Sun, 12 Jan 2014 10:26:18 -0800, Mike Hearn &lt;mike at plan99.net&gt; wrote:&#xA;&gt; Why? Showing an address is meaningless, especially if the user didn&#39;t  &#xA;&gt; type it in or see&#xA;&gt; it somewhere else. It&#39;s just an opaque random number, all putting it in  &#xA;&gt; the UI can do is&#xA;&gt; make it look scarier :)&#xA;&gt;&#xA;&gt; Part of the point of the payment protocol is it lets merchants provide  &#xA;&gt; human readable text&#xA;&gt; for transactions instead of addresses.&#xA;&#xA;Of course you&#39;re right, moving away from addresses is definitely part of  &#xA;the point of PP.&#xA;&#xA;On Sun, 12 Jan 2014 13:18:33 -0800, Gavin Andresen  &#xA;&lt;gavinandresen at gmail.com&gt; wrote:&#xA;&gt; No, please. Make it easy for non-geeks, extend the payment protocol, or  &#xA;&gt; we&#39;ll spend the next&#xA;&gt; two years writing code that tries to ignore linebreaks and spaces and  &#xA;&gt; changing &lt;input&gt; in HTML&#xA;&gt; forms to &lt;textarea&gt;...&#xA;&#xA;Agreed, it&#39;s long enough to be even more problematic than usual. If the  &#xA;general consensus is that there should not even be a standardized address  &#xA;form, then I can skip that entirely, and go straight to trying to extend  &#xA;PP.&#xA;&#xA;It&#39;s a given this will be implemented for Payment Protocol. The question  &#xA;is whether it&#39;s also usable outside of PP.&#xA;&#xA;I was kind of imagining that we could encourage people to replace all  &#xA;their static address text that live on Github pages, and README.me, and  &#xA;forum signatures, etc. with new &#39;href=bitcoin:xSTL...&#39; URIs. Convention  &#xA;could be to require only transporting xSTL addresses within a URI, even  &#xA;going so far as to not support them copy/pasted. 101 characters is not  &#xA;much longer (and sometimes shorter) than PaymentRequest URIs end up being.&#xA;&#xA;I think there are ways to make stealth addresses easy enough to use that  &#xA;people actually prefer using them for P2P payments which do not involve a  &#xA;full-stack merchant. In that case, if it was a PaymentRequest it would  &#xA;almost certainly not be signed, and would be more easily shared over email  &#xA;or SMS as a URI than as a file attachment or, even worse, putting the  &#xA;unsigned PR file up on a third-party server which probably won&#39;t do a good  &#xA;job securing it.&#xA;&#xA;* PP Implementation Overview *&#xA;&#xA;The basic PaymentRequest&gt;PaymentDetails is expecting &#39;output&#39; containing  &#xA;one or more TxOuts with script and amount. I believe the general approach  &#xA;is to put a fallback address into &#39;output&#39; for backward compatibility, and  &#xA;put Q and Q2 into an extension field.&#xA;&#xA;So we add a new optional field to PaymentDetails which contains the one or  &#xA;two PubKeys. Not sure if we want different protobuf tags, or if the  &#xA;difference in length of the value makes it obvious enough which approach  &#xA;is being used;&#xA;&#xA;    optional bytes stealthOnePubKey = 1000&#xA;    optional bytes stealthTwoPubKey = 1001&#xA;&#xA;or just&#xA;&#xA;    optional bytes stealth = 1000&#xA;&#xA;* User Interaction / Flow *&#xA;&#xA;Lets follow this through from the user perspective, starting with what it  &#xA;looks like today. I&#39;m having a hard time finding screenshots of what PP  &#xA;looks like in BitcoinQT, so I built from HEAD and using Gavin&#39;s  &#xA;Handy-Dandy PaymentRequest Generator  &#xA;(https://bitcoincore.org/~gavin/createpaymentrequest.php):&#xA;&#xA;Screenshots: http://imgur.com/a/k6j9D&#xA;&#xA;Image 1 - &#39;Send&#39; screen after clicking a PR URI with a small transaction  &#xA;and auto-calculated fee&#xA;Image 2 - System Tray notification after clicking &#39;Send&#39;&#xA;Image 3 - Transaction List showing partially confirmed transaction&#xA;Image 4 - Transactions details popup&#xA;&#xA;We see &#39;Pay To&#39; (Common Name from the cert) and &#39;Memo&#39; on the Send screen.  &#xA;The System Tray notification popup and Transaction List shows just the  &#xA;address string. The &#39;Transaction details&#39; window shows &#39;Merchant&#39; which I  &#xA;think is the same as &#39;Pay To&#39;. You also have &#39;Copy address&#39; option in the  &#xA;right-click menu.&#xA;&#xA;Memo seems not to be saved, or at least not visible in the UI after  &#xA;sending a payment.&#xA;&#xA;* Transaction Display *&#xA;&#xA;The address string is fairly pervasive, which is why I was originally  &#xA;thinking it would make sense to implement all the address handling first,  &#xA;so all those screens would continue to work as specified, without trying  &#xA;to hack something different in those fields.&#xA;&#xA;Without digging too far into the code, it looks like &#34;address&#34; displayed  &#xA;is derived from the TxOut -- e.g. script.cpp:ExtractDestination. This  &#xA;could be a bit problematic depending on what we really want to show to the  &#xA;user -- the stealth multisig, or the pubkeys?&#xA;&#xA;Part of the point of stealth addresses is actually making them reusable.  &#xA;So if you&#39;re the originator of the payment, you might want the wallet to  &#xA;tag that transaction somehow with the pubkeys used to generate it.&#xA;&#xA;Also, ideally I think I would want multiple different stealth payments  &#xA;within a single wallet to the same merchant / pubkeys to be identifiable  &#xA;as such.&#xA;&#xA;* Sample Code *&#xA;&#xA;Will follow in another email, to be sent shortly!</html></oembed>