Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 81 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
81
Dung lượng
2,66 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC QUY NHƠN LÊ ĐÌNH THY HẢI lu an n va tn to ie gh ỨNG DỤNG CÔNG NGHỆ BLOCKCHAIN p TRONG VÍ ĐIỆN TỬ d oa nl w u nf va an lu ll LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH oi m z at nh z m co l gm @ an Lu Bình Định – Năm 2019 n va ac th si BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC QUY NHƠN LÊ ĐÌNH THY HẢI lu an n va tn to ie gh ỨNG DỤNG CƠNG NGHỆ BLOCKCHAIN p TRONG VÍ ĐIỆN TỬ d oa nl w an lu : KHOA HỌC MÁY TÍNH oi m Khóa : 8480101 ll Mã số u nf va Chuyên ngành : 20 z at nh z gm @ Người hướng dẫn: TS HỒ VĂN LÂM m co l an Lu n va ac th si LỜI CAM ĐOAN Tôi xin cam đoan công trình nghiên cứu thực luận văn thực riêng tôi, hướng dẫn TS Hồ Văn Lâm Mọi tham khảo từ tài liệu, công trình nghiên cứu liên quan nước quốc tế trích dẫn rõ ràng luận văn Mọi chép không hợp lệ, vi phạm quy chế hay gian trá tơi xin hồn tồn chịu trách nhiệm chịu kỷ luật trường Đại học Quy Nhơn lu Bình Định, ngày 22 tháng năm 2019 an n va HỌC VIÊN THỰC HIỆN gh tn to p ie Lê Đình Thy Hải 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 LỜI CẢM ƠN Trong trình thực hồn thiện luận văn này, tơi xin gửi lời cảm ơn chân thành đến Thầy Cô Khoa Công nghệ thông tin trường Đại học Quy Nhơn Thầy thính giảng trường, viện Hà Nội Đà Nẵng cung cấp cho kiến thức quý báu suốt năm học qua Đặc biệt cho gửi lời cảm ơn sâu sắc tới TS Hồ Văn Lâm dành nhiều thời gian vô quý báu để định hướng tận tình hướng dẫn tơi lu tạo điều kiện thuận lợi để tơi hồn thành tốt luận văn an Tơi xin chân thành cảm ơn! n va gh tn to p ie HỌC VIÊN THỰC HIỆN oa nl w d Lê Đình Thy Hải ll u nf va an lu oi m z at nh z m co l gm @ an Lu n va ac th si MỤC LỤC TRANG PHỤ BÌA LỜI CAM ĐOAN LỜI CẢM ƠN CÁC CỤM TỪ VIẾT TẮT DANH MỤC BẢNG BIỂU DANH MỤC HÌNH VẼ LỜI NĨI ĐẦU lu Chương TỔNG QUAN VỀ CÔNG NGHỆ BLOCKCHAIN an n va 1.1 KHÁI NIỆM 1.2.1 Cơ sở hình thành 1.2.2 Cấu tạo p ie gh tn to 1.2 CƠ SỞ HÌNH THÀNH VÀ CẤU TẠO w 1.3 PHÂN LOẠI BLOCKCHAIN 12 oa nl 1.3.1 Public 12 d 1.3.2 Private 13 lu an 1.3.3 Permissioned 14 u nf va 1.4 CÁCH THỨC HOẠT ĐỘNG 14 ll 1.5 ĐẶC ĐIỂM 15 m oi 1.5.1 Dữ liệu phân tán 15 z at nh 1.5.2 Dữ liệu phép truy cập cho tất bên liên quan 15 1.5.3 Tính ẩn danh công khai 16 z gm @ 1.5.4 Tính bền vững Blockchain 16 1.5.5 Minh bạch bị phá vỡ 16 l m co 1.5.6 Tăng cường bảo mật 17 1.6 CÁC PHIÊN BẢN CỦA CÔNG NGHỆ BLOCKCHAIN 17 an Lu 1.6.1 Blockchain Version 1.0 – Currencies – Tiền ảo toán 18 n va ac th si 1.6.2 Blockchain Version 2.0 – Smart Contract 23 1.6.3 Blockchain Version 3.0 – Organizing Acticity – Thiết kế giám sát hoạt động 28 1.7 LỢI ÍCH 30 1.7.1 Bảo mật 30 1.7.2 Bất biến 30 1.7.3 Không thể sửa, làm giả 30 1.7.4 Minh bạch, rõ ràng 31 lu 1.7.5 Theo dõi xác 31 an 1.7.6 Bỏ qua khâu trung gian 31 va n 1.7.7 Tiết kiệm chi phí 31 1.8.1 Thời gian xử lý giao dịch lâu 31 ie gh tn to 1.8 HẠN CHẾ 31 p 1.8.2 Rất tốn lượng 32 nl w 1.8.3 Tốn không gian lưu trữ 32 d oa 1.8.4 Nhược điểm đặc tính khơng bị phá vỡ 32 an lu 1.9 CÁC ỨNG DỤNG TIỀM NĂNG 32 u nf va Chương VÍ ĐIỆN TỬ BLOCKCHAIN 35 2.1 TỔNG QUAN VỀ CƠNG NGHỆ VÍ 35 ll oi m 2.1.1 Ví bất định (ngẫu nhiên) 35 z at nh 2.1.2 Ví tất định 36 2.2 MỘT SỐ CÁCH LƯU TRỮ CỦA VÍ ĐIỆN TỬ BLOCKCHAIN 37 z gm @ 2.2.1 Ví nóng 38 2.2.2 Ví trữ lạnh 39 l m co 2.3 VÍ ĐIỆN TỬ BLOCKCHAIN 39 2.3.1 Bảo mật 40 an Lu 2.3.2 Kiểm soát truy cập 40 n va ac th si 2.3.3 Hoạt động chi tiêu giao dịch ví Blockchain 40 2.4 TẠO VÍ BLOCKCHAIN 42 2.4.1 Cách tạo giao dịch 45 2.4.2 Xác thực chữ ký 48 2.4.3 Sở hữu tiền điện tử 50 2.4.4 Xử lý giao dịch 52 Chương THỰC NGHIỆM MƠ PHỎNG VÍ DÙNG CƠNG NGHỆ BLOCKCHAIN 56 lu 3.1 PHÁT BIỂU BÀI TOÁN 56 an 3.2 TRIỂN KHAI THỰC NGHIỆM 56 va n 3.2.1 Tạo Blockchain 57 to gh tn 3.2.1.1 Chữ ký số 58 p ie 3.2.1.2 Xác thực công việc 59 3.2.1.3 Tạo block 61 oa nl w 3.2.1.4 Kiểm tra tính tồn vẹn Blockchain 63 3.2.1.5 Tạo Blockchain 63 d an lu 3.2.1.6 Thêm block vào chuỗi Blockchain 64 u nf va 3.2.2 Giao dịch Ví Blockchain 66 KẾT LUẬN 69 ll oi m DANH MỤC TÀI LIỆU THAM KHẢO 70 z at nh QUYẾT ĐỊNH GIAO ĐỀ TÀI LUẬN VĂN THẠC SĨ (Bản sao) z m co l gm @ an Lu n va ac th si DANH MỤC CÁC TỪ VIẾT TẮT Elliptic Curve Digital Signature Thuật toán chữ ký số Algorithm đường elliptic HD Hierarachical Deterministic Ví tất định phân cấp PoW Proof of Work Bằng chứng xử lý P2SH Pay to script hash Trả tới mã băm kịch P2PKH Pay to pubkey hash ECDSA lu an va n P2P khai Peer-to-Peer Network Mạng ngang hàng SHA-256 Cryptographic Hash Thuật tốn mã hóa Algorithm SHA256 Unspent transaction outputs Đầu chưa chi tiêu gh tn to Network Trả tới mã băm khóa cơng p ie SHA256 oa nl w UTXO Giao diện phần mềm ứng Application Programming d lu API dụng ll u nf va an Interface oi m z at nh z m co l gm @ an Lu n va ac th si DANH MỤC CÁC BẢNG BIỂU Bảng 1.1 Các ứng dụng Blockchain vượt khỏi tiền tệ 24 Bảng 3.1 Môi trường triển khai 56 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 DANH MỤC CÁC HÌNH VẼ Hình 1.1 Hai trường hợp toán Các vị tường Byzantine Hình 1.2 Quá trình phát triển Blockchain Hình 1.3 Minh họa chuỗi khối hệ thống Hình 1.4 Cấu tạo khối gồm phần Hình 1.5 Dữ liệu khối Hình 1.6 Mã băm (Hash) khối Hình 1.7 Mã băm (Hash) khối trước lu Hình 1.8 Liên kết mã Hash khối 10 an n va Hình 1.9 Mạng lưới Public 13 Hình 1.11 Mạng lưới Permissioned 14 gh tn to Hình 1.10 Mạng lưới Private 13 p ie Hình 1.12 Mơ hình hoạt động tảng Blockchain 14 Hình 1.13 Các giai đoạn phát triển công nghệ Blockchain 18 oa nl w Hình 1.14 Tập tin kỹ thuật số Bitcoin đơn giản hoá 19 d Hình 1.15 Hệ thống mạng phát tín hiệu tới nút kiểm tra số dư tài khoản 20 an lu Hình 1.16 Mã hố giao dịch chữ ký số đơn giản hóa 21 u nf va Hình 1.17 Sổ Bitcoin 22 ll Hình 1.18 Cấu trúc yêu cầu giao dịch Bitcoin 23 oi m Hình 1.19 – Swancoin Tác phẩm nghệ thuật số có lưu lượng hạn chế 26 z at nh Hình 1.20 Khái qt quy trình Hợp đồng thơng minh 28 Hình 1.21 Minh hoạ bảng cấu trúc tảng Blockchain 3.0 29 z gm @ Hình 1.22 Ba đặc tính Blockchain áp dụng ba thị trường khác kết hợp lại áp dụng cho lĩnh vực tài – ngân hàng 33 l m co Hình 2.1 Ví bất định 36 Hình 2.2 Ví tất định 37 an Lu Hình 2.3 Tạo chữ ký cho giao dịch 41 n va ac th si 56 Chương THỰC NGHIỆM MƠ PHỎNG VÍ DÙNG CƠNG NGHỆ BLOCKCHAIN 3.1 PHÁT BIỂU BÀI TỐN Bài tốn đặt làm để tạo ví điện tử sử dụng cơng nghệ Blockchain để giao dịch Q trình bao gồm cách tạo block; Block bao gồm thông tin liệu, hàm băm, xử lý giao dịch lưu trữ vào lu an Blockchain nào; cách tạo ví, cập nhật quản lý ví thực va n luận văn Để giao tiếp với blockchain ứng dụng sử dụng thư viện GSON thư ie gh tn to Tôi chọn Java, Eclipse Netbean để phát triển ứng dụng p viên JAVA tạo Google, thư viện Bounceycastle API mật mã nl w cho JAVA cung cấp tổ chức từ thiện phi lợi nhuận Úc Môi d oa trường phát triển tổng hợp lại bảng sau: Môi trường Tên môi trường va an lu Bảng 3.1 Môi trường triển khai oi z at nh Tên Project Windows m Dịch vụ API ll Hệ điều hành JAVA, Eclipse Netbean u nf Ngơn ngữ lập trình GSON Bounceycastle NoobChain z 3.2 TRIỂN KHAI THỰC NGHIỆM @ gm Với phạm vi luận văn, ứng dụng triển khai mô trình tạo m co l Block, thêm vào chuỗi Blockchain, tạo ví xử lý giao dịch ví Tất q trình xây dựng nên API tiện cho việc triển khai ví an Lu ứng dụng sau n va ac th si 57 Giao diện chương trình sau: lu an n va p ie gh tn to w oa nl Hình 3.1 Giao diện chương trình d 3.2.1 Tạo Blockchain an lu Một Blockchain chuỗi khối Mỗi khối Blockchain u nf va có chữ ký số riêng nó, chứa chữ ký số khối trước có số liệu (dữ liệu giao dịch chẳng hạn) ll oi m z at nh z gm @ Hình 3.2 Chuỗi Blockchain m co l Hash = Digital Signature Mỗi khối không chứa hash khối phía trước nó, mà hash an Lu khối cịn tính tốn từ hash khối phía trước Nếu liệu khối n va ac th si 58 liệu trước thay đổi hash thay đổi (vì tính tốn phần theo liệu) ảnh hưởng đến tất hash khối sau Tính tốn so sánh hash cho phép xem blockchain không hợp lệ 3.2.1.1 Chữ ký số Có nhiều thuật tốn mã hóa để lựa chọn, nhiên tơi sử dụng thuật tốn mã hóa SHA256 phù hợp cho ví dụ Chúng ta import java.security.MessageDigest; để có quyền truy cập vào thuật toán lu SHA256 tạo chữ ký số class StringUtil sau: an import java.security.MessageDigest; va n public class StringUtil { to tn // Applies Sha256 to a string and returns the result ie gh public static String applySha256(String input) { p try { nl w MessageDigest digest = MessageDigest.getInstance("SHA-256"); oa // Applies sha256 to our input, d byte[] hash = digest.digest(input.getBytes("UTF-8")); va an lu StringBuffer hexString = new StringBuffer(); u nf for (int i = 0; i < hash.length; i++) { ll String hex = Integer.toHexString(0xff & hash[i]); m oi if (hex.length() == 1) z at nh hexString.append('0'); hexString.append(hex); z @ } } catch (Exception e) { m co l gm return hexString.toString(); throw new RuntimeException(e); an Lu } n va ac th si 59 } } Chúng ta phải tính tốn hash từ tất phần khối mà khơng muốn bị giả mạo Vì vậy, sử dụng đến previousHash, data timeStamp public String calculateHash() { String calculatedhash = StringUtil.applySha256(previousHash + Long.toString(timeStamp) + data); return calculatedhash; } lu an Và thêm phương thức tính hash vào constructor class Block1 n va Public Block1(String data, String previousHash) { tn to this.data = data; this.previousHash = previousHash; gh p ie this.timeStamp = new Date().getTime(); this.hash = calculateHash(); oa nl w Tất bạn cần biết đưa vào string áp dụng thuật tốn d SHA256 vào nó, trả chữ ký tạo string: va an lu u nf 3.2.1.2 Xác thực công việc ll Chúng ta yêu cầu người khai thác phải làm việc cách thử nghiệm m oi nhiều giá trị khác Block hash Block bắt z at nh đầu với nhiều số 0, cách thêm biến int gọi nonce, biến sử dụng phương thức calculateHash() dùng để tính tốn z gm @ hash Block Trên thực tế, người khai thác bắt đầu lặp lại từ m co cho nonce l điểm ngẫu nhiên Một số người khai thác chí thử số ngẫu nhiên an Lu Phương thức mineBlock() nhận vào tham số difficulty (Độ khó), số lượng số bắt đầu hash mà người khai thác phải giải Độ khó thấp n va ac th si 60 dễ dàng để giải gần tức thời phần lớn máy tính phổ biến Tuy nhiên dành cho test đặt tạm Độ khó lớn nhiều thời gian để giải Thuật tốn xác thực cơng việc thơng qua phương thức mineBlock() Class Block sau: package NoobChain; import java.util.Date; public class Block { public String hash; lu an public String previousHash; va private String data; n tn to private long timeStamp; gh private int nonce; p ie public Block(String data, String previousHash) { this.previousHash = previousHash; oa nl w this.data = data; d this.timeStamp = new Date().getTime(); lu u nf va } an this.hash = calculateHash(); public String calculateHash() { ll oi m String calculatedhash = StringUtil.applySha256(previousHash + z at nh Long.toString(timeStamp) + Integer.toString(nonce) + data); return calculatedhash; z } gm @ public void mineBlock(int difficulty) { m co //Create a string with difficulty * "0" l String target = new String(new char[difficulty]).replace('\0', '0'); nonce ++; an Lu while(!hash.substring( 0, difficulty).equals(target)) { n va ac th si 61 hash = calculateHash(); } System.out.println("Block Mined!!! : " + hash); } } 3.2.1.3 Tạo block Thuật toán tạo Block project NoobChain có code sau: package NoobChain; import java.util.Date; lu an public class Block1 { n va public String hash; tn to public String previousHash; public String data; // our data will be a simple message p ie gh public long timeStamp; // as number of milliseconds since 1/1/1970 w public int nonce; oa nl private String log = ""; public Block1(String data, String previousHash) { d an lu this.data = data; va this.previousHash = previousHash; ll u nf this.timeStamp = new Date().getTime(); other values oi m this.hash = calculateHash(); // Making sure we this after we set the z at nh } z public String calculateHash() { @ String calculatedhash = StringUtil.applySha256(previousHash + gm } an Lu Public void mineBlock(int difficulty) { m co return calculatedhash; l Long.toString(timeStamp) + Integer.toString(nonce) + data); n va ac th si 62 String target = new String(new char[difficulty]).replace('\0', '0'); while(!hash.substring( 0, difficulty).equals(target)) { nonce ++; hash = calculateHash(); } this.log += "Block Mined!!! : " + hash; } public String getLog () { String rs = this.log; lu an this.log = "\n"; n va return rs; to } Kết Block1 chứa String hash giữ chữ ký số Block p ie gh tn } Biến previousHash để giữ hash block trước String data để giữ d oa nl w liệu thể hình 3.3 ll u nf va an lu oi m z at nh z m co l gm @ an Lu Hình 3.3 Cấu tạo block n va ac th si 63 3.2.1.4 Kiểm tra tính tồn vẹn Blockchain Hàm isChainValid() dùng Class NoobChain, lặp qua tất Block chuỗi so sánh tất hash Hàm cần thiết để kiểm tra tính tồn vẹn Blockchain Public static Boolean isChainValid() { Block currentBlock; Block previousBlock; for (int i = 1; i < blockchain.size(); i++) { currentBlock = blockchain.get(i); lu an previousBlock = blockchain.get(i - 1); va if !currentBlock.hash.equals(currentBlock.calculateHash())) { n tn to System.out.println("Current Hashes not equal"); gh return false; p ie } w if (!previousBlock.hash.equals(currentBlock.previousHash)) { Hashes not oa nl System.out.println("Previous d equal"); } } oi m return true; ll u nf va an lu return false; 3.2.1.5 Tạo Blockchain z at nh } z Hãy tạo class NoobChain chứa main method sau thực @ m co l Public void TaoBlockchain() { gm nút lệnh Tạo Blockchain để tạo chuỗi Blockchain gồm Block blockchain1.add(new Block1("Chào bạn block thứ 1", "0")); an Lu blockchain1.get(0).mineBlock(difficulty); blockchain1.add(new Block1("Chào bạn block thứ 2", n va ac th si 64 blockchain1.get(blockchain1.size() - 1).hash)); blockchain1.get(1).mineBlock(difficulty); blockchain1.add(new Block1("Chào bạn block thứ 3", blockchain1.get(blockchain1.size() - 1).hash)); blockchain1.get(2).mineBlock(difficulty); String blockchainJson = new GsonBuilder().setPrettyPrinting().create().toJson(blockchain1); txtLog.append("\nThe block chain: "); txtLog.append(blockchainJson); lu an txtLog.append("\n- Chain count: " + blockchain1.size()); n va txtLog.setCaretPosition(txtLog.getDocument().getLength()); to } p ie gh tn Kết sau: d oa nl w ll u nf va an lu oi m z at nh z m co l gm @ 3.2.1.6 Thêm block vào chuỗi Blockchain an Lu Hình 3.4 Kết tạo chuỗi Blockchain n va ac th si 65 Để thêm Block vào chuỗi Blockchain có thực nút lệnh Thêm Block với code sau: Private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { if (blockchain1.size()>0){ cursor1 = blockchain1.size()+1; blockchain1.add(new Block1("Chào bạn block thứ "+ cursor1 , blockchain1.get(blockchain1.size() - 1).hash)); blockchain1.get(blockchain1.size() - 1).mineBlock(difficulty); Block1 b = blockchain1.get(blockchain1.size() - 1); lu an txtBlocknum1.setText(0 + ""); n va txtHash1.setText(b.hash); tn to txtPrevhash1.setText(b.previousHash); txtData1.setText(b.data); gh p ie Date date = new Date(b.timeStamp); w txtTimestamp1.setText(date.toGMTString()); oa nl txtNonce1.setText(b.nonce + ""); String page = (cursor1) + "/" + this.blockchain1.size(); d an lu txtBlocknum1.setText(cursor1 + ""); va txtBlock1.setText(page); ll u nf String blockchainJson = new oi m GsonBuilder().setPrettyPrinting().create().toJson(blockchain1); txtLog.append("\nThe block chain: "); z at nh txtLog.append(blockchainJson); z txtLog.append("\n- Chain count: " + blockchain1.size()); @ txtLog.setCaretPosition(txtLog.getDocument().getLength()); m co l } gm } an Lu Kết thêm Block thứ vào chuỗi Blockchain sau: n va ac th si 66 lu an n va p ie gh tn to w Hình 3.5 Kết thêm Block vào chuỗi Blockchain oa nl 3.2.2 Giao dịch Ví Blockchain d Ta tiến hành giao dịch chuyển tiền hai Ví A Ví B dựa vào q lu an trình tạo giao dịch ban đầu từ Block Genesis chuyển cho Ví A 100 coin, u nf va sau giao dịch Ví A Ví B thực để thêm Block tiếp ll theo thuật toán giao dịch cài đặt code sau: oi m Public static void GiaodichVi() { z at nh Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); walletA = new Wallet(); z l gm Wallet coinbase = new Wallet(); @ walletB = new Wallet(); genesisTransaction = new Transaction(coinbase.publicKey, walletA.publicKey, m co 100f, null); an Lu genesisTransaction.generateSignature(coinbase.privateKey); n va ac th si 67 genesisTransaction.transactionId = "0";genesisTransaction.outputs.add(new TransactionOutput(genesisTransaction.reciepient, genesisTransaction.value, genesisTransaction.transactionId)); UTXOs.put(genesisTransaction.outputs.get(0).id, genesisTransaction.outputs.get(0)); NoobChain.log += "\n***** GIAO DỊCH GIỮA VÍ A VA B *****"; Block genesis = new Block("0"); genesis.addTransaction(genesisTransaction); addBlock(genesis); lu an Block block1 = new Block(genesis.hash); n va NoobChain.log += "\nWalletA's balance is: " + walletA.getBalance(); block1.addTransaction(walletA.sendFunds(walletB.publicKey, 40f)); gh tn to NoobChain.log += "\nWalletA is Attempting to send funds (40) to WalletB "; p ie NoobChain.log += "\nWalletA is Attempting to send funds (20) to WalletB "; addBlock(block1); nl w block1.addTransaction(walletA.sendFunds(walletB.publicKey, 20f)); d oa NoobChain.log += block1.getLog(); an lu NoobChain.log += "\nWalletA's balance is: " + walletA.getBalance(); va NoobChain.log += "\nWalletB's balance is: " + walletB.getBalance(); u nf Block block2 = new Block(block1.hash); ll NoobChain.log += "\nWalletA Attempting to send more funds (1000) than it has "; m oi block2.addTransaction(walletA.sendFunds(walletB.publicKey, 1000f)); z at nh NoobChain.log += "\nWalletA Attempting to send more funds (10) to WalletB "; block2.addTransaction(walletA.sendFunds(walletB.publicKey, 10f)); z NoobChain.log += block2.getLog(); l gm @ addBlock(block2); m co NoobChain.log += "\nWalletA's balance is: " + walletA.getBalance(); NoobChain.log += "\nWalletB's balance is: " + walletB.getBalance(); an Lu Block block3 = new Block(block2.hash); n va ac th si 68 NoobChain.log += "\nWalletB is Attempting to send funds (20) to WalletA "; block3.addTransaction(walletB.sendFunds( walletA.publicKey, 20)); addBlock(block3); NoobChain.log += block3.getLog(); NoobChain.log += "\nWalletA's balance is: " + walletA.getBalance(); NoobChain.log += "\nWalletB's balance is: " + walletB.getBalance(); System.out.println("\n\nLOG"+ NoobChain.log); } Kết giao dịch hiển thị sau: 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 Hình 3.6 Kết giao dịch Ví Blockchain n va ac th si 69 KẾT LUẬN Công nghệ Blockchain chuyển đổi thành nguồn tài nguyên đáng tin cậy có giá trị giới kỹ thuật số kinh doanh Nó có ứng dụng hầu hết ngành công nghiệp Thậm chí tập đồn lớn theo đuổi việc sử dụng công nghệ để nâng cấp quy trình hoạt động họ Để bắt kịp xu hướng phát triển công nghệ, luận văn chọn nghiên cứu “Ứng dụng cơng nghệ Blockchain ví điện tử” nhằm giúp hiểu rỏ lu cách tạo Blockchain việc giao dịch Ví an va Sau thời gian thực hiện, luận văn đạt số kết như: n Tìm hiểu cơng nghệ Blockchain cơng nghệ Ví điện tử Blockchain to Thực nghiệm mơ Blockchain ví cơng nghệ Blockchain p ie gh tn Tìm hiểu mơ hình xác thực giao dịch Blockchain w Mục tiêu phát triển nghiên cứu cách tạo Blockchain oa nl việc giao dịch Ví nào, nhằm giúp người dùng hiểu rỏ d công nghệ Blockchain lu an Hướng phát triển tương lai: u nf va Xây dựng API Ví Blockchain tương tác để dễ triển khai rộng rãi ll Xây dựng qui chế sử dụng Ví Blockchain hiệu m oi Trong trình thực hiện, thời gian hạn chế kiến thức, kinh z at nh nghiệm thực tiễn nên luận văn tơi cịn nhiều thiếu sót, tơi mong đánh giá, góp ý thầy cô z m co l gm @ Tôi xin chân thành cảm ơn! an Lu n va ac th si 70 DANH MỤC TÀI LIỆU THAM KHẢO [1] Satoshi Nakamoto (2009), “Bitcoin: A Peer-to-Peer Electronic Cash System, ” https://bitcoin.org/bitcoin.pdf [2] Don Tapscott and Alex Tapscott (2016), "Blockchain Revolution: How the Technology Behind Bitcoin Is Changing Money, Business and the World“, http://blockchain-revolution.com/ [3] Narayan Prusty (April 2017), Building Blockchain Projects: Develop realtime practical DApps using Ethereum and JavaScript, Packt Publishing lu [4] Sesaria Kikitamara (August 23, 2017): MASTER’S THESIS an INFORMATION SCIENCES - Digital Identity Management on va n Blockchain for Open Model Energy System HELSINKI Department of Computer Science - Authentication, ie gh tn to [5] Mukesh Thakur (September 13, 2017): Master’s Thesis UNIVERSITY OF p Authorization and Accounting with Ethereum Blockchain - Helsinki Building new state machines with Virtualchain, nl w [6] an lu dccl16 d oa http://blockstack.ghost.io/virtualchain-research-paper-published-at- https://www.soroushjp.com/2014/12/20/bitcoin-multisig- ll u nf transactions, va [7] Bitcoin multisig the hard way: Understanding raw P2SH multisig oi m the-hard-way-understanding-raw-multisignature-bitcoin-transactions z at nh [8] BlockCypher Python, https://github.com/blockcypher/blockcypher-python [9] Transaction, http://adrenaline2017.hatenablog.com/entry/2017/05/29/120701 z [10] Understanding Blockchains (and Bitcoin)– Part 2: Technology, @ m co l technology.html gm https://luxsci.com/blog/understanding-blockchains-and-bitcoin- an Lu n va ac th si