LapTrinhBlockchain

Chia sẻ kiến thức về Lập Trình Blockchain

An toàn Bảo mật, Kiến thức Blockchain, Lập trình Blockchain, Nâng cao Kiến thức

Tìm hiểu nền tảng kỹ thuật cơ bản sử dụng trong blockchain Bitcoin và một số nền tảng blockchain khác

Tìm hiểu nền tảng kỹ thuật cơ bản sử dụng trong blockchain Bitcoin và một số nền tảng blockchain khác

Tìm hiểu nền tảng kỹ thuật cơ bản sử dụng trong blockchain Bitcoin và một số nền tảng blockchain khác

Chia sẻ bài viết
5
(86)

Nếu bạn nào muốn tìm hiểu sâu hơn về mặt kỹ thuật sử dụng trong blockchain của Bitcoin thì mọi người nên xem video của thầy Tuấn: Lý thuyết toán học và nền tảng Blockchain cơ bản – Mathematical Model and Blockchain Fundamental. Nhưng video này khá dài, để tìm lại được thông tin khá mất thời gian, nên mình tóm tắt lại trong bài viết này để tiện cho việc xem lại sau này.

Mục lục

Nguồn gốc ra đời của Blockchain

Giá trị tài sản và câu chuyện NIỀM TIN

Chúng ta nói về hai bức tranh nổi tiếng trên thế giới:

  • Bức tranh “Salvator Mundi” của “Leonardo da Vinci” trị giá trên 450 triệu $
  • Bức tranh “Mona Lisa” của “Leonardo da Vinci” trị giá trên 1 tỷ $
Bức tranh "Salvator Mundi" của "Leonardo da Vinci" trị giá trên 450 triệu $
Bức tranh "Mona Lisa" của "Leonardo da Vinci" trị giá trên 1 tỷ $

Câu hỏi đặt ra là tại sao hai bức tranh này lại có giá trị lớn như vậy? Đánh giá bức tranh ở các khía cạnh:

  • Khía cạnh vật chất: Nếu như bức tranh được làm bằng vàng, kim cương hay Titan thì giá trị vật chất của nó cũng không thể đến 1 tỷ $ như thế này.
  • Khía cạnh nghệ thuật: Hiện tại có nhiều bức tranh giá giống hệt như thật, với những họa sỹ thông thường nhìn sẽ không thể nào phân biệt được thật giả và chỉ có chuyên gia mới có thể phân biệt được thật giả. Nên khó có thể căn cứ vào giá trị nghệ thuật để định giá được.
  • Khía cạnh quý hiếm: Nhiều người nó hiếm và là tác phẩm của tác giả nổi tiếng, đây cũng là một khía cạnh để định giá.

Một trong những lý do chính khiến hai bức tranh này trở nên đắt đỏ như vậy là câu chuyện của “NIỀM TIN“. Mọi người đều tin rằng bức tranh này rất là nổi tiếng, ai cũng muốn sở hữu nó, chính vì thế giá của chúng ngày càng cao lên.

Quay lại với Blockchain và Bitcoin, có thời điểm Bitcoin lên tới 70 nghìn đô, người ta cũng đặt câu hỏi Bitcoin là gì mà giá trị của nó lại lớn như thế. Cũng có nhiều lý giải do Chi phí đào lớn, tốn nhiều năng lượng => Nhưng thời điểm đầu đào nó thì rất dễ và không mất nhiều năng lượng.

Và cuối cùng vẫn là câu chuyện “NIỀM TIN”, mọi người đều tin Bitcoin có giá trị, do đó nhu cầu sở hữu Bitcoin ngày càng cao, cầu tăng thì giá sẽ tăng. Tương tự như trong chứng khoán, khi người ta tin người ta sẽ đầu tư, trong tài số cũng vậy. Vấn đề cốt lõi là NIỀM TIN và blockchain ra đời để giải quyết vấn đề này.

Dữ liệu: Thách thức của thời đại kỹ thuật số và Cách mạng công nghệ 4.0

Các công nghệ mới (AI, BIG DATA, IoT) gần đây thì mấu chốt vẫn là DỮ LIỆU (DATA), dữ liệu là đầu vào của công nghệ này, cũng ra đầu ra của công nghệ kia. Khi nói tới chuyển đổi số thì tất cả đều xoay quanh DỮ LIỆU. Trong một thời gian không xa nữa, cả thế giới sẽ phụ thuộc vào DỮ LIỆU số. Ở Việt Nam đã hình thành cơ sở dữ liệu quốc gia về dân cư, cơ sở dữ liệu đất đai,… Chuyển đổi số sẽ làm thay đổi tất cả cách chúng ta làm việc, cách chúng ta sống, phương thức làm việc, phương thức lao động sản xuất…

Khi tất cả đều phụ thuộc vào DỮ LIỆU thì vấn đề đặt ra là thế giới của chúng ta sẽ như thế nào nếu DỮ LIỆU không có độ tin cậy? Nếu dữ liệu sai sẽ dẫn tới quyết định sai, và có thể dẫn tới thảm họa lớn: Dữ liệụ dùng để điều hành bay

Và thời đại công nghệ số và Internet cũng sẽ xuất hiện một số vấn đề:

  • Dễ dàng sao chép/nhân bản không một chút sai lệch (Kể cả giá trị tiền tệ)
  • Khó giữ bản quyền, khó xác định được nguồn gốc và giá trị bản copy thấp
  • Chưa có giải pháp đảm bảo tính duy nhất của dữ liệu số: Khó đảm bảo nên hạn chế

Hiện tại hầu hết dữ liệu đang được lưu tập trung => Gọi là Độc tài dữ liệu:

  • Facebook, Google, Cloud computing
  • Phần cứng + Phần mềm + Vận hành => Đến từ 1 nhà cung cấp
  • Không có chứng minh tính đúng đắn và minh bạch để tránh gian lận nội tại:
    • Các công ty lớn họ không mở mã nguồn để cộng đồng xem cách hoạt động như thế nào => Do đó họ chưa chứng minh được tính đúng đắn và minh bạch của dữ liệu
    • Cách đây 2 năm Facebook bị phạt do họ lấy dữ liệu của người dùng bán cho bên khác => Mức phạt cao nhất lên tới 5 tỷ $
    • Có nhiều thuyết âm mưu cho rằng Facebook có thể dễ dàng thao túng tâm lý, định hướng dư luận bằng cách BẬT/TẮT các thông tin đến người dùng.
      • Ví dụ họ muốn ủng hộ ứng viên nào đó thì họ chỉ đưa tin tốt về ứng viên đó và thông tin tiêu cực họ không đưa.
      • Và ngược lại, FB muốn triệt ha ai thì họ đưa thông tin tiêu cực lên và không đưa thông tin tích cực.
    • Nhiều trường gian lận do chính nhân viên chứ không phải do hacker. Nhiều nhân viên quản trị có quyền tiếp cận với dữ liệu, họ dễ dàng thay đổi, mặc dù các tổ chức có thể đưa ra các quy trình có thể gọi là nghiêm ngặt để hạn chế nhưng dù sao khi nó vẫn phụ thuộc vào con người thì nó vẫn là một điểm yếu.
    • Ví dụ chúng ta xây dựng một trang web thì chúng ta có toàn quyền với máy chủ đó, chúng ta thích đưa dữ liệu nào lên hoàn toàn do chúng ta.
  • Digital Transformation, CMCN (Cách mạng công nghệ) 4.0, Go Paperless => Cả thế giới phụ thuộc vào dữ liệu
  • Chưa có giải pháp hữu hiệu đảm bảo độ tin cậy của dữ liệu trong các hệ thống CNTT (Công nghệ thông tin) truyền thống.
  • Người dùng bắt buộc phải tin dùng sản phẩm và dịch vụ
  • Trong thế giới mạng xã hội hiện nay, các giao dịch thực hiện qua niềm tin

Trong diễn đàn chống hàng giả, có rất nhiều các giải pháp truy xuất nguồn gốc, hầu hết các giải pháp không dùng blockchain thì nó chỉ là giải pháp truy xuất thông tin thôi chứ không thể nói là truy xuất nguồn gốc. Bởi vì nếu không có blockchain, cho dù lưu lại được thông tin cả chuỗi nhưng mà người quản trị người ta vẫn có thể thay đổi được.

Và vai trò của BLOCKCHAIN ở đây là nó để đảm bảo độ TIN CẬY của dữ liệu bằng TOÁN HỌC, bằng ĐỘ PHỨC TẠP của THUẬT TOÁN, đảm bảo tính TOÀN VẸN của DỮ LIỆU để không ai có thể thay đổi được. Tất nhiên là tuyệt đối thì không nhưng mà chi phí để thay đổi một dữ liệu cực kỳ tốn kém. Vì vậy, trong các nền tảng blockchain thì cho dù là Admin cũng khó có thể thay đổi được dữ liệu.

Tìm hiểu kiến thức cơ bản về blockchain

Lịch sử của blockchain

Satoshi Nakamoto đưa bài báo về Bitcoin vào năm 2008, nhưng những ý tưởng về các thành phần của blockchain đã xuất phát từ cách đó nhiều năm:

  • Năm 1991, Stuart Haber và W. Scott Stornetta đặt nền móng cho công nghệ Blockchain với ý tưởng về một hệ thống sổ cái kỹ thuật số được bảo mật bằng mật mã. Hệ thống của họ cho phép theo dõi các thay đổi đối với tài liệu một cách minh bạch và không thể thay đổi, đặt nền tảng cho những gì sau này sẽ trở thành Blockchain
  • Năm 1992, Bayer, HarberStornetta đã sử dụng Merkle Tree để đóng dấu thời gian và xác minh tài liệu kỹ thuật số. Kỹ thuật này cải thiện hiệu quả bằng cách kết hợp đóng dấu thời gian của nhiều tài liệu thành một khối. Sau này Merkle Tree được dùng phổ biến trong Blockchain.
  • Năm 2005, Nick Szabo đã đề xuất ra hệ thống tương tự như Blockchain và có cả Smart Contract
  • Ngoài ra còn:
    • Mạng ngang hàng P2P của Bit Torrent
    • Các hệ mật công khai
    • Thuật toán Hashcash và bài toán Proof-Of-Work

Mình có tìm được ảnh đầy đủ hơn về các nghiên cứu liên quan trước khi Bitcoin ra đời:

Các nghiên cứu liên quan trước khi Bitcoin ra đời

Tất cả đều là nền tảng để hình thành Blockchain:

  • Năm 2009, Bitcoin hoạt động
  • Ethereum ra đời năm 2014, đến năm 2016 thì Ethereum nổi lên top 2 với Smart Contract
  • Làn sóng 2017:
    • Raiden & Lightning network
    • EOS/NEO platform
    • Augur/Factom
    • IPFS
    • IOTA

Giá trị của Bitcoin tăng mạnh theo thời gian:

  • Đầu tư 1 USD cho Bitcoin vào năm 2009 => Mua được 1/0.0001 = 10,000 BTC
  • Giá trị vào ngày 20/10/2021:
    • Giá trị quy đổi BTC=69,000 USD
    • Giá trị đầu tư quy đổi: Từ 1 USD thành 690 triệu USD (Tương đương 17 nghìn tỷ VNĐ)

Và người ta cho rằng Bitcoin là làn sóng điện toán thứ 5:

  • Làn sóng 1: Mainframe năm 1970s
  • Làn sóng 2: PC năm 1980s
  • Làn sóng 3: Internet năm 1990s
  • Làn sóng 4: Social-Mobile năm 2000s
  • Làn sóng 5: Connected World of Bitcoin năm 2010s

Các ứng dụng của blockchain

Một số ứng dụng của blockchain:

  • Tính đến năm 2020 sẽ có khoảng 30 tỷ thiết bị Internet of Things (IoT) gồm sensors, smartphones, tablets, laptops, quantified self-tracking devices (Fitbit), smart home, smart car, và smart city kết nối với mạng Internet => Giao tiếp giữa máy với máy nhiều hơn giao tiếp giữa người với máy, và trong trường hợp như vậy thì blockchain sẽ đóng vai trò đảm nhiệm cũng như xác thực độ tin cậy dữ liệu tốt hơn.
  • Từ khi blockchain ra đời, nó tạo ra một nền kinh tế mới, nền kinh tế của micropayment (Vi thanh toán) cho phép mở ra các dịch vụ thanh toán mới có mức phí nhỏ vô hạn.

Triết lý của blockchain

Năm 2008 là năm suy thoái toàn cầu, một loạt các ngân hàng lâu đời ở Mỹ bị sụp đổ, bởi có những gian lận trong hệ thống ngân hàng, nên niềm tin vào hệ thống ngân hàng bị sụp đổ. Satoshi Nakamoto mới đưa ra một nền tảng thanh toán không phụ thuộc vào các ngân hàng, không qua trung gian, mọi thứ minh bạch và không bị sự can thiệp của con người. Để làm được điều này, ông đưa ra:

  • Thống nhất 1 luật chung => Luật này được biểu diễn bằng 1 thuật toán => Xây dựng thành phần mềm => Hệ thống sẽ điều khiển vận hành tự động (Thể hiện “Code is law“)
  • Phần lớn các blockchain đều mở mã nguồn, mở dữ liệu hãy sổ cái => Minh bạch => Tạo niềm tin. Trong xã hội bình thường, giao dịch thực hiện thông qua niềm tin, nhưng trong blockchain thì mọi người không cần tin tưởng lẫn nhau, nhưng mọi người phải có niềm tin hệ thống.
  • Dân chủ công bằng

Định nghĩ, ưu điểm và các thành phần của Blockchain

Blockchain là một cơ sở dữ liệu phân tán, được sử dụng để lưu trữ thông tin một cách an toàn và bảo mật. Thông tin trong Blockchain được lưu trữ dưới dạng các khối, mỗi khối chứa một nhóm các giao dịch. Các khối được liên kết với nhau bằng một mã hóa phức tạp, khiến chúng không thể bị thay đổi hoặc sửa chữa.

Ưu điểm của Blockchain:

  • An toàn và bảo mật: Blockchain là một cơ sở dữ liệu phân tán, dữ liệu được niêm phong khiến nó rất khó bị tấn công.
  • Minh bạch: Mọi giao dịch trên Blockchain đều có thể được lưu trữ công khai, vì vậy có thể truy cập và kiểm tra.
  • Tăng cường hiệu quả: Blockchain có thể giúp các doanh nghiệp tiết kiệm thời gian và chi phí, bằng cách tự động hóa các quy trình và cung cấp moọt cách thức mới để trao đổi thông tin.

Các thành phần của blockchain: Bao gồm 5 thành phần

  • Distributed Ledger (Sổ cái phân tán): Ghi giao dịch thành khối
  • Peep-To-Peer Network (Mạng ngang hàng)
  • Cryptography (Mật mã): Dùng các thuật toán Băm (Hash) và Chữ ký số
  • Consensus (Thuật toán đồng thuận)
  • Smart Contract (Hợp đồng thông minh)

Trong các thành phần này có thể nói Cryptography là cốt lõi.

Các thành phần của blockchain

Blockchain trong bối cảnh chuyển đổi số:

  • Đảm bảo tính toàn vẹn và tin cậy của dữ liệu số:
    • Hạn chế sửa đổi dữ liệu không được phép (Chống kẻ địch, hacker, admin)
    • Bảo đảm tính sống còn của hệ thống
    • Bảo đảm tính pháp lý của dữ liệu (Chữ ký số)
  • Cơ hội đột phá trong nền kinh tế số:
    • Đột biến về giá trị Bitcoin
    • Tại Việt Nam: Dẫn đầu thế giới về thị trường Games
    • Công ty Sky Mavis (Axie Infinity) thành lập được vài năm với vài chục người, nhưng vào tháng 07/0221 đã đạt vốn hóa 9.7 tỷ USD trong khi đó FPT với hơn 30 nghìn người trong bao nhiêu năm mà vốn hóa chỉ hơn 3 tỷ USD
    • Quyết định số 2117/QĐ-TTg ngày 16 tháng 12 năm 2020 của Thủ tướng Chính phủ về việc phê duyệt danh mục công nghệ ưu tiên nghiên cứu, phát triển và ứng dụng để chủ động tham gia cuộc cách mạng công nghệ lần thứ tư trong đó Blockchain đứng thứ 4 sau AI, IoT và Bigdata.
    • Dự thảo Chiến lược quốc gia về Blockchain vào tháng 07/2023

Cơ sở toán học của Blockchain

Hai cơ sở toán học quan trọng nhất của Blockchain là:

  • Hệ mật mã đường cong Elliptic
  • Hàm băm

Thầy Tuấn có chia sẻ được gặp giáo sư Neal Koblitz, là một trong hai người phát minh ra đường cong Elliptic vào năm 1985. Tuần trước ông có bài giảng về các hệ mật mã có thể chống được lượng tử, và cách đó 3 ngày IBM công bố máy tính lượng tử 1000 Qubit.

Hàm băm trong blockchain

Thông thường để tiện cho việc quản lý các đối tượng chúng ta thường thực hiện định danh cho đối tượng:

  • Mô hình quản lý an ninh xã hội: Mỗi người có một số CCCD => Là ID để định danh cho cá nhân
  • Mô hình quản lý an ninh xe cộ: Mỗi phương tiện phải có biển số => Để định danh cho xe cộ

Đối với dữ liệu thì mã băm chính là số định danh của dữ liệu. Vậy mã băm là gì? Nhiều người gọi mã băm là vân tay số “Digital fingerprint” của dữ liệu, là bản tóm lược của dữ liệu. Mã băm mang đặc trưng của dữ liệu đầu vào, không thể suy ngược, và là kết quả của hàm băm, phép trọn ngẫu nhiên và lấy đặc trưng. Thông thường mã băm có độ dài cố định.

Lợi ích của mã băm:

  • Giúp kiểm tra tính toàn vẹn của dữ liệu
  • Là công cụ mật mã đảm bảo an toàn giao dịch trong blockchain
  • Mã băm gắn kèm giao dịch giúp đảm bao giao dịch không bị sửa đổi trái phép.
  • So sánh mã băm trước và sau khi truyền dẫn xử lý cho phép kiểm tra tính nguyên vẹn, hợp lệ của giao dịch.

Trong Bitcoin người ta dùng hàm băm SHA256, trong Ethereum người ta dùng hàm băm khác. Sơ đồ hoạt động của hàm băm SHA256 như ảnh dưới.

Sơ đồ hoạt động của hàm băm SHA25

Code triển khai SHA256 như ảnh dưới:

Code triển khai SHA256

Tính chất hàm băm và mã băm:

  • Trong Mật mã học:
    • Kháng tiền ảnh
    • Vào tùy ý, ra cố định
    • Kháng va chạm
    • Dễ tính toán, dễ kiểm tra
    • Gần như không thể thay đổi đầu vào mà không làm thay đổi hoàn toàn đầu ra
    • Cần tất cả các bit dữ liệu đầu vào để băm
    • Kết quả gần như không thể đoán trước
  • Trong thực tiễn:
    • Không suy ngược
    • Tóm lược, thu gọn
    • Đảm bảo tính duy nhất, không trùng, tin cậy
    • Dễ phân biệt
    • Buộc phải chạy máy để tính

Các hàm băm phổ biến trong blockchain: SHA256, RIPEMD, SHA512

Ứng dụng trong blocckhain:

  • Tạo sự ngẫu nhiên khi sinh địa chỉ
  • Tạo mã kiểm tra cho giao dịch
  • Tạo mã kiểm tra cho block
  • Nén toàn bộ giao dịch trong 1 block (Có thể > 1000) chỉ với 1 mã kiểm tra duy nhất 32 bytes
  • Tạo độ khó đảm bảo an toàn khi sinh block mới
  • Giúp tóm lược dữ liệu

Hệ mật mã đường cong Elliptic (ECC – Elliptic Curve Cryptography)

Hệ mật này được dùng rất nhiều trong các hệ thống công nghệ thông tin và trong mật mã học. Phần lớn các thông tin hiện này khi di chuyển trên đường truyền thì đa phần đều được mã hóa thông qua các giao thức như HTTPS, SSL, TLS, SSH, SFTP,… Đường cong Elliptic liên quan tới trao đổi khóa sử dụng các thuật toán mã hóa.

Bây giờ, tất cả các Căn cước công dân (CCCD) có gắn chip thì đều dùng đường cong Elliptics với chữ ký số do bộ Công an cấp, Ngoài ra đường cong Elliptics này cũng được sử dụng trong nhiều bài toán khác:

  • Phân tích ra thừa số nguyên tố
  • Giáo sư Andrew Wiles đã sử dụng lý thuyết của đường cong Elliptics này để chứng minh Định lý Fermat. Định lý này phát biểu rằng:
    Không tồn tại các nghiệm nguyên dương abc thoả mãn an + bn = cn trong đó n là một số nguyên lớn hơn 2.”
    => Cần đến 350 năm định lý này mới được chứng minh bởi Andrew Wiles.
  • Giáo sư Serge Lang đã nói “Có thể viết vô tận về đường cong Elliptic
  • Hiện tại, phần lớn các nền tảng Blockchain đều sử dụng đường cong này (Bitcoin, Ethereum,…). Tuy nhiên có một số nền tảng mới người ta lại dùng đường cong Edwards, một biến thể của đường cong Elliptics.

Đường cong Elliptics là đường cong có phương trình:

Phương trình đường cong Elliptics

Thông thường A, B là các số hữu tỉ, nhưng trong Mật mã học chúng ta khảo sát với A và B là các số nguyên, và x với y là các số nguyên. Cụ thể hơn đối với Bitcoin và Ethereum thì người ta sử dụng hàm đơn giản hơn với A=0 và B=7:

Phương trình đường cong Elliptics sử dụng trong Bitcoin và Ethereum

Thông thường x, y là các số nguyên lớn, thường là 256 bit. Đây là một số rất lớn, trong hệ thập phân nó có 77 chữ số.

Cần chọn điểm P làm điểm cơ sở, phải chọn điểm này làm sao để nó không bị suy biến và nó an toàn, và người ta đã chọn điểm P rất lớn có tọa độ như dưới và đưa vào CHUẨN gọi là chuẩn secp256k1:

P= (55066263022277343669578718895168534326250603453777594175500187360389116729240, 32670510020758816978083085130507043184471273380659243275938904335757337482424)

Người ta định nghĩa phép CỘNG ⨁ làm sao để nó thỏa mãn được đầy đủ các tính chất (Lý thuyết số Nhóm, Vành, Trường):

  • Tính chất ĐÓNG vì nó vẫn nằm trên đường cong.
  • Phải tồn tại một ĐIỂM KHÔNG O (Điểm trung hòa) để: A ⨁ O = A
  • Phải tồn tại một điểm đối xứng hay điểm nghịch đảo.
  • Phải có tính chất giao hoán: A B = B A
  • Phải có tính chất kết hợp: (A B) C = A (B C)
Đường cong Elliptics

Để đảm bảo được các tính chất trên, người ta định nghĩa phép CỘNG như sau:
R = P ⨁ Q
=> Nối điểm PQ cắt đường cong ở điểm thứ 3, người ta gọi điểm đó là -R, rồi người ta lấy đối xứng qua trục x thì sẽ được điểm R. Điểm R được gọi là TỔNG của PQ.

Nếu Q tịnh tiến về điểm P thì đường thẳng nối PQ nó trở thành tiếp tiếp với đường cong tại P và nó sẽ cắt đường cong tại vị trí nữa, lấy đối xứng ta được R. Khi đó, ta viết:
R = P ⨁ P = 2P

Làm tổng quát liên tiếp n lần như vậy ta có:
R = P ⨁ P ⨁ P ⨁ … ⨁ P = nP

Vì P là CHUẨN ai cũng biết, khi biết n ta dễ dàng tìm được ra R. Nhưng nếu biết trước R và P thì bài toán tìm n là bài toán khó và được gọi là bài toán logarithm rời rạc trên EC. Chúng ta chỉ có cách thực hiện VÉT CẠN để tìm ra n. Mà n là số 256 bit, để thực hiện VÉT CẠN được thì máy tính phải mất hàng TỶ TỶ TỶ năm mới giải được. Nguyên tắc hệ mật là tìm bài toán khó, nhưng phải có tính MỘT CHIỀU, tính THUẬN thì DỄ nhưng tính NGƯỢC thì KHÓ. Tức là đối với mình phải DỄ, còn với đối phương thì KHÓ.

Việc tính toán như ảnh dưới, chú ý phép chia theo kiểu modulo:

Ứng dụng cơ sở toán học trong Bitcoin blockchain

Public key và Private Key

Mối quan hệ giữa Private Key và Public Key như sau:

  • Khóa công khai Q được tạo ra từ khóa bí mật d theo công thức: Q = dP
  • Private Key được tạo ra từ số ngẫu nhiên 256 bit. Sử dụng hàm CSPRNG (Cryptographically secure pseudo-random number generator) với seed từ nguồn có đủ lượng Entropy. Trong mã nguồn Bitcoin và Ethereum, họ lấy seed (MẦM) từ nhiều nguồn khác nhau như lấy từ hệ điều hành, trong chip, và số xung nhịp khi máy khởi động lên.

Private Key là số lớn 256 Bit, nếu vét cạn thì mất mấy ngàn tỷ năm. Trong CCCD thì còn sử dụng Private key 384 Bit, không gian còn lớn hơn nữa.

Sinh địa chỉ ví Bitcoin

Cách tạo địa chỉ ví Bitcoin như sau:

  • K là Public Key
  • A = RIPEMD160(SHA256(K))
  • A là số 160 bit tức 20 bytes
  • Tiếp đó sử dụng Base58Check để Encode => Tại sao lại là Base58, có thể giải thích thế này:
    • 10 chữ số từ 0 đến 9
    • 26 kí tự Latin thường và 26 kí tự Latin hoa => 52 kí tự
    • Tổng cộng sẽ có 62 kí tự
    • Nhưng có một số kí tự dễ nhầm lẫn với nhau như Số 0 và chữ O, Chữ I và chũ L => Bỏ đi 4 kí tự o, O, l, L => Còn 58 kí tự
Public key to bitcoin address

Base59Check Encoding

Chữ ký số ECDSA

Trong giao dịch điện tử và trong blockchain thì tất cả các giao dịch đều phải được KÝ SỐ hết. Khi chúng ta thực hiện chuyển Bitcoin thì ứng dụng VÍ của chúng ta sẽ thực hiện công đoạn ký SỐ. Chữ ký số đa phần sử dụng hệ mật đường cong Elliptics và sử dụng thuật toán ECDSA (Elliptic Curve Digital Signature Algorithm – Thuật toán chữ ký số sử dụng đường cong Elliptics).

Các thao tác liên quan chữ ký số:

  • Tạo chữ ký số: Thuật toán ký số ECDSA được dùng trong Bitcoin với văn bản m. Cách tạo chữ ký số như sau (Tất cả tính toán dưới đều dưới dạng số nguyên):
    • Tạo giá trị băm của văn bản: e = SHA256(m)
    • Chọn một số ngẫu nhiên lớn 256 bit, gọi là k => Vì k là số ngẫu nhiên nên với cùng văn bản m và cùng private key thì mỗi lần ký sẽ ra Chữ ký số khác nhau => Để chống tấn công lặp lại Replay
    • Tính điểm R (xr, yr) = kP(xp, yp), trong đó P là điểm cơ sở như đã trình bình phần trên => Chọn r = xr (r là tọa độ x của điểm R)
    • Tính giá trị s = (e + d*r)*k-1 mod p trong đó mod là phép chia lấy phần dư và d là khóa mật hay Private Key => Chữ ký số của m sẽ là cặp giá trị (r, s) => Chữ ký số sẽ bao gồm 2 số 256 bit, tức tổng kích thước là 512 bit.
  • Xác thực chữ ký số: Kiểm tra xem có đúng người ký hay không và văn bản có toàn vẹn hay không? Việc xác thực thực hiện như sau:
    • Tính giá trị băm của văn bản m: e = SHA256(m)
    • Xác thực bằng cách tính điểm V(xv, yv) = s-1 eP + s-1 rQ trong đó Q là khóa công khai => Nếu r = xv thì chữ ký số hợp lệ (Lưu ý khi tính các giá trị số cần phải lấy phần dư của p)
  • Chứng minh tính đúng đắn: Theo công thức ta có Q=dP nên ta biến đổi như sau:
    V = s-1 eP + s-1 rQ = s-1 eP + s-1 r*d*P = s-1 (e + r*d)P = s-1 * s * k * P = kP = R
    Vậy V = Rxr = xv = r

Câu hỏi và thảo luận

Private Key là số 256 bit và liệu máy tính lượng tử có phá được khóa không?

Một bài toán khó là bài toán không có cách nào tính ngược được và khối lượng tính toán tăng theo cấp số mũ. Khi giải một bài toán khó thì các máy tính sẽ phải sử dụng thuật toán vét cạn.

Máy tính lượng tử thì cùng 1 lúc có thể ở nhiều trạng thái, tức cùng một thời điểm có thể tính đồng thời nhiều khả năng, và tốc độ tính toán của nó cũng tăng theo hàm mũ, phụ thuộc vào số lượng qubit. Theo lý thuyết thì máy tính lượng tử có thể thực hiện vét cạn được. Năm 1997, giáo sư Peter Shor đưa ra thuật toán dùng kiến trúc của máy tính lượng tử, có thể giải được bài toán Logarit rời rạc. Với máy tính khoảng 2000 qubit thì có thể giải được Private Key.

Lo ngại này đã xuất phát từ năm 1997, tức từ khá lâu rồi. Nhưng máy tính lượng tử phải hoạt động trong điều kiện khắt khe (Trong điều kiện 0 độ tuyệt đối), thêm nữa độ nhiễu và sai số cao, nên cho dù lượng qubit lớn thì cũng khó có thể giải mã Private Key được. Nhưng trong vòng 5 năm lại đây, các tập đoàn lớn đều đầu tư khá lớn vào máy tính lượng tử, đưa công nghệ này có nhiều đột phá từ 78 qubit lên đến 1000 qubit.

Chưa biết khi nào máy tính lượng tử thực sự có thể phá được Private key, nhưng gần đây đã có nhiều thuật toán KHÁNG LƯỢNG TỬ ra đời. Trong tương lai các mạng lưới blockchain cũng cần phải nâng cấp chữ ký số để đảm bảo chống được máy tính lượng tử.

Blockchain có đảm bảo vấn đề thông tin nguồn gốc là đúng không? Ai sẽ đưa thông tin nguồn gốc lên blockchain và ai sẽ đảm bảo đưa dữ liệu đúng lên blockchain?

Đây là câu hỏi rất nhiều người đặt ra khi nó về bài toán Truy xuất nguồn gốc. Thầy từng làm hệ thống này thì ứng dụng không làm nhiệm vụ xác thực nhà cung cấp đưa lên có đúng hay không mà chỉ xác thực được đúng người đấy đưa thông tin lên blockchain và đúng thời điểm mà người ta đưa lên, chứ không xác thực được thông tin có đúng hay không.

Việc xác thực thông tin có đúng hay không, ví dụ để xác thực quả Xoài này có đúng tiêu chuẩn chất lượng hay không thì phải do cơ quan kiểm định mới có chức năng và chuyên môn để thẩm định, mà hiện tại rất nhiều mặt hàng như thế thì đơn vị công nghệ vừa không có chức năng vừa không có năng lực để xác thực thông tin đó có đúng như nhà sản xuất quảng bá hay không.

Nhưng vẫn phải sử dụng blockchain, vì blockchain nó ghi lại lịch sử, do đó khi có vấn đề xảy ra thì người đó sẽ không thể chối cãi được. Như vậy sử dụng blockchain để sau này đối chiếu, sau này quy trách nhiệm, sau này đánh giá độ uy tín vì đã làm sai thì hệ thống nó lưu vết mãi mãi.

Thầy có thể giải thích kỹ hơn về việc khi hai người giao dịch không cần phải tin nhau mà chỉ cần tin vào hệ thống?

Niềm tin vào hệ thống là niềm tin vào thuật toán vào code => Code hệ thống hoàn toàn mã nguồn mở, cơ sở dữ liệu cũng được public trên mạng lưới => Ai cũng có thể đọc và kiểm tra mã nguồn, ai cũng có thể xem và kiểm tra cơ sở dữ liệu => Có niềm tin vào hệ thống và sử dụng hệ thống.

Trong các nền tảng blockchain, địa chỉ ví không có liên quan gì tới định danh của ai cả, chúng ta gửi vì chúng ta tin vào hệ thống, chứ chúng ta không cần biết ví đó của ai.

Hệ thống ethereum đã từng có vấn đề và phải hardfork, gần đây hệ thống của KyberSwap bị tấn công $50M, vậy vấn đề “Code is law” còn hợp lý, có đảm bảo được sự tin tưởng hệ thống blockchain trong tương lai không?

Phần này thầy Tuấn có trả lời, nhưng thấy chưa đúng trọng tâm lắm nên mình không ghi lại vào đây.

Theo mình bất kỳ hệ thống mới nào thì LUẬT đưa ra trong code ở các phiên bản đầu tiên sẽ chưa thể hoàn thiện ngay được, theo thời gian dần dần hoàn thiện. Khi coi “Code is law” thì chúng ta chấp nhận vấn đề chưa hoàn thiện của nó ở các phiên bản đầu tiên, khi có vấn đề lớn xảy ra thì chúng ta lại cập nhật lại LUẬT thông qua CODE và tạo hardfork để hệ thống ngày càng hoàn thiện hơn.

Người ta nói blockchain bảo mật nhưng lại xảy ra rất nhiều vụ hack?

Gần như chưa có ghi nhận về vụ hack nào vào nền tảng blockchain cả mà thông thường vụ hack xảy ra thường liên quan tới:

  • Hack trực tiếp vào các sàn tập trung => Vấn đề chủ yếu do bảo mật các sàn
  • Hack vào tầng ứng dụng của nền tảng mà chủ yếu là Smart Contract. Smart Contract bản chất là ngôn ngữ lập trình ở phía trên, do các lập trình viên viết contract gây ra lỗ hổng nghiệp vụ.

Trong một số trường hợp thì vấn đề nằm ở độ phi tập trung chua đủ để đảm bảo tính bảo mật cho hệ thống. Điển hình là vụ hack $600M của game Axie Infinity, sử dụng đa chữ ký trong đó chỉ cần 5/9 node đồng ý và hacker đã chiếm được 4 node. 9 node là quá ít để đảm bảo tính bảo mật cho hệ thống.

Bài viết này có hữu ích với bạn?

Kích vào một biểu tượng ngôi sao để đánh giá bài viết!

Xếp hạng trung bình 5 / 5. Số phiếu: 86

Bài viết chưa có đánh giá! Hãy là người đầu tiên đánh giá bài viết này.

Trả lời

Giao diện bởi Anders Norén