Tôi vừa trở về từ New York, nơi tôi đã dành rất nhiều thời gian nói chuyện với mọi người. Rất nhiều cuộc thảo luận của tôi là về việc chạy các trình xác nhận trong XRP Ledger. Và một vài người đã nhắc nhở tôi về lời hứa viết một bài đăng blog về cách vận hành một trình xác thực một cách an toàn của tôi.

Trình gì cơ?

Điều đầu tiên đầu tiên. XRP Ledger là một mạng lưới máy tính ngang hàng phi tập trung được phân cấp, chia sẻ một cơ sở dữ liệu phân tán, xử lý các giao dịch làm thay đổi trạng thái của cơ sở dữ liệu đó.

Một số máy chủ hoạt động như “trình xác thực” có nghĩa là chúng tham gia vào quá trình được sử dụng để quyết định thứ tự các giao dịch sẽ được thực hiện.

Những thứ cơ bản

Cổng thông tin developers.ripple.com mới của Ripple là một nguồn thông tin tuyệt vời và nó bao gồm rất nhiều nội dung tuyệt vời; và tất nhiên, trong đó bao gồm giới thiệu từng bước về trình xác thực và cách chạy chúng.

Các khái niệm “không cơ bản”

Cài đặt phần mềm và tinh chỉnh nó để chạy như một trình xác thực không phải là khó. Điều khó ở đây là chạy trình xác thực một cách an toàn.

Trình xác thực chứa thông tin crypto nhạy cảm: thông tin được sử dụng để lấy khóa bí mật của trình xác thực; bảo vệ nó là cực kỳ quan trọng.

Chìa khóa crypto

Điều này là một trong những chủ đề quan trọng nhất trong việc sử dụng crypto — bất kể đó có là “cryptography” hay “cryptocurrency”.

Tôi sẽ nói nhiều hơn về chủ đề này trong một bài đăng blog trong tương lai, nhưng hiện tại, tôi sẽ chỉ tập trung vào một tập hợp các “hành vi tốt nhất” mà tôi tin rằng các nhà chạy trình xác thực nên thực hiện.

Lockdown

Một trong những cân nhắc chính của tôi là bảo mật vật lý của máy móc. Điều này có vẻ giống như một mối quan tâm kỳ lạ để tập trung vào, nhưng nó giúp cho tất cả các quyết định khác của chúng ta.

Tuyên bố từ chối trách nhiệm (Disclaimer)

Hãy làm rõ ngay từ đầu: không có các bước nào có thể hoàn toàn đảm bảo an ninh. Mục đích ở đây không phải là để tạo ra một hệ thống miễn nhiễm với việc bị hack, bởi điều đó không tồn tại.

Mục đích ở đây là thắt chặt an ninh càng chặt càng tốt vì Internet là một nơi nguy hiểm.

Bảo mật vật lý

Thay vì chọn chạy trình xác nhận của tôi tại nhà hoặc văn phòng tại trung tâm mua sắm, tôi đã chọn đồng định vị tại một cơ sở lưu trữ thương mại sử dụng thiết bị giám sát điện tử tinh vi cũng như nhân viên bảo vệ xung quanh.

Máy chủ được đặt trong một địa điểm an toàn trong cơ sở, nơi truy cập bị hạn chế và được tách biệt khỏi các thiết bị khác bằng một chiếc lồng. Bản thân vỏ bọc, tuy không hoàn toàn có thể xác nhận được mọi sự xâm nhập, nó vẫn được bảo vệ bằng các nhãn dán thông báo xâm nhập và được thiết kế để khi có ai cố gắng mở nó sẽ ghi một sự kiện vào nhật ký BIOS.

Nhà cung cấp dịch vụ máy chủ, cơ sở chung và điện toán đám mây

Có rất nhiều tùy chọn về máy chủ và đồng vị trí khi chạy trình xác thực. Hầu hết các thành phố lớn hơn có ít nhất một cơ sở phù hợp. Google là công cụ tốt ở đây.

Tôi thường khuyên nên tránh sử dụng nhà cung cấp điện toán đám mây. Tôi không có vấn đề gì với điện toán đám mây; nó thật tuyệt vời và tôi sử dụng nó. Nhưng tôi tự hỏi có bao nhiêu trình xác thực đang chạy trên bất kỳ đám mây cụ thể nào?

Phần cứng

Chọn phần cứng rất vui, ngay cả khi nó đắt tiền. Hướng dẫn lập kế hoạch dung lượng tuyệt vời do Ripple cung cấp nên là điều đầu tiên được tham khảo. Phần “Mạng và phần cứng” có thêm chi tiết.

Đối với một trình sản xuất hoạt động tại một cơ sở chung, tôi khuyên bạn nên mua thiết bị dành cho máy chủ thay vì xây dựng một máy chủ bằng phần cứng thông thường.

Khuyến nghị của Ripple là tốt, nhưng tôi chọn làm nhiều hơn thế cho máy chủ của tôi về phần RAM và CPU; đề xuất của tôi là không sử dụng ít hơn 32 GB RAM và nếu có thể, hãy có nhiều hơn thế – không bao giờ có thể có quá nhiều RAM. Tôi cũng đã chọn một máy chủ có TPM.

Khi nói đến bộ nhớ, tôi sử dụng các thiết bị trạng thái rắn cho mọi thứ ngoại trừ các máy được sử dụng làm máy chủ lưu trữ. Đối với một máy chủ rippled, cho dù là một nút thông thường, một trình xác thực hay một máy chủ lịch sử đầy đủ, tôi khuyên bạn chỉ nên sử dụng bộ nhớ trạng thái rắn; sở thích cá nhân của tôi là sử dụng ổ SSD của Samsung, nhưng cũng có các tùy chọn tuyệt vời khác. Nếu bạn có thể, bạn nên chọn NVMe thay vì SATA.

Bare metal

Một phần lý do nâng cấp các thông số kỹ thuật là vì tôi có kế hoạch chạy trình xác thực như một khách VM, thay vì trực tiếp trên bare metal (phần cứng).

Đây không phải là điều tôi thường khuyên tại thời điểm này; Tôi có những lý do rất cụ thể để làm điều đó, và những điều này chắc chắn không áp dụng được cho hầu hết những người chạy trình xác thực khác. Tôi chỉ đề cập đến nó ở đây để có sự hoàn thiện. Nếu bất cứ ai thực sự quan tâm, tôi có thể viết thêm sau.

Sự ngẫu nhiên

Trong khi rippled không cần nhiều dữ liệu ngẫu nhiên, nó vẫn cần một số và nó phải có chất lượng tốt. Các hệ điều hành thường sử dụng một nhóm entropy mà chúng seed bằng cách sử dụng một số nguồn ngẫu nhiên. Thay vì chỉ dựa vào nhóm entropy của hệ thống, rippled sử dụng OpenSSL để cung cấp các API được thiết kế đặc biệt để tạo ra dữ liệu crypto an toàn.

Nhưng càng có nhiều entropy có sẵn cho hệ thống thì càng tốt và nói chung, bạn nên đảm bảo rằng hệ thống luôn có đủ lượng entropy sẵn sàng để nạp vào nhóm entropy, đặc biệt khi đang tạo cặp khóa công cộng-riêng.

Một cách để thực hiện điều đó là sử dụng trình tạo số ngẫu nhiên thật sự bằng phần cứng. Đây là những thiết bị sẽ tạo ra một luồng dữ liệu ngẫu nhiên từ một số quy trình vật lý — thường dựa vào việc khai thác tính ngẫu nhiên vật lý lượng tử.

Một số CPU mới hơn có các thiết bị như vậy được lắp sẵn vào chúng và các hệ điều hành hiện đại sẽ tự động sử dụng chúng. Nhưng các thiết bị bên ngoài cũng có sẵn và nên, theo ý kiến của tôi, luôn được sử dụng, đặc biệt là trên các máy chủ.

Những thiết bị này có nhiều yếu tố hình thức và giá cả, từ nhỏ đến lớn và từ giá cả phải chăng đến … đắt tiền. Thậm chí còn có một số hướng dẫn về cách tự tạo một cái cho riêng bạn dành cho những người thích mày mò với đồ điện tử.

Nếu bạn quan tâm đến việc mua một thiết bị như vậy, tôi biết hai lựa chọn hợp lý hoạt động tốt: TrueRNGOneRNG. Cả hai đều có hướng dẫn về cách tích hợp chúng với hệ điều hành của bạn; không cần cấu hình cụ thể nào cho rippled.

Phần mềm

Trình xác thực của tôi đang chạy trên CentOS, là một trong những nền tảng mà Ripple đề xuất (còn lại là anh em họ của CentOS, RedHat Enterprise Linux).

Thiết lập

Việc cài đặt Linux là khá bình thường ngày nay; Tôi đã cài đặt mức tối thiểu, chủ yếu là sử dụng các giá trị mặc định và đảm bảo rằng máy chủ đã được cập nhật.

Những thay đổi duy nhất tôi thực hiện là dành toàn bộ một ổ đĩa cho rippled; Tôi đã chọn gắn nó dưới /opt/rippled, định dạng nó bằng cách sử dụng ext4 và tinh chỉnh các tùy chọn gắn mặc định để cải thiện hiệu suất của hệ thống tập tin, bằng cách sử dụng chế độ writeback và tăng thời gian chờ cam kết lên 30. Tôi không khuyên bạn thực hiện những điều chỉnh tương tự trừ khi máy của bạn được kết nối với UPS và được cài đặt để tắt đúng cách trong trường hợp mất điện.

Nếu trình xác thực của tôi đang chạy trên bare metal tôi cũng đã sẽ chọn cách mã hóa các ổ đĩa; trên một CPU hiện đại với sự hỗ trợ AES-NI, chi phí trên là tối thiểu và sự cải thiện trong an toàn là một mức giá nhỏ để trả. Tuy nhiên, việc chọn mã hóa sẽ có nhược điểm của nó: bất cứ khi nào máy khởi động lại, bạn sẽ cần phải nhập cụm mật khẩu. Trừ khi bạn có khả năng kết nối với giao diện điều khiển của máy qua Internet, khởi động lại có thể có nghĩa là một chuyến đi xuống trung tâm cơ sở dữ liệu.

Ghi chú: nếu bạn đang sử dụng Linux, bạn có thể dàn xếp hệ thống để lưu trữ khóa trong TPM, nhưng điều đó vẫn khó khăn một cách không cần thiết trên Linux, đặc biệt là khi so sánh với BitLocker trên Windows. Tích hợp TPM tốt hơn là rất cần thiết.

An ninh cứng

Ngoài một số dịch vụ quản lý hành chính cơ bản, tôi cũng đã sử dụng một số “công thức” có sẵn công khai cho việc củng cố hệ điều hành. Các hướng dẫn có sẵn cho Linux khá kỹ lưỡng. Dành thời gian cho việc này bây giờ có thể giúp bạn tiết kiệm thời gian và thất vọng trong tương lai. Bảo vệ hệ điều hành của bạn và hạn chế những gì đang chạy đến mức tối thiểu.

Tôi cũng đã cài đặt một số quy tắc tường lửa rất hạn chế; Tôi không cho phép bất kỳ kết nối nào đến máy chủ và chỉ cho phép các kết nối gửi đi từ quá trình được rippled đến hai máy chủ để “chuyển tiếp” trình xác thực của tôi.

rippled

Cách bạn chọn cài đặt rippled là tùy thuộc vào bạn. Tôi tải xuống và cài đặt các gói rpm. Tôi có lẽ nên thu thập từ nguồn và cài đặt, nhưng tôi biết trực tiếp cách các gói được xây dựng và ký bởi Ripple được xây dựng và ký kết, vì vậy tôi cảm thấy tự tin rằng việc sử dụng chúng là an toàn.

Tiêu chuẩn của bạn có thể khác.

Thu thập từ đầu cho bạn cơ hội để tinh chỉnh các tùy chọn biên dịch để tối ưu hóa tệp thực thi đã biên dịch cho kiến trúc cụ thể của bạn nhưng bạn sẽ cần đảm bảo rằng bạn có phiên bản trình biên dịch đủ mới và các thư viện khác nhau.

Cấu hình

Tôi thực hiện một vài chỉnh sửa đối với tệp rippled.cfg mặc định.

Như tôi đã đề cập trước đó, tôi không cho phép các kết nối đến, vì vậy có

thực sự không có điểm trong việc xác định một cổng cho các đồng nghiệp để kết nối với, vì vậy tôi đã loại bỏ đoạn mã [port_peer] và mục nhập port_peer khỏi [server] stanza.

Tôi cũng thay đổi [node_size] thành huge. Giá trị bạn có phụ thuộc vào lượng RAM máy chủ của bạn có sẵn; tham khảo tài liệu của Ripple về giá trị của nó.

Tôi cũng chọn xóa hoàn toàn [debug_logfile] stanza; thông tin trong các nhật ký đó chỉ hiếm khi hữu ích ngoài việc giúp khắc phục sự cố trong quá trình phát triển.

Việc sử dụng RocksDB là chấp nhận được đối với trình xác thực. Nhưng nếu bạn muốn duy trì lịch sử đầy đủ, bạn nên chọn NuDB.

Tôi thực hiện một số thay đổi đối với cài đặt mặc định, bằng cách thay đổi tham số online_delete từ 2000 thành 30000. Ở mức cao, giá trị này kiểm soát tần suất máy chủ sẽ xóa thông tin cũ khỏi cơ sở dữ liệu của nó. Giữ 2000 sổ cái có nghĩa là máy chủ sẽ thực hiện việc dọn dẹp này khoảng hai giờ một lần, điều này quá thường xuyên. Trừ khi không gian đĩa ở mức cao, tôi khuyên bạn nên thay đổi giá trị này thành khoảng từ 30000 đến 60000.

Hạt Node

Theo mặc định, lần đầu tiên nó bắt đầu, rippled ngẫu nhiên sẽ tạo ra một hạt giống nút, được sử dụng để lấy được một nhận dạng mã hóa duy nhất cho mỗi máy chủ. Các hạt giống được tạo ra một lần, và được lưu trữ trong wallet.db để nó có thể tái sử dụng sau mỗi lần khởi động lại.

Bạn có thể cấu hình thủ công một nút hạt giống, nhưng nó gần như không bao giờ được yêu cầu.

Hạt giống xác thực

Để hoạt động như một trình xác thực, rippled yêu cầu một cặp khóa công khai riêng tư duy nhất; nó sẽ sử dụng khóa riêng để ký xác nhận hợp lệ, và những người khác sẽ sử dụng khóa công khai để xác minh rằng các xác thực hợp lệ là chính hãng.

Nếu bạn cài đặt rippled bằng cách sử dụng các gói được cung cấp, bạn cũng sẽ có quyền truy cập vào công cụ validator-keys để đơn giản hóa các quá trình tạo khóa.

Tài liệu phác thảo các bước cần thiết để tạo ra một hạt giống xác nhận mới.

Để biết thêm thông tin về cách sử dụng công cụ để thực hiện những việc như thu hồi khóa, bạn có thể xem hướng dẫn này.

Đi ra và xác thực

Một nhóm các nhà kiểm chứng khác nhau rất quan trọng đối với sức khỏe và sự ổn định lâu dài của XRP Ledger. Không một nhóm hoặc tổ chức nào có quyền kiểm soát mạng và các trình xác thực an toàn hơn chúng tôi có, thì càng ít khả năng trở thành bất kỳ nhóm hoặc tổ chức nào có quyền kiểm soát như vậy.

Nếu bạn là một trao đổi, cửa ngõ, hoặc kinh doanh giao dịch qua XRP Ledger, sau đó nó là trong quan tâm của bạn để vận hành một validator, và không có lý do gì để không làm như vậy.

Oh, và hãy nhớ rằng: không cần sự cho phép!

Một chủ đề lặp đi lặp lại của người nói chuyện trên Twitter là bạn bằng cách nào đó cần phải có sự cho phép để vận hành một trình xác nhận hợp lệ. Không gì có thể hơn được sự thật.

Phần FUD này phổ biến đến nỗi Beardsson rất tài năng đã tạo ra một truyện tranh vui nhộn từ nó:

no-permission-needed

Các cách khác để đóng góp

Điều hành một trình xác nhận không phải là cách duy nhất để đóng góp cho XRP Ledger. Nếu bạn là nhà cung cấp dịch vụ lưu trữ đám mây hoặc lưu trữ, bạn có thể đóng góp đáng kể bằng cách vận hành máy chủ trung tâm có dung lượng cao.

Nếu bạn là nhà phát triển hoặc làm việc với nhà phát triển, bạn có thể đóng góp bằng cách phát triển các công cụ và ứng dụng mới hoặc bằng cách đóng góp mã rippled.

Nếu bạn là một người đam mê, bạn có thể giúp giáo dục người khác về XRP Ledger và không gian rộng hơn. Có một cộng đồng thịnh vượng của những người có cùng suy nghĩ tương tự trên xrpchat.com; nhiều người cũng đăng trên Twitter, nơi bạn có thể tìm thấy tôi là @nbougalis.