ChainSigTransaction Policy
ChainSigTransaction Policy defines what transactions can be signed using NEAR chain signatures. This enables Dew Vault Managers to build sophisticated cross-chain DeFi strategies.
ChainSigTransaction Policy can be created or updated through upsert_policy policy.
#[near(serializers = [json, borsh])]
#[derive(Clone)]
pub struct ChainSigTransactionConfig {
pub derivation_path: String,
pub chain_environment: ChainEnvironment,
pub restrictions: Vec<Restriction>,
}Below is an example of a ChainSigTransaction Policy:
{
id: "approve_core_usdc_bridge",
description: "Approve Core USDC spending by bridge contract for Core to Arbitrum bridging",
required_role: "strategist",
required_vote_count: 1,
policy_type: "ChainSigTransaction",
policy_details: {
ChainSigTransaction: {
derivation_path: constant.CHAIN_SIG_ACCOUNT_1,
chain_environment: "EVM",
restrictions: [
{
schema: `
and(
$.contract_id.case_insensitive_equal("${CORE_USDC_ADDRESS}"),
$.function_name.equal("approve"),
$.args.spender.case_insensitive_equal("${CORE_ARB_BRIDGE_ADDRESS}")
)
`,
interface: btoa(
JSON.stringify(evm.ERC_20_ABI.filter((e) => e.name === "approve"))
)
}
]
}
},
activation_time: "0",
proposal_expiry_time_nanosec: "86400000000000",
required_pending_actions: []
}