1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Nghiên cứu ứng dụng BLOCKCHAIN cho bài toán thanh toán phi tiền mặt trong lĩnh vực tài chính ngân hàng

71 24 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 71
Dung lượng 1,76 MB

Nội dung

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG Nguyễn Đức Duy NGHIÊN CỨU ỨNG DỤNG BLOCKCHAIN CHO BÀI TOÁN THANH TỐN PHI TIỀN MẶT TRONG LĨNH VỰC TÀI CHÍNH NGÂN HÀNG LUẬN VĂN THẠC SỸ KỸ THUẬT (Theo định hướng ứng dụng) HÀ NỘI – 2020 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG Nguyễn Đức Duy NGHIÊN CỨU ỨNG DỤNG BLOCKCHAIN CHO BÀI TOÁN THANH TOÁN PHI TIỀN MẶT TRONG LĨNH VỰC TÀI CHÍNH NGÂN HÀNG CHUYÊN NGHÀNH: KHOA HỌC MÁY TÍNH MÃ SỐ: 8.48.01.01 LUẬN VĂN THẠC SỸ KỸ THUẬT (Theo định hướng ứng dụng) NGƯỜI HƯỚNG DẪN KHOA HỌC TS ĐẶNG MINH TUẤN HÀ NỘI – 2020 i LỜI CAM ĐOAN Tôi xin cam đoan: Khoá luận tốt nghiệp với đề tài “NGHIÊN CỨU ỨNG DỤNG BLOCKCHAIN CHO BÀI TOÁN THANH TOÁN PHI TIỀN MẶT TRONG LĨNH VỰC TÀI CHÍNH NGÂN HÀNG” cơng trình nghiên cứu cá nhân tôi, số liệu, kết nêu luận văn trung thực chưa cơng bố cơng trình khác, không chép Tôi xin chịu trách nhiệm cơng trình nghiên cứu riêng mình! Hà Nội, ngày ………… Người cam đoan Nguyễn Đức Duy ii MỤC LỤC DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT v DANH SÁCH BẢNG vi DANH SÁCH HÌNH VẼ vii CHƯƠNG 1: GIỚI THIỆU CÔNG NGHỆ BLOCK CHAIN 1.1 Tổng quan công nghệ Blockchain 1.1.1 Khái niệm 1.1.2 Mạng ngang hàng (Peer to Peer Network) 1.1.3 Block 1.1.4 Giao dịch 1.1.5 Sổ 1.1.6 Blockchain phân phối phi tập trung 1.1.7 Smart Contract 10 1.2 Mật mã Blockchain 11 1.2.1 Hàm băm 11 1.2.2 Mã hoá bất đối xứng 12 1.2.3 Con trỏ băm 13 1.2.4 Chữ ký số 14 1.2.5 Cây Merkle 16 1.3 Phân loại hệ thống Blockchain 17 1.3.1 Blockchain công khai 18 1.3.2 Blockchain bí mật 18 1.3.3 Blockchain cấp quyền 18 1.4 Các chế đồng thuận 19 1.4.1 Đồng thuận theo chứng công việc 20 1.4.2 Đồng thuận theo chứng cổ phần 21 1.4.3 Ủy nhiệm đồng thuận theo chứng cổ phần 22 1.4.4 Đồng thuận theo chứng ủy quyền 22 1.5 Phương thức hoạt động Blockchain 24 1.8 Ưu nhược điểm công nghệ Blockchain 26 1.8.1 Ưu điểm 26 1.8.2 Nhược điểm 27 Kết chương 28 iii CHƯƠNG 2: NGHIÊN CỨU NỀN TẢNG CORDA R3 29 2.1 Nền tảng Corda R3 29 2.1.1 Giới thiệu tảng Corda R3 29 2.1.2 CorDapp 30 2.1.3 Các thiết lập cài đặt môi trường để phát triển CorDapp 31 2.1.4 So sánh Corda với tảng khác 31 2.2 Đặc trưng triết lý Corda 32 2.2.1 Tính cấp quyền 32 2.2.2 Hợp đồng thông minh Corda R3 33 2.2.4 Mạng ngang hàng 33 2.2.4 Hàng đợi thông điệp 34 2.2.5 UTXO 34 2.3 Các khái niệm quan trọng Corda 35 2.3.1 Các trạng thái 35 2.3.9 Nodes 35 2.3.3 Commands 36 2.3.4 Flows 36 2.3.5 Các chế đồng thuận 37 2.3.6 Notary Services 38 2.3.7 Time-windows 39 2.3.8 Oracles 39 2.3.10 The service hub 39 2.3.12 Mạng Corda 40 Kết chương 41 CHƯƠNG 3: ỨNG DỤNG CÔNG NGHỆ BLOCKCHAIN TRONG GIAO DỊCH CHUYỂN TIỀN LIÊN NGÂN HÀNG 42 3.1 Đặt vấn đề 42 3.1.1 Xác định toán 43 3.1.2 Cách tiếp cận giải pháp 45 3.2 Xây dựng hệ thống 46 3.2.1 Môi trường phát triển công cụ 46 3.2.2 Kiến trúc hệ thống 47 3.2.3 Đặc tả chức 47 3.2.4 Cài đặt hệ thống 49 3.3 Thực nghiệm đánh giá 53 iv 3.3.1 Kết thử nghiệm 53 3.3.2 Đánh giá kết 56 3.4 Kết chương 56 KẾT LUẬN CHUNG 57 DANH MỤC TÀI LIỆU THAM KHẢO 58 PHỤ LỤC 59 v DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT Viết tắt Nguyên nghĩa AMQP Advanced Message Queuing Protocol API Application Programming Interface BCG Boston Consulting Group BTS Bitshares CorDapps Corda Distributed Applications CPU Central Processing Unit DAG Directed Acyclic Graph DAO Tổ chức tự quản phân cấp giới DBMS Database Management System DPoS Delegated Proof-of-Stake ECDSA Elliptic Curve Digital Signature Algorithm IDE Integrated Development Environment JDBC Java Database Connectivity JDK Java Development Kit KYC Know your customer OS operating system POA Proof-of-Authority POS Proof-of-Stake POW Proof-of-work RAM Random Access Memory RPC Remote Procedure Call SHA Secure Hash Algorithm TX Transaction UTXO Unspent transaction output vi DANH SÁCH BẢNG Bảng 1.1: Ví dụ giao dịch Bảng 1.2: Ví dụ đầu vào giá trị tiêu biểu SHA-256 11 Bảng 2.1: So sánh Corda với số tảng khác 32 Bảng 3.1: Cấu hình phần cứng hệ thống 46 Bảng 3.1: Các phần mềm hệ thống 46 vii DANH SÁCH HÌNH VẼ Hình 1.1: Ví dụ Block Hình 1.2: Một chuỗi Blocks Hình 1.2: Sổ phân tán Hình 1.3: Mơ hình phân phối Blockchain Hình 1.4: Con trỏ băm .13 Hình 1.5: Thuận tốn chữ ký số ECDSA 15 Hình 1.6: Mơ hình minh họa cho Merkle Tree 17 Hình 1.7: Cách hoạt động Blockchain 25 Hình 2.1: Luồng xử lý CorDapp 30 Hình 2.2: Mơ tả lưu trữ giao dịch mạng ngang hàng Corda 34 Hình 2.8: Ví dụ đơn giản Corda Flow 37 Hình 2.11: ServiceHub 40 Hình 2.12: Corda Network 41 Hình 3.1: Tổng quan luồng chuyển tiền liên ngân hàng 43 Hình 3.2: Nghiệp vụ chuyển tiền 44 Hình 3.3: Nghiệp vụ nhận tiền 44 Hình 3.4: Mơ hình chuyển tiền liên ngân hàng qua Blockchain Corda R3 47 Hình 3.5: Luồng giao dịch chuyển tiền user khác Bank thông qua Blockchain Corda R3 48 Hình 3.5: Luồng xử lý nội Blockchain Corda R3 49 Hình 3.8: Quá trình đồng thuận đề xuất giao dịch bên 49 Hình 3.9 Giao diện sau thực khởi tạo thành cơng node .50 Hình 3.10: Màn hình đăng nhập vào hệ quản trị CSDL blockchain 50 Hình 3.11 CSDL lưu trữ Corda .51 Hình 3.12 Màn hình đăng nhập bank A 52 Hình 3.13 Màn hình hiển thị thông tin sau đăng nhập thành công 52 Hình 3.14 Màn hình lịch sử giao dịch 52 Hình 3.15 Màn hình chuyển tiền 53 MỞ ĐẦU Trong Cách mạng công nghiệp 4.0, “blockchain” (chuỗi khối) xem công nghệ "then chốt" cho chuyển đổi số xây dựng tảng công nghệ thông tin tương lai Với khả chia sẻ thông tin liệu minh bạch theo thời gian thực tế, có tính bảo mật cao, cơng nghệ blockchain xu hướng cơng nghệ đột phá, có khả ứng dụng rộng rãi nhiều ngành nghề, lĩnh vực khác Ứng dụng cơng nghệ Blockchain giải số vấn đề mà hệ thống tài ngân hàng gặp phải Blockchain cung cấp mức độ bảo mật cao, minh bạch giao dịch chi phí thấp Hơn nữa, người dùng hồn tồn tham gia vào giao dịch mà không cần xác thực bên thứ Công nghệ Blockchain thực mở tiềm vô lớn lĩnh vực tài – ngân hàng, tác động khơng nho đến quy trình xác nhận giao dịch, quản lý tiền mặt, tối ưu hóa tài sản quy trình kinh doanh khác Cơng nghệ Blockchain giúp giảm thiểu thời gian từ lúc đăng ký tới lúc hoàn thành giao dịch giảm thời gian cho giao dịch liên ngân hàng, chuyển khoản quốc tế xác nhận thông tin cá nhân Nhận thấy tiềm to lớn Blockchain tương lai, em định lựa chọn đề tài nghiên cứu ứng dụng Blockchain cho toán toán phi tiền mặt hệ thống tài ngân hàng cho báo cáo luận văn Thạc sĩ 48 cụm server Blockchain tương tác kết qua API Hình 3.5: Luồng giao dịch chuyển tiền user khác Bank thông qua Blockchain Corda R3 Mô tả bước: Bước 1: User_transfer thực login vào hệ thống Bank_transfer Bước 2: Bank_transfer trả kết login: Thành công thất bại Bước 3: Nếu kết login thành công User_transfer thực lệnh chuyển tiền sang Bank_transfer, Bank_transfer thực xử lý business lưu DB, kiểm tra so sánh số dư… kết xử lý ok, gửi request vào blockchain Bước 4: Hệ thống Blockchain xử lý giao dịch, gửi kết cho Bank_receiver, Bank_receiver xử lý cộng tài khoản cho User_receriver trả kết cho Blockchain Bước 5: Blockchain trả kết cuối cho Bank_transfer Luồng xử lý nội Blockchain Corda R3: Trong hệ thống Blockchain Corda R3 có từ đối tác trở lên, lender borrower, để giao dịch hoàn thành, đối tác cần phải đồng thuận đề xuất giao 49 dịch Để đạt đồng thuận này, quy trình phải trải qua số bước hai cần phải thực ký Họ muốn đạt đồng thuận đạt phát triển trạng thái này: Hình 3.5: Luồng xử lý nội Blockchain Corda R3 Hình 3.8: Quá trình đồng thuận đề xuất giao dịch bên 3.2.4 Cài đặt hệ thống Phần cài đặt hệ thống Blockchain Corda: Bước 1: Mở cửa sổ Terminal Window thư mục chứa Project Corda Bước 2: Chạy lệnh gradlew.bat deployNodes để deployNodes Bước 3: Sau build thành công thực chạy CorDapp câu lệnh: call workflows-java\build\nodes\runnodes.bat Bước 4: Thực chạy Spring Boot server node câu lệnh: 50 gradlew.bat runPartyXServer Với X tên node Hình 3.9 Giao diện sau thực khởi tạo thành cơng node Hình 3.10: Màn hình đăng nhập vào hệ quản trị CSDL blockchain 51 Hình 3.11 CSDL lưu trữ Corda Phần hạ tầng ngân hàng: - Cài đặt docker Desktop windows địa chỉ: https://docs.docker.com/docker-for-windows/install/ - Sửa file host window: # Edit file host `127.10.0.10 bank-a.local` `127.10.0.11 bank-b.local` - Khởi động server docker: # Start Webservice `docker-compose up` 52 Hình 3.12 Màn hình đăng nhập bank A Hình 3.13 Màn hình hiển thị thơng tin sau đăng nhập thành cơng Hình 3.14 Màn hình lịch sử giao dịch 53 Hình 3.15 Màn hình chuyển tiền Thực nghiệm đánh giá 3.3 3.3.1 Kết thử nghiệm Hệ thống ngân hàng giả lập triển khai cài đặt domain: http://bank-a.local/login.php http://bank-b.local/login.php http://bank-c.local/login.php Hệ thống blockchain Corda triển khai cài đặt webservice, bao gốm notary, node thể ngân hàng mạng http://localhost:50005/ http://localhost:50006/ http://localhost:50007/ Mỗi Spring Boot servers Corda R3 blockchain bao gồm API: /api/example/me: Trả thông tin node gọi vào VD: { me: "O=BankB, L=HaNoi, C=VN" } 54 /api/example/peers: Trả thông tin node ngang hàng khác mạng VD: { peers: [ "O=BankC, L=HaNoi, C=VN", "O=BankA, L=HaNoi, C=VN" ] } /api/example/ious: Trả thông tin giao dịch mà node thực VD: [  { o state: {  data: {  @class: "com.example.state.IOUState",  value: 100,  lender: "O=BankA, L=HaNoi, C=VN",  borrower: "O=BankB, L=HaNoi, C=VN",  linearId: {  externalId: null,  id: "84eda410-892a-4d72-8af2fc69ef81e3be" } 55 },  contract: "com.example.contract.IOUContract",  notary: "O=Notary, L=HaNoi, C=VN",  encumbrance: null,  constraint: {  @class: "net.corda.core.contracts.Signatur eAttachmentConstraint",  key: "aSq9DsNNvGhYxYyqA9wd2eduEAZ5AXWgJTbT Ew3G5d2maAq8vtLE4kZHgCs5jcB1N31cx1hpsLeqG2 ngSysVHqcXhbNts6SkRWDaV7xNcr6MtcbufGUchxre dBb6" } }, o ref: {  txhash: "A6D14D700BD6B97FF0992376B66365D4A2CC 586E070D3F75FFD64B84CAF0B89E",  index: }  } ] /api/example/create-iou: API tạo giao dịch chuyển tiền Sau thực cài đặt triển khai thành cơng tồn hệ thống từ Client, Webservice Bank hệ thống Blockchain, việc thực chuyển tiền từ hệ thống ngân hàng A sang hệ thống ngân hàng B theo số tài khoản thực thành công, lịch sử giao dịch xử lý lưu trữ đầy đủ hệ thống ngân hàng chuyển, ngân hàng nhận Blockchain Corda 56 3.3.2 Đánh giá kết Với mục tiêu toán đưa ra, hệ thống hoạt động theo giao thức P2P giải vấn đề chuyển tiền liên ngân hàng, thay với quy trình cũ, tính xác thực xử lý có cố khơng cao, quy trình đối sốt chậm chạp Giúp cho người dùng thực chuyển tiền liên ngân hàng nhanh chóng 3.4 Kết chương Chương mô tả cách trực quan tồn hệ thống ngân hàng sử dụng cơng nghệ Blockchain lĩnh vực chuyển tiền liên ngân hàng, cụ thể sử dụng tảng Corda R3 việc xử lý xác thực thông tin chuyển khoản Với tính chất cơng khai, minh bạch khơng dễ mạo danh, sửa đổi, Blockchain khối vững Nghiệp vụ chuyển tiền liên ngân hàng theo đường tích hợp cơng nghệ tương lai không xa 57 KẾT LUẬN CHUNG Các kết thu luận văn Qua trình nghiên cứu blockchain số ứng dụng cơng nghệ này, với giúp đỡ tận tình thầy cô bạn bè, luận văn đạt số kết định, đưa nhìn rõ ràng khái niệm blockchain, cài đặt hệ thống blockchain phát triển ứng dụng mảng chuyển tiền liên ngân hàng Về mặt nội dung, luận văn đạt số kết sau đây: Tìm hiểu nghiên cứu lý thuyết: • Chi tiết cơng nghệ blockchain tiềm cơng nghệ • Hàm băm chữ ký số, kỹ thuật sử dụng blockchain • Tiền số, ứng dụng blockchain • Các mơ hình chuyển tiền liên ngân hàng thời điểm Thực nghiệm: • Xây dựng mô thành công hệ thống chuyển tiền liên ngân hàng đơn giản áp dụng framework Corda R3 Định hướng nghiên cứu Do thời gian chưa có nhiều, bên cạnh kết đạt được, luận văn nhiều hạn chế việc triển khai chương trình thực nghiệm Để mạng blockchain thực hoạt động tốt cần có tham gia nhiều nút chương trình mơ có số nút cịn hạn chế Ngoài ra, hệ thống cần thử nghiệm loại chữ ký số khác để so sánh tốc độ thực cải thiện hiệu hệ thống Với hạn chế kể trên, luận văn tiếp tục nghiên cứu vấn đề sau: • Tiếp tục hoàn thiện mạng blockchain với nhiều nút hoạt động • Thử nghiệm phương pháp ký số khác so sánh tốc độ xử lý, độ an tồn thuật tốn để cải thiện hiệu tính bảo mật blockchain • Bổ sung thêm nghiệp vụ cần thiết nghệ thống ngân hàng vào hệ thống Blockchain 58 DANH MỤC TÀI LIỆU THAM KHẢO Tiếng Việt [1] Trịnh Nhật Tiến (2008), Giáo trình An toàn liệu, Hà Nội [2] Đặng Minh Tuấn (2016), Hệ mật mã công khai dựa đường cong Elipptic, Hà Nội Tiếng Anh [3] Andreas M.Antolopoulos (2015), Masetering Bitcoin, O’Reilly [4] Blockchain https://blockchain.info/ [5] Bonneau, J., Miller, A., Clark, J., Narayanan, A., Kroll, J A., and Felten, E.W (2015), Sok: Research perspectives and challenges for Bitcoin and cryptocurrencies, In 2015 IEEE Symposium on Security and Privacy, pages 104–121 [6] Crosby, M., Nachiappan, Pattanayak, P., Verma, S., and Kalyanaraman, V., Blockchain technology beyond Bitcoin, Technical report, Berkeley, CA, USA [7] Hakobyan, D (2012), Authentication and authorization systems in cloud environments Master’s thesis, Stockholm, Sweden [8] Narayanan, A., Bonneau, J., Felten, E., Miller, A., and Goldfeder, S., Bitcoin and Cryptocurrency Technologies, Princeton University Press [9] Rodrigues, E (2016), The blockchain architecture in a nutshell, Technical report, Linkedin, September 2016, https://www.linkedin.com/pulse/blockchain- architecture-nutshell-eder-rodrigues [10] Tucker, C and Catalini, C., Blockchain research at mit, http://blockchain.mit.edu/ [11] Xu, J J (2016), Are blockchains immune to all malicious attacks?, Financial Innovation, 2(1):25, ISSN 2199-4730 [12] Wood, G., “Ethereum: A Secure Decentralised Generalised Transaction Ledger.”, https://bravenewcoin.com/assets/Whitepapers/Ethereum-A-Secure- DecentralisedGeneralised-Transaction-Ledger-Yellow-Paper.pdf 59 PHỤ LỤC Phần source code mô tả luồng xử lý Blockchain Corda R3 Luồng giao dịch khởi tạo có request từ phía Bank gửi qua: Initiator extends FlowLogic public static class Initiator extends FlowLogic { private final int iouValue; private final Party otherParty; private final Step GENERATING_TRANSACTION = new Step("Gen erating transaction based on new IOU."); private final Step VERIFYING_TRANSACTION = new Step("Verifyi ng contract constraints."); private final Step SIGNING_TRANSACTION = new Step("Signing tr ansaction with our private key."); private final Step GATHERING_SIGS = new Step("Gathering the cou nterparty's signature.") { Acceptor extends FlowLogic public static class Acceptor extends FlowLogic { private final FlowSession otherPartySession; public Acceptor(FlowSession otherPartySession) { this.otherPartySession = otherPartySession; } @Suspendable 10 @Override 60 11 public SignedTransaction call() throws FlowException { 12 class SignTxFlow extends SignTransactionFlow { 13 private SignTxFlow(FlowSession otherPartyFlow, ProgressTracke r progressTracker) { 14 super(otherPartyFlow, progressTracker); 15 } 16 17 @Override 18 protected void checkTransaction(SignedTransaction stx) { 19 requireThat(require -> { 20 ContractState output = stx.getTx().getOutputs().get(0).getData (); 21 require.using("This must be an IOU transaction.", output inst anceof IOUState); 22 IOUState iou = (IOUState) output; 23 require.using("I won't accept IOUs with a value over 100.", io u.getValue()

Ngày đăng: 19/03/2021, 13:58

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w