Bitcoin Forum
May 07, 2024, 10:37:48 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 ... 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 »
1241  Bitcoin / Development & Technical Discussion / Re: secp256k1 library and Intel cpu on: January 15, 2017, 03:56:23 PM
Yes, we've already established that you're primarily interested in stealing from people and that you're unable to understand that many others are not exactly supportive of your goals.

You are aware, that this is already beyond the threshold of legal action?

I am trying to find a hash160 collision. If you have evidence that I have stolen something in the past or evidence I plan to steal something in the future, please either present that evidence or keep it near when the lawyer knocks on your door.

Until then, you may educate yourself: https://lbc.cryptoguru.org/man/theory

And if you continue with your allegation(s), I really have no problem to step out of (pseudo)-anonymity and let my lawyers drill your sorry ass until they hit crude oil. And this is not even a rude statement.

Quote
You seem to think that people who don't slavishly help you steal from others are bad or incompetent people, or at least that you can get them to help you by insulting them as though they were. For someone who claims to be so old, you sure don't seem very wise. Smiley

Final warning. I can benevolently assume, that your reactions are based on the false assumption I am someone who does or wants to steal from people. Under such an assumption I would probably also interact "harshly" with my counterpart. So I give you that. But unless you have the slightest proof for your allegation/assumption, the time to stop it has come.


Quote
Congrats, by ignoring the _constant time_ in the function documentation you just leaked the users secret to a timing side-channel-- and _still_ managed to end up with code considerably slower than simply changing to non-constant time competently.

Ok. Hasn't explained why cmov implementation looks like it does, because right now - after this explanation - it seems to me cmov is short for "constant time move" - which would lead us to my original *thumbs up*...


Rico
1242  Local / Projektentwicklung / Re: Large Bitcoin Collider (Collision Finder Pool) - Deutscher Thread on: January 15, 2017, 02:49:28 PM
könnten wir nicht auch versuchen moneros oder andere zu finden?

Du meinst Kollisionen? Erstmal finden wir eine hash160 Kollision und dann sehen wir weiter.
Oder wenn ich irgendwann keinen Bock mehr habe, dann gebe ich den Code frei, aber noch habe ich Bock.  Wink

Es ist übrigends nicht so einfach das mal auf andere Cryptos zu übertragen. So ein Projekt muss den Generierungs-Pfad (Privatschlüssel -> Adresse) durchlaufen und die sind meist nicht optimiert. Gerade habe ich mit gmaxwell ein "freundschaftliches" Gespräch gehabt und festgestellt, dass z.B. für die Core-Entwickler eigentlich nur die Geschwindigkeit der pubkey Validierung von Interesse ist.

Es gibt beim Bitcoin in dieser Hinsicht noch mehrere Kathedralen zu bauen, also werde ich da erst einmal mithelfen, bevor ich überhaupt an andere Cryptos denke.


Rico
1243  Bitcoin / Project Development / Re: Large Bitcoin Collider (Collision Finders Pool) on: January 15, 2017, 02:40:02 PM
You broke it....

Best generator chosen: gen-hrdcore-sse41-linux64
Ask for work... Not an ARRAY reference at /usr/local/share/perl/5.22.1/Math/BigInt/Calc.pm line 1180.

Kind of. Let me guess: You are updating from .899 to .960
There are some things broken along the path, because I fixed so many things.  Smiley

  • libgmp can be completely ditched now.
  • instead of Math::BigNum::GMP it uses core modules - no need to install anything
  • but it needs recent versions of Math::BigNum[::Calc]
  • You also will need LWP::Protocol::https because of the SSL communication

Code:

> make sure you have openssl-devel (or equivalent) installed

> cpan

cpan> upgrade
cpan> install LWP::Protocol::https


Sorry for the hassle, but this fixes a nasty bug in bignum computations, where all block numbers above 40 digits were rounded - thus computed wrong. Fortunately we are still in the 12-15 digit space. It also will lower installation footprint and hassle in the future.



Rico
1244  Bitcoin / Development & Technical Discussion / Re: secp256k1 library and Intel cpu on: January 15, 2017, 02:00:26 PM
It's a trivial optimization that already existed in three other places in the code. Thanks for noticing that it hadn't been performed there, and providing code for one of the two places it needed to be improved, but come on-- you're just making yourself look foolish here with the rude attitude while you're clearly fairly ignorant about what you're talking about overall. Case in point:

...verification ... verification ... verification

Gee - you haven't seen my rude attitude yet. And you won't, because I am honestly too old for these cockfights.
It is evident you are completely project blind. Verification is king. Well - it isn't for me, right now I am interested in generation performance. Now the big revelation dear Maxwell:

This is what libraries are about.

A library(sic!) is not about serving just the purpose of sci-fi fans. And a librarian who is a sci-fi fan and is carried away by his fandom in a way he bars or neglects other uses of the library, is a BAD librarian. Don't be a bad librarian.

Your reaction was expected. Now my "trivial" optimization is hardly worth it. Hey - it makes the relevant functions faster by 6-7 orders of magnitude, but as it brings only 0.5% for DA HOLY VERIFICATION ... nah. Elegantly this also allows you to sweep under the carpet the question why the rubbish code remained for so long in the lib. "Not worth it" I suppose... where did I read that?  Roll Eyes

edit:
Odd to hear that, since the libsecp256k1 code has received many positive comments about its clarity and origination. One researcher described it as the cleanest production ECC code that he'd read.

Style preferences differ, of course,  -- lets see what your own code looks like

ftp://ftp.cryptoguru.org/LBC/client/LBC

 <blink> <blink>

So you take my intentionally deformatted code as counterexample of coding style ... *gasp* I don't think that futile attempt does even qualify as pathetic. Let's see a snapshot from my editor.

https://i.imgur.com/JWSJlee.png

etc. Better luck next time.
/edit

Quote
But what is strange is that it is _extensively_ documented.

Ok. Let's take this piece of code and dissect it a little bit - shall we? I am fair and take what is supposedly one of the best commented pieces "secp256k1_gej_add_ge"

Code:
    secp256k1_fe_cmov(&rr_alt, &rr, !degenerate);
    secp256k1_fe_cmov(&m_alt, &m, !degenerate);
    /* Now Ralt / Malt = lambda and is guaranteed not to be 0/0.
     * From here on out Ralt and Malt represent the numerator
     * and denominator of lambda; R and M represent the explicit
     * expressions x1^2 + x2^2 + x1x2 and y1 + y2. */
    secp256k1_fe_sqr(&n, &m_alt);                       /* n = Malt^2 (1) */
    secp256k1_fe_mul(&q, &n, &t);                       /* q = Q = T*Malt^2 (1) */
    /* These two lines use the observation that either M == Malt or M == 0,
     * so M^3 * Malt is either Malt^4 (which is computed by squaring), or
     * zero (which is "computed" by cmov). So the cost is one squaring
     * versus two multiplications. */
    secp256k1_fe_sqr(&n, &n);
    secp256k1_fe_cmov(&n, &m, degenerate);              /* n = M^3 * Malt (2) */

So Malt is m_alt and Ralt is rr_alt - yeah sure, why not.

What's more interesting is the correspondence between the code and the comments.

q = Q = T*Malt^2 (1)

WTF is Q and what is (1)? Oh - my advanced intuition tells me (1) is the magnitude of the result, but I could be wrong - some time to verify that needed. So the comment does not correspond to the code. The comment corresponds  to the sum (not meant in an arithmetic sense) of the previous codes - it seems. Interesting... But this is all only prologue.

Let's look at the last two lines of the code snippet:

So the lib computes n = n², but if degenerate is true this computation is discarded as n is set to m. It claims in the aforementioned "documentation" this is a very witty thing to do.

Methinks. I could be wrong. If I am right, the code is pretty bad, if I am wrong, I've been misled after all I know about the code (say 20 hours diddling with it in total). Personally, I'd compute the sqr only in case !degenerate. So the cost would actually be one squaring - sometimes - versus nothing. And this is just one tiny little example of a myriad of weirdnesses all around the code.

So given what the perfect documentation tells me cmov being conditional move, the code would have been better written as:

Code:
if (degenerate) {
n = m;
}
else {
secp256k1_fe_sqr(&n, &n);
}

Hm. Works. Is faster. Tests says "no problems found". And now the code makes sense.
Of course it is only a trivial thing. Probably not worth the effort. Right?

So conditional move you say?

Code:
/** If flag is true, set *r equal to *a; otherwise leave it. Constant-time. */
static void secp256k1_fe_cmov(secp256k1_fe *r, const secp256k1_fe *a, int flag);

Code:
if (flag) {
*r = *a;
}

yes? Why do I see then this epic kludge in the code?

Code:
static SECP256K1_INLINE void secp256k1_fe_cmov(secp256k1_fe *r, const secp256k1_fe *a, int flag) {
    uint64_t mask0, mask1;
    mask0 = flag + ~((uint64_t)0);
    mask1 = ~mask0;
    r->n[0] = (r->n[0] & mask0) | (a->n[0] & mask1);
    r->n[1] = (r->n[1] & mask0) | (a->n[1] & mask1);
    r->n[2] = (r->n[2] & mask0) | (a->n[2] & mask1);
    r->n[3] = (r->n[3] & mask0) | (a->n[3] & mask1);
    r->n[4] = (r->n[4] & mask0) | (a->n[4] & mask1);
#ifdef VERIFY
    if (a->magnitude > r->magnitude) {
        r->magnitude = a->magnitude;
    }
    r->normalized &= a->normalized;
#endif
}


Let's continue with the "extensive documentation":

Code:
    secp256k1_fe_sqr(&t, &rr_alt);                      /* t = Ralt^2 (1) */
    secp256k1_fe_mul(&r->z, &a->z, &m_alt);             /* r->z = Malt*Z (1) */
    infinity = secp256k1_fe_normalizes_to_zero(&r->z) * (1 - a->infinity);
    secp256k1_fe_mul_int(&r->z, 2);                     /* r->z = Z3 = 2*Malt*Z (2) */
    secp256k1_fe_negate(&q, &q, 1);                     /* q = -Q (2) */
    secp256k1_fe_add(&t, &q);                           /* t = Ralt^2-Q (3) */

Hm.  Ah. There is our Q. We assume it is an alias for q. Why - who knows? Makes things more interesting.
Again, we have our "the comment is the sum of previous code" and suddenly we use the alias only. Yeah why not.
Best of all is to be able to have a subtraction in the comment, when the code says "add". This is way more thrill.

And allow me for a final remark:

Quote
... even though this is purely internal code and is not accessible to an end user of the library.

WTF? The "end user of the library" is of exactly 0 (in words: zero) interest to our discussion.

Hint: All this was only a remark. My energy is probably better spent in setting up my own FE arithmetics and a complete reimplementation of the GE API which as is absolutely ignores the natural flow of the data and need for MULADD, resp SETSUM 3-ARG operations. Don't worry, I won't disturb the intellectual incest any more. It could be considered rude.

Good luck.

Rico
1245  Local / Projektentwicklung / Re: Large Bitcoin Collider (Collision Finder Pool) - Deutscher Thread on: January 14, 2017, 11:31:54 AM
Komisch ist das ich nur mit einem core arbeiten kann.
Selbst wenn ich 3 starten möchte sagt er 1 core use

Er braucht pro Prozess ca 550 MB RAM. Wenn er feststellt, dass die Anzahl der gewünschten Prozesse mehr Speicher benötigen würde als vorhanden ist, drosselt er runter. Ggf. der VM mehr Speicher geben. Ggf. schauen was

Code:
> cat /proc/cpuinfo
> free

sagen.

Aber Du hast doch geschrieben, dass bei Dir die CPU Auslastung irgendwo bei 80% liegt - oder? Also muss das doch schon mal funktioniert haben.


Rico
1246  Bitcoin / Development & Technical Discussion / Re: secp256k1 library and Intel cpu on: January 14, 2017, 08:21:41 AM
There is no question that at this moment sipa's secp256k1 lib is the fastest solution on the market.

And you can complain  all you want about messy coding or poor documentation, but unless you provide an alternative to prove that it can be done so much better... well,  then it's just going to be a moaning.

And just a moaning isn't very professional.

Strange. I was under the impression that

Code:
field_get_b32: min 0.647us / avg 0.666us / max 0.751us
field_set_b32: min 0.551us / avg 0.571us / max 0.624us

becomes

field_get_b32: min 0us / avg 0.0000000477us / max 0.000000238us
field_set_b32: min 0us / avg 0.0000000238us / max 0.000000238us

allowed me a tiny little bit of moaning.


Rico
1247  Local / Projektentwicklung / Re: Large Bitcoin Collider (Collision Finder Pool) - Deutscher Thread on: January 13, 2017, 09:13:42 PM
huhu schau mal ist das normal?
wenn ich dann enter drücke geht es normal weiter.

Ja, ist es.  Smiley

Misslungener Bildschirmschoner. SHIFT drücken reicht auch schon und man wurstelt nicht in die Bildschirmausgabe.
Kannst aber lassen. Er arbeitet auch so weiter. Ich drücke ab und zu schift um zu sehen ob noch alles in Ordnung ist.

So einmal die Woche.  Grin
wenn ich den client neu starte bzw den pc neu starte,
fängt er dann wieder von vorne an?
und merkt er sich schon gefundene adressen?

Wenn Du den PC ausschaltest/neu startest/er abstürzt etc. ...
=> Deswegen wird die Datei "FOUND.txt" angelegt. Die ist natürlich auch über Neustarts/Abstürze etc. persistent.
D.h. Ja, er merkt sich schon gefundene Adressen.

Er fängt nicht von vorne an, sondern fragt beim Server einfach die aktuelle Arbeit an und bekommt was zugewiesen.
Der Server kümmert sich darum, dass nichts (unnötig) doppelt gemacht wird.

Rico
1248  Bitcoin / Project Development / Re: Large Bitcoin Collider (Collision Finders Pool) on: January 13, 2017, 09:01:55 PM
Test check failed! Expected 4 hits and got 2!

This happens at the moment. Probably it's the test itself failing (I had the generator showing uncompressed/compressed keys swapped.)

Basically if you do

Code:
./gen-hrdcore-avx2-linux64 -I 0000000000000000000000000000000000000000000000000000000000000001 -c 10000

on the command line, it should spill out 4 lines (with hash160 and priv keys +  1 line challenge response). This is proof that all still works. I expect this to be fixed in the next version.

Rico
1249  Bitcoin / Development & Technical Discussion / Re: secp256k1 library and Intel cpu on: January 13, 2017, 06:35:04 PM
There are 3 benchmarks

bench_internal
bench_verify
bench_sign

which are built by ./configure --enable-benchmark

As for the difference in test speed, might have to do with some lines in tests.c which indicate a different number of rounds (plus tests for endomorphism) if endomorphism is on.

Built your program with endomorphism (./configure --enable-endomorphism) and report back with the results, should be faster.

Ok - I did.

bench_verify shows speedup with endomorphism

ecdsa_verify: min 42.0us / avg 42.2us / max 43.0us  (with)
ecdsa_verify: min 57.7us / avg 57.8us / max 58.4us  (without)

bench_internal shows no improvements (within measure tolerance) except one:

wnaf_const: min 0.0887us / avg 0.0920us / max 0.102us (with)
wnaf_const: min 0.155us / avg 0.161us / max 0.171us     (without)

I doubt this would cause the speedup from above.


Rico
1250  Bitcoin / Development & Technical Discussion / Re: secp256k1 library and Intel cpu on: January 13, 2017, 06:13:06 PM
And you can't seriously expect from and coder  to work on his personal  hobby project and  then deliver it with the industry standards documentation.

Depends on the coder - I guess. As long as I have interest in my hobby project, I want it to be perfect. I for one have no problem to admit that my LBC projects still sucks badly in many places right now. I intend to improve. Documentation, Ease of use, Speed, One of them is to get decent EC performance on a GPU - that's why I am looking into this at all.
 
Quote
What kind of documentation would you even expect from a lib that provides a simple EC math functions?  The function names are descriptive enough if you understand the operations they provide. And if you don't understand the math behind it then no document is going to help you anyway.

Well - for me the names are pretty bad.  "secp256k1_fe_cmov" *thumbs up* But it's not only that. The data structures are pretty sideways too. Actually I understand the math pretty well, that's why I am so puzzled about what I see - still unsure if the lib is seriously doing what I think it's doing. I don't think the person who wrote this did really care for performance - he probably just wanted something that sucked less.

Sipa you say? Why did he abandon the project? Was it just some proof of work?


Rico
1251  Local / Projektentwicklung / Re: Large Bitcoin Collider (Collision Finder Pool) - Deutscher Thread on: January 13, 2017, 12:29:22 PM
also den ordner habe ich noch nicht.

Zum nun 4. oder 5. Mal: es ist kein Ordner - es ist eine Datei.

Quote
mit dem schlüssel komme ich nicht so wirklich klar. wo öffnest du die wallets denn dann?

Code:
./bitcoin-tool --output-format base58check --public-key-compression (un)compressed --network bitcoin --input-type private-key --input-format hex --output-type private-key-wif --input <hier der hex-code>

https://github.com/matja/bitcoin-tool

edit: Gerade kommt mir, dass es eigentlich keine schlechte Idee wäre das Bitcoin tool gleich auf die LBC Appliance mit zu installieren.


Rico
1252  Bitcoin / Development & Technical Discussion / Re: secp256k1 library and Intel cpu on: January 13, 2017, 11:54:48 AM
One question I have regarding secp256k1 is whether endomorphism is safe, and if yes, shouldn't it be enabled in bitcoin builds if it's faster (benchmarks show that it is)?

I don't think patents are any problem with the endomorphism code. The code itself is the problem. Not sure which benchmarks you are referring to, but if I take a (very coarse) look on benchmarks on my system, USE_ENDOMORPHISM is nothing you'd like to enable:

Code:
Times for tests:

gcc version 6.3.1 20170109 (GCC)

1) CFLAGS -g -O2
real    0m14.365s
user    0m14.357s
sys     0m0.007s

2) CFLAGS -O3 -march=sklake
real    0m13.549s
user    0m13.547s
sys     0m0.000s

3) CFLAGS -O3 -march=sklake & USE_ENDOMORPHISM 1
real    0m15.660s
user    0m15.660s
sys     0m0.000s

4) CFLAGS -g -O2 & USE_ENDOMORPHISM 1
real    0m16.139s
user    0m16.137s
sys     0m0.000s

5) CFLAGS -g -O2 & undef USE_ASM_X86_64
real    0m14.849s
user    0m14.847s
sys     0m0.000s

6) CFLAGS -O3 -march=sklake & undef USE_ASM_X86_64
real    0m14.520s
user    0m14.517s
sys     0m0.000s

So yes, the beef seems to be in better assembler code and ditching endomorphism.
On modern CPUs, ditch that old gcc too and use -O3 (forget what you've heard about it in the past years).

Rico
1253  Bitcoin / Development & Technical Discussion / Re: secp256k1 library and Intel cpu on: January 13, 2017, 09:55:40 AM
Can you show another library for the same application within a factor of _five_ of the performance?  Or with more than 1/5th the documentation?

I'm just ... beside myself at your comment, it's not even insulting: it's just too absurd.

Good. We seem to live in different worlds then, each others world seeming absurd to the other one.

I for one, find your "argument" of requesting to be shown another lib doing the same thing with 5 perf 1/5 docs quite absurd. It's like claiming that anything in the world by definition cannot suck when there is nothing else that sucks less. Really absurd.

Quote
You might have noticed that the constant unpacking macro does effectively the same thing: https://github.com/bitcoin-core/secp256k1/blob/master/src/field_5x52.h#L22 but a word at a time.

No I haven't, because reading the secp256k1 code is a major PITA, but thanks for the pointer. That wheel would probably be the next thing I'd reinvented.

Quote
If you open a PR on the function you should add it to the bench_internal benchmarks as you go.

What's a PR? Press release? Ah. pull request I suppose. You're assuming too much. E.g. that the whole world runs on - or is - git.

Quote
Quote
Is there any place where R&D discussion about further development is ongoing? Before I'd start re-implementing that mess from scratch I'd prefer to participate in some "official endeavor".

same place it's always been https://github.com/bitcoin-core/secp256k1/

If that is the "discussion" place, no wonder I didn't see it. Srsly?

Quote
Disinterest in spoon feeding people who sound like wanna-be thieves who thefts would scare ordinary people away from Bitcoin and whom can't even be bothered to RTFM (there has been fairly detailed documentation for the library for years) is not evidence of a lack of interest in further development.

My dear young gmaxwell: Evidently, after you did the diligent work opening a PR  Smiley, benchmarked the code in the process, reformatting it for the worse, but reordering it for the better, found out and stated that my code is about 6-7 orders of magnitude faster than the original code (and I am not primarily a C hacker) ... you have the guts to use the term "wanna-be" when addressing any of your texts towards me?

Let alone the fact that there was such a tremendously suboptimal code for such a long time should teach you something. Let me assure you, your perception of the situation here is skewed at best. From what I see in the secp256k1 lib, the collective who did the job are good programmers with potential. Motivated, young, inexperienced, but potential.

If it wasn't for the LBC hobby project of mine, I would have never had looked in the mess that is the secp256k1 library. I did and I commented. You don't like the comment, maybe feel it being insulting, puzzling or absurd. Fine. I have high hopes that before you are in your mid-40ties you will understand what my comment was about. As I said: "potential".

Rationalizing the poor state of an open source project is something I came across in the Linux world since the 90ties. To me, your statements are neither new nor original. So should you - some day - come to the conclusion that you could attract a certain kind of programmers when the open source software reaches a certain kind of quality, it'd be swell. Let me tell you it's not about "spoon feeding people who sound like wanna-be thieves". It's about preparing the ground for people who may have twice your experience and otherwise scoff at the project.

No offence - ofc.

Rico
1254  Bitcoin / Project Development / secp256k1 speedup on: January 13, 2017, 09:15:55 AM
Yay!

Thanks to LBC I had the motivation to look into the secp256k1 lib and could make two subroutines faster by 6 to 7 orders of magnitude (that's 1 to 10 million times faster)

https://github.com/bitcoin-core/secp256k1/pull/437

Quote
field_get_b32: min 0.647us / avg 0.666us / max 0.751us
field_set_b32: min 0.551us / avg 0.571us / max 0.624us

becomes

field_get_b32: min 0us / avg 0.0000000477us / max 0.000000238us
field_set_b32: min 0us / avg 0.0000000238us / max 0.000000238us

So some day your dear bitcoin client will be faster thanks to this.

Seems I was wrong and secp256k1 hackers actually are interested in improving secp256k1, which motivates me to look at some other parts of secp256k1 where I sense more code smell... If only the docs were better (a.k.a. existent), I could spend more time on code than doing detective work.


Rico
1255  Local / Projektentwicklung / Re: Large Bitcoin Collider (Collision Finder Pool) - Deutscher Thread on: January 13, 2017, 07:42:54 AM
oooook ich habe den fehler selbst gefunden.

aber wo finde ich den found ordner?

-c 3 gell?

Es gibt keinen found Ordner. Im Verzeichnis "collider" - oder halt entsprechend "in dem Verzeichnis in dem sich das LBC Skript befindet", erscheint bei Fund eine Datei FOUND.txt.

Einfach mal im Verzeichnis collider

> ls -al

eingeben. Bei mir ist ein bischen mehr da, aber sind ja auch development Geschichten.

Code:
# ls -al
total 204
drwxr-xr-x 3 root root  4096 Oct 10 11:35 .
drwxr-xr-x 7 root root  4096 Jan  6 22:33 ..
-rw-r--r-- 1 root root   118 Oct  2 13:19 FOUND.txt
-rwxr-xr-x 1 root root    92 Sep 28 10:58 hook-end.sh
-rwxr-xr-x 1 root root   164 Sep 28 10:58 hook-error.sh
-rwxr-xr-x 1 root root    34 Sep 28 10:58 hook-find.sh
-rwxr-xr-x 1 root root   164 Sep 28 10:58 hook-start.sh
-rwxr-xr-x 1 root root  1278 Oct  9 22:34 janitor.pl
-rwxr-xr-x 1 root root 62156 Oct  9 22:48 LBC
-rw-r--r-- 1 root root 43665 Sep 28 11:05 LBCdiag.txt
-rwxr-xr-x 1 root root   279 Oct  9 22:34 make_blf
-rwxr-xr-x 1 root root  2544 Sep 24 22:12 make_dist
-rw-r--r-- 1 root root  9568 Sep 18 20:17 README.txt
-rwxr-xr-x 1 root root  6104 Oct  9 22:34 sh.common
-rwxr-xr-x 1 root root 30235 Oct  9 22:34 sh.platform
drwxr-xr-x 4 root root  4096 Oct  9 22:48 .svn

Mal schauen was in der FOUND.txt drin ist...

Code:
# cat FOUND.txt 
f0225bfc68a6e17e87cd8b5e60ae3be18f120753:c:(hex)priv:0000000000000000000000000000000000000000000000000000122fca143c05


Kleine Notiz am Rande - gegenwärtig ist der Pool bei

Code:
0000000000000000000000000000000000000000000000000000db1d53800000




Rico
1256  Local / Projektentwicklung / Re: Large Bitcoin Collider (Collision Finder Pool) - Deutscher Thread on: January 12, 2017, 05:58:50 PM
huhu,
ich neheme an die found datei wird erst erstellt wenn etwas
gefunden wird oder?
lg

Ja. Genau genommen FOUND.txt

Wenn Du ein LBC -x gemacht hast, dann müsste auch eine erstellt worden sein, denn da findet er ja beim testen 4 hits.
Er sagt dann auch "You might want to delete FOUND.txt..." damit man nicht jedesmal einen Herzkasper bekommt wenn die Datei da ist.  Wink



Rico
1257  Bitcoin / Project Development / Re: Large Bitcoin Collider (Collision Finders Pool) on: January 12, 2017, 05:51:30 PM
Benchmark info not found - benchmarking... 'gen-hrdcore-sse42-linux64' not found/executable.

You could also try ./LBC -u  which should perform a couple of auto-updates.
If all fails, there is still the manual way. LBC has recognized the sse4.2 generator to be best for your CPU, so you can:

  • go to http://ftp://ftp.cryptoguru.org/LBC/generators/
  • fetch the newest one with sse42 in it (170105-5aef41bea5c64dbf8c977195b67ba796.gen-hrdcore-sse42-linux64.bz2 as of now)
  • bunzip2 it
  • rename it to gen-hrdcore-sse42-linux64
  • make sure it's executable


Rico
1258  Bitcoin / Project Development / Re: Speed Improvement on: January 12, 2017, 05:23:49 PM
What function do you use in your program?

secp256k1_gej_add_ge_var, and mainly in a descendant of the secp256k1_ecmult_gen2 function from here:

https://github.com/ryancdotorg/brainflayer/blob/master/ec_pubkey_fast.c

Which - meanwhile - looks like this in my code:

Code:
static void
hrdec_mult_gen2(secp256k1_gej *r,
                const uchar *seckey) {

  secp256k1_gej o1;
  secp256k1_gej s1, s2, s3, s4, s5, s6, s7, s8,
                s9,s10,s11,s12,s13,s14,s15,s16;


  secp256k1_gej_set_ge(&o1, &prec[      seckey[31]]);
  secp256k1_gej_add_ge_var(&s1, &o1, &prec[ 256 + seckey[30]], NULL);

  secp256k1_gej_set_ge(&o1, &prec[512 + seckey[29]]);
  secp256k1_gej_add_ge_var(&s2, &o1, &prec[ 768 + seckey[28]], NULL);

  secp256k1_gej_set_ge(&o1, &prec[1024 + seckey[27]]);
  secp256k1_gej_add_ge_var(&s3, &o1, &prec[1280 + seckey[26]], NULL);

  secp256k1_gej_set_ge(&o1, &prec[1536 + seckey[25]]);
  secp256k1_gej_add_ge_var(&s4, &o1, &prec[1792 + seckey[24]], NULL);

  secp256k1_gej_set_ge(&o1, &prec[2048 + seckey[23]]);
  secp256k1_gej_add_ge_var(&s5, &o1, &prec[2304 + seckey[22]], NULL);

  secp256k1_gej_set_ge(&o1, &prec[2560 + seckey[21]]);
  secp256k1_gej_add_ge_var(&s6, &o1, &prec[2816 + seckey[20]], NULL);

  secp256k1_gej_set_ge(&o1, &prec[3072 + seckey[19]]);
  secp256k1_gej_add_ge_var(&s7, &o1, &prec[3328 + seckey[18]], NULL);

  secp256k1_gej_set_ge(&o1, &prec[3584 + seckey[17]]);
  secp256k1_gej_add_ge_var(&s8, &o1, &prec[3840 + seckey[16]], NULL);

  secp256k1_gej_set_ge(&o1, &prec[4096 + seckey[15]]);
  secp256k1_gej_add_ge_var(&s9, &o1, &prec[4352 + seckey[14]], NULL);

  secp256k1_gej_set_ge(&o1, &prec[4608 + seckey[13]]);
  secp256k1_gej_add_ge_var(&s10, &o1, &prec[4864 + seckey[12]], NULL);

  secp256k1_gej_set_ge(&o1, &prec[5120 + seckey[11]]);
  secp256k1_gej_add_ge_var(&s11, &o1, &prec[5376 + seckey[10]], NULL);

  secp256k1_gej_set_ge(&o1, &prec[5632 + seckey[9]]);
  secp256k1_gej_add_ge_var(&s12, &o1, &prec[5888 + seckey[8]], NULL);

  secp256k1_gej_set_ge(&o1, &prec[6144 + seckey[7]]);
  secp256k1_gej_add_ge_var(&s13, &o1, &prec[6400 + seckey[6]], NULL);

  secp256k1_gej_set_ge(&o1, &prec[6656 + seckey[5]]);
  secp256k1_gej_add_ge_var(&s14, &o1, &prec[6912 + seckey[4]], NULL);

  secp256k1_gej_set_ge(&o1, &prec[7168 + seckey[3]]);
  secp256k1_gej_add_ge_var(&s15, &o1, &prec[7424 + seckey[2]], NULL);
 
  secp256k1_gej_set_ge(&o1, &prec[7680 + seckey[1]]);
  secp256k1_gej_add_ge_var(&s16, &o1, &prec[7936 + seckey[0]], NULL);

  secp256k1_gej t1;
 
  secp256k1_gej_add_var(&t1,  &s1,  &s2, NULL);
  secp256k1_gej_add_var(&s1,  &s3,  &s4, NULL);
  secp256k1_gej_add_var(&s2,  &s5,  &s6, NULL);
  secp256k1_gej_add_var(&s3,  &s7,  &s8, NULL);
  secp256k1_gej_add_var(&s4,  &s9, &s10, NULL);
  secp256k1_gej_add_var(&s5, &s11, &s12, NULL);
  secp256k1_gej_add_var(&s6, &s13, &s14, NULL);
  secp256k1_gej_add_var(&s7, &s15, &s16, NULL);


  secp256k1_gej_add_var(&s8, &t1, &s1, NULL);
  secp256k1_gej_add_var(&s1, &s2, &s3, NULL);
  secp256k1_gej_add_var(&s2, &s4, &s5, NULL);
  secp256k1_gej_add_var(&s3, &s6, &s7, NULL);

  secp256k1_gej x1,x2;

  secp256k1_gej_add_var(&x1, &s1, &s2, NULL);
  secp256k1_gej_add_var(&x2, &s3, &s8, NULL);

  secp256k1_gej_add_var(r, &x1, &x2, NULL);
}

I am highly dissatisfied with the code and the runtime still. All I managed by the tree-addition was to spare myself one secp256k1_gej_add_var call. All this EC arithmetic looks so clumsy...

I'll probably try to find some more efficient way how to form the sum of N secp256k1_gej values.


Rico
1259  Local / Projektentwicklung / Re: Large Bitcoin Collider (Collision Finder Pool) - Deutscher Thread on: January 11, 2017, 05:47:30 PM
Hi,

Bekommst DU als Betreiber der Infrastruktur dahinter auch eine Info über den Fund? Und zweigst die ggf. gefundenen Coins dann auf eine separate Adresse ab, auf der sich dann der Besitzer bei dir melden soll?

Oder bekommt der Finder an sich, der die Computingpower zur Verfügung stellt, die Adresse und priv. Key zur eigenen Verwendung?

Alles in der Doku beschrieben und 100x diskutiert: https://lbc.cryptoguru.org/man/theory#the-case-for-funds

insbes:

Quote
Clearly, this approach is not feasible, because the overhead for doing that would use a multiple times the ressources as if you had a single client working on the task. So this approach would render the whole problem unparallelizable.

bzw:

https://bitcointalk.org/index.php?topic=1573035.msg16182353#msg16182353

Quote
There is no way the server could keep up with the generated private keys. All PK generation and checking occurs on the client and after the client has checked the keys, they are discarded. All the server does is distributing chunks of work to the clients, receiving ACKs for work done and performing multi-interval arithmetic to ensure nothing is left out and nothing is done (unnecessarily) twice.

The main reason for the offline processing is speed and scalability - of course. But I also like to leave the decision what to do with a PK found in the clients hands to not get involved in case the client decides to ... hmm ... reward himself.

Google translate oder der freundliche Forumsnachbar von nebenan helfen. Prinzipiell könnte der eine zentrale Server niemals mit den generierten Keys Schritt halten. Für den Fall jemand glaubt der Client wird im Falle eines Fundes irgendwie von Server gesteuert:

https://lbc.cryptoguru.org/about#how-do-i-know-the-pool-doesn-t-scam-me-

Einfach Kabel rausrupfen und manuell einen Bereich eingeben wo man garantiert was findet. Fund wird angezeigt, FOUND.txt wird erzeugt.



Rico
1260  Local / Projektentwicklung / Re: Large Bitcoin Collider (Collision Finder Pool) - Deutscher Thread on: January 11, 2017, 05:19:24 PM
ja juhuu super vielen dank für die hilfe.

aber was ist wenn ich es verpasse?
ich sitze ja nicht die ganze zeit vorm pc

Natürlich schreibt er seinen Fund auch in eine Datei namens FOUND.txt - geht also nix verloren.
Für die Fortgeschrittenen gibt es dann hooks: https://lbc.cryptoguru.org/man/user#hooks

Da kann man sich dann selbst was schreiben was er tun soll im Findungsfall. :-)
Das kann vom Rumgepiepe bis zum Mailversand eigentlich alles sein.


Rico
Pages: « 1 ... 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 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!