, October 02, 2022

0 kết quả được tìm thấy

Tìm hiểu toàn tập về Gas Fee và các đơn vị tính trong Ethereum


  •   11 min reads
Tìm hiểu toàn tập về Gas Fee và các đơn vị tính trong Ethereum

Nếu mọi người đã từng tìm hiểu về Blockchain, tò mò về cách giao dịch và hoạt động của Bitcoin, hoặc tốt hơn là đã từng tham gia vào thế giới DeFi (decentralized finance - tài chính phi tập trung), trading coin hoặc lập trình Smart Contract thì mọi người chắc hẳn cũng đã từng tự hỏi các câu hỏi như là: "Ethereum gas là gì?", "Gwei là gì?", "Tại sao mỗi transaction (hoặc action) đều phải tốn thêm phí gas để thực hiện?".

Well, nếu ai có cùng những câu hỏi trên thì bạn không một mình đâu. Lúc mới tìm hiểu về Blockchain thì mình cũng thắc mắc tương tự như vậy.

Do đó, bài viết này mình sẽ giải thích chi tiết với mọi người về Ethereum Gas Fee và tại sao nó lại xuất hiện để mình phải tốn thêm ít tiền cho mỗi giao dịch của chúng ta trên Ethereum network.

Ngoài ra, mình sẽ cùng nhau tìm hiểu thêm về các đơn vị tính có trong Ethereum ecosystem.

1. Sơ lược về bản chất của Blockchain (Blockchain Fundamentals):

Trước khi mình đào sâu về Ethereum Gas Fee và Gwei thì chúng ta cùng nhau tìm hiểu sơ lược về cách hoạt động của công nghệ Blockchain mà cụ thể ở đây chúng ta sẽ nói về Bitcoin.

Bitcoin được biết đến là một trong những network (mạng lưới) Blockchain lớn nhất và mạnh nhất trên thế giới ở thời điểm hiện tại. Mạng lưới đó được vận hành dưới sự tham gia của hàng trăm nghìn máy tính trên toàn thế giới. Các "đơn vị" tham gia thường được gọi là các Node (dân gian gọi là các máy đào 😁) giúp hỗ trợ processing và mining các transaction. Các công việc phải làm đó là sử dụng các hàm tính toán chuyên biệt để xác thực transaction và thêm chúng vào các block, block sau liên kết với block trước đúng hệt như concept của Blockchain.  Và sau mỗi lần "hỗ trợ" thành công, các Node này nhận được phần thưởng tương ứng với công sức mà mình đã bỏ ra.

2. Sơ lược về Ethereum & Smart Contract:

Công nghệ cũng như concept, cách hoạt động của Blockchain rất tuyệt vời nhưng nếu nó chỉ phục vụ cho việc record các giao dịch của Bitcoin thôi thì khá là uổng phí và khó tiếp cận đến đại đa số. Vài năm sau khi Bitcoin được giới thiệu rộng rãi trên toàn thế giới, Ethereum Blockchain được ra đời nhằm mục đích đưa công nghệ Blockchain lên một tầm cao mới. Đó là việc chúng ta có thể áp dụng công nghệ Blockchain len lỏi vào các ngành nghề hoặc các nghiệp vụ trong cuộc sống hằng ngày thông qua một thứ có tên gọi là Smart Contract.

Smart Contract (dân gian gọi là Hợp đồng thông minh 😁) được ra đời để loại bỏ các bên trung gian, bên thứ ba không cần thiết và thực thi các điều kiện, điều khoản trong hợp đồng một cách tự động như đã đề ra. Lấy ví dụ trong trường hợp anh A và B thực hiện một giao dịch buôn bán đất. Theo cách giao dịch truyền thống thông thường, anh B - người mua đất sẽ chuyển đúng khoản tiền cần phải trả cho miếng đất của anh A như thoả thuận thông qua ngân hàng (bên thứ ba). Sau khi nhận đủ tiền mong muốn, anh A sẽ chuyển giao quyền sở hữu đất cho anh B thông qua cơ quan pháp lý (bên thứ ba) để xác thực giao dịch thành công.

Một quy trình buôn bán đơn giản nhưng trong thực tế chúng ta phải đi qua nhiều khâu và chưa kể đến các rủi ro xảy ra trong quá trình thực hiện giao dịch hoặc sự chậm trễ thời gian khi thực hiện xác thực ở các bên trung gian. Nhưng nếu giao dịch được thực hiện trên Smart Contract, chúng ta có thể tự động hoá toàn bộ các quy trình trên. Hoặc thậm chí chúng ta có thể ràng buộc thêm nhiều điều kiện trong thoả thuận nếu như anh B không trả đủ tiền đúng hạn thì sẽ tự động huỷ cọc và back tiền về. Ngoài ra, điều đặc biệt của Smart Contract đó là khi được deploy thì sẽ không thể nào thay đổi hay phá huỷ, hoặc bị xoá. Bên cạnh đó, vì nó chạy "online" cho nên tránh được các trường hợp bị mất hoặc thất lạc.

3. Ethereum Gas là gì? Tại sao Ethereum cần Gas:

Để chạy được Smart Contract cũng như thực hiện các chức năng được lập trình sẵn bên trong nó đòi hỏi các computational power (công suất tính toán) chạy trên Ethereum ecosystem phải thực thi. Cái "cost" để chạy được các computational power đó người ta gọi là Gas.

Do đó, mọi người có thể hình dung Gas như là một khoản phí nhất định phải trả cho các miner (máy đào - cơ chế hoạt động của Blockchain) để thực thi các transaction trên Ethereum. Ngoài ra, việc thêm phí Gas cho mỗi transaction giúp cho Ethereum network an toàn hơn, tránh việc bị spam một lượng lớn các giao dịch do cố tình tấn công.

Ví dụ, bạn muốn chuyển một ít Ether, hoặc token từ address này sang address khác? Bạn cần phải trả thêm 1 khoản phí để làm Gas. Bạn muốn mint 1 vài NFT hoặc swap đồng ETH sang đồng khác? Đúng vậy, bạn cần phải có Gas để thực hiện.

Ngoài ra, phí Gas còn được dùng để deploy cũng như execute (thực thi) từng dòng code trong Smart Contract. Smart Contract của chúng ta càng phức tạp bao nhiêu thì phí gas tốn tương ứng bấy nhiêu.

(Lưu ý: Nếu bạn không thực hiện bất kỳ transaction nào, chỉ thực hiện read only thôi thì không cần phải tốn phí Gas).

4. Gas được tính toán như thế nào:

Phí Gas được tính theo đơn vị là Gwei (giga wei). Wei là đơn vị nhỏ nhất trong Ether. 1 Ether tương ứng với 10^18 wei (18 con số 0). Từ đó có thể suy ra được 1 Ether = 1,000,000,000 Gwei. Dưới đây là bảng chi tiết các đơn vị trong Ethereum.

Vậy lý do tại sao mọi người lại than phiền khá nhiều về phí Gas trong Ethereum? Có 2 nhân tố chính ảnh hưởng đến phí gas của bất kỳ transaction nào bao gồm:

  • Giá gas tại thời điểm thực hiện transaction.
  • Số lượng gas để thực hiện transaction.

Không chỉ riêng đồng Ethereum mà hầu như giá của các token khác cũng biến đổi rất lớn theo từng phút (hoặc thậm chí từng giây). Nếu bạn nào trading token sẽ hiểu chuyện đó (thấy giá đang thơm chuyển qua tab đặt lệnh mua thì vù token đó đóng cột xanh lên hoặc cột đỏ xuống). Vì vậy nếu không may thực hiện transaction trong lúc đồng ETH đang bay cao thì mình phải chịu thêm 1 khoản phí và ngược lại nếu giảm thì mình được lợi tí (thật ra cũng không xê xít nhiêu cả 😄).

Ngoài ra, nếu bạn để ý kỹ thì có lúc cùng 1 transaction ví dụ như chuyển 0.01 ETH sang địa chỉ ví khác, có khi transaction này cần 6 gwei thôi nhưng có khi lại cần đến 2000 gwei. bạn có thắc mắc tại sao có sự khác biệt lớn đến như vậy không, sao nó thay đổi nhiều thế 🤣? Câu trả lời là nó còn phụ thuộc mạng lưới Ethereum network tại thời điểm đó có "bận" hay không? Nếu trong cùng 1 thời điểm mà có quá nhiều giao dịch cùng 1 lúc dẫn đến quá tải (cái này bạn có thể trải nghiệm lúc Bitcoin đang down giá lớn, không những Ethereum đâu mà các mạng khác cũng bị kẹt tương tự) cho nên số lượng gas cần sử dụng phải tăng lên.

Nhân tố thứ 2 là số lượng gas để thực hiện transaction bất kỳ. Số lượng tối thiểu cho 1 giao dịch đơn giản trong Ethereum network, ví dụ như chuyển ETH qua lại giữa 2 account, là 21000. Transaction càng phức tạp thì đòi hỏi phải tốn nhiều hơn ví dụ như staking hoặc mua 1 token nào đó.  

Gas limit chính xác là số lượng gas mà bạn sẵn sàng trả để thực hiện transaction đó. bạn có thể tăng/giảm theo ý muốn của mình. Nếu như số lượng gas được sử dụng ít hơn con số bạn chỉ định cho nó, số lượng gas còn lại sẽ tự động trả về cho bạn. Vậy trong trường hợp gas limit quá ít thì sao? Bạn sẽ không thể thực thi được transaction hoặc transaction của bạn sẽ bị fail và bạn sẽ mất luôn phần gas đó. Do đó sẽ rất nguy hiểm nếu bạn cố thực hiện transaction trong lúc network đang quá tải hoặc giá đang biến động rất nhanh (ví dụ trường hợp influencer nào đó vừa "xui" bạn mua token nào đó làm giá token được đẩy lên rất nhanh).

Để hiểu rõ hơn về lý thuyết trên, mình sẽ bắt tay vào làm 1 ví dụ đơn giản đó là chuyển Ether qua lại giữa các Account trong ví. Và nếu bạn là người mới, chưa biết cách chuyển như thế nào thì bạn có thể tham khảo chi tiết từng bước ở link dưới đây, còn trong bài viết này mình sẽ làm nhanh đến phần chính thôi.

Chuyển Ether qua lại giữa các Account thông qua MetaMask
Ở các bài viết trước, mình đã cùng nhau tạo ví MetaMask và nhận free Ether trên các trang Faucet rồi thì ở bài viết này em sẽ hướng dẫn anh chị thực hiện transaction chuyển Ether qua lại giữa các Account trong ví.

Mình sẽ chuyển 0.1 Ether từ Account 1 sang Account 2 trong ví, khi điền xong số Ether cần chuyển rồi nhấn Next bạn sẽ thấy giao diện MetaMask trông như vầy:

Nếu bạn để ý trên giao diện của chúng ta có thêm phần gas fee, mình nhấn vào nút "Chỉnh sửa". Trong thời điểm mình đang viết bài thì Ethereum network đang "busy" luôn cho nên mình sẽ thấy cái banner vàng vàng xuất hiện 🤣.

Tiếp theo, mình nhấn vào "Tuỳ chọn nâng cao" và tăng gas limit, gas fee lên để tăng tốc cái transaction hiện tại như hình dưới rồi nhấn "Lưu".

Và khi mình quay lại giao diện tổng bạn sẽ thấy thông tin Gas fee đã có sự thay đổi.

Để mình giải thích ý nghĩa của con số hiện tại cho bạn, thực ra chúng ta có công thức như sau:

Gas units (limit) * Gas price per unit (in gwei) = Gas fee

Mình sẽ kiểm tra lại công thức bằng cách check lại các con số hồi nãy mình điền bao gồm:

  • Gas limit: 34000.
  • Gas price: 2.45
  • Total = 34000 * 2.45 = 73.500 Gwei = 0,0000735 ETH (chính xác 🥰).

Và cuối cùng, bạn để ý lại tổng số tiền để thực hiện transaction này thì sẽ phát hiện là cao hơn một tí so với con số 0.1 Ether mà ban đầu chúng ta định chuyển, con số tổng đã bao gồm thêm phần gas fee để thực hiện. Do đó, khi bạn thực hiện bất kỳ transaction nào thì lưu ý minh nhớ tính toán luôn cả lượng gas fee phát sinh thêm nhé!

Tóm lại, sau bài viết này mình đã giải thích cho bạn hiểu rõ được Gas Fee trong Ethereum là gì, tại sao phải cần nó và các đơn vị tính trong Ethereum Ecosystem. Ngoài ra, bạn đã hiểu rõ được các thông số xuất hiện trong giao diện MetaMask của mình cũng như biết cách config lại các thông số của gas fee sao cho hợp lý với bạn.

Bài viết liên quan

Tìm hiểu kiểu dữ liệu Boolean trong Solidity

Trong bài viết này, mình sẽ cùng nhau đi tìm hiểu kiểu dữ liệu Boolean trong Solidity thông qua các demo cơ bản nhé!...

Tìm hiểu kiểu dữ liệu Boolean trong Solidity
Tìm hiểu kiểu dữ liệu (Unsigned) Integer trong Solidity

Trong bài viết này, mình sẽ cùng nhau đi tìm hiểu kiểu dữ liệu (Unsigned) Integer trong Solidity thông qua các demo cơ bản nhé!...

Tìm hiểu kiểu dữ liệu (Unsigned) Integer trong Solidity
Sự khác biệt giữa Blockchain vs Cryptocurrency (Tiền điện tử)

Blockchain và tiền điện tử là hai thuật ngữ thường được sử dụng để thay thế cho nhau. Tuy nhiên, sẽ có sự khác biệt lớn giữa hai điều này. Tiền điện tử là loại tiền kỹ thuật số sử dụng blockchain làm sổ cái để lưu trữ hồ sơ của các giao dịch tiền điện tử....

Sự khác biệt giữa Blockchain vs Cryptocurrency (Tiền điện tử)
13 projects giúp bạn trở thành master với Web3 và Blockchain - Từ cơ bản đến nâng cao

Sau đây là 13 projects giúp bạn xây dựng để nâng cấp kỹ năng Web3 và Blockchain cho dù bạn là người mới bắt đầu hay đã lập trình trước đó....

13 projects giúp bạn trở thành master với Web3 và Blockchain - Từ cơ bản đến nâng cao
Làm sao để trở thành Blockchain Developer?

Dể trở thành Blockchain Developer, thì việc biết tương tác với smart contract là chưa đủ, còn rất nhiều công việc khác mà một Blockchain Dev cần phải đảm nhận. Vậy những công việc khác đó là gì?...

Làm sao để trở thành Blockchain Developer?
You've successfully subscribed to 200Lab Blog
Great! Next, complete checkout for full access to 200Lab Blog
Xin chào mừng bạn đã quay trở lại
OK! Tài khoản của bạn đã kích hoạt thành công.
Success! Your billing info is updated.
Billing info update failed.
Your link has expired.