Làm thế nào để giao thức Bitcoin hoạt động?

Tác giả:Giấc mơ nhỏ, Tạo: 2017-01-19 18:30:04, Cập nhật:

Làm thế nào để giao thức Bitcoin hoạt động?

  • Bitcoin

    Bây giờ, chúng ta hãy rời khỏi Infocoin và chuyển sang giao thức Bitcoin thực sự. Bitcoin và Infocoin mà chúng tôi vừa xây dựng từng bước không có nhiều khác biệt, ngoại trừ một thay đổi rõ ràng.

    Để sử dụng Bitcoin, trước tiên bạn phải cài đặt một ví trong máy tính. Để hiểu rõ hơn, dưới đây là một bức ảnh chụp của một ví gọi là Multibit. Bạn có thể thấy ở góc trên bên trái số dư của Bitcoin là 0.06555555 bitcoins, với giá giao dịch gần 70 đô la vào thời điểm đó.

    img

    Giả sử bạn là một thương gia, bạn đã thiết lập một cửa hàng trực tuyến, và bạn quyết định cho phép khách hàng thanh toán bằng Bitcoin. Tất cả những gì bạn cần làm là tạo ra một địa chỉ Bitcoin mới với chương trình ví của bạn. Nó sẽ tự động tạo ra một cặp khóa công cộng và khóa riêng, sau đó băm khóa công cộng của bạn để tạo ra địa chỉ Bitcoin của bạn.

    img

    Sau đó, bạn gửi địa chỉ Bitcoin của mình cho người sẽ trả tiền cho bạn. Bạn có thể sử dụng hộp thư hoặc đặt trực tiếp trên trang web của mình. Điều này là an toàn, vì địa chỉ của bạn chỉ là một khóa công khai được băm, bạn có thể an toàn công bố cho bất cứ ai ((không ai có thể lấy khóa riêng của bạn thông qua nó). Tôi sẽ giải thích tại sao địa chỉ Bitcoin sử dụng giá trị băm của khóa công khai chứ không phải chính nó).

    Bây giờ người sẵn sàng trả tiền cần tạo một giao dịch mới. Hãy xem dữ liệu giao dịch thực sự chuyển thành 0.319 Bitcoin. Dưới đây là dữ liệu gần như nguyên bản, có ba thay đổi: 1) dữ liệu không liên tục; 2) thêm số hàng, để hiểu rõ hơn; 3) bỏ qua một chuỗi dài các số dữ liệu hash, chỉ giữ 6 chữ số đầu tiên.

    1.  {"hash":"7c4025...",
    2.  "ver":1,
    3.  "vin_sz":1,
    4.  "vout_sz":1,
    5.  "lock_time":0,
    6.  "size":224,
    7.  "in":[
    8.    {"prev_out":
    9.      {"hash":"2007ae...",
    10.      "n":0},
    11.    "scriptSig":"304502... 042b2d..."}],
    12. "out":[
    13.   {"value":"0.31900000",
    14.    "scriptPubKey":"OP_DUP OP_HASH160 a7db6f OP_EQUALVERIFY OP_CHECKSIG"}]}
    
    • Hãy để chúng tôi giải thích từng dòng.

      Dòng 1, giá trị hash giao dịch (định dạng 16), ông là ký hiệu duy nhất được sử dụng để đại diện cho giao dịch này.

      Dòng 2, cho chúng ta biết giao dịch này sử dụng phiên bản đầu tiên của giao thức Bitcoin.

      Dòng 3, 4, cho chúng ta biết giao dịch này có một đầu vào và một đầu ra.

      Dòng thứ 5, là một thời gian khóa (lock_time), bạn có thể sử dụng nó để kiểm soát khi nào giao dịch này hoàn thành.

      Dòng 6, cho chúng ta biết kích thước của giao dịch là bao nhiêu byte, và lưu ý rằng đây không phải là tiền giao dịch.

      Dòng 7 đến 11, đoạn này xác định phần đầu vào của giao dịch này, chính xác hơn là dòng 8 đến 10 cho chúng ta biết giá trị đầu vào của tiền để chuyển tiền là tiền từ giá trị đầu ra của giao dịch trước đó. 2007ae... là giá trị hash 16 trong giao dịch trước đó, được sử dụng để chỉ một giao dịch lên. N=0 nói rằng nó là đầu ra đầu tiên trong giao dịch trước đó, chúng ta sẽ thấy nhiều đầu vào và đầu ra như thế nào trong một lúc, vì vậy bây giờ không cần phải lo lắng.

      Điều đáng chú ý ở phần đầu vào này là nó không nói bao nhiêu Bitcoin trong giao dịch trước sẽ chuyển sang giao dịch sau. Trên thực tế, tất cả các Bitcoin trong đầu ra n = 0 trong giao dịch trước đã được chuyển đi. Ví dụ, nếu đầu ra n = 0 trong giao dịch trước có 2 Bitcoin, thì cả hai Bitcoin này sẽ được chi tiêu trong giao dịch mới.

      Dòng 12 đến 14, đoạn này xác định đầu ra của giao dịch. Cụ thể, dòng 13 cho chúng ta biết số tiền được đầu ra, đây là 0.319 bitcoin. Dòng 14 khá phức tạp, đáng chú ý là chuỗi a7db6f... là địa chỉ nhận bitcoin. Dòng này thực sự là một đoạn văn bản của ngôn ngữ Bitcoin, không nói chi tiết về ngôn ngữ văn bản.

      Bây giờ, bạn có thể thấy cách Bitcoin giải quyết vấn đề về số lượng Bitcoin mà chúng tôi đã đề cập trước đây. Thứ nhất, Bitcoin không phải là một coin riêng biệt tách biệt mà là một chuỗi dài các giao dịch tồn tại trên blockchain.

      Chúng ta có thể quay lại và quay lại theo chuỗi giao dịch. Cuối cùng, có hai khả năng, thứ nhất, bạn có thể đi đến giao dịch Bitcoin đầu tiên, giao dịch này tồn tại trong một khối, chúng tôi gọi khối này là khối Genesis. Đây là một giao dịch đặc biệt, nó không có đầu vào, chỉ có 50 bitcoins đầu ra.

      Kết quả thứ hai theo chuỗi giao dịch liên tục có thể là bạn đến một giao dịch được gọi là giao dịch bitcoincoinbase. Ngoài khối Genesis, mỗi khối bắt đầu với một giao dịch bitcoinbase đặc biệt.

      Mô tả trên không rõ ràng về những gì được ký kỹ thuật số trong 11 dòng. Cách rõ ràng nhất là để người thanh toán ký kỹ thuật số toàn bộ giao dịch. Hiện tại, nó không làm như vậy, một số giao dịch bị bỏ qua. Điều này làm cho một phần giao dịch có khả năng biến thể, nghĩa là chúng có thể được sửa đổi sau đó. Tuy nhiên, nội dung biến thể này không bao gồm số lượng giao dịch, người thanh toán và người nhận.

  • Có nhiều giao dịch nhập và xuất

    Trong phần trước, chúng ta đã nói về một giao dịch chỉ có một đầu vào và một đầu ra. Thực tế, hầu hết các giao dịch Bitcoin đều có nhiều đầu vào hoặc nhiều đầu ra.

    1. {"hash":"993830...",
    2. "ver":1,
    3. "vin_sz":3,
    4.  "vout_sz":2,
    5.  "lock_time":0,
    6.  "size":552,
    7.  "in":[
    8.    {"prev_out":{
    9.      "hash":"3beabc...",
    10.        "n":0},
    11.     "scriptSig":"304402... 04c7d2..."},
    12.    {"prev_out":{
    13.        "hash":"fdae9b...",
    14.        "n":0},
    15.      "scriptSig":"304502... 026e15..."},
    16.    {"prev_out":{
    17.        "hash":"20c86b...",
    18.        "n":1},
    19.      "scriptSig":"304402... 038a52..."}],
    20.  "out":[
    21.    {"value":"0.01068000",
    22.      "scriptPubKey":"OP_DUP OP_HASH160 e8c306... OP_EQUALVERIFY OP_CHECKSIG"},
    23.    {"value":"4.00000000",
    24.      "scriptPubKey":"OP_DUP OP_HASH160 d644e3... OP_EQUALVERIFY OP_CHECKSIG"}]}
    
    • Như trước đây, chúng tôi giải thích một dòng, phần lớn giống như những gì vừa nói.

      Dòng 1, giá trị hash của giao dịch, được sử dụng như một dấu hiệu duy nhất cho giao dịch này.

      Dòng 2, phiên bản của giao thức Bitcoin, phiên bản thứ nhất.

      Dòng 3, 4, nói rằng giao dịch này có 3 đầu vào và 2 đầu ra.

      Dòng 5, khóa thời gian (tương tự như trước đây).

      Dòng 6, kích thước byte của giao dịch.

      Dòng 7 đến 19, xác định tất cả các đầu vào, mỗi đầu vào tương ứng với đầu ra của giao dịch trước đó. Đầu vào là dòng 8 đến 11; hình thức nội dung của nó giống như trước đó. Đầu vào thứ hai là dòng 12 đến 15; đầu vào thứ ba là dòng 16 đến 19.

      Các dòng từ 20 đến 24, xác định tất cả các đầu ra, đầu ra đầu tiên là 21 và 22, giống như trước đây, dòng 21 nói rằng có 0.01068 bitcoin trong đó. Dòng 22 là ngôn ngữ kịch bản của một bitcoins. Dòng e8c30622... là địa chỉ của người nhận.

      Có vẻ hơi kỳ lạ, mặc dù mỗi đầu ra ghi lại số lượng Bitcoin, nhưng đầu vào không. Tất nhiên, mỗi đầu vào có thể nhận được bao nhiêu Bitcoin từ giao dịch trước đó. Trong một giao dịch Bitcoin thông thường, tổng giá trị của tất cả các đầu vào lớn hơn nhiều đầu ra (ngoại trừ các giao dịch Genesis block và coinbase vừa nói), nếu tổng đầu vào lớn hơn đầu ra, thì Bitcoin dư thừa sẽ được cung cấp cho thợ mỏ trong khối giao dịch này như một khoản phí giao dịch.

      Một số đầu vào và đầu ra là tìm kiếm một số không. Giả sử tôi muốn cho bạn 0.15 bitcoins. Tôi có thể tiêu 0.2 bitcoins mà tôi đã nhận trước đó. Tất nhiên, tôi không muốn cho bạn tất cả 0.2, vì vậy giải pháp là tôi gửi cho bạn 0.15 bitcoins, và sau đó gửi 0.05 bitcoins cho một địa chỉ bitcoin khác của tôi.

  • Lời kết thúc

    Các khái niệm cơ bản đằng sau Bitcoin đã được mô tả. Tất nhiên, tôi cũng bỏ qua nhiều chi tiết. Đây không phải là một hướng dẫn chính thức. Nhưng tôi muốn mô tả những khái niệm đằng sau Bitcoin thường được sử dụng.

    Mặc dù các quy tắc đằng sau Bitcoin rất đơn giản và dễ hiểu, điều đó không có nghĩa là tất cả các kết quả có thể xảy ra của các quy tắc này cũng dễ hiểu. Có rất nhiều điều có thể nói về Bitcoin, tôi sẽ giải thích một số trong bài viết sau.

    Bitcoin là ẩn danh đến mức nào? Nhiều người nói rằng Bitcoin có thể được sử dụng ẩn danh. Điều này được hình thành trong thị trường đen giống như đường tơ lụa. Tuy nhiên, điều này là giả mạo. Blockchain là công khai, và có nghĩa là bất cứ ai cũng có thể xem tất cả các giao dịch Bitcoin. Mặc dù địa chỉ Bitcoin không trực tiếp phù hợp với danh tính của một người trong thế giới thực, các nhà khoa học máy tính đã làm rất nhiều để giải mã mạng xã hội ẩn danh. Blockchain là một mục tiêu tuyệt vời của họ.

    Bạn có thể làm giàu bằng Bitcoin không? Có lẽ vậy, Tim O'Reilly đã từng nói rằng kiếm tiền giống như một cái bể dầu trong xe mà bạn cần phải chú ý, nếu không bạn sẽ bị mắc kẹt bên lề đường nhưng cuộc sống không xoay quanh một trạm xăng! Ồ, hầu hết sự quan tâm đến Bitcoin dường như đến từ những người chỉ có mục tiêu trong cuộc sống là tìm một trạm xăng lớn. Tôi phải thừa nhận, điều này gây nhầm lẫn. Tôi tin rằng thú vị hơn và thích thú hơn là xem Bitcoin hoặc các loại tiền kỹ thuật số khác như một công cụ hợp tác để định hình hành vi của con người.

    Những chi tiết tôi bỏ qua: Mặc dù bài viết này mô tả các khái niệm chính đằng sau Bitcoin, nhưng có rất nhiều chi tiết mà tôi không đề cập. Một trong số đó là những thủ thuật tiết kiệm không gian tuyệt vời trong giao thức, dựa trên một cấu trúc dữ liệu gọi là cây Merkle. Đó là chi tiết, nhưng nó là một chi tiết cực kỳ tuyệt vời, nếu bạn thích cấu trúc dữ liệu, nó đáng để xem. Bạn có thể tìm hiểu thông qua một cuốn sách trắng Bitcoin.

    Bitcoin Script: Trong bài viết này, tôi giải thích Bitcoin như một loại tiền điện tử trực tuyến. Nhưng đó chỉ là một phần nhỏ của câu chuyện lớn hơn và thú vị hơn. Như chúng ta đã thấy, mỗi giao dịch Bitcoin có một ngôn ngữ kịch bản Bitcoin.

    Nếu bạn thấy hữu ích, bạn có thể tham khảo ý kiến của tác giả của bài viết này, Michael Nielsen, tại địa chỉ 17ukkKt1bNLAqdJ1QQv8v9Askr6vy3MzTZ. Bạn cũng có thể theo dõi ông trên Twitter.

    Bạn cũng được chào đón theo dõi microblog của người dịch: 1015 Nếu có bất cứ sự cố nào, xin lỗi.

Bài viết này được trích từ cuốn sách Tin Mừng.


Thêm nữa