Lương về, tiền bắt buộc khoá ngay
Mọi ứng dụng quản lý chi tiêu đều ghi lại việc đã tiêu. Payday khác ở chỗ nó giữ tiền và tự thực thi — nên nó trả lời được câu hướng về phía trước: từ giờ tới kỳ lương sau, tôi tiêu được bao nhiêu mỗi ngày mà vẫn trả đủ mọi khoản bắt buộc?
Cái khoá là khoá thật
Tài khoản ngân hàng để mọi thứ chung một chỗ, và ý chí là thứ duy nhất ngăn bạn tiêu vào tiền nhà. Payday chuyển tiền bắt buộc vào một hợp đồng, chia theo từng nghĩa vụ.
lương về ─┬─ BẮT BUỘC khoá, có ngày đến hạn
├─ DỰ PHÒNG quỹ chìm, phong bao
└─ TỰ DO ÷ số ngày tới kỳ lương sau
free() là một hàm view ai cũng gọi được trên chain — không phải một dòng trong
cơ sở dữ liệu của chúng tôi. Bạn kiểm được mà không cần tin máy chủ này.
Hai chiều, hai luật
| thao tác | rủi ro nếu chậm | nên là |
|---|---|---|
| chặn tiền đi ra | trả nhầm chỗ, bị lừa | tức thì |
| rút tiền về mình | không có — tiền vẫn an toàn | chờ 72 giờ |
Chủ ví luôn lấy lại được tiền của mình — không cần ai duyệt, không điều kiện. Chỉ là phải chờ. Một cái khoá mở bằng một cú bấm thì không ràng buộc gì cả; một cái khoá không mở được thì là bẫy. Độ trễ là chỗ đứng giữa hai điều đó.
Hoá đơn là một lời đề nghị
Agent giữ tiền thật và trả tự động. Nếu nó trả bất cứ thứ gì tự xưng là hoá đơn thì nó không phải trợ lý tài chính — nó là một cái ví mở toang có hẹn giờ.
Mọi hoá đơn đến đều bị coi là dữ liệu do người ngoài gửi và phải qua chín cổng:
- hình dạng — đủ trường bắt buộc
- đã đăng ký — có phải nghĩa vụ của bạn không
- địa chỉ nhận có đổi không
- chữ ký
- đã trả lần nào chưa
- đơn vị tiền
- ngày đến hạn có hợp lý
- trần bạn đặt
- nhảy vọt so với lịch sử
Cổng 3 và cổng 4 đã rời khỏi máy chủ. Với khoản trả tự động,
payTo không còn là tham số — tiền chỉ đi về địa chỉ ghi trong mandate trên chain.
"Trả nhầm chỗ" không còn là phép kiểm có thể quên; nó là điều không diễn đạt được.
Cổng 3 là đáng giá nhất. Đổi địa chỉ nhận tiền là đường tấn công cổ điển nhất của lừa đảo hoá đơn — mọi thứ y hệt, chỉ số tài khoản đổi. Nó dừng lại và hỏi bạn, chứ không chặn thẳng: nhà cung cấp có quyền xoay ví.
Ba kết quả, và chúng không thể thay nhau
Gộp ESCALATE vào REJECT thì tiền nhà tăng giá hợp lệ cũng bị chặn im lặng
và bạn trễ hạn. Gộp vào PAY thì đúng bằng không có cổng.
Số ước lượng luôn nghiêng về phía thận trọng
Tiền điện tháng này chưa có hoá đơn. Payday không hiện 0 — số 0 trông giống hệt
một phép đo. Nó ước lượng, và ước lượng bằng cận trên:
| đoán | hậu quả |
|---|---|
| CAO hơn thực tế | tiêu ít hơn mình có thể. Khó chịu, không mất gì. |
| THẤP hơn thực tế | đến hạn không đủ tiền. Trễ hạn, phạt, mất uy tín. |
Hai nhánh không cân nhau, nên mọi ước lượng lệch về phía cao. Cách tính nói thẳng ra được: “cao nhất trong 6 kỳ gần đây”. Không dùng “phân vị 90” cho 6 mẫu — p90 của 6 điểm chính là điểm lớn nhất, cái tên chỉ thêm vẻ chính xác giả.
Dưới 3 kỳ thì không suy. Hai điểm không tạo thành một dải. Payday sẽ hỏi bạn số dự kiến thay vì đoán bừa — và chặn con số “tiêu được hôm nay” cho tới khi biết.
Trên Arc, gas chính là tiền tiêu
Arc dùng USDC làm token gas. Native view (18 chữ số) và ERC-20 view (6 chữ số, tại
0x3600…0000) là cùng một túi tiền nhìn theo hai cách, không phải hai tài sản.
Hệ quả mà một chain kiểu ETH không có: nếu khoá trọn số dư cho các nghĩa vụ thì agent không còn gì để trả phí gọi hàm — khoá đủ tiền nhà mà không trả được tiền nhà. Nên Payday luôn giữ lại một khoản gas, tính theo số giao dịch còn phải làm, và đo giá gas chứ không đoán.
Phong bao
Tiền mừng gửi cho người chưa có ví. Một đường link, người nhận mở được mà không cần tài khoản.
- mã sinh bằng
crypto.randomBytes, 32 ký tự — dò mù là bất khả - chỉ lưu băm, không lưu mã gốc: lộ cơ sở dữ liệu thì không lộ tiền
- so bằng
timingSafeEqual, dùng một lần - mã nằm sau dấu
#nên không lọt vào log máy chủ của bất kỳ proxy nào - mã sai và bao không tồn tại trả cùng một câu — không để ai dò xem bao nào có thật
Bao chưa ai mở vẫn giữ chỗ tiền trong kế hoạch. Không thì cùng một khoản bị tiêu hai lần: một lần đã hứa cho người khác, một lần cho chính bạn.
Cái gì thật, cái gì mô phỏng
Thật
- hợp đồng vault và sổ đăng ký, mã nguồn mở, deploy được kiểm chứng
- khoá / mở khoá / trả hoá đơn — giao dịch trên chain
- số dư và phần đang khoá đọc thẳng từ hợp đồng
- giá gas đo từ mạng
Chưa thật
- nhà cung cấp trong bản demo là agent thử, không phải công ty điện nước
- đường trả TAY vẫn chưa nối kiểm chữ ký → cổng 4 trả
ESCALATE. Đường TỰ ĐỘNG thì kiểm chữ ký ngay trên chain (EIP-712), không đi qua máy chủ - Arc còn ở testnet — không phải tiền thật
- chưa có kỳ lương mẫu để xem thử khi chưa đăng nhập
- phong bao chưa chuyển tiền thật — người nhận bấm nhận thì bản ghi đổi trạng thái, nhưng chưa có giao dịch nào trên chain. Số tiền vẫn được giữ chỗ đúng trong kế hoạch, nên nó không nói dối về phần tiêu được; chỉ là khâu chuyển tiền còn thiếu
- khi chưa nối chain, ứng dụng dựng dải cảnh báo nguyên chiều ngang và không giấu
Ai giữ khoá ví của bạn
Câu này quan trọng hơn mọi tính năng bên trên, nên nó phải trả lời được bằng bằng chứng kiểm lại được, không phải bằng một lời hứa.
Ví của bạn, không phải của Payday
Ví tạo bằng passkey — vân tay, Windows Hello, Face ID. Khoá nằm trong phần cứng bảo mật của máy bạn, không rời thiết bị, và không đi qua máy chủ này bao giờ.
| câu hỏi | trả lời |
|---|---|
| Payday có rút được tiền của bạn không? | Không. Máy chủ không có khoá nào để ký |
| Payday có sửa được luật đã khoá không? | Không. Mọi hàm đổi trạng thái lấy msg.sender |
| Người deploy có quyền gì không? | Không. Hợp đồng không có owner, pause, upgrade |
| Payday đóng cửa thì sao? | Tiền vẫn trong hợp đồng. Bạn gọi thẳng withdraw() bằng bất kỳ công cụ nào |
| Mất máy thì sao? | Khôi phục bằng cụm từ dự phòng của passkey |
Kiểm lại ba câu trên
grep -r "privateKey|createWalletClient" src/ server.js— không dòng nàogrep -c "msg.sender" contracts/PaydayVault.sol— 41 lần, và đó là chủ thể của mọi hàm đổi trạng tháigrep -iE "onlyOwner|pause|upgrade" contracts/PaydayVault.sol— không có
Đây là ba lệnh chạy được trên mã nguồn công khai. Một tuyên bố về custody mà không kiểm lại được thì chỉ là quảng cáo.
⚠️ Điều Payday VẪN làm được: máy chủ giữ phần cấu hình chỉ-để-xem — tên khoản, lịch sử, nhóm. Chiếm được máy chủ thì đọc được dữ liệu tài chính của bạn và làm bạn hiểu sai màn hình, nhưng không chạm được vào tiền. Xem lộ trình để biết phần nào còn phụ thuộc máy chủ.
Nguồn mở, kiểm được từ bên ngoài
Địa chỉ hợp đồng hiện công khai trước khi đăng nhập. Bạn đọc free(),
committed(), paymentOf() bằng bất kỳ công cụ nào mà không cần tài khoản ở đây.
Một sản phẩm giữ tiền mà phải đăng nhập mới xem được nó làm gì thì không kiểm được.
Địa chỉ trên Arc testnet
Đã đối chiếu trên chain
- token
0x3600…0000— USDC, không phải token nào khác - sàn gas 0,5 USDC · độ trễ rút 72 giờ — cả hai immutable
- không owner, không pause, không upgrade
Ba dòng trên đọc thẳng từ hợp đồng chứ không lấy từ biên nhận giao dịch. Biên nhận chỉ nói "giao dịch chạy xong"; nó không nói hợp đồng nhận đúng tham số nào.
Payday — lộ trình · quay lại ứng dụng