Bitcoin Forum
May 25, 2024, 04:07:28 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 ... 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]
1061  Bitcoin / Mining / Re: Huge jump in network hash power on: February 18, 2011, 10:29:07 AM
network power is estimated based off of blocks generated since the last change in difficulty.  You won't get a very accurate number for a couple days after difficulty switches.

Still, there has really been a sudden increase:



(this graph is generated from the precise timings blocks were found, and not just the number of blocks since difficulty increase)
1062  Bitcoin / Development & Technical Discussion / Re: Anonymity on: February 16, 2011, 12:36:15 AM
Bitcoin solves the problem of storing the gold (through its distributed nature), but it has no intrinsic value (it's more similar to dollars than to gold, in the sense of intrinsic value, due to its fiat nature.)

Would you care to support this statement? Bitcoin has value by fiat no more than gold does. Nobody is forced to accept Bitcoin for payment of debts, as they are dollars. The only entities that accept Bitcoin are those that value it as a currency.

I believe fellowtraveler means here 'fiat' in the sense that bitcoin's only value is its use as payment, and not 'fiat' in the meaning that its value is forced by government decree. Compare this to gold which has a use as component for jewelry, even when not used as monetary system.
1063  Bitcoin / Development & Technical Discussion / Re: [RFC] P2P pooled mining on: February 15, 2011, 12:29:45 AM
I think the scheme can work, but I don't think it could remain popular for too long. One of the main benefits of pooled mining is the ability to mine without verifying transactions or downloading/storing blocks. This will become a huge factor in the future:

So this means a single core today can probably, with tuning and the block chain held in RAM but no special hardware beyond that, verify and accept about 80 transactions/sec.

A solved block [for a VISA-size network] will then be around (1kb * 2000tps * 60 * 10) / 1024 / 1024 = 1.14 gigabytes per block.

Adding a flood of pool-related bandwidth on top of that doesn't help.

I admit this is something i did not think about. Maybe part of the bandwidth can be prevented by only sending the list of tx ids + the block header over the pool-network as proof-of-work, instead of the full blocks. However, this will still be a significant amount of bandwidth (at 80 tx/s), and increase the difficulty of verifying the proof-of-works.
1064  Bitcoin / Development & Technical Discussion / Re: [RFC] P2P pooled mining on: February 15, 2011, 12:26:37 AM
Oh, haven't seen that in the original post. Interesting. So to work on the proper block, everybody should receive a getwork after anybody finds this smaller share? Am I getting it right?

Each time a low-difficulty block is found by someone, everyone's distribution tables should be updated, yes. However, this does not mean an immediate getwork is necessary. People can keep mining using slightly outdated tables.
1065  Bitcoin / Development & Technical Discussion / [RFC] P2P pooled mining on: February 14, 2011, 04:42:39 PM
This is an idea that originally grew on #bitcoin-dev and in PM's between me and marioxcc some time ago. After mentioning it the past few days again on IRC, I thought about writing it out.

The idea is to make a server-less pool that is not controlled by a single individual (or group) like traditional pools are. Everything is done by the mining nodes themselves.

1. The concept

We combine some ideas from slush's pool and from puddinpop's earlier pool:
  • Everyone mines real bitcoin blocks.
  • The generation transaction has multiple outputs, one for each participant in the pool.
  • Miners do not only report blocks that beat the "real" difficulty, but also those beating only a lower difficulty.

Contrary to centralized pools however, the miners are only connected to eachother. This is done through a secondary p2p network (disconnected from the real bitcoin network). Through this network, they show their low-difficulty blocks to eachother.

Each node maintains a table with how the reward from his blocks should be distributed to other pool members. When miner X sees a (low difficulty) block by miner Y that contains address X as generation transaction output, X updates his own table to increase Y's share. The intent is that this reaches an equilibrium proportional to the hashing speed of all players.

Since one has to decide what the generation transaction outputs are before actually starting to mine, a low-difficulty block is an unfakeable proof that one did intend to distribute gains according the way encoded in the transaction. If Y would stop including X as output, X would notice and can retaliate by removing Y from his own outputs.

2. Issues

There are some possible issues with this:
  • Everyone needs to see all low-difficulty blocks by everyone. This quickly leads to rather high bandwidth usage. One solution is to let miners decide their own (low) target difficulty, and encode that in their blocks as well (it can be stored in the coinbase of the generating transaction, for example). A block with target difficulty D (and hash which matches that difficulty, of course) then counts as D diffculty-1 blocks for the speed estimation.
  • Attacks: like all pools, this system is vulnerable to a vandalism attack: a miner is able to just not report a block he found that beats the real difficulty, decreasing the joint income of the whole pool. If people were free to join and leave a P2P pool like described here, this would be very hard to detect. A second possible attack is waiting for a opportune time (where you have earned more than you deserve, which will always happen through statistical variation), leave the pool, and return under a different name.
  • Bootstrapping: someone new who joins the pool should be able to bootstrap - get an initial distribution table for his blocks, before anyone in the network is including him in their blocks. One possibility is using measured block frequencies (in general, not just the part mentioning him) of other nodes for this.

3. Implementation

One possible way of implementing this, is as a patch for bitcoind, with RPC calls:
  • updatedist(), which sets a new distribution table and difficulty to be used in the generation transactions used by getwork()
  • getwork(), modified to incorporate the distribution table set by updatedist()
  • getshares(), returning information about recent blocks found by miners (including low-difficulty ones)

The rest of the implementation is then done in a separate pool client, which connects to bitcoind and uses these calls, as well as connecting to other pool clients and forwarding low-difficulty blocks.

An alternative is to incorporate everything into bitcoind, and possibly even use the bitcoin p2p network itself to communicate with other pool nodes. Initially however, it is probably better to let the communication between pool nodes happen through a simple multiplexing server, which forwards blocks between different nodes, adding some authentication as well.

There are further details that are already worked out as well. I'll write those out later, if there is interest.

PS: thanks to molecular for starting this text.
1066  Bitcoin / Pools / Re: Optimal pool abuse strategy. Proofs and countermeasures on: February 04, 2011, 04:40:43 PM
Quote
Also resetting on new block isn't solution, because bad guy can start mining on every new bitcoin block & stop after 43% of standard time between two bitcoin blocks. Maybe not such effective as cheating against current pool accounting, but this will still works.

No, it won't. The whole idea of the pool abuse is that you get paid in two places at the same time. With jgarzik's scheme, it's either or. Either you get paid from the pool, or individually. You never get paid twice. If you start mining on every bitcoin block and stop after some time, you either get paid from the pool (pool found a block) or from yourself (you found a block). Finding a block individually guarantees pool shares reset and all you accumulated shares loss. And finding a block by the pool guarantees that you did't find this block by yourself since the switch time. 


Furthermore, the difference between an acceptable optimization strategy (whether or not it gains you anything at all) and cheating, is IMHO the fact that if everyone used this 43%-strategy on the current system, it would break down (rounds wouldn't ever get finished), while in a only-shares-for-a-block system, the resulting gains would still be perfectly proportional to invested computation power (as share count would be reset after a block is found, even if everybody stopped pool mining, and people would join again).
1067  Bitcoin / Development & Technical Discussion / Re: [RFC] Sub-cent-precision on: February 01, 2011, 11:03:33 PM
There is no such thing as a fee-requiring-tx, the default miner won't mine for some transactions, but the warning message should not imply that it is the protocol that prevents very small free transactions but merely the default implementation of the miner.

Ok, agree. I think conventions for what and where fees are expected are a separate issue. But as long as no different set of rules is designed, and the client enforces those rules in the transactions it creates, no transactions that include a fee should be created beyond the user's (or JSON-RPC client's) control. Gavin's proposal does that nicely.

although my personal opinion is that integer units are preferable, it may or may not be worth sacrificing backward compatibility for.
Integer units don't break backward compatibility at all, if implemented using a RPC versioning mechanism (eg, bitcoin.<version>. prefix to methods, or--as MT suggested on IRC-- using a different URI path). This way, the old "RPC v0" can continue to function for as long as we care to maintain it, while new code can use RPC v1 with integer units.

Ok, agree as well. But again, maybe introducing a new version of the protocol may or may not be worth the effort.

Given the fact that URIs are used, it might also be possible to simply use a query parameter (eg, "?precision=0", "?precision=1e8", "?precision=65536") to specify a division for all units explicitly (and default to "?precision=1e8" for backward compatibility for a while), while not forcing newer APIs to use base units.

That comes close to my "Idea 1", and brings us back to the issue of whether it is the responsibility of the JSON server to provide encoding/formatting of numeric amounts for human readability (and humans with varying tastes).
1068  Bitcoin / Development & Technical Discussion / Re: [RFC] Sub-cent-precision on: February 01, 2011, 12:56:09 PM
My original post - though split off from its original thread by gavin - was mainly about the internal representation used by JSON-RPC, and it seems that's also what most discussion here was about. This is a detail, and although my personal opinion is that integer units are preferable, it may or may not be worth sacrificing backward compatibility for.

Concerning sub-cent precision itself, i think gavin's suggestion is very good. The JSON-RPC interface should support all transactions and accounting at full precision, the client should actively avoid creating fee-requiring transactions, and creation of fee-requiring transactions shouldn't occur without the user's knowledge. I would suggest adding an optional maxtxfee argument (overriding the default) to the RPC calls which cause transactions to be sent though - i don't like a global setting shared by possibly more than one JSON-RPC client.
1069  Bitcoin / Development & Technical Discussion / [RFC] Sub-cent-precision on: January 31, 2011, 02:34:48 PM
Part of the problem is that the JSON-RPC interface is used for both communication with humans (most of whom prefer a decimal representation in bitcoin), and other software which may benefit from having an easier/safer representation as integers (because it does its own formatting/parsing when communicating with humans).

Idea 1:
  • by default, all communication uses JSON numbers representing the interger count of bitcoin units (1E-8 BTC)
  • The JSON-RPC server (being bitcoin, bitcoind, some proxy, some other implementation) may optionally support input using other encodings for numbers, which must be represented as a JSON string, ending in a suffix denoting the encoding (eg. ending the string with " BTC" means decimal bitcoin representation - which can by the way be parsed perfectly to units without any floating-point code). Using a non-supported encoding should cause a clear error message.
  • The JSON-RPC client can ask the server for a particular encoding as an argument to the RPC function called, causing an error if that encoding isn't supported.
  • The CLI bitcoin interface could use the " BTC" encoding by default.
  • Additional encodings can easily be added, or provided by a wrapper script, ..., by only requiring that all servers and clients must support number-encoded integers.
  • Some names of functions or arguments would need to be changed, to ensure that no program using the old API accidentaly sends 0.00000050 BTC instead of 50 BTC.

Idea 2
On the other hand, maybe it is not the responsibility of the server to support different encodings of amounts. Since the primary purpose of the JSON RPC interface is imho a standard way of communication with software (not people) interacting with bitcoin, it should be as simple/safe as possible, and use integers (since this has the least chance of causing rounding errors in client software, as explained by others in this thread), and give the responsibility of formatting numbers to client software (which should use integers to represent amounts internally anyway, if it does any form of processing on them). The CLI interface could then take care of providing the optional-encodings scheme outlined above.

Personally, I prefer the second idea.
1070  Bitcoin / Development & Technical Discussion / Re: Question on coin frequency. on: January 31, 2011, 12:24:11 AM
I've been doing 530khash/s at least for several days now and this seems longer than I would expect and longer than the calculator would suggest on avg.

Just wondering if the difficulty has gone up or if there is anything I should check.

The difficulty is 22012 since Januari 27th. At that difficulty and hash speed, the chance of not finding a block in 5 days, is almost 8.9%. So you've had bad luck, but it's far from impossible.
1071  Bitcoin / Bitcoin Discussion / Re: Graphs of the total hashing speed on: January 29, 2011, 06:29:36 PM
Something to note is that the first graph is a parabole and therby exponential. Tongue

If you look it as a parabole we are already past the slow increment towrds a huge one. GHashes estimated at 170 for today. Keep mining. Wink

Not sure what you mean. A straight line on the graph would correspond to exponential growth. The only thing I notice is that the growth seems to be slowing down. My current estimate is indeed also around 170GHash/s.
1072  Bitcoin / Bitcoin Discussion / Graphs of the total hashing speed on: January 28, 2011, 05:38:20 PM
Hello everyone,

i've created some graphs showing the total hashing speed of the bitcoin network, and its growth:





Larger versions can be found on http://bitcoin.sipa.be/speed.png and http://bitcoin.sipa.be/growth.png.
Pages: « 1 ... 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]
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!