Chia sẻ
Bitcoin là gì

Bitcoin là gì?

Bitcoin là hình thức đồng tiền kỹ thuật số được phát hành dưới dạng phần mềm mã nguồn mở.

Bitcoin là gì

Lịch sử hình thành

Bitcoin được phát hành năm 2009 bởi một nhân vật bí ẩn có biệt danh Satoshi Nakamoto. Đồng tiền ảo này có thể được trao đổi trực tiếp bằng thiết bị kết nối Internet mà không cần thông qua một tổ chức tài chính trung gian nào.

Đặc tính

  1.  Giao dịch ẩn danh, Bảo mật cao
  2.  Đồng tiền DUY NHẤT có giới hạn
  3.  Chúng tồn tại như những hồ sơ trên sổ kế toán phân phối được gọi là chuỗi khối (blockchain)
  4.  Dựa trên ECDSA là viết tắt của Elliptic Curve Digital Signature Algorithm – Thuật toán chữ ký điện tử dựa trên đường cong Elliptic.
  5. Được nhiều quốc gia công nhận và sử dụng rộng rãi
  6. Đồng tiền đắt nhất hiện nay

Thuật toán của Bitcoin là gì

Một giao thức như Bitcoin chọn một tập các tham số cho các đường cong elliptic và đại diện trường hữu hạn của nó được cố định cho tất cả người dùng của giao thức. Các thông số bao gồm các phương trình được sử dụng, modulo số nguyên tố của trường này, và một điểm cơ sở nằm trên đường cong. Bậc của điểm cơ sở không được lựa chọn độc lập mà là một hàm của các thông số khác, có thể được xem như số lần điểm đó có thể được cộng vào chính nó cho tới khi độ dốc của nó là vô hạn (tức là một đường thẳng đứng). Các điểm cơ sở được lựa chọn sao cho bậc là một số nguyên tố lớn.

Bitcoin sử dụng con số rất lớn đối với điểm cơ sở của nó, modulo nguyên tố, và bậc. Trong thực tế, tất cả các ứng dụng thực tế của ECDSA sử dụng các giá trị rất lớn. An ninh của các thuật toán bảo mật dựa trên các giá trị lớn, và do đó rất khó hoặc đảo ngược hoặc tấn công bằng cách thử lần lượt (brute-force).

Trong trường hợp của Bitcoin:

Phương trình đường cong Elliptic: y 2 = x 3 + 7

Modulo nguyên tố = 2256 – 232 – 29 – 28 – 27 – 26 – 24 – 1 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F

Điểm cơ sở = 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8

Bậc của điểm = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141

Ai đã chọn những con số này, và tại sao? Một lượng lớn các nghiên cứu, và một lượng kha khá những thuyết âm mưu xung quanh việc lựa chọn các thông số thích hợp. Sau tất cả, một số lớn dường như ngẫu nhiên có thể che giấu một phương pháp backdoor để tìm ra khóa private. Tóm lại, phương thức đặc biệt này có tên là secp256k1 và là một phần của họ đường cong elliptic trên trường vô hạn, mà được đề xuất để sử dụng trong ngành mật mã.

Khóa Private và Khóa Public

Bây giờ chúng ta sẽ tìm hiểu thế nào là khóa public và khóa private, và chúng liên quan với nhau thế nào. Đây là một cách giải thích ngắn gọn: Trong ECDSA, khóa private là một số không đoán được nằm giữa số 1 và bậc của điểm. Khóa public có nguồn gốc từ khóa riêng bằng cách nhân vô hướng điểm cơ sở số lần bằng giá trị của khóa private. Thể hiện như phương trình sau:

Khóa public = khóa private * điểm cơ sở

Điều này cho thấy số lượng tối đa khóa private (là các địa chỉ Bitcoin) là bằng bậc của điểm.

Trong một trường liên tục chúng ta có thể vẽ đường tiếp tuyến và xác định khóa public trên đồ thị, nhưng có một số phương trình có thực hiện điều tương tự trong bối cảnh trường hữu hạn. Từ phép cộng điểm p + q để tìm ra r được xác định như sau:

c = (qy – py) / (qx – px)
rx = c2 – px – qx
ry = c (px – rx) – py

Và từ phép nhân đôi điểm p để tìm ra r là như sau:

c = (3px2 + a) / 2py
rx = c2 – 2px
ry = c (px – rx) – py

Trong thực tế, việc tính toán khóa public được chia thành một số phép toán phép nhân đôi điểm và phép cộng điểm bắt đầu từ điểm cơ sở.

Hãy thử ví dụ với một số cỡ nhỏ, để có được cái nhìn trực giác về cách các khóa được xây dựng và được sử dụng trong việc ký và xác minh. Các thông số chúng tôi sẽ sử dụng là:

Phương trình: y 2 = x 3 + 7 (tức là a = 0 và b = 7)
Modulo nguyên tố: 67
Điểm cơ bản: (2, 22)
Bậc của điểm: 79
Khóa riêng: 2

Trước tiên, hãy tìm khóa public. Vì chúng ta đã lựa chọn khóa private đơn giản nhất có thể với giá trị = 2, chúng ta chỉ cần thực hiện phép toán phép nhân đôi điểm một lần từ điểm cơ sở. Việc tính toán như sau:

c = (3 * 22 + 0) / (2 * 22) mod 67
c = (3 * 4) / (44) mod 67
c = 12 / 44 mod 67

Ở đây chúng ta phải dừng lại một chút: làm thế nào để chúng ta thực hiện phân chia trong bối cảnh của một trường hữu hạn, nơi mà kết quả phải luôn luôn là một số nguyên? Chúng ta phải nhân với nghịch đảo.

Trong trường hợp hiện tại, bạn sẽ phải tin tưởng chúng tôi khi viết rằng:

44-1 = 32

Tiếp tục:

c = 12 * 32 mod 67
c = 384 mod 67
c = 49

rx = (492 – 2 * 2) mod 67
rx = (2401 – 4) mod 67
rx = 2397 mod 67
rx = 52

ry = (49 * (2 – 52) – 22) mod 67
ry = (49 * (-50) – 22) mod 67
ry = (-2450 – 22) mod 67
ry = -2472 mod 67
ry = 7

Khóa public của chúng ta do đó tương ứng với điểm (52, 7). Tất cả chỉ để tính cho khóa riêng bằng 2!

Phép toán này – đi từ khóa private tính ra khóa public – là một phép toán dễ dàng trên máy tính so với nỗ lực làm việc ngược trở lại để suy ra khóa private từ khóa public, khi về mặt lý thuyết việc thể tính toán này là không khả thi do các thông số rất lớn được sử dụng trong mật mã elliptic.

Vì vậy, từ khóa private để tính ra khóa public được thiết kế là chuyến đi một chiều.

Như với khóa private, khóa public thường được đại diện bởi một chuỗi thập lục phân. Đợi đã! Làm thế nào để chúng ta nhận được từ một điểm trên mặt phẳng, được mô tả bởi hai con số, để ra một số duy nhất? Trong một khóa public không được nén, hai số 256-bit đại diện cho các tọa độ x và y được đính với nhau trong một chuỗi ký tự dài. Chúng ta cũng có thể tận dụng lợi thế của tính đối xứng của các đường cong elliptic để tạo ra một khóa public nén, chỉ bằng cách giữ giá trị x và ghi nhận nửa nào của đường cong mà điểm đó nằm trên. Từ phần thông tin này, chúng ta có thể phục hồi cả hai tọa độ.

Ký kết dữ liệu với Khóa Private

Bây giờ chúng ta có một cặp khóa private và khóa public, chúng ta hãy ký một số dữ liệu!

Các dữ liệu có thể chiều dài bất kỳ. Bước bình thường đầu tiên là băm (hash) dữ liệu để tạo ra một số có chứa cùng một số bit (256) như bậc của điểm của đường cong. Ở đây, để đơn giản, chúng ta sẽ bỏ qua bước băm và chỉ ký dữ liệu thô z. Chúng tôi sẽ gọi G là điểm cơ sở, n là bậc của điểm, và d là khóa private. Công thức ký như sau:

  1. Chọn một số nguyên k giữa 1 và n – 1.
  2. Tính điểm (x, y) = k * G, sử dụng phép nhân vô hướng.
  3. Tìm r = x mod n. Nếu r = 0, quay lại bước 1.
  4. Tìm s = (z + r * d) / k mod n. Nếu s = 0, quay lại bước 1.
  5. Chữ ký là cặp (r, s)

Xin nhắc lại, ở bước 4, nếu các con số tính toán ra là số thập phân (thực tế phần lớn sẽ là như vậy), tử số sẽ được nhân với nghịch đảo của mẫu số. Trong bước 1, điều quan trọng là k không được lặp lại trong chữ ký khác nhau và nó không thể đoán bởi một bên thứ ba. Đó là, k nên là số ngẫu nhiên hoặc được tạo ra bởi các phương tiện xác định được giữ bí mật khỏi bên thứ ba. Nếu không, bên thứ ba sẽ có thể để tìm ra khóa private từ bước 4, vì s, z, r, k và n đều được biết.

Hãy chọn dữ liệu của chúng tôi là số 17, và theo các công thức. Các biến số của chúng tôi:

z = 17 (dữ liệu)
n = 79 (bậc của điểm)
G = (2, 22) (điểm cơ bản)
d = 2 (khóa private)
  1. Chọn một số ngẫu nhiên:
k = rand (1, n – 1)
k = rand (1, 79 – 1)
k = 3 (số này thực sự ngẫu nhiên? Không, nhưng nó sẽ đơn giản hóa dụ của chúng ta!)
  1. Tính điểm. Điều này được thực hiện theo cách tương tự như xác định khóa public, nhưng để ngắn gọn chúng ta hãy bỏ qua phép phép cộng điểm và phép nhân đôi điểm số học.
(x, y) = 3G
(x, y) = G + 2G
(x, y) = (2, 22) + (52, 7)
(x, y) = (62, 63)
x = 62
y = 63
  1. Tìm r:
r = x mod n
r = 62 mod 79
r = 62
  1. Tìm s:
s = (z + r * d) / k mod n
s = (17 + 62 * 2) / 3 mod 79
s = (17 + 124) / 3 mod 79
s = 141/3 mod 79
s = 47 mod 79
s = 47

Lưu ý rằng ở phía trên, chúng ta có thể chia cho 3 vì kết quả là một số nguyên. Trong thực tế chúng ta sẽ sử dụng nghịch đảo của k:

s = (z + r * d) / k mod n
s = (17 + 62 * 2) / 3 mod 79
s = (17 + 124) / 3 mod 79
s = 141/3 mod 79
s = 141 * 3-1 mod 79
s = 141 * 53 mod 79
s = 7473 mod 79
s = 47
  1. Chữ ký của chúng ta là cặp (r, s) = (62, 47).

Như với các khóa private và khóa public, chữ ký này thường được đại diện bởi một chuỗi thập lục phân.

Xác minh chữ ký với Khóa Public

Bây giờ chúng ta có một dữ liệu và chữ ký cho dữ liệu đó. Một bên thứ ba có khóa công khai của chúng tôi có thể nhận được dữ liệu và chữ ký của chúng tôi, và xác nhận rằng chúng tôi là người gửi. Hãy xem cách làm việc này.

Với Q là khóa công khai và các biến khác được xác định như trước, các bước để xác minh chữ ký như sau:

  1. Xác minh rằng r và s nằm giữa 1 và n – 1.
  2. Tính w = s-1 mod n
  3. Tính u = z * w mod n
  4. Tính v = r * w mod n
  5. Tính điểm (x, y) = uG + vQ
  6. Xác minh rằng r = x mod n. Chữ ký không hợp lệ nếu nó không đúng.

Hãy thực hiện theo các công thức và xem cách nó hoạt động. Các biến của chúng tôi, một lần nữa là:

z = 17 (dữ liệu)
(r, s) = (62, 47) (chữ ký)
n = 79 (bậc của điểm)
G = (2, 22) (điểm cơ bản)
Q = (52, 7) (khoá public)
  1. Xác minh rằng r và s là giữa 1 và n – 1. Kiểm tra và kiểm tra.
r: 1 <= 62 <79
s: 1 <= 47 <79
  1. Tính toán w:
w = s-1 mod n
w = 47-1 mod 79
w = 37
  1. Tính toán u:
u = zw mod n
u = 17 * 37 mod 79
u = 629 mod 79
u = 76
  1. Tính toán v:
v = rw mod n
v = 62 * 37 mod 79
v = 2294 mod 79
v = 3
  1. Tính điểm (x, y):
(x, y) = uG + vQ

Hãy chia nhỏ phép toán phép cộng điểm và phép nhân đôi điểm trong uG và vQ riêng biệt.

uG = 76G
uG = 2(38G)
uG = 2( 2(19G) )
uG = 2( 2(G + 18G) )
uG = 2( 2(G + 2(9G) ) )
uG = 2( 2(G + 2(G + 8G) ) )
uG = 2( 2(G + 2(G + 2(4G) ) ) )
uG = 2( 2(G + 2(G + 2( 2(2G) ) ) ) )
Hãy suy nghĩ một lát để đánh giá cao việc sử dụng phép nhóm lại như trên chúng ta đã giảm được từ 75 phép phép cộng điểm liên tục để chỉ cần dùng 6 lần phép nhân đôi điểm và 2 lần phép cộng điểm. Những thủ thuật sẽ có ích khi các con số trở nên thực sự lớn.

Làm theo cách của chúng tôi từ trong ra ngoài:

uG = 2( 2(G + 2(G + 2( 2( 2(2, 22) ) ) ) ) )
uG = 2( 2(G + 2(G + 2( 2(52, 7) ) ) ) )
uG = 2( 2(G + 2(G + 2(25, 17)  ) ) )
uG = 2( 2(G + 2( (2, 22) + (21, 42) ) ) )
uG = 2( 2(G + 2(13, 44) ) )
uG = 2( 2( (2, 22) + (66, 26) ) )
uG = 2( 2(38, 26) )
uG = 2(27, 40)
uG = (62, 4)

Và bây giờ cho vQ:

vQ = 3Q
vQ = Q + 2Q
vQ = Q + 2(52, 7)
vQ = (52, 7) + (25, 17)
vQ = (11, 20)

Đưa chúng lại với nhau:

(x, y) = uG + vQ
(x, y) = (62, 4) + (11, 20)
(x, y) = (62, 63)

Rõ ràng bước 5 chứa phần lớn các công việc tính toán. Đối với bước cuối cùng,

  1. Xác minh rằng r = x mod n
r = x mod n
62 = 62 mod 79
62 = 62

Chữ ký của chúng ta là hợp lệ!

Làm sao để “đào” Bitcoin

Khái niệm “đào” trên thực tế là việc Bitcoin được cấp tới các máy tính để trả công cho việc chúng tham gia vào hoạt động xác minh giao dịch và ghi chúng vào một cuốn sổ cái (blockchain). Cuốn sổ này được phân tán trong mạng ngang hàng và sử dụng Bitcoin là đơn vị kế toán. Bitcoin cũng không phải là một đơn vị cụ thể, nó có thể được chia nhỏ hơn nữa tới 100 triệu đơn vị nhỏ hơn gọi là Satoshi, được đặt tên theo người sáng lập.

 

Ban đầu, những người tham gia sử dụng máy tính thông thường để cày Bitcoin. Tuy nhiên, dần dần họ nhận ra khi sử dụng cùng lúc nhiều card đồ họa thì các giao dịch xử lý được thực hiện nhanh hơn. Ngày nay, một bộ máy tính để cày Bitcoin thường được gắn từ 4 tới 6 card đồ họa, có giá khoảng 40-50 triệu đồng. Một số bo mạch đời mới cho phép cài đặt 8 card đồ họa cùng một lúc.

Tuy nhiên, chỉ có một số dòng card như GTX 1060 hay AMD RX 570 là mang lại hiệu quả trên giá thành cao nhất, luôn được các dân cày săn lùng. Cơn sốt Bitcoin đẩy giá card đồ họa lên tới đỉnh điểm, bởi đây là linh kiện thiết yếu và cũng thường xuyên hỏng hóc, phải thay mới sau một thời gian hoạt động. Nhiều người thậm chí mua cả những dòng card đắt tiền hơn về cày, chấp nhận chi phí bị đội lên khá lớn. Bên cạnh tiền mua card đồ họa thì tiền điện và các thiết bị làm mát, thông gió cho khu vực đặt thiết bị cũng chiếm tỷ lệ không nhỏ trong tổng chi phí hoạt động của toàn hệ thống.

Trên thực tế, CPU hay GPU vẫn chưa phải là lựa chọn tốt nhất để đào Bitcoin. Người ta đã tạo ra một con chip riêng biệt cho công việc này, có tên gọi tắt là ASIC. Nó có tác dụng duy nhất là giải mã các hàm với hiệu quả mang lại cao hơn rất nhiều card đồ họa.

Hiện nay, các kiến thức về Bitcoin, kinh nghiệm xây dựng dàn máy, bố trí nhà xưởng, cách khắc phục lỗi xảy ra trong quá trình hoạt động… gần như đều được chia sẻ công khai trên Internet. Người dùng có tiền, chịu đầu tư thời gian công sức đều có thể tham gia sân chơi này.

Nhưng không giống thời kỳ đầu, giờ đây việc “cày” Bitcoin không phải cuộc chơi may mắn. Ai sở hữu dàn máy tính có cấu hình tốt, số lượng nhiều sẽ chiếm được khả năng đào nhiều Bitcoin hơn. Sự cạnh tranh gay gắt giữa các dân “cày” cũng khiến cho tỷ lệ sinh lời giảm, khiến những nhà đầu tư nhỏ lẻ không bù đắp được chi phí và buộc phải tạm dừng cuộc chơi, nhường đất cho các đại gia. Các “nông trường” đào Bitcoin ở các quốc gia lớn, đặc biệt là Trung Quốc, Iceland có tới hàng nghìn bộ máy tính hoạt động liên tục năm này qua năm khác, với chí phí lên tới hàng trăm nghìn USD tiền máy móc, nhà xưởng, linh kiện, điện, hệ thống làm mát. Chúng được xây dựng tại một số địa điểm nhất định trên thế giới như thế này bởi đơn giản tại đây giá điện năng rất rẻ.

Cảnh báo về Bitcoin

Mọi người càng biết về nhiều về Bitcoin cũng như càng hiểu hơn về giá trị của đồng Bitcoin nên giá trị đồng Bitcoin gia tăng không ngừng và đạt nhiều con số kỷ lục về giá. Hiện nay hơn 17000$ cho 1BTC. Giá càng cao thì đầu tư càng rủi ro cũng như nhiều người đầu tư coin thì CƠN SỐT HỮU THỰC càng lớn

Giờ đây, nhiều quốc gia và các tổ chức tài chính trên thế giới đã công nhận Bitcoin và đưa chúng vào hoạt động kinh doanh thực tiễn. Đồng tiền này thậm chí cũng lên xuống, dao động dựa trên tình hình kinh tế chính trị thế giới như khủng hoảng chiến tranh ở Triều Tiên, bầu cử tổng thống Mỹ… Dẫu vậy, một số quốc gia như Trung Quốc, Thái Lan, Nga vẫn cấm giao dịch và có thái độ tiêu cực với đồng tiền ảo này.

Hơn nữa đồng Bitcoin là đồng tiền ảo nên cũng có những rủi ro tiềm tàng về thị trường như không có một chính phủ nào đứng sau cũng như đảm bảo những rủi ro không xảy ra.

 

 

 

No votes yet.
Please wait...

1 BÌNH LUẬN

  1. […] Bitcoin là gì […]

    No votes yet.
    Please wait...

Comments are closed.