Phác họa bài post:
①
Blockchain
②
Cryptocurrency wallet (ví tiền ảo)
③
Smart contract
④
NFT (Non-Fungible Token)
⑤
Làm thế nào để tạo ra NFT?
-
Chủ đề lần này
tôi xin phép nhàn đàm cùng anh/chị là NFT (Non-Fungible Token). Vì chúng
ta đều là dân kỹ thuật nên tôi xin phép giãi bày “đầu đuôi ngọn ngành” tường tận
để anh/chị hiểu bản chất của NFT. Hy vọng sau khi nhâm nhi cà phê, đọc hết bài
post này, anh/chị sẽ có ngẫu hứng biến các tác phẩm nghệ thuật số của mình
thành các NFT và đưa lên sàn trưng bày cho cryptographic assets metaverse
cùng thưởng ngoạn.
Để giúp anh/chị
quyết định có đọc tiếp hay không, tôi xin phép cung cấp các thông tin liên quan
đến bài post này như sau:
·
Chủ
đề: Blockchain,
Cryptocurrency.
·
Tính
thời sự: Tháng 09/2022.
·
Thời
gian đọc: 8 phút.
① Blockchain
Ngược dòng thời gian, ngày 27/03/2018, tôi có bài đàm luận
trên diễn đàn này với tựa đề “Bitcoin, Blockchain & Satoshi Nakamoto ₿”
(anh/chị có thể xem lại tại đây). Trong
bài đó, chủ yếu tôi đàm luận về bài viết của Satoshi Nakamoto: “Bitcoin: A
Peer-to-Peer Electronic Cash System” (https://bitcoin.org/bitcoin.pdf). Có
thể nói Satoshi Nakamoto “một mình” đã khởi xướng ra hệ thống tiền điện tử - tiền
mã hóa (cryptocurrencies) và khái niệm Blockchain cho cả thế giới
sử dụng rồi sau đó dần rút lui và “biến mất”. Nếu anh/chị có thời gian đọc bài
báo thì sẽ thấy tính cô đọng của bài viết, tôi có cảm giác không thể viết ngắn
hơn được nữa: 8 trang bài viết + 1 trang tham chiếu.
-
Mục tiêu của Satoshi Nakamoto là tạo ra hệ thống tiền điện tử
mà người bán và người mua giao dịch trực tiếp với nhau, không cần thông qua một
đơn vị trung gian. Thách thức lớn nhất là làm thế nào để giải quyết vấn đề “double
spending”: nghĩa là cùng một lượng tiền người ta chi trả nhiều lần cho nhiều
người thì sao? Satoshi Nakamoto cho rằng cách duy nhất để giải quyết vấn đề này
là tất cả các bên tham gia vào hệ thống đều có sổ cái (ledger) ghi lại
toàn bộ các giao dịch. Ai cũng có sổ cái và tất cả các sổ cái đều giống nhau. Hệ
thống hoạt động dựa trên mạng lưới các “nút” (Node) giao dịch trên mạng.
Các nút này thực chất là các máy tính có kết nối Internet.
-
Satoshi Nakamoto đưa ra một ý tưởng mới gọi là block chain
(trong bài báo, hai từ này được viết rời nhau) - tạm dịch là “các khối xâu chuỗi
với nhau”. Các khối này liên kết với nhau theo trục thời gian: cứ khoảng 10
phút sinh ra một khối mới. Khối sau được sinh ra liên kết với tất cả các khối
trước đó theo một quy tắc nhất định, chứ không phải sinh ra một cách bất kỳ. Tất
cả các giao dịch mới đều được đặt vào khối phát sinh sau cùng. Sau khi có khối
mới đã phát sinh thì hệ thống “khóa sổ” các khối trước đó.
Cách các khối liên kết
với nhau theo trục mốc thời gian
(Hình ảnh
được lấy từ bài báo của Satoshi Nakamoto)
Bên lề ▼ Thời gian sinh
ra một block mới
- Đối với Blockchain của Bitcoin,
thời gian phát sinh một khối (block) mới theo quy ước là 10 phút. Tất
nhiên, con số này không hẳn là chính xác tuyệt đối, có thể chênh nhau vài giây.
- Trong hệ thống Ethereum, thời
gian phát sinh một khối mới khoảng từ 10 giây đến 20 giây, trung bình khoảng 14
giây.
Bên lề ▲
-
Satoshi Nakamoto quy định là người đầu tiên tìm ra khối mới
sẽ được “thưởng” một lượng tiền ảo nhất định. Trong thời gian 4 năm đầu tiên, mỗi
một khối mới được thưởng 50 Bitcoins.
Bốn năm tiếp theo lượng thưởng giảm đi một nửa: 25 Bitcoins, bốn năm tiếp theo sau giảm đi tiếp một nửa, chỉ còn 12.5 Bitcoins, … Bằng cách này, các nút ganh
đua nhau tính nhanh để có phần thưởng.
Bên lề ▼ Tổng số coin
là bao nhiêu?
- Do quy định của Satoshi Nakamoto,
tổng số Bitcoin (₿) không vượt quá 21 triệu (anh/chị nào cao thủ về Toán
tính giới hạn theo quy định trên sẽ ra ngay).
- Trong hệ thống Ethereum, số coin
(Ξ) không bị hạn chế.
Bên lề ▲
-
Vấn đề là nếu có một “kẻ gian” muốn sửa đổi các giao dịch đã
“khóa sổ” thì sao? Để giải quyết vấn đề này, ý tưởng của Satoshi Nakamoto là bắt
các nút phải giải một câu đố (puzzle). Cách ra câu đố của Satoshi
Nakamoto là phối hợp phương pháp Hashcash của Adam Back với
một số gọi là Nonce (tạm dịch: độc số).
Hàm hashcash là hàm số “băm” một chuỗi bất kỳ và cho
kết quả là một chuỗi có độ dài cố định (ví dụ 32 bytes). Hàm ngược: cho biết kết
quả băm, việc tái tạo lại chuỗi đã bị băm là không khả thi. Trong Blockchain,
Satoshi Nakamoto dùng phương pháp mật mã hashcash. Phương pháp này độc
đáo ở chỗ: khối sau là kết quả “băm” của tổ hợp của khối ngay phía trước và Nonce.
Kết quả băm này phải nhỏ hơn một “ngưỡng” nào đấy. Thực chất của việc giải hàm
ngược là tăng dần số Nonce, thực hiện hàm băm và xem xem kết quả đã nhỏ
hơn ngưỡng chưa. Satoshi Nakamoto gọi quá trình là Proof-of-Work (tạm dịch:
chứng minh nỗ lực). Khi chạy trong thực tế các nút phải cạnh tranh xem ai là
người đầu tiên tìm ra kết quả băm theo quy định. Người ta chứng minh rằng “ngưỡng”
càng nhỏ thì việc tìm ra kết quả càng khó. Các tài liệu trên mạng gọi đây là độ
khó (dificulty).
Tác dụng của phương pháp hashcash là gì? Nếu có một kẻ
tấn công muốn thay đổi một giao dịch nào đó từ khối K nằm ở giữa chuỗi thì kẻ
đó bắt buộc phải tính lại K cùng toàn bộ các khối tiếp theo K+1, K+2, … và tổng
hợp thời gian tính toán phải nhỏ hơn các nút khác trên mạng chỉ tính toán cho
khối cuối cùng. Xác suất này, theo Satoshi Nakamoto, tiệm cận đến 0 khi chuỗi Blockchain
đủ dài.
Hàm cashhash kết
hợp với độc số Nonce
(Hình ảnh
được lấy từ bài báo của Satoshi Nakamoto)
-
Chúng ta nhận thấy đặc tính của Blockchain:
·
Tất cả các nút có cùng một bản sao của sổ cái (ledger).
·
Sổ cái là một chuỗi các khối (Block). Nhìn
vào hình vẽ: khối sau chứa con trỏ đến hàm “băm” khối ngay phía trước (+ độc số
Nonce), một timestamp (dấu thời gian) và dữ liệu các giao dịch.
Chú ý rằng, ngoài các thông tin này, Block có thể lưu thêm các thông tin
khác (xem phần sau về NFT).
·
Sau khi “đóng sổ” thì không ai có quyền thay đổi
nội dung các khối.
Chỉ bằng thiết kế, với hệ thống mã nguồn mở, Satoshi
Nakamoto đã tạo ra một hệ thống mà ở đó các nút (Node) phối hợp với nhau một cách “an toàn” (secured) mà
không cần đến vai trò trung gian.
Bên lề ▼ Proof-of-Work
vs. Proof-of-Stake
- Proof-of-Work đòi hỏi rất nhiều
tính toán. Đây là điểm bị chỉ trích của Bitcoin:
lãng phí về lượng tính toán (hàng chục nghìn hệ thống cùng làm một việc giống
nhau và độc lập với nhau) và không có cơ chế hợp tác của những người “đào mỏ”.
- Hệ thống Ethereum lúc đầu cũng
cùng nguyên tắc với Bitcoin (nghĩa là
sử dụng Proof-of-Work). Nhưng Ethereum đã chuyển sang phương pháp mới gọi là
Proof-of-Stake. Trong hệ thống Proof-of-Stake, người “đào mỏ” sẽ được thay bằng
“Validator” (người xác nhận). Trong hệ thống này Validator không cần giải bài
“đánh đố” hàm hashcash, nhưng phải đặt cược một lượng tiền ảo (Ether). Nếu
có hành vi gian lận thì lượng tiền này sẽ bị mất (bị hủy: burned). Phần
thưởng cho Validator là phí giao dịch tương ứng với lượng tiền cổ phần đặt cược
(Stake). Cơ chế này làm cho các Validator giàu càng giàu hơn. Người chuyển
tiền phải trả phí giao dịch (cái này giống ngân hàng 😊).
Phí giao dịch và lưu trữ trong Ethereum được gọi là Gas Price (Gas là khái niệm
ảo, không có thật trong đời thường). Năng lượng tiêu tốn của Proof-of-Stake được
cho là chỉ bằng một phần nghìn (1/1000) của Proof-of-Work.
- Ethereum đã khởi động việc chuyển
từ Proof-of-Work sang Proof-of-Stake từ ngày 01/12/2020 và mới hoàn tất vào
ngày 15/09/2022. Như vậy, vào thời điểm của bài post này, Ethereum đã sử dụng
giải pháp Proof-of-Stake.
Bên lề ▲
② Cryptocurrency wallet (ví tiền ảo)
Cũng trong bài báo đó Satoshi Nakamoto đề xuất người mua và
người bán thanh toán, “chuyển khoản” trực tiếp cho nhau mà không cần trung
gian. Việc định danh sử dụng phương pháp Private – PublicKey (mỗi chủ nhân giữ một cặp chìa khóa gồm chìa khóa bí mật: private
key và chìa khóa công khai: public key). Trong mật mã thì phương
pháp này cho đến thời điểm hiện nay chưa ai công bố được phương án “phá” khóa cả.
Như vậy việc định danh, mua – bán đảm bảo tuyệt mật được giải quyết.
Để giúp anh/chị làm tươi bộ nhớ, tôi xin phép giới thiệu vắn
tắt phương pháp này. Giả định có 2 người liên lạc với nhau có tên là Alice và
Bob. Mỗi người đều có một cặp khóa: khóa công khai (Public Key) và khóa
bí mật (Private Key). (Nguồn: https://en.wikipedia.org/wiki/Public-key_cryptography)
· Phát
sinh khóa:
-
· Bob
gửi thông tin cho Alice:
Dùng khoá công khai để
mã hóa, nhưng dùng khoá bí mật để giải mã.
-
· Alice
gửi thông tin cho Bob:
Dùng khoá bí mật để ký một thông báo dùng khoá công khai để xác minh chữ ký.
-
Tóm tắt: ví là nơi chứa thông tin chi tiết của cặp
chìa khóa (Public Key – khóa công khai, Private Key – khóa bí mật).
Các khóa được sử dụng để theo dõi số tiền có trong ví, nhận tiền từ người khác
hoặc chi tiêu tiền. Khóa công khai cho phép người khác biết “địa chỉ ví” để thực
hiện thanh toán, trong khi khóa bí mật cho phép chủ sở hữu chi tiêu tiền (gửi
tiền đến các ví khác).
Chú ý rằng ví không chứa tiền, nó chỉ chứa tham chiếu. Tiền
thực sự nằm trên Blockchain.
③ Smart contract
Bây giờ chúng ta bàn đến chuyện giao dịch trên Blockchain.
Nghĩa là liên quan đến mua, bán tài sản mã hóa. Chú ý rằng việc mua bán này là
thỏa thuận trực tiếp giữa người mua (ví mua) và người bán (ví bán), không qua
trung gian và không có trọng tài nào cả. Đơn giản nhất là một giao thức (protocol)
thỏa thuận mặc nhiên giữa người mua và người bán. Tổng quát hóa, người ta đưa
vào ứng dụng một loại hợp đồng đặc biệt có tên là Smart contract.
Thực chất, dưới góc nhìn kỹ thuật, smart contract là
gì? Đơn giản đó chỉ là một phần mềm máy tính – một chương trình (program).
Tất nhiên chúng ta tò mò về cách thức xử lý một “hợp đồng” (smart contract)
được thực hiện như thế nào? Chúng ta lấy ví dụ: tài khoản A gửi tiền (coins)
cho tài khoản B.
·
Gửi giao dịch từ tài khoản A đến một khối trong Blockchain
(khối phát sinh sau cùng). Giao dịch bao gồm mã chương trình đã được biên dịch
thành ngôn ngữ máy và địa chỉ người nhận (tài khoản B).
·
Tiếp theo, chương trình (đã biên dịch) được kích
hoạt, các dữ liệu trạng thái được ghi vào khối (block).
·
Tiếp theo, các nút (Node) cạnh tranh/thỏa thuận với nhau để tạo ra khối (block)
mới. Xem phần Blockchain ở đầu
bài post.
·
Sau khi các nút cùng chấp thuận khối mới, tất cả
thông tin trong khối đó được “đóng sổ”, không ai được phép thay đổi.
Kết quả thực hiện một smart contract là gì? Kết quả
chung cuộc: tài khoản A gửi cho tài khoản B một lượng tiền (coins).
Trong các bước trung gian, có thể một smart contract trung gian này gửi
tiền cho một smart contract trung gian khác.
Blockchain phổ biến nhất để chạy các smart
contract là Ethereum.
Trong Ethereum, smart contract được lập trình bằng ngôn ngữ Solidity.
④ NFT (Non-Fungible Token)
Non-Fungible Token
(tạm dịch: token không thể thay thế, viết tắt: NFT) là một đơn vị dữ liệu (data)
trên sổ cái (ledger), nghĩa là nằm trên Blockchain. NFT là mã định
danh (identifier - ID) duy nhất không thể sao chép, thay thế hoặc chia
nhỏ, được sử dụng để chứng nhận tính xác thực và quyền sở hữu.
Dưới góc độ kỹ thuật, NFT được lưu trong một khối (block)
của Blockchain. Chúng ta lưu ý thêm về đặc điểm của Blockchain:
dữ liệu, kể cả mã định danh (ID), nằm trong một Block khi đã “khóa sổ”
thì không thể sửa đổi.
Khi ví (Cryptocurrency wallet) sở hữu mã định danh (ID)
thì chủ nhân của ví sẽ sở hữu NFT tương ứng với mã định danh đó.
Mã định danh khác với các đồng tiền mã hóa (như Bitcoin): chúng không cái nào giống cái
nào, mỗi một mã định danh là duy nhất, không hoán đổi được như các đồng tiền mã
hóa. Mỗi một NFT là duy nhất (vì vậy mới có tên là identifier).
Thế mỗi một identifer (ID) tham chiếu đến cái gì? Mỗi
một ID tham chiếu đến một đơn vị dữ liệu số hóa: tác phẩm nghệ thuật, âm thanh,
video, món đồ trong trò chơi điện tử, … Chúng được xem như chứng chỉ xác thực
quyền sở hữu đối với sản phẩm tương ứng.
NFT có thể thay đổi chủ sở hữu. Vì vậy, người ta có thể mua
hoặc bán NFT.
Chúng ta cùng tìm hiểu xem NFT được lưu trên Blockchain như thế nào qua hình ảnh minh
họa sau.
Minh họa NFT được tạo bởi smart contract.
-
Trong hình minh họa ở trên, smart contract cùng với
NFT được lưu trong một khối (block) của Blockchain. Toàn bộ khối
dữ liệu của NFT thường rất ít khi nằm ngay trên Blockchain mà NFT thường là một con trỏ, trỏ đến một tệp dữ liệu nằm
bên ngoài Blockchain. Như vậy cái ví (Cryptocurrency wallet) của
chủ sở hữu không chứa NFT. Ví đó chứa con trỏ và con trỏ này trỏ đến một khối (block)
có chứa NFT trên Blockchain. Đến lượt NFT, trong phần lớn các trường hợp,
cũng chỉ là một mã định danh tham chiếu đến một đơn vị dữ liệu nào đó được lưu
giữ ở bên ngoài Blockchain, trên Internet.
Như vậy, nội dung thực chất của NFT là Digital Media
(truyền thông kỹ thuật số)! Tuy nhiên, NFT có một điểm đặc biệt: chúng có thể
được mua, bán, thương mại và từ đó phát sinh tài sản số (digita assets).
Nội dung của NFT thường là các tác phẩm nghệ thuật kỹ thuật
số (Digital Artwork), tài sản ảo trong trò chơi (in-game assets), âm
nhạc, phim và các nội dung kỹ thuật số khác.
⑤ Làm thế nào để tạo ra NFT?
Để có trải nghiệm, tôi đã mày mò tạo ra NFT. Thì thiên hạ có
NFT, mình cũng phải có chứ! 😊 Mà cũng khá đơn giản, các công cụ có đầy
trên mạng. Sau đây tôi xin thuật lại các bước nhằm tạo ra NFT để anh/chị nào
chưa từng đưa tác phẩm của mình lên sàn NFT có thể tham khảo.
Bước 1: Xác định nội dung của NFT
Do sức sáng tạo của tôi có hạn
nên tôi chọn “tác phẩm” của mình là các bức tranh, ảnh kỹ thuật số. Cái này thì
vào thời điểm hiện nay, một lúc có thể tạo ra hàng chục “tác phẩm”!
Bước 2: Chọn Blockchain
Chúng ta dễ dàng tìm thấy có nhiều
loại Blockchain. Đương nhiên chúng ta
đã biết Blockchain của Bitcoin nhưng đáng tiếc Blockchain này không phổ dụng cho NFT. Bằng
cách “Google Search”, tôi tìm được danh sách các loại Blockchain phổ biến dùng cho NFT là Ethereum, Solana, Polygon, Cardano,
Tezos, …
Tôi chọn Ethereum.
Bước 3: Tạo ví (cryptocurrency wallet)
Để có thể “chứa” NFT, chúng ta bắt
buộc phải có ví. Cũng bằng cách dò la thông qua “Google Search”, tôi thấy có
các loại ví phổ biến là MetaMask, Coinbase Wallet, Ledger Nano X, …
Tôi chọn MetaMask.
(Tôi xin phép không đi vào chi tiết
tạo ví vì điều đó làm cho bài post dài không cần thiết. Trước khi tạo ví,
anh/chị nên đọc kỹ hướng dẫn của phần mềm tạo ví.
Xem thêm mục ② Cryptocurrency wallet (ví tiền ảo) tôi đã giới thiệu ở
trên để tìm hiểu nguyên lý hoạt động của ví.)
Bước 4: Chọn NFT Platform (sàn NFT)
NFT Platform là nơi cho
phép chúng ta tạo NFT, chỉnh sửa tham số các NFT, “niêm yết” (list) các
NFT lên sàn và có thể mua, bán các NFT của các chủ nhân khác. Thấy người ta giới
thiệu một số sàn (Platform) nổi tiếng như OpenSea, Solanart, Crypto
exchanges, …
Tôi chọn OpenSea.
Bước 5: Tạo một NFT
Sau khi có ví và đã chọn sàn (Platform)
thì việc tạo ra một NFT khá đơn giản.
·
Kết nối với ví
·
Chọn “Create”
·
Tải lên file ảnh
·
Điền các thông tin theo hướng dẫn
·
Chọn loại Blockchain
(Ethereum)
·
Nhấn nút Create – Xong.
Bước 6: Đưa lên sàn để chào bán
Sau khi đã có tác phẩm, muốn “niêm
yết” (list) lên sàn (của OpenSea) thì chỉ mỗi việc là nhấn nút “Sell” và
điền đơn giá (đồng ETH).
-
Thế tôi đã đưa lên sàn OpenSea “tác phẩm” nào? Báo cáo với
anh/chị là tôi đã sử dụng công cụ trực tuyến Craiyon.com để vẽ một bức tranh
theo mô hình DALL·E 2 của OpenAI. Bức tranh đó như hình vẽ dưới đây.
Chúc mừng năm mới 2023 và xin gửi đến tất cả anh/chị cùng
gia đình và bạn hữu xa gần lời chúc tốt đẹp nhất!
Không có nhận xét nào:
Đăng nhận xét