Mastering Bitcoin – Andreas M. Antonopoulos
Antonopoulos là 1 trong những người tiên phong và truyền bá về bitcoin, blockchain trên thế giới và tích cực đưa nó vào ứng dụng thực tế.
- Giới thiệu
Bitcoin là tập hợp các khái niệm và công nghệ tạo nên nền tảng của 1 hệ sinh thái tiền số. Các đơn vị tiền tệ gọi là bitcoin được sử dụng đẻ tích trữ và trao đổi giá trị giữa các thành viên trong mạng lưới bitcoin. Người dùng có thể trao đổi chủ yếu qua internet, nhưng cũng có thể qua phương thức khác. Chồng giao thức bitcoin, có sẵn dưới dạng phần mềm nguồn mở, có thể chạy trên nhiều loại hình thiết bị khác nhau. Người dùng có thể sử dụng bitcoin như 1 loại tiền pháp định thông thường với đầy đủ chức năng.
Bitcoin mang tính ảo hoàn toàn, không có bitcoin vật lý, cũng không có đồng tiền số nào. Tiền bitcoin được ngầm định trong các giao dịch chuyển giao giá trị từ người gửi tới người nhận. Bitoin là 1 hệ thống phân tán ngang hang, do đó không có máy chủ trung tâm hay điểm kiểm soát nào. Bitcoin được tạo ra thông qua 1 quá trình gọi là đào tiền, trong đó các thợ đào phải cạnh trnah với nhau để tìm đáp án cho 1 bài toán trong lúc xử lý các giao dịch bitcoin. Cứ sau 4 năm, tốc độ đào bitcoin sẽ giảm đi ½ và ước tới năm 2140 toàn bộ 21 triệu Bitcoin sẽ được đào ra.
Bitcoin là sự kết hợp độc đáo và mạnh mẽ của 4 phát minh chính:
- 1 mạng ngang hang phi tập trung (giao thức bitcoin)
- 1 sổ cái giao dịch công khai (blockchain)
- 1 tập hợp các quy tắc để xác thực giao dịch và phát hành tiền tệ độc lập (các quy tắc đồng thuận)
- 1 cơ chế để đạt được sự đồng thuận phi tập trung trên blockchain hợp lệ (thuật toán bằng chứng công việc)
Bitcoin ra đời năm 2008 với bản đặc tả khái niệm có đựa đề “Bitcoin: A peer-to-peer electronic cash system” được công bố dưới bút danh Satoshi Nakamoto. Ông đã kết hợp các phát minh trước đó như b-money, hashcash để tạo nên 1 hệ thống tiền điện tử hoàn toàn phi tập trung, không phụ thuộc vào 1 thực thể quyền lực trung ương nào để phát hành tiền hay thanh toán và xác thực các giao dịch.
Mạng bitcoin bắt đầu khởi động từ 2009 và thu hút các tình nguyên viên am hiểu về lập trình và người theo chủ nghĩa tự do tham gia. Từ năm 2011 Satoshi biến mất và không còn xuất hiện nữa, mạng lưới được tiếp tục phát triển bởi các tình nguyên viên khác.
- Bitcoin hoạt động như thế nào
1 giao dịch được phát tán trên mạng bitcoin, nhưng phải đến khi nó được xác nhận và đưa vào 1 block thông qua 1 quá trình gọi là đào (mining), thì nó mới trở thành 1 phần của blockchain. Hệ thống tín nhiệm của bitcoin dựa trên điện toán. Các giao dịch được hóm lại thành các block quá trình này đòi hỏi 1 khối lượng tính toán khổng lồ để chứng minh, nhưng chỉ cần 1 lượng tính toán nhỏ để xác thực rằng nó đã được chứng minh. Quá trình đào này phục vụ 2 mục đích trong bitcoin:
- Các nút đào xác thực giao dịch bằng cách tham chiếu đến các quy tắc đồng thuận của bitcoin. Vì thế, quá trình đào mang đến sự an toàn cho các giao dịch bitcoin thông qua việc từ chối các giao dịch không hợp lệ hay không được tạo đúng cách
- Hoạt động đào tạo ra bitcoin mới trong mỗi block, tương tự như việc 1 ngân hàng trung ướng tin thêm tiền. Số lượng bitcoin được tạo ra trong mỗi block bị giới hạn và sẽ giảm dần theo thời gian, tuân theo 1 lịch trình phát hành tiền cố định.
Hoạt động đào đạt được 1 sự cân bằng hợp lý giữa chi phí và phần thưởng. Đào bitcoin sử dụng điện năng để giải quyết bài toán. Thợ đào sẽ thu được phần thưởng là bitcoin mới cùng phí giao dịch. Quy tắc đồng thuận này sẽ giúp duy trì hệ thống mà không cần 1 thực thể quyền lực trung ương nào.
Các giao dịch mới từ ví của người dung và các ứng dụng khác liên tục đổ về mạng bitcoin. Khi thấy chúng, các nút mạng bitcoin sẽ đưa chúng vào 1 vùng chứa tạm thời của mỗi nút, trong đó chứa các giao dịch chưa được xác thực. Khi tạo 1 block mới, thợ đào đưa thêm vào đó các giao dịch chưa được xác thực từ vùng chứa tạm thời này, rồi chứng minh tính xác thực của block mới bằng thuật toán đào (bằng chứng xử lý). Hệ thống cũng xác thực được truy nguyên nguồn gốc của 1 chi tiêu bitcoin nào đó tới từ đâu.
- Bitcoin core: bản thực thi tham chiếu
Bitcoin là 1 dự án nguồn mở và mã nguồn của nó được cấp theo giấy phép MIT, ta có thể tải về miễn phí và sử dụng nó cho bất kỳ mục đích nào. Cộng đồng này ban đầu chỉ có Satoshi Nakamoto đưa ra và tới 2016 thì có khoảng 400 người đóng góp vào mã nguồn này. Phần mềm này được hoàn thiện trước khi có bản đặc tả mà Satoshi đưa ra vào năm 2008. Hiện tại phần mềm này đã tiến hóa thành itcoin Core, là bản thực thi tham chiếu của hệ thống bitcoin. Bitcoin core thực thi mọi khía cạnh của btcoin, bao gồm các ví, 1 bộ máy xác thực giao dịch và block, và 1 nút mạng đầy đủ trong mạng bitcoin ngang hàng.
Lý do ta muốn vận hành 1 nút mạng:
- Nếu đang phát triển phần mềm bitcoin và phải cần đến 1 nút bitcoin cho các quy cập lập tringh được (API) đến mạng bitcoin và blockchain
- Đang xây dựng các ứng dụng phải xác thực các giao dịch tuân theo các quy tắc đồng thuận bitcoin. Các công ty phần mềm bitcoin thường vận hành vài nút bitcoin
- Nếu bạn muốn hỗ trợ bitcoin. Việc vận hành 1 nút khiến cho mạng bitcoin trở nên vững chắc hơn và có thể phục vụ nhiều ví hơn, nhiều người dung hơn, nhiều giao dịch hơn
- Nếu bạn không muốn đựa vào bất cứ 1 bên thứ 3 nào để xử lý hay xác thực những giao dịch của mình
- Khóa, địa chỉ
Quyền sở hữu bitcoin được thiết lập thông qua các khóa số, địa chỉ bitcoin, và chữ ký số. Các khóa số này được lưu trữ tại máy của người dung dưới dạng 1 file gọi là vì, nó không được lưu trữ trên mạng lưới. Khóa bao gồm 2 thành phần là khóa bí mật và khóa công khai. Khi giao dịch, khóa công khai chính là địa chí ví, nó tương tự như người thụ hưởng khi giao dịch ở ngân hàng, còn khóa bí mật giống như mã PIN giao dịch.
Từ khó bí mật (K), ta thực hiện phép nhân đường con elliptic (1 chiều) sẽ có khóa công khai (K), ta sử dụng hàm băm (1 chiều) sẽ có địa chỉ bitcoin (A). Khóa bí mật sẽ sinh ra 1 chữ ký đi kèm với giao dịch mà mạng lưới sẽ dễ dàng xác nhận được người chủ của giao dịch đó đang sở hữu bitcoin đó tại thời điểm có giao dịch nhưng vẫn đẩm bảo không bị lộ khóa bí mật. Việc khóa bí mật bị lộ sẽ làm mất các bitcoin đang có và không thể khôi phục lại được. Khóa bí mật sẽ có định dạng 256-bit, các khóa công khai sẽ gồm 520-bit và sẽ gây tốn bộ nhớ cho các nút khi lữu trữ nó vì nó đi kèm với các giao dịch, nó thường được nén lại thành khóa cong khai nén 264 -bit, địa chỉ ví bitcoin sẽ được chạy rút gọn từ thuật toán base58check. Các ví giấy (ví lạnh) cũng là giải pháp sao lưu và cất trữ để tránh bị đánh cắp trên mạng, hay hóa nhầm, hỏng ổ cứng,… nhưng nó cũng có rủi ro khi bị kẻ cắp vật lý chiếm quyền khi thấy chúng.
- Ví
Ở mức dễ hiểu ví là ứng dụng đóng vai trò giao diện người dùng chính. Ví kiểm soát quyền truy cập tiền của người dùng, quản lý các khóa và địa chỉ, theo dõi số dư, tạo và ký các giao dịch. Ở góc độ lập trình vienem, ví chỉ cấu trúc dữ liệu dùng để lưu trũ và quản lý các khóa của người dùng.
Trong ví chứa các khóa để ký các giao dịch, ví không chứa bitcoin cụ thể trong đó. Bitcoin nằm trên mạng lưới blockchain của nó. Có 2 loại ví là ví bất định và ví tất định. Trong đó ví tất định được sử dụng rộng rãi hơn.
- Giao dịch
Giao dịch là phần quan trọng nhất của hệ thống bitcoin. Mọi yếu tố khác trong bitcoin đều được thiết kế nhằm đảm bảo rằng các giao dịch có thể được tạo ra, phát tán trên mạng bitcoin, xác thực, và cuối cùng là bổ sung vào sổ cái giaod ịch toàn cầu (blockchain). Giao dịch là các cấu trúc dữ liệu mã hóa sự chuyển giao giá trị giữa những người tham gia trong hệ thống bitcoin. Mỗi giao dịch là 1 mục ghi chép công khai trong blockchain bitcoin, sổ cái kế toán kép toàn cầu.
Mỗi giao dịch được lữu trữ trên sổ cái, còn tại ví của người dùng thực tế không chứa các giá trị thật sự tại đó. Nó chỉ chứa các khóa để xác nhận các giao dịch đó khi người dùng chi tiêu các bitcoin mà họ có ở các giao dịch đã được xác định trước đó. Khi giao dịch, hệ thống sẽ lấy từng phần bitcoin ở các giao dịch trước đó để chi tiêu theo chỉ thị và phần thừa lại được cho lại vào UTXO (unspent transaction outputs). 1 đầu ra sẽ là 1 giá trị bổ số của Satoshi (1 satoshi = 8 chữ số thập phân phia sau. Khi có đầu ra là UTXO, nó sẽ không thể bị chia nhỏ mà chỉ chi tiêu toàn bộ 1 đầu ra trong 1 giao dịch. Phần còn lại dư ra sẽ tạo ra 1 UTXO mới, các UTXO đầu ra này sẽ được toàn bộ mạng lưới công nhận và có thể dùng để chi tiêu tiếp theo.
Hậu trường các giao dịch khác xa so với những gì mà các ví, trình duyệt blockchain, và các ứng dụng tương tác với người dùng khác hiển thị. Các giao dịch khong chứa địa chỉ bitcoin, chúng hoạt động thông qua các kịch bản khóa và mở khóa những giá trị rời rạc của bitcoin. Số dư tài khoản không xuất hiện ở bất cứ đâu trong hệ thống này, thế nhưng mọi ứng dụng ví đều hiển thị rõ ràng số dư tài khoản ví người dùng.
- Các giao dịch và kịch bản nâng cao
Thông thường kịch bản giao dịch phổ biến là P2PKH chiếm 80% các giao dịch. 20% còn lại là các kỹ bạn lạ, kịch bản nâng cao. Đó là các kịch bản đa chữ ký, kịch bản trả đến mã băm kịch bản.
- Mạng bitcoin
Bitcoin được xây dựng như 1 kiến trúc mạng ngang hàng (peer to peer – P2P) ở tầng trên cùng của internet. Các máy tính sẽ đồng cấp với nhau và không có sự phân biệt về thứ bậc. Các nút trong mạng P2P vừa cung cấp và đồng thời sử dụng dịch vụ, mối quan hệ tương hỗ đóng vai trò động lực khích lệ sự tham gia của các thành viên. Mạng P2P mang tính mở, linh hoạt, và phi tập trung.
1 nút mạng bitcoin đầy đủ sẽ gồm 4 chức năng: ví, đào, cơ sở dữ liệu blockchain đầy đủ và nút định tuyến mạng. Có nhiều cách cài đặt các nút mạng, có những rút rút gọn, có nút chuyên đào,… hiện nay các nút là các ví rút gọn đang chiếm khá nhiều để cài trên điện thoại thông minh nơi bị hạn chế tài nguyên. Mang bitcoin có khảng 5-8k các nút lắng nghe với năng lực xử lý mạnh hơn và phát tán mật độ cao hơn. Bên cạnh đó là các mạng chuyển tiếp bitcoin giúp gia tăng hoạt động xác nhận giao dịch thay vì chờ đợi 10’ như mạng Bitcoin P2P. Khi 1 nút mới tham gia, nó sẽ được giao các hạt giống DNS để tìm các nút mạng ngang hàng nhằm kết nối vào mạng lưới. 1 nút đầy đủ sẽ lấ các bản kiểm kê giao dịch về máy của mình và có thể mất 2-3 ngày để load về với dung lượng lữu trũ lên tới 100GB dữ liệu. các nút đầy đủ sẽ tự xác thực được các giao dịch mà không bị phụ thuộc vào các nút khác. Trong khi các nút giảm lược (SPV) thì sẽ chỉ lưu trữ bằng 1/1000 lần so với blockchain đầy đủ và chạy trên các thiết bị hạn chế về nguồn lực.
- Blockchain
Cấu trúc dữ liệu blockchain là 1 danh sách backlink gồm các block giao dịch được xếp thứ tự. Phần mềm bitcoin core lưu trữ dữ siêu liệu blockchain bằng csdl LevelDB của Google. Các block được liên kết “ngược trở lại” (Backlink), mỗi block tham chiếu đến block trước đó trong chuỗi. Blockchain thường được hình như như ngăn xếp theo chiều dọc, trong đó các block xếp chồng lên nhau và block đàu tiên đóng vai trò nền tảng của ngăn xếp.
Mỗi block có 1 block mẹ là block liền trước nó để từ đó liên kết truy về được block gốc theo 1 chuỗi xích. Tuy nhiên, trong 1 lúc nào đó 1 mẹ có thể có nhiều con khi nhiều người cùng đào ra các block tạm thời trước khi được xác nhận. Nhưng sau đó sẽ vẫn chỉ có 1 block tiếp theo block hiện tại được tồn tại tiếp tục để tiếp tục chuỗi. Vì vậy, khi 1 block mẹ bị thay đổi nó sẽ làm thay đổi các block con phía sau và việc tính toàn này tốn kém năng lượng rất lớn, nó cũng giúp block càng sâu càng ổn định và hầu như không có thay đổi, chống lại các đợt tấn công sửa đổi vì việc phải tính toán lai các chuỗi phía sau quá lớn.
Block là 1 cấu trúc dữ liệu dạng container, nó gom lại các giao dịch để đưa vào sổ cái công khai, tức blockchain. Block sẽ bao gồm 1 tiêu đề chứa siêu dữ liệu, theo sau là 1 danh sách dài các giao dịch, chiếm phần lớn kích thước của block. Tiêu đề block chiếm 0 byte, trong khi 1 giao dịch thường chiếm 250byte, mỗi block thường chứa >500 giao dịch. 1 block hoàn chỉnh với toàn bộ các giao dịch, sẽ lớn hơn tiêu đề block khoảng 1.000 lần.
Tiêu đề của block bao gồm 3 bộ siêu dữ liệu block:
- 1 tham chiếu tới 1 mã băm của block kế trước (32 byte)
- 1 siêu dữ liệu được đặt tên là độ khó (4 byte), nhãn thời gian (4 byte), nà nonce (4 byte) liên quan đến việc cạnh tranh đào
- Phần thứ và là gốc cây merkle (32 byte), 1 cấu trúc dữ liệu được sử dụng để tóm tắt 1 cách hiệu quả toàn bộ các giao dịch trong block.
- Đào và đồng thuận
Việc đào bảo mật hệ thống bitcoin và cho phép sự xuất hiện của đồng thuận toàn mạng lưới mà không cần 1 cơ quan quyền lực trung tâm. Đào không phải là mục đích tạo ra bitcoin. Nó chỉ là phần thưởng khuyến khích từ hệt hống. Đào chính là cơ chế làm nền tảng cho phòng thanht oán phi tập trung, qua đó các giao dịch được xác thực và thanh toán. Các thợ đào nhận được bitcoin mới và 1 phần là phí giao dịch khi xác nhận. Để kiếm được phần thưởng này, các thợ đào phải cạnh tranh để giải quyết 1 vấn đề toán học khó khăn dựa trên 1 thuật toán băm mật mã. Giải pháp cho vấn đề này, được gọi là bằng chứng xử lý, được bao gồm trong block mới và đóng vai trò là bằng chứng cho thấy người đào đã có nỗ lực tính toán rất lớn. Sự cạnh tranh để giải quyết thuật toán bằng chứng xử lý nhằ kiếm phần thưởng và quyền ghi các gao dịch lên blockchain là cơ sở cho mô hình bảo mật của bitcoin.
Việc tạo bitcon này sẽ giảm ½ sau mỗi 210.000 block ~ khoảng 4 năm sẽ giảm 1 nửa. Ban đầu mỗi block chứa 50 bitcoin, sau đó giảm xuống 25 bitcoin vào năm 2012 và còn 12,5 bitcoin vào năm 2016,..Tới 2140 sau khi bitcoin được khai thác hết, các thợ đào bitcoin chỉ còn kiếm được tiền từ phí giao dịch.
Đồng thuận phi tập trung
Cơ chế phi tập trung cho đồng thuận nổi bật. Nổi bật, bởi vì sự nhất trí không đạt được 1 cách rõ ràng, không có biểu quyết hoặc thời điểm chính xác khi sự đồng thuận xảy ra. Thay vào đó, sự đồng thuận la 1 giả tưởng nổi bật của sự tương tác không đồng bộ của hàng ngàn nút độc lập, tất cả đều tuân theo những quy tắc đơn giản. có 4 tiến trình xảy ra độc lập tại các nút trên toàn mạng lưới:
- Xác minh độc lập mỗi giao dịch bởi từng nút đầy đủ, dựa trên 1 danh sách toàn diện các tiêu chí
- Tổng hợp độc lập các giao dịch đó thành các lock mới bởi các nút đào, kết hợp với việc tính toán được thể hiện qua 1 thuật toán bằng chứng xử lý
- Xác minh độc lập block mới bởi từng nút và tổng hợp vào 1 chuỗi
- Lựa chọn độc lập, bởi từng nút, chuỗi có tính toán lũy tích nhất được thể hiện qua bằng chứng xử lý.
Các loạt động tấn công vào mạng bitcoi vẫn có thể diễn ra được dưới dạng các đợt tấn công lặp chi. Họ có thể sửa lại các giao dịch tới 6-7 block trước đó hoặc sâu hơn 1 chút. Nhưng rất khó để sửa đổi lại từ đầu vì mức độ tính toán quá lớn. Nhưng hoàn toàn hệ thống có thể bị kiểm soát bởi các block vừa mới hình thành trở về sau nếu có mạng lưới thợ đào chiếm 51% trở lên hệ thống đang liên kết với nhau thực hiện điều này. Điều này bằng cách họ tạo các phân nhánh mới dài hơn bên nhánh họ kiểm soát để thực hiện việc lặp chi và loại bỏ dần các block ở phân nhánh yếu hơn.
- An toàn bitcoin
Bitcoin là sự sở hữu 10/10 hoàn toàn nắm trong tay của người tham gia mạng lưới này. Chìa khóa trong ví có thể sao lưu ở nhiều định dạng khác nhau. Nguyên tắc cốt lõi trong bitcoin là phi tập trung và nó có ý nghĩa quan trọng đối với an toàn. Hệ thống truyền thống sẽ kiểm soát quyên truy cập và tập trung để loại bỏ kẻ xấu, còn mạng lưới phi tập trung lại đẩy trách nhiệm về quyền kiêm soát đến cho những người sử dụng. Giao dịch trong bitcoin không tiết lộ thông tin cá nhân, nó chỉ xác nhận người chi tiêu có đủ tiền để chi tiêu hay không và đó là chi tiêu hợp lệ. Người dùng cần tự bảo vệ sao lưu bitcoin của mình ở các loại ví khác nhau, như chỉ lưu trũ 5% ở ví nóng, còn lại lưu ở ví lạnh, ở các ví phần cứng, máy tính, cất trữ,…
- Các ứng dụng blockchain
Hệ thống bitcoin được thiết kế như 1 hệ thống tiền tệ và thanh toán phi tập trung chạy với nền tảng bên dưới và không bao gồm các hệ thống dễ hiểu với người dùng cuối cùng. Vì vậy, blockchain bitcoin có thể trở thành 1 nền tảng ứng dụng cung cấp các dịch vụ đáng tin cậy cho các ứng dụng, chẳng hạn như các hợp đồng thông minh, vượt xa mục đích ban đầu của tiền tệ và thanh toán số.
Coin nhuộm màu: Đây là việc đơn vị coin được gán với các giá trị khác để theo dõi các giao dịch bên ngoài trên nền tảng bitcoin. Tài sản số coin muộn mầu có thể ddaijd iện cho các tài sản vô hình nwhu chứng chỉ cổ phiếu, giấy phép, tài sản ảo (đồ vật trong game), hoặc các loại giấy phép hay hình thức sở hữu trí tuệ nào đó.
Counterparty: đây là 1 lớp giao thức được xây dựng bên trên bitcoin. Giao thức Counterparty, tương tự như coin nhuộn màu, cung cấp khả năng tạo ra và buôn bán các tài sản ảo và các thẻ (token). Ngoài ra, counterparty cung cấp 1 sàn giao dịch phi tập trung dành cho các tài sản. Nó cũng đang thực hiện các hợp đồng thông minh, dự trên máy ảo etheremum.