Ich versuche, v0.8.6 des Core-Clients aus source zu kompilieren , um die IDB-Leistung (Initial Blockchain Download) zwischen den Versionen zu vergleichen.
Ich habe eine neue Ubuntu Xenial 16.04-Maschine auf Amazon EC2 erstellt. Ich habe dann die folgenden Befehle ausgeführt (die für Version 0.9.3 und höher ausreichend waren):
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install build-essential autoconf libboost-all-dev \
libssl-dev libtool pkg-config libevent-dev
Zusätzlich für diese spezielle Version lief ich:
sudo apt-get install libdb++-dev libminiupnpc-dev
Ich habe dann die Quelle ausgecheckt und die Kompilierung gestartet:
git clone https://github.com/bitcoin/bitcoin.git
cd bitcoin
git checkout v0.8.6
cd src/
make -f makefile.unix
Ich bin nur daran interessiert, headless zu betreiben bitcoind
, aber ich bin mir nicht sicher, ob es in dieser Version bereits von der Benutzeroberfläche getrennt war.
Ich bekomme folgenden Fehler:
rpcrawtransaction.cpp:241:77: required from here
/usr/include/boost/variant/get.hpp:178:5: error: invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE<false>’
BOOST_STATIC_ASSERT_MSG(
^
makefile.unix:172: recipe for target 'obj/rpcrawtransaction.o' failed
make: *** [obj/rpcrawtransaction.o] Error 1
Interessanterweise kompilieren 0.7, 0.6 und 0.5 erfolgreich, obwohl sie während der IDB hängen bleiben, also ist die Kompilierung vielleicht einfach stillschweigend fehlgeschlagen. Dafür mache ich später einen separaten Beitrag.
Ich vermute, dass ich einige sehr spezifische Versionen von Abhängigkeiten installieren muss, bin mir aber nicht sicher, welche und wie ich vorgehen soll. Ich habe Linux seit Jahren nicht mehr benutzt.
Ich habe immer noch die VM, daher kann ich bei Bedarf weitere Details bereitstellen.
Ich bin offen für alternative Ansätze, sogar mit einer Windows-VM :-)
Sie können das Gitian-Build-System verwenden. Anweisungen zum Erstellen von 0.8.x mit Gitian sind hier verfügbar: https://github.com/bitcoin/bitcoin/tree/0.8/contrib/gitian-descriptors und hier: https://github.com/bitcoin/bitcoin/blob/ 0.8/doc/release-process.md . Mit gitian sollten Sie genau die gleichen Binärdateien erhalten wie die, die veröffentlicht wurden.
sudo /usr/sbin/kvm-ok INFO: Your CPU does not support KVM extensions KVM acceleration can NOT be used
Es sieht so aus, als müsste ich etwas Ausgefallenes wie Ravello verwenden , oder übersehe ich etwas?make-base-vm
Befehle --lxc
auch mit der Option ausführen.Nick ODell wies mich auf die Lösung hin :
Bearbeiten rpcrawtransaction.cpp
und ändern:
const CScriptID& hash = boost::get<const CScriptID&>(address);
Zu:
const CScriptID& hash = boost::get<CScriptID>(address);
Dies war ausreichend, um es zum Kompilieren zu bringen.
Außerdem habe ich den OpenSSL - Patch angewendet, auf den Pieter Wuille hingewiesen hat .
Sie müssen dies manuell tun, da depends/packages/openssl.mk
es nicht mehr existiert und sich der Funktionsname und die Signatur geändert haben. Öffnen Sie einfach src/key.cpp
alles innerhalb der CKey::Verify
Funktionsklammern und ersetzen Sie es durch diese neue Version .
Bisher wurden mehr als 210.000 Blöcke synchronisiert, also gehe ich davon aus, dass das funktioniert hat.
Nick Odell
Sjors Provoost
libboost-all-dev
Version 1.58.0. Ich könnte aber zuerst den Gitian-Ansatz versuchen.Pieter Wuille
Sjors Provoost
Pieter Wuille
Sjors Provoost
LeanMan
LeanMan