Cách tạo ra một đồng tiền ảo Bitcoin của mình bạn nên hiểu
khuongtienao > 03-27-2021, 07:34 AM
Tiền ảo là gì?
[font=arial]Ở hai phần trước ta đã hiểu thế nào là sàn giao dịch bitcoin uy tín Blockchain, và thế nào là đào Hash để ngăn chặn giao dịch ảo. Tuy vậy Blockchain của chúng ta vì quá khó để tạo đàm phán. Nó trở thành hoàn toàn kém hấp dẫn và chả người nào đ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 cho ra cái gì ấy để kích cầu.[/font]
[font=arial]khi này thì định nghĩa 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, để chính xác những giao dịch và thêm thành công các Block vào chuỗi của chúng ta. Đầu tiên, 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á.[/font]
[font=arial]Với nghĩ suy đơn giản tương tự, ta hãy bắt tay vào sửa file html và tạo nên đồng bạc ảo Việc ban đầu của mình.[/font]
[font=arial][/font]
[font=arial]Xem thêm: cách đăng ký trên sàn binance[/font]
Thuật toán để đáp ứng một đồng bạc ảo
[font=arial]để tạo ra một đồng bạc ảo hoàn chỉnh, ta cần cho phép thương lượng bằng đồng tiền ảo đó. Ở tỉ dụ trước ta đã tạo ra một dạng DuLieu có thể chứa thương lượng. Nhưng để chính thức tương trợ thương lượng, ta tạo một class mới dùng để chứa thương lượng như sau:[/font]
[font=courier new]/*=== ĐÂY LÀ CLASS biểu lộ CẤU TRÚC CỦA MỘT đàm phán ===*/[/font]
[font=courier new]class GiaoDich //Các thông báo của một đàm phán vẫn đơn thuần như cũ[/font]
[font=courier new]constructor(DiaChiGui, DiaChiNhan, GiaTri)[/font]
[font=courier new]this.DiaChiGui = DiaChiGui;[/font]
[font=courier new]this.DiaChiNhan = DiaChiNhan;[/font]
[font=courier new]this.GiaTri = GiaTri;[/font]
[font=arial]khi này trong phần định nghĩa của Blockchain, ta cần tạo thêm hai biến mới.[/font]
[font=courier new]/*Phần này mới được thêm vào*/[/font]
[font=courier new]this.GiaoDichTamHoan = []; //Là mảng những thương lượng mới thêm vào mảng Blockchain và chưa được Hash xong.[/font]
[font=courier new]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.[/font]
[font=arial]Thứ nhất là mảng GiaoDichTamHoan. Mảng này sẽ chứa gần như những 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 phổ quát thương lượng được thêm đồng thời vào Blockchain và cùng nằm trên một Block. Người thương lượng và người đào Block cũng độc lập với nhau.[/font]
[font=arial]Thứ hai là biến TienThuong để lưu giá trị mặc định của khoản tiền thưởng cho Người đào coin. Lượng tiền thưởng này như đã đề cập ở phần trước, sẽ bị giới hạn, bởi vì đến một khi nào ấy chẳ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 thi thoảng, y như vàng bạc vậy.[/font]
[font=arial]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ể thuận tiện thêm vào Blockchain được nữa, mà phải có ai đấy đào Hash cho Block ấy để nó đc thêm vào chuỗi.[/font]
[font=arial]định nghĩa hàm đào tiền ảo như sau:[/font]
[font=courier new]DaoTienAo(DiaChiViNhanTienThuong) //Hàm dùng để đào (thêm mới) một Block vào Blockchain.[/font]
[font=courier new]//Lúc này ta sẽ tạo mới một Block, trong Block này sẽ cất đông đảo các đàm phán đã bị tạm thời hoãn trước đấy, do nó chưa được đào và chưa có Hash.[/font]
[font=courier new]let block = new Block(new Date(), this.GiaoDichTamHoan, this.PhanTuCuoiCung().Hash);[/font]
[font=courier new]block.DaoBlock(this.DoKho); //Vẫn phải đào Hash bình thường cho lần này.[/font]
[font=courier new]this.MangBlock.push(block); //Nối phần tử block vào làm phần tử rút cuộc của mảng Blockchain sau lúc đã "đào" được.[/font]
[font=courier new]//Sau lúc đã bỏ công ra đào 1 Hash cho thương lượng hiện tại, ta sẽ có quyền được thưởng một phần tiền thưởng khăng khăng sẵn. GiaoDichTamHoan đã được xử lý xong nên có thể xóa nó đi, sau ấy ta gán một GiaoDichTamHoan mới, trong ấy chuyển lượng tiền ta nhận được vào ví của chính mình.[/font]
[font=courier new]this.GiaoDichTamHoan = [[/font]
[font=courier new]new GiaoDich(null, DiaChiViNhanTienThuong, this.TienThuong)[/font]
[font=courier new]];[/font]
[font=courier new]//Chú ý là chỗ này ta chẳng thể nhận được ngay lượng tiền này trong ví, vì đàm phán 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.[/font]
[font=courier new]//Để nhận được khoản tiền thưởng cho lần đào này. Thì ta phải đợi tới lần đào kế tiếp, đàm phán tạm bợ hoãn này sẽ được khớp lệnh và khi đấy tiền thưởng mới có trong ví.[/font]
[font=arial]Hàm đào tiền ảo như trong code đã comment, sẽ tạo điều kiện cho người đào nhét được các đàm phán đang hoãn vào chuỗi. Và để lần đào Tiếp đến sẽ lấy được trị giá tiền thưởng.[/font]
[font=arial]vì 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 à?[/font]
[font=arial]Xem thêm: phí qua đêm binance[/font]
[font=arial]mục đích của việc này có 2 tác dụng:[/font]
- Để 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.
- đấy là để khuyến khích đào đào và đào. Người mới tham gia đào, sẽ luôn có một đàm phán chờ sẵn để người ấy đào lấy tiền xài.
[font=arial]Trong thực tế thì đối với BitCoin, một đàm phán trong Blockchain chỉ được công nhận trong khi phía sau Block đựng nó đã có thêm 6 Block khác được thêm vào. Khi này thì ví tiền của các bạn mới được cùng hoặc trừ tiền. Và chỉ lúc ấy thì bạn mới tiếp tục thương lượng tiếp được.[/font]
[font=arial]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 kì "tiền bị đóng băng" trong hệ thống. Tuy thế việc này thường chỉ diễn ra trong vài phút.[/font]
[font=arial]6 Block thương lượng xong mới được chứng nhận trong ví có tiền thường được gọi là công thức đồng thuận trong hệ thống. Khi mà có rộng rãi người cùng đào chuỗi Blockchain chứa Block có tiền của các bạn. Họ sẽ gián tiếp xác nhận là đàm phán của bạn đáng tin[/font]
[font=arial]Việc ngăn không cho người đào lấy ngay được tiền thưởng đấy là tùy vào từng đồng coin họ có áp dụng hay không. Đối với BitCoin thìa là có. Ta hoàn toàn có thể tùy biến thuật toán chỗ này để ứng dụng cho đồng MyCoin của ta.[/font]
[font=arial]chú ý nữa ấy là mảng GiaoDichTamHoan sau mỗi một lần đào Hash xong, sẽ nhét đông đảo mảng này vào chung một Block. Tương tự là có thể có Block đựng đến 100 đàm phán. Ở đây hoàn toàn là do code của ta cho phép việc này. Đối với BitCoin hoặc Etherium, họ chỉ cho phép hai thương lượng trong cùng một Block thôi. Cho nên đà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 tiễn thì nó sẽ chọn random 2 GiaoDich bất kỳ (tất nhiên là dành đầu tiên cái thương lượng nhét tiền vào ví của chính mình trong mảng GiaoDichTamHoan rồi).[/font]
[font=arial]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[/font]
[font=courier new]/* - Đây là hàm sẽ tạo ra một giao dịch mới. Đưa thương lượng vào mảng GiaoDichTamHoan. Như vậy là một Block sẽ có thể chứa đa dạng giao dịch mà đang đợi Hash để được công nhận chính thức và thêm được vào Blockchain - */[/font]
[font=courier new]TaoGiaoDich(GiaoDichMoi)[/font]
[font=courier new]this.GiaoDichTamHoan.push(GiaoDichMoi);[/font]
[font=arial]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 lúc đàm đạo tậu bán bằng tiền ảo của chúng ta.[/font]
[font=courier new]//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 đấy.[/font]
[font=courier new]//Mỗi một ví tiền ko phải có một Thống kê tổng tiền được lưu trữ lại. Mà việc tính toán số tiền tài một liên hệ ví trong phần nhiều Blockchain ta phải lần tậu tuần tự hồ hết những 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à chân thực.[/font]
[font=courier new]//Một điều quan yếu là tính sáng tỏ ở đây vì bất kỳ ai khi có địa chỉ ví của bạn cũng sẽ nhận ra hết gần như đàm phán bạn đã từng tiến hành trong hệ thống.[/font]
[font=courier new]KiemTraTienTrongVi(DiaChiVi)[/font]
[font=courier new]let TienTrongVi = 0;[/font]
[font=courier new]for (const block of this.MangBlock) //Đi duyệt y qua tất cả các Block trong Blockchain[/font]
[font=courier new]for (const gd of block.DanhSachGiaoDich) //Đi duyệt y qua gần như các đàm phán trong Block (Vì một Block là 1 mảng những giao dịch)[/font]
[font=courier new]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 đàm phán[/font]
[font=courier new]TienTrongVi -= gd.GiaTri;[/font]
[font=courier new]if (gd.DiaChiNhan === DiaChiVi) //Nếu liên hệ nhận là ví tiền này, thì nghĩa là phải cùng vào Ví số tiền tương ứng trong giao dịch[/font]
[font=courier new]TienTrongVi += gd.GiaTri;[/font]
[font=courier new]return TienTrongVi; //Kiểm đếm xong ta sẽ được Báo cáo tổng.[/font]
[font=arial]Như trong code cũng đã nhắc, mỗi một ví tiền chẳng phải có một Thống kê 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 liên hệ ví trong tất cả Blockchain ta phải lần tậu lần lượt toàn bộ những đàm phán 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à chân thực.[/font]
[font=arial]Điều quan trọng là tính minh bạch ở đây vì bất kỳ người nào lúc có địa chỉ ví của bạn cũng sẽ trông thấy hết tất cả thương lượng bạn đã từng tiến hành trong hệ thống.[/font]
[font=times new roman]Hãy nhớ cập nhật thường xuyên thông báo về những sàn tiền ảo uy tín trên thế giới tại website này của chúng tôi.[/font]