Contract f45bbdb3fa2682fb2d1f3314de7924edf7eefab79dff3c602897742b928a4d26

← Back to Index 📥 Download WASM

Meta

cliver 27.0.0#5a7c5fe76530bf4248477ac812fc757146b98cc4
rssdk_spec_shaking 2
rssdkver 26.1.1#8ac18efb681a1c0b4b85a38c5a380300344e3f39
rsver 1.97.1
source_repo github:msci2049-hkt/vigiadinh

Instances

  • CDVX3E3PV4TE5HAHSFS4R3YHOB5SLCYU2KQWO5GCZDV2TPQUZ66SLJMH

Interface

GIA HẠN TTL cho ví nằm im — cron ví phí gọi (be/src/jobs/ttl-keeper.ts). Không đòi auth: gia hạn không đổi được gì, chỉ tốn phí người gọi. Đọc config bên trong nên chính nó đã gia hạn; gọi cả instance của registry để bản thân registry không archive.

fn extend_ttl(env: soroban_sdk::Env, wallet: soroban_sdk::Address)
fn add_guardian(
    env: soroban_sdk::Env,
    wallet: soroban_sdk::Address,
    new_guardian: soroban_sdk::Address,
)
fn is_registered(env: soroban_sdk::Env, wallet: soroban_sdk::Address) -> bool

VETO — chính ví ký (khoá còn sống nào cũng chặn được, qua __check_auth).

fn cancel_recovery(env: soroban_sdk::Env, wallet: soroban_sdk::Address)

Ví TỰ đăng ký (passkey ký qua __check_auth). Chống lockout từ gốc: threshold ∈ [1, số guardian], guardian không trùng, không phải chính ví.

fn register_wallet(
    env: soroban_sdk::Env,
    wallet: soroban_sdk::Address,
    guardians: soroban_sdk::Vec,
    threshold: u32,
    timelock_secs: u64,
)

CHỐNG LOCKOUT: không cho rớt xuống dưới threshold (đổi threshold trước đã).

fn remove_guardian(
    env: soroban_sdk::Env,
    wallet: soroban_sdk::Address,
    guardian: soroban_sdk::Address,
)
fn approve_recovery(
    env: soroban_sdk::Env,
    wallet: soroban_sdk::Address,
    guardian: soroban_sdk::Address,
)

Ai crank cũng được SAU timelock (không đòi auth người dùng) — timelock on-chain là người gác. XOAY KHOÁ THẬT trên smart account rồi mới Finalized.

fn finalize_recovery(env: soroban_sdk::Env, wallet: soroban_sdk::Address)
fn get_wallet_config(
    env: soroban_sdk::Env,
    wallet: soroban_sdk::Address,
) -> WalletConfig

Guardian mở khôi phục, CHỞ KHOÁ MỚI thật (phiếu = phê duyệt đúng khoá này). Initiator được đếm là phiếu đầu tiên.

fn initiate_recovery(
    env: soroban_sdk::Env,
    wallet: soroban_sdk::Address,
    new_signer: Signer,
    initiator: soroban_sdk::Address,
)

0 = hết timelock (finalize được nếu đủ phiếu). Panic nếu không có request.

fn timelock_remaining(env: soroban_sdk::Env, wallet: soroban_sdk::Address) -> u64
fn get_recovery_status(
    env: soroban_sdk::Env,
    wallet: soroban_sdk::Address,
) -> RecoveryRequest

VETO ĐỔI REGISTRY — người thân chặn việc ví bị trỏ sang registry khác.

Vì sao đường này phải đi qua registry chứ không gọi thẳng vào ví: ví không giữ danh sách guardian (registry giữ), nên ví không tự biết ai có quyền chặn. Registry kiểm tư cách rồi gọi vào ví với tư cách INVOKER — cùng khuôn auth đã chứng minh ở recovery_rotate.

Đây là đòn đỡ cho kịch bản: passkey chủ ví bị chiếm → kẻ tấn công xin đổi registry để cắt đứt đường cứu. Timelock cho người thân thấy, hàm này cho họ chặn.

fn veto_registry_change(
    env: soroban_sdk::Env,
    wallet: soroban_sdk::Address,
    guardian: soroban_sdk::Address,
)

Imports

WebAssembly Text (WAT) ▶