Blockchain mở ra kháiniệm web 3.0 là nền tảng của những công nghệ tương lai, mọi thông tin đều trở nêncông khai và hoàn toàn minh bạc.Nhu cầu về tích luỹ các dạng tài sản vẫn luôn tồn tạ
Cơ sở thực tập
Giới thiệu cơ sở thực tập
Công ty cổ phần công nghệ Ekoios Việt Nam. Địa chỉ: Tầng 4, tòa nhà CIC, số 2 Trung Kính, Cầu Giấy, Hà Nội. Điện thoại: 024 6658 3530.
Ekoios là công ty chuyên nghiệp trong sản xuất và kinh doanh phần mềm, thực hiện các dự án CNTT phục vụ trực tiếp khách hàng với trụ sở chính tại
Hà Nội Khách hàng của chúng tôi là các công ty phần mềm ở châu Âu, châu Á, Bắc Mỹ và Nam Mỹ (https://ekoios.vn/)
Ekoios một công ty quốc tế tập trung vào các dịch vụ outsourcing,production cho các công ty phần mềm về các lĩnh vực liên quan tới công nghệ blockchain Các nhóm của chúng tôi làm việc trực tiếp với khách hàng và phát triển phần mềm cùng họ và cho họ Khách hàng đa dạng tạo nên một môi trường thú vị cho các công nghệ khác nhau Khả năng làm việc trực tiếp với khách hàng nước ngoài sẽ làm phong phú cho công việc hàng ngày của bạn.Chúng tôi dành cho bạn một môi trường làm việc lành mạnh và phong phú cũng như cho bạn cả cơ hội thách thức và thú vị để bạn phát triển kỹ năng chuyên môn và bản thân Chúng tôi hỗ trợ bạn tiếp tục học hỏi và đào tạo cũng như trả cho các bạn một mức lương cạnh tranh.
Ngay từ khi thành lập Ekoios đã hướng tới sự chuyên nghiệp bằng cách ứng dụng các công nghệ mới nhất trong các dự án của mình Hơn 3 năm qua, Ekoios đã dành được sự tin tưởng, hài lòng của rất nhiều công ty phần mềm ở Châu Âu
Từ năm 2020, Ekoios mở rộng thị trường của mình ở châu Âu và Bắc Mỹ.
Là một trong những công ty đầu tiên trong mảng blockchain tại Việt Nam,Ekoios luôn muốn mang đến cho khách hàng những trải nghiệm và sản phẩm tốt nhất.
Tính ứng dụng của Blockchain
Trong những năm gần đây công nghệ blockchain đang trở thành một xu hướng hot trên thị trường toàn cầu và tại việt nam, việc ứng dụng công nghệ blockchain vào đời sống ngày càng trở nên thiết thực, blockchain có thể giúp cuộc sống trở nên công bằng, văn minh, là động lực giúp nền kinh tế phát triển.
Công nghệ này có tiềm năng ứng dụng to lớn trong các ngành từ dịch vụ tài chính, sản xuất và khu vực công cho đến chuỗi cung ứng, giáo dục và năng lượng Theo các nhà nghiên cứu, doanh thu của các công ty tại các thị trường mới nổi như Việt Nam dự kiến đạt 1 nghìn tỷ đô la Mỹ.
Giới thiệu về Blockchain
Công nghệ Blockchain là gì
Blockchain(chuỗi khối) – là một cuốn sổ cái ghi lại thông tin số dư và lịch sử của tất cả tài khoản tham gia vào chuỗi giao dịch của mình Mỗi khối chứa thông tin trong hệ thống blockchain thường được gọi là "block" Các block đều chứa các dữ liệu giao dịch và được liên kết với nhau nhờ mã hoá. Các thông tin này là độc lập và mở rộng qua thời gian, chúng được quản lý phân tán bởi những node trong hệ thống chứ không thông qua trung gian do đó thông tin trên hệ thống blockchain hoàn toàn minh bạch và không thể thay đổi được.
Lịch sử Blockchain
Vào cuối năm 2008, cuốn sách trắng giới thiệu về hệ thống tiền mặt điện tử mạng ngang hàng, phi tập trung – tên là Bitcoin – đã được đăng trên danh sách nhận thư về mật mã học bởi một người hoặc tổ chức lấy biệt danh là Satoshi Nakamoto Dựa trên thuật toán proof of work Nói ngắn gọn, các thợ đào “đào” Bitcoin để nhận phần thưởng bằng cách sử dụng cơ chế proof- of-work và sau đó xác minh bằng các node phi tập trung trong mạng Vào ngày 3 tháng 1 năm 2009, Bitcoin ra đời khi Satoshi Nakamoto đào được khối bitcoin đầu tiên, đem lại phần thưởng 50 bitcoin Người nhận Bitcoin đầu tiên là Hal Finney, ông ta nhận được 10 bitcoin từ Satoshi Nakamoto trong giao dịch bitcoin đầu tiên của thế giới vào ngày 12 tháng 1 năm 2009.
Nguyên lý hoạt động Blockchain
Khi một transaction được yêu cầu thực hiện nó sẽ được đóng gói vào trong một block, trong block sẽ có nhiều transaction, những transaction này được yêu cầu từ nhiều nguồn khác nhau, sau khi một block được tạo ra nó sẽ được gửi vào mạng lưới blockchain, mạng lưới này bao gồm các node là các máy tính trong hệ thống blockchain, mỗi node hay mỗi máy tính này đều có bản ghi dữ liệu của blockchain và dữ liệu blockchain trên toàn bộ các node là đồng nhất hay nói cách khác dữ liệu blockchain được lưu phân tán trong toàn bộ hệ thống Tại đây các node sẽ trải qua quá trình xác minh các transaction xem có hợp lệ hay không vì tại mỗi node đều tồn tại bản sao chép dữ liệu blockchain nên việc xác minh này được thực hiện tương đối dễ dàng Sau quá trình xác minh của các node thì block đó được coi là hợp lệ, các thợ đào hay máy đào sẽ thực hiện quá trình đào để thêm block đó vào blockchain, quá trình đào này có độ khó tuỳ thuộc vào công nghệ blockchain đó như Bitcoin hiện tại là 10 phút, Ethereum hiện tại là 13 - 15 giây, hiểu đơn giản thì đào là một quá trình các máy tính thi nhau giải một bài toán để tìm ra một mã hash phù hợp, máy tính nào tìm được mã hash phù hợp đầu tiên sẽ được thưởng một phần thưởng tương đương với loại tiền ảo đại diện cho blockchain đó.
Đặc điểm chính trong công nghệ blockchain
Blockchain xuất hiện như là một công nghệ ưu việt khắc phục các hạn chế của công nghệ cũ, nó mang những đặc điểm nổi bật có thể kể đến sau đây:
Không thể làm giả, phá huỷ dữ liệu chuỗi: Dữ liệu của blockchain được lưu trên toàn bộ các node trong hệ thống, muốn làm giả nó thì phải thay đổi dữ liệu của 51% tổng số node trong hệ thống và điều này thì gần như không thể với hệ thống blockchain toàn cầu, việc thay đổi dữ liệu của một block đồng nghĩa với việc phải thay đổi tất cả các block còn lại, điều này với máy tính hiện đại thời nay thì gần như là không thể.
Bất biến: Dữ liệu trên blockchain không thể sửa đổi được, nếu muốn sửa đổi thì phải có sự đồng thuận của cả hệ thống.
Minh Bạch: Ai cũng có thể xem các giao dịch trên hệ thống blockchain, vì dữ liệu không thể làm giả nên dữ liệu giao dịch hoàn toàn minh bạch.
Bảo mật dữ liệu: Các dữ liệu thông tin trong hệ thống blockchain được lưu trữ phân tán, muốn truy cập phải sử dụng đến private key của cá nhân.
Các phiên bản blockchain
Hiện tại thì công nghệ blockchain có 3 phiên bản chính gồm:
Blockchain 1.0 – Tiền tệ và Thanh toán: Là phiên bản sơ khai và đầu tiên của blockchain, ứng dụng chính của phiên bản này là các công việc liên quan đến tiền mã hoá: bao gồm việc chuyển đổi tiền tệ, kiều hối và tạo lập hệ thống thanh toán kỹ thuật số Đây cũng là lĩnh vực quen thuộc với rất nhiều người nhất, đôi khi khá nhiều người lầm tưởng Bitcoin và Blockchain là một.
Blockchain 2.0 – Tài chính và Thị trường: Đây là phiên bản thứ 2 của blockchain, ứng dụng của nó là xử lý tài chính và ngân hàng: mở rộng quy mô của Blockchain, đưa blockchain tích hợp vào các ứng dụng tài chính và thị trường Các tài sản bao gồm cổ phiếu, chi phiếu, nợ, quyền sở hữu và bất kỳ điều gì có liên quan đến thỏa thuận hay hợp đồng.
Blockchain 3.0 – Thiết kế và Giám sát hoạt động: Hiện tại đây đang là phiên bản cao nhất của blockchain, với phiên bản này, công nghệBlockchain sẽ vượt khỏi biên giới chỉ phục vụ cho lĩnh vực tài chính, và đi vào các lĩnh vực khác như giáo dục, chính phủ, y tế và nghệ thuật…
Các cơ chế đồng thuận phân tán
Cơ chế đồng thuận trong Blockchain có thể hiểu như cách thức mà mọi người quản lý trong hệ thống blockchain có thể đồng ý cho một giao dịch xảy ra trong hệ thống Dưới đây là hai loại cơ chế đồng thuận phổ biến trong blockchain:
Proof of work(bằng chứng công việc): đây là cơ chế khiến cho các máy đào phải tham gia xác minh block bằng việc giải các bài toán tìm kiếm mã hash phù hợp, cơ chế này tiêu tốn rất nhiều điện năng
Proof of stake (bằng chứng cổ phần): đây là cơ chế phân cấp dựa trên cổ phần, cơ chế này tốn ít điện năng hơn và đang là xu thế blockchain để thay thế cho Proof of work.
Ứng dụng
Một số ngành công nghiệp mà công nghệ blockchain có thể tác động đến như:
Truyền thông và viễn thông: Triển khai các giải pháp blockchain cùng với các nền tảng điện toán đám mây sẽ giúp phân tán dữ liệu, giúp các nhà cung cấp dịch vụ truyền thông tối ưu hóa các quy trình, tăng cường bảo mật mạng, giải quyết bài toán quản lý danh tính trong mô hình kinh doanh của mình, từ đó cải thiện chất lượng dịch vụ Một vài ứng dụng có thể kể đến như:
➔ Phòng chống gian lận trong các dịch vụ kinh tế trên internet, tại đây các giao dịch đều minh bạch và có thể truy vết được.
➔ Quá trình chuyển đổi 5G: Các quy tắc và chuyển đổi giữa các mạng khác nhau có thể áp dụng hợp đồng thông minh, có thể tự kết nối các thiết bị với nhà cung cấp dịch vụ, đồng thời đánh giá sự liên tục và kết nối và giá cả của dịch vụ.
➔ Internet of things: Tạo ra sự an toàn của dữ liệu, cũng như tối ưu việc truyền dữ liệu thông qua dữ liệu của các mạng ngang hàng, ứng dụng mạng ngang hàng có thể chống lại các cuộc tấn công nhằm đánh cắp dữ liệu.
Sản xuất: Trong hoạt động sản xuất, chúng ta cần một số thiết bị, công cụ để quản lý quá trình sản xuất, tồn kho, phân phối, thông tin giao dịch… blockchain sẽ giúp các thiết bị thông minh thực hiện những công việc đó, đồng thời giám sát các hoạt động và tăng đáng kể năng suất quản lý.
Về phía người tiêu dùng, việc xác định được thông tin của sản phẩm có thể ngăn chặn được hàng giả, hàng nhái và các sản phẩm kém chất lượng trên thị trường Một vài ứng dụng có thể kể đến như:
➔ Theo dõi lịch trình sản xuất, số lượng hàng mua vào và bán ra.
➔ Quản lý hàng tồn kho, kho bãi sản xuất.
➔ Truy xuất nguồn gốc sản phẩm được sản xuất qua các khâu.
➔ Theo dõi nguồn cung cấp nguyên liệu sản xuất trong công nghiệp.
Y tế: Trong thời đại công nghệ 4.0 thì việc triển khai các quy trình số khóa thông tin trong quy trình quản lý dữ liệu là cực kỳ quan trọng, nổi bật trong đó là việc số hóa các thông tin liên quan đến lĩnh vực y tế và chăm sóc sức khỏe
Blockchain được sử dụng để quản lý các thông tin của người bệnh,ngoài ra còn có thể kiểm soát các giao dịch liên quan đến y tế của các tập đoàn với các lùm xùm bê bối liên quan đến đội giá các sản phẩm y tế gần đây thì ứng dụng blockchain là một việc rất cần thiết Một vài ứng dụng có thể kể đến như:
➔ Ứng dụng vào việc quản lý các thông số sức khỏe của bệnh nhân.
➔ Quản lý lịch trình di chuyển của các bệnh nhân mang bệnh truyền nhiễm từ đó có thể rà soát một cách dễ dàng.
➔ Quản lý chuỗi cung ứng thuốc, kiểm soát đầu ra, đầu vào, hạn sử dụng thuốc, chống các sản phẩm thuốc giả, kém chất lượng.
➔ Làm mình bạch các vấn đề liên quan đến xuất nhập các vật tư y tế, quản lý chặt chẽ thông tin các đơn hàng, các giao dịch được công khai và hoàn toàn minh bạch
Giáo dục: Khi blockchain được ứng dụng vào giáo dục, các thông tin như bảng điểm, quá trình đào tạo, kinh nghiệm thực tế và kinh nghiệm tuyển dụng đều được quản lý chặt chẽ, ngăn chặn được thực trạng ứng viên gian lận trong quá trình học tập thăng tiến, mua điểm, mua bằng nhằm đáp ứng những nhu cầu sai trái của bản thân Không chỉ vậy, thông qua các hợp đồng thông minh, blockchain có thể tự động thực hiện các điều khoản đào tạo, xử lý các trường hợp vi phạm nội quy, cải thiện chất lượng đào tạo Một vài ứng dụng có thể kể đến như:
➔ Hệ thống quản lý mức độ đánh giá sự uy tín trong nghiên cứu khoa học.
➔ Ghi lại cơ sở dữ liệu bảo mật về dữ liệu học tập và điểm số cho các hệ thống học trực tuyến, đánh giá năng lực của một cá nhân dựa trên các yêu cầu tuyển sinh đầu vào.
➔ Theo dõi và lưu trữ bảng điểm và bằng cấp của sinh viên và thông tin của các đơn vị đào tạo.
➔ Xem xét cá nhân/ứng viên có phù hợp với công việc giảng dạy hay không, từ đó đưa ra quyết định mời cá nhân đó làm việc.
Ngoài các lĩnh vực được đề cập ở trên thì blockchain còn có thể ứng dụng trong nhiều lĩnh vực thiết yếu khác nữa, góp phần giúp cuộc sống ngày càng trở nên tiện nghi hơn.
Giới thiệu về đề tài
Mục tiêu của đề tài
Ngày nay với sự bùng nổ của Internet và công nghệ blockchain đã mở ra những cánh cửa đến với tương lai, công nghệ gần như đang thống trị tất cả các lĩnh vực trong đời sống đặc biệt là kinh tế, nếu biết tận dụng công nghệ và kinh tế thì chúng ta có thể đạt được những thành tựu về mặt cá nhân như tự do tài chính khi còn ở độ tuổi khá trẻ.
Sau khi tìm hiểu và nghiên cứu có chọn lựa, em quyết định làm về đề tài tài sản số để kết hợp kinh tế vào công nghệ và còn gì hoàn hảo hơn khi blockchain có thể giải quyết tốt bài toán đó Đề tài em chọn đó là “Phát triển hệ thống giao dịch NFT” kèm với đó là phát triển một đồng token để giao dịch các NFT Một trong những ứng dụng NFT nổi bật gần đây là game play to earn Axie Infinity:
Đối tượng
Hệ thống được xây dựng nhằm hướng tới hai đối tượng chính sau: Khách hàng có độ tuổi khoảng từ 18 – 40 tuổi, có sử dụng Internet, có sự quan tâm tới những công nghệ blockchain và có xu hướng đầu tư, tích lũy tài sản.
Admin quản trị hệ thống, tạo ra các tài sản số NFT, tiếp nhận yêu cầu từ khách hàng, cập nhật thường xuyên các sản phẩm, phản hồi các bình luận,
Artist những nghệ sĩ có những tác phẩm để số hoá.
Phạm vi
Bài toán “Phát triển hệ thống giao dịch NFT” sẽ tiến hành việc phát triển một đồng token của chính mình và dùng chính đồng token đó để giao dịch các tài sản số là các NFT từ đó có thể gia tăng giá trị cho đồng token.
Hệ thống xây dựng được chức năng mua bán tích trữ tài sản số thông qua blockchain Ethereum và sử dụng đơn vị tiền tệ do chính hệ thống lưu hành.
Hệ thống vẫn chưa liên kết được với nhiều Artist để có thể tung ra những bộ sưu tập NFT chất lượng.
Thông tin của khách hàng vẫn còn ít, khách hàng chưa tự chỉnh sửa thông tin của mình được mà phải cần sự can thiệp của admin.
Quy trình nghiệp vụ
Admin sẽ liên kết ví blockchain ethereum của mình vào hệ thống Tại đây Admin có thể tự tạo một bố sưu tập NFT của bản thân hoặc có thể nhận những tác phẩm của những Artist ngoài hệ thống và đăng bán trên sàn giao dịch NFT của hệ thống.
Khách hàng khi muốn mua hoặc bán những tài sản NFT của mình trên hệ thống sẽ phải kết nối ví ethereum của mình vào hệ thống và phải quy đổi thông qua các phương pháp trade tại các sàn giao dịch phi tập trung khác để đổi lấy đồng token và hệ thống cho phép, vì sàn giao dịch NFT chỉ chấp nhận thanh toán bằng đồng token của chính sàn.
Khách hàng đăng bán NFT sẽ phải ký giao dịch đăng bán, sau đó hệ thống sẽ gửi giao dịch trên lên hệ thống blockchain, khách hàng sẽ phải trả một khoản phí khi đăng bán gọi là gas fee, sau đó NFT sẽ được đăng bán trên blockchain và khách hàng có thể lên các trang như etherscan để xem các giao dịch của mình đã tồn tại trên blockchain hay chưa.
Khách hàng mua NFT cũng sẽ phải ký giao dịch và chịu gas fee, sau đó hệ thống sẽ gửi giao dịch mua NFT lên hệ thống blockchain, tại đây các node sẽ xác minh giao dịch, và sau quá trình xử lý thì blockchain sẽ chuyển NFT cho người mua và chuyển token cho người bán và hệ thống cũng sẽ nhận được một khoản phí từ giao dịch này gọi là royalty fee Sau giao dịch người mua có thể check tài sản của mình trên etherscan hoặc vào phần sở hữu của hệ thống.
2 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
Nền tảng Ethereum
Ethereum là gì?
Vào những năm đầu Bitcoin xuất hiện, đa số mọi người đều coi Bitcoin là một đồng tiền vô giá trị, nhưng qua hơn một thập kỷ thì Bitcoin nay đã chứng minh được sức mạnh của công nghệ là mạnh mẽ đến cỡ nào, cùng với việc càng ngày càng mở rộng hệ sinh thái cũng đi kèm với những mặt hạn chế mà Bitcoin đã để lộ Do là người đi tiên phong trong công nghệ blockchain vậy nên Bitcoin cũng có những điểm hạn chế của nó như:
➔ Thời gian giao dịch, xác minh các khối chậm.
➔ Khai thác tốn điện năng.
➔ Không có khả năng nâng cấp và bảo trì (do người sáng lập Satoshi Nakamoto đã không hoạt động gì trong suốt gần 10 năm vừa qua).
➔ Khả năng triển khai các ứng dụng phi tập trung còn hạn chế.
Vì những lý do trên mà trong gần một thập kỷ vừa qua có rất nhiều nhà khoa học máy tính, các tập đoàn công nghệ, các lập trình viên đã cố gắng tạo ra một blockchain có tính ứng dụng cao với mục đích có thể thay thế đượcBitcoin Vào cuối năm 2015 Ethereum ra đời.
Ethereum là một nền tảng blockchain phân tán, mã nguồn mở công khai và phân quyền có khả năng triển khai các ứng dụng phi tập trung(Dapp) thông qua qua các hợp đồng thông minh (Smart Contract) Mạng lưới Blockchain của Ethereum là hê Š thống siêu máy (server) với hàng trăm nghìn thiết bị được kết nối trên toàn cầu hoạt đô Šng để duy trì trạng thái điê Šn toán của nó. Để có thể hình dung về mạng lưới của Ethereum ta có thể lấy ví dụ về hệ thống máy chủ của Google(Hệ thống máy chủ tập trung) Trong khi đóEthereum lại là một mạng lưới các máy tính trên toàn cầu (Thống kê khoảng300.000 máy chủ) Do đó bất cứ ai cũng có thể tham gia vào mạng lưới củaEthereum để vận hành những ứng dụng phi tập trung mà không cần phải thông qua bất kì bên thứ ba.
Cách hoạt động của Ethereum
Để tham gia vào mạng lưới, thì người dùng sẽ phải sử dụng máy tính của mình như một node trong mạng lưới Ethereum, để hoạt động như một node người dùng sẽ phải cài đặt các phần mềm như Geth, Parity…
Khi cài đặt Ethereum Client, các node sẽ phải chạy máy ảo Ethereum virtual machine (EVM), thông qua EVM mà các nhà phát triển có thể triển khai các ứng dụng phi tập trung của mình bằng việc sử dụng ngôn ngữ lập trình Solidity.
Khi một giao dịch được xảy ra trong Ethereum, giao dịch đó sẽ được gửi đi vào mạng lưới các node của nó, tại đây các node sẽ xác định xem giao dịch đó có phù hợp không, các node xác nhận được gọi là Miner node (còn được gọi là thợ đào) Để xác nhận giao dịch có hợp lệ không thì các Miner phải tuân thủ theo một số quy tắc chung được gọi là luật đồng thuận (consensus).
Sau khi giao dịch được coi là hợp lệ, thì nó sẽ được đưa vào một hồ chứa được gọi là Mining Pool tại đây sẽ bao gồm rất nhiều giao dịch và được sắp xếp theo một quy luật nhất định, mà quy luật thường thấy là sắp xếp theo gas fee (gas fee như là phí giao dịch mà người dùng phải trả khi muốn thực hiện 1 giao dịch) Các giao dịch sẽ được sắp xếp từ cao xuống thấp theo phí giao dịch của nó.
Tại đây cái Miner sẽ chọn ra một số các giao dịch để gom lại thành một block, thông thường một block của Ethereum sẽ có khoảng 130 giao dịch Sau đó các Miner sẽ giải một bài toán để tìm ra một mật mã hash, quá trình này còn được biết tới ở Việt Nam với cái tên là đào coin, Miner nào tìm được mật mã hash đầu tiên sẽ có quyền thêm block vừa tạo vào mạng lưới blockchain đồng thời cũng nhận được toàn bộ gas fee của tất cả giao dịch trong block và đồng thời cũng sẽ nhận được phần thưởng từ mạng lưới là một cơ số đồng ETH (đồng coin đại diện cho hệ thống Ethereum) Sau đó Miner sẽ truyên block đó vào mạng lười blockchain để các node cùng cập nhật lại blockchain mới.
Vì giá trị của các đồng coin như Bitcoin hay Ethereum ngày càng gia tăng nên ngày càng có nhiều người tham gia vào các mạng lưới blockchain để đào coin, càng nhiều người tham gia hệ thống sẽ càng an toàn và khó có thể tấn công Ước tính để tấn công vào mạng lưới blockchain thì thiệt hại sẽ nhiều hơn gấp vài trăm lần so với công sức bỏ ra.
Ngôn ngữ lập trình Solidity
Ngày nay có rất nhiều ngôn ngữ lập trình được sử dụng, mỗi ngôn ngữ sẽ có một thế mạnh riêng và chỉ dùng để lập trình một vài mảng nhất định ví dụ như C++ để lập trình nhúng hay Javascript dùng để lập trình giao diện web thì Solidity là ngôn ngữ dùng để tạo ra các ứng dụng phi tập trung (Dapp).
Solidity là một ngôn ngữ lập trình cấp cao, đối tượng sử dụng của ngôn ngữ Solidity là các nhà lập trình muốn phát triển các ứng dụng trênEthereum Bằng cách sử dụng sự kết hợp giữa các chữ cái và số, ngôn ngữ lập trình Solidity giúp các nhà phát triển (developer) viết chương trình dễ dàng hơn.
Khái niệm hợp đồng thông minh và ứng dụng phi tập trung
Hợp đồng thông minh (Smart contract) là một khái niệm đã được đề xuất từ lâu nhưng vì những lý do hạn chế về mặt công nghệ mà mãi cho đến khi Ethereum ra đời cũng bắt đầu xuất hiện các ứng dụng hợp đồng thông minh đầu tiên.
Hợp đồng thông minh hiểu đơn giản là một chương trình được viết bằng các ngôn ngữ lập trình (tiêu biểu là Solidity chiếm khoảng 80%) và được lưu trên các máy EVM của các node trong hệ thống Ethereum, các hợp đồng thông minh cũng có cơ sở dữ liệu riêng của mình Hợp đồng thông minh sẽ thực hiện các chức năng của nó khi nhận được yêu cầu từ người dùng, chỉ khi người dùng phát sinh ra các yêu cầu giao dịch thì những logic của hợp đồng thông minh mới được thực hiện, ngoài ra không thể tự triển khai các logic đó được, kết quả sẽ được lưu trữ trên blockchain và hoàn toàn minh bạch.
Có thể lấy ví dụ về hợp đồng thông minh như sau: Để có thể chuyển tiền mua bán các loại tài sản chúng ta sẽ đều nghĩ ngay đến ngân hàng, tại đây chúng ta sẽ phải ký hợp đồng giao dịch sau đó sẽ nhờ bên thứ ba (ở đây là ngân hàng) thực hiện giao dịch chuyển tiền sau đó giao dịch sẽ được lưu vết tại ngân hàng.
Còn trong trường hợp sử dụng hợp đồng thông minh, thì chúng ta sẽ không cần phải nhờ cậy vào bên thứ ba nữa vì giờ đây giao dịch được thực hiện hoàn toàn tự đồng và được lưu viết trên blockchain một cách hoàn toàn minh bạch, do đó không bị chi phối cũng như lừa đảo. Ứng dụng phi tập trung (hay Decentralized application) là ứng dụng phân tán, mã nguồn mở, giống như những ứng dụng thông thường khác nhưng thay vì chạy trên các máy chủ tập trung thì những ứng dụng này lại sử dụng mạng ngang hàng Peer-To-Peer, tiêu biểu là các hệ thống blockchain như Ethereum, Solana, Bitcoin… Đặc điểm của các ứng dụng phi tập trung là dữ liệu hoàn toàn thuộc về người dùng:
Ví dụ: Facebook hay Google là các công ty lớn và họ có các máy chủ mạnh mẽ để lưu trữ dữ liệu của hàng tỷ người dùng, dữ liệu của người dùng hoàn toàn thuộc về các công ty đó, còn với Dapp dữ liệu được lưu phân tán ở các node và không thể bị quản lý bởi một tổ chức hay cơ quan nào, hoàn toàn minh bạch, chính vì việc được lưu bằng mạng ngang hàng với quy mô toàn cầu nên dữ liệu của người dùng không thể bị mất. Ở Dapp, bất kỳ người dùng nào trong mạng lưới, đều có quyền hạng sử dụng như nhau, không cần lo ngại đến sự kiểm duyệt của người khác, kể cả công ty tạo ra hệ thống Tất cả mọi yêu cầu sẽ được thực hiện tự động, nhanh chóng khi yêu cầu đó thoả mãn các điều kiện trong hợp đồng thông minh đã được lập trình sẵn Với Dapp – ứng dụng phi tập trung, mọi thứ đều được mã hoá, bất biến, an toàn, bảo mật và không ai có quyền thay đổi, lừa đảo, gian lận Hay cũng có thể nói vui rằng, Dapp là một ứng dụng, một hệ thống hoàn toàn “tự trị”.
Người ta chia ứng dụng phân quyền Dapp thành 7 nhóm chính gồm: sàn giao dịch, ví, các ứng dụng cá cược, game, tài chính, mạng xã hội và một số lĩnh vực khác Dựa và các đặc tính của blockchain chúng ta có thể chia thành 3 loại chính:
Loại 1: Các ứng dụng phi tập trung loại này sẽ dựa trên các blockchain nền tảng như Bitcoin, Ethereum hay Solana.
Loại 2: đây là ứng dụng phân quyền sử dụng blockchain của ứng dụng phân quyền loại 1 Dapp loại 2 sẽ thực hiện các giao thức và phát hành các mã token để thực hiện chức năng cho ứng dụng Nói các khác Dapp loại 2 sẽ xây dựng những token dựa trên các blockchain nền tảng khác.
Loại 3: Cũng như Dapp loại 2, ứng dụng phân quyền loại 3 sẽ sử dụng giao thức của blockchain loại 2 Ứng dụng này cũng sẽ thực hiện các chức năng cần thiết của nó dựa vào các giao thức và mã token.
Phân biệt Coin và Token
Blockchain là một khái niệm còn khá mới ở Việt Nam cộng thêm việc các phương tiện truyền thông đưa tin cũng chưa đúng khái niệm về các loại tiền mã hoá.
Coin là đơn vị tiền tệ tồn tại trong các blockchain nền tảng, là đồng tiền đại diện cho hệ sinh thái blockchain đó, được làm phần thưởng cho các Miner khi đào được block tiêu biểu như đồng BTC của Bitcoin, ETH của Ethereum hay SOL của Solana, có thể lấy ví dụ đơn giản nếu ví Việt Nam như một hệ sinh thái blockchain thì VND chính là đồng Coin đại diện cho hệ thống đó và chúng ta sẽ kiếm được VND khi làm việc.
Token cũng có thể được coi là một loại tiền mã hoá nhưng thay vì đại diện cho một hệ sinh thái blockchain thì token sẽ phải được lập trình bởi các lập trình viên và không có hệ sinh thái blockchain của riêng mình mà phải sử dụng nhờ các blockchain nền tảng khác, hiểu đơn giản chúng ta có thể sử dụng ngôn ngữ Solidity để tạo ra cho mình một Token với mục đích cá nhân và phải dựa trên các blockchain nên tảng như Bitcoin hay Ethereum để hoạt động có nghĩa là nếu một ngày Bitcoin hay Ethereum bị đào thải thì các đồng token dựa trên hai nền tảng trên cũng sẽ biến mất, một vài đồng token có thể kể đến như DogeCoin, Fantom Token, Shiba,
Fungible token và Non Fungible token
Gần đây khái niệm về NFT hay Non Fungible token được đề cập rất nhiều trên các phương tiện truyền thông, trước khi hiểu về NFT thì chúng ta cần hiểu khái niệm về Fungible token trước.
Fungible token còn được dịch là token có thể thay thế là một dạng tài sản được lập trình trong blockchain, hiểu đơn giản thì chúng ta có thể đem Fungible token để đổi lấy Fungible token khác có giá trị ngang hàng Ví dụ ta có đồng 10 đô la thì ta cũng có thể đổi tờ 10 đô la đố lấy tờ 10 đô là khác đơn giản vì chúng có cùng giá trị với nhau.
Non Fungible token hay NFT là một dạng tài sản số tồn tại duy nhất và không thể bị thay thế được, gần đây chúng ta có tựa game Axie Infinity là một dạng game NFT tại đó mỗi nhân vật là một NFT tồn tại duy nhất và không có thể trao đổi bằng những nhân vật tương tự, lấy ví dụ tiêu biểu như bức tranh
Mona Lisa nổi tiếng cũng có thể coi là một NFT tuy có rất nhiều bản sao chép nhưng không thể thay thế được bản gốc và bản gốc là một giá trị tồn tại duy nhất trên thế giới.
Các thuật toán và cấu trúc dữ liệu sử dụng sử dụng
Merkle Tree
Merkle Tree là một cấu trúc dữ liệu dựa trên hàm băm, là sự tổng quát hóa của danh sách băm Nó là một cấu trúc cây, trong đó mỗi nút lá là một hàm băm của một khối dữ liệu và mỗi nút không phải là một hàm băm con của nó Thông thường, cây Merkle có hệ số phân nhánh là 2, nghĩa là mỗi nút có tối đa 2 nút con.
Cây Merkle thường được triển khai dưới dạng cây nhị phân, như thể hiện trong hình sau Tuy nhiên, cây Merkle có thể được tạo dưới dạng cây n- nary, với n con trên mỗi nút.
Trong các hệ thống phân tán và ngang hàng khác nhau, việc xác minh dữ liệu là rất quan trọng Điều này là do cùng một dữ liệu tồn tại ở nhiều vị trí Vì vậy, nếu một phần dữ liệu được thay đổi ở một vị trí, thì điều quan trọng là dữ liệu phải được thay đổi ở mọi nơi Xác minh dữ liệu được sử dụng để đảm bảo dữ liệu giống nhau ở mọi nơi.
Tuy nhiên, việc kiểm tra toàn bộ từng tệp bất cứ khi nào hệ thống muốn xác minh dữ liệu sẽ tốn nhiều thời gian và tính toán Vì vậy, đây là lý do tại sao cây Merkle được sử dụng Về cơ bản, chúng ta muốn giới hạn lượng dữ liệu được gửi qua mạng (như Internet) càng nhiều càng tốt Vì vậy, thay vì gửi toàn bộ tệp qua mạng, chúng ta chỉ gửi một hàm băm của tệp để xem nó có khớp hay không Giao thức diễn ra như thế này:
● Máy tính A gửi một hàm băm của tệp đến máy tính B.
● Máy tính B kiểm tra hàm băm đó dựa vào gốc của cây Merkle.
● Nếu không có sự khác biệt, hoàn tất! Nếu không, hãy chuyển sang bước 4.
● Nếu có sự khác biệt trong một hàm băm, máy tính B sẽ yêu cầu gốc của hai cây con của hàm băm đó.
● Máy tính A tạo ra các hàm băm cần thiết và gửi chúng trở lại máy tính B.
● Lặp lại các bước 4 và 5 cho đến khi bạn tìm thấy (các) khối dữ liệu không nhất quán Có thể tìm thấy nhiều khối dữ liệu bị sai vì có thể có nhiều hơn một lỗi trong dữ liệu.
Lưu ý rằng mỗi khi tìm thấy một băm phù hợp, chúng ta cần thêm những phép so sánh ở cấp độ tiếp theo.
Thuật toán này được dự đoán dựa trên giả định rằng I / O mạng mất nhiều thời gian hơn I / O cục bộ để thực hiện băm Điều này đặc biệt đúng vì các máy tính có thể chạy song song, tính toán nhiều hàm băm cùng một lúc.
Vì các máy tính chỉ gửi hàm băm qua mạng (không phải toàn bộ tệp) nên quá trình này có thể diễn ra rất nhanh Ngoài ra, nếu tìm thấy một phần dữ liệu không nhất quán, việc chèn một phần nhỏ dữ liệu cố định sẽ dễ dàng hơn nhiều so với việc viết lại hoàn toàn toàn bộ tệp để khắc phục sự cố.
Lý do mà Merkle tree hữu ích trong các hệ thống ngang hàng là chúng giúp xác minh thông tin, ngay cả khi một số thông tin đến từ một nguồn không đáng tin cậy (điều đáng lo ngại trong các hệ thống ngang hàng). Cách mà Merkle tree có thể hữu ích trong hệ thống ngang hàng liên quan đến sự tin tưởng Trước khi tải xuống tệp từ một nguồn ngang hàng — như Tor — mã băm gốc được lấy từ một nguồn đáng tin cậy Sau đó, có thể lấy được các nút thấp hơn của cây Merkle từ những người ngang hàng không đáng tin cậy Tất cả các nút này tồn tại trong cùng một cấu trúc dạng cây được mô tả ở trên và tất cả chúng đều là biểu diễn một phần của cùng một dữ liệu.Các nút từ các nguồn không đáng tin cậy được kiểm tra dựa trên băm đáng tin cậy Nếu chúng khớp với nguồn đáng tin cậy (có nghĩa là chúng phù hợp với cùng một cây Merkle), chúng được chấp nhận và quá trình tiếp tục Nếu chúng không tốt, chúng sẽ bị loại bỏ và tìm kiếm lại từ một nguồn khác.
Patricia Tries
Patricia tries là cấu trúc dữ liệu cây có thứ tự được sử dụng để lưu trữ một tập động hoặc mảng kết hợp trong đó các khóa thường là chuỗi Vị trí của một nút trong cây xác định khóa mà nó được liên kết.
Patricia - Thuật toán thực tế để truy xuất thông tin được mã hóa bằng chữ và số Một bộ trie Patricia là một bộ ba cơ số nhị phân, lựa chọn nhị phân tại mỗi nút khi đi qua bộ ba, điều này được sửa đổi trong Ethereum.
Trong ethereum, hệ thập lục phân được sử dụng - các ký tự X từ một
"bảng chữ cái" 16 ký tự Do đó, các nút trong bộ ba có 16 nút con (16 ký tự hex trong "bảng chữ cái") và độ sâu tối đa là X Lưu ý rằng một ký tự hex được gọi là "nibble" Ethereum đã thay đổi Merkle Patricia Tries để phù hợp với tính năng của mạng lưới blockchain này có thể nhìn thấy rõ ở biểu đồ dưới đây:
Thuật toán ký
Chữ ký số là một nền tảng khoa học máy tính sơ khai cho phép tất cả công nghệ blockchain Chữ ký có thể được sử dụng để ủy quyền các giao dịch thay mặt cho người ký Nó cũng có thể được sử dụng để chứng minh với hợp đồng thông minh rằng một tài khoản nhất định đã chấp thuận một tin nhắn nhất định.
Public Key(Mật mã khóa công khai hoặc mật mã không đối xứng), là một sơ đồ mã hóa sử dụng hai khóa liên quan về mặt toán học, nhưng không giống hệt nhau, - một khóa công khai và một khóa riêng tư Không giống như các thuật toán khóa đối xứng dựa vào một khóa để vừa mã hóa vừa giải mã, mỗi khóa thực hiện một chức năng duy nhất Khóa công khai được sử dụng để mã hóa và khóa riêng được sử dụng để giải mã.
Private Key(Khóa riêng tư) là một số bí mật được sử dụng trong mật mã, tương tự như mật khẩu Trong tiền điện tử, khóa riêng cũng được sử dụng để ký kết các giao dịch và chứng minh quyền sở hữu một địa chỉ blockchain. Khi có đủ cả cặp Private Key và Public Key thì giao dịch mới được thực hiện. Để thực hiện ký các giao dịch trên mạng lưới Blockchain Ethereum, thông thường sẽ sử dụng thuật toán RSA.
RSA là một hệ mã hóa bất đối xứng được phát triển bởi Ron Rivest, Adi Shamir và Leonard Adleman (tên của nó cũng chính là tên viết tắt của 3 tác giả này) và được sử dụng rộng rãi trong công tác mã hoá và công nghệ chữ ký điện tử Trong hệ mã hóa này, public key có thể chia sẻ công khai cho tất cả mọi người Hoạt động của RSA dựa trên 4 bước chính: sinh khóa, chia sẻ key, mã hóa và giải mã.
Hệ thống phần mềm và Framework lập trình
Tổng quan về hệ thống phần mềm
Hệ thống của em phát triển hướng tới việc xây dựng một ứng dụng phi tập trung hoạt động như một sàn giao dịch mà ở đó người dùng có thể tự do mua bán các tài sản số là NFT, xa hơn nữa trong tương lai có thể sử dụng chính các NFT đó để sử dụng vào những game play to earn Ngoài ra sẽ phát triển một đồng Token riêng trên nền tảng Ethereum để sử dụng cho việc mua bán.
Hệ thống sẽ gồm 3 phần chính gồm Front-end, Back-end vàBlockchain-Smart Contract Phần mềm sẽ tập trương phát triển theo hướng bán tập trung (Semi Dapp), có giao diện bắt mắt phù hợp với thị yếu người dùng.
Front-end
React là một thư viện phát triển giao diện người dùng dựa trênJavaScript Facebook và một cộng đồng nhà phát triển nguồn mở điều hành nó Mặc dù React là một thư viện chứ không phải là một ngôn ngữ, nó được sử dụng rộng rãi trong phát triển web Thư viện lần đầu tiên xuất hiện vào tháng 5 năm 2013 và hiện là một trong những thư viện giao diện người dùng được sử dụng phổ biến nhất để phát triển web.
React cung cấp nhiều phần mở rộng khác nhau để hỗ trợ toàn bộ kiến trúc ứng dụng, chẳng hạn như Flux và React Native, ngoài giao diện người dùng đơn thuần React giúp phát triển giao diện một cách nhanh chóng và tối ưu do đó dự án lần này e quyết định sử dụng Reactjs để phát triển.
Back-end
Node.js là một nền tảng được xây dựng dựa trên thời gian chạy JavaScript của Chrome để dễ dàng xây dựng các ứng dụng mạng nhanh và có thể mở rộng Node.js sử dụng mô hình I / O hướng sự kiện, không chặn, giúp nó nhẹ và hiệu quả, hoàn hảo cho các ứng dụng thời gian thực sử dụng nhiều dữ liệu chạy trên các thiết bị phân tán.
Node.js là một môi trường chạy mã nguồn mở, đa nền tảng để phát triển các ứng dụng mạng và phía máy chủ Các ứng dụng Node.js được viết bằng JavaScript và có thể chạy trong thời gian chạy Node.js trên OS X, Microsoft Windows và Linux.
Một vài tính năng nổi bật của Nodejs có thể kể đến như:
● Không đồng bộ và theo hướng sự kiện - Tất cả các API của thư viện Node.js là không đồng bộ, nghĩa là không chặn Về cơ bản, nó có nghĩa là một máy chủ dựa trên Node.js không bao giờ đợi API trả về dữ liệu Máy chủ chuyển đến API tiếp theo sau khi gọi nó và cơ chế thông báo Sự kiện của Node.js giúp máy chủ nhận được phản hồi từ lệnh gọi API trước đó.
● Rất nhanh - Được xây dựng trên Công cụ JavaScript V8 của Google Chrome, thư viện Node.js thực thi mã rất nhanh.
● Đơn luồng nhưng có khả năng mở rộng cao - Node.js sử dụng mô hình một luồng với vòng lặp sự kiện Cơ chế sự kiện giúp máy chủ phản hồi theo cách không bị chặn và làm cho máy chủ có khả năng mở rộng cao so với các máy chủ truyền thống tạo ra các luồng giới hạn để xử lý các yêu cầu. Node.js sử dụng một chương trình luồng đơn và chương trình tương tự có thể cung cấp dịch vụ cho số lượng yêu cầu lớn hơn nhiều so với các máy chủ truyền thống như Apache HTTP Server.
● Không đệm - Các ứng dụng Node.js không bao giờ đệm bất kỳ dữ liệu nào Các ứng dụng này chỉ đơn giản xuất dữ liệu theo từng phần.
● Giấy phép - Node.js được phát hành theo giấy phép MIT.
Database
MongoDB là một database hướng tài liệu (document), một dạng NoSQL database Vì thế, MongoDB sẽ tránh cấu trúc table-based của relational database để thích ứng với các tài liệu như JSON có một schema rất linh hoạt gọi là BSON MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ các các kích cỡ và các document khác nhau Các dữ liệu được lưu trữ trong document kiểu JSON nên truy vấn sẽ rất nhanh.