Chào cả nhà!

Ethereum Gas là gì?

  1. Ethereum Gas là một yếu tố để ước tính hiệu suất tính toán của các giao dịch đang chạy hoặc hợp đồng thông minh trong mạng Ethereum.
  2. Phương pháp này liên quan đến việc áp dụng Kilowatt (kW) để ước tính điện của ngôi nhà; điện được sử dụng bởi mọi người không được ước tính bằng $ và xu mà tốt nhất là hơn kWH hoặc Kilowatts mỗi giờ.
  3. Giá không được yêu cầu bởi ví hoặc các nhà cung cấp hỗ trợ khác; thay vào đó, nó được trao bởi các thợ mỏ để khai thác các khối hoạt động và bảo vệ chuỗi khối Ethereum. Giá này được đưa ra bởi người dùng cho các thợ mỏ và được trừ vào tổng giá trị giao dịch của họ.

Ethereum Gas – là huyết mạch của hệ sinh thái Ethereum , không có cách nào khác để đặt điều đó. Gas là một đơn vị đo lường số lượng nỗ lực tính toán mà nó sẽ mất để thực hiện các hoạt động nhất định.

Mỗi hoạt động tham gia vào Ethereum, có thể là một giao dịch đơn giản hoặc hợp đồng thông minh hoặc thậm chí là một ICO đều cần một lượng Gas đốt. Gas là những gì được sử dụng để tính toán số tiền lệ phí cần phải trả cho mạng để thực hiện một hoạt động.

Trong hướng dẫn này, chúng ta sẽ hiểu cách thức hoạt động của Gas. Nhưng trước khi chúng ta làm như vậy, có một số khái niệm mà chúng ta phải học. Vì vậy, không có gì khó chịu, chúng ta hãy bắt đầu đi sâu vào Ethereum Gas.

Ethereum Gas là gì: Hướng dẫn từng bước

Bitcoin, Ethereum và sự xuất hiện của hợp đồng thông minh

Bitcoin được tạo ra bởi vì mọi người đều hỏi những câu hỏi giống nhau.

  • Liệu có thể tạo ra một hình thức tiền có thể được chuyển giữa hai người mà không cần bất kỳ người trung gian nào không?
  • Liệu có thể tạo ra một loại tiền phi tập trung có thể hoạt động trên một thứ gì đó như Blockchain không?

Satoshi Nakamoto đã trả lời những câu hỏi này khi ông tạo ra Bitcoin. Cuối cùng chúng tôi đã có một hệ thống tiền tệ phi tập trung có thể chuyển tiền từ người này sang người khác.

Tuy nhiên, có một vấn đề với Bitcoin, đó là một vấn đề với tất cả các Blockchain thế hệ đầu tiên. Họ chỉ cho phép giao dịch tiền tệ, không có cách nào để thêm điều kiện vào các giao dịch đó.

Illuminati có thể gửi Yao Ming 5 BTC, nhưng anh ấy không thể áp đặt điều kiện cho các giao dịch đó. Ví dụ. Anh không thể nói với Yao Ming rằng anh ta sẽ chỉ nhận được tiền nếu anh ta thực hiện một số nhiệm vụ.

Những điều kiện này sẽ cần kịch bản cực kỳ phức tạp. Một cái gì đó được yêu cầu để làm cho quá trình liền mạch hơn.

Một vài thứ khác là một hợp đồng thông minh.

Hợp đồng thông minh là gì?

Hợp đồng thông minh giúp bạn trao đổi tiền, tài sản, cổ phiếu hoặc bất kỳ thứ gì có giá trị một cách minh bạch, không xung đột trong khi tránh các dịch vụ của người trung gian.

Ethereum của Vitalik Buterin dễ dàng trở thành người kiên định của thế hệ này. Họ đã cho thế giới thấy Blockchain có thể phát triển như thế nào từ một cơ chế thanh toán đơn giản đến một thứ gì đó có ý nghĩa và mạnh mẽ hơn nhiều.

 

Vậy, những hợp đồng thông minh này là gì và những gì là vấn đề lớn?

Hợp đồng thông minh là hợp đồng tự động. Chúng tự thực thi với các hướng dẫn cụ thể được viết bằng mã của nó được thực thi khi các điều kiện nhất định được thực hiện.

Bạn có thể tìm hiểu thêm về hợp đồng thông minh trong hướng dẫn chuyên sâu của chúng tôi ở đây.

Hợp đồng thông minh là cách mọi thứ được thực hiện trong hệ sinh thái Ethereum. Khi ai đó muốn thực hiện một nhiệm vụ cụ thể trong Ethereum, họ bắt đầu một hợp đồng thông minh với một hoặc nhiều người.

Hợp đồng thông minh là một loạt các hướng dẫn, được viết bằng ngôn ngữ lập trình Solidity, hoạt động trên cơ sở IFTTT logic, IF-THIS-THEN-THAT logic. Về cơ bản, nếu bộ hướng dẫn đầu tiên được thực hiện thì hãy thực hiện chức năng tiếp theo và sau đó là tiếp theo và tiếp tục lặp lại cho đến khi bạn đạt đến cuối hợp đồng.

Cách tốt nhất để hiểu điều đó là bằng cách tưởng tượng một máy bán hàng tự động. Mỗi và mọi bước bạn thực hiện như một trình kích hoạt cho bước tiếp theo để thực hiện chính nó. Nó giống như hiệu ứng Domino. Vì vậy, hãy kiểm tra các bước bạn sẽ thực hiện trong khi tương tác với máy bán hàng tự động:

  • Bước 1: Bạn cho máy bán hàng tự động một số tiền.
  • Bước 2: Bạn bấm vào nút tương ứng với mục bạn muốn.
  • Bước 3: Các mặt hàng đi ra và bạn thu thập nó.

Bây giờ hãy nhìn vào tất cả các bước và suy nghĩ về nó. Bất kỳ bước nào sẽ hoạt động nếu bước trước không được thực hiện? Mỗi và một trong những bước đó có liên quan trực tiếp đến bước trước đó. Có một yếu tố nữa để suy nghĩ, và nó là một phần không thể thiếu của hợp đồng thông minh. Bạn thấy, trong toàn bộ tương tác của bạn với máy bán hàng tự động, bạn (người yêu cầu) chỉ làm việc với máy (nhà cung cấp). Hoàn toàn không có bên thứ ba liên quan.

Vì vậy, bây giờ giao dịch này sẽ như thế nào nếu nó xảy ra trong mạng Ethereum?

Giả sử bạn vừa mua một thứ gì đó từ một máy bán hàng tự động trong mạng Ethereum, thì các bước sẽ như thế nào sau đó?

Bước 1: Bạn cung cấp cho máy bán hàng một số tiền và điều này được ghi lại bởi tất cả các nút trong mạng Ethereum và giao dịch được cập nhật vào sổ cái.

Bước 2: Bạn bấm vào nút tương ứng với mục bạn muốn và bản ghi của mục đó sẽ được cập nhật trong mạng Ethereum và sổ cái.

Bước 3: Mục này xuất hiện và bạn thu thập nó và điều này được ghi lại bởi tất cả các nút và sổ cái.

Mọi giao dịch bạn thực hiện thông qua các hợp đồng thông minh sẽ được mạng lưới ghi lại và cập nhật. Điều này làm nó giữ cho mọi người tham gia vào hợp đồng phải chịu trách nhiệm cho hành động của họ. Nó lấy đi ác ý của con người bằng cách làm cho mọi hành động được hiển thị cho toàn bộ mạng.

Máy ảo Ethereum là gì?

Trước khi chúng ta hiểu Máy ảo Ethereum (EVM) là gì, chúng ta phải hiểu tại sao lại cần một Máy ảo. Vì vậy, hãy quay trở lại hợp đồng thông minh.

Các tính chất mong muốn mà chúng ta muốn trong hợp đồng thông minh của chúng ta là gì?

Bất cứ điều gì chạy trên Blockchain đều cần phải bất biến và phải có khả năng chạy qua nhiều nút mà không ảnh hưởng đến tính toàn vẹn của nó. Do đó, chức năng hợp đồng thông minh cần có ba điều:

  • Tính quyết định.
  • Có thể kết thúc.
  • Bị cô lập.

Tính năng số 1: Tính quyết định

Một chương trình có tính xác định nếu nó cung cấp cùng một đầu ra cho một đầu vào nhất định mỗi lần. Ví dụ. Nếu 3 + 1 = 4 thì 3 + 1 sẽ LUÔN là 4 (giả sử cùng một cơ sở). Vì vậy, khi một chương trình cung cấp cùng một đầu ra cho cùng một bộ đầu vào trong các máy tính khác nhau, chương trình được gọi là xác định.

Có nhiều thời điểm khi một chương trình có thể hành động theo cách không xác định:

  • Gọi các hàm hệ thống không xác định: Khi lập trình viên gọi một hàm không xác định trong chương trình của họ.
  • Tài nguyên dữ liệu không xác định: Nếu một chương trình có được dữ liệu trong thời gian chạy và nguồn dữ liệu đó là không xác định thì chương trình sẽ trở nên không xác định. Ví dụ: Giả sử một chương trình có được 10 tìm kiếm google hàng đầu của một truy vấn cụ thể. Danh sách có thể tiếp tục thay đổi.
  • Cuộc gọi động: Khi một chương trình gọi chương trình thứ hai, nó được gọi là cuộc gọi động. Vì mục tiêu cuộc gọi chỉ được xác định trong khi thực hiện, nên về bản chất nó không mang tính quyết định.

Tính năng số 2: Có thể kết thúc

Trong logic toán học, chúng tôi có một lỗi gọi là vấn đề tạm dừng. Về cơ bản, nó nói rằng không có khả năng để biết liệu một chương trình nhất định có thể thực hiện chức năng của nó trong một giới hạn thời gian hay không. Năm 1936, Alan Turing đã suy luận, bằng cách sử dụng Bài toán đường chéo của Cantor, rằng không có cách nào để biết liệu một chương trình nhất định có thể kết thúc trong một giới hạn thời gian hay không.

Đây rõ ràng là một vấn đề với hợp đồng thông minh bởi vì, theo định nghĩa, hợp đồng phải có khả năng chấm dứt trong một thời hạn nhất định. Có một số biện pháp được thực hiện để đảm bảo rằng có một cách để bên ngoài giết chết các hợp đồng và không tham gia vào một vòng lặp vô tận sẽ làm cạn kiệt tài nguyên:

  • Tính không hoàn chỉnh của Turing: Một Blockchain Turing chưa hoàn chỉnh sẽ có chức năng hạn chế và không có khả năng thực hiện các bước nhảy và / hoặc vòng lặp. Do đó, họ không thể đi vào một vòng lặp vô tận.
  • Máy đo bước và phí: Một chương trình có thể chỉ cần theo dõi số bước mà nó đã thực hiện, tức là số lượng lệnh đã thực hiện, và sau đó chấm dứt khi một bước đếm cụ thể đã được thực hiện. Một phương pháp khác là đồng hồ tính phí. Ở đây các hợp đồng được thực hiện với một khoản phí trả trước. Mỗi lệnh thực hiện yêu cầu một khoản phí cụ thể. Nếu phí chi vượt quá phí trả trước thì hợp đồng bị chấm dứt.
  • Hẹn giờ: Ở đây một bộ định thời xác định trước được giữ. Nếu việc thực hiện hợp đồng vượt quá thời hạn thì nó bị hủy bỏ bên ngoài.

Tính năng số 3: Bị cô lập

Trong một Blockchain, bất kỳ ai và mọi người đều có thể tải lên một hợp đồng thông minh. Tuy nhiên, vì điều này, các hợp đồng có thể và vô tình có chứa virus và lỗi.

Nếu hợp đồng không bị cô lập, điều này có thể cản trở toàn bộ hệ thống. Do đó, điều quan trọng là một hợp đồng phải được cách ly trong hộp cát để cứu toàn bộ hệ sinh thái khỏi mọi tác động tiêu cực.

Bây giờ chúng ta đã thấy các tính năng này, điều quan trọng là phải biết cách chúng được thực thi. Thông thường, các hợp đồng thông minh được chạy bằng một trong hai hệ thống:

  • Máy ảo: Ethereum sử dụng điều này.
  • Docker: Fabric sử dụng điều này.

Hãy so sánh hai điều này và xác định cái nào tạo nên một hệ sinh thái tốt hơn. Để đơn giản, chúng tôi sẽ so sánh Ethereum (Máy ảo) với Fabric (Docker).

Vì vậy, như có thể thấy, Máy ảo cung cấp môi trường Xác định, có thể kết thúc và tách biệt tốt hơn cho các hợp đồng Thông minh. Tuy nhiên, Docker có một lợi thế khác biệt. Họ cung cấp tính linh hoạt của ngôn ngữ mã hóa trong khi trong Máy ảo (VM) như Ethereum, người ta cần học một ngôn ngữ hoàn toàn mới (tính vững chắc) để tạo ra các hợp đồng thông minh.

EVM là máy ảo trong đó tất cả các hợp đồng thông minh hoạt động trong Ethereum. Nó là một máy ảo 256-bit Turing Complete đơn giản nhưng mạnh mẽ. Turing Complete có nghĩa là được cung cấp tài nguyên và bộ nhớ, bất kỳ chương trình nào được thực thi trong EVM đều có thể giải quyết bất kỳ vấn đề nào.

Ethereum Gas là gì?

Như đã giải thích trong phần giới thiệu, Gas là một đơn vị đo lường lượng nỗ lực tính toán mà nó sẽ phải thực hiện để thực hiện các hoạt động nhất định.

Hầu hết các hợp đồng thông minh chạy trong EVM đều được mã hóa bằng Solidity (Ethereum đang có kế hoạch chuyển sang Viper từ Solidity trong tương lai).  Mỗi dòng mã trong Solidity đều yêu cầu một lượng Gas nhất định được thực thi.

Hình ảnh dưới đây đã được lấy từ Ethereum Yellownote và có thể được sử dụng để đạt được một ý tưởng sơ bộ về việc các hướng dẫn cụ thể tốn bao nhiêu tiền. Mỗi giao dịch cần ít nhất 21.000 Gas theo bảng này:

Ethereum Yellow Paper

Để hiểu rõ hơn về cách thức hoạt động của Gas trong Ethereum, hãy sử dụng một phép loại suy. Giả sử bạn đang đi trên một con đường. Trước khi bạn làm như vậy, bạn thực hiện các bước sau:

  • Bạn đến trạm xăng và chỉ định lượng xăng bạn muốn đổ vào xe.
  • Bạn nhận được số xăng đó đầy trong xe của bạn.
  • Bạn trả cho trạm xăng số tiền nhất định.

Bây giờ, hãy vẽ tương tự với Ethereum.

Lái xe là hoạt động mà bạn muốn thực hiện, giống như thực hiện chức năng của hợp đồng thông minh.

  • Trạm xăng là thợ mỏ của bạn.
  • Tiền mà bạn đã trả cho họ là phí khai thác.

Tất cả các hoạt động mà người dùng muốn thực hiện trong Ethereum phải cung cấp Gas cho các mục sau:

  • Để bao gồm dữ liệu của nó hay còn gọi là Gas nội tại.
  • Để bao gồm toàn bộ tính toán của nó.

Bây giờ chúng tôi đã trình bày những điều cơ bản, bạn có thể hỏi câu hỏi sau đây.

Tại sao chúng ta có hệ thống Gas này?

Câu trả lời rất đơn giản.

Giống như bất kỳ hệ thống ngang hàng chứng minh công việc nào, Ethereum phụ thuộc rất nhiều vào Hashrate của các thợ mỏ của họ. Càng nhiều thợ mỏ, càng nhiều Hashrate, hệ thống càng an toàn và nhanh chóng.

Để thu hút nhiều người khai thác vào hệ thống, họ cần làm cho hệ thống có lợi nhuận và lôi cuốn nhất có thể đối với các thợ mỏ. Trong Ethereum, có hai cách mà người khai thác có thể kiếm được tiền:

  • Bằng cách khai thác khối và nhận phần thưởng khối.
  • Bằng cách trở thành những kẻ độc tài tạm thời của các khối khai thác của họ.

Hãy khám phá điểm thứ hai.

Các thợ mỏ có trách nhiệm đặt các giao dịch bên trong các khối của họ. Để làm như vậy, họ phải sử dụng sức mạnh tính toán của mình để xác nhận hợp đồng thông minh. Hệ thống Gas cho phép họ tính một khoản phí nhất định để làm như vậy.

Phí này được gọi là phí của thợ mỏ và nó giúp khuyến khích họ đủ để tham gia tích cực vào hệ sinh thái.

Vì vậy, họ có thể tính phí bao nhiêu? Trước khi chúng ta có thể tính toán, hãy hiểu cách chúng ta đo Gas.

Gas được đo đơn giản bằng đơn vị Gas. Một giao dịch được gửi đến mạng Ethereum sẽ tiêu tốn một lượng Gas riêng biệt (ví dụ 100 Gas) tùy thuộc vào số lượng lệnh EVM cần được thực hiện.

Vậy, làm thế nào để chúng ta chuyển đổi Gas thành Ether?

Không có giá chuyển đổi cố định. Tùy thuộc vào người gửi giao dịch để chỉ định bất kỳ giá xăng nào họ muốn. Mặt khác, tùy thuộc vào người khai thác để xác minh bất kỳ giao dịch nào họ thích (thường là các giao dịch chỉ định giá xăng cao nhất ). Giá Gas trung bình thường ở mức khoảng 20 Gwei (hoặc 0,00000002 ETH), nhưng có thể tăng trong thời gian lưu lượng mạng cao do có nhiều giao dịch cạnh tranh được đưa vào khối tiếp theo.

Biểu đồ sau đây cho bạn thấy biểu đồ giá Gas Ethereum trung bình.

Trước khi chúng ta đi xa hơn, điều quan trọng là phải biết khái niệm giới hạn Gas.

Giới hạn Gas Ethereum là gì?

Để thực hiện một hoạt động trong Ethereum, người gửi giao dịch phải chỉ định giới hạn Gas trước khi họ gửi nó đến mạng. Giới hạn Gas là lượng Gas tối đa mà người gửi sẵn sàng trả cho giao dịch này.

Khi chỉ định giới hạn Gas, các điểm sau phải được xem xét:

 
  • Các hoạt động khác nhau sẽ có chi phí Gas khác nhau (như đã được hiển thị trước đó).
  • Các thợ mỏ sẽ ngừng hoạt động ở thời điểm Gas hết.
  • Nếu có bất kỳ Gas dư, nó sẽ được hoàn trả ngay lập tức cho máy phát điện hoạt động.

Chúng ta hãy xem điều này trong hoạt động trong một kịch bản giả định.

Giả sử, chúng tôi đang thêm hai biến và để hợp đồng phải thực hiện các hành động sau:

  • Lưu trữ 10 trong một biến. Giả sử hoạt động này tốn 45 Gas.
  • Thêm hai biến, giả sử điều này tốn 10 Gas.
  • Lưu trữ kết quả mà một lần nữa chi phí 45 Gas.

Giả sử người gửi chỉ định giới hạn Gas là 120 Gas.

Tổng số Gas được sử dụng bởi người khai thác để chạy tính toán là (45 + 10 + 45) = 100 Gas.

Lệ phí còn nợ với người khai thác, giả sử 1 Gas có giá 20 Gwei, là (100 * 20 Gwei) = 0,000002 ETH.

Bây giờ, còn lại bao nhiêu Gas?

120 – 100 = 20 Gas.

20 Gas chưa sử dụng được trả lại cho người gửi (20 * 20 Gwei) = 0,000000004 ETH.

Vì vậy, đã nói rằng, có hai kịch bản mà người ta phải xem xét:

  • Giới hạn Gas quy định là quá thấp.
  • Giới hạn Gas quy định là quá cao.

Kịch bản # 1: Giới hạn Gas quá thấp

Tuy nhiên, nếu một hoạt động hết xăng, thì nó được hoàn nguyên về trạng thái ban đầu như không có gì thực sự xảy ra, tuy nhiên, trình tạo hoạt động vẫn phải trả cho người khai thác, phí cho chi phí tính toán của họ và hoạt động được thêm vào Blockchain (ngay cả khi nó chưa được thực hiện) .

Quay trở lại với sự tương tự của chuyến đi đường bộ của chúng tôi, nếu bạn không đổ đầy xăng trong xe, thì bạn sẽ không thể đến đích, nhưng ngay cả khi đó bạn đã trả tiền xăng cho nhiên liệu phải không?

Hãy xem cách nó hoạt động trong hợp đồng thông minh giả định của chúng tôi. Các bước là:

  • Lưu trữ 10 trong một biến. Giả sử hoạt động này tốn 45 Gas.
  • Thêm hai biến, giả sử điều này tốn 10 Gas.
  • Lưu trữ kết quả mà một lần nữa chi phí 45 Gas.

Tuy nhiên, lần này, người gửi đặt giới hạn Gas là 90 Gas.

Bây giờ, chúng tôi biết rằng Gas sẽ được yêu cầu để thực hiện giao dịch là 100 Gas, nhưng chúng tôi chỉ quy định giới hạn 90 Gas.

Trong trường hợp này, người khai thác sẽ thực hiện tính toán 90 Gas và sau đó tính phí người gửi cho 90 Gas, hóa ra là (90 * 20 Gwei) = 0,0000018 ETH.

Ngoài ra, hợp đồng trở lại trạng thái ban đầu và giao dịch được bao gồm trong Blockchain.


Kịch bản # 2: Giới hạn Gas quá cao

Vậy, nếu chúng ta đặt giới hạn Gas quá cao thì sao?

Điều đó sẽ có ý nghĩa để làm đúng? Sau tất cả, bất cứ điều gì còn lại sẽ được hoàn trả cho người gửi phải không?

Nghe có vẻ hay trên giấy nhưng thực tế nó không hoạt động tốt như vậy.

Công cụ khai thác bị giới hạn bởi giới hạn khối Gas, mà chúng tôi cho là 6.700.000 Gas. Một giao dịch cơ bản (chuyển ETH đơn giản) có ít nhất yêu cầu Gas là 21.000 Gas. Công cụ khai thác chỉ có thể bao gồm các giao dịch cộng nhỏ hơn hoặc bằng giới hạn khối Gas.

Giả sử có một giao dịch A (thực hiện chuyển ETH đơn giản) và có giới hạn Gas xác định là 42.000 và hai giao dịch B và C (cũng là chuyển ETH đơn giản) có giới hạn Gas quy định là 21.000.

Điều này sẽ có ý nghĩa hơn đối với một người khai thác để đặt trong khối của họ?

  • Họ sẽ đưa vào giao dịch A và hoàn trả một lượng lớn Gas chưa sử dụng?
  • Hoặc họ sẽ đặt giao dịch B và C và hoàn trả ít để không có gì trở lại?

Điểm thứ hai có ý nghĩa hơn đối với họ về kinh tế phải không?

Đây là chính xác lý do tại sao có một giới hạn Gas cồng kềnh không phải là một cách hợp lý để đi. Sẽ hợp lý hơn khi đặt giới hạn Gas chỉ cao hơn một chút so với lượng Gas cần thiết cho giao dịch của bạn.

Sau đây là biểu đồ giới hạn Gas trung bình.

Gas Ethereum cao và thấp so với phí cao và thấp

Bạn nên rõ ràng cho đến nay rằng Gas và Ether không phải là những thứ giống nhau. Gas là lượng năng lượng tính toán cần thiết trong khi Ether là loại tiền được sử dụng để thanh toán cho loại Gas đó.

Bây giờ với kiến ​​thức về tất cả mọi thứ chúng tôi có được cho đến nay, chúng ta hãy đi qua các kịch bản Gas và phí nhất định.

Nếu một hoạt động có Gas THẤP, thì những người khai thác thậm chí sẽ không nhận nó vì nó không đủ Gas để hoàn thành việc tính toán.

Nếu một hoạt động có mức phí THẤP, thì nó có thể có đủ Gas để trang trải cho nó nhưng vẫn có thể, các công ty khai thác sẽ không khai các bit để nhận nó bởi vì một hoạt động với mức phí thấp không hấp dẫn về mặt kinh tế đối với họ.

Nếu một hoạt động có Gas CAO, thì điều đó có nghĩa là hoạt động đó bị cồng kềnh với giới hạn Gas cao và do đó các thợ mỏ sẽ không nhận nó.

Nếu một hoạt động có phí CAO, thì những người khai thác biết rằng họ sẽ kiếm được nhiều tiền từ nó và sẽ nhận nó ngay lập tức.

Giá Gas hiện được khuyến nghị cho các loại tốc độ giao dịch khác nhau, theo EthGasstation là:

Điều gì xảy ra trong các kịch bản hoàn tiền Gas Ethereum?

Trong sự vững chắc, có hai lệnh đảm bảo rằng bạn sẽ nhận được một số tiền hoàn lại Gas.

  • SUICIDE: Điều này về cơ bản giết chết hợp đồng thông minh. Làm như vậy sẽ giúp bạn lấy lại 24000 Gas.
  • SSTORE: Xóa bộ nhớ, giúp bạn lấy lại 15.000.

Vì vậy, nếu hợp đồng của bạn đang sử dụng hết 14.000 Gas và xóa một bộ lưu trữ thì bạn nên lấy lại (15000-14000) 1000 Gas hoàn lại cho bạn phải không?

Nó không đơn giản.

Nếu đó là trường hợp, sau đó các thợ mỏ sẽ mất tất cả động lực. Rốt cuộc, những người khai thác không nên trả tiền cho bạn để tính toán đúng không?

Để tránh những tình huống như thế này, một điều kiện đã được đưa vào.

Khoản hoàn trả đã được tích lũy không thể vượt quá một nửa lượng Gas sử dụng hết trong quá trình tính toán.

Hãy lấy một ví dụ để làm rõ điều này.

Giả sử chúng ta có một hợp đồng thông minh sử dụng tới 14.000 Gas.

Giới hạn Gas mà chúng tôi đã thiết lập là 20.000 Gas.

Hợp đồng thông minh cũng bao gồm lệnh SSTORAGE.

Vì vậy, bao nhiêu Gas sẽ tạo ra hợp đồng trở lại tính toán bài?

Đầu tiên, họ sẽ lấy lại (20.000-14.000) = 6.000 đơn vị Gas chưa sử dụng.

Bây giờ, lệnh SSTORAGE cũng đã được sử dụng, vì vậy về mặt lý thuyết họ cũng nên lấy lại 15.000 Gas.

Tuy nhiên, lượng Gas đã được sử dụng trong hợp đồng là 14.000 và kể từ 15.000> 14.000 / 2, REFUND được tạo ra sẽ là 14.000 / 2 = 7000 Gas.

Vì vậy, tổng số Gas mà người tạo đang nhận lại cuối cùng là 6000 + 7000 = 13.000.

Hãy lấy một ví dụ khác.

Giả sử lần này hợp đồng sử dụng tới 70.000 Gas và nó bao gồm chức năng SUICIDE.

Chức năng SUICIDE sẽ cung cấp cho bạn 24.000 Gas trở lại <70.000 / 2.

Trong tình huống này, tiền hoàn lại Gas sẽ là 24.000 + Gas chưa sử dụng.

Sự chỉ trích của Ethereum Gas. Có hợp lý không?

Mặc dù hệ thống Gas đã được khen ngợi vì trình bày một cơ chế hoạt động trơn tru, khuyến Gasch các công ty khai thác khá tích cực, nhưng gần đây nó đã bị chỉ trích vì quá đắt đối với các nhà phát triển và người tạo hợp đồng thông minh.

Về điều này, Daniel Ryan đã thực hiện một số nghiên cứu thú vị trong bài viết về Hackernoon của mình .

Hãy xem xét kịch bản sau đây:

Khi hai số được thêm một triệu lần vào Ethereum, nó có giá ~ 26,55$  phí.

Danny Ryan đã so sánh nó với một hệ thống AWS tiêu chuẩn. Ông nói rằng ông có thể thêm hai số một triệu lần bằng cách sử dụng Python trong 0,04 giây, với tốc độ 0,0059$ mỗi giờ của Amazon EC2 có giá 0,000000066$.

Điều này có nghĩa là tính toán trong Ethereum đắt hơn 400 triệu lần!

Dựa trên nghiên cứu của ông, đây là kết luận mà ông đưa ra:

Để công bằng, cộng hai số lại với nhau 1 triệu lần là một chút khó khăn. Một hợp đồng được viết tốt sẽ có khả năng chuyển sự phức tạp tính toán như vậy ra khỏi chuỗi và giải quyết nhiều hơn với việc cập nhật trạng thái trong hợp đồng. Lưu trữ một lượng lớn dữ liệu vào Blockchain cũng không phải là một nhiệm vụ thông thường. Tùy thuộc vào tác vụ, người dùng có thể sẽ lưu trữ một tham chiếu mật mã (hàm băm) của chuỗi dữ liệu và giữ phần còn lại của chuỗi dữ liệu.

Điều đó nói rằng, chúng tôi là nhà phát triển cần phải nhận thức được các chi phí này và thiết kế các ứng dụng phù hợp. Chúng ta cần tìm sự cân bằng giữa độ phức tạp trên chuỗi và ngoài chuỗi, trong khi vẫn tận dụng các khả năng phi tập trung của Blockchain.

Cảm ơn các bạn. Hãy cho chúng tôi một lượt thích hoặc chia sẻ nó với bạn bè của bạn.

 

Xem thêm: