Tin về Blockchain
Tạo Blockchain và BitCoin bằng HTML và Javascript (Phần 3): Tự tạo ra một đồng Bitcoin của mình
Tiền ảo là gì?
Ở 2 phần trước ta đã hiểu thế nào là Blockchain, và thế nào là đào Hash để ngăn chặn giao dịch ảo. Tuy nhiên Blockchain của chúng ta vì quá khó để tạo giao dịch. Nó trở nên hoàn toàn kém hấp dẫn và chả ai đi bỏ thời gian ra đào Hash rồi nhét data vào chuỗi của chúng ta làm gì. Chúng ta cần tạo ra cái gì đó để kích cầu.
Lúc này thì khái niệm TIỀN ẢO
mới ra đời. Tiền ảo là một PHẦN THƯỞNG
dành cho người nào bỏ công sức để đào hash, để xác thực các giao dịch và thêm thành công các Block vào chuỗi của chúng ta. Ban đầu, lượng tiền ảo (hay tiền thưởng) đào được là rất ít, dẫn đến có sự cạnh tranh, sự trao đi đổi lại (trading) lấy tiền thật. Dần dần đồng tiền của ta tạo ra sẽ lên giá.
Với suy nghĩ đơn giản như vậy, ta hãy bắt tay vào sửa file html và tạo nên đồng tiền ảo đầu tiên của mình.
Thuật toán để tạo ra một đồng tiền ảo
Để tạo ra một đồng tiền ảo hoàn chỉnh, ta cần cho phép giao dịch bằng đồng tiền ảo đó. Ở ví dụ trước ta đã tạo ra một dạng DuLieu
có thể chứa giao dịch. Nhưng để chính thức hỗ trợ giao dịch, ta tạo một class mới dùng để chứa giao dịch như sau:
/*=== ĐÂY LÀ CLASS MÔ TẢ CẤU TRÚC CỦA MỘT GIAO DỊCH ===*/
class GiaoDich { //Các thông tin của một giao dịch vẫn cơ bản như cũ
constructor(DiaChiGui, DiaChiNhan, GiaTri) {
this.DiaChiGui = DiaChiGui;
this.DiaChiNhan = DiaChiNhan;
this.GiaTri = GiaTri;
}
}
Lúc này trong phần định nghĩa của Blockchain, ta cần tạo thêm 2 biến mới.
/*Phần này mới được thêm vào*/
this.GiaoDichTamHoan = []; //Là mảng các giao dịch mới thêm vào mảng Blockchain và chưa được Hash xong.
this.TienThuong = 100; //Là phần thưởng dành cho các miner (người đào hash) cho việc thêm mới thành công mảng GiaoDichTamHoan vào Blockchain.
Thứ nhất là mảng
GiaoDichTamHoan
. Mảng này sẽ chứa toàn bộ các giao dịch mà chưa có mã Hash, đang đợi máy đào để được thêm vào Blockchain. Điều này sẽ cho phép nhiều giao dịch được thêm đồng thời vào Blockchain và cùng nằm trên một Block. Người giao dịch và người đào Block cũng độc lập với nhau.
Thứ hai là biến
TienThuong
để lưu giá trị mặc định của khoản tiền thưởng choNgười đào coin
. Lượng tiền thưởng này như đã nói ở phần trước, sẽ bị giới hạn, bởi vì đến một lúc nào đó không thể tạo thêm Hash => không ai có thêm tiền thưởng nữa. Và như vậy nghĩa là đồng MyCoin của chúng ta có tính chất khan hiếm, y như vàng bạc vậy.
Trong số các hàm của Blockchain, ta thay hàm DaoBlock()
bằng hàm DaoTienAo()
. Bởi vì một Block lúc này không thể dễ dàng thêm vào Blockchain được nữa, mà phải có ai đó đào
Hash cho Block đó để nó đc thêm vào chuỗi.
Định nghĩa hàm đào tiền ảo như sau:
DaoTienAo(DiaChiViNhanTienThuong) { //Hàm dùng để đào (thêm mới) một Block vào Blockchain.
//Lúc này ta sẽ tạo mới một Block, trong Block này sẽ chứa toàn bộ các giao dịch đã bị tạm hoãn trước đó, do nó chưa được đào và chưa có Hash.
let block = new Block(new Date(), this.GiaoDichTamHoan, this.PhanTuCuoiCung().Hash);
block.DaoBlock(this.DoKho); //Vẫn phải đào Hash bình thường cho lần này.
this.MangBlock.push(block); //Nối phần tử block vào làm phần tử cuối cùng của mảng Blockchain sau khi đã "đào" được.
//Sau khi đã bỏ công ra đào 1 Hash cho giao dịch hiện tại, ta sẽ có quyền được thưởng một phần tiền thưởng cố định sẵn. GiaoDichTamHoan đã được xử lý xong nên có thể xóa nó đi, sau đó ta gán một GiaoDichTamHoan mới, trong đó chuyển lượng tiền ta nhận được vào ví của chính mình.
this.GiaoDichTamHoan = [
new GiaoDich(null, DiaChiViNhanTienThuong, this.TienThuong)
];
//Chú ý là chỗ này ta không thể nhận được ngay lượng tiền này trong ví, vì giao dịch chưa được tạo và chưa có Hash. Nên trong Blockchain chưa có bản ghi mới ghi nhận số tiền đã chuyển vào ví nhận tiền thưởng.
//Để nhận được khoản tiền thưởng cho lần đào này. Thì ta phải đợi đến lần đào kế tiếp, giao dịch tạm hoãn này sẽ được khớp lệnh và lúc đó tiền thưởng mới có trong ví.
}
Hàm đào tiền ảo như trong code đã comment, sẽ giúp cho người đào nhét được các giao dịch đang hoãn vào chuỗi. và để lần đào tiếp theo sẽ lấy được giá trị tiền thưởng.
Tại sao lại cần phải lần đào thứ 2 mới lấy được tiền thưởng của lần đào thứ 1. Như thế này thì ăn chặn của người ta à?
Mục đích của việc này có 2 tác dụng:
- Để tránh việc người đào “ăn non”. Lấy tiền thưởng của Block này đập vào Block kia.
- Đó là để khuyến khích đào đào và đào. Người mới tham gia đào, sẽ luôn có một giao dịch chờ sẵn để người đó đào lấy tiền xài.
Trong thực tế thì đối với BitCoin, một giao dịch trong Blockchain chỉ được xác nhận khi mà phía sau Block chứa nó đã có thêm 6 Block khác được thêm vào. Lúc này thì ví tiền của bạn mới được cộng hoặc trừ tiền. Và chỉ khi đó thì bạn mới tiếp tục giao dịch tiếp được.
Khoảng thời gian bạn chờ cho có thêm 6 Block khác được insert vào thường được gọi là thời gian “tiền bị đóng băng” trong hệ thống. Tuy nhiên việc này thường chỉ diễn ra trong vài phút.
6 Block giao dịch xong mới được chứng nhận trong ví có tiền thường được gọi là
cơ chế đồng thuận
trong hệ thống. Khi mà có nhiều người cùng đào chuỗi Blockchain chứa Block có tiền của bạn. Họ sẽ gián tiếp xác nhận là giao dịch của bạn đáng tin
Việc ngăn không cho người đào lấy ngay được tiền thưởng đó là tùy vào từng đồng coin họ có áp dụng hay không. Đối với BitCoin thì là có. Ta hoàn toàn có thể tùy biến thuật toán chỗ này để áp dụng cho đồng MyCoin của ta.
Chú ý nữa đó là mảng GiaoDichTamHoan
sau mỗi một lần đào Hash xong, sẽ nhét toàn bộ mảng này vào chung một Block. Như vậy là có thể có Block chứa tới 100 giao dịch. Ở đây hoàn toàn là do code của ta cho phép việc này. Đối với BitCoin hoặc Ethereum, họ chỉ cho phép 2 giao dịch trong cùng một Block thôi.
Do đó đào xong Hash, ta phải nhặt 2 GiaoDich
trong mảng GiaoDichTamHoan
để đưa vào Block mới tạo. Máy đào tiền ảo thực tế thì nó sẽ chọn random 2 GiaoDich bất kỳ (tất nhiên là ưu tiên cái giao dịch nhét tiền vào ví của chính mình trong mảng GiaoDichTamHoan
rồi).
Rồi sau khi có thuật toán DaoTienAo
. Ta cần một hàm nữa là hàm khởi tạo GiaoDich và nhét vào GiaoDichTamHoan
/* - Đây là hàm sẽ tạo ra một giao dịch mới. Đưa giao dịch vào mảng GiaoDichTamHoan. Như vậy là một Block sẽ có thể chứa nhiều giao dịch mà đang đợi Hash để được công nhận chính thức và thêm được vào Blockchain - */
TaoGiaoDich(GiaoDichMoi) {
this.GiaoDichTamHoan.push(GiaoDichMoi);
}
Chúng ta cần một hàm nữa đó là hàm tính toán ra số tiền trong ví của mỗi người sau khi trao đổi mua bán bằng tiền ảo của chúng ta.
//Chúng ta cũng cần một hàm để kiểm tra được lượng tiền đang có trong một địa chỉ ví nào đó.
//Mỗi một ví tiền không hề có một con số tổng tiền được lưu trữ lại. Mà việc tính toán số tiền của một địa chỉ ví trong toàn bộ Blockchain ta phải lần tìm lần lượt toàn bộ các giao dịch bên trong Blockchain để kiểm đếm số tiền của một ví. Điều này sẽ rất an toàn và trung thực.
//Một điều quan trọng là tính minh bạch ở đây vì bất kỳ ai khi có địa chỉ ví của bạn cũng sẽ nhìn thấy hết toàn bộ giao dịch bạn đã từng thực hiện trong hệ thống.
KiemTraTienTrongVi(DiaChiVi) {
let TienTrongVi = 0;
for (const block of this.MangBlock) { //Đi duyệt qua toàn bộ các Block trong Blockchain
for (const gd of block.DanhSachGiaoDich) { //Đi duyệt qua toàn bộ các giao dịch trong Block (Vì một Block là 1 mảng các giao dịch)
if (gd.DiaChiGui === DiaChiVi) { //Nếu địa chỉ gửi là ví tiền này, thì tức là phải trừ ở Ví đi số tiền tương ứng trong giao dịch
TienTrongVi -= gd.GiaTri;
}
if (gd.DiaChiNhan === DiaChiVi) { //Nếu địa chỉ nhận là ví tiền này, thì tức là phải cộng vào Ví số tiền tương ứng trong giao dịch
TienTrongVi += gd.GiaTri;
}
}
}
return TienTrongVi; //Kiểm đếm xong ta sẽ được con số tổng.
}
Như trong code cũng đã nói, mỗi một ví tiền không hề có một con số tổng tiền được lưu trữ lại ở đâu cả. Mà việc tính toán số tiền của một địa chỉ ví trong toàn bộ Blockchain ta phải lần tìm lần lượt toàn bộ các giao dịch bên trong Blockchain để kiểm đếm số tiền của một ví. Điều này sẽ rất an toàn và trung thực.
Điều quan trọng là tính minh bạch ở đây vì bất kỳ ai khi có địa chỉ ví của bạn cũng sẽ nhìn thấy hết toàn bộ giao dịch bạn đã từng thực hiện trong hệ thống.
Bây giờ thì đã có thể chạy thử rồi.Các bạn có thể xem DEMO tại link này: LINK_DEMO
Download file example3.html tại đây: LINK_DOWNLOAD
Thực tế có như DEMO?
Chúng ta hãy đi xem một trang web thực tế, nơi mà họ thực sự tạo ra một đồng tiền ảo có thể đào được ngay bằng trình duyệt. Bạn có thể đào tiền ảo, trao đổi và giao dịch với mọi người trong mạng trên toàn thế giới. Đồng tiền mà tôi đang nói tới, đó chính là NIMIQ.
Hãy vào thử trang web này: https://nimiq.com/miner/ Kích vào Connect to Network
. Ta sẽ thấy như sau:
Hãy xem kỹ hơn các thông tin mà máy bạn đang đào.
Chúng ta thấy là quá trình đào được diễn ra một cách tự động, vậy là bạn đã biến laptop của mình thành một con Trâu cày
tiền ảo rồi đấy.
Xem lại lịch sử một chút:
- Vào năm 2009 BitCoin ra đời. Số tiền thưởng của đồng tiền ảo BitCoin là 50 BTC nếu Hash được 1 Block. Đến năm 2012 thì bị giảm 1 nửa còn 25 BTC nếu Hash thành công 1 Block. Và đến năm 2017 thì bị giảm tiếp 1 nửa còn 12.5 BTC/Block. Người ta tính ra là cứ 210.000 Block đào được thì tiền thưởng bị giảm một nửa. Giảm 64 lần là số tiền thưởng sẽ về 0. Và với tốc độ tính toán hiện tại thì khoảng năm 2140 là không còn tiền thưởng để đào nữa. Và hiện nay cả thế giới đang hóng một sự kiện, đó là ngày 31 tháng 5 năm 2020 thì tiền thưởng sẽ bị giảm tiếp một nửa chỉ còn 6.5 BTC/Block mà thôi. Chúng ta có thể xem đếm ngược ở đây cho vui: http://www.bitcoinblockhalf.com. Để xem tỉ giá đào BTC hãy vào đây: https://bitinfocharts.com/bitcoin/
- Đồng tiền Ethereum thì không có cơ chế thưởng tiền sau khi đào xong 1 Block. Thay vào đó, mỗi một giao dịch sẽ có một khoản phí nhất định. Và tiền phí này được trả cho máy đào. Hiện tại tính ra thì 1 Block đào được sẽ có giá 3 ETH. Trung bình thì cứ 14.6 giây là đào được 1 Block ETH. Xem thêm tại https://bitinfocharts.com/ethereum/
Kết luận
Như vậy là kết thúc bài 3 trong loạt bài về Blockchain và Tiền ảo. Tôi đã lấy ra các thuật toán “đơn giản” nhất để minh họa và giúp bạn dễ hiểu hơn về cách hoạt động của 2 công nghệ đang làm mưa làm gió.
Đây chỉ là những gì sơ khai nhất về ứng dụng Blockchain vào xây dựng thử một loại Tiền ảo. Để có thể hình thành nên cả một đế chế tiền ảo riêng, có những đặc tính riêng biệt nhau. Thì rõ ràng thuật toán của họ phải rất kinh khủng
Vì Blockchain và Tiền ảo có rất nhiều cái hay, cách thực hiện nó cũng dễ. Nên hiện nay có thể thấy các đồng Coin mới ra đời cứ như mưa. Mỗi quốc gia hoàn toàn có thể tự tạo đồng Coin cho riêng mình.
Hạn chế trước mắt của Blockchain và tiền ảo là gì? Đó là mỗi Blockchain và mỗi đồng tiền ảo với thuật toán khác nhau thì hoàn toàn khác nhau và không thể trao đổi tay đôi được. Bạn không thể nào đặt lệnh giao dịch địa chỉ ví chứa BitCoin và lấy đồng Etherium nhét vào được.
Vì đơn giản là 2 Blockchain này là hai array chứa thông tin khác hẳn nhau. Bạn bỏ tiền ra mua BitCoin thì không thể trao đổi ngang hàng với Etherium được mà phải dùng trung gian là đổi BTC ra tiền USD chẳng hạn, rồi dùng tiền đó đi mua ETH.
Nhiều dân Trader (người mua đi bán lại) các đồng tiền ảo cũng thấy rằng, họ giao dịch giữa người A với người B nhưng vẫn bị mất một phần nhỏ chi phí giao dịch bị ghi là chi phí dành cho máy đào
. Giờ thì bạn đã biết là tại sao rồi chứ nhỉ?
Blockchain và tiền ảo mới đang ở thủa sơ khai của nó. Còn rất nhiều thứ cần được nâng cấp và thuật toán cần được mở rộng. Do đó hãy cùng chờ đợi sự bùng nổ của 2 công nghệ này trong năm 2018 nhé bạn.
Bài này hi vọng nó đã giúp cho bạn có một cái nhìn tổng quan và hiểu biết nhất định để đọc các bài viết khác về Blockchain không bị bỡ ngỡ.
Các bạn hãy comment và share các link tham khảo mà bạn đang đọc về Blockchain và Bitcoin để cùng trao đổi nhé.
Nguồn Viblo.asia
Có thể bạn chưa biết:
- Tổng hợp phần mềm bán hàng, quản lý bán hàng bằng Excel miễn phí
- Giáo trình nghiệp vụ kế toán - chương 4 Phương Pháp Tính Giá
- Cách quản lý bán hàng bằng excel đơn giản và hiệu quả
- Giáo trình nghiệp vụ kế toán - chương 5 Phương Pháp Tổng Hợp - Báo Cáo Tài Chính
- Giáo trình nghiệp vụ kế toán - chương 8 Kế toán nghiệp vụ nhập khẩu hàng hoá, Kế toán doanh nghiệp
- Hướng dẫn tải miễn phí bản chính thức Windows 7, Windows 8.1, Windows 10, ... trực tiếp từ Microsoft
- Bài giảng Quản trị nhân lực, quản trị nhân sự - Bài 3 Chiến Lược Và Hoạch Định Nguồn Nhân Lực
- Mẫu file quản lý đơn hàng bằng excel
- Bài giảng Quản trị nhân lực, quản trị nhân sự - Bài 9 Hệ thống tiền lương
- Giáo trình nghiệp vụ kế toán - chương 6 Kế toán Tài sản cố định, Kế toán doanh nghiệp
- Bài giảng Quản trị nhân lực, quản trị nhân sự - Bài 5 Tuyển Mộ Nhân Sự
- Giáo trình nghiệp vụ kế toán - chương 1 Bản chất và đối tượng của kế toán
DVMS chuyên:
- Tư vấn, xây dựng, chuyển giao công nghệ Blockchain, mạng xã hội,...
- Tư vấn ứng dụng cho smartphone và máy tính bảng, tư vấn ứng dụng vận tải thông minh, thực tế ảo, game mobile,...
- Tư vấn các hệ thống theo mô hình kinh tế chia sẻ như Uber, Grab, ứng dụng giúp việc,...
- Xây dựng các giải pháp quản lý vận tải, quản lý xe công vụ, quản lý xe doanh nghiệp, phần mềm và ứng dụng logistics, kho vận, vé xe điện tử,...
- Tư vấn và xây dựng mạng xã hội, tư vấn giải pháp CNTT cho doanh nghiệp, startup,...
Vì sao chọn DVMS?
- DVMS nắm vững nhiều công nghệ phần mềm, mạng và viễn thông. Như Payment gateway, SMS gateway, GIS, VOIP, iOS, Android, Blackberry, Windows Phone, cloud computing,…
- DVMS có kinh nghiệm triển khai các hệ thống trên các nền tảng điện toán đám mây nổi tiếng như Google, Amazon, Microsoft,…
- DVMS có kinh nghiệm thực tế tư vấn, xây dựng, triển khai, chuyển giao, gia công các giải pháp phần mềm cho khách hàng Việt Nam, USA, Singapore, Germany, France, các tập đoàn của nước ngoài tại Việt Nam,…
Quý khách xem Hồ sơ năng lực của DVMS tại đây >>
Quý khách gửi yêu cầu tư vấn và báo giá tại đây >>
Có thể bạn quan tâm:
Quản lý thu chi kinh doanh, tài chính cá nhân,... trên điện thoại và máy tính bảng.
Đầy đủ tính năng cần thiết và dễ dàng sử dụng. Dùng miễn phí nhưng an toàn tuyệt đối!
Quản lý thu chi kinh doanh.
Quản lý thu chi bán hàng online.
Quản lý thu chi cửa hàng.
Quản lý vay nợ, trả nợ.
Quản lý thanh khoản hợp đồng.
Quản lý tài chính cá nhân.
Quản lý tài chính hộ gia đình.
Quản lý tài khoản tiền mặt, tài khoản ngân hàng.
An toàn, không sợ bị lộ dữ liệu tài chính.
Dễ dàng thao tác mọi lúc mọi nơi.
* Ứng dụng của chúng tôi hoàn toàn miễn phí, chạy offline, trên ứng dụng chỉ có banner quảng cáo nhỏ của Google. Chúng tôi không thu thập dữ liệu người dùng, không cài cắm các phần mềm độc hại, không gây tốn pin,...
Cài đặt và sử dụng hoàn toàn miễn phí và an toàn khi sử dụng cho điện thoại và máy tính bảng Android TẠI ĐÂY >>
hoặc qua QRCODE sau:
Cài đặt và sử dụng hoàn toàn miễn phí và an toàn khi sử dụng qua file APK, tải file tại đây >>
Cài đặt và sử dụng hoàn toàn miễn phí và an toàn khi sử dụng cho iOS (iPhone và iPad) TẠI ĐẬY >>
Xem hướng dẫn chi tiết từng tính năng tại phần Hướng dẫn >>
- Các nền tảng công nghệ hỗ trợ cho KHỞI NGHIỆP và CHUYỂN ĐỔI SỐ tiết kiệm, hiệu quả,...
- 5 lý do sở hữu một ứng dụng di động là cần thiết đối với doanh nghiệp vừa và nhỏ
- Hệ thống điều hành, tìm gọi và quản lý xe sử dụng công nghệ mới
- Khắc phục lỗi đăng nhập Windows 10, không thể login vào Windows 10
- Mạng xã hội là gì? Hiểu đầy đủ nhất về mạng xã hội
- IoT là gì? ứng dụng của IoT trong cuộc sống hiện đại
- Hướng dẫn cài ứng dụng, phần mềm cho Android trực tiếp bằng tập tin APK
- Ứng dụng bán hàng trên smartphone, smart TV, mạng xã hội...
- 100 Website đặt backlink miễn phí chất lượng
- Platform là gì?
- Cách đổi tên thiết bị Android
- Hệ thống order chuyên nghiệp cho quán ăn, cafe, nhà hàn
- Thông tin Du Lịch có ngay trong túi mọi người
- Phân hệ Quản lý Đội xe (Fleet Management) trong một hệ thống ERP thường có gì?
- Giải pháp cho dịch vụ bác sĩ gia đình
- Hệ thống chấm công từ xa thông minh SAttendance và hệ thống định vị STracking
- Phòng khám, bệnh viện thông minh
- Bác sĩ gia đình, chăm sóc sức khỏe tại nhà
- Kinh doanh vé xe, đặt vé xe, vé máy bay trên smartphone, Smart TV, Mạng xã hội
- Tìm bất động sản, tìm nhà đất, tìm phòng theo mô hình uber trên smartphone
- App hẹn lịch chăm sóc sắc đẹp, book vé spa, massage
- STracking ứng dụng chấm công nhân viên làm các công việc ngoài văn phòng công ty
- Nhà thuốc, dược trên smartphone và tablet
- VIP Finance Hệ Sinh Thái phân tích đánh giá cổ phiếu, trái phiếu, thị trường vàng, thị trường forex
Bằng cách đăng ký kênh và chia sẻ bài, bạn đã cùng DVMS chia sẻ những điều hữu ích