(Luận văn) 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 5 0
(Luận văn) 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

Đ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

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG Nguyễn Đức Duy lu an n va gh tn to NGHIÊN CỨU ỨNG DỤNG BLOCKCHAIN CHO BÀI TOÁN p ie THANH TOÁN PHI TIỀN MẶT TRONG LĨNH VỰC TÀI d oa nl w CHÍNH NGÂN HÀNG ll u nf va an lu oi m LUẬN VĂN THẠC SỸ KỸ THUẬT z at nh (Theo định hướng ứng dụng) z m co l gm @ an Lu HÀ NỘI – 2020 n va ac th si HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG Nguyễn Đức Duy lu 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 an n va gh tn to ie CHUYÊN NGHÀNH: KHOA HỌC MÁY TÍNH p MÃ SỐ: d oa nl w 8.48.01.01 an lu va LUẬN VĂN THẠC SỸ KỸ THUẬT ll u nf (Theo định hướng ứng dụng) oi m z at nh z NGƯỜI HƯỚNG DẪN KHOA HỌC @ m co l gm TS ĐẶNG MINH TUẤN an Lu n va HÀ NỘI – 2020 ac th si i LỜI CAM ĐOAN Tơi xin cam đoan: Khố 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! lu an Hà Nội, ngày ………… va n Người cam đoan ie gh tn to p Nguyễn Đức Duy d oa nl w ll u nf va an lu oi m z at nh z m co l gm @ an Lu n va ac th si 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 Tổng quan công nghệ Blockchain 1.1 1.1.1 Khái niệm 1.1.2 Mạng ngang hàng (Peer to Peer Network) 1.1.3 Block lu 1.1.4 Giao dịch an 1.1.5 Sổ va n 1.1.6 Blockchain phân phối phi tập trung Mật mã Blockchain 11 1.2 1.2.1 Hàm băm 11 ie gh tn to 1.1.7 Smart Contract 10 p 1.2.2 Mã hoá bất đối xứng 12 w 1.2.3 Con trỏ băm 13 oa nl 1.2.4 Chữ ký số 14 d 1.2.5 Cây Merkle 16 Phân loại hệ thống Blockchain 17 an lu 1.3 va 1.3.1 Blockchain công khai 18 u nf 1.3.2 Blockchain bí mật 18 ll 1.3.3 Blockchain cấp quyền 18 Các chế đồng thuận 19 oi m 1.4 z at nh 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 z @ 1.4.4 Đồng thuận theo chứng ủy quyền 22 Phương thức hoạt động Blockchain 24 1.8 Ưu nhược điểm công nghệ Blockchain 26 l gm 1.5 m co 1.8.1 Ưu điểm 26 an Lu 1.8.2 Nhược điểm 27 Kết chương 28 n va ac th si iii CHƯƠNG 2: NGHIÊN CỨU NỀN TẢNG CORDA R3 29 Nền tảng Corda R3 29 2.1 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 Đặc trưng triết lý Corda 32 2.2 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 lu an 2.2.5 UTXO 34 va 2.3 Các khái niệm quan trọng Corda 35 n 2.3.1 Các trạng thái 35 to 2.3.3 Commands 36 2.3.4 Flows 36 p ie gh tn 2.3.9 Nodes 35 2.3.5 Các chế đồng thuận 37 nl w 2.3.6 Notary Services 38 oa 2.3.7 Time-windows 39 d 2.3.8 Oracles 39 lu an 2.3.10 The service hub 39 va 2.3.12 Mạng Corda 40 u nf Kết chương 41 ll 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 oi m Đặt vấn đề 42 z at nh 3.1 3.1.1 Xác định toán 43 z 3.1.2 Cách tiếp cận giải pháp 45 Xây dựng hệ thống 46 gm @ 3.2 3.2.1 Môi trường phát triển công cụ 46 l 3.2.2 Kiến trúc hệ thống 47 m co 3.2.3 Đặc tả chức 47 3.3 an Lu 3.2.4 Cài đặt hệ thống 49 Thực nghiệm đánh giá 53 n va ac th si iv 3.3.1 Kết thử nghiệm 53 3.3.2 Đánh giá kết 56 Kết chương 56 3.4 KẾT LUẬN CHUNG 57 DANH MỤC TÀI LIỆU THAM KHẢO 58 PHỤ LỤC 59 lu an n va p ie gh tn to d oa nl w ll u nf va an lu oi m z at nh z m co l gm @ an Lu n va ac th si v DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT Viết tắt Nguyên nghĩa 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 lu AMQP an n va p ie gh tn to JDBC Java Database Connectivity w Java Development Kit KYC Know your customer Proof-of-Authority u nf Proof-of-Stake ll Proof-of-work oi m POW va POS operating system an POA lu OS d oa nl JDK z at nh Random Access Memory RPC Remote Procedure Call SHA Secure Hash Algorithm TX Transaction UTXO Unspent transaction output z RAM m co l gm @ an Lu n va ac th si 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 lu an n va p ie gh tn to d oa nl w ll u nf va an lu oi m z at nh z m co l gm @ an Lu n va ac th si 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 toán chữ ký số ECDSA 15 Hình 1.6: Mơ hình minh họa cho Merkle Tree 17 lu Hình 1.7: Cách hoạt động Blockchain 25 an Hình 2.1: Luồng xử lý CorDapp 30 n va Hình 2.2: Mơ tả lưu trữ giao dịch mạng ngang hàng Corda 34 tn to Hình 2.8: Ví dụ đơn giản Corda Flow 37 gh Hình 2.11: ServiceHub 40 p ie 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 nl w Hình 3.2: Nghiệp vụ chuyển tiền 44 d oa Hình 3.3: Nghiệp vụ nhận tiền 44 lu Hình 3.4: Mơ hình chuyển tiền liên ngân hàng qua Blockchain Corda R3 47 va an Hình 3.5: Luồng giao dịch chuyển tiền user khác Bank thông qua Blockchain u nf Corda R3 48 ll Hình 3.5: Luồng xử lý nội Blockchain Corda R3 49 m oi Hình 3.8: Quá trình đồng thuận đề xuất giao dịch bên 49 z at nh 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 z Hình 3.11 CSDL lưu trữ Corda .51 @ gm Hình 3.12 Màn hình đăng nhập bank A 52 l Hình 3.13 Màn hình hiển thị thơng tin sau đăng nhập thành cơng 52 m co 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 an Lu n va ac th si 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 lu an mật cao, minh bạch giao dịch chi phí thấp Hơn nữa, người dùng n va hồn tồn tham gia vào giao dịch mà không cần xác thực bên thứ tn to Công nghệ Blockchain thực mở tiềm vô lớn lĩnh vực gh 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 p ie 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 oa nl w 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 d an lu Nhận thấy tiềm to lớn Blockchain tương lai, va em định lựa chọn đề tài nghiên cứu ứng dụng Blockchain cho oi m luận văn Thạc sĩ ll u nf tốn tốn phi tiền mặt hệ thống tài ngân hàng cho báo cáo z at nh z m co l gm @ an Lu n va ac th si 48 cụm server Blockchain tương tác kết qua API lu an n va p ie gh tn to oa nl w d Hình 3.5: Luồng giao dịch chuyển tiền user khác Bank thông qua Blockchain Corda R3 an lu Mô tả bước: u nf va 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 ll oi m Bước 3: Nếu kết login thành công User_transfer thực lệnh chuyển tiền z at nh 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 z Bước 4: Hệ thống Blockchain xử lý giao dịch, gửi kết cho Bank_receiver, @ gm Bank_receiver xử lý cộng tài khoản cho User_receriver trả kết cho Blockchain m co Luồng xử lý nội Blockchain Corda R3: l Bước 5: Blockchain trả kết cuối cho Bank_transfer an Lu 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 n va ac th si 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: lu an va n Hình 3.5: Luồng xử lý nội Blockchain Corda R3 p ie gh tn to d oa nl w ll u nf va an lu oi m z at nh 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 z Phần cài đặt hệ thống Blockchain Corda: @ gm Bước 1: Mở cửa sổ Terminal Window thư mục chứa Project Corda l Bước 2: Chạy lệnh gradlew.bat deployNodes để deployNodes an Lu call workflows-java\build\nodes\runnodes.bat m co Bước 3: Sau build thành công thực chạy CorDapp câu lệnh: Bước 4: Thực chạy Spring Boot server node câu lệnh: n va ac th si 50 gradlew.bat runPartyXServer Với X tên node lu an n va gh tn to p ie Hình 3.9 Giao diện sau thực khởi tạo thành công node d oa nl w ll u nf va an lu oi m z at nh z m co l gm @ Hình 3.10: Màn hình đăng nhập vào hệ quản trị CSDL blockchain an Lu n va ac th si 51 lu an n va gh tn to Hình 3.11 CSDL lưu trữ Corda p ie Phần hạ tầng ngân hàng: Cài đặt docker Desktop windows địa chỉ: oa nl w - d https://docs.docker.com/docker-for-windows/install/ lu Sửa file host window: # Edit file host u nf va an - ll `127.10.0.10 bank-a.local` Khởi động server docker: # Start Webservice z `docker-compose up` z at nh - oi m `127.10.0.11 bank-b.local` m co l gm @ an Lu n va ac th si 52 lu an va n Hình 3.12 Màn hình đăng nhập bank A p ie gh tn to d oa nl w ll u nf va an lu oi m Hình 3.13 Màn hình hiển thị thơng tin sau đăng nhập thành công z at nh z m co l gm @ an Lu Hình 3.14 Màn hình lịch sử giao dịch n va ac th si 53 lu an va n Hình 3.15 Màn hình chuyển tiền tn to Thực nghiệm đánh giá gh 3.3 p ie 3.3.1 Kết thử nghiệm w Hệ thống ngân hàng giả lập triển khai cài đặt domain: oa nl http://bank-a.local/login.php d http://bank-b.local/login.php lu an http://bank-c.local/login.php u nf va Hệ thống blockchain Corda triển khai cài đặt webservice, bao gốm notary, node thể ngân hàng mạng ll z at nh http://localhost:50007/ oi http://localhost:50006/ m http://localhost:50005/ z Mỗi Spring Boot servers Corda R3 blockchain bao gồm API: @ } an Lu me: "O=BankB, L=HaNoi, C=VN" m co { l VD: gm /api/example/me: Trả thông tin node gọi vào n va ac th si 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" ] } lu an n va /api/example/ious: Trả thông tin giao dịch mà node thực tn to VD: p {  ie gh [ state: { d oa nl w o data: an lu  va { @class: "com.example.state.IOUState",  value: 100,  lender: "O=BankA, L=HaNoi, C=VN",  borrower: "O=BankB, L=HaNoi, C=VN",  linearId: ll u nf  oi m z at nh z gm @ { externalId: null,  id: "84eda410-892a-4d72-8af2- an Lu } m co fc69ef81e3be" l  n va ac th si 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 lu an Ew3G5d2maAq8vtLE4kZHgCs5jcB1N31cx1hpsLeqG2 n va ngSysVHqcXhbNts6SkRWDaV7xNcr6MtcbufGUchxre tn to dBb6" gh } p ie }, ref: { oa txhash: "A6D14D700BD6B97FF0992376B66365D4A2CC d  nl w o ll u nf } index: va  an lu 586E070D3F75FFD64B84CAF0B89E", } oi z at nh ] m  /api/example/create-iou: API tạo giao dịch chuyển tiền z Sau thực cài đặt triển khai thành cơng tồn hệ thống từ Client, @ gm Webservice Bank hệ thống Blockchain, việc thực chuyển tiền từ hệ thống l 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, an Lu hàng nhận Blockchain Corda m co lịch sử giao dịch xử lý lưu trữ đầy đủ hệ thống ngân hàng chuyển, ngân n va ac th si 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 toà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 lu an chất cơng khai, minh bạch không dễ mạo danh, sửa đổi, Blockchain khối vững n va Nghiệp vụ chuyển tiền liên ngân hàng theo đường tích hợp công nghệ p ie gh tn to tương lai không xa d oa nl w ll u nf va an lu oi m z at nh z m co l gm @ an Lu n va ac th si 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ệ lu an • Hàm băm chữ ký số, kỹ thuật sử dụng blockchain n va • Tiền số, ứng dụng blockchain tn to • Các mơ hình chuyển tiền liên ngân hàng thời điểm gh Thực nghiệm: p ie • 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 w áp dụng framework Corda R3 oa nl Định hướng nghiên cứu d Do thời gian chưa có nhiều, bên cạnh kết đạt được, luận văn an lu nhiều hạn chế việc triển khai chương trình thực nghiệm Để mạng blockchain u nf va 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 ll oi m sánh tốc độ thực cải thiện hiệu hệ thống z at nh 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 hồn thiện mạng blockchain với nhiều nút hoạt động z • Thử nghiệm phương pháp ký số khác so sánh tốc độ xử lý, độ an toàn @ gm thuật tốn để cải thiện hiệu tính bảo mật blockchain m co Blockchain l • Bổ sung thêm nghiệp vụ cần thiết nghệ thống ngân hàng vào hệ thống an Lu n va ac th si 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 tồ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 lu an (2015), Sok: Research perspectives and challenges for Bitcoin and cryptocurrencies, n va In 2015 IEEE Symposium on Security and Privacy, pages 104–121 tn to [6] Crosby, M., Nachiappan, Pattanayak, P., Verma, S., and Kalyanaraman, V., gh Blockchain technology beyond Bitcoin, Technical report, Berkeley, CA, USA p ie [7] Hakobyan, D (2012), Authentication and authorization systems in cloud w environments Master’s thesis, Stockholm, Sweden oa nl [8] Narayanan, A., Bonneau, J., Felten, E., Miller, A., and Goldfeder, S., Bitcoin and Cryptocurrency Technologies, Princeton University Press d September 2016, https://www.linkedin.com/pulse/blockchain- u nf va Linkedin, an lu [9] Rodrigues, E (2016), The blockchain architecture in a nutshell, Technical report, architecture-nutshell-eder-rodrigues C and C., Blockchain research at mit, oi z at nh http://blockchain.mit.edu/ Catalini, m Tucker, ll [10] [11] Xu, J J (2016), Are blockchains immune to all malicious attacks?, Financial z Innovation, 2(1):25, ISSN 2199-4730 @ https://bravenewcoin.com/assets/Whitepapers/Ethereum-A-Secure- l Ledger.”, gm [12] Wood, G., “Ethereum: A Secure Decentralised Generalised Transaction m co DecentralisedGeneralised-Transaction-Ledger-Yellow-Paper.pdf an Lu n va ac th si 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; lu an private final Step GENERATING_TRANSACTION = new Step("Gen va n erating transaction based on new IOU."); private final Step VERIFYING_TRANSACTION = new Step("Verifyi ng contract constraints."); ie gh tn to private final Step SIGNING_TRANSACTION = new Step("Signing tr p private final Step GATHERING_SIGS = new Step("Gathering the cou oa nl w ansaction with our private key."); d nterparty's signature.") { lu va an Acceptor extends FlowLogic u nf public static class Acceptor extends FlowLogic { m private final FlowSession otherPartySession; oi ll z at nh public Acceptor(FlowSession otherPartySession) { z } @Suspendable 10 @Override an Lu m co l gm this.otherPartySession = otherPartySession; @ n va ac th si 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) { lu an 19 requireThat(require -> { n va 20 ContractState output = stx.getTx().getOutputs().get(0).getData 21 require.using("This must be an IOU transaction.", output inst anceof IOUState); p ie gh tn to (); require.using("I won't accept IOUs with a value over 100.", io nl w 23 IOUState iou = (IOUState) output; 22 d oa u.getValue()

Ngày đăng: 12/07/2023, 17:31

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan