engineeringfairnessmultiplayer
Thẩm quyền ở máy chủ nghĩa là máy chủ giữ bản sao duy nhất có giá trị của ván đấu. Thiết bị của bạn gửi nước đi bạn muốn chơi, máy chủ đối chiếu nó với xúc xắc của chính nó và luật của chính nó, rồi sau đó bàn cờ mới thay đổi. Một ứng dụng bị sửa có thể khẳng định bất cứ điều gì: sự thật sống ở nơi nó không với tới được.
Backgammon xứng đáng với kỷ luật này. Đây là trò chơi xúc xắc có bậc thang và có tiền cược, nghĩa là có hai cách gian lận: giả nước đi, hoặc bẻ cong cú gieo. Một máy chủ công bằng phải đóng cả hai cánh cửa. Cánh thứ hai bao gồm cả chúng tôi, và chúng ta sẽ đến đó.
Thẩm quyền ở máy chủ thật ra nghĩa là gì?
Mỗi trận Orion đang diễn ra tồn tại ở đúng một nơi: trên máy chủ của chúng tôi. Bàn cờ trên điện thoại bạn là một ô cửa sổ, không phải ván đấu. Khi bạn kéo một quân cờ, ứng dụng không di chuyển nó. Nó gửi một thông điệp ngắn nói rằng: đây là nước tôi muốn chơi. Máy chủ diễn lại ý định đó trên bàn cờ của chính nó, bằng bộ luật của chính nó, dùng những con xúc xắc mà nó đã gieo cho lượt ấy. Nước hợp lệ đẩy ván tiến lên, và cả hai người chơi nhận cùng một thế cờ mới. Nước không hợp lệ thì chưa từng xảy ra.
Đây là một máy chủ cho tất cả mọi người. Ứng dụng iOS là SwiftUI thuần, ứng dụng Android là Jetpack Compose thuần, và cả hai đều là cửa sổ nhìn vào cùng một hệ thống nền và cùng một cộng đồng người chơi. Khác lớp kính, cùng một sự thật.
Vì sao những trò tin vào máy khách lại bị gian lận?
Vì thiết bị của đối thủ thuộc về đối thủ. Mọi thứ chạy trên đó đều có thể bị sửa. Một máy khách đã vá có thể gửi những nước đi chưa bao giờ hợp lệ. Một trình sửa bộ nhớ có thể viết lại một con số tại chỗ, và màn hình sẽ trung thành hiển thị lời nói dối đó. Chẳng có gì kỳ lạ ở đây. Công cụ thì miễn phí, có tài liệu, và già hơn cả điện thoại thông minh.
Một trò chơi tin vào máy khách đang đề nghị mọi người chơi hứa không nhìn vào bên trong. Sẽ có người nhìn. Vì thế chúng tôi khiến ý kiến của máy khách trở nên vô nghĩa. Trong Orion, ứng dụng có đúng ba việc:
- Vẽ: bàn cờ, quân cờ, khối nhân đôi, đồng hồ.
- Xin: xin máy chủ chơi một nước, mời nhân đôi, xin thua.
- Nhận: hiển thị thế cờ nào mà máy chủ nói là thật.
Gieo xúc xắc, phán xét tính hợp lệ, và di chuyển dù một đồng xu đều không nằm trong danh sách đó. Không thứ gì quyết định kết quả lại khởi sinh trên một thiết bị.
Chuyện gì xảy ra khi tôi đi một nước?
Bạn đi.. Ứng dụng gửi ý định: quân này, những điểm này. Không gì trên thiết bị bạn làm thay đổi bàn cờ thật.
Máy chủ diễn lại.. Bộ luật của chúng tôi chạy nước đi đó trên bàn cờ của máy chủ và xúc xắc của máy chủ. Nếu hợp lệ, ván tiến lên. Nếu không, nó bị từ chối ngay tại nguồn, bất kể ứng dụng nào đã gửi.
Hai bên nhận cùng một sự thật.. Thế cờ mới được gửi tới cả hai người chơi. Nếu kết nối của bạn rớt, khoảng ân hạn kết nối lại của đồng hồ giữ chỗ cho bạn, và bạn quay lại đúng bàn cờ như nó đang là, không phải như điện thoại bạn nhớ lần cuối.
Tiền cược theo đúng quy tắc ấy. Khi một trận có phí vào bàn bắt đầu, máy chủ giữ cả hai khoản cược. Tiền cược sống trong một sổ cái duy nhất, trên máy chủ, và được quyết toán ở đó khi ván kết thúc. Không máy khách nào từng được hỏi nó nghĩ mình thắng bao nhiêu. Xu và đá quý là ảo, không có giá trị ngoài đời và không rút ra được, vậy mà chúng tôi vẫn vận hành sổ cái đó như thể nó giữ một thứ quý giá, vì đúng là thế: niềm tin của bạn vào tỉ số.
Điều gì ngăn chính máy chủ gian lận?
Đây là câu hỏi đúng, và phần lớn trò chơi mong bạn đừng bao giờ hỏi. Một máy chủ gieo xúc xắc trong bí mật có thể gieo tử tế cho phía nó ưu ái, và bạn sẽ không bao giờ thấy. Cú gieo nào cũng trông hợp lý. Xúc xắc là như vậy.
Nên chúng tôi đã tự tước quyền đó khỏi chính mình. Trước khi một ván bắt đầu, máy chủ tạo một hạt giống bí mật và công bố cam kết SHA-256 trên nó. Mỗi cú gieo sau đó được suy ra từ hạt giống ấy bằng HMAC-SHA256, từng cú một, theo thứ tự. Khi ván kết thúc, máy chủ công bố hạt giống. Ai cũng kiểm được rằng hạt giống khớp với cam kết đã lập trước cú gieo đầu tiên, và rằng mọi cú gieo trong ván đều suy ra từ nó. Theo nghĩa mật mã, xúc xắc của bạn đã được cố định trước khi bất kỳ ai chạm vào quân cờ. Chúng tôi không thể bẻ cong cú gieo thứ mười hai mà không phá vỡ lời hứa đã công bố ở cú gieo số không.
Bạn không phải tin lời chúng tôi về bất cứ điều nào trong số này. Trang kiểm chứng tại orion.arthea.ai/verify tính lại toàn bộ chuỗi ngay trong trình duyệt của bạn, bằng Web Crypto, trên máy bạn, từ bản ghi công khai của ván đấu. Không tài khoản, không cài đặt. Cánh cửa tại orion.arthea.ai/go mang liên kết App Store và Google Play, luôn cho thấy thứ đang có ngay lúc này.