Đây là chuỗi bài viết giới thiệu về sự phát triển của Solana.
Solana là một nền tảng blockchain hiệu suất cao, đạt được thông lượng cao và độ trễ thấp thông qua cơ chế đồng thuận và mô hình tài khoản độc đáo.
Là bài đầu tiên trong chuỗi bài viết, bài viết này chủ yếu giới thiệu một số kiến thức bạn cần biết trước khi phát triển Solana:
< p> Bối cảnh ra đời của Solana
Cách Solana tạo ra các khối (hoạt động đồng thuận)
Khái niệm cốt lõi của Solana: mô hình tài khoản , PDA, giao dịch và phí, cụm, v.v.
Nền sinh Solana
Solana được thành lập vào năm 2017 bởi Anatoly Ykovenko. Anatoly chọn cái tên Solana gợi nhớ đến Solana Beach, một thị trấn ven biển nhỏ phía bắc San Diego, nơi họ sống và lướt sóng trong ba năm khi làm việc tại Qualcomm.
Trước khi thành lập Solana, Anatoly đã có nhiều năm làm việc tại Qualcomm, Mesosphere và Dropbox, đồng thời có nhiều kinh nghiệm về hệ thống phân tán và mạng hiệu suất cao.
Ông nhận ra rằng những hạn chế về khả năng mở rộng của blockchain đã hạn chế tiềm năng ứng dụng quy mô lớn của nó. Lấy cảm hứng từ công nghệ đồng bộ hóa thời gian trong các hệ thống phân tán, ông đã đề xuất khái niệm Bằng chứng lịch sử (PoH). Được sử dụng để đồng bộ hóa thời gian giữa các máy tính không tin cậy lẫn nhau.
Hãy cùng xem cách Solana sử dụng PoH để đạt được sự đồng bộ hóa hiệu quả giữa các trình xác thực.
Đồng thuận Solana - Cách tạo khối
Lưu ý: Solana Tài liệu về thuật toán đồng thuận có phần lỗi thời. Nội dung của phần này dựa trên sự đồng thuận sâu sắc của Solana và sự hiểu biết của tôi.
Solana là một chuỗi khối bằng chứng cổ phần (PoS) và thuật toán đồng thuận tuân theo hai giai đoạn: 1. Chọn trình xác thực và tạo khối 2. Những người xác thực khác bỏ phiếu cho khối và sau khi tích lũy đủ số phiếu, khối sẽ được hoàn tất.
Bầu người xác thực
Trong giao thức của Solana, có hai từ quan trọng liên quan đến khoảng thời gian: Epoch và Khe thời gian mạnh mẽ>:
Slot: Đơn vị thời gian để trình xác thực tạo khối. Một khối có thể được tạo trên mỗi khe thời gian và mỗi khe thời gian kéo dài 400 mili giây.
Kỷ nguyên: Vào đầu mỗi Kỷ nguyên, mạng Solana sẽ bầu chọn ngẫu nhiên một trình tự xác nhận (được gọi là Người lãnh đạo) trình tự lãnh đạo này chịu trách nhiệm. để sản xuất các khối trong Kỷ nguyên. Trình tự lãnh đạo vẫn cố định trong giai đoạn này. Mỗi người lãnh đạo có thể liên tục xử lý 4 Khe (nghĩa là tạo ra 4 khối). khối), mỗi Kỷ nguyên kéo dài khoảng hai ngày (chứa 432.000 Khe). Cho đến Kỷ nguyên tiếp theo, Thủ lĩnh sẽ được tái sinh.
< p style="text-align: center;">Trong hình trên, mỗi khối màu đại diện cho một khối và các màu khác nhau đại diện cho các khối được xác minh khác nhau.
Tôi sẽ không đi sâu vào chi tiết về việc bầu cử ngẫu nhiên ở đây (chủ yếu là vì tôi không hiểu nó). Khi bắt đầu mỗi Kỷ nguyên, người xác minh sẽ biết vị trí nào yêu cầu anh ta sản xuất. khối.
Nhưng có hai vấn đề cần được giải quyết:
Làm thế nào để Người xác minh biết rằng đã đến lượt bạn tạo khối phải không? Nếu bạn chỉ dựa vào giao tiếp mạng và trình xác thực trước đó sẽ thông báo cho trình xác thực tiếp theo, thì có khả năng sẽ bỏ lỡ thời gian chặn có giá trị do độ trễ mạng (hoặc trình xác thực trước đó đang ngoại tuyến).
Cách chèn càng nhiều giao dịch càng tốt vào một khối. Nếu các giao dịch như Ethereum được thực hiện lần lượt thì nhiều giao dịch không thể được thực hiện trong một khoảng thời gian ngắn như vậy.
Đổi mới quan trọng nhất của Solana - POH, chủ yếu được sử dụng để giải quyết hai vấn đề này.
Chặn
Để đạt được hiệu suất cao, Solana giới thiệu xử lý song song các giao dịch, chia việc sắp xếp và thực hiện giao dịch thành hai giai đoạn, để giai đoạn thực hiện có thể được song song Xử lý nó.
Khi những người xác minh khác xác minh giao dịch, họ cũng thực hiện xác minh theo trình tự sắp xếp tương tự. Để cho phép trình tự sắp xếp giao dịch được xác minh, Solana sử dụng chuỗi băm bằng chứng lịch sử POH để xác định giao dịch. đặt hàng.
PoH hoạt động bằng cách tạo một chuỗi của mã hóa Hash (thuật toán SHA256), mỗi phép tính băm cần sử dụng giá trị băm trước đó, để bạn có thể đảm bảo rằng hàm băm tiếp theo luôn xảy ra sau hàm băm trước đó, vì vậy POH Chuỗi băm kết hợp với dữ liệu tâm trí có thể xác định thứ tự giao dịch.
Bạn chỉ cần thêm dữ liệu giao dịch làm một phần đầu vào khi tính toán hàm băm để xác định trình tự giao dịch. Và trình tự này có thể song song hóa, có thể kiểm chứng và chống giả mạo.
Trình xác thực lãnh đạo hiện tại sẽ tiếp tục nhận các giao dịch từ máy chủ RPC và các trình xác thực khác sau khi xác minh sơ bộ (chẳng hạn như xác minh chữ ký giao dịch và số dư tài khoản), Nó sẽ được sắp xếp theo thứ tự. tính toán chuỗi băm POH được thêm vào, nghĩa là mỗi giao dịch sẽ được cấp một nhãn trình tự thời gian toàn cầu và có thể kiểm chứng, sau đó các giao dịch sẽ được thực hiện song song.
Tại Solana, toàn bộ quy trình xử lý giao dịch được chia thành nhiều giai đoạn kết nối với nhau (giai đoạn xác minh giao dịch, giai đoạn phân loại POH, giai đoạn thực hiện, giai đoạn phát sóng), tạo thành một Đường ống . Các giai đoạn khác nhau có thể xử lý các lô giao dịch khác nhau song song và chồng chéo, nghĩa là các lõi CPU hoặc GPU khác nhau đang xử lý đồng thời việc xác minh một lô giao dịch và thực hiện một lô giao dịch khác (gọi là ngân hàng).
Việc thực hiện các giao dịch cũng diễn ra song song. Việc thực hiện giao dịch được sắp xếp dựa trên các phần phụ thuộc đọc và ghi của tài khoản. Các giao dịch được nhóm theo các phần phụ thuộc và được thực hiện song song vào các luồng/lõi CPU khác nhau. Nhiệm vụ GPU.
Nếu các tài khoản do hai giao dịch vận hành hoàn toàn khác nhau hoặc cả hai đều ở chế độ chỉ đọc, về mặt lý thuyết chúng có thể được thực thi cùng một lúc ; nếu có xung đột ghi thì Phải được thực thi để tránh dữ liệu không nhất quán.
Bây giờ chúng ta đã hiểu quá trình tạo khối của Solana. Bằng cách này, Solana có thể xử lý một số lượng lớn giao dịch trong một Slot duy nhất (khoảng 400ms).
POH - Đồng hồ được đồng bộ hóa
Có một câu hỏi khác, làm thế nào người xác minh biết rằng đến lượt mình tạo ra một khối?
Mỗi thao tác băm yêu cầu thời gian tối thiểu và mỗi phép tính băm yêu cầu sử dụng giá trị băm trước đó. Điều này đảm bảo rằng việc song song hóa là không thể. Do đó, chuỗi băm PoH có thể được sử dụng làm bằng chứng cho sự trôi qua của thời gian.
Trong Solana, mỗi khối (chuỗi băm PoH) phải chứa 12.500 băm. Người lãnh đạo Slot hiện tại chịu trách nhiệm tạo ra các chuỗi (khối) PoH này.
Trên thực tế, không có trình xác thực nào đang tính toán chuỗi PoH (chuỗi Hash trống không có dữ liệu giao dịch) trong nền nếu người dẫn đầu trước đó (hoặc nhiều người dẫn đầu trước đó) chưa xuất bản một khối (hoặc Người dẫn đầu hiện tại). chưa nhận được), miễn là số lượng băm theo yêu cầu của Slot được vượt qua, người dẫn đầu hiện tại có thể tạo khối đúng thời gian.
Như được hiển thị trong hình bên dưới, Slot3 đang ngoại tuyến và trình xác minh của Slot4 sẽ điền vào chuỗi PoH cho slot3.
Xác minh và bỏ phiếu cho các khối
Quy trình xác minh của khối bao gồm xác minh siêu dữ liệu của khối và tính toán lại hàm băm PoH, đồng thời sẽ xác minh và phát lại tất cả các giao dịch từ khối và cập nhật sổ cái.
Sau khi quá trình xác minh được thông qua, việc bỏ phiếu thể hiện cam kết của người xác minh đối với một khối mà người xác minh nắm giữ càng nhiều quyền thì giá trị của phiếu bầu càng lớn.
Thông thường, người xác nhận sẽ chọn chuỗi nặng nhất để tạo khối và bỏ phiếu. Nếu khối của người dẫn đầu trước đó không đến được người dẫn đầu hiện tại, điều đó có thể xảy ra:< /p>
Trong trường hợp phân nhánh, trình xác thực sẽ tính toán tổng số lượt nhấn cho mỗi cây con. Bỏ phiếu theo tỷ lệ chia sẻ và chọn người có nhiều phiếu bầu nhất. Một khối được xác nhận nếu nó nhận được ít nhất 2/3 số phiếu bầu theo tỷ lệ cổ phần.
Các khái niệm cốt lõi của Solana
Tài khoản Solana
Khi phát triển trên Solana, điểm khác biệt lớn nhất so với Ethereum là mô hình tài khoản khác nhau.
Tài khoản Solana rất giống với các tệp Linux. Mọi thứ đều là một tài khoản, là một đơn vị lưu trữ. Chúng có nhiều dạng:
< li>
Tài khoản người dùng: Tài khoản được kiểm soát bằng khóa riêng, thường được tạo cho người dùng bằng phần mềm ví.
Tài khoản chương trình: tài khoản được sử dụng để lưu trữ mã byte thực thi (mã hợp đồng thông minh).
Tài khoản dữ liệu: Tài khoản lưu trữ thông tin trạng thái, chẳng hạn như số lượng mã thông báo cụ thể mà người dùng nắm giữ.
Tài khoản chương trình gốc: Đây là những tài khoản chương trình được triển khai trước đặc biệt để thực hiện các chức năng cốt lõi khác nhau của mạng. Bao gồm chương trình hệ thống, chương trình biểu quyết và trình tải BPF.
<span ) 10px 10px / 40px không lặp lại ;cao t: 30px;width: 100%;margin-bottom: -7px;border-radius: 5px;'>
Solana Tài khoản chương trình (tức là hợp đồng thông minh) không có trạng thái, chỉ đọc và không lưu trữ bất kỳ dữ liệu/trạng thái nào. Dữ liệu được lưu trữ dưới các tài khoản dữ liệu riêng biệt.
Khi bạn gọi một hàm của hợp đồng Solana, chúng ta cần chuyển tài khoản dữ liệu được sử dụng cho hàm đó. Thật dễ dàng để có các giao dịch không có sự phụ thuộc lẫn nhau được thực hiện đồng thời.
Nếu bạn biết EVM, bạn sẽ biết rằng dữ liệu trạng thái cũng được lưu trữ trong hợp đồng. Lấy bộ đếm làm ví dụ. Hợp đồng EVM Trong Solana, giá trị của bộ đếm được lưu trữ trong tài khoản hợp đồng. Trong Solana, phải tạo hai tài khoản: một tài khoản là tài khoản chương trình, dùng để lưu trữ mã của chương trình, và tài khoản còn lại dùng để lưu trữ. giá trị của bộ đếm.
Tiền thuê là cách Solana giảm tình trạng phình to bằng cách yêu cầu tài khoản duy trì số dư tối thiểu để duy trì hoạt động. Việc cho thuê đảm bảo rằng mạng cuối cùng sẽ lấy lại được các tài khoản không được sử dụng hoặc thiếu vốn. Tiền thuê được miễn nếu tài khoản duy trì số dư tối thiểu bằng hai năm tiền thuê.
Thiết kế của tài khoản Solana, ngoài lợi ích của việc thực thi đồng thời, còn có thể mang lại khả năng sử dụng lại chương trình. Có một số lượng lớn mã ERC20 giống hệt nhau trên Ethereum.
Solana thì khác. Không cần triển khai lại hợp đồng thông minh khi tạo mã thông báo mới. Thay vào đó, chỉ cần tạo một tài khoản mới, được gọi là tài khoản đúc tiền, xác định số lượng mã thông báo, tên của họ, ai có thể đúc nhiều mã thông báo hơn, v.v.
Địa chỉ nguồn gốc chương trình (PDA: Địa chỉ nguồn gốc chương trình)
Tài khoản được sử dụng để lưu dữ liệu chương trình là PDA,
tài khoản người dùng thông thường , ở đó là các khóa/địa chỉ công khai, chúng tương ứng với ed25519 Một điểm trên đường cong elip nơi khóa riêng được sử dụng để ký nhằm chứng minh quyền sửa đổi tài khoản.
Địa chỉ phái sinh được lập trình (PDA) là các tài khoản được tạo bên ngoài đường cong bằng cách sử dụng vết sưng (tức là giá trị đầu ra lệch khỏi đường cong). Một PDA yêu cầu ba phần chính: ID gốc, bộ hạt giống và giá trị hop. Hạt giống là một mảng các chuỗi, thường được đặt thành một hạt giống cụ thể được liên kết với một biến trạng thái trong chương trình để tạo cấu trúc dữ liệu giống như bảng băm. để tạo ra PDA tương ứng.
Chương trình suy ra PDA là chủ sở hữu của nó và chỉ chương trình này mới có thể sửa đổi dữ liệu của PDA.
Giao dịch
Giao dịch chúng tôi gửi tới mạng Solana bao gồm bốn phần:
< li>
Một hoặc nhiều hướng dẫn (hướng dẫn)
Một mảng tài khoản để đọc hoặc viết (account_keys)
Một hoặc nhiều chữ ký (chữ ký)
< p>Băm khối gần đây nhất (recent_blockhash)
A Hướng dẫn là Logic thực thi tối thiểu trên Solana. Lệnh chỉ định quy trình thực hiện, tất cả các tài khoản liên quan và dữ liệu vận hành. Lệnh gọi chương trình để cập nhật trạng thái (ví dụ: gọi chương trình mã thông báo để chuyển mã thông báo từ tài khoản của bạn sang tài khoản khác), chương trình diễn giải dữ liệu trong lệnh và thực hiện các thao tác trên tài khoản được chỉ định.
Các hướng dẫn tương tự như lệnh gọi hàm trên hợp đồng thông minh Ethereum.
Việc thực hiện nhiều lệnh trong một giao dịch là mang tính nguyên tử và tất cả các lệnh đều thành công cùng nhau hoặc thất bại cùng nhau.
Solana sử dụng hàm băm khối gần đây nhất để biểu thị tính hợp lệ của giao dịch, nhưng khi chúng tôi muốn thực hiện giao dịch, nó sẽ bắt đầu từ cụm để tạo giao dịch hợp lệ. Giao dịch có hiệu lực sau 150 khối sau lần băm khối gần đây nhất. Nếu vượt quá thời gian thay đổi, giao dịch cần được bắt đầu lại.
Solana không có khái niệm Nonce cho các giao dịch trong Ethereum.
Phí giao dịch Solana rất khác với cơ chế Gas của Ethereum. Phí giao dịch liên quan đến số lượng chữ ký có trong giao dịch (lamports_per_signature), Phí xử lý cơ bản hiện được đặt ở mức 0,000005 SOL (5k lamports), là phí một lần được trả trước cho mạng để có quyền sử dụng tài nguyên mạng, bất kể có bao nhiêu tài nguyên thực sự được sử dụng để thực hiện giao dịch (hoặc liệu giao dịch có được thực hiện hay không). 50% phí được trả cho nút xác minh đã tạo khối và 50% còn lại sẽ bị hủy.
Nếu muốn tăng mức độ ưu tiên cho các giao dịch của mình [phí tùy chọn], nó có thể đặt "đơn giá tính toán". Giá này được sử dụng cùng với giới hạn đơn vị điện toán để xác định phí ưu tiên cho giao dịch.
Giới hạn đơn vị điện toán mặc định là mỗi đơn vị 200.000 CU mỗi lệnh, Nếu số lượng tính toán tương đối lớn, giá trị tối đa có thể được đặt thành 1,4 triệu Cu. Các giao dịch Solana sẽ yêu cầu trước một số đơn vị tính toán (CU) được chỉ định và nếu vượt quá số lượng này thì giao dịch sẽ không thành công.
Ngoài ra, các giao dịch Solana còn phải tuân theo các hạn chế về kích thước gói giao dịch. Mạng Solana tuân theo kích thước đơn vị truyền tải (MTU) tối đa là 1280 byte, phù hợp với ràng buộc kích thước IPv6 MTU để đảm bảo thông tin cụm đó. được truyền qua UDP nhanh chóng và đáng tin cậy. Sau khi đếm các tiêu đề cần thiết (40 byte cho IPv6 và tiêu đề phân đoạn 8 byte), vẫn còn 1232 byte cho gói và sự kết hợp giữa chữ ký và tin nhắn không thể vượt quá giới hạn này.
Cụm Solana
Cụm Solana ( cluster ) là một nhóm các trình xác thực cùng xử lý các giao dịch và duy trì Dữ liệu sổ cái (sổ cái). Solana có một số cụm khác nhau, mỗi cụm có một mục đích cụ thể:
Các cụm tương ứng với các mạng Ethereum khác nhau.
Localhost: Cụm phát triển cục bộ nằm trên cổng mặc định 8899. Giao diện dòng lệnh Solana (CLI) đi kèm với Trình xác thực thử nghiệm có thể được tùy chỉnh theo nhu cầu của từng nhà phát triển mà không có bất kỳ đợt airdrop hoặc giới hạn tỷ lệ nào
Mạng phát triển (Devnet): Môi trường hộp cát không có giá trị để thử nghiệm và thử nghiệm trên Solana
Testnet: Nơi thử nghiệm để những người đóng góp cốt lõi của Solana thử nghiệm các bản cập nhật và tính năng mới trước khi triển khai. tiếp cận mạng chính. Nó cũng được sử dụng làm môi trường thử nghiệm để các nhà phát triển tiến hành thử nghiệm hiệu suất
Mainnet Mainnet Beta: Cụm trực tiếp, không được phép, nơi diễn ra các giao dịch trong thế giới thực. Đây là Solana "thực sự" mà người dùng, nhà phát triển, chủ sở hữu mã thông báo và người xác thực tương tác hàng ngày
Mỗi cụm chạy độc lập và hoàn toàn không biết đến sự tồn tại của các cụm khác. Các giao dịch được gửi đến cụm sai sẽ bị từ chối để đảm bảo tính toàn vẹn của từng môi trường hoạt động.
Tóm tắt
Bài viết này giới thiệu các khái niệm cốt lõi của Solana, bao gồm mô hình tài khoản, cơ chế tạo khối và cấu trúc phí giao dịch.
Sau khi hiểu rõ những kiến thức cơ bản này chúng ta sẽ bắt đầu phát triển ứng dụng với Solana.
Bài viết tham khảo
Solana Cách thức hoạt động - Nguyên tắc làm việc
Đi sâu vào sự đồng thuận của Solana - từ các nhánh đến mức cuối cùng
Preview
Có được sự hiểu biết rộng hơn về ngành công nghiệp tiền điện tử thông qua các báo cáo thông tin và tham gia vào các cuộc thảo luận chuyên sâu với các tác giả và độc giả cùng chí hướng khác. Chúng tôi hoan nghênh bạn tham gia vào cộng đồng Coinlive đang phát triển của chúng tôi:https://t.me/CoinliveSG