Với tiềm năng vượt trội trong việc cung câp một môi trường giám sát, bảo mật và minh bạch cho các giao dịch trực tuyến, blockchain đã thu hút được sự quan tâm và sự quyết tâm trong việc
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHAM ĐÀ NANG
@œ
KHOA TIN HOC
-000 - BAO CAO MON HOC
AN TOAN THONG TIN TIM HIEU VE BLOCKCHAIN
Giáo viên hướng dẫn : Nguyễn Thị Lệ Quyên
Sinh viên thực hiện : Đăng Hữu Ngọc
: Võ Thanh Huy
Trang 2LỜI NÓI ĐẦU
Blockcham là một công nghệ đang trở thành xu hướng và thu hút được sự quan tâm của nhiêu người trong thời gian gân đây Với tiềm năng vượt trội trong việc cung câp
một môi trường giám sát, bảo mật và minh bạch cho các giao dịch trực tuyến, blockchain
đã thu hút được sự quan tâm và sự quyết tâm trong việc tìm hiệu và nghiên cứu về công nghệ này
Bài báo cáo này sẽ tập trung vào việc giới thiệu và nghiên cứu về lĩnh vực blockchain Dau tiên, chúng tôi sẽ cung câp một cái nhìn tông quan về công nghệ blockchain, bao gồm cách hoạt động cơ bán và các thành phân chính của nó Sau đó, chúng tôi sẽ đi vào chi tiết về những ứng dụng tiểm năng của blockchamn trong các lĩnh vực công nghệ thông tmn, tài chính, y tê và những ngành công nghiệp khác
Bên cạnh đó, chúng tôi cũng sẽ xem xét các thách thức và rủi ro có thê phát sinh trong quá trình triển khai và sử dụng blockchain, cũng như những giải pháp tiêm năng đề vượt qua những rào can nay
Qua báo cáo này, chúng tôi hy vọng sẽ giúp độc giả có một cái nhìn tổng quan và sâu sắc về công nghệ blockchain, đồng thời cung câp một nên tảng co bản để tiếp cận và
nghiên cứu về lĩnh vực này
Trang 3
MỤC LỤC
1 Dinh nghiia Blockchain 0 0000000 ccc cccecceececeseeeeeseecessesensseeestssensseeenees 4
1.2 Cấu trúc của Blockchain ¿22+ 21 2212212221211211121121121122211 xe 4.5
1.3 Các hoạt động cơ bản Q1 Q1 H112 112 11119111121 nn H2 kg 5
1.4 Những sự phát triển từ Bitcoim - 5c St TH HH HH HH He 5.6
1.1 Hashmg ĂẶ 2.02220122111122 1111511111111 cr 2111 HH ky 6.7 II na 4 8.9
TỎNG KẾT 55<<< 2 HH HH HHHT 100E71011E.10 E40 E1 ni, 16
1 Kếtluận nh HH HH He gu eo l6
Trang 4I Tên đề tài : Tìm biểu về lĩnh vực Blockchain
II Các khái niệm cơ bản trong Blockchain
1 Định nghĩa Blockchain
1.1
12
Bitcoin va Blockchain
© Bitcoin 1a mot loai déng tiền ảo với hai đóng góp lớn: một hệ thông tiền
tệ kỹ thuật số hoạt động liên tục và một mô hình cho công nghệ ứng dụng phi tập trung tự động được gọi là blockcham Mặc dù trọng tâm
của báo cáo là về một blockchain nói chung, nhưng ta phải hiểu hoạt động của công nghệ đẳng sau Bitcoin đề đánh giá đầy đủ sự đổi mới của blockchain
Bitcoin duge mét ngudi hoac nhiéu người bí ấn tự xung la Satoshi
Nakamoto vao khoang nam 2008, 2009 Bitcoin tao nén mét nén tang
sáng tạo để giao dịch ngang hàng mà không cần đến một cơ quan thâm định trung ương nào Như vậy thì làm thể nào đề Bitcoin có được sự tin tưởng và bảo mật trong giao địch? Bằng cách cài đặt các chương trình phần mềm dành cho kiêm chứng, xác thực, đồng thuận trong một cơ sở
hạ tầng mới gọi là Blockcham
Blockchain (chuỗi khối) là một chuỗi các block, có cầu trúc tương tự như một danh sách liên kết (linked list), mỗi block chứa thông tin của nhiều giao dịch Khác với những phương pháp truyền thống, khi mà 2 người giao dịch với nhau phải thông qua các bên trung gian như ngân hàng, đại lý thẻ tín dụng, thì Blockchain cho phép 2 người giao dich ngang hang (peer-to-peer) nhimg loại tai san kỹ thuật số mà không cần tới các bên trung gian này
Các hoạt động cơ bản
Các hoạt động trong một mạng phi tập trung là trách nhiệm của
những người tham gia ngang hàng và nút tính toán tương ứng của họ - ví dụ như laptop, máy tính bàn và các máy chủ Những hoạt động này bao gồm kiêm chứng giao dich, thu thập các giao dịch cho một khối, truyền ổi giao
Trang 5dịch được bầu chọn trong khối, và đồng thuận trong việc tạo khối nào để
thêm tiếp vào chuỗi tạo thành một bản ghi bất biến
Đầu tiên ta tìm hiệu về phương diện những người tham gia Có 2 vai trò chính cho những người này Đầu tiên là những người khởi tạo việc truyền giao giá trị bằng cách tạo giao dịch, và tiếp đến là những người gọi
là thợ đào - họ thực hiện công việc tính toán bé sung để xác minh giao dịch,
truyền phát giao dịch, cạnh tranh đề yêu cầu quyền tạo khối, làm việc đề
cùng đạt được sự đồng thuận bằng cách xác thực khối, phát khối mới được tạo và xác nhận giao dịch Những người thợ đào sẽ được thưởng bitcoIn dé khuyén khích họ trong việc quản ly blockchain
Việc kiểm chứng giao dịch được thực hiện độc lập bởi tất cả các thợ
đào Quá trình này liên quan đến việc thâm định bằng hơn 20 tiêu chí, bao gồm kích thước, cú pháp, v.v Một số tiêu chí sau đây là: UTXO hợp lệ, UTXO đầu ra tham chiếu là chính xác, lượng đầu vào tham chiếu và lượng
đầu ra khớp đủ Giao địch không hợp lệ sẽ bị từ chối và sẽ không được phát
sóng Tắt cả các giao dịch hợp lệ được thêm vào một nhóm giao dịch Các
thợ đào chọn một tập hợp các giao dịch từ nhóm này đề tạo một khối
Bitcoin blockchain la ma nguồn mở và toàn bộ code có trên Github
Vào những năm ban đầu quanh 2009, mã nguồn mở này được phát trién dé
tạo ra nhiều đồng tiền ảo khác Bitcoin hỗ trợ một tính năng đặc biệt và tùy
chọn gọi la scripts dé chuyén giao giá trị có điều kiện Ethereum
Blockchain đã mở rộng tính năng scripting này thành một nền tàng thực thi
9 code mạnh mẽ gọi là Smart Contracts - Hợp đồng thông minh Một hợp đồng thông minh cung cấp khả năng chạy code cho logic kinh doanh nhúng
trên Blockcham cực kỳ mạnh mẽ Dựa trên những khả năng đó, 3 loại chính
của Blockchain đã phát triển từ nền tảng Bitcoin:
- Loại một xử lý đông tiên trong chuối tiền tệ ảo, ví dụ: Bicoimn
Trang 6- Loại hai hỗ trợ tiền ảo và một lớp logic kinh đoanh được hỗ trợ bởi
việc thực thi code, ví dụ: Ethereum
- Loại ba không liên quan tới tiền ảo nhưng có hỗ trợ thực thi phan mềm cho logic kinh doanh, vi dy: Linux Foundation’s Hyperleger
1 Proof of Work
Một trong những ý tưởng cốt lõi của blockchain đó là bất kì ai cũng phải bỏ ra
nhiều công sức tính toán thì mới có thể thêm đữ liệu vào blockchain Sự an toàn và đồng
nhất của blockchain là nhờ thiết kế này Thêm vào đó, khi bỏ công sức ra để thêm đữ liệu vào blockchain thì người tham gia đó sẽ được trao một phân thưởng (đây là lý do mọi người tham gia đào com)
Cơ chế này tương tự trong đời thực: mỗi người bỏ công sức ra làm việc thì sẽ kiếm được tiền dé chu cấp cho cuộc sông Trong hệ thống blockchain, một số người tham gia dao coin (miners) phải liên tục tính toán dé giúp hệ thống tiếp tục hoạt động, thêm block vào chuỗi và nhận phần thưởng (là coin đào được) Kết quả của việc đào coin (mining) là mỗi block được thêm vào blockchain sẽ càng thêm an toàn, giúp toàn bộ đữ liệu blockchain được ổn định và khó bị giá mạo Nhưng đáng chú ý là những miners này phải chứng minh là họ đã bỏ công sức ra để mining
Việc "bỏ công sức tính toán và chứng minh mình đã làm” này được gọi là proof- of-work Việc này rất khó và thậm chí nhiều máy tính tốc độ cao cũng không thể thực
hiện nhanh chóng Thêm nữa, độ khó của công việc còn được tăng theo thời gian nhằm
đảm bảo chỉ có 6 block được đào trong mỗi giờ Trong Bitcoin, công việc là tìm ra một
mã hash thoả mãn một số điều kiện Mã hash thoả mãn đó được gọi là proof
Một chú ý nữa, thuật toán Proof-of-work phải thoả mãn một điều kiện: tìm ra proof thì khó, nhưng xác nhận proof đó là đúng (verify) thì phải nhanh và đễ Khi một người tìm ra proof đó và đưa cho những người trong mạng lưới kiểm tra thì họ có thể dé dàng verify là đúng
1I Hashing
Mục này chúng ta sẽ tìm hiểu về hàm băm (Hashing) Nếu bạn đã quen thuộc thì có thê
bỏ qua
Trang 7Hashing là tiến trình đề lấy mã băm (hash) của một dữ liệu nhất định Mỗi hash đối với
một đữ liệu (data) là duy nhất Hàm băm (hash function) là một hàm với đầu vào là đữ
liệu có độ lớn tuỳ ý, đầu ra là một hash có kích thước cô định Sau đây là những tính chất
của hàm băm:
1 Dữ liệu gốc không thê tái tạo lại chỉ dựa vào hash của dữ liệu đó Vì thế hash
không phải là mã hoá
2 Một đữ liệu cô định thì chỉ sinh ra một hash có định và không trùng lặp với hash
của đữ liệu khác
3 Thay đôi thậm chí 1 bit dữ liệu nhỏ trong data cũng sinh ra một hash tương ứng hoàn toàn khác ban đầu
“| like donuts”
SHA256( )
{8086 7f6efd4484c23b0e7 184e53fe4af6ab49b9715293fcd50d5b2bfa73a4d0
Ham băm được sử dụng nhiều đề kiểm tra tính toàn vẹn của đữ liệu Ví dụ một số
phần mềm sẽ có mã hash đi kèm đề kiểm tra gói phần mềm chưa qua chỉnh sửa Khi tải gói phần mềm về bạn có thê tinh lai hash của nó đó đề so sánh với mã hash mà nhà phát trién phan mém cung cấp
Trong hé thong blockchain, Hashing được sử dụng dé dam bảo tính toàn vẹn của các block Đầu vào của hàm băm lại có thêm mã hash của block liền kề trước, khiến cho
việc thay đôi một block trong toàn bộ chuỗi là không thê (hoặc gần như không thể): Một
khi một block thay đôi thì phải tính toán lại toàn bộ hash của block đó và các block liên
tiếp phía sau
12 Hashcash
Bitcom sử dụng [lashcash, một thuật toán Proof-o£-Work vốn dùng dé ngăn chặn thư rác Thuật toán được chia làm các bước:
Trang 81 Lấy các dữ liệu đã biết (trong email thì là dia chỉ người nhận, trong Bitcoin thì là block headers)
2 Thêm một biến đếm (counter) vào đữ liệu đó, khỏi đầu bằng 0
._ Tính hash của data + counter
4 Kiểm tra xem hash tính được có thoả mãn điều kiện không:
- _ Nếu thoả mãn thì hash đó là kết qua
- _ Nếu không thoả mãn, tăng biến đếm counter lên và tiếp tục làm lại bước 3, 4
Việc lặp lại tính toán với biến đêm counter cho đến khi tìm được hash thoả mãn nay là một quá trình tính toán với khôi lượng lớn
Bây giờ hãy xem điều kiện hash thoả mãn là gì Trong phiên bản gốc của Hashcash, điều kiện một hash được chấp nhận là "20 bit đầu tiên của hash phải bằng 0"
Ở Bitcoin, điều kiện này lại được thay đổi theo thời gian, bởi, theo thiết kế, mỗi block
phải được tạo ra trong 10 phút, dù cho kha năng tính toán càng ngày càng lớn theo thời
gian và 36 lượng miners
Ví dụ với thuật toán này, data ban dau la (“I like donuts”) khi kết hợp với counter là ca07ca thì kết quả hash thu được có 3 bytes bằng 0:
“| like donutsca07ca”
SHA256( )
0000002f7c1fe31cb82acdc082cfec47620b7e4ab94f2bí9e096c436fc8cee06
ca07ca là giá trị counter trong hé s6 16, trong hé co s6 10 nó tương đương
13240266
Trang 9Như vậy vòng lặp thuật toán phải chạy tới counter = 13240266 mới tìm ra một hash có 3 byte bang 0 Diéu do cho thay bạn phải tốn nhiều công sức tính toán thì mới tìm đc một
hash thoả mãn điều kiện
IV Xây dựng phan code
Đầu tiên chúng ta định nghĩa độ khó
const targetBits = 24
O Bitcoin thi targetBits la m6t bién nam trong block header, thể hiện độ khó của
block đó khi được đào Chúng ta không xây dựng phần thay đổi độ khó cho blockchain
đơn giản này, nên targetBits được thê hiện là một hằng số
24 cũng là một hằng số được chọn ngẫu nhiên, mục đích của chúng ta là chọn một
độ khó bé hơn 256 bifs, không nhỏ quá va cũng không quá lớn vì targetBIts càng lớn thi
độ khó càng tăng thêm nhiều lần
type ProofOfWork struct {
block *Block
target *big.Int
func NewProofOfW ork(b *Block) *ProofOfWork {
target := big NewInt(1)
target.Lsh(target, uint(256-targetBits))
pow := &ProofOfWork {b, target}
return pow
}
Ở đây ProofOfWork là một struct chứa pomter tới | block và một target Biến
target này chính là độ khó Chúng ta sử dụng big.Int để so sánh hash với target: chuyên hash thành big.Int và kiểm tra xem hash có bé hơn target hay không
Trang 10Trong hàm NewProofOfWork chúng ta khởi tạo target bang 1 và shift left (dich
trái) 256 - targetBifs bits 256 là độ dài của một hash sinh ra bởi thuật toán băm SHA-
256 Biêu diễn của target trong hệ 16 là:
0x0000010000000000000000000000000000000000000000000000000000000000
So sánh với 2 mã hash trong 2 ví dụ trước:
0fac49 1ó Iaf82ed938add1d8725835cc123a1Ia87b1b196488360e58d4bfb5Ie3
0000010000000000000000000000000000000000000000000000000000000000 0000008b0£1 Lec78bab747864db66bcb9fb89920eec75f£43fdaaeb5544f7f76ca
Mã hash đầu tiên sinh ra từ đata (“I like đonuts”) lớn hon target, do vay khong thoả mãn điều kiện Mã hash thứ 2 sinh ra từ data (“I like donutsca07ca”) nhỏ hơn target,
vì vậy nó thoả mãn điều kiện
Có thê hình dung target là chặn trên, nếu hash bé hơn chặn trên nay thì thoả mãn,
ngược lại thì không Khi chặn trên này ngày càng hạ xuống, thì số lượng hash thoả mãn
sẽ giảm xuống, đồng nghĩa với việc độ khó tăng lên và cần nhiều tính toán hơn đề tìm hash
Hàm dưới đây chuan bi data dé tim hash:
func (pow *ProofOfWork) prepareData(nonce int) []byte {
data := bytes Join(
[[]byte{
pow block PrevBlockHash,
pow block Data,
IntToHex(pow block Timestamp),
IntToHex(int64(targetBits)),
IntToHex(int64(nonce)),
Trang 11}
[Ibyte{7
)
return data
Chúng ta đơn giản chỉ nhập phần block với targetBits va nonce thành một mảng bytes, hàm hash sẽ thực hiện trên mảng bytes này
func (pow *ProofOfWork) Run() (int, []byte) {
var hashInt big Int
var hash [32]byte
nonce := 0
fmt.Printf("Mining the block containing \"%s\"\n", pow.block.Data) for nonce <maxNonce {
data := pow.prepareData(nonce)
hash = sha256.Sum256(data)
fmt.Printf("\r%x", hash)
hashInt.SetBytes(hash[:])
if hashInt.Cmp(pow.target) == -1 {
break } else {
noncet+