Chính sách

Thiết lập các rào chắn có thể lập trình để tự động cho phép, chặn hoặc chuyển các hành động nhạy cảm qua quy trình phê duyệt thông thường trong workspace của bạn. Chính sách đánh giá mọi lệnh rút tiền và lời gọi smart contract dựa trên các quy tắc bạn định nghĩa, nhờ đó hoạt động rủi ro bị chặn lại trước khi chạm tới blockchain.

Tổng quan

Một chính sách là tập hợp các quy tắc tự động chạy mỗi khi có người khởi tạo một hành động được bảo vệ, chẳng hạn như yêu cầu rút tiền hoặc gọi smart contract. Mỗi quy tắc mô tả một điều kiện (ví dụ: "giá trị rút tiền trên $10,000 tới một địa chỉ không nằm trong whitelist") và một hiệu lực:

  • Deny: chặn hoàn toàn hành động
  • Allow: cho phép hành động bỏ qua hàng đợi phê duyệt và được thực hiện ngay

Chính sách đóng vai trò như một lớp phòng thủ luôn hoạt động, bổ sung cho việc phê duyệt của người ký. Thay vì trông chờ mọi người phê duyệt đều nhớ các quy tắc quản lý ngân quỹ, bạn mã hóa các quy tắc đó một lần và để Fystack áp dụng chúng cho mọi giao dịch.

Danh sách chính sách

Cách chính sách được đánh giá

Khi một hành động được bảo vệ diễn ra, Fystack kiểm tra nó với mọi chính sách đang hoạt động áp dụng cho ví liên quan và sử dụng mô hình quyết định an toàn cho lưu ký:

  1. Deny luôn thắng: nếu bất kỳ quy tắc nào khớp với hiệu lực Deny, hành động sẽ bị chặn, ngay cả khi một quy tắc khác cho phép.
  2. Allow bỏ qua phê duyệt: nếu một quy tắc khớp với hiệu lực Allow và không có quy tắc nào chặn, hành động sẽ bỏ qua hàng đợi phê duyệt và được thực hiện.
  3. Không khớp: nếu không có quy tắc nào khớp, hành động tiếp tục đi qua luồng phê duyệt thông thường.

Hành động kích hoạt

Mỗi quy tắc áp dụng cho một hành động kích hoạt, tức là loại thao tác mà quy tắc bảo vệ:

Trigger

Bảo vệ

Withdrawal

Được đánh giá khi có yêu cầu rút tiền. Quy tắc có thể tham chiếu số tiền, giá trị USD, tài sản, địa chỉ đích, trạng thái whitelist, tuổi địa chỉ và hoạt động gần đây của ví, workspace và mạng lưới.

Contract Call

Được đánh giá khi một phương thức smart contract được gọi. Quy tắc có thể tham chiếu mạng lưới, địa chỉ hợp đồng, method selector, tên phương thức, giá trị native, gas limit và các tham số lời gọi đã được giải mã.

Web3 Transfer

Được đánh giá khi một giao dịch chuyển coin native hoặc ERC-20 được gửi qua Web3 raw-transaction API. Quy tắc sử dụng cùng các trường của rút tiền (số tiền, giá trị USD, tài sản, đích đến, mục sổ địa chỉ, ví nội bộ), nhờ đó một điều kiện có ý nghĩa như nhau trên cả hai trigger. Giao dịch chuyển ERC-20 cũng được đánh giá như Contract Call.

Web3 Message Signing

Được đánh giá khi một ví được yêu cầu ký thông điệp (personal_sign, eth_sign, eth_signTypedData_v4). Quy tắc có thể phát hiện token permit (EIP-2612, DAI, Permit2), spender, token, số tiền và thời hạn của chúng. Chỉ hỗ trợ Deny: một thông điệp đã ký luôn cần phê duyệt.

Cách tạo chính sách

Bước 1: Mở trang Policies

Trên thanh bên trái, mở Policies, sau đó nhấp Create Policy.

Bước 2: Đặt tên chính sách và chọn nhóm phê duyệt

Đặt cho chính sách một Name rõ ràng mô tả những gì nó bảo vệ (ví dụ: "Large withdrawal guard"). Sau đó chọn Nhóm phê duyệt sẽ xem xét các thay đổi đối với chính sách này.

Mọi chính sách đều gắn với một nhóm phê duyệt. Điều này có nghĩa là một chính sách không thể được tạo hoặc chỉnh sửa một cách âm thầm, mọi thay đổi đều phải được xem xét và phê duyệt, giống như một lệnh rút tiền.

Biểu mẫu tạo chính sách

Bước 3: Áp dụng cho các ví cụ thể (tùy chọn)

Theo mặc định, chính sách áp dụng cho tất cả các ví trong workspace. Để giới hạn phạm vi cho một nhóm ví, hãy chọn một hoặc nhiều ví trong trường Wallets. Các quy tắc của chính sách sẽ chỉ được đánh giá cho các hành động trên những ví đó.

Bộ chọn ví

Bước 4: Thêm quy tắc

Thêm một hoặc nhiều quy tắc vào chính sách. Với mỗi quy tắc, chọn Trigger (Withdrawal, Contract Call, Web3 Transfer hoặc Web3 Message Signing), xây dựng Condition và chọn Effect (Allow hoặc Deny).

Trình xây dựng điều kiện hiển thị các trường có sẵn cho trigger đã chọn, nhờ đó bạn có thể tạo biểu thức mà không cần ghi nhớ tên trường. Để không phải viết quy tắc từ đầu, hãy bắt đầu từ một trong các Mẫu chính sách bên dưới.

Biểu mẫu thêm quy tắc

Chính sách cũng có thể được lập trình bằng trình xây dựng JSON, hữu ích cho người dùng nâng cao muốn sao chép/dán quy tắc hoặc dùng logic phức tạp hơn mức giao diện hỗ trợ.

Trình xây dựng JSON cho chính sách

Bước 5: Gửi để phê duyệt

Nhấp Create. Vì mọi chính sách đều phải qua phê duyệt, chính sách mới chưa có hiệu lực ngay, mà được gửi tới nhóm phê duyệt của nó dưới dạng yêu cầu Pending Approval, cùng với tất cả các quy tắc.

Yêu cầu phê duyệt chính sách

Bước 6: Phê duyệt chính sách

Một thành viên của nhóm phê duyệt được chỉ định mở yêu cầu đang chờ, xem xét chính sách được đề xuất cùng các quy tắc của nó và phê duyệt. Chỉ khi đó chính sách mới chuyển sang Active và bắt đầu bảo vệ giao dịch.

Hộp thoại phê duyệt chính sách

Mẫu chính sách

Hãy bắt đầu từ một mẫu thay vì một chính sách trống. Mỗi mẫu dưới đây là một chính sách hoàn chỉnh cho một cấu hình ví phổ biến: những gì nó bảo vệ, các quy tắc được diễn giải bằng ngôn ngữ thông thường, và JSON bạn có thể dán thẳng vào trình chỉnh sửa chính sách.

Sử dụng mẫu

  1. Vào Policies, nhấp Create Policy và chuyển trình chỉnh sửa sang tab JSON.
  2. Dán Policy JSON của mẫu.
  3. Chuyển lại sang Form. Chọn Approval Group và các Wallets mà chính sách cần áp dụng. Các mẫu cố ý để trống cả hai, và danh sách ví trống nghĩa là mọi ví trong workspace.
  4. Mở từng quy tắc và thay thế mọi placeholder trong dấu ngoặc nhọn, chẳng hạn <payout_api_key_id>. Các quy tắc tham chiếu đến thành viên, khóa API, ví hoặc mục sổ địa chỉ sẽ hiển thị bộ chọn trong trình xây dựng, nhờ đó bạn có thể chọn theo tên thay vì phải tra cứu ID.
  5. Điều chỉnh các giới hạn theo khối lượng của bạn, sau đó nhấp Create và đưa chính sách đi phê duyệt.

Bạn cũng có thể gửi cùng JSON đó tới Policies API.

Chọn mẫu

Mẫu

Áp dụng cho

Tự động phê duyệt

Giới hạn chính

Kho dự trữ

Ví lưu ký và ví ngân quỹ

Không có

Chỉ sổ địa chỉ, thời gian chờ 24 giờ, 250,000 USD mỗi ngày cho mỗi ví

Chi trả từ ví nóng

Ví vận hành mà đội ngũ của bạn sử dụng

Các khoản chi nhỏ tới địa chỉ tin cậy

2,000 USD tới địa chỉ lạ, 50,000 USD mỗi ngày, 60 lệnh mỗi giờ

Bot chi trả qua API

Các ví mà một khóa API tự động dùng để chi trả

Các khoản chi tối đa 500 USD từ một khóa

Chỉ stablecoin, 2,000 USD mỗi khoản chi, 20,000 USD mỗi ngày cho khóa

Gom tiền nạp

Ví nạp tiền của khách hàng

Các lệnh sweep về ví ngân quỹ của bạn

Tiền chỉ có thể chuyển về ví ngân quỹ

Vận hành DeFi

Các ví sử dụng Web3 và dApp

Không có

Chỉ các hợp đồng được phê duyệt, không token lạ, không chữ ký rủi ro

Chốt chặn toàn workspace

Tất cả các ví

Không có

500,000 USD mỗi ngày trên toàn workspace, đóng băng các lệnh rút lớn vào cuối tuần

Kho dự trữ

Dùng cho: các ví giữ tiền dự trữ và chỉ chuyển tiền vài lần mỗi tuần. Không có gì được tự động phê duyệt, nên mọi giao dịch chuyển vẫn đến tay người phê duyệt, và các quy tắc chặn những giao dịch mà người phê duyệt không bao giờ nên được yêu cầu ký.

Ví: chọn các ví lưu ký và ví ngân quỹ của bạn.

Hiệu lực

Quy tắc

Lý do

Deny

Chặn rút tiền tới bất kỳ địa chỉ bên ngoài nào không có trong sổ địa chỉ.

Một lỗi gõ nhầm hoặc địa chỉ bị tráo trong clipboard không bao giờ có thể được phê duyệt do nhầm lẫn.

Deny

Chặn rút tiền tới địa chỉ được thêm vào sổ địa chỉ chưa đầy 24 giờ.

Người có quyền chỉnh sửa sổ địa chỉ không thể thêm một địa chỉ rồi rút cạn tiền tới đó ngay trong ngày.

Deny

Chặn lệnh rút tiền khiến ví vượt quá 250,000 USD trong 24 giờ, tính cả các lệnh rút đang chờ.

Hạn chế thiệt hại nếu người phê duyệt bị xâm phạm hoặc bị lừa.

Deny

Áp dụng quy tắc sổ địa chỉ cho các giao dịch chuyển native và ERC-20 được gửi qua Web3 API.

Đóng con đường vòng qua các quy tắc rút tiền.

Policy JSON

{
  "name": "Treasury vault guard",
  "description": "Hard limits for custody and treasury wallets",
  "approval_group_id": "",
  "wallet_ids": [],
  "rules": [
    {
      "trigger_action": "withdrawal.create",
      "condition": "!withdrawal.destination_is_internal && !withdrawal.is_whitelisted",
      "effect": "DENY",
      "description": "Only send to address book entries or workspace wallets"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "withdrawal.is_whitelisted && withdrawal.address_age_sec < 86400",
      "effect": "DENY",
      "description": "New address book addresses wait 24 hours"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "wallet.projected_outflow_24h > 250000",
      "effect": "DENY",
      "description": "Cap each wallet at 250000 USD per 24 hours"
    },
    {
      "trigger_action": "web3.transfer",
      "condition": "!withdrawal.destination_is_internal && !withdrawal.is_whitelisted",
      "effect": "DENY",
      "description": "Apply the address book rule to Web3 transfers"
    }
  ]
}

Tinh chỉnh

  • Cần thời gian chờ nghiêm ngặt hơn? Đổi 86400 (24 giờ) thành 172800 (48 giờ).
  • Để giữ tiền lưu ký bên trong workspace, chỉ có thể chuyển tới các ví nóng của chính bạn, hãy thêm một quy tắc Deny: wallet.purpose == 'custody' && !withdrawal.destination_is_internal.
  • Để giới hạn một tài sản theo đơn vị của chính nó, hãy thêm withdrawal.asset_symbol == 'BTC' && wallet.asset_projected_outflow_24h > 5.
Chi trả từ ví nóng

Dùng cho: các ví vận hành mà đội ngũ của bạn dùng để chi trả hằng ngày. Các khoản chi nhỏ, thường lệ tới người nhận đã biết sẽ bỏ qua phê duyệt, còn mọi thứ khác sẽ được xem xét hoặc bị chặn.

Ví: chọn các ví nóng hoặc ví thanh toán của bạn.

Hiệu lực

Quy tắc

Lý do

Deny

Chặn rút tiền trên 2,000 USD tới các địa chỉ không có trong sổ địa chỉ.

Các khoản lớn hơn phải được gửi tới một địa chỉ đã được thẩm định.

Deny

Chặn lệnh rút tiền khiến ví vượt quá 50,000 USD trong 24 giờ.

Giới hạn tình huống xấu nhất, bao gồm cả các khoản chi được tự động phê duyệt.

Deny

Chặn rút tiền khi ví đã gửi 60 lệnh trong giờ qua.

Phát hiện một script hoặc phiên bị xâm phạm đang gửi nhiều lệnh rút nhỏ.

Allow

Bỏ qua phê duyệt cho các lệnh rút tối đa 1,000 USD tới địa chỉ đã nằm trong sổ địa chỉ ít nhất 24 giờ.

Người phê duyệt không còn mất thời gian cho các khoản chi thường lệ.

Điều gì xảy ra với một lệnh rút tiền

Lệnh rút tiền

Kết quả

500 USD tới một mục sổ địa chỉ được thêm vào tuần trước

Được tự động phê duyệt bởi quy tắc Allow

500 USD tới một địa chỉ được thêm vào một giờ trước

Chuyển tới người phê duyệt, vì địa chỉ còn quá mới đối với quy tắc Allow

1,500 USD tới một địa chỉ lạ

Chuyển tới người phê duyệt

5,000 USD tới một địa chỉ lạ

Bị chặn

800 USD tới một địa chỉ tin cậy khi ví đã gửi 49,500 USD trong ngày

Bị chặn, vì Deny luôn thắng Allow

Policy JSON

{
  "name": "Hot wallet payouts",
  "description": "Auto approve routine payouts and cap the worst case",
  "approval_group_id": "",
  "wallet_ids": [],
  "rules": [
    {
      "trigger_action": "withdrawal.create",
      "condition": "!withdrawal.destination_is_internal && !withdrawal.is_whitelisted && withdrawal.value_usd > 2000",
      "effect": "DENY",
      "description": "Unknown recipients are limited to 2000 USD"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "wallet.projected_outflow_24h > 50000",
      "effect": "DENY",
      "description": "Cap each wallet at 50000 USD per 24 hours"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "wallet.withdrawal_count_1h > 60",
      "effect": "DENY",
      "description": "Stop bursts of more than 60 withdrawals per hour"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "withdrawal.is_whitelisted && withdrawal.address_age_sec >= 86400 && withdrawal.value_usd <= 1000",
      "effect": "ALLOW",
      "description": "Auto approve small payouts to trusted addresses"
    }
  ]
}

Tinh chỉnh

  • Trước tiên hãy tăng hoặc giảm hạn mức tự động phê duyệt (1000). Giữ nó thấp hơn nhiều so với giới hạn hằng ngày của mỗi ví.
  • Để chỉ tự động phê duyệt cho một số người nhận, chẳng hạn tài khoản sàn giao dịch của bạn, hãy thay withdrawal.is_whitelisted trong quy tắc Allow bằng điều kiện Destination · Address book entry là bất kỳ mục nào bạn tin cậy.
  • Nếu đội ngũ của bạn làm việc theo giờ cố định, hãy thêm công thức giờ hành chính từ phần Công thức quy tắc bên dưới.
Bot chi trả qua API

Dùng cho: một dịch vụ backend gửi các khoản chi cho khách hàng qua khóa API. Các khoản chi nhỏ được gửi đi mà không cần chờ người phê duyệt, các khoản trung bình sẽ được xem xét, và khóa có ngân sách cứng hằng ngày.

Ví: chọn các ví mà dịch vụ chi trả dùng để gửi tiền.

Hiệu lực

Quy tắc

Lý do

Deny

Chặn khóa chi trả gửi bất kỳ thứ gì ngoài USDT và USDC.

Khóa bị lộ không thể di chuyển các tài sản khác của bạn.

Deny

Chặn mọi khoản chi đơn lẻ từ khóa vượt quá 2,000 USD.

Các khoản chi lớn hơn phải do một người tạo.

Deny

Chặn khóa khi tổng các khoản chi của nó vượt quá 20,000 USD trong 24 giờ, trên tất cả các ví.

Ngân sách hằng ngày cho khóa, bất kể khóa dùng ví nào.

Allow

Bỏ qua phê duyệt cho các khoản chi tối đa 500 USD từ khóa.

Khách hàng nhận được các khoản chi nhỏ ngay lập tức. Các khoản chi từ 500 đến 2,000 USD sẽ được chuyển tới người phê duyệt.

Policy JSON

{
  "name": "API payout bot",
  "description": "Budget and auto approval for the payout API key",
  "approval_group_id": "",
  "wallet_ids": [],
  "rules": [
    {
      "trigger_action": "withdrawal.create",
      "condition": "principal.api_key_id in ['<payout_api_key_id>'] && !(withdrawal.asset_symbol in ['USDT', 'USDC'])",
      "effect": "DENY",
      "description": "Payout key sends stablecoins only"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "principal.api_key_id in ['<payout_api_key_id>'] && withdrawal.value_usd > 2000",
      "effect": "DENY",
      "description": "Payout key cannot send more than 2000 USD at once"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "principal.api_key_id in ['<payout_api_key_id>'] && workspace.initiator_projected_outflow_24h > 20000",
      "effect": "DENY",
      "description": "Payout key is capped at 20000 USD per 24 hours"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "principal.api_key_id in ['<payout_api_key_id>'] && withdrawal.value_usd <= 500",
      "effect": "ALLOW",
      "description": "Auto approve payouts up to 500 USD"
    }
  ]
}

Tinh chỉnh

  • Thay <payout_api_key_id> trong mọi quy tắc, hoặc chọn khóa bằng bộ chọn Initiator · API key. Dùng cùng một khóa trong cả bốn quy tắc.
  • Địa chỉ chi trả cho khách hàng thường không có trong sổ địa chỉ của bạn, vì vậy mẫu này không yêu cầu điều đó. Thay vào đó, rủi ro được kiểm soát bằng giới hạn cho mỗi khoản chi và giới hạn hằng ngày.
  • Thêm các ký hiệu khác vào danh sách, chẳng hạn 'DAI', nếu bạn chi trả bằng các stablecoin khác.
Gom tiền nạp

Dùng cho: các ví nạp tiền riêng cho từng khách hàng, nơi tiền chỉ được phép chuyển về ví ngân quỹ của bạn. Đích đến là cố định, vì vậy đây là luồng an toàn nhất để tự động hóa hoàn toàn.

Ví: chọn các ví nạp tiền của khách hàng, hoặc để trống danh sách để dựa vào việc kiểm tra mục đích ví.

Hiệu lực

Quy tắc

Lý do

Deny

Chặn rút tiền từ ví nạp tiền tới bất kỳ đâu ngoài ví ngân quỹ của bạn.

Tiền nạp không bao giờ có thể rời khỏi workspace trực tiếp.

Allow

Bỏ qua phê duyệt cho các giao dịch chuyển từ ví nạp tiền về ví ngân quỹ của bạn.

Các lệnh sweep chạy mà không cần chờ ai.

Policy JSON

{
  "name": "Deposit sweep",
  "description": "Deposit wallets sweep to treasury only",
  "approval_group_id": "",
  "wallet_ids": [],
  "rules": [
    {
      "trigger_action": "withdrawal.create",
      "condition": "wallet.purpose == 'user' && !(withdrawal.destination_wallet_id in ['<treasury_wallet_id>'])",
      "effect": "DENY",
      "description": "Deposit wallets can only send to the treasury"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "wallet.purpose == 'user' && withdrawal.destination_wallet_id in ['<treasury_wallet_id>']",
      "effect": "ALLOW",
      "description": "Auto approve sweeps to the treasury"
    }
  ]
}

Tinh chỉnh

  • Thay <treasury_wallet_id>, hoặc chọn ví bằng bộ chọn Destination · Workspace wallet.
  • Để cho phép nhiều hơn một đích sweep, hãy thêm ID của chúng vào cả hai danh sách.
Vận hành DeFi

Dùng cho: các ví tương tác với dApp thông qua Web3 API. Mọi lời gọi vẫn được chuyển tới người phê duyệt, và các quy tắc sẽ chặn những lời gọi và chữ ký mà người phê duyệt thường không thể đánh giá được từ dữ liệu thô.

Ví: chọn các ví bạn kết nối với dApp.

Hiệu lực

Quy tắc

Lý do

Deny

Chặn lời gọi tới bất kỳ hợp đồng nào không có trong danh sách của bạn.

Một dApp lừa đảo không thể đưa lời gọi tới hợp đồng lạ đến trước mặt người phê duyệt.

Deny

Chặn việc cấp quyền token (approve, selector 0x095ea7b3) trên bất kỳ hợp đồng nào ngoài danh sách token của bạn.

Allowance là cách phổ biến để rút cạn ví về sau.

Deny

Chặn chuyển các token không có trong danh mục tài sản của Fystack.

Token lạ không có giá trị USD, nên các giới hạn số tiền không thể áp dụng cho chúng.

Deny

Chặn việc ký token permit với số lượng không giới hạn.

Một permit đã ký cho phép spender di chuyển token về sau mà không cần thêm giao dịch nào từ bạn.

Deny

Chặn việc ký permit cho bất kỳ spender nào không có trong danh sách của bạn.

Lừa đảo permit thường yêu cầu bạn ký cho một spender của kẻ tấn công.

Deny

Chặn các yêu cầu eth_sign.

eth_sign có thể ký một giao dịch bị ẩn, và các dApp hiện đại không cần đến nó.

Policy JSON

{
  "name": "DeFi operations guard",
  "description": "Approved contracts and safe signatures for dApp wallets",
  "approval_group_id": "",
  "wallet_ids": [],
  "rules": [
    {
      "trigger_action": "web3.contract_call",
      "condition": "!(resource.contract_address in ['<router_address>', '<vault_address>', '<token_address>'])",
      "effect": "DENY",
      "description": "Only call approved contracts"
    },
    {
      "trigger_action": "web3.contract_call",
      "condition": "resource.method_selector == '0x095ea7b3' && !(resource.contract_address in ['<token_address>'])",
      "effect": "DENY",
      "description": "Only approve allowances on known tokens"
    },
    {
      "trigger_action": "web3.transfer",
      "condition": "!withdrawal.asset_is_known",
      "effect": "DENY",
      "description": "Block transfers of unknown tokens"
    },
    {
      "trigger_action": "web3.sign_message",
      "condition": "resource.is_permit && resource.permit_amount_is_unlimited",
      "effect": "DENY",
      "description": "Block unlimited token permits"
    },
    {
      "trigger_action": "web3.sign_message",
      "condition": "resource.is_permit && !(resource.permit_spender in ['<trusted_spender_address>'])",
      "effect": "DENY",
      "description": "Block permits to untrusted spenders"
    },
    {
      "trigger_action": "web3.sign_message",
      "condition": "resource.method == 'eth_sign'",
      "effect": "DENY",
      "description": "Block raw eth_sign"
    }
  ]
}

Tinh chỉnh

  • Địa chỉ hợp đồng và token phải viết thường.
  • Thêm mọi hợp đồng mà chiến lược của bạn sử dụng, chẳng hạn router, vault và hợp đồng token, trước khi bật chính sách, nếu không các lời gọi hợp lệ sẽ bị chặn.
  • Quy tắc ký thông điệp chỉ hỗ trợ Deny. Một chữ ký vượt qua các quy tắc này vẫn được chuyển tới người phê duyệt.
Chốt chặn toàn workspace

Dùng cho: một lưới an toàn trên mọi ví. Nó phát hiện việc rút cạn tiền được phân tán qua nhiều ví, khóa hoặc thành viên, điều mà giới hạn của một ví đơn lẻ sẽ bỏ sót.

Ví: để trống danh sách để chính sách áp dụng cho tất cả các ví.

Hiệu lực

Quy tắc

Lý do

Deny

Chặn lệnh rút tiền khiến toàn bộ workspace vượt quá 500,000 USD trong 24 giờ.

Mức trần tuyệt đối, bất kể các chính sách khác cho phép gì.

Deny

Chặn rút tiền khi workspace đã gửi 300 lệnh trong giờ qua.

Phát hiện hành vi lạm dụng tự động được phân tán qua nhiều ví.

Deny

Chặn các lệnh rút trên 25,000 USD vào thứ Bảy và Chủ nhật (UTC).

Các giao dịch chuyển lớn phải chờ đến khi đội ngũ của bạn có mặt để theo dõi.

Policy JSON

{
  "name": "Workspace backstop",
  "description": "Workspace wide ceilings for all wallets",
  "approval_group_id": "",
  "wallet_ids": [],
  "rules": [
    {
      "trigger_action": "withdrawal.create",
      "condition": "workspace.projected_outflow_24h > 500000",
      "effect": "DENY",
      "description": "Cap the workspace at 500000 USD per 24 hours"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "workspace.withdrawal_count_1h > 300",
      "effect": "DENY",
      "description": "Stop bursts of more than 300 withdrawals per hour"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "context.day_of_week in ['Saturday', 'Sunday'] && withdrawal.value_usd > 25000",
      "effect": "DENY",
      "description": "No withdrawals over 25000 USD on weekends"
    }
  ]
}

Tinh chỉnh

  • Ngày và giờ được tính theo UTC.
  • Đặt giới hạn workspace cao hơn tổng các ngày bận rộn nhất bình thường trên tất cả các ví, để chốt chặn chỉ kích hoạt khi có bất thường thực sự.

Công thức quy tắc

Các quy tắc đơn lẻ bạn có thể thêm vào bất kỳ chính sách nào. Dán điều kiện vào tab Expression của một quy tắc, hoặc xây dựng nó trong Fields.

Mục tiêu

Trigger

Hiệu lực

Điều kiện

Chặn một danh sách địa chỉ, chẳng hạn địa chỉ bị trừng phạt hoặc lừa đảo

Withdrawal

Deny

withdrawal.address_book_id in ['<blocklist_entry_id>']. Giữ các địa chỉ trong cùng một mục sổ địa chỉ, để khi cập nhật mục đó thì quy tắc cũng được cập nhật.

Chỉ owner và admin mới có thể gửi trên 50,000 USD

Withdrawal

Deny

!(principal.role in ['owner', 'admin']) && withdrawal.value_usd > 50000

Chỉ cho phép rút tiền lớn trong giờ hành chính (09:00 đến 18:00 UTC)

Withdrawal

Deny

withdrawal.value_usd > 25000 && (context.hour < 9 || context.hour >= 18). Có sử dụng dấu ngoặc, vì vậy hãy viết nó trong tab Expression.

Giới hạn một ví ở mức 5 BTC mỗi ngày

Withdrawal

Deny

withdrawal.asset_symbol == 'BTC' && wallet.asset_projected_outflow_24h > 5

Giới hạn một mạng lưới ở mức 100,000 USD mỗi ngày

Withdrawal

Deny

withdrawal.network_code == '<network_code>' && workspace.network_projected_outflow_24h > 100000

Tự động phê duyệt giao dịch chuyển giữa các ví của chính bạn

Withdrawal

Allow

withdrawal.destination_is_internal && withdrawal.value_usd <= 10000

Tự động phê duyệt nạp tiền vào các tài khoản sàn giao dịch tin cậy

Withdrawal

Allow

withdrawal.address_book_id in ['<exchange_entry_id>'] && withdrawal.address_age_sec >= 172800 && withdrawal.value_usd <= 25000

Ngăn công việc dồn ứ trong hàng đợi phê duyệt

Withdrawal

Deny

wallet.pending_outflow > 100000. Chặn các yêu cầu mới khi đã có 100,000 USD đang chờ.

Chặn các lời gọi hợp đồng tốn kém bất thường

Contract Call

Deny

resource.gas_limit > 1000000

Triển khai chính sách

Quy tắc Allow thay đổi việc ai phải xem xét một giao dịch, vì vậy hãy đưa chúng vào sau cùng.

  1. Tuần 1, chỉ quy tắc Deny: tạo chính sách chỉ với các quy tắc Deny. Chưa có gì được tự động phê duyệt, và các quy tắc chỉ chặn những điều không bao giờ nên xảy ra.
  2. Xem xét hàng đợi phê duyệt: tìm các lệnh rút tiền mà người phê duyệt lần nào cũng duyệt mà không thay đổi gì, chẳng hạn cùng người nhận, cùng tài sản và cùng khoảng số tiền.
  3. Thêm một quy tắc Allow hẹp: viết một quy tắc Allow cho chính xác lưu lượng đó, với hạn mức thấp hơn mức bạn nghĩ mình cần.
  4. Nâng hạn mức từ từ: chỉ mở rộng quy tắc Allow sau khi nó đã chạy ổn định một thời gian. Mỗi thay đổi đều phải qua phê duyệt và xuất hiện trong Lịch sử thay đổi của chính sách.

Viết điều kiện quy tắc

Điều kiện là một biểu thức trả về true hoặc false. Khi biểu thức là true, hiệu lực của quy tắc sẽ được áp dụng. Kết hợp các trường bằng and, or và not, và so sánh giá trị bằng các toán tử như >, >=, == và !=.

Trình xây dựng điều kiện

Các trường điều kiện

Các trường có sẵn trong trình xây dựng phụ thuộc vào trigger của quy tắc. Hãy dùng các nhãn dưới đây khi quyết định trường nào phù hợp với một quy tắc.

Có sẵn trên mọi trigger

Trường

Dùng cho

Initiator type

Hành động đến từ phiên web (user) hay từ khóa API (api_key).

Member

Quy tắc cho các thành viên workspace cụ thể. Chọn họ từ danh sách thành viên.

API key

Quy tắc cho các khóa API cụ thể, ví dụ một khóa chi trả tự động. Phiên web không có khóa API, vì vậy hãy kết hợp kiểm tra is none of với Initiator type.

User role

Quy tắc dựa trên vai trò trong workspace: owner, admin, signer, proposer hoặc viewer.

Hour

Kiểm soát theo thời điểm trong ngày, dùng giờ UTC từ 0 đến 23.

Day of week

Quy tắc theo giờ hành chính, cuối tuần hoặc chỉ ngày trong tuần.

Source wallet

Quy tắc cho các ví cụ thể trong cùng một chính sách.

Source wallet purpose

Quy tắc theo mục đích ví: general, custody, payment, user, one-time use, gas tank hoặc deployment.

Source wallet type

Kiểm soát khác nhau cho ví MPC và ví tiêu chuẩn.

User email (legacy)

Vẫn được đánh giá cho các quy tắc hiện có. Quy tắc mới dùng Member, vì email có thể thay đổi.

Các trường rút tiền

Trường

Dùng cho

Amount

Giới hạn theo đơn vị tài sản, chẳng hạn trên 10 ETH hoặc 1 BTC.

Value USD

Giới hạn theo đô la trên mọi tài sản.

Asset symbol

Quy tắc theo tài sản cho các ký hiệu như USDT, ETH, BTC hoặc SOL.

Native asset

Kiểm soát khác nhau cho tài sản native của mạng lưới so với token.

Destination address

Chặn hoặc cho phép các địa chỉ người nhận cụ thể.

Network code

Giới hạn theo mạng lưới, chẳng hạn quy tắc nghiêm ngặt hơn trên một chuỗi.

In address book

Kiểm soát cho người nhận có hoặc không nằm trong bất kỳ mục sổ địa chỉ nào.

Address book entry

Kiểm soát cho các mục sổ địa chỉ cụ thể. Một mục bao gồm tất cả địa chỉ của nó, vì vậy một mục hoạt động như một danh sách có tên.

Address age

Quy tắc thời gian chờ: số giây kể từ khi địa chỉ đích được thêm vào mục sổ địa chỉ của nó.

Internal wallet

Kiểm soát cho giao dịch chuyển giữa các ví trong cùng một workspace.

Workspace wallet

Kiểm soát cho giao dịch chuyển tới các ví cụ thể trong cùng một workspace.

Các trường hoạt động rút tiền

Trường

Dùng cho

Wallet outflow

Dòng tiền ra tính bằng USD theo từng ví trong 1, 6 hoặc 24 giờ qua.

Wallet withdrawal count

Kiểm soát đột biến khi có nhiều lệnh rút từ một ví trong giờ qua.

Workspace outflow

Dòng tiền ra tính bằng USD trên toàn workspace trong 1, 6 hoặc 24 giờ qua.

Workspace withdrawal count

Khối lượng rút tiền trên toàn workspace trong giờ qua.

Network outflow

Dòng tiền ra tính bằng USD của workspace trên mạng lưới đã chọn trong 1, 6 hoặc 24 giờ qua.

Network withdrawal count

Khối lượng rút tiền của workspace trên mạng lưới đã chọn trong giờ qua.

Các trường hoạt động đang chờ và dự kiến

Trường

Dùng cho

Pending outflow

Giá trị USD của các lệnh rút chưa được thực thi (đang chờ phê duyệt, đang xếp hàng hoặc đang nạp gas), bất kể đã tồn tại bao lâu. Có sẵn theo ví, workspace và mạng lưới.

Projected 24h outflow

Dòng tiền ra đã thực hiện trong 24 giờ qua, cộng dòng tiền ra đang chờ, cộng lệnh rút đang được kiểm tra. Dùng trường này cho các giới hạn: projected 24h outflow over $100,000 nghĩa là lệnh rút này sẽ vượt quá giới hạn. Có sẵn theo ví, workspace và mạng lưới.

Projected 24h asset outflow

Cùng phép dự kiến đó cho ví nguồn, tính theo đơn vị của tài sản được rút, ví dụ tối đa 5 BTC mỗi ngày.

Initiator projected 24h outflow

Cùng phép dự kiến đó cho các lệnh rút được tạo bởi cùng một thành viên hoặc khóa API, trên toàn workspace.

Các trường lời gọi hợp đồng

Trường

Dùng cho

Network code

Quy tắc lời gọi hợp đồng theo từng chuỗi.

Contract address

Chặn hợp đồng lạ hoặc cho phép hợp đồng đã biết.

Method selector

Kiểm tra hàm ở mức thấp, chẳng hạn selector chuyển ERC-20 0xa9059cbb.

Method name

Kiểm tra phương thức dễ đọc khi có metadata.

Value wei

Giá trị native gửi kèm lời gọi hợp đồng.

Gas limit

Chặn các lời gọi tốn kém bất thường hoặc rủi ro.

Decoded arguments

Quy tắc ở mức tham số khi Fystack có thể giải mã lời gọi. Giao dịch chuyển ERC-20 cung cấp người nhận và giá trị token.

Các trường Web3 Transfer

Quy tắc Web3 Transfer sử dụng Các trường rút tiền cùng với các trường bên dưới. Không có các trường hoạt động, vì các giao dịch chuyển này không phải là lệnh rút tiền.

Trường

Dùng cho

Asset in catalog

False khi hợp đồng token không có trong danh mục tài sản. Khi đó số tiền, giá trị USD và ký hiệu sẽ trống, vì vậy hãy chặn token lạ một cách tường minh nếu cần.

Token contract

Quy tắc cho một hợp đồng token cụ thể. Để trống đối với coin native.

Các trường ký thông điệp

Trường

Dùng cho

Signing method

personal_sign, eth_sign, or eth_signTypedData_v4.

Typed data type, domain name, verifying contract

Quy tắc cho các thông điệp typed-data cụ thể, chẳng hạn lệnh của một dApp đã biết.

Is a token permit

True đối với các thông điệp EIP-2612, DAI và Permit2, cho phép spender di chuyển token về sau mà không cần thêm chữ ký.

Permit spender

Chặn permit cho các spender bạn không tin tưởng.

Permit tokens

Các hợp đồng token mà permit bao gồm. Dùng trong trình chỉnh sửa biểu thức, ví dụ '0x…' in resource.permit_tokens.

Permit unlimited amount

True đối với allowance giá trị tối đa (2159 trở lên, hoặc permit DAI có thiết lập allowed).

Permit deadline

Thời điểm Unix mà permit hoặc chữ ký của nó hết hạn. Bằng 0 khi thông điệp không có thời hạn.

Trạng thái chính sách

Trạng thái

Ý nghĩa

Pending

Chính sách, hoặc một thay đổi đối với nó, đang chờ nhóm phê duyệt đồng ý. Chưa được áp dụng.

Active

Chính sách đã được phê duyệt và đang hoạt động. Các quy tắc của nó được đánh giá cho mọi hành động được bảo vệ trên các ví áp dụng.

Inactive

Chính sách đã bị tắt và không được đánh giá.

Rejected

Một thay đổi đang chờ đã bị người phê duyệt từ chối và không có hiệu lực.

Lịch sử thay đổi

Mọi thay đổi đối với chính sách đều được ghi lại. Mục History của chính sách hiển thị từng phiên bản cùng người đề xuất, những gì đã thay đổi (theo từng trường), và việc nó được phê duyệt hay bị từ chối. Điều này mang lại cho bạn một dấu vết kiểm toán đầy đủ về cách các rào chắn của bạn thay đổi theo thời gian.

Lịch sử thay đổi chính sách

Thực tiễn tốt nhất

  • Bắt đầu với các quy tắc Deny cho những tình huống rủi ro cao nhất (giao dịch chuyển lớn, đích đến lạ) trước khi thêm các quy tắc Allow để tạo sự tiện lợi
  • Hãy nhớ rằng Deny luôn thắng, hãy tận dụng điều này để đặt các giới hạn cứng mà không quy tắc Allow nào có thể ghi đè
  • Giới hạn phạm vi chính sách cho các ví cụ thể khi các ví có mức độ rủi ro khác nhau, thay vì áp dụng một chính sách rộng cho mọi nơi
  • Hạn chế sử dụng quy tắc Allow, vì chúng bỏ qua hàng đợi phê duyệt, nên chỉ dành chúng cho các mẫu giao dịch giá trị thấp và rõ ràng đáng tin cậy
  • Khi một quy tắc Allow tin tưởng các mục sổ địa chỉ, hãy giữ lại điều kiện tuổi địa chỉ mà trình xây dựng tự thêm vào. Bất kỳ ai có quyền chỉnh sửa sổ địa chỉ đều có thể thêm một địa chỉ vào mục tin cậy, và việc kiểm tra tuổi buộc địa chỉ mới phải chờ trước khi được tự động phê duyệt
  • Xác thực mọi điều kiện trước khi gửi, và xem xét thay đổi ở bước phê duyệt để xác nhận nó hoạt động như mong muốn
  • Xử lý các thay đổi chính sách với sự cẩn trọng như với lệnh rút tiền, vì cổng phê duyệt tồn tại để không một cá nhân nào có thể âm thầm làm suy yếu các biện pháp kiểm soát của bạn