Hàm dispatcher Solidity là một cây mà:
- Các nút nội bộ thực hiện phân tách nhị phân.
- Các nút lá chứa tối đa 4 bộ chọn hàm, được kiểm tra theo cách tuyến tính.
Mẹo 1: bytecode của hàm `fallback` được tạo ra hai lần trong bytecode. Để giảm kích thước bytecode, hãy bọc logic fallback trong một hàm nội bộ.
Mẹo 2: nếu bạn có một hàm được sử dụng rất thường xuyên, hãy tạo một bí danh với bộ chọn hàm `0x00000000`, điều này làm cho nó trở thành lựa chọn rẻ nhất để tra cứu.
- Một trong những thách thức trong việc thiết kế một thư viện sẽ là thuật toán nào nên được sử dụng. Tìm hiểu lý do tại sao bản đồ của C++ là một cây, unordered_map chỉ xuất hiện 15 năm sau.
- Các thư viện với generics phụ thuộc rất nhiều vào khả năng của trình biên dịch để trừu tượng hóa không tốn chi phí với sự điều chỉnh tối thiểu. Trong Solady, đôi khi chúng tôi thực hiện những điều rất khó chịu để điều chỉnh trình biên dịch. Lý do viết Rust và C++ cảm thấy tốt là vì trình biên dịch đủ thông minh để không cần tất cả những điều chỉnh này. Vì vậy, Solidity cốt lõi sẽ cần một trình tối ưu hóa thực sự tốt để vượt qua những điều ngọt ngào về cú pháp của generics.
- Cẩn thận với một tình huống có thể xảy ra giữa Python 2 và 3. Hy vọng những bài học trong cốt lõi có thể và sẽ được truyền lại cho phiên bản cổ điển.
- Trong một thế giới của Solidity cổ điển và cốt lõi, Solady dự định duy trì và phát triển cho cả hai. Các ngôn ngữ với một thư viện tiêu chuẩn điên rồ, vẫn có các thư viện bên thứ ba (ví dụ: Eigen), cho kiến thức cụ thể theo miền.
Giới thiệu "Con đường đến với Core Solidity", một loạt bài viết trên blog mà qua đó chúng tôi sẽ chia sẻ về hướng đi của chúng tôi với ngôn ngữ này.
Hãy cùng xem qua tổng quan!