Untitled TRƯỜNG ĐẠI HỌC PHENIKAA BÁO CÁO BÀI TẬP LỚN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 20010874 Vũ Thành Long sssssssssssssssssssssssssssss20010874st phenikaa uni edu vn 20010010 Nguyễn Thị B nguyenvanabcst phenikaa uni edu vn Giảng vi.
TRƯỜNG ĐẠI HỌC PHENIKAA BÁO CÁO BÀI TẬP LỚN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 20010874 20010010 Vũ Thành Long 20010874@st.phenikaa-uni.edu.vn Nguyễn Thị B Giảng viên hướng dẫn: Khoa: nguyenvanabc@st.phenikaa-uni.edu.vn Tràn Đăng Hoan Công nghệ thông tin HÀ NỘI, 06/2022 0 Mục Tóm lục tắt Khái niệm blockchain, biết đến rộng rãi tiền tệ ảo, chứng kiến phổ biến rộng rãi thời gian gần Về tính bảo mật chuỗi khối, thuật tốn đồng thuận đóng vai trị quan trọng chuỗi khối Nghiên cứu thực riêng biệt, so sánh vài số chúng trình bày trước Trong báo này, chúng tơi thảo luận thuật toán đồng thuận sử dụng rộng rãi blockchain Các giao thức đồng thuận đề cập báo bao gồm PoW (Bằng chứng công việc), PoS (Bằng chứng cổ phần), DPoS (Bằng chứng ủy quyền cổ phần), PoET (Bằng chứng thời gian trôi qua), PBFT (Khả chịu lỗi Byzantine thực tế) PoA (Bằng chứng Cơ quan) Đối với đồng thuận, chúng tơi xem xét thuộc tính, ứng dụng hiệu suất chuỗi khối Tóm tắt iii Mục lục iv Chương Giới thiệu đề tài 1.1 Đặt vấn đề 1.2 Mục tiêu phạm vi đề tài .2 Chương phân tích giao thức 2.1 Các loại giao thức đồng thuận 2.2 Proof of Work 2.3 Proof of Stake Chương Mô Tả Code Chương triển khai ứng dụng .7 ii 0 iii 0 Chương Giới thiệu đề tài Con người tham gia bn bán từ đầu cơng ngun Một hình thức thương mại ban đầu, hệ thống hàng đổi hàng, thấy trao đổi hàng hóa dịch vụ trực tiếp lấy hàng hóa dịch vụ khác người với người Theo thời gian phát triển, việc phát minh tiền tệ vật chất đơn giản hóa thúc đẩy thương mại nhiều, loại tiền có thách thức riêng liên quan đến nhiều hoạt động gian lận trao đổi tiền giả Do đó, kinh tế toàn cầu chắn bắt đầu hướng tới hệ sinh thái kỹ thuật số liên quan đến giao dịch điện tử chuyển tiền thông qua ngân hàng, tiến có thiếu sót riêng Sự tham gia bên thứ ba chẳng hạn ngân hàng giao dịch phát sinh khoản phí nhỏ người dùng có hội cho hoạt động gian dối Vì vậy, người tồn cầu bắt đầu nỗ lực phân cấp hoàn toàn trình trao đổi giá trị Một bước đột phá lớn thực hiện, Bitcoin, loại tiền điện tử, báo ơng có tiêu đề “Bitcoin: Hệ thống tiền mặt điện tử ngang hàng” Là phần trình triển khai, Nakamoto nghĩ ý tưởng blockchain để đạt phân quyền cho việc chuyển bitcoin ngang hàng sử dụng giao thức đồng thuận để đạt thỏa thuận định khác thực thể mạng blockchain bitcoin 1.1 Đặt vấn đề Mặc dù ý tưởng blockchain đề xuất vào năm 2008 để triển khai bitcoin, giao thức đồng thuận tồn từ năm 1970 Vào năm 1970, nhóm nhà khoa học máy tính bao gồm Leslie Lamport Barbara Liskov bắt đầu suy nghĩ giải pháp cho vấn đề: "Liệu máy đến thống hay không cách nào?" Câu hỏi đơn giản làm nảy sinh vấn đề dài phức tạp gọi “sự đồng thuận” trở thành tảng cho việc nghiên cứu hệ thống phi tập trung Trong nhiều năm sau phát minh họ, có họ giao thức đồng thuận biết đến, “các giao thức đồng thuận cổ điển” Các giao thức thuộc họ dễ dàng xác định thuộc tính: bỏ phiếu tất cho tất Vào năm 2008, Satoshi giới thiệu họ thứ hai giao thức này, gọi Nakamoto, giao thức đồng thuận chuỗi dài Sau đó, số biến thể giao thức chuỗi cổ điển dài đề xuất nhiều năm Vào năm 2018, gia đình giao thức đồng 0 thuận khác đời, gọi gia đình Snow Các thuật tốn sử dụng chế để đạt thỏa thuận: thay bỏ phiếu tất cả, giao thức chọn ngẫu nhiên người tham gia hỏi trạng thái mạng Họ kết hợp tốt cổ điển Nakamoto: họ xác nhận giao dịch vài giây hoạt động với tốc độ hàng nghìn giao dịch giây, đồng thời cho phép hàng nghìn đến hàng triệu người tham gia vào mạng lưới Một chuỗi khối, thuật ngữ đơn giản chuỗi khối, danh sách ngày tăng ghi gọi khối, nối với kỹ thuật mật mã Blockchain, cịn gọi DLT (cơng nghệ sổ phân tán), thông qua việc sử dụng phân quyền kỹ thuật băm mật mã làm cho lịch sử tài sản kỹ thuật số thay đổi minh bạch Nó chủ yếu phát minh để làm sổ giao dịch công khai cho tiền điện tử bitcoin Các giao dịch bitcoin thực lưu cách sử dụng sổ phân tán mạng chia sẻ công khai, ẩn danh công khai Nhưng năm qua, cơng nghệ tìm thấy ứng dụng đa dạng lĩnh vực khác Các khối blockchain cụ thể bao gồm hai phần: thông tin khối tiêu đề khối Thông tin khối bao gồm danh sách giao dịch, tức ghi kiện thông tin liên quan đến giao dịch giá trị chuyển giao thời gian giao dịch với thông tin người tham gia vào giao dịch cách sử dụng “chữ ký điện tử” khơng có tiết lộ danh tính thực tế họ Tiêu đề khối bao gồm dấu thời gian khối tạo, nonce Merkle root Gốc Merkle hàm băm tất nút Merkle Merkle tree kết hợp nhị phân cấu trúc liệu danh sách liên kết với số hàm băm để bảo mật, giúp xác minh hiệu an toàn giao dịch khối chuỗi khối Tham chiếu đến khối trước mà khối phải thêm vào bao gồm tiêu đề khối trừ khối gốc (Hình ) Khối genesis khối khởi đầu mạng blockchain mã hóa cứng người tạo blockchain lần bắt đầu 0 1.2 Định hướng giải pháp Khối hoạt động người ký khối xác nhận ký điện tử giao dịch Khi giao dịch thực ghi tạo, chúng phải lưu trữ khối thêm vào blockchain Tuy nhiên, để tạo thêm khối vào chuỗi khối, bước sau sử dụng: Các nút diện mạng blockchain hoạt động người khai thác tạo (i) Một giao dịch phải xảy ra, tức là, số thông tin phải chuyển từ bên sang bên khác (ii) Các giao dịch thêm vào khối phải xác minh Hoạt động thực tế mạng blockchain khác tùy thuộc vào ứng dụng mà phát triển Tuy nhiên, bước liên quan đến việc thêm khối vào blockchain giải thích chi tiết cách lấy tham chiếu từ tiền điện tử bitcoin, mà phát triển ban đầu, đoạn Ngay sau giao dịch xảy hai người dùng blockchain, thêm vào nhóm giao dịch chưa xác minh Các giao dịch chưa xác minh sau phát tới tất nút xác thực tham gia mạng blockchain, nơi chúng kiểm tra xác thực dựa số quy tắc xác thực thiết lập người tạo blockchain Tuy nhiên, blockchain bitcoin, trình xác minh giao dịch thực nút khai thác Sau đó, nút khai thác đặt giao dịch xác minh vào khối, sau niêm phong cách sử dụng hàm băm Bitcoin băm liệu khối thành số 256 bit cách sử dụng thuật toán băm mật mã SHA-256.2 ) Tuy nhiên, người khai thác bitcoin tạo hàm băm cho khối thêm vào mạng blockchain; tức là, hàm băm phải đáp ứng điều kiện định để khối mạng chấp nhận Một định quan trọng mà mạng blockchain phải thực tìm nút cam kết khối cho blockchain Quyết định đưa cách sử dụng chế đồng thuận Để thêm khối vào chuỗi khối bitcoin, người khai thác phải giành chiến thắng thi để tìm hàm băm xácbằng cách giải vấn đề toán học phức tạp Bài toán yêu cầu thợ đào tạo hàm băm với lượng định số đứng đầu Người khai thác đạt điều cho khối người chiến thắng thêm khối tạo vào chuỗi khối có Vì liệu giao dịch mã băm khối trước bên khối khơng thể thay đổi được, để có hàm băm mong muốn, thợ đào cần thêm số biến vào khối mà thợ đào thay đổi liên tục họ tìm thấy biến giải vấn đề toán học nêu Số biến gọi số không Sau người khai thác tạo 0 băm khối thành cơng, người khai thác phát khối tới tất nút ngang hàng nó, nút nhận xác nhận khối Sau đó, khối thêm vào blockchain gửi qua mạng nơi nút mạng thêm khối vào blockchain chúng, mở rộng chiều cao blockchain thêm Khi nút khai thác nhận xác thực khối từ số nút khác, họ ngừng nỗ lực tìm khối độ cao bắt đầu tính tốn khối bitcoin chuỗi khối Chương phân tích giao thức 1.3 Các loại giao thức đồng thuận Proof of work (POW) : Được biết đến nhiều Bitcoin Proof of Stake (POS) : Được biến đến Peercoin 1.4 Proof of Work Proof of Work (PoW) chế để đạt đồng thuận mạng lưới blockchain mơ hình đồng thuận loại tiền điện tử khác bitcoin Ethereum Nó mơ tả hệ thống địi hỏi nỗ lực đáng kể để khai thác khối nhằm ngăn chặn việc sử dụng độc hại sức mạnh tính tốn cơng xảy khác vào hệ thống công từ chối dịch vụ hành vi lạm dụng dịch vụ khác gửi thư rác cách làm cho người yêu cầu dịch vụ làm số công việc đòi hỏi khắt khe Trong mạng blockchain, chế đồng thuận PoW yêu cầu nút khai thác mạng phải chứng minh công việc họ thực đệ trình đủ điều kiện để họ nhận quyền thêm giao dịch có chứa khối vào blockchain Trong Proof of Work, nút thêm khối vào blockchain chọn tương ứng với sức mạnh tính tốn chúng; tức là, nút cạnh tranh với khả tính tốn chúng Như thảo luận trước đó, thợ đào mạng blockchain tạo khối cách tính tốn lời giải cho vấn đề toán học phức tạp cách để giải vấn đề thơng qua đốn tốn kém, tức Proof of Work; đó, vấn đề cịn gọi thử thách Proof of Work Vì người khai thác tự vào rời khỏi mạng, chuỗi khối bitcoin, độ khó thử thách điều chỉnh sau 2.016 khối để giữ khoảng cách 10 phút việc khai thác hai khối người khai 0 thác để đảm bảo phân cấp q trình xác minh tồn mạng Việc điều chỉnh thực tự động giao thức cách tăng giảm hàm băm mục tiêu dựa số lượng thợ đào Do đó, đồng thuận phân tán, dựa Proof of Work, thợ đào đòi hỏi nhiều lượng họ phải chịu lượng chi phí đáng kể phần cứng điện để thực phép tính nặng nề 2.2.1 Cách thợ đào nhận phần thưởng Để Blockchain mạng lưới hoạt động đời liên tục Block chứa cá thông tin giao dịch Việc đảm bảo bới Miner đóng vai trị Node mạng lưới Họ phải giải toán phức tạp Block 0 Họ phải gửi đáp án nhanh tới mạng lưới nhận thưởng 2.2.2 Nhược Điểm Cần nhiều lượng để tính tốn gây lãng phí lượng, làm ô nhiễm môi trường Nguy chiếm hữu 51% Điều xảy có người tổ chức có siêu máy tính để tính tốn lúc họ tính tốn nhanh có để nhân đơi giao dịch để không cho Miner khác tham gia vào mạng lưới 1.5 Proof of Stake Proof of Stake (PoS) giải pháp thay cho PoW tiết kiệm lượng Mục tiêu hai giống nhau, tức đạt đồng thuận blockchain, phương pháp đạt hồn tồn khác Thuật toán đồng thuận Proof of Stake sử dụng quy trình lựa chọn có chất giả ngẫu nhiên để chọn trình xác nhận khối từ nút có Q 0 trình dựa kết hợp số yếu tố bao gồm ngẫu nhiên hóa xác định độ tuổi với giàu có nút Trong chế đồng thuận Proof of Stake, khối cho "giả mạo" thay gọi khai thác [ 19] Khi PoW, khối giải vấn đề phức tạp khai thác khối nhận phần thưởng; PoS, nút riêng lẻ tạo khối chọn dựa số tiền họ “đặt cược” so với nút đối thủ cạnh tranh khác [ 20] Tiền đặt cược thường dựa số lượng tiền mà nút mạng có cho chuỗi khối cụ thể mà cố gắng khai thác Trong hệ thống này, phí giao dịch nói chung phần thưởng người dùng muốn trở thành số người tham gia trình giả mạo cần phải khóa tiền đặt cược họ (một lượng tiền định) mạng Cơ hội nút chọn để tạo khối làm trình xác thực phụ thuộc vào kích thước tiền đặt cược họ, có nghĩa hội nút giành khối tăng lên số tiền đặt cược tăng lên Nhưng tiêu chí lựa chọn thiên lệch, mạng bị chi phối nút với số tiền đặt cược tối đa Để khắc phục vấn đề này, nhiều phương pháp thêm vào trình lựa chọn, hai số “lựa chọn khối ngẫu nhiên” “chọn tuổi đồng xu” (i) Trong phương pháp chọn khối ngẫu nhiên, trình giả mạo chọn dựa kết hợp giá trị băm tiền đặt cược, nút có kết hợp cổ phần cao giá trị băm thấp chọn Nhưng trường hợp này, nói chung, nút dự đốn lần giả mạo tiếp theo, lý quy mô cổ phần nút mạng nắm giữ công khai (ii) Trong kỹ thuật chọn tuổi đồng xu , người giả mạo chọn dựa thời gian người giữ cổ phần với kích thước tiền đặt cược, gọi tuổi đồng xu Nó tính cách thực phép nhân số lượng tiền đặt cọc với số ngày chúng giữ Khi khối giả mạo nút, tuổi tiền xu lần đặt thành Và để ngăn chặn việc blockchain bị chi phối nút cổ phần lớn, sau giả mạo 0 khối, nút phải đợi khoảng thời gian cụ thể trước giả mạo khối khác Khi nút chọn để tạo khối tiếp theo, kiểm tra xem giao dịch có khối có hợp lệ hay khơng giao dịch hợp lệ, khối ký nút cuối nút cam kết với chuỗi khối (có thể hình dung tương tự, thể bước thứ thứ Hình ) Và phí giao dịch liên quan đến giao dịch (có khối) nút nhận phần thưởng (có thể hình dung giống nhau, thể bước thứ Hình 4) Nếu nút không muốn trở thành kẻ giả mạo nữa, tiền đặt cược phần thưởng kiếm giải phóng sau khoảng thời gian định, giúp mạng có thời gian xác minh nút không thêm khối gian lận vào chuỗi khối Hơn nữa, nút giả mạo có động khơng xác thực tạo giao dịch gian lận mạng lưới phát giao dịch gian lận, tương lai, nút giả mạo tham gia với tư cách người giả mạo phần cổ phần Vì vậy, thời điểm tiền đặt cược nhiều phần thưởng, trường hợp thực hoạt động gian lận nào, người xác nhận chịu lỗ, nhiều xu kiếm Trong kịch lý tưởng, hoạt động chế đồng thuận PoS thảo luận hình dung Hình 0 Chương Mô Tả Bằng Thực Hành Hàm Tạo khối public Block (Transaction transaction, String previousHash) { this previousHash = previousHash; mã khối trước this timeStamp = new Date () getTime (); Thời gian giải mã this transaction = transaction; Nội dung giao dịch this hash = calculatedHash (); Mã khối this difficultyBits = Network.CURRENT_DIFFICULTY; Độ khó để giải mã } Hàm Kiểm Tra Khối Có Đúng Hay Khơng public Boolean isValid () { for (int i = 1; i < chain.size() ; i++) { Block current = chain.get(i); Block previous = chain.get(i - 1); if (!current.getHash().equals(current.calculatedHash())) { String message = format(HASH_NOT_MATCH_WITH_CALCULATED_HASH, current.getHash(), current.calculatedHash()); 0 System.out.println(message); return Boolean.FALSE; } if (!previous.getHash().equals(current.getPreviousHash())) { String message = format(PREVIOUS_HASH_NOT_EQUALS_CURRENT_HASH, current.getPreviousHash(), previous.getHash()); System.out.println(message); return Boolean.FALSE; } } return Boolean.TRUE; } current.getHash().equals(current.calculatedHash())) So sánh mã củ a khố i có bằ ng vớ i mã tính đượ c hay không previous.getHash().equals(current.getPreviousHash() So sánh mã củ a khố i trướ c có bằ ng vớ i mã củ a khố i hay không Hàm Đào public void mine(Block block) { System.out.println(this.name + ": Starting mining"); long start = System.currentTimeMillis(); BigInteger difficulty = new BigInteger("256").subtract(new BigInteger(CURRENT_DIFFICULTY + "")); BigInteger target = new BigInteger("2").pow(difficulty.intValue()); for (int i = block.getNonce(); i < Network.MAX_DIFFICULTY; block.calculateHashWithNewNonce()) { BigInteger hashResult = new BigInteger(block.getHash(), Constants.HEX); if (newMinedBlocks.hasNew()) { System.out.println(this.name + ": mining stopped because they already solved the puzzle"); break; } if (hashResult.compareTo(target) < 0) { showMiningReport(start, this.name, block); return; } } } 10 0 Chương Triển khai ứng dụng 4.1 Chạy thử code 4.2 Giải thích chế Đầu tiên người đào khối , giải khối trước người đc sở hữu block in thơng tin block Ở đây, có giao dịch giải khối thì cớ chế kiểm tra bắt đầu hoạt động thông tin người đào cung cấp với block block đươck thêm vào blockchain Ở chế đồng thuận đưa giải mã khối nhanh 11 0 Chương : Đóng góp bật chế đồng thuận Chương Kết luận 1.6 Kết luận 6.1 Proof of Work Proof-of-Work thuật toán đồng thuận xác thực việc xác minh giao dịch người khai thác Proof-of-Work người khai thác đảm bảo người xác minh q trình khai thác hợp lệ xác Giải thuật tốn từ thợ mỏ thực khó, việc kiểm tra tính hợp lệ việc xác minh lại dễ dàng Ưu điểm POW phân quyền bảo mật mà cung cấp Hạn chế POW chi phí tập trung mặt thực tế nhóm khai thác 6.2 Proof of Stack Sở hữu nhiều ưu điểm nên Proof of Stake (PoS) chắn trở thành xu tương lai tới không gian tiền điện tử 12 0 ... “sự đồng thuận? ?? trở thành tảng cho việc nghiên cứu hệ thống phi tập trung Trong nhiều năm sau phát minh họ, có họ giao thức đồng thuận biết đến, “các giao thức đồng thuận cổ điển” Các giao thức. .. hai giao thức này, gọi Nakamoto, giao thức đồng thuận chuỗi dài Sau đó, số biến thể giao thức chuỗi cổ điển dài đề xuất nhiều năm Vào năm 2018, gia đình giao thức đồng 0 thuận khác đời, gọi gia. .. dụng giao thức đồng thuận để đạt thỏa thuận định khác thực thể mạng blockchain bitcoin 1.1 Đặt vấn đề Mặc dù ý tưởng blockchain đề xuất vào năm 2008 để triển khai bitcoin, giao thức đồng thuận