Mục lục:

Máy đào Bitcoin ESP8266: 3 bước
Máy đào Bitcoin ESP8266: 3 bước

Video: Máy đào Bitcoin ESP8266: 3 bước

Video: Máy đào Bitcoin ESP8266: 3 bước
Video: Máy đào coin đào lời mùa downtrend phần 2 #mininglife 2024, Tháng bảy
Anonim
Máy đào Bitcoin ESP8266
Máy đào Bitcoin ESP8266

Với việc giá Bitcoin tiếp tục tăng và với một vài ESP8266 luôn được cắm vào nhưng không thực sự hiệu quả, tôi nghĩ tại sao không thử và triển khai Solo Bitcoin Miner. Sau một chút thử nghiệm, tôi đã nhận được ESP8266 lên đến ~ 1200 băm / giây và tính đến tháng 12 năm 2017, mạng Bitcoin đã hoạt động khoảng 12, 000, 000 tera băm mỗi giây (bạn có thể kiểm tra blockchaininfo để biết những con số mới nhất).

Vì vậy, dựa trên những con số đó, chúng tôi sẽ có cơ hội 1 trong 1e16 để khai thác thành công một khối cứ sau mười phút mà một khối hiện có giá trị $ 212.000. Chắc chắn rằng nó giống như mua một vé xổ số, chỉ với cơ hội trúng thưởng nhỏ hơn nhiều, nhưng bạn có biết câu nói cũ, ai đó phải giành được nó. Với cả dự án Gate Mate và Super Squirter ESP8266, hầu hết thời gian chúng không thực hiện bất kỳ công việc nào, chúng chỉ cắm vào và chờ đợi các yêu cầu hoặc đầu vào, vậy tại sao không đặt chúng vào đó và có thể giành được một số tiền. Bước đầu tiên là thử và tìm hiểu xem liệu có thể thực hiện SHA256 kép trên Blockheader trên ESP8266 hay không. Trong thế giới Bitcoin, 'hash' thực sự là SHA256 kép, nhưng chúng tôi sẽ chỉ gọi nó là hash. Tuy nhiên, sau một chút tìm kiếm xung quanh, tôi đã tìm thấy hai trang này cung cấp tất cả thông tin cần thiết để có được hàm băm.

1. Thuật toán băm khối

2. Khai thác Bitcoin một cách khó khăn: các thuật toán, giao thức và byte

Cần lưu ý rằng giao thức getwork, như được nêu chi tiết trong các liên kết ở trên, đã không được dùng nữa. Nó đã được thay thế bằng giao thức getblocktemplate khiến việc xây dựng tiêu đề khối phức tạp hơn một chút, cụ thể là bạn phải xây dựng root merkle của riêng mình. Để biết tất cả những điều khó hiểu, hãy xem wiki getblocktemplate.

Bước 1: Thuật toán

Thuật toán
Thuật toán

Hãy bắt đầu ngay lập tức, mã ESP8266 có tại đại diện ESP8266BitcoinMiner GitHub. Tôi sẽ không chia sẻ lại tất cả thông tin từ các liên kết trên mà chỉ nêu ra những điểm chính.

char header_hex = "0100000081cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000e320b6c2fffc8d750423db8b1eb942ae710e951ed79447f7affc8891274b0f1f1f;"

char header_hex là tiêu đề khối và được xây dựng từ sáu trường, Phiên bản, hashPrevBlock, hashMerkleRoot, Time, Bits và Nonce tất cả được nối với nhau dưới dạng các giá trị endian nhỏ trong ký hiệu hex. Điều đó chỉ được sao chép từ liên kết ở trên nhưng trong một công cụ khai thác chính thức thực sự, bạn sẽ nhận từng trường đó trong một đối tượng json và sau đó phải phân loại độ bền và ghép chúng lại với nhau cứ sau 10 phút.

uint8_t * hex_decode (const char * in, size_t len, uint8_t * out) {

không dấu int i, mg, ng, rg; for (mg = 0, i = 0; i '9'? in - 'a' + 10: in - '0'; rg = in [i + 1]> '9'? in [i + 1] - 'a' + 10: in [i + 1] - '0'; out [mg] = (ng << 4) | rg;} return out;}

hex_decode lấy chuỗi header_hex, chứa các ký tự ascii thập lục phân và điền vào các băm uint8_t [80] với các giá trị byte tương ứng của chúng đã sẵn sàng cho hàm băm SHA256.

void hash () {

hex_decode (header_hex, strlen (header_hex), hashbyte); unsigned long start = micros (); hasher.doUpdate (hashbytes, sizeof (hashbytes)); băm byte [SHA256_SIZE]; hasher.doFinal (băm); hashagain.doUpdate (băm, sizeof (băm)); byte băm2 [SHA256_SIZE]; hashagain.doFinal (hash2); unsigned long end = micros (); unsigned long delta = kết thúc - bắt đầu; Serial.println (delta); Serial.print ("Big Endian:"); for (byte i = 32; i> 0; i -) {if (hash2 [i-1] <0x10) {Serial.print ('0'); } Serial.print (hash2 [i-1], HEX); } Serial.println (); Serial.print ("Little Endian:"); for (byte i = 0; i <SHA256_SIZE; i ++) {if (hash2 <0x10) {Serial.print ('0'); } Serial.print (hash2 , HEX); }}

hash chỉ đơn giản là băm các hashbyte hai lần (gấp đôi SHA256), in số giây đã mất và in ra hàm băm kết quả dưới dạng endian lớn và endian nhỏ. Nếu các hàm băm chỉ được lồng trong một hàm băm SHA256 thì có lẽ sẽ nhanh hơn một chút nhưng với đoạn mã trên, phải mất 832 giây để thực hiện hàm băm kép và bạn có thể thấy từ ảnh chụp màn hình, chúng tôi nhận được hàm băm chính xác.

Bước 2: Đánh một bức tường và một khối thực sự lớn

Đánh vào tường và một khối thực sự lớn
Đánh vào tường và một khối thực sự lớn

Vì vậy, nếu mất 832 usec giây để thực hiện một băm, chúng tôi có thể thực hiện 1 / 0,000834 = 1201 băm / giây.

Để rõ ràng hơn, chúng tôi đã lấy thông tin từ khối # 125552 nơi chúng tôi biết nonce, nó đã được khai thác và sử dụng thông tin đó làm trường hợp thử nghiệm để đảm bảo rằng chúng tôi có thể nhận được cùng một băm với ESP8266. Vì vậy, một khi đạt được lợi nhuận với một công cụ khai thác đầy đủ, bạn sẽ ngẫu nhiên đoán ngay lập tức, băm khối tiêu đề với nó và sau đó so sánh kết quả với độ khó của khối đó. Nếu hàm băm gặp khó khăn, nó sẽ được gửi đến mạng để xác minh.

Được rồi, thật tuyệt, chúng ta có thể thực hiện băm, chắc chắn rằng tỷ lệ rất khủng khiếp nhưng khi nhìn vào nó như một cuộc xổ số, một dự đoán là một dự đoán. Đây là nhưng, khi kiểm tra kỹ hơn, bạn sẽ sớm thấy rõ rằng bạn cần phải chạy một nút đầy đủ để có thể giao tiếp với mạng, hiển nhiên là khi bạn dừng lại và suy nghĩ về hoạt động khai thác thực sự là gì.

Vì vậy, nếu bạn nhìn vào sơ đồ, bạn có thể thấy rằng daemon bitcoin là một phần của lõi bitcoin đảm nhiệm việc giao tiếp giữa mạng và thợ đào. Điều này thực sự có nghĩa là bạn cần chạy lõi Bitcoin trên một máy chủ để ESP8266 có thể nhận được một blockheader mới sau mỗi 10 phút và sau đó có thể gửi trở lại mạng.

Tôi chưa thử nhưng có vẻ như bạn sẽ phải đồng bộ hóa toàn bộ chuỗi khối ở mức khoảng 130 Gigs trước khi nó giao tiếp tốt với mạng, trong wiki họ đề cập đến các bước nhất định phải được hoàn thành trước khi tất cả các chức năng có sẵn, vì vậy khá chắc chắn đó là những gì họ có nghĩa là.

Vì vậy, điều đó đã kéo tôi lên đó, từ quan điểm nghiên cứu, tất cả đều rất thú vị và khá tuyệt khi thấy ESP8266 nhỏ thành công băm trường hợp thử nghiệm nhưng thực tế mà nói, tôi không thấy nhiều người tải xuống lõi, đồng bộ hóa toàn bộ blockchain, luôn cập nhật mọi thứ, cập nhật tất cả các vấn đề bảo mật để có cơ hội 1 trong 1e16 giành được khối. Một cây cầu để đi xa cho tôi.

Ngay từ đầu, tôi đã biết tỷ lệ băm sẽ rất khủng khiếp nhưng sự tò mò càng khiến tôi thích thú hơn và tôi phải thử. Thay vì khai thác một mình, có thể có một nhóm khai thác có thể được kết nối trực tiếp từ ESP8266 mà không cần nỗ lực lớn hoặc có thể có một loại tiền điện tử khác phù hợp hơn. Nếu bạn tìm thấy một trong hai, xin vui lòng cho tôi biết.

Bước 3: Tham khảo

1. Kho lưu trữ GitHub của công cụ đào Bitcoin ESP8266

2. Kho lưu trữ GitHub tiền điện tử ESP8266

3. Khai thác Bitcoin một cách khó khăn: các thuật toán, giao thức và byte

4. Thuật toán băm khối

5. Khối 125552

Đề xuất: