BTC
ETH
HTX
SOL
BNB
Xem thị trường
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

xDeFi Labs: Tất cả các khía cạnh của Ethereum Gas

星球君的朋友们
Odaily资深作者
Bài viết này có khoảng 2979 từ, đọc toàn bộ bài viết mất khoảng 5 phút
xDeFi&Labs tối ưu hóa gas như thế nào?
Tóm tắt AI
xDeFi&Labs tối ưu hóa gas như thế nào?

tiêu đề phụ

1. Logic tiêu thụ của Ethereum blockchain Gas: GasPrice và GasLimit

Trên hệ thống chuỗi khối ETH, bất kể loại hoạt động nào được thực hiện, gasPrice và gaslimit là mức giá mà bạn phải trả và phải hiểu khi vận hành.

Đơn vị của gasPrice thường là gwei, vì 1wei = 10^-18 eth, là đơn vị gốc nhỏ nhất của eth. 1gwei = 10^9wei = 10^-9eth, là giá trị thu được bởi tất cả những người muốn hoạt động trên eth mỗi khi họ cạnh tranh các tài nguyên giao dịch được đóng gói trong một khối: nghĩa là khối có giá cao nhất sẽ đóng gói nó, nếu không nó không thể được đóng gói.

Khối của Eth đã trải qua hai lần "đầy đủ khối" tạm thời trong cơn sốt 1CO vào cuối năm 2017 và sự cố 312 vào đầu năm 2020, tức là khi người dùng sử dụng nó, họ cần phải cạnh tranh để có được không gian khối. nhiều người dùng và báo giá quá thấp để đóng gói. Giao dịch không thành công sau một khoảng thời gian nhất định, nhưng do việc sử dụng rộng rãi ERC-20USDT vào năm 2019 và việc sử dụng rộng rãi Uniswap vào năm 2020, nó đã dẫn đến các khối đầy đủ thông thường (tổng mức tiêu thụ gas gasLimit vượt quá 12.500.000 mà một khối có thể chịu được.

tiêu đề phụ

2. Cách đảm bảo Gas thấp hơn ở mức tính toán lập trình Solidity

Phong cách viết của Solidity hơi giống javascript và mức độ thực thi cụ thể phụ thuộc vào việc biên dịch thành các opcode có thể chạy được EVM. Bất kể nó được biên dịch thành loại opcode nào để tiết kiệm xăng, ít nhất là ở cấp độ Solidity, bạn có thể tìm thấy cơ hội để tiết kiệm xăng nhiều nhất có thể.

Tư duy tính toán số nguyên

Solidity không có số dấu phẩy động được xác định bởi IEEE-754: kiểu tính toán số dấu phẩy động này ban đầu hướng dẫn thiết kế thanh ghi CPU. Để đạt được sự đồng thuận về "phổ quát, xác định và nhất quán", loại dữ liệu phổ biến nhất là uint256. Và sử dụng số nguyên để mô phỏng số thập phân trước, sau đó mô phỏng hành vi của số dấu phẩy động, nhưng nhìn chung, lập trình viên cần phải có tư duy về số nguyên.

Giả sử bạn có một thư viện toán học tiện lợi, bạn sẽ thấy rằng a.div(2) thực tế không nhanh bằng a>>1, bởi vì phép nhân và chia của thư viện toán học vẫn được thực hiện bằng cách gọi các phép toán ít tốn kém hơn như vậy.

May mắn thay, những người tiên phong phát triển eth (như openzeppelin, gnosis, balancer, v.v.) đã sản xuất một số thư viện toán học trong quá trình triển khai dự án để người khác sử dụng, các phép toán này bao gồm bốn phép toán số học, khai thác lũy thừa và phép toán logarit lũy thừa .

Đây là phần giới thiệu tốt về các lược đồ tính toán ngoài bốn phép toánliên kết web

B tránh các vòng lặp trừ khi bạn biết độ phức tạp tính toán của mình

Khi điều kiện vòng lặp mở, chẳng hạn như điều kiện thứ hai của vòng lặp for trống hoặc khi câu lệnh while phán đoán điều kiện là đúng, rất dễ không thể ước tính mức tiêu thụ gas của phép tính trong thân vòng lặp, điều này sẽ khiến mức tiêu thụ gas không thể chấp nhận được hoặc Metamask (và các công cụ khác) không thể ước tính chính xác gasLimit, khiến lệnh gọi hợp đồng eth không thành công.

Ngoài ra, nếu các nhà khoa học đặc biệt quen thuộc với việc viết hợp đồng vững chắc có thể dành một chút công sức cho toán học, thì nên tham khảo "Hacker's Delight", không chỉ hữu ích cho việc hiểu thư viện toán học mà còn giúp đơn giản hóa khí mã. sự tiêu thụ. Ví dụ, trong quá trình phát triển máy tính, chúng ta đã thấy ứng dụng của thuật toán Thor 3 vào phương pháp của Newton:liên kết webMặc dù thuật toán này vẫn chỉ hợp lệ cho các số dấu phẩy động tiêu chuẩn IEEE-754, nhưng về mặt vững chắc, luôn có những người tối ưu hóa thuật toán chuyên nghiệp giảm các phép tính bạo lực thành các thuật toán có tổn thất rất nhỏ, chẳng hạn nhưtiêu đề phụ

dựa theo

dựa theoliên kết webĐưa ra các manh mối, Sách vàng Ethereum đưa ra bảng phân tích phí chi tiết.

Bài viết này đề cập đến sự khác biệt về chi phí giữa Gtxdatazero và Gtxdatanonzero. Logic của sự khác biệt cốt lõi này là: càng nhiều số 00 trong địa chỉ eth (lưu ý rằng các số 0 xuất hiện theo cặp), bất kể địa chỉ đó là hợp đồng hay người bình thường chuyển tiền. -địa chỉ ra sẽ tiết kiệm ít nhiều 0,4-5% phí gas.

Ngoài ra, tham khảo các mã hoạt động tương ứng với các hoạt động khác nhau trên EVM, bạn cũng có thể tránh tối đa các hoạt động sử dụng nhiều gas và sử dụng các hoạt động sử dụng ít gas để xây dựng mã solidity.

Đối với những người bình thường, rất dễ dàng để có một địa chỉ bắt đầu bằng 0x00 và một trong những công cụ thiết thực nhất làliên kết webtiêu đề phụ

4. Gia đình GasToken: một hoạt động thực tế khác

Đây là một trường hợp thực tế xây dựng khí hoàn trả để tiêu hủy.

GST và GST2 được một số nhà nghiên cứu thiết lập dựa trên đặc điểm của Gsclear và Gssuicide hoàn trả phí gas, trong đó GST dựa trên việc giải phóng dung lượng lưu trữ (hoàn trả của Gsclear) và GST2 dựa trên việc giải phóng hợp đồng (Gssuicide). rằng GST2 Thế hệ thứ hai sẽ hợp lý hơn, nhưng trên thực tế, trong quá trình phát triển công nghệ, GST2 có thể không phải lúc nào cũng có lợi thế hơn GST: nếu việc tối ưu hóa lưu trữ trạng thái xuất hiện trong lộ trình kỹ thuật ETH 1.x, thì GST cũng có thể mở ra một sự hồi sinh.

1inch CHI gastoken dựa trên GST2 và số 00 có trong địa chỉ mã thông báo được tăng lên, nhưng do hoạt động thương mại tích cực hơn của 1inch nên hoạt động này đang dần được biết đến rộng rãi.

tiêu đề phụ

5. Cách xDeFi&Labs tối ưu hóa gas

Xem xét chi phí kiểm toán hàng triệu đô la của giải pháp zksnarks layer2, nhóm xDeFi&Labs tạm thời chọn xác minh logic sản phẩm trước.

Trong quá trình tối ưu hóa sản phẩm, giao dịch của người dùng đã liên quan đến logic của a**b, trong đó b là một số thập phân được đại diện bởi uint256 và đảm nhận vai trò của một số thập phân ngụy trang. Trong quá trình thiết kế sản phẩm tài chính, thiết kế số dư của nhóm có thể nhanh chóng giảm giá trị của b từ bất kỳ số thập phân nào trong khoảng từ [1,49] xuống {1,2,3,4,6,8,12} Chờ một tập hợp của số nguyên dương để tiết kiệm hàng nghìn đến hàng chục nghìn chi phí gas. Khi gọi thư viện toán học, phần phân số của thư viện toán học Balancer bpow không thực sự được gọi mà chỉ có bpowi được gọi.

Trong quá trình phát hành mã thông báo của XDEX, xDeFi&Labs đã đảm bảo tính cạnh tranh của địa chỉ 0x00 của riêng mình theo phương pháp được đề cập trong Chương 3 (theo tính toán rằng 12 số không là giải pháp khả thi duy nhất hiện nay, vượt quá 11 số không được sử dụng bởi TokenLon, ETH2. 8 số không của địa chỉ thanh toán 0 và 6 số không của GST2, nhất quán với 12 số không của 1inch CHI).

Trong quá trình thiết kế xHalfLife, để xác nhận người dùng có thể rút bao nhiêu thu nhập từ tài khoản trao quyền, phiên bản gốc sử dụng phương pháp tính toán vòng tròn và số chu kỳ liên quan đến sự khác biệt về chiều cao khối trong các trường hợp cực đoan. Chúng ta có thể biết rằng một tuần bao gồm hàng nghìn đến hàng chục nghìn chênh lệch chiều cao khối, nếu mỗi thân vòng lặp tiêu thụ hàng trăm gas, thì khi người dùng rút tiền, một hợp đồng sẽ tiêu tốn hàng chục triệu gas Rõ ràng là không thể chấp nhận được (có thể là hàng trăm lần chi phí chuyển nhượng). Do đó, từ ba chức năng của fundStream, BalanceOf và Withdraw, vòng lặp bị loại bỏ và phương pháp đơn giản hóa **b được tiếp tục. Tại thời điểm này, chúng tôi sử dụng Keep clear logic và để lại phương thức đơn giản hóa mã vòng lặp trong các bình luận mã github. Khi gọi, xem xét trải nghiệm của người dùng (thu nhập của Sushi nhảy qua từng khối và phiên bản đầu tiên của mã xHalfLife có thể không làm được điều này), khả năng b là số thập phân được bảo lưu.

DeFi
ETH
đầu tư
Chào mừng tham gia cộng đồng chính thức của Odaily
Nhóm đăng ký:
https://t.me/Odaily_News
Nhóm trò chuyện:
https://t.me/Odaily_GoldenApe
Tài khoản chính thức:
https://twitter.com/OdailyChina
Mục lục bài viết
Tải ứng dụng Odaily Nhật Báo Hành Tinh
Hãy để một số người hiểu Web3.0 trước
IOS
Android