Kann die Bitcoin-blockchain beseitigen die Notwendigkeit für Trusted Computing im Smart-Verträge?

Lassen Sie mich Vorwort dies sagen, dass ich bin ein Anfänger, aber das ist mein grobes Verständnis, wie Bitcoin ist blockchain funktioniert. (Dies ist weitgehend auf blog-Beiträge wie diese ein.) Wenn Eine person will, um eine bestimmte Menge übertragung von Bitcoin zu person B, unterschreibt er eine Nachricht, die die übertragung autorisiert mit seinem privaten Schlüssel. Ein Minderjähriger kann überprüfen Sie die Nachricht, und mit einem Programm ausführt, eine bestimmte mathematische operation, die überprüfen können, ob Eine person wirklich die Nachricht signieren. Aber es ist die Frage, wie wissen wir, dass die miner haben wirklich die rechnerische Arbeit benötigt, um die Signatur zu überprüfen? Dieses Problem ist durch ein so genanntes "proof-of-work" - Protokoll, in welchem der Bergmann nachweisen kann, dass er die überprüfung der Berechnung.

Ich wurde daran erinnert, dass all dies, wenn Anhörung über den Begriff der "äußeren Staat-Verträge" - eine Art " Smart Vertrag beschrieben kurz unter der 35-Minuten-Marke von diesem video und in mehr detail in diesem Bitcoin wiki-Artikel. In ein externes state-Vertrag, bestimmte Streitigkeiten über die objektiven Eigenschaften der Welt gelöst werden können, automatisch, anstelle von Vertrauen ein Dritter Mensch, den Schiedsrichter zu entscheiden ziemlich. Zum Beispiel, Vertrag angeben konnte, dass im Falle einer Streitigkeit über eine Sport-Wette, in der ein computer-Programm (mit source-code angegeben im Vertrag) wäre automatisch ausgeführt, berät einen Sport-Datenbank ermittelt, wer gewann die Wette, und der bitcoin wird automatisch übertragen, entsprechend. Aber die Bitcoin wiki-Artikel beschreibt ein Problem mit diesem: wie bestimmen Sie, dass der computer-Programm, das soll zur Beilegung der Streitigkeit hat, tatsächlich ausgeführt worden ist, und wenn ja, ob die Ausgabe des Programms gemeldet wird ziemlich durch den computer, lief es? Der Artikel schlägt vor, eine oder mehrere "Vertrauenswürdige Computer", bekannt als Orakel, dem beide Parteien Vertrauen, um den code auszuführen richtig und nicht falsch darstellen, die Ausgabe.

Aber es fällt mir auf, dass das Problem mit externen Staatliche Verträge ist Analog zu der Frage die ich oben beschrieben habe ist gelöst mit der blockchain. Warum kannst du nicht lösen, es den gleichen Weg in diesem Fall? Das heißt, nur als proof-of-work-Protokolle können verwendet werden, um zu demonstrieren, dass ein miner lief der code, der bestimmt, ob eine Unterschrift authentisch ist, warum kann man nicht machen, Bergleute führen dispute-resolution-code für den externen Staatliche Verträge, und bestimmen Sie dann, ob Sie wirklich lief Sie den code mit proof-of-work-Protokolle? Das würde beseitigen die Notwendigkeit für eine Vertrauenswürdige Computer.

Gibt es irgendeinen signifikanten Unterschied zwischen den zwei Fällen würde, dass diese nicht praktikabel? Hat dies schon gemacht?

Jegliche Hilfe würde sehr geschätzt werden.

Vielen Dank im Voraus.

+345
Ben Etherington 19.01.2015, 06:16:48
15 Antworten

In der original-whitepaper von Satoshi schlägt die Schaffung eines timestamp-server zu authentifizieren, dass Bitcoin-Blöcke wurden nicht erstellt, die später als zu einem bestimmten Zeitpunkt. Hat diese Funktion schon mal umgesetzt oder geplant umgesetzt werden? Warum sollte der timestamp-server nützlich sein, um den Bitcoin-client/Protokoll/community?

+976
LLIMEL 03 февр. '09 в 4:24

Wie andere erwähnt haben, diese sind mining-pools, nicht-Bergleute.

Großen mining-pools bieten den Vorteil, dass kleine Bergleute um mehr zu verdienen regelmäßiges Einkommen, was fördert die Teilnahme an bitcoin-mining und stärkt das bitcoin-Netzwerk.

Sie sind auch eine Bedrohung, denn Sie können missbraucht werden, oder DDOSed von einer Partei, die dies wünschen, eine >50% Attacke.

Eine temporäre >50% Angriff aus einem großen pool übernahme durch einen hacker oder DDOSed ist eine viel kleinere Bedrohung für bitcoin als eine Partei, die den Erwerb von mehr als 50% des Netzwerk-hash-rate durch Ihre eigene hardware und die Möglichkeit zur Durchführung einer permanent/langfristig >50% Angriff, also mining-pools, durch die Erhöhung der Beitrag der ehrliche Bergleute, um die Netzwerk-hashing rate, profitieren bitcoin mehr als Sie bedrohen es.

Könnte das theoretisch integriert werden-mining-software zur Verringerung der Gefahr des hijacking-Angriffe und DDOS-Attacken zu, wie die automatische Schaltung ein mining-Maschine in einen anderen pool, wenn die mining-software erkennt bisher bestätigten Blöcke immer unbestätigte oder der mining-pool nicht mehr verfügbar ist, bzw.

+926
Carlos Fonseca 21.06.2015, 01:45:11

Die Schwierigkeit der Anpassung-Algorithmus ist wie folgt (aus dem Quellcode):

unsigned int CalculateNextWorkRequired(const CBlockIndex* pindexLast, int64_t nFirstBlockTime, const Konsens::Params& params)
{
 if (params.fPowNoRetargeting)
 zurück pindexLast->nBits;

 // Limit-Einstellung Schritt
 int64_t nActualTimespan = pindexLast->GetBlockTime() - nFirstBlockTime;
 wenn (nActualTimespan < params.nPowTargetTimespan/4)
 nActualTimespan = params.nPowTargetTimespan/4;
 wenn (nActualTimespan > params.nPowTargetTimespan*4)
 nActualTimespan = params.nPowTargetTimespan*4;

 // Retarget
 const arith_uint256 bnPowLimit = UintToArith256(params.powLimit);
 arith_uint256 bnNew;
bnNew.SetCompact(pindexLast->nBits);
 bnNew *= nActualTimespan;
 bnNew /= params.nPowTargetTimespan;

 wenn (bnNew > bnPowLimit)
 bnNew = bnPowLimit;

 zurück bnNew.GetCompact();
}

Die Einstellung ist nur dann laufen alle 2016 Blocks. Was es tut ist, nimmt der Zeitstempel der block am Anfang der letzten Periode (2016 Blöcke vor) und den Zeitstempel der block kam vor der mit der eingestellten Schwierigkeit. Diese Zeitstempel werden dann verwendet zum berechnen der Menge der Zeit, die verging zwischen dem ersten block in dem Intervall, und der Letzte block in dem Intervall. Dann, die Zeitspanne ist eingespannt zu sein und mindestens 1 Viertel der Ziel-Zeitraum und höchstens 4 mal das Ziel timespan. Zur Berechnung der neuen Schwierigkeit, für dieses Intervall, das Ziel ist, multipliziert mit der tatsächlichen Menge an Zeit, die vergangen, und geteilt durch die gezielte Menge an Zeit.

Da alle Knoten berechnen, das Ziel auf dem gleichen block und den gleichen vorherigen Daten, das Ziel der Berechnung ist deterministisch, und jeder wird auf dem land das gleiche Ziel.

+915
EyeArrow 18.01.2010, 22:59:33

Ich weiß, dass das bitcoin-Gebühr berechnet wird, basierend auf der Anzahl von bytes, die in einer Transaktion (D. H. satoshi pro byte). Aber was sind die bytes berechnet? Die bytes des kodierten/serialisiert Transaktion oder der raw-Transaktion?

Zum Beispiel habe ich die Transaktion unter. Die Größe der raw-bytes ist 192. Die Kodierung(hex) 384. Habe ich eine Gebühr in Höhe von "1" satoshi zu generieren, ist es so, dass ich eine Probe erhalten, was die Größe wird wie. Wäre sicher für mehrere satoshi mit dem raw-Format, um die Gebühr und dann re-make die Transaktion? (z.B. 1000 satoshi * 192 = 192000 satoshi Gebühr).

0100000001433a94862b051af03d6ad033153c937d258f6d501edc35a57b61b855f0b691b022ddb2126b483045022100da9bd107a96990429498df53d963a6b5d26455b180f3742f87c2352805d1bd33022033071d16a9578b765b38d68b51d692c575b9b3ce48e9b93276784e33adfd5a1201210342b992de6ebd9f2d0d522f9559d3ff6388fcdb70095c0f0dfe75811c74437bd1ffffffff01ae130000000000001976a914fafb913a62cce4c017e986d07d9a1c25d30e2ace88ac00000000
+702
iko 05.07.2010, 18:20:35

Ich habe eine Liste von bitcoin-Adressen und private Schlüssel, muss ich schreiben, ein Automatisierungs-script, das prüft, die für das Gleichgewicht in jeder Adresse, und übertragen Sie die balance Fonds auf eine andere bitcoin-Adresse. Meine Frage ist, wie führe ich den fund transfer mit Adresse und privateKey mit nodejs

Vielen Dank im Voraus

+696
Sankalp Kotewar 24.08.2014, 19:23:08

BTC arbeitet als jede Währung. Solange die Leute sehen, schätzen es Wert hat.

Die Dynamik war einfach nur die Neugier der Benutzer hatte... Auch die ganze "Machen Sie freies Geld mit Ihrem computer"- Sache, die gestartet wurde.

Ein großer Einfluss war der berühmte "Wie funktioniert die bitcoins arbeiten" - video sah ich auf vimeo. Das hat MIR für den Anfang zumindest. (Link zur aktualisierte version)

Die algorithmen Ihrer computer löst beim "mining" ist nicht für nichts. Es gibt auch andere Arten von Krypto-Währungen auf dem Vormarsch. Das bemerkenswerteste ist Litecoin. Es verwendet einen anderen Algorithmus. (Scrypt, statt der BTC-Doppel-sha256). Der Punkt, der Litecoin wurde, um Anwender in der Lage, "meine" effizienter auf Ihre CPU.

Ich hoffe, dass dieses etwas Ihre Frage beantwortet.

+464
Tor Flatebo 21.06.2010, 18:13:54

Ich bin auf der Suche nach einer Methode würde es ermöglichen, ein Schlüsselpaar zu werden verändert in einer Weise, die unvorhersehbar auf den ursprünglichen Ersteller.

Also dachte ich mir einen Benutzer erstellt einen key und verpflichtet Sie, indem Sie eine Transaktion, die geschrieben, um die blockchain. Die block-hash-könnte verwendet werden, als eine Quelle von Unberechenbarkeit, um daraus einen neuen Schlüsselpaar. Kann das getan werden, in einer Art und Weise als nur mit dem privaten Schlüssel abgeleitet werden können, berechnet aus dem ursprünglichen privaten Schlüssel und die daraus abgeleiteten öffentlichen Schlüssel berechnet werden kann, ohne den original-oder neuen privaten Schlüssel?

Lassen:

k = vorhandene private Schlüssel
K = vorhandene public key
B = hash hash-block
k' = abgeleitet privaten Schlüssel
K' = abgeleiteten öffentlichen Schlüssel

Gibt es ein paar Funktionen wie das löst das folgende?

K' = FPub(K, B)
k' = FPriv(k, B)

Gibt es irgendwelche Auswirkungen auf die Sicherheit?

Klar werden die neuen öffentlichen Schlüssel abgeleitet werden sollten, nur mithilfe von öffentlichen Informationen (vorhandenen öffentlichen Schlüssel und Skalare).

+412
lasagnamama 17.04.2016, 07:07:30

Ich fange mit bitcoin und auch wenn ich verstehe ziemlich gut, wie die blockchain arbeiten, die seed-Wörter wird von einigen Geldbörsen (MultiBit und Elektrum) geben mir eine Gänsehaut, und Zweifel. Die wichtigste Frage ist: Warum sind Sie sicher? Die Basis für die Frage: die Menschen sind nicht eine gute Quelle von zufälligen Daten, so dass wir die Verwendung von Saatgut Wörter aus einem random-pc-Zeit-Quelle. Dieses Saatgut Wörter sind eine Darstellung einer binären Zahl und den Satz mit 12 Wörtern macht eine 128-bit-hash. Diese Worte stammen aus einem 4096 Wörter Wörterbuch. Das Wörterbuch von Elektron gespeichert ist, in ein python-Skript, zum Beispiel. So können wir sagen, wir wissen, diese 4096 Worten. Ich habe einen seed (12 Worte) aus meiner Brieftasche. Was schützt alles-Netzwerk, von jemandem, der verpasst das Letzte Wort von seinem eigenen Satz 4096 mal zu öffnen 4096 bitcoin wallets? Ich weiß, mit Elektron, wieder zum Beispiel, dass 128 diese 4096 generieren von gültigen Adressen. Was schützt das Netzwerk dann von jemandem öffnen des bitcoin-wallets 128 Kumpels und stehlen alle das Geld? Der Letzte Teil ist einfacher, die Validierung erfolgt online, wie eine Brieftasche überprüfen der Wörter öffnen Sie den privaten Schlüssel, wenn Sie offline arbeiten können?

+390
digitxp 23.06.2014, 01:10:47

Ich lese darüber, wie BitCoin funktioniert für ein paar Wochen jetzt - und ich versuche zu verstehen, unter der Haube, wie Kryptographie funktioniert.

Also werde ich erklären, was ich weiß, im moment - und wenn es jemand könnte es klar, bis für mich? Oder links angeben, die Papiere, die erklären, es ein bisschen besser (ich habe gelesen, die original-bitcoin.pdf-Datei, aber es ist etwas vage)

Szenario:

Ich habe eine Adresse (pk, sk).

Ich habe eine frühere Transaktion tx enthält 1 bitcoin.

Erstelle ich eine neue Adresse (pk', sk'), die ich senden möchten, um die Bitcoins zu.

Ich hash, der den neuen öffentlichen Schlüssel pk' mit der vorherigen Transaktion tx, so dass hash(pk', tx) = h1.

Ich signieren der Hash-Transaktion h1 mit meinem geheimen Schlüssel und einige 'Zufälligkeit' r. Zeichen"sk"(h1, r)

Dann - das wird ausgestrahlt und wird in einem block von einem Bitcoin-miner?


Auch, wenn ich auf senden zwei 0.5 bitcoins pk' würde ich Folgendes tun...

tx1 und tx2 verbunden sind mit 0,5 bitcoins.

Ich habe dann hash-tx1 und tx2 mit dem neuen öffentlichen Schlüssel pk', so dass hash(tx1, pk') = h1 und hash(tx2, pk') = h2.

Ich habe dann Unterschreiben beide hashes mit Hilfe der folgenden Funktion... Zeichen"sk"(h1, h2, r) oder würde es das Zeichen"sk"(h1,r), Zeichen"sk"(h2,r'). (verschiedene Zufälligkeit für jede Signatur)


Dies mag eine dumme Frage sein.. aber ich habe es schwierig gefunden, Klarheit zu erhalten, wie es funktioniert. Ich verstehe auch, dass manche Charaktere (wie i und 0) sind nicht in der hash - bezieht sich dieses auf Basis 58 ?

+323
Sanova 14.02.2017, 06:50:53

Ich habe gelesen, auf die Ripple-Wiki-Seite für Transaktionen über Teilzahlungen. Ich Frage mich, wie eine Teilzahlung Aussehen würde, wenn die Daten gepollt wird über ein Konto? Würde die Transaktion Betrag angezeigt, als was die Zahlung wurde versucht, gesendet werden, oder die Menge, die tatsächlich durch ging? Gibt es Beispiele dafür, wie Teilzahlungen Aussehen und wie sollten Sie behandelt werden durch Gateways?

+306
Mihai Parparita 05.05.2015, 18:56:49

Die zentrale Frage hier ist opcodes. Wenn Ihre Transaktion nicht erforderlich ist, jede neue Skript-Befehle, die Sie sollten in der Lage sein erstellen Sie diese und haben Sie in der block-chain ohne Probleme (Sie werden auch nicht weitergeleitet, weil Sie nicht passieren den isStandard überprüfen, Eligius mining-pool, für ein relais nicht-standard-Transaktionen. Jeder Bergmann wird /akzeptieren/ Sie in Ihren block, Sie einfach nicht weiterleiten, das macht es schwieriger für Ihre Transaktion zu verbreiten.

Aber der Schlüssel ist, wenn Sie brauchen keine neue opcodes, dies erfordert keine änderungen an den core-bitcoin, um zu arbeiten.

+288
tomahawk28 27.11.2019, 00:32:38

Es muss Konsequenzen für den Angreifer, der groß genug für ihn zu fühlen, den Schlag seines eigenen Angriff.

Erstellen der Folge für ihn: Der Wähler (vertrauenswürdigen Knoten/Full Node) hat den bitcoin, und je mehr der bitcoin Knoten hat, desto mehr Stimmrechte (mehr vertrauenswürdig Sie sind). Beispiel, wenn der Angreifer wirklich will, um zu töten die gesamte bitcoin-Netzwerk, muss er mindestens 51% der Bitcoins im Umlauf. Wenn eine bitcoin-Netzwerk ist im Wert von $100 Milliarden. Er hat zu kaufen $50 Milliarden Wert es. Versuchen Sie töten die Netzwerk-und verlieren wird er seinen 50 Milliarden US-Dollar. Ja, andere verlieren wenig Wert, aber er verliert viel mehr Wert, und wir können beginnen ein weiterer kryptogeld.

Es muss nicht eine lineare 1 bitcoin = 1 Stimmrecht. Kann es eine Funktion sein. wie voting power = root2(bitcoin), oder andere Funktionen.

Das einzige problem mit diesem ist, dass die meisten Menschen einen zentralen Knoten (weil Sie entweder mit einem leichten Knoten und wollen nicht verschwenden Ressourcen für die volle node), so dass Ihre Stimmrechte können zentralisiert werden irgendwo und kann verwendet werden, indem der Angreifer zum Angriff (unter der Annahme, dass mehr bitcoin = mehr Stimmrechte). Die Lösung HIERFÜR ist wahrscheinlich die Anwendung einer Verlangsamung der Funktion (wie die Wurzel-Funktion) für die Begrenzung der Stimmrechte. Aber dann kann der Angreifer verwenden viele kleine Wert wallet zu untergraben, das große, zentralisierte Brieftasche. (Alles in Maßen Taktik, zu viel oder zu wenig ist nicht gut) Also wir sollten ebenso untere der Stimmrechte diejenigen, die sehr wenig bitcoin in Ihren Knoten - siehe Bild.

Was passiert also mit den Knoten, die nicht über ein bitcoin? Es wird sowieso schon sinnlos, weil Sie Blutegel aus dem Netz. Ich würde sagen, weisen keine Bandbreiten-und Stimmrecht an allen zu Ihnen, da Sie nicht mit bitcoin und sowieso nur Verschwendung von Netzwerk-Ressourcen. vielleicht lassen Sie es eine niedrige Priorität Referenz, nur um Sie zu etwas nützlich.

Gleiches gilt für die Bergleute. wir weisen ähnliche Funktion wie im Bild. Wir wollen nicht große Bergleute, um die Netzwerk-zentrale und am Ende mit zu viel power, zu verderben das Netzwerk. Seit die bitcoin-community ist durch das Volk und für das Volk; Das ist der Sinn der ganzen Dezentralisierung Sache, nicht wahr? So dass wir nicht bekommen, gemobbt von den großen macht wer will zentralisieren alles. Wir sollten auf jeden Fall begrenzen Sie die große macht, ebenso wie die nutzlosen Menschen, die nicht verwenden bitcoin und leechen aus dem Netzwerk und die Verlangsamung der realen Gemeinschaft als ganzes.

Siehe das Bild unten: bitcoin voting power

Kann dies helfen, den Umgang mit den DDOS-Angriff, wie auch?

+149
subzero 13.06.2017, 07:36:33

Die einzige Brieftasche, die ich finden kann für die Restwelligkeit ist die standard-web-client. Ich weiß nicht, wie die Idee, immer zu Vertrauen, einen web-client mit meinem Schlüssel. Ist es ein nur-lokale-client für das Ripple-Netzwerk? Wenn nicht, gibt es etwas, Verhinderung von einem lokalen client aus entwickelt, oder hat er einfach nicht genug Interesse noch?

+148
Nick Haslam 06.04.2011, 03:55:43

TxIndex

Die meisten Anwendungsfälle erfordern nicht eine tx-index. Die Brieftasche verfolgt, die relevanten Transaktionen (wenn Sie eine Brieftasche). Eine komplette tx-index kann nützlich sein, für block-explorer-wie Schnittstellen oder für die Forschung, etc. Es erfordert einiges an Speicherplatz.

Beschneiden & TxIndex: Sie können nicht verwenden eine txindex mit einem beschnitten blockchain. Beschneiden wegwerfen gescannte Blöcke. Mit einem index verweist auf einen tx in einen block, ist nicht mehr auf Ihrer Festplatte scheint eine Verschwendung.


Beschneiden

Autopprune (-prune=550) ermöglicht Ihnen eine Reduzierung Ihrer historischen blockchain Daten zu einem bestimmten Ziel (in MB, Beispiel wird mit 550, das ist das minimum). Sie können nicht wegwerfen, alle blockiert, da Sie möglicherweise benötigen, um "roll back ein paar block", wenn es eine Kette reorganisation.

Wenn Sie prune=1 (== manueller Modus), können Sie dann manuell bereinigen Ihre blockchain (RPC-Aufruf pruneblockchain <Höhe>) [seit 0.14]

Der einzige Grund, warum alte Blöcke (sagen tiefer 144 Blöcke) ist, damit andere Kollegen von bootstrap die blockchain und zu dienen (gefiltert) Blöcke zu SPV-client. Es gibt wenig "end-user" use case (erwarten, dass die txindex) alte block.

UTXO set

Wichtig zu wissen ist, dass Sie Ihre volle Knoten wird verfolgen alle unverbrauchten Transaktion (nur die sind relevant für die Validierung blocks/der Kette). Diese Datenbank ist (im moment) etwa 2 GB groß und wird (und muss) auch im beschneiden-Modus. Diese Datenbank ist unerlässlich für eine vollständige Knoten.


Standard-Modus

Halten Sie alle Blöcke (bis ~80 GB Speicherplatz). Dies ermöglicht anderen peers, um zu überprüfen, die blockchain und es ermöglicht SPV Kollegen zu bitten, für die entsprechenden Transaktionen in allen möglichen Blöcken. Wenn niemand in diesem Modus ausgeführt werden, die blockchain Geschichte verloren gehen kann (übertrieben).

+136
Trollollit 27.09.2014, 20:49:46

Ich entwickle android-Anwendung mit https ://blockchain.info/api. ich habe Probleme zu verstehen, die die Stichwörter verwendet, die im Ergebnis für https: //blockchain.info/address/$bitcoin_address?format=json.

Kann irgend jemand mir sagen, über die Tasten hilighted. Ich möchte zeigen Benutzer die Transaktion Geschichte. Dokumentation Bezug genommen wird, hilfreich sein. Ich habe auch gelesen https://en.bitcoin.it/wiki/Protocol_documentation aber es war nicht helfen, voll.

enter image description hereDank

+103
Dylan Kilkenny 09.01.2016, 14:45:36

Fragen mit Tag anzeigen