Ở Việt Nam, khi nói đến xe máy người ta nghĩ đến xe Honda. Còn khi nói đến tiền điện tử, gần như mọi người sẽ nghĩ đến Bitcoin. Tuy nhiên, bạn không nên bỏ qua Ethereum, vốn đang làm thay đổi, thậm chí có thể gọi là một cuộc cách mạng hóa cách chúng ta nghĩ về các ứng dụng.
Trong bài viết này chúng ta hãy cùng tìm hiểu xem Dapp là gì, các loại ứng dụng dApp được xây dựng trên giao thức Ethereum, đặc điểm của Dapp, và cuối cùng là tìm hiểu lộ trình để trở thành một dApp developer.
Hãy đi sâu vào thế giới của Dapps, và sau đó là những người sẽ tạo ra chúng.
DApp là gì?
DApp là viết tắt của Decentralized Application, tức Ứng dụng phi tập trung hay còn gọi là Ứng dụng phân quyền. DApp là một ứng dụng phần mềm chạy trên một mạng phân tán. Nó không được lưu trữ trên một máy chủ tập trung mà thay vào đó là một mạng phi tập trung ngang hàng. Dapp cũng giống như bất kỳ ứng dụng phần mềm nào khác mà bạn sử dụng. Nó có thể là một trang web hoặc một ứng dụng trên điện thoại của bạn. Điều làm cho Dapp khác với một ứng dụng truyền thống là nó được xây dựng trên một mạng phi tập trung như Ethereum.
Khi bạn tạo các hợp đồng thông minh Ethereum, tức là bạn viết một đoạn code backend cho Dapp. Và trong khi Dapp của bạn sẽ có giao diện người dùng giống như một ứng dụng truyền thống, tất cả hoặc một phần của backend được xây dựng trên Ethereum. Chúng ta có thể hiểu:
Dapp = frontend + smart contract backend
Các backed code được viết bằng ngôn ngữ dành riêng cho Ethereum, chằng hạn như Solidity, Serpent và Vyper. Dưới đây là ví dụ về hợp đồng “Hello World” đơn giản được viết bằng Solidity:
pragma solidity ^0.4.22;
contract helloWorld {
function printHelloWorld () public pure returns (string) {
return 'Hello World!';
}
}
Nếu hợp đồng thông minh được triển khai trên mạng chính của Ethereum (mainnet) hoặc thậm chí là mạng thử nghiệm cục bộ, Dapp của bạn có thể thực thi mã trong hợp đồng thông minh bằng cách gọi hàm printHelloWorld ()
.
Đối với frontend, bạn có thể sử dụng bất kỳ ngôn ngữ / framework frontend nào mà bạn muốn. Nhưng bạn có thể lưu trữ mã frontend của mình trên các nodes lưu trữ phi tập trung để làm cho cả frontend và backend của bạn được phân tán (decentralized). Các công nghệ lưu trữ phi tập trung có thể kể đến như Swam hay IPFS
Sự phát triển của Dapps có thể coi là một bước tiến hướng tới một tương lai của Internet và có thể gọi là Web 3.0.
Tại sao lại là Ethereum?
Câu hỏi đặt ra là tại sao lại là Ethereum? Có phải Ethereum là giao thức duy nhất để xây dựng nên các dApps? Câu trả lời là KHÔNG. Có những giao thức khác được sử dụng để xây dựng Dapp, như EOS, NEO, Stellar, Tron và Cardano, nhưng giao thức phổ biến nhất là Ethereum.
Ethereum là một giao thức mạng (network protocol) cho phép người dùng tạo và chạy các hợp đồng thông minh qua một mạng phi tập trung. Hợp đồng thông minh chứa code chạy các hoạt động (operation) cụ thể và tương tác với các hợp đồng thông minh khác và code này được viết bởi các nhà phát triển. Không giống như Bitcoin lưu trữ một số (number), Ethereum lưu trữ mã thực thi (executable code).
Ethereum loại bỏ sự cần thiết của bên thứ ba để xử lý các giao dịch giữa các đồng cấp (peers). Kể từ khi người trung gian được thay thế bằng code, tất cả các loại chi phí được giảm bớt, kể cả thời gian và tiền bạc. Giống như Bitcoin loại bỏ nhu cầu ai đó giữ tiền của bạn, Ethereum loại bỏ sự cần thiết phải có người môi giới giao dịch.
Bây giờ bạn có thể tự hỏi, tất cả các hợp đồng thông minh này ở đâu? Về cơ bản, chúng được lưu trữ trên nhiều node máy tính trên toàn thế giới. Các node này chứa tất cả thông tin của tất cả các hợp đồng thông minh trên thế giới, bao gồm mã, giao dịch, v.v. Chúng hoạt động liên tục để cập nhật thông tin, đảm bảo tất cả chúng đều có cùng một bản sao. Đây là điều khiến các hợp đồng thông minh và tiền điện tử nói chung trở nên phi tập trung.
Và vì tất cả các node đều có thông tin giống nhau và được phổ biến trên toàn thế giới, nên việc loại bỏ một node sẽ không làm gián đoạn việc thực hiện bất kỳ hợp đồng thông minh nào, đảm bảo thời gian hoạt động là cao nhất.
Đặc điểm của DAPPs
Các DAPP thường có các đặc điểm sau:
- Chúng chạy trên blockchain
- Code của chúng được tạo thành mã nguồn mở hoạt động độc lập mà không cần bất kỳ cá nhân hoặc nhóm nào kiểm soát phần lớn các token
- Chúng tạo ra các DAPP tokens để cung cấp giá trị cho các nodes (contributing nodes)
- Người dùng được cấp quyền truy cập vào chúng để trao đổi token
- Những người khai thác được thưởng bằng token khi họ đóng góp thành công vào hệ sinh thái
Các loại DAPP
Ethereum mô tả ba danh mục chính của DAPP:
1. Ứng dụng quản lý tiền: người dùng có thể giao dịch với nhau trên mạng blockchain, sử dụng tiền tệ nội tại của nó. Các DAPP này thường có các blockchain riêng và chúng ta thường gọi chúng là tiền điện tử (chẳng hạn như Bitcoin).
2. Các ứng dụng tích hợp tiền với các sự kiện bên ngoài, trong thế giới thực: ví dụ: một công ty hậu cần có thể sử dụng vị trí chip RFID để xác định rằng một lô hàng đã đến cảng, và chỉ sau đó thanh toán cho lô hàng đó. Điều này thậm chí có thể được thực hiện bằng tiền trên blockchain mà không có sự can thiệp của con người, nếu cả người mua và người bán tham gia vào một hợp đồng thông minh.
3. Các tổ chức tự trị phi tập trung (Decentralized Autonomous Organizations – DAO): các tổ chức phi tập trung, không có người lãnh đạo trên blockchain. Những quy tắc này bắt đầu từ quan niệm theo các quy tắc được lập trình xác định về những thực thể nào có thể là thành viên, cách các thành viên có thể bỏ phiếu, những doanh nghiệp hoặc hoạt động nào họ có thể tham gia và cách trao đổi token, quỹ (fund) hoặc giá trị. Sau khi được triển khai, DAPPs hoạt động tự chủ theo các quy tắc của chúng. Các thành viên có thể phân tán ở bất cứ đâu về mặt địa lý.
Cho đến nay, các công ty khởi nghiệp DAPP (được xây dựng trên các nền tảng blockchain) đã tạo nên phần lớn các ICO. Hầu hết các DAPP Loại 2 và Loại 3 hiện tại đều sử dụng nền tảng Ethereum.
Tại sao DAPP sẽ là tương lai?
DAPP về cơ bản cho phép tất cả backend code và dữ liệu được phân tán, do đó không thể thay đổi và chống giả mạo. Xem xét bản chất phi tập trung của các ứng dụng này cùng với các cơ chế bảo mật dữ liệu blockchain, DAPPs có tiềm năng cho các trường hợp sử dụng khác nhau. Một số lợi ích của việc tạo DAPP thay vì một ứng dụng bình thường bao gồm:
- Xử lý thanh toán: không cần tích hợp với nhà cung cấp thanh toán tập trung (fiat payment provider) để chấp nhận tiền từ người dùng, vì người dùng có thể giao dịch trực tiếp bằng tiền điện tử
- Thông tin đăng nhập của người dùng: sử dụng hệ thống khóa công khai và riêng tư, người dùng có thể giao dịch và ràng buộc các phiên người dùng và siêu dữ liệu của họ một cách dễ dàng và với các mức độ ẩn danh khác nhau, loại bỏ nhu cầu đăng ký hoặc quy trình đăng ký kéo dài
- Tin cậy và khả năng kiểm tra: opensource DAPP code có thể truy cập và dễ hiểu. Tính minh bạch này và tính bảo mật vốn có của dữ liệu được cung cấp tạo ra sự tin cậy trong các ứng dụng. Hồ sơ công khai trên blockchain cũng giúp người dùng hoặc bên thứ ba dễ dàng kiểm tra thông tin giao dịch
Lộ trình để trở thành một dApp developer
Luôn luôn khó để biết bắt đầu việc học các công cụ hoặc công nghệ mới từ đâu. Rất nhiều bài viết và hướng dẫn trên internet có thể làm bạn bối rối. Dưới đây là lộ trình để bạn có thể trở thành một nhà phát triển dApp.
01. Xác định mục tiêu
Nếu bạn muốn học để có thể phát triển dApp mà không xác định thật sự mục tiêu của mình là gì thì đó là một sai lầm lớn. Bạn sẽ rất dễ mất động lực và bạn sẽ không thể về đích. Rất nhiều developer bị thu hút vào thế giới Blockchain vì lợi nhuận điên cuồng của tiền điện tử. Nhưng nếu bạn chỉ dựa vào điều này thì sự phấn khích để học để một nhà phát triển dApp của bạn có thể chỉ tồn tại trong thời gian ngắn. Tốt nhất, bạn nên có ít nhất một động lực khác. Ví dụ:
- Tham gia vào việc tạo ra những ứng dụng trong một hệ sinh thái mới
- Thật sự muốn học hỏi những công nghệ mới
- Muốn tìm những cơ hội nghề nghiệp mới.
- Thấy được những cơ hội tạo ra những sản phẩm có thể giải quyết được những vấn đề trong thực tế mà các ứng dụng truyền thống không giải quyết được
02. Chọn blockchain
Bạn không cần phải biết mọi Blockchain để trở thành một nhà phát triển Blockchain. Trên thực tế, bạn nên tập trung vào một số công nghệ Blockchain thực sự quan trọng và tránh bị phân tâm quá mức bởi những công nghệ khác. Như trên đã đề cập, có nhiều loại công nghệ khác nhau nhưng phổ biến nhất là Ethereum. Ethereum được xây dựng để giải quyết những hạn chế của Bitcoin và cho phép chạy các chương trình nhỏ được gọi là hợp đồng thông minh. Hãy coi nó như một máy ảo được đặt trên Blockchain. Blockchain đảm bảo tính toàn vẹn của dữ liệu và các hợp đồng thông minh cho phép chạy bất kỳ tính toán tùy ý nào, làm cho Ethereum linh hoạt hơn nhiều so với Bitcoin.
03. Tìm hiểu những ứng dựng dApps hiện có
Có rất nhiều ứng dụng được xây dựng trên Ethereum và thêm nhiều ứng dụng mới được phát hành mỗi ngày. Một cách tuyệt vời để khám phá các Dapp phổ biến là truy cập trang web danh sách Dapp. Các trang web danh sách Dapp nổi tiếng nhất là StateOfTheDapps và DappRadar . Lưu ý là StateofTheDapps có cả tiếng Việt
04. Tìm hiểu về Ethereum
Giao thức Ethereum là nền tảng của các hợp đồng thông minh và Dapp. Bạn cần hiểu những điều cơ bản về Ethereum để hiểu phần còn lại của quá trình phát triển trên Ethereum. Bạn có thể bắt đầu bằng cách đọc Ethereum white paper, để hiểu tổng quan về Ethereum là gì. Tài liệu được viết bởi Vitalik Buterin, người tạo ra Ethereum.
Nếu bạn muốn đi sâu hơn, bạn cần đọc Ethereum Yellow Paper của Gavin Wood. Tài liệu này đặc tả đặc điểm kỹ thuật được sử dụng bởi các nhà phát triển triển khai giao thức Ethereum. Rất nhiều ký hiệu toán học được sử dụng, và nó không dành cho những người yếu tim. Có thể bạn phải đọc lại nhiều lần để hiểu nó.
Một nguồn khác để tìm hiểu về Ethereum là diễn đàn nghiên cứu Ethereum. Trong diễn đàn, nhóm nghiên cứu của nền tảng Ethereum và Vitalik Buterin thường xuyên thảo luận về những phát triển mới nhất trong giao thức Ethereum. Đó là một nơi tốt để hỏi và đọc về giao thức Ethereum.
Bạn cũng có thể đọc mã nguồn của một số ứng dụng đã triển khai (client). Bạn có thể đọc mã của các ứng dụng client chính như Geth (Go) hoặc Parity (Rust) nhưng chúng có thể không dễ đọc. Bạn cũng có thể triển khai Python (Trinity) hoặc Javascript.
Cuối cùng, cuốn sách Mastering Ethereum, của Andreas Antonopoulos và Gavin Wood là cuốn sách rất đáng đọc.
05. Tìm hiểu các công cụ phát triển và các thư viện
Khi phát triển các hợp đồng thông minh và Dapp, bạn sẽ cần các công cụ sau:
- Solc
- Web3
- Remix
- Truffle
- Ganache
- Metamask
06. Tìm hiểu về Smart contract và Solidity
Hợp đồng thông minh là nền tảng xây dựng chính của Dapps. Có những chương trình nhỏ được triển khai trên Ethereum Blockchain chạy tự động sau khi được triển khai. Điều này có nghĩa là sau khi bạn triển khai chúng, mạng sẽ đảm nhận việc chạy các chương trình này và bạn không phải làm gì cả. Nó cũng có nghĩa là sau khi được triển khai, bạn hoàn toàn không có quyền kiểm soát “quản trị viên” đặc quyền đối với chúng ở cấp Ethereum. Ví dụ: bạn không thể sửa đổi mã sau khi nó được triển khai. Nó chỉ chạy mãi mãi, ngoài tầm kiểm soát của bất kỳ ai.
Solidity là ngôn ngữ chính được sử dụng để viết các hợp đồng thông minh. Nó có cú pháp tương tự như Javascript và chúng ta đã đề cập trong bài trước: 7 ngôn ngữ lập trình tốt nhất để phát triển blockchain
Học Solidity là rất quan trọng trong việc trở thành nhà phát triển Blockchain, nhưng điều đó vẫn chưa đủ. Vì hợp đồng thông minh không thân thiện với người dùng nên chúng ta không thể yêu cầu người dùng cuối tương tác trực tiếp với chúng. Thay vào đó, chúng ta cần xây dựng giao diện người dùng dễ sử dụng cho người dùng. Đây là mục đích của Dapps và đó là điều tiếp theo bạn cần học.
07. Xây dựng dApp của chính bạn
Trước khi đọc bài viết này, bạn có thể đã nghe nói về Cryptokitties. Cryptokitties là trò chơi nơi người chơi mua, nhân giống và buôn bán mèo con. Ứng dụng này được xây dựng trên Ethereum và là một ví dụ điển hình về Dapp. Hãy xem cách này hoạt động như thế nào.
- Đầu tiên, chúng ta có trang web Cryptokitties. Đây là giao diện chính cho người dùng. Phần backend của trang web được triển khai trên các máy chủ riêng và giao diện người dùng là một ứng dụng web thông thường.
- Sau đó, chúng ta có Metamask. Người chơi Cryptokitties sử dụng Metamask để gửi ether đến Cryptokitties.
- Cuối cùng, chúng ta có hợp đồng thông minh Cryptokitties, đây là nơi dữ liệu trò chơi được lưu trữ. Ví dụ: nếu người chơi mua một chú mèo con, thông tin này sẽ được lưu trữ trong hợp đồng thông minh Cryptokitties. Hợp đồng thông minh được triển khai trên chuỗi khối Ethereum. Không có bất kỳ máy tính nào có thể nói “Tôi là người duy nhất lưu trữ hợp đồng thông minh” mà thay vào đó, bất kỳ máy tính nào trong mạng Ethereum đều lưu trữ nó.
3 phần này tương tác với nhau để tạo thành Dapp. Để xây dựng Dapp của riêng bạn, bạn cần xây dựng 3 phần này và làm cho chúng giao tiếp với nhau.
Bạn có thể bắt đầu bằng cách làm theo loạt bài hướng dẫn miễn phí về cách xây dựng ứng dụng đơn giản Todo Dapp trên Ethereum. Đây là hướng dẫn 8 bước trong đó chúng ta sẽ xây dựng một Dapp hoàn chỉnh với hợp đồng thông minh và giao diện người dùng, bắt đầu từ hợp đồng thông minh và tất cả các bước lên đến giao diện người dùng.
08. Và cuối cùng, chuẩn bị cho cơ hội mới của bạn
Sau khi đã tìm hiểu các kiến thức và kỹ năng cần có, giờ là lúc bạn tìm cơ hội mới theo mục tiêu của mình đã đặt ra ban đầu (bước 1). Đó có thể là công việc mới hay xây dựng một ứng dụng dApp của riêng mình.
Bạn cũng có thể tham khảo thêm về lộ trình để trở thành một dApp developers theo infograhic dưới đây
Bài viết có tham khảo thông tin và sử dụng hình ảnh từ các nguồn sau: