Bitcoin Forum

Local => Off-Topic (Deutsch) => Topic started by: HerrPD on May 10, 2013, 09:01:31 PM



Title: WER "VERSTEHT" BITCOIN ?
Post by: HerrPD on May 10, 2013, 09:01:31 PM
Kleine Umfrage: Wer versteht Bitcoin nahezu perfekt ink. Quellcode?



Title: Re: WER "VERSTEHT" BITCOIN ?
Post by: eiswuerfel on May 11, 2013, 01:26:18 AM
Satoshi


Title: Re: WER "VERSTEHT" BITCOIN ?
Post by: Rave on May 11, 2013, 09:50:57 AM
Gib mir noch ein paar Wochen xD


Title: Re: WER "VERSTEHT" BITCOIN ?
Post by: BeeCoin on May 11, 2013, 11:58:05 PM
Gute Frage... Das Konzept von Satoshis Whitepaper habe ich mittlerweile verstanden. Source code eines Clients habe ich mir nicht die Mühe gemacht, nachzuvollziehen.

Wieso ist diese Frage eigentlich "off-topic"? Ich würde es als absolut zentral bezeichnen.
-BeeCoin.


Title: Re: WER "VERSTEHT" BITCOIN ?
Post by: HerrPD on May 12, 2013, 12:38:54 PM
Ja wusste nicht wo es sonst hin soll.



Title: Re: WER "VERSTEHT" BITCOIN ?
Post by: Rave on May 12, 2013, 03:06:48 PM
Was interessiert dich denn? Den Quellcode verstehe ich mittlerweile gut genug um mir damit einen eigenen Coin basteln zu können. Trotzdem ist noch vieles unklar. Zum Verständniss gehört nicht nur der Code. Da gibt's ja auch noch die Anwender, Wechselwirkungen zwischen den Tauschbörsen, Kursmanipulationen usw..


Title: Re: WER "VERSTEHT" BITCOIN ?
Post by: asyring on June 06, 2013, 06:57:20 AM
naja so richtig vielleicht nicht


Title: Re: WER "VERSTEHT" BITCOIN ?
Post by: herzmeister on June 06, 2013, 02:39:23 PM
zeig mir eine funktion aus dem code und ich versuch dir zu erklären wofür man sie braucht und was sie macht.


Title: Re: WER "VERSTEHT" BITCOIN ?
Post by: HerrPD on June 06, 2013, 08:52:12 PM
Ich will mal gemein sein... ;D
(sehe ich das richtig, dass dies die Funktion für die mathematische Errechnung der Coins ist?)

void GenerateBitcoins(bool fGenerate, CWallet* pwallet)
{
    static boost::thread_group* minerThreads = NULL;

    int nThreads = GetArg("-genproclimit", -1);
    if (nThreads < 0)
        nThreads = boost::thread::hardware_concurrency();

    if (minerThreads != NULL)
    {
        minerThreads->interrupt_all();
        delete minerThreads;
        minerThreads = NULL;
    }

    if (nThreads == 0 || !fGenerate)
        return;

    minerThreads = new boost::thread_group();
    for (int i = 0; i < nThreads; i++)
        minerThreads->create_thread(boost::bind(&BitcoinMiner, pwallet));
}

// Amount compression:
// * If the amount is 0, output 0
// * first, divide the amount (in base units) by the largest power of 10 possible; call the exponent e (e is max 9)
// * if e<9, the last digit of the resulting number cannot be 0; store it as d, and drop it (divide by 10)
//   * call the result n
//   * output 1 + 10*(9*n + d - 1) + e
// * if e==9, we only know the resulting number is not zero, so output 1 + 10*(n - 1) + 9
// (this is decodable, as d is in [1-9] and e is in [0-9])

uint64 CTxOutCompressor::CompressAmount(uint64 n)
{
    if (n == 0)
        return 0;
    int e = 0;
    while (((n % 10) == 0) && e < 9) {
        n /= 10;
        e++;
    }
    if (e < 9) {
        int d = (n % 10);
        assert(d >= 1 && d <= 9);
        n /= 10;
        return 1 + (n*9 + d - 1)*10 + e;
    } else {
        return 1 + (n - 1)*10 + 9;
    }
}

uint64 CTxOutCompressor::DecompressAmount(uint64 x)
{
    // x = 0  OR  x = 1+10*(9*n + d - 1) + e  OR  x = 1+10*(n - 1) + 9
    if (x == 0)
        return 0;
    x--;
    // x = 10*(9*n + d - 1) + e
    int e = x % 10;
    x /= 10;
    uint64 n = 0;
    if (e < 9) {
        // x = 9*n + d - 1
        int d = (x % 9) + 1;
        x /= 9;
        // x = n
        n = x*10 + d;
    } else {
        n = x+1;
    }
    while (e) {
        n *= 10;
        e--;
    }
    return n;
}


Title: Re: WER "VERSTEHT" BITCOIN ?
Post by: mezzomix on June 07, 2013, 06:05:55 AM
Nein, die erste Funktion legt nur die Miner Threads an, die nachher die Arbeit machen. Die beiden anderen wandeln einen Bitcoin Betrag in eine speichereffizientere komprimierte Darstellung um (Compress) bzw. zurück (Decompress). Dabei wird die Komprimierung umso besser, je höher der Exponent in einer Exponentialschreibweise mit ganzzahliger Mantisse ist. D.h. z.B. 120000 (12*10^4) ist besser komprimierbar als 120100 (1201*10^2). Die beiden Darstellungen der Zahl sind Umkehrbar, was aber nur funktioniert solange der 64bit Zahlenraum nicht voll ausgenutzt wird.

Was mich wundert ist, dass die Komprimierung nur bis zum Exponent 8, also für die Satoshi gemacht wird. Man hätte auch eine Funktion wählen können, die den Betrag weiter komprimiert. Ich habe jetzt auf die schnelle nicht nachgeschaut wo die Funktion genutzt wird. Vielleicht erklärt dass die Begrenzung auf die 8 Nachkommastelle des BTC Betrag.


Title: Re: WER "VERSTEHT" BITCOIN ?
Post by: hoqq on June 08, 2013, 11:33:09 PM
Falls jemand tief in die Bitcoin-Technik eintauchen möchte, kann ich den 2-stündigen Vortrag von Alexander Bernauer (CCC / Chaosseminar) empfehlen, hier in diversen Formaten zum Download:
http://ulm.ccc.de/ChaosSeminar/2012/01_Bitcoin


Title: Re: WER "VERSTEHT" BITCOIN ?
Post by: Mannfred on June 09, 2013, 03:35:32 PM
Danke!  ;D