Gas — "nhiên liệu" của Ethereum DApps (ứng dụng phi tập trung trên nền tảng Ethereum)
Ethereum là tên của một loại Blockchain, còn Ether (ETH) là nhiên liệu cho mạng đó. Khi bạn gửi ETH, tạo hợp đồng thông minh, biên dịch lệnh… hay tất cả điều gì mà tương tác với Blockchain, bạn đều phải trả phí. Khoản phí đó được tính bằng Gas/Gas Price và Gwei.
- Trong Solidity, người dùng của bạn phải trả tiền mỗi khi họ thực hiện một chức năng trên DApp bằng một loại tiền gọi là gas . Người dùng mua gas với Ether (tiền tệ trên Ethereum), vì vậy người dùng của bạn phải chi tiêu ETH để thực hiện các chức năng trên DApp của bạn.
- Cần bao nhiêu gas để thực hiện một chức năng phụ thuộc vào sự phức tạp của logic chức năng đó. Mỗi hoạt động cá nhân có chi phí gas dựa trên khoảng bao nhiêu tài nguyên máy tính sẽ được yêu cầu để thực hiện các hoạt động đó. Tổng chi phí gas của chức năng của bạn là tổng chi phí gas của tất cả các hoạt động cá nhân.
- Bởi vì chạy chức năng chi phí tiền thật cho người dùng của bạn, tối ưu hóa mã là quan trọng hơn nhiều trong Ethereum hơn trong các ngôn ngữ lập trình khác. Nếu mã của bạn là cẩu thả, người dùng của bạn sẽ phải trả phí bảo hiểm để thực hiện các chức năng của bạn – và điều này có thể làm tăng hàng triệu đô la phí không cần thiết qua hàng ngàn người dùng.
Tại sao lại cần "nhiên liệu" gas?
- Ethereum giống như một máy tính lớn, chậm, nhưng cực kỳ an toàn. Khi bạn thực hiện một chức năng, mỗi nút duy nhất trên mạng cần phải chạy cùng chức năng đó để xác minh kết xuất của nó – hàng ngàn nút xác minh mọi chức năng thực hiện là điều làm cho Ethereum được phân quyền, và dữ liệu của nó không thay đổi và kiểm soát được.
- Những người sáng tạo của Ethereum muốn đảm bảo rằng ai đó không thể làm tắc nghẽn mạng bằng một vòng lặp vô hạn, hoặc tất cả các tài nguyên mạng với tính toán thực sự mạnh mẽ. Vì vậy, họ làm như vậy giao dịch không phải là miễn phí, và người dùng phải trả cho thời gian tính toán cũng như lưu trữ.
Gas limit - gas used và gas price là gì?
Hệ thống gas cũng không khác lắm so với việc đo lượng điện dân dụng. Điểm khác biệt với thị trường năng lượng thực chính là người tạo giao dịch sẽ quyết định giá gas (thợ mỏ có thể chấp nhận giá này hoặc không). Bạn có thể theo dõi giá gas biến động tại đây: https://etherscan.io/charts/gasprice, hoặc bạn có thể xem ở link này: http://ethgasstation.info/ hoặc tham khảo ở đây
Đương nhiên, các khối của Ethereum cũng có kích cỡ nhất định - vì vậy người dùng cũng phải trả một khoản tiền cho khối tiếp theo cũng giống như Bitcoin.
Các thợ đào Bitcoin ưu tiên các giao dịch với phí đào được trả cao nhất. Các thợ đào của Ethereum cũng có quyền bỏ những giao dịch có giới hạn giá gas quá thấp.
Gas Limit?
Ga Limit được gọi là giới hạn năng lượng vì đó là số tiền tối đa của đơn vị Gas mà bạn sẵn sàng chi cho giao dịch. Điều này tránh được tình huống có một lỗi ở nơi nào đó trong hợp đồng, và bạn gửi 1 ETH mà không có nơi nhận. Nếu bạn không đủ Gas Limit thì khi gửi giao dịch sẽ gặp lỗi “Out of Gas” và giao dịch không được thực hiện.
Gas Price là gì ?
Nếu bạn muốn tiết kiệm hơn cho một giao dịch, hãy giảm số tiền bạn trả thông qua Gas Price. Con số Gas Price này quyết định tốc độ giao dịch của bạn diễn ra nhanh hay chậm.
Với tình trạng mạng ổn định:
- Gas Price – 40 GWEI luôn luôn giúp bạn có độ ưu tiên cao nhất
- Gas Price – 20 GWEI giúp giao dịch của bạn có thể vào được khối tiếp theo
- Gas Price – 2 GWEI chỉ có thể đưa giao dịch của bạn mất đến vài phút
Giá gas (gas price) cho mỗi giao dịch hay hợp đồng được thiết lập để xử lý bản chất Turing Complete của Ethereum và EVM của nó (tức là mã Ethereum Virtual Machine)- đây là một trong những ý tưởng được đưa ra để hạn chế vòng lặp vô hạn. Ví dụ như 10 Szabo, tương đương với 0.00001 Ether hay 1 Gas có thể thực hiện một dòng mã hay vài câu lệnh. Nếu không có đủ Ether trong tài khoản để hiển thị một cuộc giao dịch hay một tin nhắn thì nó được coi là không hợp lệ. Ý tưởng này sẽ phần nào ngăn chặn được những cuộc tấn công từ vòng lặp vô hạn, khuyến khích tính hiệu quả trong chuỗi mã - và bắt những kẻ tấn công phải trả cho tài nguyên mà mình sử dụng.
Câu lệnh càng phức tạp thì bạn càng phải trả nhiều gas (và Ether) hơn. Ví dụ người A muốn gửi người B 1 đơn vị Ether, thì tổng cộng số tiền người A phải trả sẽ là 1.00001 Ether. Tuy nhiên nếu A muốn tạo một hợp đồng với B dựa vào giá tương lai của Ether, sẽ phải thực hiện nhiều dòng mã hơn và tiêu tốn nhiều năng lượng trên mạng Ether hơn- chính vì vậy A sẽ phải trả nhiều hơn 1 Gas khi làm giao dịch.
Một số bước tính toán có mức phí cao hơn vì chúng có phí tính toán đắt đỏ hơn và nó sẽ làm tăng lượng dữ liệu phải lưu trữ trong hệ thống. Dưới đây là danh sách các hoạt động trong Ethereum Virtual Code và giá của nó (tính theo Gas hay Ether)
Hoạt động | Giá gas | Mô tả |
step | 1 | Số tiền mặc định để trả cho một chu kỳ |
stop | 0 | Không phải trả cho hoạt động SUICIDE |
sha3 | 20 | Trả cho hoạt động SHA3 |
sload | 20 | Trả cho hoạt động SLOAD |
sstore | 100 | Trả cho hoạt động SSTORE (có khi gấp đôi hoặn được miễn) |
balance | 20 | Trả cho hoạt động CALL |
create | 100 | Trả cho hoạt động CREATE |
call | 20 | Trả cho hoạt động CALL |
memory | 1 | Trả cho mỗi từ thêm vào khi mở rộng bộ nhớ |
txdata | 5 | Trả cho mỗi byte dữ liệu hoặc mã cho một giao dịch |
transaction | 500 | Trả cho mỗi giao dịch |
Giá gas giới hạn được ấn định trong thời điểm hiện tại để phục vụ cho Ethereum chạy ổn định nhưng sẽ được thả nổi theo mức cầu, và tổng lượng gas ở mỗi khối sẽ tăng dần để khuyến khích sự ổn định của mạng Ethereum.
Tổng quan phí giao dịch
Bạn sẽ phải thanh toán cho thợ mỏ bất kể giao dịch của bạn thành công hay thất bại.
Hãy xem phí TX (Gas Limit * Gas Price) trong ETH và USD khi bạn tìm kiếm thông tin giao dịch trên etherscan.io. Đây không phải là mức phí TX mà MyEtherWallet thu của bạn, chính thợ mỏ sẽ là người chúng vào các khối, và đảm bảo blockchain hoạt động.
Để tính phí Gas của một giao dịch thường có 2 thông số:
- Gas Limit
- Gas Price
Phí Gas = Gas Limit * Gas Price
Thông thường, nếu ai đó chỉ nói “Gas”, họ đang nói về “Gas Limit”.
Tóm tắt
- Phí Gas dùng để chỉ mức phí bạn phải thanh toán cho thợ mỏ sau mỗi lần tương tác với Blockchain
- Gwei là tốc độ chuyển, Gwei cao giúp giao dịch được thợ mỏ ưu tiên xử lý trước
- Phí Gas = Gas Limit * Gas Price