Bitcoin Forum
May 11, 2024, 03:37:18 AM *
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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ... 171 »
1001  Bitcoin / Pools / Re: [ANN] Stratum mining protocol - ASIC ready on: October 03, 2012, 04:41:05 PM
I just released proxy version 0.8.5. It fixes some "unhandled errors" reported by console and also implements "midstate" getwork extension which speeds up getwork when requested by modern getwork miner.
1002  Bitcoin / Pools / Re: [1800 GH/s] Slush's Pool (mining.bitcoin.cz); STRATUM=ASIC ready, low stales on: October 03, 2012, 02:33:58 PM
There's no withdrawal fee - you can set payout as small as 0.01 BTC. However, sending such small amount is not recommended, because fees will be much higher when you'll try to spend your coins from fragmented wallet. I don't know what's your hashrate, but I'll recommend at least 0.5 BTC as a threshold, to not fragment coins in your wallet.

Is there any difference in income if we chose a small payout threshold rather than large (1 btc as opposed to 10 btc). Is there a per-transaction/withdrawl fee? Trying to make as much btc as possible.
1003  Bitcoin / Electrum / Re: Electrum - Bitcoin client for the common users (friendly and instant) on: October 02, 2012, 06:15:17 AM
I agree that fixing just a proxy sounds easier for now. Although using stratum servers for price quotes makes more sense, currently it has quite low priority.

I know that intersango quote was quick hack done by genjix, but I'd appreciate if future features will be implemented correctly (over the Stratum servers) than adding more and more separate channels into the client.
1004  Bitcoin / Pools / Re: [GBT Protocol - ASIC] - BitArena.net - Mining Pool - Prop - 0% Fees. on: October 02, 2012, 04:14:14 AM
What a waste of effort...
1005  Bitcoin / Pools / Re: [GBT Protocol - ASIC] - BitArena.net - Mining Pool - Prop - 0% Fees. on: October 02, 2012, 02:06:08 AM
Btw from your description it looks like you tried to invent a wheel, but you actualy invented square.
1006  Bitcoin / Pools / Re: [GBT Protocol - ASIC] - BitArena.net - Mining Pool - Prop - 0% Fees. on: October 02, 2012, 02:03:41 AM
Anything based on "latest miners speed logs" will be hopable. I don't understand why you're reinventing wheel. Pick some of existing techniques and implement it.
1007  Other / Beginners & Help / Re: buying bitcoins, why are sellers so crazy? on: October 02, 2012, 01:26:51 AM
localbitcoins.com

This. It is anonymous, quick and usually also cheap way how to buy bitcoins.
1008  Bitcoin / Pools / Re: [1800 GH/s] Slush's Pool (mining.bitcoin.cz); STRATUM=ASIC ready, low stales on: October 02, 2012, 01:11:21 AM
Thank you! :-) I'm working hard to improve everything. Stratum is quite big project, but other changes are coming soon!

In case you didn't know the new proxy works great.
403000 accepts, only 190 rejects.
I think that is a pretty low reject rate, good job
1009  Bitcoin / Mining software (miners) / Re: CGMINER GPU FPGA overclock monitor fanspeed RPC linux/windows/osx/mip/r-pi 2.7.6 on: October 01, 2012, 09:54:08 PM
Also, how will the selection of protocol work... Automagic or manual?

As far as I can tell, it switch to Stratum automatically if pool advertises it, so there's no need to change of configuration. Just cgminer update is enough.
1010  Bitcoin / Pools / Re: [1800 GH/s] Slush's Pool (mining.bitcoin.cz); STRATUM=ASIC ready, low stales on: October 01, 2012, 04:29:44 PM
There are hashrates of every workers already. Numbers are commented out in HTML code of profile page, because they're quite inaccurate for slow miners - hashrate is calculated only from current round, so it is bit off on the round beginning.
1011  Bitcoin / Pools / Re: [ANN] Stratum mining protocol - ASIC ready on: October 01, 2012, 04:19:55 PM
So you are now saying that they should be joined to stop losing work? Smiley

Yes, I'm saying that it is possible. I'm not hiding fact that it is possible in some cases to lose work. But it is not necessary. Depends on agression of the pool, how much he accept overflooding by shares.

As I described in one of first posts about this, my implementation on the pool has two modes - minor difficulty changes are propagated together with new job definition, so no work is lost for 99.9% users. But when some really really strong miner joins with diff1 (it don't use mining.suggest_difficulty on startup), pool will send him new difficulty immediately, without waiting to new job definition (which is, as I already stated, generated periodically for all connected miners). In this case few seconds of the work is really lost, but it prevents pool from DoS. And all this happen only in edge case (really really strong miner, not so kind to suggest higher difficulty by himself).

Quote
However, if you can't understand those simple calculations then I guess there's not much point in this discussion.
Either tell me what is 'wrong' with them, or try to understand them.

Come on, I understand these calculations. I just stated that they're irrelevant, not wrong. Please don't became another troll on this forum :-P.

Quote
Quote
Difficulty is not an attribute of job definition, which is clearly true (what logical relevance is between job and dificulty?), but set_difficulty can be sent together with new job definition, just in separate message.
Well ... you have forced them to be two separate messages.

I "forced" them to be separate messages because of arguments which I already gave you.

Quote
The problem is the protocol means throwing away shares - and your client implementations will be throwing away these shares.

Not necessary, as I described many times already. set_difficulty CAN be send together with mining.notify.

Quote
Just coz you ignore that they are throwing them away (or don't see them - more likely) doesn't mean it doesn't happen.

Can you please summarize the reasons for having it together in one message, please? I'm serious in this. I probably lost the track on all reasons during this discussion.

Quote
Miners do not go idle, doing nothing, ever, unless they are programmed badly - every time a difficulty increase appears the miner will be working on something at the old difficulty

Please correct me if I'm wrong, but that worker is not working on the difficulty, it is working on the job. That job would be generated regardless of current difficulty. Share then can be discarded by "output control", without losing any real job. I don't see any issue with this. Mining "core" don't need to know current difficulty. Generating share below current target is not lost work, it is just low difficulty work.

Quote
... oh and as I've implied the obvious already: network transfers take a VERY long time when compared to hashing devices or even CPUs ...

I was asking you already on this, but where's the relation between latency and difficulty? The worst case is that you'll see "low difficulty" response by the pool, when miner submit share exactly at the time when difficulty get changed. But what is *real* problem with this? Btw this may happen only when difficulty is changed in another time than new job definition is broadcasted. If difficulty is corrected during clean_jobs=True job, this even won't happen, because this share would be stale as well (regardless the difficulty change).
1012  Other / CPU/GPU Bitcoin mining hardware / Re: GUI mining - updated Feb 19 with poclbm bugfix on: October 01, 2012, 02:27:29 PM
burger: What specifically are you missing?
1013  Bitcoin / Pools / Re: [ANN] Stratum mining protocol - ASIC ready on: October 01, 2012, 02:20:31 PM
kano, your calculations are irrelevant. It depends on the implementation on pool side and there are algorithms which can change difficulty without any losing work (i.e. sending it together with new job which already contains clean_jobs=True).

Quote
Since, as you say, difficulty is NOT an attribute of work

Difficulty is not an attribute of job definition, which is clearly true (what logical relevance is between job and dificulty?), but set_difficulty can be sent together with new job definition, just in separate message.

Can we please dig into troubles which you have in implementing set_difficulty as separate call? Is it something with threading? What exactly?

This high-level discussion is going nowhere, because I'm stating that two separate stratum client implementations don't have any problem with it and you're stating that you have serious issues with it, but you don't think it is implementation specific issue. The only obvious solution how to decide this problem is to dig into implementation details which you have with it. We should be more constructive.
1014  Bitcoin / Electrum / Re: Electrum - Bitcoin client for the common users (friendly and instant) on: October 01, 2012, 02:12:32 PM
Hehe that's exactly the reason why only Stratum connection should be used for communication with the rest of the world. Electrum server should expose RPC call providing current exchange rate and client should just call it instead of using separate http connection.

Any chance to do this instead of hacking httplib to go thru proxy?

I was thinking of adding an option to force currency exchange price requests thru the proxy if one is set. This is so that you don't get local data leakage when using Electrum thru a proxy / Tor.

I'm wondering if it needs to be an option or if it should just always use the proxy if one chosen?

Any input on this?
1015  Bitcoin / Mining software (miners) / Re: BTCMiner - Open Source Bitcoin Miner for ZTEX FPGA Boards, 215 MH/s on LX150 on: October 01, 2012, 11:30:41 AM
At difficulty=1 the get-work frequency is approximately twice as high as the submit-work frequency. I hope this is not considered as flooding too.

Ok, getwork is slowly going to die. I'm not sure if you're aware of Stratum or GBT, but there are no "getwork requests" in these proposals at all. And with faster miners (or big mining operations based on ZTEX), submitting diff1 shares really may look like flooding. Where's the sense of sending 10 diff1 submits per second?
1016  Bitcoin / Pools / Re: [ANN] Stratum mining protocol - ASIC ready on: October 01, 2012, 10:45:39 AM
The fact that it isn't part of the work definition in your protocol is what creates the issues.

I can agree that it creates the issue in your implementation. It don't create any issue in other miners or in my proxy, which has support of the same protocol.

Quote
It's a separate, global per worker, independent piece of information according to your protocol.

Yes, it is independent information from job definition. As I said previously, there's no need for bundling it with job definition, it can be freely used independently.

Quote
Basically you are defining work that you will reject - and that you must reject, since the work returned cannot prove the difficulty that it was processed at - work difficulty is not encoded anywhere in the hash either (you left it out of the hash to gain performance ...)

Basically - you're right. In some edge cases, like connecting 2THash miner with difficulty 1 to the pool, it may happen that miner will waste first few seconds of the work. However I'm thinking about "mining.propose_difficulty" command, where miner will be able to propose some minimum difficulty in connection instead of "default" 1, so with proper implementation no waste will happen.

Quote
but has connectivity problems, and during that time they were sent a difficulty increase, they will lose work that was valid at the lower difficulty, bit not at the new difficulty. Late submission of work is not handled by the protocol in this case.

This is TCP, not HTTP. You cannot "lose" part of the data transmitted over the socket. You'll receive retransmissions of TCP packets (so you'll receive difficulty adjustment) or the socket will be dropped and the "late submission" won't be accepted in any way. So it's no argument here.

Quote
A difficulty change does indeed mean throwing away work that was valid prior to receiving the difficulty change ...

Every sane pool implementation will send standard retargeting command together with new job (and clean_jobs=True). So miner have to drop previous jobs anyway, so no work lost here.

Quote
since the work is missing the difficulty information at both the pool and the miner.

We're repeating here. You don't need to know target difficulty when you're creating work in miner, right?

Quote
The time from starting work, to it being confirmed, by the pool is quite long ... it includes the network delay from the miner to the pool and back ... which when hashing at 54GH/s using an ASIC device, is certainly the slowest part of the whole process, not the mining.

Not I probably don't understand your point (language barrier). How is network latency during share submission related to difficulty change?

Quote
This also means that even during normal connectivity, work will often be in transit already when a difficulty change is received

Most common case - yes. But not necessary, there're use cases when sending it separately has some advantage, as I described above.

Quote
You must already keep information valid per worker: the difficulty ... as well as a bunch more: like who they are and where they are, that must be looked at in order to send the work out.
You simply add the work difficulty to the information sent - rather than send it separately.
Your code MUST already process through levels to get from the job definition to sending it to a worker.

Why MUST? You didn't tell me the real reason why it MUST be known on the beginning of the job. Except that threading issue, which is implementation specific and can be solved easily.

Why Per worker? Difficulty is related to the connection, not per worker. Btw bundling difficulty to job definition don't change it either.

As far as I can say, me and m0mchil implemented the same thing already (me in proxy, m0mchil in poclbm) and we don't have such issues at all. All this sounds to me that your complains are related to the miner implementation.

Quote
... and suggesting that a software 'change' is a reason to not implement something is really bad form Tongue

From the architecture view, keeping it separately is much cleaner. Maybe some things lead to ugly hacks in some implementation, but optimizing *protocol* for some implementation *is* bad example of doing software architecture.


Quote
Adding a small amount of information per worker is a negligible hit on the pool software since the pool must already have that information per worker and it is simply added to the message, not a regeneration of the message.

Again, I don't understand your point here. Of course that pool knows difficulty per connection. But what is this related to your issue in retargeting? I was saying about fact that creating of *jobs* is pool-wide, which is different story.

Quote
I was looking for reasons and stating why I wanted them - I had heard none reasonable so far at that point Smiley

I think I'm giving you a lot of reasonable points. I'm just aware that you are too much focused to implementation in cgminer.

Quote
No it's not trickier in cgminer.
It's a performance hit due to making something global for all worker's work, yet the value can change at any time, it's not an attribute of the work according to the pool, yet in reality it indeed is.

How the hell can be lookup for single value (read only!) became a "performance bottleneck"?

Quote
Basic database 101 - 3rd normal form - 2 phase commit - and all that jazz Smiley

Don't teach me over database design, please ;-).

I'm all fine with this. Just make additional filtering of difficulty when you're sending shares to the network and I'll be happy :-).

Quote
It's simply a case of any miner that isn't brain dead and does use threading properly (like any good software has used for a VERY long time Smiley) to deal with work properly, has a locking issue dealing with the fact that with testing the validity of a share, the test definition can unknowingly change before the test starts (the pool sends the difficulty change) and the change can be known during the test, but before, the test completes (arrival of the difficulty change) and thus the result is no longer true (which will also not be rare when a difficulty change arrives)
It forces a global thread lock on access to the work difficulty information - since it is global information - you can't put it in the work details since the pool doesn't do that either.

Do you know term "over-optimization"? It seems to be this case. You can safely forget about the case of race condition when miner will receive new difficulty *exactly* at the same time when some thread is checking share validity. Nothing serious will happen if you send one, two or ten of low-diff shares in this case.

Quote
It forces a global thread lock on access to the work difficulty information

This catched my eyes. You don't have write-only locks in C/C++? :-P

Quote
It's discussing why the protocol should or shouldn't include the difficulty as part of the work information.

I hope I explained this clearly already. Job definition and difficulty are logically two separate things (although maybe it don't look like in your implementation). Short summary: Job may change without difficulty change, difficulty may change without job change. And job is the same for all miners on the poo, but difficulty is defined per-connection. Is this enough for not bundling them together?

Quote
However, I will also add, that this part of the protocol definition seems to be directly aimed at helping the pool (but in reality very little performance gain)

Yeah, this is valid point! Of course it is helping pool, I'm not hiding it! But I'm strongly against saying "this feature is helping pool" and "this another feature is helping miners". Both pool and miners have the same goal - have the highest real hashrate, lowest resource consumption and highest block reward. Period. There's no real reason to fight miners against pool ops. When the protocol gives tools to pool ops to drive resource consumption in some nice way, then miners will benefit from this also - by faster replies of server, lower stale rate and potentially by lower fees, because pool don't need to handle ugly peeks in performance like it is nowadays.

Quote
at the expense of the miner losing shares unnecessarily sometimes.

This may happen only on some pool implementations and only in some edge cases. Losing jobs is definitely not "by design" and expected.
1017  Bitcoin / Pools / Re: [1800 GH/s] Slush's Pool (mining.bitcoin.cz); STRATUM=ASIC ready, low stales on: October 01, 2012, 09:56:44 AM
I'm getting ~0.01% stale ratio. How do i fix this?

Hrm, you consider it as "too much"?
1018  Bitcoin / Electrum / Re: [Electrum] Tor service at 4lhnnupincd3gyda.onion:50001 on: September 30, 2012, 08:33:25 PM
Having looked now at the electrum-server code (server.py) I see that the problem is the config "host" variable is used both for publishing the host address and also for binding the server listen processes.

Yes, that's my problem. I'm running the same node over standard network and over Tor network, but Electrum server don't give me a chance to propagate alternative URLs. Maybe that won't be so hard to add, simply add new config directive and publish these URLs in IRC details?

Quote
In order to get onion names to be published a small change would be needed. Host can still be used for publishing and would have the onion name, but a new one, perhaps called "bind", would need to be set to the local host value to use.

Binding to multiple interfaces isn't necessary. If somebody want to run Electrum over multiple external IPs, it can be achieved by firewall/router configuration. No need of direct support in server for this...

Quote
It seems to me that if you want both a Tor and non-Tor service as well then the code needs to be able to publish two host values for the one server. That would be another good change IMO.

I prefer to publish more URLs for one IRC nick, just to make clear that all URLs are pointing to the same node. This solution will be also cleaner for backward compatibility. I'm not sure how will old (=existing) Electrum clients handle URLs poining to ".onion" domain. But they'll surely ignore additional information in IRC details...

Quote
(Is the onion name operable right now? I tried using it a few times and it never seems to work, for me anyway. But connecting to regular servers via Tor works fine.)

It works for me now. You can try "torify telnet 4lhnnupincd3gyda.onion 50001"...
1019  Bitcoin / Pools / Re: [ANN] Stratum mining protocol - ASIC ready on: September 30, 2012, 08:19:12 PM
I think there is a change needed to the protocol ... interested in your opinion.
Suggestion: you should completely remove "mining.set_difficulty" and put difficulty in "mining.notify"

I was thinking about this quite a lot when I designed calls and parameters and I think I can defend current protocol "as is":

1. The major architectural reason for not including share target into the job broadcast message is: Share target is NOT a part of job definition ;-). Value of target is not related to the job itself, but it is bounded to connection/worker and it's hashrate. Also the difficulty can technically change at any time, not necessary during new job broadcast. For example my retargeting algorithm (not on production server yet) is sending set_difficulty immediately when pool detects dangerous overflooding by the miner just to stop the flood without sending him new job, because jobs are generated pool-wide in some predefined interval.

2. Job definition in broadcast is the same for everybody. Maybe this is not so obvious, so I repeat it :-) : That message is composed one-time, but broadcasted to everybody. Including single connection-specific variable will break the design completely, because pools will need to compile the message per-connection, which is major performance downside.

At current protocol design miner will receive all connection-specific values by other channels (at this time they're "coinbase1" in mining.subscribe and "difficulty" in mining.set_difficulty).

Quote
The only argument I've heard so far for having it separate is that is saves some bytes per "notify"

Who told you so? Not me, correct? :-)

Quote
"set_difficulty" seems to represents a work restart in exactly the same way as a "notify" does.

I understand from your description, that you need to know target difficulty when you're creating the job. Well, but this depends on implementation of the miner, you can start a job without knowing "target" difficulty. Technically there's no reason to "restart" anything, you can just filter out low-diff shares on the output (some miners are doing it this way). I understand this may be tricky in cgminer, because of your heavy threading architecture and locking issues, but this definitely isn't the reason itself why protocol should be changed.

Quote
Also, how is this handled at the pool?

There are many ways how to handle difficulty on the pool and there's no recommended solution so far.
1020  Bitcoin / Electrum / Re: [Electrum] Independent monitoring of running servers? on: September 30, 2012, 07:59:09 PM
Yes, I think that confirmation tokens are fine for it.
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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ... 171 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!