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 không có nhiều khác biệt so với Infocoin mà chúng ta vừa xây dựng từng bước, 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í trên máy tính của bạn. Để giúp bạn hiểu rõ hơn, dưới đây là ảnh chụp của một ví có tên là Multibit. Bạn có thể thấy số dư của Bitcoin tăng lên 0.06555555 bitcoin ở góc trên bên trái, tương đương với gần 70 đô la theo giá giao dịch tại thời điểm đó.

Giả sử bạn là một người kinh doanh, bạn đã có 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 khai và riêng tư, và sau đó hash khóa công khai của bạn để tạo ra địa chỉ Bitcoin của bạn.

Sau đó, bạn gửi địa chỉ Bitcoin của bạn cho người trả tiền cho bạn. Bạn có thể sử dụng thư điện tử, hoặc trực tiếp vào trang web của bạn. Điều này an toàn, bởi vì địa chỉ của bạn chỉ là khóa công khai của một hàm và bạn có thể tự tin công khai cho bất kỳ ai (không ai có thể lấy khóa riêng của bạn thông qua 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 tế chuyển sang 0.319 bitcoin. Dưới đây là dữ liệu gần như nguyên bản, có 3 thay đổi ở đây: 1) dữ liệu không liên tiếp; 2) thêm số dòng, để hiểu rõ hơn; 3) bỏ qua một chuỗi dài số dữ liệu băm, chỉ giữ lại 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"}]}
Chúng ta hãy giải thích từng câu một.
Dòng 1, hash của giao dịch ((16), là dấu 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 1 của giao thức Bitcoin.
Dòng 3 và 4 cho chúng ta biết rằng giao dịch này có một đầu vào và một đầu ra.
Dòng 5 là thời gian khóa (lock_time), có thể được sử dụng để kiểm soát khi nào giao dịch được hoàn thành. Hiện tại, hầu hết các giao dịch Bitcoin đều có thời gian khóa là 0, tức là giao dịch được hoàn thành ngay lập tức.
Dòng 6 cho chúng ta biết có bao nhiêu byte trong giao dịch này, và lưu ý rằng đây không phải là tiền giao dịch.
Dòng 7 đến 11, đây là đoạn xác định phần đầu vào của giao dịch này, đúng hơn, dòng 8 đến 10 cho chúng ta biết rằng giá trị đầu vào này để chuyển tiền đi là tiền được lấy từ giá trị đầu ra của giao dịch trước đó. 2007ae… là hash 16 của giao dịch trước đó, được sử dụng để chỉ một giao dịch.
Điều đáng chú ý ở phần đầu vào ở đây là nó không nói bao nhiêu bitcoin trong giao dịch trước đó sẽ được chuyển cho giao dịch sau. Trên thực tế, tất cả bitcoin trong đầu ra n = 0 trong giao dịch trước đã được chuyển. Ví dụ: nếu đầu ra đầu tiên của giao dịch trước là 2 bitcoin, thì hai bitcoin này sẽ được chi tiêu trong giao dịch mới.
Dòng 12 đến 14, đoạn này định nghĩa đầu ra của giao dịch. Cụ thể, dòng 13 cho chúng ta biết số tiền được đưa ra, đây là 0.319 bitcoin. Dòng 14 phức tạp hơn, đáng chú ý là chuỗi a7db6f… là địa chỉ nhận bitcoin. Dòng này thực sự là một đoạn scripting của bitcoin, không nói chi tiết về ngôn ngữ scripting ở đây.
Bây giờ, bạn có thể thấy cách Bitcoin giải quyết vấn đề từ đâu có một số chuỗi của các đồng xu mà chúng tôi đã đề cập trước đó. Thứ nhất, Bitcoin không phải là một khối đồng xu riêng biệt, mà là một chuỗi dài các giao dịch tồn tại trong blockchain.
Chúng ta có thể đi ngược lại theo chuỗi giao dịch. Và cuối cùng, có hai khả năng, đầu tiên, 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 bitcoin đầu ra.
Kết quả thứ hai là bạn có thể thấy một giao dịch được gọi là “coinbase tray”. Mỗi khối, ngoại trừ khối Genesis, bắt đầu với một giao dịch coinbase đặc biệt. Giao dịch này được sử dụng để thưởng cho người khai thác xác nhận giao dịch trong khối.
Những mô tả trên không rõ ràng là những gì được ký số trong 11 dòng. Cách rõ ràng nhất là để người thanh toán ký số toàn bộ giao dịch. Hiện tại nó không được thực hiện 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ó thể được thay đổi, nghĩa là chúng có thể được sửa đổi sau này. Tuy nhiên, nội dung có thể được thay đổi này không bao gồm số lượng giao dịch, người thanh toán và người nhận.
Trong phần trước, chúng ta đã nói về một giao dịch có một đầu vào và một đầu ra. Trong 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ư chúng tôi đã giải thích trước đây, phần lớn là như chúng tôi đã giải thích trước đây.
Dòng 1, hash của giao dịch, được sử dụng như là dấu hiệu duy nhất của giao dịch này.
Dòng 2, phiên bản của giao thức Bitcoin, phiên bản đầu tiên.
Lỗi 3 và 4 nói rằng có 3 đầu vào và 2 đầu ra trong giao dịch này.
Dòng 5, khóa thời gian ((và giống như trước đây)
Dòng 6, kích thước byte của giao dịch.
Các 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 tiên là dòng 8 đến 11.
Dòng 20 đến 24, xác định tất cả các đầu ra, đầu ra đầu tiên là dòng 21 và 22, giống như trước đó, dòng 21 nói rằng có 0,01068 bitcoin trong đó. Dòng 22 là một ngôn ngữ kịch bản của bitcoin. Dòng e8c30622… là địa chỉ 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 thì không. Tất nhiên mỗi đầu vào có thể có được bao nhiêu bitcoin từ giao dịch trước đó của nó. 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 tổng giá trị của đầu ra (ngoại trừ giao dịch khối Genesis và giao dịch coinbase vừa nói), nếu tổng giá trị đầu vào lớn hơn tổng giá trị của đầu ra, thì bitcoin dư thừa sẽ được cung cấp cho thợ mỏ của khối giao dịch này như một khoản phí giao dịch.
Ví dụ, giả sử tôi muốn cho bạn 0,15 bitcoin. Tôi có thể tiêu hết 0,2 bitcoin 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 bitcoin, vì vậy giải pháp là, tôi gửi cho bạn 0,15 bitcoin, và sau đó gửi cho tôi một địa chỉ bitcoin khác của tôi 0,05 bitcoin.
Các khái niệm cơ bản đằng sau Bitcoin đã được mô tả. Tất nhiên, tôi đã bỏ qua rất 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ả các 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 do 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 các bài viết sau.
Bitcoin có thể được sử dụng một cách ẩn danh không? Nhiều người nói rằng Bitcoin có thể được sử dụng một cách ẩn danh. Câu nói này được hình thành trong thị trường đen tương tự như Silk Road. Tuy nhiên, câu nói này là giả tưởng. Blockchain là công khai, 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 tương ứng trực tiếp với danh tính của nhân vật trong thế giới thực, các nhà khoa học máy tính đã làm rất nhiều công việc để 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ọ.
Có thể, Tim O’Reilly đã từng nói rằng kiếm tiền giống như một thùng xăng trong xe hơi mà bạn cần phải chú ý, nếu không bạn sẽ bị mắc kẹt trên đường nhưng cuộc sống không xoay quanh trạm xăng! Ồ, hầu hết sự quan tâm đến Bitcoin dường như đến từ những người mà mục tiêu của cuộc sống chỉ là tìm một trạm xăng lớn. Tôi phải thừa nhận rằng điều này gây nhầm lẫn.
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 tôi không đề cập đến. Một trong số đó là các thủ thuật tiết kiệm không gian tuyệt vời trong giao thức, dựa trên cấu trúc dữ liệu được gọi là cây Merkle. Đây là chi tiết, nhưng nó là một chi tiết tuyệt vời, và nếu bạn thích cấu trúc dữ liệu, nó rất đáng để xem.
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 đây chỉ là một phần nhỏ trong 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 đều có một phần của ngôn ngữ kịch bản Bitcoin.
Nếu bạn thấy nó hữu ích, tôi khuyên bạn nên gửi một lời khuyên cho tác giả của bài viết, Michael Nielsen, 17ukkKt1bNLAqdJ1QQv8v9Askr6vy3MzTZ, bạn cũng có thể theo dõi trên Twitter của ông.
Xin vui lòng chú ý đến bài viết của người dịch: 1015
Bài viết được trích dẫn từ Jan-Buk Chan