Anbi Lab đã phát hành "Nghiên cứu bảo mật hợp đồng khai thác thanh khoản YFII" và bốn hợp đồng liên quan không chứa lỗ hổng bảo mật nghiêm trọng
yfiifinance
2020-08-04 07:16
本文约3420字,阅读全文需要约14分钟
Hiện tại, mã hợp đồng YFII được chia tách trực tiếp từ Yearn Finance và những thay đổi nhỏ đã được thực hiện để hỗ trợ phân phối thường xuyên halving của Mã thông báo YFII.

YFII là một nhóm khai thác DeFi phi tập trung mới. Theo lời mời của các đối tác cộng đồng, Ambi Lab đã tiến hành một nghiên cứu bảo mật về hợp đồng thông minh YFII từ ngày 27 tháng 7 đến ngày 2 tháng 8 năm 2020.

Đối tượng phân tích là các hợp đồng sau:

  • YFII Pool 1: 0xb81D3cB2708530ea990a287142b82D058725C092

  • YFII Pool 2: 0xAFfcD3D45cEF58B1DfA773463824c6F6bB0Dc13a

  • YFII Token: 0xa1d0E215a23d7030842FC67cE582a6aFa3CCaB83

  • BPT Token: 0x16cAC1403377978644e78769Daa49d8f6B6CF565

tiêu đề phụ

YFII và YFI là gì

tiêu đề phụ

Hiện tại, mã hợp đồng YFII được chia tách trực tiếp từ Yearn Finance và những thay đổi nhỏ đã được thực hiện để hỗ trợ phân phối thường xuyên halving của Mã thông báo YFII.

Hiện tại, mã hợp đồng YFII được chia tách trực tiếp từ Yearn Finance và những thay đổi nhỏ đã được thực hiện để hỗ trợ phân phối thường xuyên halving của Mã thông báo YFII.

Bảng sau đây cho thấy mối quan hệ và địa chỉ tương ứng giữa hợp đồng liên quan đến YFII và hợp đồng YFI.

Mã thông báo YFI/YFII là hợp đồng Mã thông báo quản trị dự án và việc triển khai cả hai là nhất quán, cụ thể là Mã thông báo ERC-20 tiêu chuẩn với các chức năng quản trị đơn giản và đúc tiền.

BPT Token là hợp đồng Balancer Pool Token, là Token bằng chứng thanh khoản của nhà tạo lập thị trường và thực sự được cung cấp bởi thỏa thuận tạo lập thị trường tự động Balancer.BFactoryHợp đồng giao kết được tạo ra nên việc thực hiện của hai bên là hoàn toàn thống nhất. Mã hợp đồng trước đây được phát triển bởi Trail of Bits và Consensys Diligenceđã kiểm toán

Pool1 và Pool2 là các hợp đồng khai thác thanh khoản được sử dụng để phân phối mã thông báo quản trị. Mã của Pool1 và Pool2 được triển khai theo cùng một cách và cả hai đều được gọi là hợp đồng YearnRewards và những thay đổi của YFII so với YFI đều nằm trong hợp đồng này.

tiêu đề phụ

Phân tích ngắn gọn về hợp đồng cốt lõi YFII & YFI

Mã hợp đồng cốt lõi YearnRewards của khai thác thanh khoản YFII và YFI thực sự được lấy từ dự án SynthetixUnipoolkiểm toánkiểm toán

Toàn bộ quá trình khai thác thanh khoản dựa trên YearnRewards có thể được chia thành các bước sau:

  • Các địa chỉ có quyền RewardDistribution đặt số tiền thưởng bằng cách gọi trước hàm notifyRewardAmount() của hợp đồng YearnRewards và số lượng Mã thông báo YFI tương ứng sẽ được chuyển từ máy đào YFI sang hợp đồng YearnRewards.

  • Công cụ khai thác cung cấp tính thanh khoản (thường là gửi stablecoin) cho hợp đồng DeFi mục tiêu được chỉ định bởi hợp đồng YearnRewards (có thể là nhà sản xuất thị trường tự động DEX hoặc thỏa thuận cho vay) và nhận Mã thông báo bằng chứng thanh khoản tương ứng (thường còn được gọi là Mã thông báo nhóm), Mã thông báo có thể được sử dụng để trao đổi tài sản và kiếm thu nhập từ lãi hoặc phí.

  • Những người khai thác gửi Mã thông báo nhóm mà họ nhận được vào hợp đồng YearnRewards bằng cách gọi hàm stake() và hợp đồng sẽ tự động tính toán phần thưởng của người khai thác dựa trên thời hạn Cổ phần và quy mô tiền gửi của người khai thác trong tổng kích thước của nhóm.

  • Những người khai thác có thể rút phần thưởng đến hạn của họ (Mã thông báo YFI) và Mã thông báo nhóm đã gửi trước đó bất cứ lúc nào.

tiêu đề phụ

một số khám phá

Như đã đề cập trước đó, những thay đổi của YFII so với YFI, những thay đổi về mã tổng thể là tương đối nhỏ.

Hai chức năng trang trí mới được thêm vào để hạn chế ba chức năng chức năng chính của stake() rút tiền() và getReward().

Một dòng mã mới được thêm vào hàm notifyRewardAmount(), được sử dụng để kiểm soát trực tiếp hợp đồng Mã thông báo YFI đúc (tăng) số lượng Mã thông báo được chỉ định cho hợp đồng YearnRewards hiện tại trong khi thông báo và sử dụng chúng làm phần thưởng để phân phối. Do đó, hợp đồng Pool1 và Pool2 phải là công cụ đúc của hợp đồng Mã thông báo YFII.

Điều này làm cho YFII và YFI hơi khác nhau về logic của chi tiết phân phối Token. Việc phân phối phần thưởng cho từng giai đoạn của YFI yêu cầu một địa chỉ cụ thể chịu trách nhiệm thiết lập số lượng và chuyển nó vào Token. YFII, ngoài việc thực hiện thao tác notifyRewardAmount() trước khi bắt đầu giai đoạn đầu tiên, sẽ tự động giảm một nửa sản lượng theo định kỳ khi người dùng gọi.

Ngoài ra, trong quá trình thảo luận chi tiết về mã với các nhà phát triển cộng đồng Madao và gaojin, Madao đã đề cập rằng việc thực hiện tự động giảm một nửa sản xuất Token phụ thuộc vào việc thực thi chức năng checkhalve(), nhưng thực tế phụ thuộc vào sự tương tác giữa người dùng và hợp đồng và thời gian thực hiện không thể được kiểm soát chính xác. Vào cuối chu kỳ trước, sẽ có một sự khác biệt về thời gian nhất định giữa thời gian giảm một nửa và thời gian dự kiến, và thời gian giảm một nửa hợp đồng thực tế có thể muộn hơn so với thời gian dự kiến.

Cụ thể, khi hợp đồng tính toán phần thưởng, nó sẽ tính đến chênh lệch thời gian bổ sung giữa hai tuần, dẫn đến giá trị phần thưởng được tính cho mỗi người dùng cao hơn một chút so với giá trị dự kiến, dẫn đến một lỗi nhất định. Hơn nữa, chúng tôi nhận thấy rằng chừng nào còn tồn tại lỗi, thì về mặt lý thuyết, người cuối cùng rút phần thưởng từ Pool có thể không rút được bình thường. Điều này là do Mint YFII Token được chuyển sang hợp đồng Pool cùng lúc với việc giảm một nửa hợp đồng. Do sự tồn tại của lỗi trước đó, thu nhập sổ sách của người dùng trong hợp đồng cao hơn số lượng Token thực tế do Mint phát hành. Phương pháp tính toán lỗi là chênh lệch thời gian Delta giữa thời gian kết thúc của mỗi khoảng thời gian và thời gian thực tế của lần chia đôi tiếp theo, nhân với tỷ lệ phần thưởng sau khi chia đôi.

tiêu đề phụ

Xử lý quyền quản trị viên YFII

Tất cả các Token giống YFI đều có giao diện đúc (Mint) và các địa chỉ có quyền đúc có thể phát hành các Token bổ sung. Ngoài ra còn có một quản trị viên Quản trị cho YFI Token, người có quyền thêm và xóa Minter. Lý tưởng nhất là các địa chỉ có thẩm quyền đặc biệt này phải là hợp đồng nhiều chữ ký hoặc các hợp đồng chuyên biệt khác.

Ngoài ra, hợp đồng YearnRewards có địa chỉ cấp phép phần thưởng, được sử dụng để gọi hàm notifyRewardAmount() để đặt số tiền thưởng. Hợp đồng YearnRewards cũng có địa chỉ ủy quyền của chủ sở hữu, địa chỉ này được sử dụng để đặt địa chỉ phân phối phần thưởng.

Hiện tại, thông lệ của dự án YFII là đặt quản trị viên Quản trị mã thông báo YFII và phân phối phần thưởng của Pool1 và Pool2 thành địa chỉ 0. Quyền của quản trị viên để hủy hồ sơ có thể được tìm thấy tạihttps://burn.yfii.finance/. Sau khi kiểm tra, việc hủy bỏ quyền quản trị viên là đúng sự thật. Hiện tại, chỉ có hai địa chỉ hợp đồng của Pool1 và Pool2 có quyền đúc Mã thông báo YFII, đây là quyền cần thiết để đạt được giảm một nửa định kỳ và không thể bị lạm dụng trong tương lai.

Điều đặc biệt đáng nói là trong quá trình triển khai mã YFI Token ban đầu, không có sự kiện nào được thêm vào chức năng đặc quyền addMinter(), điều này khiến người dùng thông thường không thể kiểm tra xem hợp đồng có bao nhiêu máy đào. Hãy cẩn thận, điều này rất dễ khiến các dự án YFI khác nhau ẩn nấp ở cửa sau.

Sau khi kiểm tra, hợp đồng YFII Token có tổng cộngChỉ có hai bản ghi addMinter()tóm tắt

tóm tắt

YFI nói chung là một thử nghiệm đổi mới DeFi rất có ý nghĩa. Thông qua Yearn Finance, chúng tôi đã thấy việc phân phối mã thông báo quản trị phi tập trung, điều này đã kích thích hoàn toàn sự nhiệt tình khai thác và quản trị của cộng đồng DeFi.

Lời khuyên an toàn

Lời khuyên an toàn

Với sự phổ biến của các sản phẩm khai thác thanh khoản và DeFi, nhiều hợp đồng thông minh DeFi mới đã xuất hiện trên thị trường và rủi ro kết hợp đã tăng lên đáng kể. Ambi Labs nhắc nhở người dùng chú ý đến sự an toàn trước tiên khi tương tác với bất kỳ dự án DeFi nào, nhận biết tên miền và địa chỉ hợp đồng, xem xét cẩn thận tất cả các hoạt động liên quan đến tiền và cố gắng không tương tác với các hợp đồng thông minh không rõ nguồn gốc. Ngoài ra, chúng ta nên chú ý nhiều hơn đến tính bảo mật của chính các sản phẩm DeFi và hợp đồng thông minh, phân tích cơ sở giá trị và các nguồn rủi ro, không tin tưởng một cách mù quáng vào APR và chỉ đầu tư số tiền có thể chịu lỗ.

Đặc biệt, hãy nhớ sử dụng các manh mối được cung cấp trong bài viết này để kiểm tra quyền quản trị viên của các dự án giống YFI tham gia.

yfiifinance
作者文库