Author

Topic: WER "VERSTEHT" BITCOIN ? (Read 1288 times)

newbie
Activity: 41
Merit: 0
June 09, 2013, 11:35:32 AM
#12
Danke!  Grin
jr. member
Activity: 41
Merit: 1
June 08, 2013, 07:33:09 PM
#11
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
legendary
Activity: 2702
Merit: 1261
June 07, 2013, 02:05:55 AM
#10
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.
full member
Activity: 205
Merit: 100
June 06, 2013, 04:52:12 PM
#9
Ich will mal gemein sein... Grin
(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;
}
legendary
Activity: 1764
Merit: 1007
June 06, 2013, 10:39:23 AM
#8
zeig mir eine funktion aus dem code und ich versuch dir zu erklären wofür man sie braucht und was sie macht.
newbie
Activity: 29
Merit: 0
June 06, 2013, 02:57:20 AM
#7
naja so richtig vielleicht nicht
sr. member
Activity: 336
Merit: 250
May 12, 2013, 11:06:48 AM
#6
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..
full member
Activity: 205
Merit: 100
May 12, 2013, 08:38:54 AM
#5
Ja wusste nicht wo es sonst hin soll.

sr. member
Activity: 308
Merit: 250
May 11, 2013, 07:58:05 PM
#4
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.
sr. member
Activity: 336
Merit: 250
May 11, 2013, 05:50:57 AM
#3
Gib mir noch ein paar Wochen xD
sr. member
Activity: 267
Merit: 250
May 10, 2013, 09:26:18 PM
#2
Satoshi
full member
Activity: 205
Merit: 100
May 10, 2013, 05:01:31 PM
#1
Kleine Umfrage: Wer versteht Bitcoin nahezu perfekt ink. Quellcode?

Jump to: