Lập trình Ethereum #1: Vạn sự khởi đầu nan
Với sự phổ biến của blockchain trong hiện tại cùng với sự đổ bộ của Web 3.0., Ethereum là một trong các đồng tiền mã hóa được quan tâm nhiều trên toàn cầu. Hãy cùng mình bắt đầu hành trình lập trình Ethereum nhé.

Sau một khoảng thời gian dài không viết blog, chủ yếu là do mình có những kế hoạch cá nhân trong mùa semester break vừa qua, mình cam kết sẽ cho ra nhiều bài blog chất lượng hơn trong khoảng thời gian sắp tới để bù lại sự lười biếng của mình nhé 😁. Cũng trong kì break này, mình có nhiều thời gian hơn để đào sâu hơn về công nghệ chuỗi khối (blockchain) và hệ sinh thái của một vài chuỗi khá là hay ho mà mình nghĩ rất đáng để chia sẻ.
Vậy nên, Lập trình Ethereum sẽ là series các bài viết của mình về hệ sinh thái của đồng tiền điên tử Ethereum cũng như là các công nghệ các bạn cần biết để lập trình các ứng dụng phi tập trung nhé.
Trước khi đi sâu vào cách triển khai và phát triển các ứng dụng phi tập trung (Decentralized Application hay DApps) mà mình sẽ đem tới các bạn ở các bài viết sau, chúng ta cần điểm qua những khái niệm nền tảng để bổ trợ cho việc theo dõi series này dễ dàng hơn nhé.
Blockchain là gì?
Trong 2 thập kỉ đổ lại đây, công nghệ chuỗi khối (blockchain) đã làm mưa làm gió trong cộng đồng tài chính thế giới cũng như là giới công nghệ. Định nghĩa một cách đơn giản thì Blockchain là là một chuỗi gồm các khối liên kết với nhau thông qua mạng ngang hàng. Lợi thế lớn nhất của mạng lưới này là sự phi tập trung, có nghĩa là nó không phụ thuộc vào bất kì tổ chức hay cộng đồng nào cả.
Mình dám cá rằng ít nhất một lần trong đời bạn đã nghe đến cụm từ tiền kỹ thuật số, tiền mã hóa hay tiền ảo rồi đúng không? Và tiền điện tử là một ứng dụng phổ biến của công nghệ chuỗi khối khi đưa ra giải pháp về tài chính tự do. Ngoài ra, còn nhiều ứng dụng khác mà mình sẽ đề cập đến trong phần sau của bài viết nhé.
Ethereum là gì?
Như nội dung của series này là về lập trình ứng dụng phi tập trung trong hệ sinh thái của Ethereum, chúng ta cần phải xác định được Ethereum là gì cái đã. Thì bên cạnh Bitcoin, đồng tiền số phổ biến nhất hiện nay, thì Ethereum là đồng tiền số và là một altcoin phổ biến thứ hai trên toàn cầu. Theo như CoinMarketCap thì
Ethereum có tổng cộng tám nhà đồng sáng lập — một con số lớn bất thường đối với một dự án tiền mã hóa. Họ gặp nhau lần đầu vào ngày 7 tháng 6 năm 2014, tại Zug, Thụy Sĩ.
Bạn có thể sẽ đặt câu hỏi rằng "Nếu đã có Bitcoin, tại sao lại có Ethereum làm gì?". Việc Bitcoin là đồng điện tử đầu tiên và phổ biến nhất hiện nay là điều không thể bàn cãi. Tuy nhiên, Bitcoin chưa phải là giải pháp tốt nhất cho việc phát triển bền vững cũng như ứng dụng vào giao dịch hằng ngày. Bạn có thể tìm đọc về các vấn đề hiện tại của bitcoin thông qua Binance Academy hoặc AmbCrypto.
Vì sao lại là Ethereum?
Mục đích ra đời của Ethereum nhằm tiên phong cho khái niệm nền tảng hợp đồng thông minh (Smart Contract). Trên mạng lưới blockchain, còn chứa đựng các token với các tiêu chuẩn khác nhau (như ERC-20, ERC-721, ERC-1155...). Mình sẽ giải thích các khái niệm này trong các bài viết sau nên các bạn cứ bình tình nhé 😀.
Vì là đầu tàu trong phong trào ứng dụng phi tập trung, Ethereum có cho mình một hệ sinh thái cũng như cộng đồng mạnh mẽ. Việc bắt đầu với Ethereum rõ ràng sẽ đơn giản hơn nhiều so với các hệ sinh thái khác. Ethereum được rất nhiều sự quan tâm từ giới chuyên môn vì vậy Ethereum luôn có những cải tiến cũng như đổi mới trong cộng nghệ. Có thể lấy ví dụ xôn xao cộng đồng trong những năm gần đây đó là sự nâng cấp lên Ethereum 2.0.

Thế nào là Web 3.0?

Với sự chuyển mình từ Web 2.0 sang thế hệ thứ Web 3.0 cùng với những thay đổi trong hành vi người dùng cũng như bảo mật quyền riêng tư và dự liệu người dùng trên Internet được ưu tiên nhiều hơn. Công nghệ blockchain sẽ là nền tảng đem đến tính phi tập trung và khả năng độc lập của ứng dụng. Mặc dù hiện nay, Web 3.0 vẫn đang trong giai đoạn "tuổi ăn tuổi học", tuy nhiên với tốc độ phát triển chóng mặt của nền công nghệ thế giới hiện tại, không sớm thì muộn Web 3.0 cũng sẽ đến tuổi trưởng thành.
Hợp đồng thông minh và ứng dụng phi tập trung là gì vậy nhỉ?
Từ đầu bài đến giờ, các bạn thường xuyên thấy mình nhắc đến các cụm từ như hợp đồng thông minh và ứng dụng phi tập trung. Ở phần này, chúng ta hãy cùng mổ xẻ các khái niệm ấy là như thế nào nhé.

Hợp đồng thông mình (Smart Contract) được hiểu nôm na là một bảng hợp đồng hay một giao thức được lưu trữ trên mạng lưới blockchain. Các bảng hợp đồng này sẽ đóng vai trò là phương tiện để ứng dụng giao tiếp với mạng lưới blockchain và thức hiện các hành động như lưu trữ, ký, gửi dữ liệu. Một trong các lợi thế của các hợp đồng thông minh đó là khả năng bất biến của dữ liệu cũng như là tính minh bạch của dữ liệu đó trên mạng lưới. Với các ứng dụng hiện nay như Facebook hay Google, các thao tác và dữ liệu của người dùng đều được giám sát bởi trung tâm dữ liệu. Đã có biết bao nhiêu tin tức không hay xoay quanh việc rò rỉ thông tin người dùng. Tuy nhiên, với Smart Contract, người dùng sẽ tương tác với mạng lưới blockchain thông qua các phương thức được định sẵn và các hành động này có thể được tất cả mọi người tham gia vào mạng lưới kiểm chứng.
Ứng dụng triển khai các hợp đồng thông minh này được gọi là ứng dụng phi tập trung (Decentralized Application). Như mình đã đề cập ở trên, thay vì các ứng dụng thông thường bị kiểm soát bởi các tổ chức, ứng dụng phi tập trung sẽ cho người dùng sự bảo đảm về bảo mật dữ liệu.
Vậy thì bạn cần học công nghệ gì để phát triển một DApp xịn xò?

Với mỗi hệ sinh thái khác nhau sẽ có các công nghệ khác nhau để viết hợp đồng thông minh. Mỗi hệ sinh thái cũng sẽ có cho mình một chuỗi khối riêng, đôi khi được fork ra từ một chuối đã có sẵn, đôi khi được triển khai hoàn toàn từ đầu. Với Ethereum chúng ta sẽ các công nghệ cần đáng lưu ý như sau:
- Solidity: Ngôn ngữ lập trình để viết các hợp đồng thông minh trên EVM (Ethereum Virtual Machine)
- Solc (Solidity Compiler): Công cụ để biên dịch các file Solidity
- Javascript: Ngôn ngữ lập trình để phát triển giao diện người dùng nhằm triển khai các phương đã được biên dịch bởi Solc
- Truffle: Môi trường phát triển nhằm để kiểm thử các phương thức được triển khai
- Ganache: Cung cấp testnet nhằm thuận tiện hơn cho nhà phát triển để kiểm thử các phươn thức
- Web3: Thư viện Javascript hỗ trợ nhà phát triển làm việc với các phương thức được biên dịch từ hợp đồng thông minh trên client.
- IPFS (InterPlanetary File System): Hệ thống tệp liên hành tinh là một giao thức và mạng ngang hàng để lưu trữ và chia sẻ dữ liệu trong một hệ thống tệp phân tán
- OpenZeppelin: Thư viện hỗ trợ cho việc phát triển hợp đồng thông minh
Ngoài ra còn nhiều công nghệ khác được sử dụng trong quá trình phát triển một ứng dụng phi tập trung mà chúng ta sẽ cùng nhau tìm hiểu trong các tập sau của bài viết nhé.
Và đó là tập đầu tiên của series Lập trình Ethereum. Theo đánh giá của mình, không chỉ riêng về Ethereum mà blockchain nói chung, sẽ là kĩ năng cần thiết mà các lập trình viên web nên lựa chọn làm thị trường ngách. Tin mình đi, không chỉ về công nghệ mà blockchain còn cho bạn góc nhìn khác về thế giới tài chính.