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

(LUẬN văn THẠC sĩ) ứng dụng công nghệ blockchain trong ví điện tử

81 6 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

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 ỨNG DỤNG CƠNG NGHỆ BLOCKCHAIN TRONG VÍ ĐIỆN TỬ LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Bình Định – Năm 2019 download by : skknchat@gmail.com BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC QUY NHƠN LÊ ĐÌNH THY HẢI ỨNG DỤNG CƠNG NGHỆ BLOCKCHAIN TRONG VÍ ĐIỆN TỬ Chuyên ngành : KHOA HỌC MÁY TÍNH Mã số : 8480101 Khóa : 20 Người hướng dẫn: TS HỒ VĂN LÂM download by : skknchat@gmail.com 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 Bình Định, ngày 22 tháng năm 2019 HỌC VIÊN THỰC HIỆN Lê Đình Thy Hải download by : skknchat@gmail.com LỜI CẢM ƠN Trong q trình thực hồn thiện luận văn này, 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 tạo điều kiện thuận lợi để tơi hồn thành tốt luận văn Tơi xin chân thành cảm ơn! HỌC VIÊN THỰC HIỆN Lê Đình Thy Hải download by : skknchat@gmail.com 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 Chương TỔNG QUAN VỀ CÔNG NGHỆ BLOCKCHAIN 1.1 KHÁI NIỆM 1.2 CƠ SỞ HÌNH THÀNH VÀ CẤU TẠO 1.2.1 Cơ sở hình thành 1.2.2 Cấu tạo 1.3 PHÂN LOẠI BLOCKCHAIN 12 1.3.1 Public 12 1.3.2 Private 13 1.3.3 Permissioned 14 1.4 CÁCH THỨC HOẠT ĐỘNG 14 1.5 ĐẶC ĐIỂM 15 1.5.1 Dữ liệu phân tán 15 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 1.5.4 Tính bền vững Blockchain 16 1.5.5 Minh bạch bị phá vỡ 16 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 1.6.1 Blockchain Version 1.0 – Currencies – Tiền ảo toán 18 download by : skknchat@gmail.com 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 1.7.5 Theo dõi xác 31 1.7.6 Bỏ qua khâu trung gian 31 1.7.7 Tiết kiệm chi phí 31 1.8 HẠN CHẾ 31 1.8.1 Thời gian xử lý giao dịch lâu 31 1.8.2 Rất tốn lượng 32 1.8.3 Tốn không gian lưu trữ 32 1.8.4 Nhược điểm đặc tính khơng bị phá vỡ 32 1.9 CÁC ỨNG DỤNG TIỀM NĂNG 32 Chương VÍ ĐIỆN TỬ BLOCKCHAIN 35 2.1 TỔNG QUAN VỀ CƠNG NGHỆ VÍ 35 2.1.1 Ví bất định (ngẫu nhiên) 35 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 2.2.1 Ví nóng 38 2.2.2 Ví trữ lạnh 39 2.3 VÍ ĐIỆN TỬ BLOCKCHAIN 39 2.3.1 Bảo mật 40 2.3.2 Kiểm soát truy cập 40 download by : skknchat@gmail.com 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 3.1 PHÁT BIỂU BÀI TOÁN 56 3.2 TRIỂN KHAI THỰC NGHIỆM 56 3.2.1 Tạo Blockchain 57 3.2.1.1 Chữ ký số 58 3.2.1.2 Xác thực công việc 59 3.2.1.3 Tạo block 61 3.2.1.4 Kiểm tra tính tồn vẹn Blockchain 63 3.2.1.5 Tạo Blockchain 63 3.2.1.6 Thêm block vào chuỗi Blockchain 64 3.2.2 Giao dịch Ví Blockchain 66 KẾT LUẬN 69 DANH MỤC TÀI LIỆU THAM KHẢO 70 QUYẾT ĐỊNH GIAO ĐỀ TÀI LUẬN VĂN THẠC SĨ (Bản sao) download by : skknchat@gmail.com 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 P2P Network SHA256 UTXO API Trả tới mã băm khóa cơng 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 Application Programming Giao diện phần mềm ứng Interface dụng download by : skknchat@gmail.com 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 download by : skknchat@gmail.com 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 Hình 1.8 Liên kết mã Hash khối 10 Hình 1.9 Mạng lưới Public 13 Hình 1.10 Mạng lưới Private 13 Hình 1.11 Mạng lưới Permissioned 14 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 Hình 1.14 Tập tin kỹ thuật số Bitcoin đơn giản hố 19 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 Hình 1.16 Mã hố giao dịch chữ ký số đơn giản hóa 21 Hình 1.17 Sổ Bitcoin 22 Hình 1.18 Cấu trúc yêu cầu giao dịch Bitcoin 23 Hình 1.19 – Swancoin Tác phẩm nghệ thuật số có lưu lượng hạn chế 26 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 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 Hình 2.1 Ví bất định 36 Hình 2.2 Ví tất định 37 Hình 2.3 Tạo chữ ký cho giao dịch 41 download by : skknchat@gmail.com 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 Blockchain nào; cách tạo ví, cập nhật quản lý ví thực luận văn Tôi chọn Java, Eclipse Netbean để phát triển ứng dụng Để giao tiếp với blockchain ứng dụng sử dụng thư viện GSON thư viên JAVA tạo Google, thư viện Bounceycastle API mật mã cho JAVA cung cấp tổ chức từ thiện phi lợi nhuận Úc Môi trường phát triển tổng hợp lại bảng sau: Bảng 3.1 Môi trường triển khai Mơi trường Tên mơi trường Ngơn ngữ lập trình JAVA, Eclipse Netbean Hệ điều hành Windows Dịch vụ API GSON Bounceycastle Tên Project NoobChain 3.2 TRIỂN KHAI THỰC NGHIỆM Với phạm vi luận văn, ứng dụng triển khai mơ q trình tạo 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í ứng dụng sau download by : skknchat@gmail.com 57 Giao diện chương trình sau: Hình 3.1 Giao diện chương trình 3.2.1 Tạo Blockchain Một Blockchain chuỗi khối Mỗi khối Blockchain 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) Hình 3.2 Chuỗi Blockchain Hash = Digital Signature Mỗi khối không chứa hash khối phía trước nó, mà hash khối cịn tính tốn từ hash khối phía trước Nếu liệu khối download by : skknchat@gmail.com 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 SHA256 tạo chữ ký số class StringUtil sau: import java.security.MessageDigest; public class StringUtil { // Applies Sha256 to a string and returns the result public static String applySha256(String input) { try { MessageDigest digest = MessageDigest.getInstance("SHA-256"); // Applies sha256 to our input, byte[] hash = digest.digest(input.getBytes("UTF-8")); StringBuffer hexString = new StringBuffer(); for (int i = 0; i < hash.length; i++) { String hex = Integer.toHexString(0xff & hash[i]); if (hex.length() == 1) hexString.append('0'); hexString.append(hex); } return hexString.toString(); } catch (Exception e) { throw new RuntimeException(e); } download by : skknchat@gmail.com 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; } Và thêm phương thức tính hash vào constructor class Block1 Public Block1(String data, String previousHash) { this.data = data; this.previousHash = previousHash; this.timeStamp = new Date().getTime(); this.hash = calculateHash(); Tất bạn cần biết đưa vào string áp dụng thuật tốn SHA256 vào nó, trả chữ ký tạo string: 3.2.1.2 Xác thực công việc Chúng ta yêu cầu người khai thác phải làm việc cách thử nghiệm nhiều giá trị khác Block hash Block bắt đầ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 hash Block Trên thực tế, người khai thác bắt đầu lặp lại từ điểm ngẫu nhiên Một số người khai thác chí thử số ngẫu nhiên cho nonce 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 download by : skknchat@gmail.com 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; public String previousHash; private String data; private long timeStamp; private int nonce; public Block(String data, String previousHash) { this.data = data; this.previousHash = previousHash; this.timeStamp = new Date().getTime(); this.hash = calculateHash(); } public String calculateHash() { String calculatedhash = StringUtil.applySha256(previousHash + Long.toString(timeStamp) + Integer.toString(nonce) + data); return calculatedhash; } public void mineBlock(int difficulty) { String target = new String(new char[difficulty]).replace('\0', '0'); //Create a string with difficulty * "0" while(!hash.substring( 0, difficulty).equals(target)) { nonce ++; download by : skknchat@gmail.com 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; public class Block1 { public String hash; public String previousHash; public String data; // our data will be a simple message public long timeStamp; // as number of milliseconds since 1/1/1970 public int nonce; private String log = ""; public Block1(String data, String previousHash) { this.data = data; this.previousHash = previousHash; this.timeStamp = new Date().getTime(); this.hash = calculateHash(); // Making sure we this after we set the other values } public String calculateHash() { String calculatedhash = StringUtil.applySha256(previousHash + Long.toString(timeStamp) + Integer.toString(nonce) + data); return calculatedhash; } Public void mineBlock(int difficulty) { download by : skknchat@gmail.com 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; this.log = "\n"; return rs; } } Kết Block1 chứa String hash giữ chữ ký số Block Biến previousHash để giữ hash block trước String data để giữ liệu thể hình 3.3 Hình 3.3 Cấu tạo block download by : skknchat@gmail.com 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); previousBlock = blockchain.get(i - 1); if !currentBlock.hash.equals(currentBlock.calculateHash())) { System.out.println("Current Hashes not equal"); return false; } if (!previousBlock.hash.equals(currentBlock.previousHash)) { System.out.println("Previous Hashes not equal"); return false; } } return true; } 3.2.1.5 Tạo Blockchain Hãy tạo class NoobChain chứa main method sau thực nút lệnh Tạo Blockchain để tạo chuỗi Blockchain gồm Block Public void TaoBlockchain() { blockchain1.add(new Block1("Chào bạn block thứ 1", "0")); blockchain1.get(0).mineBlock(difficulty); blockchain1.add(new Block1("Chào bạn block thứ 2", download by : skknchat@gmail.com 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); txtLog.append("\n- Chain count: " + blockchain1.size()); txtLog.setCaretPosition(txtLog.getDocument().getLength()); } Kết sau: Hình 3.4 Kết tạo chuỗi Blockchain 3.2.1.6 Thêm block vào chuỗi Blockchain download by : skknchat@gmail.com 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); txtBlocknum1.setText(0 + ""); txtHash1.setText(b.hash); txtPrevhash1.setText(b.previousHash); txtData1.setText(b.data); Date date = new Date(b.timeStamp); txtTimestamp1.setText(date.toGMTString()); txtNonce1.setText(b.nonce + ""); String page = (cursor1) + "/" + this.blockchain1.size(); txtBlocknum1.setText(cursor1 + ""); txtBlock1.setText(page); String blockchainJson = new GsonBuilder().setPrettyPrinting().create().toJson(blockchain1); txtLog.append("\nThe block chain: "); txtLog.append(blockchainJson); txtLog.append("\n- Chain count: " + blockchain1.size()); txtLog.setCaretPosition(txtLog.getDocument().getLength()); } } Kết thêm Block thứ vào chuỗi Blockchain sau: download by : skknchat@gmail.com 66 Hình 3.5 Kết thêm Block vào chuỗi Blockchain 3.2.2 Giao dịch Ví Blockchain Ta tiến hành giao dịch chuyển tiền hai Ví A Ví B dựa vào trình tạo giao dịch ban đầu từ Block Genesis chuyển cho Ví A 100 coin, sau giao dịch Ví A Ví B thực để thêm Block thuật toán giao dịch cài đặt code sau: Public static void GiaodichVi() { Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); walletA = new Wallet(); walletB = new Wallet(); Wallet coinbase = new Wallet(); genesisTransaction = new Transaction(coinbase.publicKey, walletA.publicKey, 100f, null); genesisTransaction.generateSignature(coinbase.privateKey); download by : skknchat@gmail.com 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); Block block1 = new Block(genesis.hash); NoobChain.log += "\nWalletA's balance is: " + walletA.getBalance(); NoobChain.log += "\nWalletA is Attempting to send funds (40) to WalletB "; block1.addTransaction(walletA.sendFunds(walletB.publicKey, 40f)); NoobChain.log += "\nWalletA is Attempting to send funds (20) to WalletB "; block1.addTransaction(walletA.sendFunds(walletB.publicKey, 20f)); addBlock(block1); NoobChain.log += block1.getLog(); NoobChain.log += "\nWalletA's balance is: " + walletA.getBalance(); NoobChain.log += "\nWalletB's balance is: " + walletB.getBalance(); Block block2 = new Block(block1.hash); NoobChain.log += "\nWalletA Attempting to send more funds (1000) than it has "; block2.addTransaction(walletA.sendFunds(walletB.publicKey, 1000f)); NoobChain.log += "\nWalletA Attempting to send more funds (10) to WalletB "; block2.addTransaction(walletA.sendFunds(walletB.publicKey, 10f)); addBlock(block2); NoobChain.log += block2.getLog(); NoobChain.log += "\nWalletA's balance is: " + walletA.getBalance(); NoobChain.log += "\nWalletB's balance is: " + walletB.getBalance(); Block block3 = new Block(block2.hash); download by : skknchat@gmail.com 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: Hình 3.6 Kết giao dịch Ví Blockchain download by : skknchat@gmail.com 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ỏ cách tạo Blockchain việc giao dịch Ví Sau thời gian thực hiện, luận văn đạt số kết như:  Tìm hiểu cơng nghệ Blockchain cơng nghệ Ví điện tử Blockchain  Tìm hiểu mơ hình xác thực giao dịch Blockchain  Thực nghiệm mô Blockchain ví cơng nghệ Blockchain Mục tiêu phát triển nghiên cứu cách tạo Blockchain việc giao dịch Ví nào, nhằm giúp người dùng hiểu rỏ công nghệ Blockchain Hướng phát triển tương lai:  Xây dựng API Ví Blockchain tương tác để dễ triển khai rộng rãi  Xây dựng qui chế sử dụng Ví Blockchain hiệu Trong q trình thực hiện, thời gian hạn chế kiến thức, kinh 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ô Tôi xin chân thành cảm ơn! download by : skknchat@gmail.com 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 [4] Sesaria Kikitamara (August 23, 2017): MASTER’S THESIS INFORMATION SCIENCES - Digital Identity Management on Blockchain for Open Model Energy System [5] Mukesh Thakur (September 13, 2017): Master’s Thesis UNIVERSITY OF HELSINKI Department of Computer Science - Authentication, Authorization and Accounting with Ethereum Blockchain - Helsinki [6] Building new state machines with Virtualchain, http://blockstack.ghost.io/virtualchain-research-paper-published-atdccl16 [7] Bitcoin multisig the hard way: Understanding raw P2SH multisig transactions, https://www.soroushjp.com/2014/12/20/bitcoin-multisig- the-hard-way-understanding-raw-multisignature-bitcoin-transactions [8] BlockCypher Python, https://github.com/blockcypher/blockcypher-python [9] Transaction, http://adrenaline2017.hatenablog.com/entry/2017/05/29/120701 [10] Understanding Blockchains (and Bitcoin)– Part 2: Technology, https://luxsci.com/blog/understanding-blockchains-and-bitcointechnology.html download by : skknchat@gmail.com ... Blockchain Ví điện tử? ??, để nghiên cứu hiểu rõ ứng dụng ví điện tử Blockchain, mục tiêu tìm hiểu cơng nghệ Blockchain, cơng nghệ Ví Blockchain Đây công nghệ giúp cho việc giao dịch tiền điện tử bảo mật... lần) Công nghệ Bitcoin trở thành nguồn cảm hứng cho loạt ứng dụng khác download by : skknchat@gmail.com Nhận thấy, quan trọng công nghệ Blockchain nên chọn đề tài ? ?Ứng dụng công nghệ Blockchain Ví. .. nhiều, ví lạnh lựa chọn an toàn miễn chúng sử dụng cách Có hai lựa chọn nói đến ví lạnh ví giấy ví phần cứng  Ví giấy Ví giấy dễ thiết lập an toàn sử dụng cách Khơng giống ví nóng hay ví phần cứng,

Ngày đăng: 03/04/2022, 12:02

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN