Payday · agent giữ ví

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ácrủi ro nếu chậmnên là
chặn tiền đi ratrả nhầm chỗ, bị lừatức thì
rút tiền về mìnhkhông có — tiền vẫn an toànchờ 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:

  1. hình dạng — đủ trường bắt buộc
  2. đã đăng ký — có phải nghĩa vụ của bạn không
  3. địa chỉ nhận có đổi không
  4. chữ ký
  5. đã trả lần nào chưa
  6. đơn vị tiền
  7. ngày đến hạn có hợp lý
  8. trần bạn đặt
  9. 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

PAYđủ điều kiện, agent tự trả
REJECTsai rành rành — không cần hỏi ai, và không được hỏi
ESCALATEcó thể hợp lệ, có thể là lừa → dừng, hỏi người

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ánhậ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.

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ỏitrả 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ào
  • grep -c "msg.sender" contracts/PaydayVault.sol — 41 lần, và đó là chủ thể của mọi hàm đổi trạng thái
  • grep -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