Công nghệ Blockchain và Bitcoin
Bitcoin
Bitcoin là gì?
Bitcoin là một loại tiền điện tử được tạo ra vào năm 2009. Có tối đa 21 triệu Bitcoin có thể được khai thác và theo ước tính thì đồng Bitcoin cuối cùng sẽ được tạo ra vào năm 2140. Bitcoin được trao đổi trong một mạng ngang hàng (peer-to-peer) phi tập trung, có nghĩa là sẽ không có một máy chủ hay đơn vị trung gian (như ngân hàng trung ương) nào đứng giữa điều tiết. Bitcoin hoạt động dựa trên một giao thức mật mã có mã nguồn mở và công khai. Do không có một đơn vị kiểm soát đứng sau nào, nên hiệu lực của hệ thống phụ thuộc toàn bộ vào sự đồng thuận của những người tham gia mạng lưới. Giá trị của Bitcoin được xác lập bởi số lượng người sẵn sàng trả tiền để sở hữu nó.
Ví Bitcoin
Để nhận Bitcoin, lưu trữ, thanh toán và chuyển nó đến người khác, người dùng cần một ví tiền điện tử. Có thể hiểu chiếc ví này như một tài khoản ngân hàng hay một chiếc ví truyền thống mà có thể bỏ tiền vào trong. Tuy nhiên, về bản chất kỹ thuật, Bitcoin không được lưu trữ trong đó, thậm chí không tồn tại.
Một số loại ví điện tử thông dụng:
1. Ví mềm (software wallet): Có thể tải về máy tính cá nhân, được lưu trữ vật lý trên ổ cứng và người dùng có toàn quyền truy cập (cần giữ an toàn khóa bí mật).
2. Ví online (online wallet): Lưu trữ trên nền tảng đám mây bởi bên thứ ba, có thể truy cập từ bất cứ đâu có kết nối Internet, nhưng tồn tại rủi ro rò rỉ khóa bí mật từ bên thứ ba.
3. Ví di động (mobile app): Có thể tải ứng dụng ví trên điện thoại để lưu trữ tiền điện tử. Một số ứng dụng ví được sử dụng phổ biến như: Electrum, Coinbase, Blockchain.info, Mobi,…
4. Ví cứng (hardware wallet): Là một thiết bị phần cứng dùng để lưu trữ khóa bí mật. Khi sử dụng, người dùng cần kết nối thiết bị lưu trữ này với máy tính. Có thể kể đến một số hãng sản xuất ví cứng phổ biến như: Ledger Nano S, Trezor và KeepKey.
5. Ví giấy (paper wallet): Khóa bí mật và địa chỉ Bitcoin được in ra giấy, cần được lưu trữ tại nơi an toàn.
Nhìn chung, một ví Bitcoin là một bộ các cặp khóa công khai (publickey) và bí mật (private key). Bitcoin được nhận thông qua một địa chỉ Bitcoin (Bitcoin address), địa chỉ này công khai và có thể được chia sẻ với bất cứ ai có nhu cầu giao dịch Bitcoin (tương tự địa chỉ email). Địa chỉ Bitcoin không phải là khóa công khai, mà là một cách viết ngắn gọn của khóa công khai.
Còn khóa bí mật cho phép người sở hữu sử dụng để thực hiện giao dịch Bitcoin và phải được giữ bí mật (tương tự mật khẩu tài khoản email).
Khóa bí mật, khóa công khai
Khi khởi tạo ví Bitcoin, ứng dụng ví sẽ sinh ngẫu nhiên khóa bí mật cùng với địa chỉ Bitcoin tương ứng, các địa chỉ Bitcoin có thể được tạo thêm theo yêu cầu của người dùng. Khi khởi tạo địa chỉ Bitcoin trong ví điện tử, những hành động sau đây sẽ xảy ra:
1. Khởi tạo một cặp khóa công khai/bí mật.
2. Tạo địa chỉ Bitcoin bằng cách đưa khoá công khai lần lượt qua thuật toán SHA-256 và RIPEMD-160. Thuật toán RIPEMD-160 sinh ra mã băm rút gọn nên rút ngắn được địa chỉ Bitcoin, đồng thời tăng tính an toàn phòng trường hợp nếu một thuật toán băm bị tấn công.
3. Kết quả sau đó được chuyển đổi theo định dạng Base58 để loại bỏ khả năng trùng lặp các ký tự trong một địa chỉ Bitcoin (ví dụ: viết thường chữ cái “L”/viết hoa chữ cái “i”) rồi sẵn sàng được sử dụng. Điều này làm tăng mức độ bảo mật cho hệ thống, do Bitcoin sử dụng một mã băm của khóa công khai như là địa chỉ Bitcoin chứ không dùng chính khóa công khai đó. Nếu có một lỗ hổng khai thác lên thuật toán chữ ký điện tử đường cong Elliptic (ECDSA), thì Bitcoin vẫn an toàn vì khóa công khai không được hiển thị ở bất cứ đâu trong mạng.
Một ví dụ về cặp khóa được sinh:
Địa chỉ Bitcoin: 1Jydra8thqJYSRC5Ykg2mVv3UdCV8fj3Q7 (địa chỉ có thể công khai cho những người muốn gửi bitcoin tới).
Khóa bí mật: L5RMWUU8yFzqdZ5AzVG6VAXGTEYjiF72oVw2kN3E6zFeuV1sD4ww (khóa cho phép tiến hành giao dịch Bitcoin, nếu mất khóa bí mật sẽ mất quyền truy cập tới số Bitcoin vĩnh viễn).
Blockchain
Blockchain trong Bitcoin
Blockchain là công nghệ tạo lên sức mạng của Bitcoin. Blockchain gồm chuỗi khối có chứa danh sách tất cả các giao dịch đã được xác nhận bởi các thợ đào từ khi ra đời. Các khối được liên kết với nhau xuyên suốt từ khối nguyên thủy (genesis block) thông qua mã băm và được được xác nhận trước khi được liên kết vào Blockchain. Hệ thống này hoạt động dựa trên sự đồng thuận của mỗi thành phần trong mạng rằng ai là người sở hữu và có bao nhiêu Bitcoin tất cả. Quy trình tạo sự đồng thuận phân tán này được gọi là quy trình đào (mining), những người tham gia vào quy trình này được gọi là thợ đào (miner).
Có thể coi Blockchain là một sổ cái điện tử phân tán (decentralized and distributed digital ledger) hoạt động bởi mạng máy tính toàn cầu và ghi lại các giao dịch một cách an toàn. Cuốn sổ này có tính mở và công khai, ai cũng có thể biết giao dịch của người khác, nhưng không thể xác định được danh tính của chủ sở hữu Bitcoin. Một bản sao lưu cơ sở dữ liệu Blockchain (bản ghi các giao dịch) được lưu trữ tại mỗi máy tính và nó là một phần của mạng lưới Blockchain để đảm bảo bản ghi đó không thể bị chỉnh sửa. Ở đây, sự đồng thuận được dựa trên các hàm toán học được thiết kế để bảo vệ toàn bộ hệ thống. Điểm đặc biệt là blockchain không giữ số dư tài khoản Bitcoins, nó chỉ ghi lại các giao dịch từ khi bắt đầu tạo Bitcoin. Nó xác định liệu một người có đủ lượng tiền để thực hiện giao dịch bằng cách liên kết với các giao dịch trước đó.
Khối trong Blockchain
Mỗi khối được định danh bởi một mã băm duy nhất đồng thời chứa cả mã băm của khối ngay trước nó, điều này cho phép các khối liên kết với nhau cùng tạo ra một chuỗi xuyên suốt từ đầu đến cuối. Cấu trúc khối gồm 2 phần: Header và dữ liệu giao dịch.
Hình 1. Sơ đồ 3 khối được liên kết trong blockchain
Phần Header của khối có độ dài 80 bytes, gồm những thành phần sau:
- Số phiên bản (version number): Số lưu dấu cho giao thức.
- Mã băm của khối trước đó (còn được gọi là mã băm cha): Cho phép các khối liên kết với nhau.
- Cây Merkle: Cây Merkle là cấu trúc dữ liệu sử dụng để băm một số lượng lớn mẫu dữ liệu cùng nhau. Trong Bitcoin, nó thường được dùng để tóm tắt tất cả các giao dịch trong một khối bằng cách sinh ra một mã băm chung (root hash) và xác nhận rằng tập các giao dịch trong khối không bị chỉnh sửa.
- Timestamp: Thời gian thực hiện băm.
- Độ khó (difficulty): Hai tuần một lần, mạng Bitcoin tự động điều chỉnh độ khó để mỗi khối mới luôn được tạo ra sau 10 phút bằng cách tạo ra độ khó mục tiêu. Mục tiêu này là một mã băm với số lượng các chữ số 0 nhất định.
- Số nonce: Là số ngẫu nhiên 32 bit (từ 0 – 2^32) mà thợ đào thay đổi để tìm ra một mã băm chấp nhận được (bài toán cần giải) với một số lượng chữ số 0 ở đầu. Các thợ đào cần duyệt qua tất cả các giá trị nonce để tìm ra một mã băm chấp nhận được, tất nhiên là không cần phải bắt đầu từ 0.
Mã băm được sinh ra bằng cách băm Header của khối, sau đó băm chính kết quả đó (băm hai lần bằng thuật toán SHA-256). Mỗi giao dịch trung bình có dung lượng 30 bytes và do dung lượng mỗi khối bị giới hạn dưới 1MB nên số lượng giao dịch có thể đưa vào khối phụ thuộc vào kích thước mỗi giao dịch.
Giao dịch Bitcoin
Bitcoin thực chất chỉ là một tham chiếu tới giao dịch chuyển “giá trị Bitcoin” từ người này đến người khác trong chuỗi sở hữu. Một giao dịch truyền thông điệp tới mạng lưới Bitcoin rằng chủ sở hữu hiện tại đồng ý chuyển một lượng Bitcoin nhất định đến một chủ sở hữu khác. Sau đó, người chủ sở hữu mới này có thể chuyển tiếp đến chủ sở hữu khác.
Mỗi giao dịch chứa một hay nhiều đầu vào/đầu ra. Một đầu vào nắm giữ một giá trị Bitcoin chính là đầu ra của một giao dịch trước đó. Vì vậy, đầu ra đó trở thành một đầu vào của giao dịch mới. Ví điện tử sử dụng khóa bí mật để ký lên giao dịch này.
Khi thực hiện một giao dịch, giao dịch đó sẽ được chuyển tới mạng Bitcoin và được xác nhận đồng thuận để trở thành một phần của Blockchain. Mỗi nút thành phần của mạng Bitcoin xác thực giao dịch và gửi tới các nút khác kết nối với nó cho đến khi giao dịch này được truyền tới tất cả các nút trong mạng. Tất cả các giao dịch hợp lệ được gửi tới một local memory pool đang đợi để được trở thành một khối mới (mỗi nút có một local memory pool). Nếu giao dịch không hợp lệ, nút đầu tiên nhận được sẽ bác bỏ nó ngay lập tức và không truyền nó đến các nút khác trong mạng.
Có rất nhiều tiêu chí để xác thực mỗi giao dịch. Dữ liệu giao dịch không bao gồm các thông tin nhạy cảm, bí mật để có thể được truyền đi qua những mạng không an toàn. Phí giao dịch là một khoản phí nhỏ được trả cho thợ đào dành cho việc đưa giao dịch vào trong khối (phí giao dịch là không bắt buộc).
Hình 2. Vòng đời của một giao dịch Bitcoin
Giao dịch có được xác nhận hay không phụ thuộc vào việc thợ đào có đưa hay không giao dịch đó vào trong khối đề xuất mới. Có những khối trống hợp lệ vì thợ đào bắt đầu khai thác khối mới ngay lập tức, hi vọng tiết kiệm thời gian bằng cách không đưa các giao dịch vào. Tuy nhiên, có một giao dịch bắt buộc phải đưa vào trong mỗi khối. Giao dịch này được xem như giao dịch đặc biệt chỉ có thể được tạo ra bởi các thợ đào và được sử dụng để tặng thưởng cho chính thợ đào khi tìm ra khối mới.
Một chiếc ví điện tử có tất cả các tiện ích hỗ trợ việc quản lý giao dịch. Với vai trò người dùng, chỉ cần xác định địa chỉ Bitcoin cần gửi đến và lượng Bitcoin muốn gửi. Đa số ví điện tử tự động tính toán và gộp phí giao dịch đi kèm, còn lại cho phép người dùng tùy ý điền vào lượng phí mong muốn. Đôi khi người dùng cần cẩn trọng khi khởi tạo giao dịch nếu không thấy nơi khai báo phí. Cụ thể, trong trường hợp này, phí sẽ được quy định là phần chênh lệch giữa đầu vào và đầu ra. Nói cách khác, nếu cần trả 2 Bitcoin để mua thứ gì đó, trong khi đầu vào là 10 Bitcoin, thì phí trả cho thợ đào sẽ là 8 Bitcoins (10-2=8). Lượng phí này được trả cho thợ đào như là phần thưởng dành cho việc xác nhận và đưa các giao dịch vào khối.
Ví dụ về trường hợp giao dịch không bao gồm phí:
- A đã nhận được 10 BTC từ người nào đó. Hiện tại A có thể giao dịch 10 BTC.
- Tiếp đó, A muốn gửi cho B 0.5 BTC.
- Đầu vào cũ của A là 10 BTC giờ đây trở thành đầu ra. A không thể đơn giản gửi đi 0.5 BTC, do đó cả 10 BTC đầu ra của A được gửi tới mạng lưới.
Một giao dịch mới sẽ được tạo ra với đầu vào mới là 9.5 BTC và có thể dùng nó như một đầu ra trong tương lai. Tóm lại, A đã có 10 BTC đầu ra nhận được từ ai đó, A trả 0.5 BTC cho B, và A lấy lại 9.5 BTC. Tất cả quá trình trên được ví điện tử xử lý (không bao gồm phí).
Đào Bitcoin
Đào Bitcoin là một quá trình mà tại đó Bitcoin mới được tạo ra, các bản ghi giao dịch được xác nhận và bổ sung vào Blockchain. Quá trình này đảm bảo cho hệ thống Bitcoin được an toàn trước các giao dịch gian lận và giao dịch bị lặp lại. Quá trình đào được thực hiện bởi các thợ đào, là những người cung cấp năng lực tính toán xử lý cho mạng Bitcoin.
Bất cứ ai cũng có thể trở thành thợ đào bằng cách tải về và khởi chạy một bản Bitcoin Protocol Stack đầy đủ trên máy tính. Vào thời điểm ban đầu của Bitcoin, chỉ một chiếc máy tính cá nhân cũng đủ năng lực để tham gia quá trình đào. Tuy nhiên, ngày nay cần nhiều năng lực xử lý hơn nên thợ đào thường sử dụng phần cứng chuyên dụng và nguồn điện giá rẻ để tạo thành các trung tâm xử lý chuyên dụng.
Thợ đào bitcoin có cơ hội được tặng thưởng những Bitcoin mới như một phần thưởng khi họ đào thành công một khối, cùng với các khoản phí giao dịch đi kèm. Tất cả các thợ đào trên toàn cầu cùng tập trung giải quyết một bài toán phức tạp và thách thức được tạo ra dựa trên giải thuật mã hóa băm. Giải thuật này được gọi là thuật toán bằng chứng công việc (proof-of-work) đặt trong mỗi khối mới tạo ra và được xem như một bằng chứng (proof) mà thợ đào đã sử dụng năng lực xử lý nhất định để tìm ra.
Các thợ đào tạo ra hàng tỷ suy đoán mỗi giây để tìm ra lời giải bài toán đó. Khi một thợ đào tìm ra lời giải cho bài toán, họ ngay lập tức quảng bá kết quả này đến phần còn lại của mạng. Nếu khối đó được chấp nhận như một khối hợp lệ, thì khối này sẽ được ghi nhận và thợ đào được tặng tiền thưởng của chính khối đó cùng với tất cả khoản phí giao dịch đi kèm. Tại thời điểm ban đầu, tiền thưởng cho thợ đào trị giá lên tới 50 Bitcoin cho mỗi khối, nhưng cứ sau 4 năm thì lượng Bitcoin được thưởng lại giảm đi một nửa. Ngoài năng lực xử lý, có lẽ các thợ đào cũng cần may mắn để khai thác thành công được một khối.
Kết luận
Blockchain là một công nghệ mới, có thể giải quyết nhiều vấn đề, trong đó tiền điện tử chỉ là một ứng dụng. Đối với các lĩnh vực cần lưu trữ và lưu vết các thông tin thì việc áp dụng Blockchain là rất lý tưởng. Với tiềm năng của Blockchain, những ứng dụng của công nghệ này sẽ làm thay đổi đáng kể cuộc sống của con người trong thời gian không xa. Tuy nhiên, việc áp dụng công nghệ Blockchain cũng cần được các nhà quản lý giám sát và điều tiết một cách phù hợp nhằm tuân thủ các quy định của pháp luật.
Vũ Mạnh Hùng - Ngân hàng Vietinbank