Bitcoin Forum
May 03, 2024, 11:27:02 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [25] 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 »
481  Bitcoin / Project Development / Re: [Fundraising 195btc] Finish “Ultimate blockchain compression” on: September 25, 2013, 08:41:15 PM
(Note that a very simple optimization prevents this from being an onerous requirement for miners: cache the indices for last generated block. There is likely to be a lot of similarity between two consecutively generated blocks (being the same high priority transactions from the same mempool), and all the miner would have to calculate is the differences. Nonce-rolling is not a problem as inclusion of the coinbase in the index is delayed by a number of blocks anyway.)

What's the worst case vs. best case vs. avg case performance of the UTXO updating process?

Remember that we can't make it possible for a miner to intentionally make a block whose UTXO set modifications take an especially long amount of time to process to get an edge on the competition.
482  Bitcoin / Bitcoin Discussion / Re: FAQ on the payment protocol on: September 25, 2013, 07:01:26 PM
Mike thank you for the explanation.

Unfortunately I don't have time to dig deep enough to answer this for myself:
How does this relate to micro transaciton channels. You know I see micro transaction channels as the next big thing to solve
  • instant payment
  • micro payment
  • privacy
  • transaction fees
  • blockchain size growth
between arbitrary parties via a small set of facilitators (micro transaction gateways or whatever you want to call them).

As a merchant will I be able to send a payment request "update the micro transaction channel xy to grant me 0.5BTC more" or how would that work? Especially if the transaction is a three-hop channel one. A – A's gateway – B's gateway – B.

Jeremy Spilman/Mike Hearn style micro-transaction channels are just a mechanism to send funds from one person to another in such a way that the amount being transferred can be increased (renegotiated) gradually over time in a secure fashion. They're a clever mechanism, but with a very niche application; frankly I'd be very surprised to see them get all that much use. User's are never going to like or really understand why setting up a micro-payment channel has all this complex stuff about locking funds and what not, compared to just clicking the "Pay with your inputs.io/easywallet/whatever account!" button; only if those services are consistently shutdown by government forces will alternatives be attractive, and if they can't find at least one friendly country to operate from we've got serious problems...

Remember that micro-transaction channels can-not enable individual micro-transactions between arbitrary parties, and there are no facilitators involved.

Off-chain transactions is what you're thinking of, and mechanisms to use them haven't been standardized in any way - it's premature to talk about the payment protocol in relation to them because the payment protocol is only really useful in conjunction with multi-signature wallets. (when your PC and phone co-operate to authorize a transaction) The other features of the payment protocol are kinda nice, like refund addresses and messages, but they're incidental.

No off-chain tx system - like inputs.io - has plans yet to do true multi-factor authorization of payments AFAIK so the payment protocol doesn't yet add any value.
483  Bitcoin / Bitcoin Discussion / Re: FAQ on the payment protocol on: September 25, 2013, 06:49:34 PM
For big online merchants, the customers could sign the shop's public key in process of payment and easily create the trust line.
Or even better, they could sign it after the order arrive. As a form of review - I like the shop, they're fast, cheap and reliable therefore I'm going to sign their key with my key so all my friends who trust me can see this shop is legit.

All it takes is one dialog box showed to user after X blocks after the payment: "I see you paid for this order from company XY. Do you like it? |Yes| |No|"

Is there any flaw in my proposal?

What happens if I the attacker substitute the shop's address for my own, and then use those funds to pay the shop? You've just used your reputation to sign my key rather than the legit merchant's key, and you didn't even know it.

Bonus points: how does this scenario relate to The Silkroad when it comes to PGP communications with your anonymous vendor?
484  Bitcoin / Bitcoin Discussion / Re: FAQ on the payment protocol on: September 25, 2013, 01:00:49 AM
Cut-thru payments

A future version of the payment protocol can allow the receiver to give the sender a BIP32 seed, and a total amount requested value. The receiver then considers the payment satisfied once outputs with addresses derived from that seed exist in the blockchain with a total value >= the total amount requested.

This means a merchant with debts to someone else, like their employees or suppliers, can get PaymentRequests from whomever they are in debt to and in effect have their customers pay those debts directly.

If those suppliers in turn have debts to other parties the process can repeat again. This time the supplier to the merchant just gives the merchant a list of addresses to pay, addresses that happen to belong to whomever the supplier owes a debt too. (maybe their employees?) Now two steps in the whole payment process have been skipped, and the customers of the merchant could very well be actually paying into wallets owned by employees of the merchant's suppliers!

In the business world 'Net 30 days' accounts are very commonly used, so this kind of arrangement could actually be quite practical and useful. Everyone in between saves on transactions fees, there would be a lot less demand for blockchain space, and privacy is improved for everyone.

Of course, it'd be a bit surprising if you went to pay a bill on Thursday night and the moment you paid it your wallet told you your employer had paid the exact same amount as part of your upcoming Friday paycheck...

I don't understand how come the debt creep into the picture? Bitcoin is a payment system, but it seems these are some accounting function, more like a clearing house. But shouldn't the settlement be handled off-chain by some bitcoin clearing house, and all the merchants have business relationship in one area connect to this clearing house instead?

Debt crept into the picture because the parties in it agreed too. Note how what I'm describing is much more organic than any centralized clearing house: it's just showing how what businesses do routinely - extend 30 day credit relationships to each other - can turn into a way for them to organically, indeed, accidentally, create something akin to the Ripple network with the help of suitable accounting/wallet software. Note how that as long as everyone involved has some mechanism to tell a third party "pay me these amounts at these addresses to settle our debt", and accounting/wallet software keeping track of the payments as they happen, the result can be a cut-thru payment system. The parties don't have to use the same software, or for that matter the "official Payment Protocol", and in fact in theory everyone involved could be doing it all manually.

I'm concerned about the block size limit  Smiley

Yes you should be. Notice how all of the above would have never happened if transactions are free or nearly free - why bother? Instead every step would be just done with individual transactions; certainly easier but the cost is a centralized system with bandwidth and storage requirements that only a select few miners can keep up with, and importantly, afford to audit fully. Or in the words of core developer Jeff Garzik:

Quote
(g.2) Competition for space encourages efficient solutions, whereas a too-loose block size policy incentivizes the opposite: dumping into the block chain
[...]
    And very importantly, (i) it is a mistake to increase block size simply because people are too lazy to implement layers on top of bitcoin.  Bitcoin will forever be a zen balance of applications and layers that sit on top of the blockchain, and those that directly use the blockchain itself as their comm/functional layer (c.f. SatoshiDICE).
-http://garzikrants.blogspot.ca/2013/02/bitcoin-block-size-thoughts.html

Mike's post on the consequences of centralized mining is interesting too: Freezing BitCoin addresses by regulating miners
485  Bitcoin / Bitcoin Discussion / Re: FAQ on the payment protocol on: September 24, 2013, 09:21:47 PM
It just sounds too complicated. Raised level of complexity normally will have unforeseeable consequence if something went wrong. Maybe this feature could be modularized and called from the official protocol

What, my pie in the sky ideas or something else? Note that the stuff about tx replacement, on the merchant side, actually just assumes merchants have the simplest possible implementation and implement it correctly. Basically a merchant wanting to accept a payment needs to do the following:

for tx in payment.transactions:
    node.broadcast(tx)

and in their "have I been paid yet logic":

def IsOrderPaid(order, min_confirmations=6):
    requested_output_scriptPubKey = order.payment_request.output_scriptPubKey
    requested_output_value = order.payment_request.value
    if requested_output_scriptPubKey in wallet_outputs:
        for outputs in wallet_outputs[requested_output_scriptPubKey]:
            if outputs.value >= requested_output_value:
                return True
    return False

Thing is, if you're implementation doesn't look like this you will occasionally see payments get stuck due to things like transaction mutability. All you should care about is that an output you can spend with greater or equal the requested amount exists in the UTXO set with a sufficient number of confirmations. That's it. Testing for anything more complex than that just gives more opportunities for something to fail because you got paid in a way you didn't expect too.
486  Bitcoin / Bitcoin Discussion / Re: FAQ on the payment protocol on: September 24, 2013, 08:56:14 PM
Cut-thru payments

A future version of the payment protocol can allow the receiver to give the sender a BIP32 seed, and a total amount requested value. The receiver then considers the payment satisfied once outputs with addresses derived from that seed exist in the blockchain with a total value >= the total amount requested.

This means a merchant with debts to someone else, like their employees or suppliers, can get PaymentRequests from whomever they are in debt to and in effect have their customers pay those debts directly.

If those suppliers in turn have debts to other parties the process can repeat again. This time the supplier to the merchant just gives the merchant a list of addresses to pay, addresses that happen to belong to whomever the supplier owes a debt too. (maybe their employees?) Now two steps in the whole payment process have been skipped, and the customers of the merchant could very well be actually paying into wallets owned by employees of the merchant's suppliers!

In the business world 'Net 30 days' accounts are very commonly used, so this kind of arrangement could actually be quite practical and useful. Everyone in between saves on transactions fees, there would be a lot less demand for blockchain space, and privacy is improved for everyone.

Of course, it'd be a bit surprising if you went to pay a bill on Thursday night and the moment you paid it your wallet told you your employer had paid the exact same amount as part of your upcoming Friday paycheck...
487  Bitcoin / Bitcoin Discussion / Re: FAQ on the payment protocol on: September 24, 2013, 08:34:30 PM
Right, thanks for the correction. In the first deployment wallets will still be treating 1 tx == 1 payment. The ability to request multiple outputs and submit multiple transactions will get activated over time as wallets get smarter.

Merchants accepting multiple conflicting transactions is important for CoinJoin, because not all your inputs might be yours and thus it's possible they could get double-spent. You should give the merchant two transactions in this case, one being the CoinJoin tx spending yours and their inputs to their and the merchants txout, and another spending just your input. (second tx having a slightly lower fee so it's not the preferred one by miners)

Of course this does degrade privacy slightly as the merchant can figure out which inputs were yours, but the blockchain record remains anonymized and the next payment you make will come from inputs whose inputs a step back are anonymized.

Another example is multiple payments in a row: suppose I'm Alice and I first pay Bob, and then Charlie using the payment protocol. When I pay Bob I create and sign a transaction, tx1, and give it to Bob in my Payment message. That transaction has two txouts, one that pays Bob, and the other being my change address.

But when I pay Charlie I should actually create two transactions: the first is being a modified version of tx1 - tx1b - that double-spends tx1, (potentially adding new inputs) and adds Charlie's requested address as an additional txout. The second transaction, tx2, then depends on the change output of tx1 and pays Charlie that way. Normally the merged tx1b will be what confirms, efficiently paying both Bob and Charlie in a single transaction, but if tx1 confirms first Charlie still gets paid with tx2. (the order of transactions in the list given to the merchant in this case is tx1b, tx1, tx2)

Of course, if any of the above actually gets implemented I'll be pleasantly surprised.
488  Bitcoin / Bitcoin Discussion / Re: FAQ on the payment protocol on: September 24, 2013, 07:29:41 PM
Yes, thezerg has it right. But I really wish people would back up arguments about scalability with numbers. I think that kind of approach to privacy will scale fine. Prove me wrong.

Yes I mean SSL private key.

The merchant is responsible for broadcasting the transaction if they think you might double spend. You're not responsible for anything except handing it off to the merchant. If the tx is valid they can then propagate in parallel with starting to provide the service (pouring your coffee for example).

Transactions

If you make multiple payments in a row you might wind up not having any confirmed coins to pay the merchant with, which is why the payment protocol lets a Payment message contain more than one transaction. Wallet software will need to determine what unconfirmed transactions are required to complete a given payment, and give the merchant the whole lot. Merchant-side you need to make sure your software considers the payment complete provided the requested txout scriptPubKey:value exists in the blockchain - it's quite possible that the transaction that actually ends up paying you is not the one the customer actually gave you. Note how this also means that every order must use a separate scriptPubKey for that reason.
489  Bitcoin / Bitcoin Discussion / Re: FAQ on the payment protocol on: September 24, 2013, 07:19:23 PM
Adding OpenPGP to the payment protocol

So you want to use the OpenPGP WoT to authenticate payment protocol requests... here's how you do it:

1) Set pki_type in PaymentRequest to 'openpgp'

2) Set signature in PaymentRequest to a detached OpenPGP signature of the serialized_payment_details

3) Set pki_data to an empty string. Why an empty string? Because OpenPGP signatures already specify the key doing the signing; if you don't already have that key there's a good chance the user never verified it anyway.

4) (client-side) Verify the payment request by checking that the signature is valid. If you don't already have the key, you should tell the user the PaymentRequest can't be used because you don't know who signed it; don't let them pay the request unless the key is already imported and GnuPG or whatever trusts it and don't do that for them.

As for implementing this, you can use the GPGME library for C/C++ code (like the reference client) On Python I've used the python-gnupg library with success. Dunno much about Java, but I'm sure you can find something.

But remember that crypto doesn't exist in a vacuum - the payment protocol is mostly useful for multi-factor wallets, where you need to authenticate the same payment request on multiple devices. If you want your hardware wallet to make use of OpenPGP-signed payment protocol requests, it needs to support OpenPGP and you need to securely import your web-of-trust database into it. You're probably going to find that something like the following is far simpler, and almost as likely for users to use securely:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Donations to the Keep Bitcoin Free project are accepted at Peter Todd's
donation address:

1FCYd7j4CThTMzts78rh6iQJLBRGPW9fWv
-----BEGIN PGP SIGNATURE-----

iQEcBAEBCAAGBQJRlePvAAoJEH+rEUJn5PoEBeoIAKiqyP+V9mCJXzzLxVY1MzJ6
Lvcx9qRvFVZ/r0F1ph3SwkcCBPvwV7nD0Ca7Dr5eat/SDo0u1i6NdznKcY87zADk
RqhT0JvhNCNSg3uKfqiYlXS6IJNZ4yGSDxJfAaATH9irw0fLHfPXX1rxqp529I9g
bEVi1PBnZx00UHUFAEbVP6uJqjICD8pGwz8K/l2mgGb/1Iw8p3HKxXEogstOILGO
dmX60VzPptm2HwcQ9JLSjgsNv2f6KRZoZwr6eXlbGteNgiXRpV4Lo2V14hBWqXTs
gKDFsZud93Osqj+A3XIr4qj5GtNFqDUXsVbAmmjNGzs4oyzt7YXneGObRsPm4tA=
=EoMU
-----END PGP SIGNATURE-----
490  Bitcoin / Development & Technical Discussion / Re: Poker and the shared pot at the table in a decentralised network on: September 24, 2013, 05:19:54 PM
QixCoin is salable and performant (the block-chain is NOT cluttered with ZNPs). Bet payments are done off-chain instantaneously. Pots (new games) can be created in less than a minute (the block interval is as low as 30 seconds). QixCoin code is not based on Satoshi Bitcoin code (I think it's the first alt-coin built fully from another source tree).

How will chain consensus be determined? (what proof-of-foo algorithm will be used and what are the incentives involved?)
491  Bitcoin / Development & Technical Discussion / Re: Invoices/Payments/Receipts proposal discussion on: September 24, 2013, 04:49:05 PM
Meh, you already trust SSL whenever you copy a Bitcoin address off of a SSL-protected website, so the payment protocol is a strict improvement on that situation.

The enemy of better is perfect.

Sure but I would not use SSL for anything I really cared about (if it really mattered I would trust GPG).

I think the payment protocol idea itself is fine but we do need to have our eyes wide open when it comes to SSL.


Yes, and if you are using something else, then use it - other ways of making Bitcoin transactions aren't going away. (although some poorly-written wallet software and Bitcoin libraries still haven't implemented P2SH addresses, which makes those other ways a bit inconvenient at times)
492  Bitcoin / Development & Technical Discussion / Re: Invoices/Payments/Receipts proposal discussion on: September 24, 2013, 04:17:15 PM
I think anything that Google (MS or any other such company) suggests would not be acceptable by anyone (apart from those that of course work for Google, MS, etc.).

We need a system that has *no ties* to any large corporation or we have nothing that can be trusted at all.


Meh, you already trust SSL whenever you copy a Bitcoin address off of a SSL-protected website, so the payment protocol is a strict improvement on that situation.

The enemy of better is perfect.
493  Bitcoin / Development & Technical Discussion / Re: Invoices/Payments/Receipts proposal discussion on: September 24, 2013, 03:28:43 PM
Is anyone concerned about root authority, now that it is being discussed that NSA may have access to them with sealed orders like the Verizon records?

While no guarantee, the entire process by which the DNSSEC root authority was signed was filmed and is publicly available: http://www.youtube.com/watch?v=b9j-sfP9GUU

There's reams of documentation and video publicly available on ICANN's site, although that's still only the root keys, not the registrar keys.
494  Bitcoin / Bitcoin Discussion / Re: Coin melting: how hide transactions from network analysis on: September 24, 2013, 01:58:03 PM
HDD speed, CPU speed, and how well connected you *AND* your peers are, in roughly that order (assuming server quality bandwidth).

1) HDD Speed:  Disk access still seems to be a relatively heavy hit whenever a new block is found.
2) CPU Speed:  Validating a new block and subsequently updating to work on the new block both appear to be mostly (entirely?) single threaded operations, so the raw clock rate is quite important.
3) Connectivity:  Assuming you're on a server quality connection, your biggest limits are how many peers you're connected to, and how well *those* peers are connected.  I've found having only 30-60 connections is preferred over having 120-1000 connections, when your 30-60 include at least 10 "known good nodes".  The biggest window for orphans are the first 2-3 hops of distributing your block (most orphan races, according to blockchain.info are roughly a 80%/20%  or 95%/5% split on how much of the network has seen a particular block in the orphan race.  I've never seen those numbers approach a true 50/50 split.

This is actually why BTC Guild has taken the "many individual bitcoind instances" approach.  Each one is connected to each other, and each one has a list of about 10 different nodes they always try to connect to, then let the other 40-50 nodes come randomly.

So what % of orphans are you seeing?
495  Bitcoin / Development & Technical Discussion / Re: Entropy source for smartphone or HW wallet on: September 23, 2013, 11:20:29 AM
Asking for camera privilege has some privacy concern. Combining other standard Android detectors such as digital compass and light sensor should be good enough

The Android wallet already has the ability to use the camera to read QR codes.
496  Alternate cryptocurrencies / Altcoin Discussion / Re: OFFICIAL LAUNCH: New Protocol Layer Starting From “The Exodus Address” on: September 23, 2013, 10:32:31 AM
Well, retep's report will likely recommend something "controversial", like a more complex design, keeping data in a separate chain etc. Because it just makes sense, I think all Bitcoin core devs will agree with this.

FWIW if I think the best design for MasterCoin is to make use of the Bitcoin blockchain that's exactly what I'll recommend MasterCoin do, and I'll explain how to do it in a way that is as difficult as possible for Bitcoin to block. While I am known in the community for my hard-line stance on scalability and decentralization, I don't think we want to kid ourselves - if there are technical means and economic motivations to stuff data into the blockchain we should face that fact and understand the threat now in detail. Fortunately I think those incentives aren't there, or required, but I'd be fooling the Bitcoin community if I didn't consider all the possibilities carefully and in the interests of the MasterCoin community.
497  Bitcoin / Bitcoin Discussion / Re: Coin melting: how hide transactions from network analysis on: September 23, 2013, 10:13:53 AM
This might be a bit off topic but I'm actually quite curious about this analysis.

If you want to "remine" a block, orphaning somebody else's, it means you must make sure your new block is part of the longest current chain, so you really need to mine two blocks.

Lets say you have 1/n of the hash rate, with expected reward for a block is R+F.  The probability to solve two blocks is n^-2.  Lets assume negligible fees on the current block but a large melting set of fees on a just announced block.  Our expected mining return will be equal for remining when:

(2R+F)n^-2 = R/n     or  F=R(n-2)

It seems that this is another region where the equations break down as you approach the 50% of hash rate figure.  At that rate, the problem becomes similar to the St. Petersburg bet and it appears that such a miner will have incentive to put hashpower toward remining every block. 

If you have 1/4 of the hashpower today, you will try to remine (fork the chain) when there is a fee of 2R or 50BTC.  At 5% of hashrate, this gives a cutoff of 18x the reward for when it becomes possible to backtrack.  Traditionally we have always had a pool or two floating at around the 1/4 level.  Therefore when the fees approach ~ twice the reward (and they will eventually if the network stays alive) this will become a problem! 

You're analysis is correct, although we have two solutions in the works:

1. Discourage fee sniping with nLockTime: If clients always create transactions such that only the next block can include them, it becomes less attractive to re-org blocks because you won't be able to cherry pick high-fee transactions that have been created since the last block. We can implement this right now, although it's relatively weak protection; I mostly wrote the patch because I don't want systems to start making assumptions about nLockTime now that prevent us from implementing that fix in the future.

2. Transaction checkpoints: Every transaction has a individual "checkpoint" block, and if included in a block in a chain that doesn't include that blockhash the block mining the transaction isn't allowed to collect its fee. You can still re-org a block to grab an individual transaction, but all the other transactions will then (probably) not be available to you. This change requires a soft-fork to implement, but is better protection than #1.

Finally a limited blocksize helps too: if transaction fees are roughly equal you eventually run out of space in the block anyway.

IMO the biggest problem with this re-org business isn't the re-orgs themselves, but rather that it gives incentives for mining pools to get bigger because only a large pool can profitably attempt re-orgs. This could be a serious problem if a significant portion of mining income in the future was in the form of fidelity bond fee sacrifices.

Confirm please:  the network currently does not care the value of the hash of a block, apart from it being lower than the value prescribed by the difficulty.

Correct.
498  Alternate cryptocurrencies / Altcoin Discussion / Re: OFFICIAL LAUNCH: New Protocol Layer Starting From “The Exodus Address” on: September 23, 2013, 07:27:39 AM
It's not like 40 BTC is going to change your life today anyways...why not just jump in and contribute if you have something to offer?

I've got other paid and unpaid work competing for my time.
499  Bitcoin / Project Development / Re: Gold-foil Chocolate Casascius Coins for the Halloween kids this year? on: September 23, 2013, 07:19:58 AM
I did this a while back with my laser machine.  It's a one-off, not something I'm selling.  Was kind of freaky how the plastic window on this Trader Joe's mint tin turned this unusual shade of orange when hit with the laser.

Interesting!

Some plastics are specifically designed to change color in aesthetically pleasing ways when hit by a laser for the purpose of cheap custom branding - possibly that's what they did here and Trader Joe's was just selling the part of the production run that hadn't been custom branded.
500  Alternate cryptocurrencies / Altcoin Discussion / Re: OFFICIAL LAUNCH: New Protocol Layer Starting From “The Exodus Address” on: September 22, 2013, 07:53:12 PM
Posted my "Offer: Mastercoin analysis and transaction specification design" here https://bitcointalk.org/index.php?topic=299679.0
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [25] 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!