Ξεκάθαρα ήταν φάουλ όλων των εμπλεκόμενων που αποφάσισαν το hard fork. Ιδίως αφού το πρόβλημα ήταν σε "εφαρμογή" που έτρεχε πάνω στο Ethereum και όχι στο ίδιο το Ethereum. Ασχέτως ποιοι έφτιαξαν την εφαρμογή.
Αλλά δεν μπορούμε να γνωρίζουμε τι θα είχε συμβεί αν δεν είχε παρθεί αυτή η απόφαση. Μπορεί να είχε εξαφανιστεί το Ethereum έχοντας αυτό το ιστορικό πίσω του.
Θεωρώ ότι προσπάθησαν να διορθώσουν το πρόβλημα με το ελάχιστο δυνατό κόστος για την τότε εποχή, ένα χρόνο μετά την εμφάνιση του Ethereum. Αν κάτι παρόμοιο γινόταν τώρα, νομίζω θα ήταν εντελώς διαφορετική η αντιμετώπιση.
Πάντως υπάρχει και το Ethereum Classic γι'αυτούς που θέλουν να μείνουν πιστοί στο Code is Law.
Κι' αυτό Ethereum είναι, χωρίς πειραγμένο blockchain.
Εμφάνιση 7.036-7.050 από 8330
-
12-03-21, 01:59 Απάντηση: Cryptocurrencies και Blockchain #7036
Τελευταία επεξεργασία από το μέλος spiderman : 12-03-21 στις 02:21.
-
12-03-21, 05:39 Απάντηση: Cryptocurrencies και Blockchain #7037To blog της Ελληνικής κοινότητας του bitcoin
1HeyFM6xMpq8s7BahqEuNPcTedDjhNUsoc
4411 804B 0181 F444 ADBD 01D4 0664 00E4 37E7 228E
-
12-03-21, 08:00 Απάντηση: Cryptocurrencies και Blockchain #7038
-
12-03-21, 10:54 Απάντηση: Cryptocurrencies και Blockchain #7039
Εγώ πιστεύω πως είναι λίγο πειραγμένο.
Αυτών εδώ:
Κώδικας:GetHash() = 0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f hashMerkleRoot = 0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b txNew.vin[0].scriptSig = 486604799 4 0x736B6E616220726F662074756F6C69616220646E6F63657320666F206B6E697262206E6F20726F6C6C65636E61684320393030322F6E614A2F33302073656D695420656854 txNew.vout[0].nValue = 5000000000 txNew.vout[0].scriptPubKey = 0x5F1DF16B2B704C8A578D0BBAF74D385CDE12C11EE50455F3C438EF4C3FBCF649B6DE611FEAE06279A60939E028A8D65C10B73071A6F16719274855FEB0FD8A6704 OP_CHECKSIG block.nVersion = 1 block.nTime = 1231006505 block.nBits = 0x1d00ffff block.nNonce = 2083236893 CBlock(hash=000000000019d6, ver=1, hashPrevBlock=00000000000000, hashMerkleRoot=4a5e1e, nTime=1231006505, nBits=1d00ffff, nNonce=2083236893, vtx=1) CTransaction(hash=4a5e1e, ver=1, vin.size=1, vout.size=1, nLockTime=0) CTxIn(COutPoint(000000, -1), coinbase 04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73) CTxOut(nValue=50.00000000, scriptPubKey=0x5F1DF16B2B704C8A578D0B) vMerkleTree: 4a5e1e
-
12-03-21, 17:39 Απάντηση: Cryptocurrencies και Blockchain #7040
-
12-03-21, 17:47 Απάντηση: Cryptocurrencies και Blockchain #7041"Από την άλλη ακούω: ου δύνασθε Θεώ δουλεύειν και μαμωνά. […]. Οταν ένας πολιτισμός αφήνει το Θεό και βάζει το μαμωνά (παντού το βλέπομε) για ανώτατο αγαθό, summum bonum, καταλαβαίνετε τι πολιτισμός πρέπει να είναι αυτός. Διαλέξαμε, φαίνεται, τον πολιτισμό που μας άξιζε. […]"
Ζ.Λορεντζάτος, COLLECTANEA
-
12-03-21, 17:48 Απάντηση: Cryptocurrencies και Blockchain #7042
Εδώ με ρωτάς hash ποιανού. Αν εννοείς GetHash() του genesis τότε δεν έχει. Το είπα κι όλας, τα επόμενα έχουν previous block hash, όχι όμως αυτό. Δεν καταλαβαίνω όμως γιατί δεν είναι proof ότι χρησιμοποιήσε επεξεργαστική ισχύ για να το δημιουργήσει. Ορίστε και ένα definition του proof of work:
Proof of work (PoW) is a form of cryptographic zero-knowledge proof in which one party (the prover) proves to others (the verifiers) that a certain amount of computational effort has been expended for some purpose.
-
12-03-21, 17:58 Απάντηση: Cryptocurrencies και Blockchain #7043
Σου εξηγώ τι ακριβώς είναι το proof of work: Για κάποιο συγκεκριμένο input X, κάνεις brute force ένα nonce N ώστε το H(X+N) < T
όπου:
Τ το target difficulty (δηλ πόσο "μικρό" value πρέπει να έχει το hash, δηλ. πόσα μηδενικά στο prefix),
Η() το hash function, στην περίπτωση του bitcoin είναι το SHA256 με το GetHash(),
"+" είναι ο concatenation operator.
Στα PoW blockchains, το X είναι συνήθως όλο το προηγούμενο μπλοκ μαζί με κάποια νέα transactions από το mempool.
Αυτό που σου εξηγώ τόση ώρα είναι ότι στο genesis δεν υπάρχει κάποιο Χ για να κάνει proof of work πάνω του, άρα ο σατόσι δεν έκανε prove τίποτε. Απλά (υποθέτω) πήρε κάποιο τυχαίο Χ ή το default input του GetHash() και βρήκε ένα nonce N ώστε να ισχύει η παραπάνω ανίσωση, καθαρά για λόγους συνέχειας. Θα μπορούσε κάλλιστα να μην κάνει καν proof of work και να πετάξει έτσι ένα οποιοδήποτε 256-bit random string που να είναι μικρότερο του Τ.
Ίσως ναι, αλλά δες και τι έγραψα παραπάνω με το random string.
-
12-03-21, 18:20 Απάντηση: Cryptocurrencies και Blockchain #7044
-
12-03-21, 18:26 Απάντηση: Cryptocurrencies και Blockchain #7045
Εγώ αυτό που προσπαθώ να σου εξηγήσω και που δεν καταλαβαίνω γιατί δεν συμφωνείς είναι πως έχει input. Δεν έχει nonce τυχαία. Φυσικά και θα μπορούσε να διαλέξει το οποιοδήποτε hash για να ξεκινήσει την αλυσίδα έτσι. Διάλεξε όμως να βρει ένα κάτω απ'το minimum target. Είτε ήταν στη δικιά του κρίση το τι θα κάνει είτε όχι, δούλεψε για να βρει τέτοιο hash.
Άρα έκανε τελικά proof of work;
- - - Updated - - -
Δηλαδή δεν γνωρίζεις οτι έχει γίνει τέτοιο attack στο ethereum classic ή δεν το πιστεύεις; Πως προκύπτει; Υπήρξαν nodes που έκαναν replace x blocks και το καταλάβανε. Στο bitcoin βλέπεις δεν κοιτάνε ποια αλυσίδα τους «αρέσει» περισσότερο. Αυτή με την μεγαλύτερη δουλειά είναι η σωστή.
-
12-03-21, 18:31 Απάντηση: Cryptocurrencies και Blockchain #7046
-
12-03-21, 18:48 Απάντηση: Cryptocurrencies και Blockchain #7047
Μα αν κάνεις hash το input του genesis block δεν θα σου επιστρέψει:
Κώδικας:0x0000000000000000000000000000000000000000000000000000000000000000
-
12-03-21, 19:19 Απάντηση: Cryptocurrencies και Blockchain #7048
-
12-03-21, 19:33 Απάντηση: Cryptocurrencies και Blockchain #7049
Αυτό εδώ είναι:
Κώδικας:char* pszTimestamp = "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks"; CTransaction txNew; txNew.vin.resize(1); txNew.vout.resize(1); txNew.vin[0].scriptSig = CScript() << 486604799 << CBigNum(4) << vector<unsigned char>((unsigned char*)pszTimestamp, (unsigned char*)pszTimestamp + strlen(pszTimestamp)); txNew.vout[0].nValue = 50 * COIN; txNew.vout[0].scriptPubKey = CScript() << CBigNum("0x5F1DF16B2B704C8A578D0BBAF74D385CDE12C11EE50455F3C438EF4C3FBCF649B6DE611FEAE06279A60939E028A8D65C10B73071A6F16719274855FEB0FD8A6704") << OP_CHECKSIG; CBlock block; block.vtx.push_back(txNew); block.hashPrevBlock = 0; block.hashMerkleRoot = block.BuildMerkleTree(); block.nVersion = 1; block.nTime = 1231006505; block.nBits = 0x1d00ffff; block.nNonce = 2083236893;
Κώδικας:0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
-
12-03-21, 19:55 Απάντηση: Cryptocurrencies και Blockchain #7050
Αυτό που μου έστειλες είναι το input του block 1.
Αυτό που προσπαθώ να σου εξηγήσω είναι ότι το block 0 δεν έχει Input, είναι οι αρχικές συνθήκες του συστήματος.
Πάρε για παράδειγμα τη σειρά Fibonacci. Οι αρχικές συνθήκες (που είναι το 0 και το 1) δεν έχουν input κάτι άλλο.
Bookmarks