Ethereum được ra đời từ 2015, sự xuất hiện của smart contract đã nâng ứng dụng của blockchain lên một tầm cao mới, thay vì chỉ là payment như Bitcoin hay các bản fork ra từ nó trước kia.
Ethereum (và các hệ sinh thái khác fork ra từ Ethereum) ngày càng phát triển, thì các công cụ hỗ trợ phát triển cũng ngày càng tốt hơn: dễ sử dụng hơn, hiệu năng tốt hơn, an toàn hơn.
Không có nghĩa là các công cụ cũ không tốt và không còn được dùng nữa, sẽ vẫn có những nhóm đối tượng phù hợp với các công cụ này.
2017-2019
Truffle (Framework) + Web3.js (Web3 lib) + ganache (blockchain client)
Trong thời kì này đây là combo phổ biến nhất để viết smart contract.
- Ưu điểm: là nó dễ học, dễ tiếp cận, docs đầy đủ.
- Nhược điểm: thiếu tính flexible, cách sử dụng các api vẫn khá rườm rà, đặc biệt là chậm.
Trong thời kì này cũng có vài framework khác nữa như là Waffle, Embark… tuy nhiên không phổ biến bằng Truffle.
2019-nay
Hardhat (Framework) + Ethers.js (Web3 lib) + ganache-cli (blockchain-client)
Bộ combo này cung cấp một bộ công cụ mạnh mẽ hơn, nhiều lựa chọn customize config để phù hợp với mong muốn của từng project.
Đây là combo phổ biến nhất hiện tại để phát triển smart contract.
Sau khi Hardhat xuất hiện, Truffle thường chỉ còn dành cho những newbie mới làm quen với smart contract tiếp cận, vì nó dễ.
- Ưu điểm: mạnh mẽ, linh hoạt, ngôn ngữ javascript dễ dùng.
- Nhược điểm: có quá nhiều config & plugin dẫn đến phức tạp, tốc độ vẫn chậm.
Ngoài ra, Brownie là một framework viết bằng Python cũng rất mạnh mẽ và dễ sử dụng. Nếu bạn quen với Python, Brownie là một lựa chọn đáng để thử.
2020-nay: Dapptools
https://github.com/dapphub/dapptools
Dapptools là bộ công cụ vô cùng mạnh mẽ để phát triển smart contract. Dapptools viết bằng Haskell (đoạn này mình cũng chưa hiểu tại sao lại viết bằng Haskell: là do tác giả quen với Haskell? hay Haskell có thể làm được những tác vụ nào đó tốt hơn các ngôn ngữ khác?).
Nó bao gồm tất cả những gì mà các combo trước cung cấp, ngoài ra còn cung cấp thêm những phương thức kiểm thử smart contract linh động và mạnh mẽ.
Dapptools gồm các tool:
-
dapp - Build, test, fuzz, formally verify, debug & deploy solidity contracts.
-
seth - Ethereum CLI. Query contracts, send transactions, follow logs, slice & dice data.
-
hevm - Testing oriented EVM implementation. Debug, fuzz, or symbolically execute code.
-
ethsign - Ký giao dịch.
-
Ưu điểm: nhiều chức năng, linh hoạt, cung cấp các tools testing mạnh mẽ, cli tool tiện lợi.
-
Nhược điểm: scripting vẫn khá hạn chế và không được linh hoạt được như các framework js như Hardhat.
2021-nay: Foundry + ethers-rs
https://github.com/foundry-rs/foundry
https://github.com/gakonst/ethers-rs
Foundry ban đầu là một phiên bản viết lại của dapptool bằng Rust, hiện tại Foundry vẫn đang được viết tiếp để phát triển thêm các tính năng mới độc lập.
Các tool trong Foundry:
- Forge: Ethereum testing framework (like Truffle, Hardhat and Dapptools).
- Cast: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data.
- Anvil: local Ethereum node, akin to Ganache, Hardhat Network
Một điểm tuyệt vời nữa là Foundry cũng hoàn toàn tương thích với các project Hardhat. Có nghĩa là bạn viết bằng Hardhat, sau đó tương tác bằng Foundry vẫn okela.
ethers-rs
là phiên bản viết bằng Rust của ethers.js
, nếu ta viết client dapp bằng Rust thì đây sẽ là một thư viện không thể thiếu.
- Ưu điểm: kế thừa tất cả các ưu điểm của Dapptools, và cực kì nhanh.
- Nhược điểm: scripting vẫn khá hạn chế và không được linh hoạt được như các framework js như Hardhat.
Update 2022: Foundry giờ đây cung cấp solidity scripting “cực kì mạnh mẽ” với cheatcodes và fork testing giúp việc test trở nên vô cùng đơn giản, hiệu quả với đa dạng môi trường.
Lời bình
Nếu bạn không muốn cài đặt bất cứ thứ gì, hãy đến với Remix IDE, một môi trường phát triển đầy đủ, hoàn toàn trên web.
Nếu bạn đã quá quen thuộc với Hardhat, hãy cứ dùng nó. Hardhat vẫn là framework phổ biến nhất hiện nay. Và nó cũng dễ dùng.
Nếu bạn muốn một thứ gì đó mới, nhanh, mạnh, ngôn ngữ cool, thì hãy thử Foundry!
Bonus: