== Wie für Spaß und Profit Klonen Scrypt Based Altcoins ==
Warten Sie eine Sekunde , warum wollen Sie geben , die Geheimnisse ? ? Weil die kein Geheimnis mehr, und außerdem, warum sollte nicht jeder und ihre Nachbarn in der Lage, eine Vielzahl von diesen nutzlosen noch spannende Mathe Bits zu schaffen? Die Informationen in diesem Artikel hat mich ein paar Wochen zu kompilieren und zu was für mich ist nicht gewährleistet , für Sie zu arbeiten. Bitte verwenden Sie dieses Handbuch als Ausgangspunkt, um ein wenig über C-Programmierung und Erstellung Software zu erlernen .
Werde ich nicht tun Tech-Support - nur weil man nicht etwas zum Laufen zu bringen berechtigt Sie nicht , mich darum zu kümmern. Gehen Sie zu lesen, zu graben, zu lesen und einige mehr. Fast alles, was in diesem Handbuch wird in einen oder anderen Form auf bitcointalk.org ' s altcoin Forum. Der Rest davon habe ich akribisch nach unten durch Versuch und Irrtum und einer gesunden Portion googeln verfolgt. Die Dinge sind gemeint zu brechen, die Sie brauchen, um herauszufinden , warum und damit es funktioniert werde . Bis Ende dieses Handbuchs sollten Sie einen Arbeits Münze , p2p ( IRC )-Netzwerk und Clients für Linux (leicht) , Mac (ein bisschen härter ) und Windows ( igitt ) .
=== Was brauche ich? ===
* Source Code für eine Münze Scrypt
* Arbeits Wissen und den Zugang zu Linux-oder Mac -Befehlszeile - ich bin nicht dabei, Cygwin zeigen , aber seine ähnlich.
* 2 oder mehr Computer oder virtuelle Maschinen - Ich werde mit meinem Laptop und ein Debian- Wheezy Basis VPS .
* Text Editing Software - ich bin mit TextWrangler für Mac, aber Netbeans , EmeraldEditor oder nano wird funktionieren .
* Zeit und Geduld ...
Glückliche Fiddling !
=== Github , Source Code und Linux ===
==== Source Code ====
First things first . Sie werden einige Quellcode müssen . Da ich bezweifle, dass man es von Grund auf neu zu schreiben ( ich konnte es nicht ) , sollten Sie glücklich zu wissen, es gibt ein Unmenge von verschiedenen Optionen in der Scrypt - Münze Familie für Sie zu klonen und zu verändern. Meine ersten Münzen wurden auf der am meisten ausgezeichnete Forschungs Münze , Smallchange basiert, von LightenUp . Seine git diff -Ausgang:
https://github.com/bfroemel/smallcha...748f76a3d58326 ist annähernd genug Informationen, um Ihre eigenen alt- Münze komplett erstellen und als solche sollte gelobt werden. Ja , ich merke, seinen Code ist einfach die Litecoin Quelle mit Ausschneiden und Einfügen Veränderungen, aber hey - das ist , was wir hier arbeiten , und er hat einige ausgezeichnete Kommentare über den gesamten Code .
Für die Zwecke dieses Tutorial und eine "saubere" Kopie der SMC -Code zu erhalten , habe ich foocoin erstellt:
https://github.com/foocoin/foocoin Dieser Leitfaden wird Ihnen zeigen , wie man " in den foo'coin ' drehen bar'coin und Sie können es von dort. Ich habe schon genug geändert, um diese Münze Kompilierung in der Lage , wenn Sie dieser Anleitung folgen . Wenn Sie es vorziehen, mit dem Original- Code Small beginnen, ist es hier:
https://github.com/bfroemel/smallchange.git oder Sie haben die Litecoin , Franko, YAC , CHN , MIN, welcher Quelle auch immer nutzen könnten - wir Wir ändern genug davon , damit es funktioniert .
==== Ein Github -Konto ein ====
Jetzt wäre ein guter Zeitpunkt , um mit einem glänzend eindeutigen Namen für Ihre neue Münze . Sie können
https://github.com/insertcoinnamehere besuchen und überprüfen Sie, ob Ihr Name Münze ist . Wenn es nicht , nur Add- Projekt oder etwas Witziges und Glaubwürdigkeit steigern , vielleicht Non-Profit - oder - Konsortium würde Ihre Münze etwas gusto geben :
[ [ | { {
https://i.imgur.com/8IxPN1X.png } }]]
Hey , schau, barcoin nicht genommen - we'd besser schnappen es rechts oben! Einfach auf
https://github.com und füllen Sie die Lücken :
[ [ | { {
https://i.imgur.com/2KLsNXL.png } }]]
Nun können zu einem dieser sexy Quellcode -URL , dass jeder Zug von git . Was ist git pull ? Mach dir keine Sorgen , du wirst den Dreh raus zu bekommen - schauen Sie , sind Sie bereits neue Dinge zu lernen . In der oberen rechten Ecke neben Ihrem Benutzernamen , klicken Sie auf "Create Repository: "
[ [ | { {
https://i.imgur.com/2xCXZfK.png } }]]
Nun füllen Sie die Felder :
[ [ | { {
https://i.imgur.com/7S9Z7Bv.png } }]]
Klicken Sie auf die grüne Taste, und voila , Sie haben Github . Nun nehmen Sie Kenntnis von diesen Informationen :
[ [ | { {
https://i.imgur.com/gXyQjh2.png } }]]
Da werden wir darauf zurückkommen . Besser noch, es Lesezeichen in Ihrem Browser und eine neue Registerkarte öffnen .
==== Linux, Mac, Cygwin ====
Ja, Sie brauchen eine von ihnen. Für dieses Tutorial werde ich mit einem MacBook mit OSX 10.8.something und einem Debian Wheezy VPS . Ich denke, man kann Cygwin verwenden, aber ich bevorzuge die * nix ist , um Windows jeden Tag und man kann auch noch etwas lernen , oder? Schießen Sie , wenn Sie eine gute Live-CD mit den Abhängigkeiten bereits eingerichtet ist , dass in einer VMWare -Sitzung ausgeführt werden gebaut benötigen, versuchen [ [ CDEbian .]] Ansonsten ist diese Anleitung benutzt Debian was bedeutet, die meisten Mainstream- Klone sollte funktionieren (dh : Ubuntu , Xubuntu , Mint) .
Einrichten eines PC oder VM mit Linux oder OSX ist außerhalb des Geltungsbereichs dieses Tutorial , aber es genügt zu sagen, ich kann für VMWare und seiner Fähigkeit, mehrere VMs gleichzeitig laufen und seine Fähigkeit, OSX 10.6.x virtualisieren bürgen Sie müssen einige Abhängigkeiten auf dem OS immer Sie wählen, um in der Lage, den Daemon und Qt - Brieftasche zu bauen installieren.
==== Abhängigkeiten für OSX ====
Die einfachste Möglichkeit, die ich gefunden habe , um Abhängigkeiten von OSX zu installieren, ist MacPorts oder Homebrew zu verwenden. Ich persönlich mag MacPorts besser als Homebrew, sondern einfach, weil seine MacPorts installiert in / opt (wo ich denke, dass es gehen sollte ) , und weil MacPorts bietet universelle baut standardmäßig. Wenn Sie lieber Homebrew, sind die Formeln, die gleichen, aber ich würde empfehlen, mit dem Bau - 32-Bit- Flagge. Für die Zwecke dieses Tutorials werden wir MacPorts zu verwenden.
Man muss die folgenden Abhängigkeiten installieren:
* Verstärkung ( C + + -Bibliotheken)
* DB48 (Berkeley DB 4 .
* qt4 -mac (Open Source QT 4.8.4 enthält qmake )
* openssl ( ssl dev Bibliotheken)
* git ( Source und zurück in das Repository zu verschieben )
* miniupnpc ( UPNP dev Bibliotheken , wahlweise - ehrlich , ich sage überspringen Sie diesen Mist )
Nach der Installation der Grund MacPorts für Ihre Version von OSX , kann dies mit diesem Befehl erreicht werden :
% sudo port install Schub DB48 qt4 -mac openssl miniupnpc git
Wenn alle Abhängigkeiten und eingebaut , ist der nächste Schritt , um die Quelle von git klonen. In diesem Beispiel werde ich foocoin Klonen , benennen Sie es , Re- git initialisieren , und drücken Sie die ursprüngliche Kopie aus, um zu gewährleisten, Github git funktioniert:
% git clone
https://github.com/foocoin/foocoin.gitKlonen in den foocoin
% mv foocoin barcoin
% cd barcoin
% rm-rf . git
% git init
Initialisieren git -Repository in ~ / barcoin
% git add- A *
% git commit -m " committed "
% git remote hinzufügen Herkunft
https://github.com/barcoin/barcoin.git% - u git push origin master
Benutzername für
[email protected] : barcoin
Passwort für
[email protected] : **********
Nun, was haben wir nur tun? Wir geklont die vorhandene Quelle , seine Verknüpfung mit git gelöscht , neu initialisiert den Ordner für Github , fügte alle vorhandenen Ordner und Dateien in das Repository , engagiert unsere Änderungen ( machte sie dauerhaft und steckte sie in die "Master"- Filiale, in umbenannt unsere neue * größere * besser * schneller Münze , stellen Sie es wieder auf Github zu verlinken - , sondern auf die * neu * Konto Münze , und schob eine Kopie aus, um Github Nun, wenn Sie gehen und schauen Sie sich Ihre Seite sollte es aussehen . etwa so:
[ [ | { {
https://i.imgur.com/hQm9qn9.png } }]]
Oh, bei all der frischen Quellcode nur darauf wartet, optimiert werden .
==== Abhängigkeiten für Linux ====
Auf Debian- basierte Linux- , Abhängigkeiten und bauen Anforderungen können in einem einzigen Befehl wie so installiert werden:
$ sudo apt-get install sudo apt -get install build-essential libboost -all- dev libcurl4 - openssl -dev libdb5.1 -dev libdb5.1 + + -dev git qt- sdk libminiupnpc -dev
Dadurch werden alle benötigten Pakete installiert werden als apt ist sehr intelligent . Sobald das erledigt ist , sollten die gleichen Bits wie oben angewendet werden :
$ git clone
https://github.com/foocoin/foocoin.gitKlonen in den foocoin
$ mv foocoin barcoin
$ cd barcoin
$ rm -rf . git
$ git init
Initialisieren git -Repository in ~ / barcoin
$ git add -A *
$ git commit-m " ersten commit"
$ git remote hinzufügen Herkunft
https://github.com/barcoin/barcoin.git$ git push- u origin master
Benutzername für
[email protected] : barcoin
Passwort für
[email protected] : **********
==== Abhängigkeiten für Windows ====
Ugh , ich wusste, Sie fragen würde . Windows ist tricker als es sein sollte , wenn es um das Bauen mit GNU-Tools geht. Zunächst werden Sie mingw32 installiert und Abhängigkeiten von Hand für jeden der oben aufgeführten Punkte müssen gebaut . Sie müssen auch Ihre qt.pro - Datei mit der Lage dieser Abhängigkeiten anpassen. Um dies zu vereinfachen , habe ich bereits zusammengestellt und montiert die benötigten Abhängigkeiten zu einem schönen Github -Repository für Sie. Wenn entweder heruntergeladen und extrahiert als c : \ deps oder git geklont C : \ , dies thepacakge :
https://github.com/foocoin/deps.git wird Ihnen alles was Sie brauchen, um foo ( bar) Münze mit dem Quellcode zu erstellen Sie habe schon . Mehr über den Bau der lange Weg, wenn wir etwas dem Windows-Client Zusammenstellung entlang in das Projekt ein wenig weiter .
Jetzt sind Sie bereit zum Ausschneiden und einfügen!
Suchen und Ersetzen === ===
Ahh, jetzt haben wir den kreativen Teil zu kommen. Das Bit , wo Sie die Dinge, die Sie ändern, um Ihre Münze Ihr zu machen wünschen. Da dies eine * Klonen * Tutorial , ich werde nicht auf die Feinheiten der Programmierung konzentrieren (ich bin nicht qualifiziert) . Ich bin einfach da, um Ihnen zu zeigen, wo Sie die Änderungen, die Sie vornehmen müssen, um eine Münze zum Laufen zu bekommen. Für diesen Schritt , ich bevorzuge wirklich TextWrangler auf meinem Mac . Es ermöglicht für mehrere Datei Suchen und Ersetzen , die dieser Teil des Prozesses gehen recht schnell macht . Wenn Sie die Einrichtung einer VM auf Brieftaschen für Mac sowieso Qt - bauen sind, können Sie könnte / sollte einfach zu installieren und über die Abhängigkeiten innerhalb OSX bauen komplett . TextWrangler ist frei.
==== Namen ====
TextWrangler können Sie einen ganzen Ordner mit Dateien zu öffnen. Öffnen Sie einfach das Programm und wählen Sie Datei , die Open , markieren Sie den " barcoin "-Ordner und klicken Sie auf Öffnen :
[ [ | { {
https://i.imgur.com/kC106go.png } }]]
Ahh, schön, den gesamten Code in einem einfach zu bedienenden Oberfläche. Seien Sie sich bewusst , dass die Bearbeitung dieser Dateien ganz sicher über nano oder Netbeans , oder was auch immer anderen Text-Editor durchgeführt werden , auch Notepad nehme ich an. Ich habe gerade wie dieses, "Cuz dieser nächsten Funktion. Jetzt müssen wir alle Instanzen von " FooCoin , foocoin und FOOCOIN " in unserem Quelle ersetzen " BarCoin , barcoin und BARCOIN . " Beachten Sie die 3 verschiedenen Einstellungen Fall - die meisten Code hat alle drei in ihm. Um dies in TextWrangler ändern, wählen Sie Suchen , dann Multi File -Suche und wählen Sie das Verzeichnis " barcoin " :
[ [ | { {
https://i.imgur.com/fTJKnc7.png } }]]
Tun Sie dies für alle drei Einstellungen Fall , oder wenn Sie eecummings bevorzugen, ersetzen sie alle ohne die " Case Sensitive "-Box in einem Schlag nicht überprüft. TextWrangler zeigt Ihnen die ganze Liste der geänderten Dateien und ermöglichen es Ihnen , um die Änderungen einmal abgeschlossen durchsuchen :
[ [ | { {
https://i.imgur.com/tJpf9LD.png } }]]
Sie wollen auch alle Instanzen "FOO " ersetzen " BAR ". Dies ist die 3-Buchstaben- Bezeichnung für Ihre Münze , wie BTC oder PPC . Schließlich müssen Sie den Namen des foocoin - qt.pro in der Hauptquellordnermanuell ändern. Hey ... das beginnt , zusammen zu kommen , nicht?
==== Ports und Netzwerkänderungen====
Ok, jetzt müssen wir die neue Münze eine eindeutige Port-Bereich zu verwenden, um zu geben. Sie werden zwei Anschlüsse, einen für die RPC- Anschlüsse ( für Bergleute , eine Verbindung zu ) und eine für P2P- Verbindungen müssen . Sie können eine gute Liste der reservierten Ports finden Sie hier:
http://en.wikipedia.org/wiki/List_of...P_port_numbers meisten irgendwelche Ports funktionieren wird vorausgesetzt, sie sind 1 : Über Port 1024 und 2: nicht durch etwas anderes verwendet . Ich würde etwas in den hohen Zahlen deuten darauf hin , gute Beispiele sind 56679 und 56680 oder 12365 und 12366 .
Für dieses Beispiel werden wir 55883 und 55884 für RPC für P2P nutzen . In den foocoin Quellen werden diese Ports bereits eingestellt , so gehen Sie vor und ändern Sie sie mit einem Texteditor Ihrer Wahl.
Ändern Sie den RPC/P2P Hafen in den folgenden Dateien :
'' ' src / bitcoinrpc.cpp :''' (RPC PORT)
LINE 2893 : ip :: tcp :: Endpunkt Endpunkt ( BindAddress , GetArg ( " - rpcport " , 55883 ));
LINE 3169 : if ( d.connect ( GetArg ( " - rpcconnect ", " 127.0.0.1 ") GetArg ( " - rpcport ", " 55883 " ))! )
'' ' src / init.cpp ''' : (P2P PORT + Testnet -Port)
LINE 235 " -port =
" + _ (" Hören Sie auf Verbindungen (Standard: 55884 oder Testnet : 45884 ) " ) + " \ n" +
Sie können die Testnet Port an jedem anderen beliebigen Port gesetzt , aber denken Sie daran , was Sie es eingestellt .
'' ' src / init.cpp :''' (RPC PORT)
LINE 271 " - rpcport = " + _ (" Hören Sie auf JSON-RPC -Verbindungen auf (Standard: 55883 ) " ) + " \ n" +
'' ' src / protocol.h :''' ( Testnet Hafen + P2P- PORT)
LINE 22 Rück Testnet ? 45883 : 55884 ;
Sie können auch einen ersten "Samen -Knoten" oder immer an System, das die neue Münze Brieftaschen kommen online wird für zusätzliche Adressen zu überprüfen:
'' ' src / net.cpp :'''
LINE 1000 {" einige Website-Name ", " somewebsite.org oder ip xxxx "},
==== Münzen pro Block / Block- Intervalle / Max. Anzahl von Münzen ====
Diese Änderungen sind auch ziemlich einfach. Ändern Sie die folgenden Codezeilen in den folgenden Dateien:
'' ' src / main.cpp :''' (Anzahl der Münzen pro Block vergeben )
LINE 831 int64 nSubsidy = 1 * COIN ;
'' ' src / main.cpp :''' ( * sollte * Wie Blöcke gefunden werden und wie oft Schwierigkeiten retargets )
LINE 837 static const int64 nTargetSpacing = 120 / / FooCoin : 2 -Minuten-Blöcken
LINE 836 static const int64 nTargetTimespan = 1 * 24 * 60 * 60 / / FooCoin : 1 Tage
In diesem Beispiel wollen wir unsere Münze, um alle 2 Minuten produzieren Blöcke 1 Münze und neu einstellen Schwierigkeit einmal pro Tag (1 Tag x 24 Stunden x 60 Minuten x 60 Sekunden). Sie können diese anpassen , aber wissen, da dies ein Klon Scrypt und wir sind nicht die Änderung der Start Schwierigkeit diese Zielrate wird bis in die Hash- Zinsniveau auf dem neuen Münze aus verzerrt sein . Dies ist schwierig Zeug und ich verstehe nicht ganz, alle es noch nicht.
'' ' src / main.h ''' : ( Anzahl der Münzen immer und Geschätzte Anzahl der Blöcke pro Tag)
LINE 43 static const int64 MAX_MONEY = 10000 * COIN / / maximale Anzahl von Münzen
LINE 550 Rück dPriority > COIN * 720/250 / / 720 Bausteinen pro Tag.
Sie müssen , um etwas Mathematik zu tun , um herauszufinden, Ihre Blöcke pro Tag Ziel auf, wie viele Münzen, die Sie erstellen , welche über den Zeitraum und wie weit Ihre Bausteine sind möchten. Ich werde nicht die ganze Arbeit für Sie ! Diese Münze wird gesetzt , um 1 Münze Blöcke alle 2 Minuten , Targeting 720 Blöcke pro Tag durch ein Maximum von 10.000 Münzen, die bedeutet, wenn Fest abgebaut , wird es von Münzen in einer Woche laufen .
==== Adresse Anfangsbuchstabe / Zahl ====
Die erste Ziffer oder den Buchstaben der Adresse des neuen Münze wird von einem Basis -58 Code bestimmt. Sie können eine Liste aller verfügbaren Optionen finden Sie hier: https://en.bitcoin.it/wiki/Base58Check_encoding Um Ihre Münze Adresse edit dies ändern :
'' ' src/base58.h :'''
LINE 280 PUBKEY_ADDRESS = 38 , / / Stellen Sie die Adresse hier erste Bit
==== Icons und Splash Images ====
Sie werden alle von den Stütz Bilder und Symbole für die Brieftasche in der '' ' src / qt / res ''' Ordner. Es gibt zwei Ordner mit Symbole, die Sie achten sollten :
[ [ | { { https://i.imgur.com/uTDamJq.png } }]]
und
[ [ | { { https://i.imgur.com/2wJUutr.png } }]]
Foo und Bar Münzen sowohl den Standard Litecoin Bilder. Sie sollten ein Bildbearbeitungsprogramm Ihrer Wahl (Ich mag Photoshop CS3 , aber GIMP ist auch schön ) , um die Bilder zu bearbeiten. Wenn Sie abgerundeten Icons / Bilder möchten, verwenden Sie transparent. Png -Dateien. Auch vergessen Sie nicht, ein . Ico (Windows / Linux) und eine . Icns (Mac) Icon-Datei für Ihr Programm zu generieren. Eine tolle Webseite Ich mag , um für diesen Einsatz ist hier: http://iconverticons.com/
Merkel Hash === ===
Die Merkel -Hash ist die Wurzel des Netzwerks Ihres Münze . Es ist das Hash, der alle Blöcke gegen gemessen werden und die Grundlage für den Bergbau eine Genese Block . Meine Methode ist es, eine Münze zu bekommen und dann die Arbeit am Testnet das Hauptnetz durch den Bau und die Prüfung in einer inszenierten Progression. Die Merkel -Hash ist nicht wirklich das erste, was Sie aber ändern.
==== Epoch Zeit ====
Seit Mitternacht UTC am Neujahrstag 1970, hat Unix ( oder Epoch oder POSIX) Zeit verwendet, um verschiedene Systemaufrufe und Funktionen der Unix-Systeme (und viele andere Standard) zu koordinieren. Da diese Art von Zeit ist einfach Sekunden und nicht für Schaltsekunden ausmachen, dessen eine einfache Möglichkeit, einzigartige zeitabhängige Werte für die Programmierung zu berechnen. Zu diesem Zweck ist das erste, was muss man beim Bau einer neuen Münze verändern die Basiszeit für die Geburt der Münze oder der Entstehung der Medaille.
Dies wird an zwei Stellen im Code , eine für das Testnetz gesetzt :
'' ' src / main.cpp :'''
LINE 2023 block.nTime = 1300000000 ;
und eine für den Haupt- net:
'' ' src / main.cpp :'''
LINE 2017 block.nTime = 1300000000 / / epochtime
Sie können die aktuelle Epoche Zeit aus: http://www.epochconverter.com/ oder Sie können es von der Kommandozeile der meisten * nix -Systeme mit diesem Code zu generieren:
$ Date +% s
$ 1369590088
Es ist üblich, auch diese Codezeile ändern, um eine Schlagzeile vom Tag der Schöpfung Münze , um sie an die block.nTime mit einigen Menschen lesbare Bit beziehen :
'' ' src / main.cpp :'''
LINE 2005 char * pszTimestamp = "Traditionell legt man etwas rechtzeitig hier zeitgleich mit der Epoche " ;
Nun bemerken die anderen Linien in der Nähe der block.nTime , werden sie block.nNonce genannt . Ein " Nonce " ist eine Maßeinheit, die einzigartig ist und auftritt, nachdem die nTime eingestellt. Der Code verwendet nTime + nNonce zu formulieren und zu validieren, Zeitstempel für die Blöcke und Transaktionen. Dies ist eine sehr grobe Übersicht, wie das wirklich funktioniert , aber ich hoffe, es gibt Ihnen eine Idee. Wir werden in einem Moment zurück auf die nNonce kommen, wenn wir eine Mine genesis -Block.
==== Erstellen Sie einen Hash Merkel ====
Gott sei Dank, dieses Forum Beitrag: https://bitcointalk.org/index.php?to...449 # msg2035449 gibt uns eine Methode, um die Merkel -Hash -Funktion über Testnetz der Münze zu erzeugen. Gerade jetzt wäre ein guter Zeitpunkt , um das folgende zu tun , und kopieren Sie die Dateien aus, um Ihre Github -Repository sein :
barcoin % git add -A *
barcoin % git commit -m " Änderungen "
barcoin % git push origin master
Ist es nicht ein gutes Gefühl zu wissen, dass Sie mit Github bist wie ein Profi ?
==== Erste Körperbau ====
Jetzt haben Sie eine neue Kopie mit allen Ihren Schnitt und Einfügen auf Github hochgeladen haben, sind wir bereit, eine Kopie unserer Kommandozeilenversionder Münze zu bauen :
barcoin % cd src /
barcoin / src make-f % makefile.osx USE_UPNP = - (oder wenn Sie makefile.unix auf Linux / BSD / etc sind )
Der Code sollte sauber zu bauen, wenn du nur geändert , was Sie soll und Sie ahve die richtigen Abhängigkeiten installiert . Sie werden am Ende mit einer einzigen ausführbaren Datei namens der Name der Münze mit Anzeige auf Ende, wenn Sie auf Linux (dh barcoin ( osx / windows ) barcoind (Linux) bist. " Stripping " der zusätzliche Code wird eine kleinere Datei zu erstellen wenn Sie dies wünschen :
barcoin / src % barcoin Streifen ( fügen Sie die d auf Linux, barcoind )
Jetzt wollen wir barcoin von der Befehlszeile mit der Option- Schalter Testnet wie so zu laufen :
barcoin / src % . / barcoin - Testnet ( fügen Sie die d auf Linux, . / barcoind )
Es wird sofort scheitern bei der ersten Ausführung , werfen einen Fehler wie so :
Assertion failed : ( block.hashMerkleRoot == uint256 ( "0x" ) ), Funktions LoadBlockIndex , Datei main.cpp , Zeile 2031 .
zsh : Abbruch / barcoin .
Wir haben jetzt eine Hash Merkel warten ... , aber wo? Die im " Application Data "-Verzeichnis Ihrer Münze . Auf Linux , das ist in Ihrem Home-Ordner , dann ein coinname dergleichen. :
~. / barcoin .
Auf OSX , es wird in Ihrem Ordner Library sein :
/ Users / Benutzername / Library / Application Support / barcoin
Wenn Sie es grafisch sehen wollen, halten Sie die Option -Taste und klicken Sie auf Go -Menü im Finder , dann wählen Sie Application Support und die barcoin -Ordner. Unter Windows wird es in der Application Data Roaming Ordner :
c: \ Users \ Benutzername \ AppData \ Roaming \ barcoin
In diesem Ordner finden Sie ein paar Dateien zu finden - das ist auch der Ordner können Sie Ihre Münze conf -Datei setzen, wenn wir bereit sind, um zu gewinnen, es ist so daran erinnern, wie Sie hier. . Öffnen Sie nun Debug log , und es wird so aussehen:
[ [ | { { https://i.imgur.com/H9l4OMl.png } }]]
Dank Tyrions erstaunlich hilfreich Post, können wir diese Fehler entziffern löschte etwa so:
b1753ec3845a48ddc4618bc595af6dc89dac328cd48f9f8db1 78df5dd3b302fc Hash -Block unter Verwendung des nicht -existent Merkel , bezogen auf das pzTimestamp von Main.cpp
00000000000000000000000000000000000000000000000000 00000000000000 Genesis Block , nicht gut , weil alle nNonces werden auf 0 gesetzt in main.cpp
2fc1b7ef46270c053711fbae934cf7f83378efd4b3e1580794 51d9c6c90e4700 Gültig Merkel Hash , die unter Verwendung des Epochenzeit in main.cpp
Jetzt nehmen Sie die gültigen Hash Merkel und legen Sie es in main.cpp :
'' ' src / main.cpp '''
LINE 2031 assert ( block.hashMerkleRoot == uint256 ( " 0x2fc1b7ef46270c053711fbae934cf7f83378efd 4b3e158079451d9c6c90e4700 "));
Genesis === Blocks ===
Dang , sind wir mit Gas kochen jetzt was? Wie kann man mir ein Genesis -Block ? Zum Glück ist der Code ist bereits in der Quelle nur , dass so ärgern Sie sich nicht zu tun. Wer bekommt die ersten Münzen ? Nun, niemand wirklich - es gibt einen Weg , es zu tun : https://bitcointalk.org/index.php?to...801 # msg2038801 aber persönlich lasse ich sie auf den Cyberspace als ein Zeichen von gutem Karma , um die Bit- Götter in der Kirche der Entwicklung ( FinShaggy , das heißt, Sie , Kumpel. )
==== Testnet Genesis -Block ====
Ok , jetzt nicht nur noch brauchen, um erneut hochladen zu Github , denn wir müssen Genese Blöcke für unser Netzwerk ersten generieren. Mit der Merkel -Hash im Ort, diese Zeile :
'' ' src / main.cpp '''
LINE 2034 , wenn (true && block.GetHash ( !) = HashGenesisBlock )
wenn wahr ist ( wie oben) eingestellt wird einen genesis Block beim nächsten Mal das Programm ausgeführt Mine - beginnend mit der nNonce im Code (0) . Lassen Sie den Code neu kompilieren mit der neuen Merkel Hash:
barcoin / src $ make -f makefile.osx USE_UPNP = - (oder Unix , was auch immer . )
Recompilation sollte ziemlich schnell , da die meisten Dateien bereits gebaut. Sobald es fertig ist , starten Sie es wieder mit diesem Befehl:
barcoin / src $ . / barcoin - Testnet
Sie werden hören, Festplatte zu starten , Churn und es wird scheinen, wie die Münze in das Fenster eingefroren - eine Genese Block für die Testnet Grundlage Ihrer Arbeits frisch erzeugten Hash Merkel aber es ist nicht eingefroren , seine Bergbau. Wenn Sie die '' ' debug.log ''' öffnen Sie diese in Aktion zu sehen :
[ [ | { { https://i.imgur.com/DiOPE23.png } }]]
Ist das nicht raffinierte ? Seine Hashing einen Block glücklich ist jeder nonce tickt durch . Wie lange wird das dauern? Auf einem i7 -2600 kann 5-10 Minuten dauern. Auf einem Core2Duo (wie mein iMac ) sind es 20-30 Minuten dauern , vielleicht auch länger . Lass es einfach sein Ding , und gehen Sie bekommen einige Zwerge - schließlich wird es eine, die es mag zu finden. Dieses Mal wird es um die '' ' testnet3 ''' Ordner unter Ordner conf Ihre Münze zu schreiben in einer Datei namens '' ' debug.log :'''
Assertion failed : ( block.GetHash () == hashGenesisBlock ), Funktions LoadBlockIndex , Datei main.cpp , Zeile 2065 .
zsh : . abbrechen / barcoin - Testnet
[ [ | { { https://i.imgur.com/88vYRuy.png } }]]
Ah ha! Sehen Sie es da? Es gibt eine noonce und eine Genese Block Hash , reif für das Rupfen !
block.nNonce = 440824
block.GetHash = 5813d4cfab0eeda94a15d11c5e7d6895e667fbbe67c59ef9a1 b3bc232c9a0b7f
Jetzt setzen diese in die Datei main.cpp :
'' ' src / main.cpp :'''
LINE 1984 hashGenesisBlock = uint256 ( " 0x5813d4cfab0eeda94a15d11c5e7d6895e667fbb e67c59ef9a1b3bc232c9a0b7f ");
Ja, Sie brauchen , um die 0x vor den Hashes lassen . Sie müssen auch die nNonce eingeben:
'' ' src / main.cpp :'''
LINE 2024 block.nNonce = 440824 ;
Beachten Sie, dass die Abschnitte der main.cpp Datei, die wir gerade bearbeitet entsprechen dem Testnet und wir haben nicht das Haupt net ganz fertig . Das ist, weil an diesem Punkt gehe ich normalerweise zwei Systemen und auf der Testnet laufen, um sicherzustellen, dass sie Münzen abbauen und dann bewege ich mich auf die Haupt Netz. Lets speichern unsere Änderungen , und laden Sie sie auf Github und dann werden wir weitergehen , um Bergbau auf der Testnet :
barcoin % git add -A *
barcoin % git commit -m " Änderungen "
barcoin % git push origin master
==== Mining Testnet Münzen ====
First things first, wieder aufzubauen ausführbare Ihre Münze auf Ihrem lokalen PC:
barcoin / src make-f % makefile.osx USE_UPNP = - ( . oder Unix , was auch immer)
Jetzt kommt der Teil, wo Sie zwei Computer mit unterschiedlichen IP-Adressen benötigen . Ich diese einfach mit einem Linux VPS und meinem Heim-PC zu tun zu finden, so das ist mein Beispiel. Zwei Maschinen auf einem LAN arbeiten sollte , und ich glaube 2 oder mehr virtuelle Maschinen sollten auch so lange wie Sie in der Lage , mit den IP-Adressen halten arbeiten . Eine Verbindung zu Ihrem zweiten Maschine und bauen Datei der Münze , so wie wir zuvor - da Sie den Code in Github gesendet werden, können auch mit Ihrem neuen Elite github skillz :
$ Git clone https://github.com/barcoin/barcoin.git
Klonen in den barcoin
$ Cd barcoin / src
barcoin / src $ make -f makefile.unix (ich bin auf Linux hier).
barcoin / src $ Streifen barcoind
Jetzt bin ich bereit, es zu laufen - in Testnet -Modus und mit einem Anschluss an meine " andere" Computer. Das ist etwas schwierig , weil man die Münze auf beiden Computern mit der '' Start " -connect = xxxx '' ' Variable , die jeweils mit der IP des anderen PC:
'' ' PC zu Hause - iMac :'''
barcoin / src % . / barcoin - Testnet -connect = 9.5.6.5 &
'' ' VPS - Linux :'''
barcoin / src $ . / barcoin - Testnet - connect = 66.77.32.56 &
Fügen Sie die & an den Befehl ermöglicht es , im Hintergrund zu verarbeiten und ermöglichen es Ihnen , auch weiterhin die Münze Befehle ohne ein zweites Konsolenfenster zu ernähren.
. Beim ersten Start , wird es nicht etwa mit einer conf -Datei beschweren :
Fehler : Sie müssen die rpcpassword = in der Konfigurationsdatei:
/ Users / Benutzername / Library / Application Support / barcoin / barcoin.conf
Wenn die Datei nicht existiert , erstellen Sie es mit dem Besitzer lesbare -only Dateiberechtigungen.
Es wird empfohlen, die folgenden Zufallspasswort zu benutzen:
rpcuser = barcoinrpc
rpcpassword = 6WgBVzyEBaFJodzyKt69y8VaQBagPSGD5kHptn YGwjt5
( brauchen Sie nicht , das Passwort zu erinnern)
Wenn die Datei nicht existiert , erstellen Sie es mit dem Besitzer lesbare -only Dateiberechtigungen.
Erstellen Sie diese Datei , in welchem Format auch immer Sie bevorzugen, nano funktioniert gut für diese und weisen eine RPC- Benutzer / Passwort . Wenn Sie CGMiner / CPUMiner verwenden, um solo später abbauen wollen , machen diese etwas, das Sie sich erinnern. Wenn Sie planen, nur die Kunden in Bergmann gebaut für Solo- Bergbau, gerade geschnitten und fügen Sie den automatisch generierten Informationen . Dies ist die gleiche Datei können Sie einige der Befehle in bitcoin.conf eingerichtet , hier ist eine gute Referenz : https://en.bitcoin.it/wiki/Running_B...iguration_File
* Auf OSX diese Datei :'' ' / Users / Benutzername / Library / Application Support / barcoin / barcoin.conf '''
* Auf Linux diese Datei '' ' ~ / .barcoin / barcoin.conf '''
* Unter Windows ist diese Datei '' ' C: \ Users \ Benutzername \ AppData \ Roaming \ barcoin \ Barco in.conf '''
Randbemerkung: weil ich einen VPS dafür , glaube ich nicht wirklich brauchen, um über die Port-Weiterleitung an diesem Ende zu kümmern. Auf dem Heim-PC , werden Sie wollen , um den Anschluss, den Sie für P2Pport in der Cut & Paste Abschnitt, um Sie mit dem PC wählte weiterzuleiten. In diesem Beispiel ist der Port 55884 .
Starten Sie nun die Münze wieder :
'' ' PC zu Hause - iMac :'''
barcoin / src % . / barcoin - Testnet -connect = 9.5.6.5 &
'' ' VPS - Linux :'''
barcoin / src $ . / barcoin - Testnet - connect = 66.77.32.56 &
Jetzt ist eine gute Zeit, um in der Befehlszeile Syntax -API-Aufrufe für die Interaktion mit dem Bitcoin- Client aus dieser Wiki-Seite auffrischen : https://en.bitcoin.it/wiki/Original_...API_Calls_list
Zuerst werden Sie senden möchten :
barcoin / src % . / barcoin getinfo
Es sollte so etwas zurückzugeben:
'' ' PC zu Hause - iMac :'''
barcoin / src % . / barcoin getinfo
{
"version" : 1000000 ,
" Protocol " : 60001 ,
" walletversion " : 60000 ,
"Balance" : 0.00000000 ,
"Blöcke" : 0,
" Verbindungen" : 1,
" Proxy " : "",
" Schwierigkeit " : 0.00024414 ,
" Testnet " : true ,
" keypoololdest " : 1369621665 ,
" keypoolsize " : 101,
" paytxfee " : 0.00000000 ,
" mininput " : 0.00010000 ,
" Fehler ": ""
}
Die andere Seite sollte gleich aussehen und die Zahlen sollten übereinstimmen. Beachten Sie, dass Testnet nicht Checkpoints zu überprüfen , also sollten sie ziemlich leicht zu verbinden ( oooh , das ist die Frage 1BTC , aber mehr dazu in ein wenig ... die andere Seite :
'' ' VPS - Linux '''
/ barcoin / src $ . / barcoind getinfo
{
"version" : 1000000 ,
" Protocol " : 60001 ,
" walletversion " : 60000 ,
"Balance" : 0.00000000 ,
"Blöcke" : 0,
" Verbindungen" : 1,
" Proxy " : "",
" Schwierigkeit " : 0.00024414 ,
" Testnet " : true ,
" keypoololdest " : 1369622277 ,
" keypoolsize " : 101,
" paytxfee " : 0.00000000 ,
" mininput " : 0.00010000 ,
" Fehler ": ""
}
Lovely, richten sie sich und haben jeweils eine einzelne Verbindung. Jetzt können wir einen von ihnen zu machen (oder beides) beginnen mit der Erzeugung von Münzen mit dem folgenden Befehl :
barcoin / src % . / barcoin setgenerate echte 16
Die Nummer ist , wie viele Threads des Prozessors Sie widmen , an der wahnsinnig niedrigen Schwierigkeits wir beginnen mit will, sollte dies viel zu ein paar Blocks zu erzeugen. Sie werden die Ergebnisse sehen in Echtzeit , sondern müssen Sie den folgenden Befehl und bewerten die Info:
barcoin / src % . / barcoin getmininginfo
{
"Blöcke" : 0,
" currentblocksize " : 1000 ,
" currentblocktx ": 0 ,
" Schwierigkeit " : 0.00024414 ,
" Fehler " : "",
" erzeugen " : true ,
" genproclimit " : 16,
" hashespersec " : 1432
" networkhashps " : -9223372036854775808 ,
" pooledtx ": 0 ,
" Testnet " : true
}
Erfolg! Seht zu, dass '' ' hashespersec ''' ? Die interne Scrypt Bergmann macht jetzt sein Ding und machen Sie einige Blöcke . Sie müssen den Befehl erteilen getmininginfo ein paar Mal , bevor sie beginnt, sich in der Blockanzahl oben zählen . In wenigen Minuten sollten Sie in der Lage sein zu sehen :
barcoin / src $ . / barcoind getmininginfo
{
"Blöcke" : 1,
" currentblocksize " : 1000 ,
" currentblocktx ": 0 ,
" Schwierigkeit " : 0.00024414 ,
" Fehler " : "",
" erzeugen " : true ,
" genproclimit " : 16,
" hashespersec " : 1376
" networkhashps " : 32,
" pooledtx ": 0 ,
" Testnet " : true
}
Woah Hunde , haben wir Blöcke . Jetzt überprüfen, ob Ihre anderen sieht die Blöcke , indem Sie eine getinfo auf Ihrem '' ' andere ''' Computer :
barcoin / src % . / barcoin getinfo
{
"version" : 1000000 ,
" Protocol " : 60001 ,
" walletversion " : 60000 ,
"Balance" : 0.00000000 ,
"Blöcke" : 1,
" Verbindungen" : 1,
" Proxy " : "",
" Schwierigkeit " : 0.00024414 ,
" Testnet " : true ,
" keypoololdest " : 1369621665 ,
" keypoolsize " : 101,
" paytxfee " : 0.00000000 ,
" mininput " : 0.00010000 ,
" Fehler ": ""
}
Nun, whatta ya know ? Whatta ya sagen, wir graben einige MainNet Münzen ?
==== Haupt Net Genesis -Block ====
Also wirklich alles, was wir jetzt tun müssen, ist main.cpp Update mit einer neuen Epoche der Zeit , in der Hauptnettoquerschnittdieses Mal und mir ein Genesis -Block die ähnlich wie die Art und Weise haben wir es auf Testnet . Erstens, stoppen Sie die coind aus sowohl auf dem lokalen und Remote- Computern mit dem Befehl :
barcoin / src % . / barcoind stoppen
Barcoin stoppt
Als nächstes gehen Sie zurück zu Ihrem Entwicklungs-PC und bearbeiten main.cpp mit einem neuen block.nTime :
'' ' src / main.cpp :'''
LINE 2017 block.nTime = 1369623856 / / epochtime
Jetzt neu kompilieren die Münze wieder aus der Befehlszeile :
barcoin / src make-f % makefile.osx USE_UPNP = - ( . ! oder Unix , was auch immer, ha)
Jetzt laufen die Münze wieder, aber dieses Mal nicht die Option- Testnet Schalter:
barcoin / src % . / barcoin &
Es wird wieder scheinen eingefroren werden, während es Minen die Genese Block und der Prozessor wird wahrscheinlich auf 100 % Auslastung zu gehen. Seien Sie geduldig , dieser nahm Satoshi 6 Tage oder etwas Scheiße , oder? Auch, wenn Sie einen Mac haben, beobachten sie mit dem System Log Viewer Mine ist ziemlich lustig - und dann Erfolg:
[ [ | { { https://i.imgur.com/Elpzv6F.png } }]]
Nun , wir haben nur das gleiche zu tun , wie wir auf der Testnet getan hat, und diese Änderungen vornehmen , um main.cpp :
'' ' src / main.cpp :'''
LINE 32 uint256 hashGenesisBlock ( " 0xbf9385c680c3a7aec778b6dcf87dbf b105369d55143fc99ebe86f469cd53ddca ");
LINE 2019 block.nNonce = 1345972 ;
LINE 2034 , wenn (false && block.GetHash ( !) = HashGenesisBlock )
==== Checkpoints ====
Ändern Linie 2034 auf false wird Kunden aus versuchen, ihre eigene Genese Block Hash sollte etwas schief sein, zu halten. Eine weitere Datei zu ändern:
'' ' src / checkpoints.cpp '''
LINE 27 (0, uint256 ( " 0xbf9385c680c3a7aec778b6dcf87dbfb105369d5 5143fc99ebe86f469cd53ddca " ) )
Dies ist der " Trick ". Angemeldet sagte ich , gab es einen Trick? Das ist es. Hash 0 in dieser Datei muss auf die Entstehung Block Hash eingestellt werden , so tun es und freuen sich , wie Sie schon jetzt fast die Erstellung Ihrer Klon fertig! Sollten Sie Ihre Münze " echt " werden Sie diese Datei in der Zukunft überdenken und fügen anderen Kontrollstellen , um es wollen - aber das ist ein bisschen wir für das Ende der Führungs sparen werde . Lets schicken unsere Änderungen an Github , bevor wir zu bauen :
barcoin % git add -A *
barcoin % git commit -m " Änderungen "
barcoin % git push origin master
Ok , wir sind bereit , auf der ersten PC neu zu erstellen:
barcoin % cd src /
barcoin / src make-f % makefile.osx USE_UPNP = - ( . oder Unix , blah ... )
Streifen barcoin
Jetzt auf dem zweiten PC (vorausgesetzt, seine Linux hier):
~ $ Cd barcoin
barcoin $ git pull