Cơ chế tính phí là một tính năng quan trọng của blockchain. Những người bảo trì mạng như người xác nhận có tài nguyên hữu hạn, vì vậy điều quan trọng là phải tính phí cho các tài nguyên khan hiếm theo cách phản ánh được chi phí của mạng. Phí cũng tạo ra động lực cho những người tham gia mạng, chẳng hạn như người dùng, nhà phát triển ứng dụng và người xác thực.
Trong loạt bài này, chúng ta sẽ khám phá cơ chế tính phí hiện tại của Solana, chính thức hóa không gian thiết kế cho cơ chế tính phí và phân tích một số thay đổi được đề xuất đối với cơ chế tính phí của Solana.
Phần này là phần đầu tiên trong loạt bài. Ở đây chúng tôi giải thích cách tính phí của Solana hiện nay, tập trung vào phí dựa trên giao dịch.
Đây là những định nghĩa dành riêng cho Solana cần có để hiểu cơ chế tính phí.
Chữ ký: ít nhất một và thường có chính xác một chữ ký cho mỗi giao dịch.
Lamport: đơn vị nguyên tử nhỏ nhất của SOL. 1 SOL bằng một tỷ (10^9) lamport.
Đơn vị tính toán (CU): một đơn vị tính toán, theo lệnh Solana-BPF, nhằm ước tính chi phí để thực hiện lệnh. Tương tự như các đơn vị gas trên Ethereum.
CU được sử dụng: số lượng đơn vị tính toán được sử dụng để thực hiện một giao dịch. Chỉ được biết sau khi thực hiện.
CU được yêu cầu: được chỉ định bởi giao dịch; nếu giao dịch vượt quá ngân sách điện toán này trong quá trình thực thi thì quá trình thực thi sẽ tạm dừng và giao dịch không thành công. CU tối đa được yêu cầu (và sử dụng) cho mỗi giao dịch là 1.400.000 CU.
Tài khoản: một phần trạng thái duy nhất trên chuỗi khối Solana.
Trình lập lịch biểu: cơ chế xây dựng khối liên tục, được bao gồm theo mặc định trong ứng dụng khách Solana do Solana Labs xây dựng.
Ngày nay, giao dịch Solana bao gồm hai khoản phí: phí cơ bản và phí ưu tiên.
Phí cơ bản được cố định cho mỗi chữ ký ở mức 5000 lamport (0,000005 SOL, 0,0003 USD ở mức 60 USD/SOL) cho mỗi chữ ký; phần lớn các giao dịch Solana có một chữ ký.
Phí ưu tiên tùy chọn được chỉ định trong giao dịch và được tính bằng microlamport trên mỗi CU được yêu cầu. Lưu ý rằng đây không phải là mỗi CU được sử dụng, vì CU được sử dụng không được biết cho đến khi giao dịch được thực hiện. Các giao dịch có mức phí ưu tiên cao hơn sẽ được người lập lịch trình ưu tiên không xác định. Cơ chế cụ thể được mô tả trong Vòng đời của Giao dịch Solana.
Phí được ghi nợ từ người nộp phí khi bắt đầu thực hiện giao dịch. Nếu người trả tiền không thể trả khoản phí bắt buộc, việc thực hiện sẽ bị bỏ qua, giao dịch được coi là không hợp lệ và không được bao gồm.
Đối với cả phí cơ bản và phí ưu tiên, 50% được người dẫn đầu giữ lại như một động lực để đưa các giao dịch vào khối và 50% sẽ bị đốt cháy.
Trong giao dịch ví dụ này, giao dịch yêu cầu 600.000 đơn vị điện toán và đặt mức phí ưu tiên là 2500 microlamport cho mỗi CU được yêu cầu. Vì giao dịch có một chữ ký nên tổng phí cho giao dịch là 5000 lamports + 600.000 CU được yêu cầu * 2500 microlamports / CU được yêu cầu = 6500 lamports, hoặc 0,0000065 SOL.
Solana còn tính thêm một khoản phí để tạo ra trạng thái mới gọi là miễn tiền thuê nhà (thời hạn cũ). Chi phí miễn tiền thuê hiện tại là 6,96 SOL mỗi MB. Khi tạo tài khoản mới, phí sẽ được gán cho tài khoản; khi tài khoản bị xóa, phí miễn tiền thuê tài khoản có thể được thu hồi.
Vì phí cơ sở không nhạy cảm với CU được sử dụng hoặc CU được yêu cầu nên không có động cơ nào về phí cơ sở để tối ưu hóa việc sử dụng điện toán cũng như không yêu cầu CU gần với số lượng CU được sử dụng thực tế. Trong thực tế, nhiều giao dịch trên Solana yêu cầu nhiều CU hơn mức được sử dụng. Điều này tạo ra sự thiếu hiệu quả trong bộ lập lịch.
Trong ví dụ giao dịch trên, giao dịch yêu cầu 600.000 CU nhưng sử dụng ít hơn 250.000.
Mặc dù phí ưu tiên bao gồm động cơ giảm số CU được yêu cầu và do đó giảm số CU được sử dụng, nhưng động cơ này hầu như yếu và chỉ có hiệu lực trong thời gian tắc nghẽn. Một sửa đổi đơn giản là mở rộng phí cơ bản để yêu cầu một khoản phí cho mỗi CU được yêu cầu. Điều này sẽ khuyến khích các nhà phát triển và người gửi giao dịch giảm mức sử dụng điện toán của họ và chỉ yêu cầu các tài nguyên cần thiết.
Một cơ chế có tính khuyến khích tương thích nếu tất cả những người tham gia cơ chế đạt được kết quả tốt nhất bằng cách hành động theo sở thích thực sự của họ. Trong bối cảnh cơ chế tính phí, điều này có nghĩa đại khái là người xác thực sẽ tối đa hóa phí bằng cách chạy thuật toán xây dựng khối mặc định và người gửi giao dịch sẽ tối đa hóa phúc lợi bằng cách gửi các giao dịch với phí ưu tiên theo mức độ họ sẵn sàng chi trả thực sự.
Cơ chế tính phí của Solana không tương thích với những người xác thực và người gửi giao dịch ngày nay. Như đã mô tả ở trên, 50% phí giao dịch được lãnh đạo giữ và 50% bị đốt cháy. Bởi vì không phải tất cả phí đều thuộc về người lãnh đạo, điều này tạo ra động cơ khuyến khích người gửi giao dịch thông đồng với người lãnh đạo: thay vì chỉ định phí ưu tiên để được ưu tiên, thay vào đó, người gửi có thể tạo một thỏa thuận phụ với người lãnh đạo để thanh toán ưu tiên cước ngoài mạng, cắt giảm chi phí mà vẫn được ưu tiên.
Về mặt lý thuyết, những người xác thực chạy cơ chế như vậy sẽ nhận được nhiều phí hơn và do đó có thể mang lại phần thưởng cao hơn cho những người đặt cược được ủy quyền của họ, tạo ra một lực lượng tập trung.
Bên cạnh việc tích hợp trực tiếp theo chiều dọc, cách chính mà chúng ta thấy giao dịch phụ này trên thị trường hiện nay là thông qua đấu giá Jito. Trình xác thực chạy Jito-Solana (một bản sửa đổi cho ứng dụng khách của Solana Labs) phá vỡ cơ chế xây dựng khối liên tục, chạy đấu giá không gian khối trong nửa đầu của vị trí của họ.
Chúng tôi chưa quan sát thấy các giao dịch phụ như vậy khác trên thị trường hiện nay. Điều này là do:
Không giống như hầu hết các blockchain khác, Solana yêu cầu người gửi giao dịch chỉ định phần trạng thái nào được yêu cầu để thực hiện giao dịch. Điều này mở ra khả năng thực hiện giao dịch song song và thị trường phí địa phương, trong đó các phần khác nhau của trạng thái có mức phí khác nhau dựa trên mức độ tranh chấp của từng phần cụ thể. Điểm truy cập trạng thái cục bộ không cần tăng sự tranh chấp hoặc phí trên toàn bộ chuỗi khối.
Một quan niệm sai lầm phổ biến về Solana là nó có thị trường phí địa phương ngày nay. Mặc dù trường hợp giao dịch trả phí ưu tiên cao hơn có nhiều khả năng được đưa vào khối cao hơn và trạng thái tranh chấp đó có thể yêu cầu mức độ ưu tiên cao hơn, nhưng hành vi này không mang tính quyết định và là kết quả của việc triển khai mặc định của Solana. thuật toán lập lịch. Chúng ta khám phá điều này nhiều hơn trong Vòng đời của Giao dịch Solana.
Đặc biệt, hành vi này không được thực thi bằng sự đồng thuận và thứ tự xác định theo mức phí ưu tiên không được đảm bảo, bằng sự đồng thuận hoặc bằng cách triển khai bộ lập lịch. Việc xây dựng khối liên tục và truyền khối của Solana ngăn cản thứ tự xác định, trừ khi có những thay đổi lớn (ví dụ: thứ tự xác định và thực thi không đồng bộ) được triển khai.
Phí cơ bản được thực thi đồng thuận, có thể dự đoán được đối với quyền truy cập trạng thái, dựa trên tranh chấp lịch sử, có thể cải thiện hiệu quả và UX để truy cập trạng thái có tính cạnh tranh cao. Điều này sẽ làm tăng chi phí gửi thư rác, đồng thời khuyến khích người gửi giao dịch khóa số lượng trạng thái tối thiểu mà họ thực sự yêu cầu. Nó sẽ không giải quyết được nguyên nhân cốt lõi của thư rác, xuất phát từ việc xây dựng khối liên tục (vì vậy độ trễ rất quan trọng) và hiện tượng giật. Chúng ta sẽ khám phá thiết kế này sau trong loạt bài này.
Bởi vì các giao dịch chủ yếu được sắp xếp theo thời điểm chúng đến tay người đứng đầu (người lập lịch) và thứ tự này chịu cả sự biến động và biến động mạng do việc triển khai bộ lập lịch song song, nên sẽ có động cơ để gửi thư rác các giao dịch khi người gửi muốn đưa một giao dịch đó vào càng nhanh càng tốt. khả thi. Các giao dịch như vậy mang lại tác động tiêu cực bên ngoài trên mạng dưới hình thức gửi thư rác trên chuỗi (tính đến tháng 1 năm 2023, 58% khả năng tính toán trên chuỗi của Solana được sử dụng để hoàn nguyên các giao dịch) và gửi thư rác đến tay người dẫn đầu.
Từ phòng thí nghiệm Jito
Trong phần này, chúng tôi đã mô tả cách hoạt động của cơ chế tính phí của Solana ngày nay và ý nghĩa của nó đối với mạng. Chúng tôi đã gợi ý một số đặc tính mà cơ chế tính phí lý tưởng sẽ đáp ứng, chẳng hạn như gợi ý chính xác về người lập lịch trình (yêu cầu CU), khả năng tương thích khuyến khích và thị trường phí địa phương thực sự. Trong phần tiếp theo, chúng tôi sẽ xác định chủ nghĩa hình thức cho các mục tiêu mà cơ chế phí sẽ tối ưu hóa. Điều này sẽ được sử dụng để phân tích cơ chế tính phí hiện tại, cũng như các sửa đổi được đề xuất đối với cơ chế này, với mức độ chặt chẽ hơn những gì đã được trình bày ở đây.
Cơ chế tính phí là một tính năng quan trọng của blockchain. Những người bảo trì mạng như người xác nhận có tài nguyên hữu hạn, vì vậy điều quan trọng là phải tính phí cho các tài nguyên khan hiếm theo cách phản ánh được chi phí của mạng. Phí cũng tạo ra động lực cho những người tham gia mạng, chẳng hạn như người dùng, nhà phát triển ứng dụng và người xác thực.
Trong loạt bài này, chúng ta sẽ khám phá cơ chế tính phí hiện tại của Solana, chính thức hóa không gian thiết kế cho cơ chế tính phí và phân tích một số thay đổi được đề xuất đối với cơ chế tính phí của Solana.
Phần này là phần đầu tiên trong loạt bài. Ở đây chúng tôi giải thích cách tính phí của Solana hiện nay, tập trung vào phí dựa trên giao dịch.
Đây là những định nghĩa dành riêng cho Solana cần có để hiểu cơ chế tính phí.
Chữ ký: ít nhất một và thường có chính xác một chữ ký cho mỗi giao dịch.
Lamport: đơn vị nguyên tử nhỏ nhất của SOL. 1 SOL bằng một tỷ (10^9) lamport.
Đơn vị tính toán (CU): một đơn vị tính toán, theo lệnh Solana-BPF, nhằm ước tính chi phí để thực hiện lệnh. Tương tự như các đơn vị gas trên Ethereum.
CU được sử dụng: số lượng đơn vị tính toán được sử dụng để thực hiện một giao dịch. Chỉ được biết sau khi thực hiện.
CU được yêu cầu: được chỉ định bởi giao dịch; nếu giao dịch vượt quá ngân sách điện toán này trong quá trình thực thi thì quá trình thực thi sẽ tạm dừng và giao dịch không thành công. CU tối đa được yêu cầu (và sử dụng) cho mỗi giao dịch là 1.400.000 CU.
Tài khoản: một phần trạng thái duy nhất trên chuỗi khối Solana.
Trình lập lịch biểu: cơ chế xây dựng khối liên tục, được bao gồm theo mặc định trong ứng dụng khách Solana do Solana Labs xây dựng.
Ngày nay, giao dịch Solana bao gồm hai khoản phí: phí cơ bản và phí ưu tiên.
Phí cơ bản được cố định cho mỗi chữ ký ở mức 5000 lamport (0,000005 SOL, 0,0003 USD ở mức 60 USD/SOL) cho mỗi chữ ký; phần lớn các giao dịch Solana có một chữ ký.
Phí ưu tiên tùy chọn được chỉ định trong giao dịch và được tính bằng microlamport trên mỗi CU được yêu cầu. Lưu ý rằng đây không phải là mỗi CU được sử dụng, vì CU được sử dụng không được biết cho đến khi giao dịch được thực hiện. Các giao dịch có mức phí ưu tiên cao hơn sẽ được người lập lịch trình ưu tiên không xác định. Cơ chế cụ thể được mô tả trong Vòng đời của Giao dịch Solana.
Phí được ghi nợ từ người nộp phí khi bắt đầu thực hiện giao dịch. Nếu người trả tiền không thể trả khoản phí bắt buộc, việc thực hiện sẽ bị bỏ qua, giao dịch được coi là không hợp lệ và không được bao gồm.
Đối với cả phí cơ bản và phí ưu tiên, 50% được người dẫn đầu giữ lại như một động lực để đưa các giao dịch vào khối và 50% sẽ bị đốt cháy.
Trong giao dịch ví dụ này, giao dịch yêu cầu 600.000 đơn vị điện toán và đặt mức phí ưu tiên là 2500 microlamport cho mỗi CU được yêu cầu. Vì giao dịch có một chữ ký nên tổng phí cho giao dịch là 5000 lamports + 600.000 CU được yêu cầu * 2500 microlamports / CU được yêu cầu = 6500 lamports, hoặc 0,0000065 SOL.
Solana còn tính thêm một khoản phí để tạo ra trạng thái mới gọi là miễn tiền thuê nhà (thời hạn cũ). Chi phí miễn tiền thuê hiện tại là 6,96 SOL mỗi MB. Khi tạo tài khoản mới, phí sẽ được gán cho tài khoản; khi tài khoản bị xóa, phí miễn tiền thuê tài khoản có thể được thu hồi.
Vì phí cơ sở không nhạy cảm với CU được sử dụng hoặc CU được yêu cầu nên không có động cơ nào về phí cơ sở để tối ưu hóa việc sử dụng điện toán cũng như không yêu cầu CU gần với số lượng CU được sử dụng thực tế. Trong thực tế, nhiều giao dịch trên Solana yêu cầu nhiều CU hơn mức được sử dụng. Điều này tạo ra sự thiếu hiệu quả trong bộ lập lịch.
Trong ví dụ giao dịch trên, giao dịch yêu cầu 600.000 CU nhưng sử dụng ít hơn 250.000.
Mặc dù phí ưu tiên bao gồm động cơ giảm số CU được yêu cầu và do đó giảm số CU được sử dụng, nhưng động cơ này hầu như yếu và chỉ có hiệu lực trong thời gian tắc nghẽn. Một sửa đổi đơn giản là mở rộng phí cơ bản để yêu cầu một khoản phí cho mỗi CU được yêu cầu. Điều này sẽ khuyến khích các nhà phát triển và người gửi giao dịch giảm mức sử dụng điện toán của họ và chỉ yêu cầu các tài nguyên cần thiết.
Một cơ chế có tính khuyến khích tương thích nếu tất cả những người tham gia cơ chế đạt được kết quả tốt nhất bằng cách hành động theo sở thích thực sự của họ. Trong bối cảnh cơ chế tính phí, điều này có nghĩa đại khái là người xác thực sẽ tối đa hóa phí bằng cách chạy thuật toán xây dựng khối mặc định và người gửi giao dịch sẽ tối đa hóa phúc lợi bằng cách gửi các giao dịch với phí ưu tiên theo mức độ họ sẵn sàng chi trả thực sự.
Cơ chế tính phí của Solana không tương thích với những người xác thực và người gửi giao dịch ngày nay. Như đã mô tả ở trên, 50% phí giao dịch được lãnh đạo giữ và 50% bị đốt cháy. Bởi vì không phải tất cả phí đều thuộc về người lãnh đạo, điều này tạo ra động cơ khuyến khích người gửi giao dịch thông đồng với người lãnh đạo: thay vì chỉ định phí ưu tiên để được ưu tiên, thay vào đó, người gửi có thể tạo một thỏa thuận phụ với người lãnh đạo để thanh toán ưu tiên cước ngoài mạng, cắt giảm chi phí mà vẫn được ưu tiên.
Về mặt lý thuyết, những người xác thực chạy cơ chế như vậy sẽ nhận được nhiều phí hơn và do đó có thể mang lại phần thưởng cao hơn cho những người đặt cược được ủy quyền của họ, tạo ra một lực lượng tập trung.
Bên cạnh việc tích hợp trực tiếp theo chiều dọc, cách chính mà chúng ta thấy giao dịch phụ này trên thị trường hiện nay là thông qua đấu giá Jito. Trình xác thực chạy Jito-Solana (một bản sửa đổi cho ứng dụng khách của Solana Labs) phá vỡ cơ chế xây dựng khối liên tục, chạy đấu giá không gian khối trong nửa đầu của vị trí của họ.
Chúng tôi chưa quan sát thấy các giao dịch phụ như vậy khác trên thị trường hiện nay. Điều này là do:
Không giống như hầu hết các blockchain khác, Solana yêu cầu người gửi giao dịch chỉ định phần trạng thái nào được yêu cầu để thực hiện giao dịch. Điều này mở ra khả năng thực hiện giao dịch song song và thị trường phí địa phương, trong đó các phần khác nhau của trạng thái có mức phí khác nhau dựa trên mức độ tranh chấp của từng phần cụ thể. Điểm truy cập trạng thái cục bộ không cần tăng sự tranh chấp hoặc phí trên toàn bộ chuỗi khối.
Một quan niệm sai lầm phổ biến về Solana là nó có thị trường phí địa phương ngày nay. Mặc dù trường hợp giao dịch trả phí ưu tiên cao hơn có nhiều khả năng được đưa vào khối cao hơn và trạng thái tranh chấp đó có thể yêu cầu mức độ ưu tiên cao hơn, nhưng hành vi này không mang tính quyết định và là kết quả của việc triển khai mặc định của Solana. thuật toán lập lịch. Chúng ta khám phá điều này nhiều hơn trong Vòng đời của Giao dịch Solana.
Đặc biệt, hành vi này không được thực thi bằng sự đồng thuận và thứ tự xác định theo mức phí ưu tiên không được đảm bảo, bằng sự đồng thuận hoặc bằng cách triển khai bộ lập lịch. Việc xây dựng khối liên tục và truyền khối của Solana ngăn cản thứ tự xác định, trừ khi có những thay đổi lớn (ví dụ: thứ tự xác định và thực thi không đồng bộ) được triển khai.
Phí cơ bản được thực thi đồng thuận, có thể dự đoán được đối với quyền truy cập trạng thái, dựa trên tranh chấp lịch sử, có thể cải thiện hiệu quả và UX để truy cập trạng thái có tính cạnh tranh cao. Điều này sẽ làm tăng chi phí gửi thư rác, đồng thời khuyến khích người gửi giao dịch khóa số lượng trạng thái tối thiểu mà họ thực sự yêu cầu. Nó sẽ không giải quyết được nguyên nhân cốt lõi của thư rác, xuất phát từ việc xây dựng khối liên tục (vì vậy độ trễ rất quan trọng) và hiện tượng giật. Chúng ta sẽ khám phá thiết kế này sau trong loạt bài này.
Bởi vì các giao dịch chủ yếu được sắp xếp theo thời điểm chúng đến tay người đứng đầu (người lập lịch) và thứ tự này chịu cả sự biến động và biến động mạng do việc triển khai bộ lập lịch song song, nên sẽ có động cơ để gửi thư rác các giao dịch khi người gửi muốn đưa một giao dịch đó vào càng nhanh càng tốt. khả thi. Các giao dịch như vậy mang lại tác động tiêu cực bên ngoài trên mạng dưới hình thức gửi thư rác trên chuỗi (tính đến tháng 1 năm 2023, 58% khả năng tính toán trên chuỗi của Solana được sử dụng để hoàn nguyên các giao dịch) và gửi thư rác đến tay người dẫn đầu.
Từ phòng thí nghiệm Jito
Trong phần này, chúng tôi đã mô tả cách hoạt động của cơ chế tính phí của Solana ngày nay và ý nghĩa của nó đối với mạng. Chúng tôi đã gợi ý một số đặc tính mà cơ chế tính phí lý tưởng sẽ đáp ứng, chẳng hạn như gợi ý chính xác về người lập lịch trình (yêu cầu CU), khả năng tương thích khuyến khích và thị trường phí địa phương thực sự. Trong phần tiếp theo, chúng tôi sẽ xác định chủ nghĩa hình thức cho các mục tiêu mà cơ chế phí sẽ tối ưu hóa. Điều này sẽ được sử dụng để phân tích cơ chế tính phí hiện tại, cũng như các sửa đổi được đề xuất đối với cơ chế này, với mức độ chặt chẽ hơn những gì đã được trình bày ở đây.