scallop-vescalisted
Install: claude install-skill scallop-io/scallop-skills
# veSCA (Vote Escrow SCA)
Lock SCA tokens to receive veSCA for governance voting and protocol revenue sharing.
## Overview
veSCA is Scallop's governance token system:
- **Lock SCA** → Receive veSCA
- **veSCA** → Voting power + Revenue share
- **Longer lock** → More voting power
## Voting Power Formula
```python
voting_power = locked_sca * (remaining_time / max_lock_time)
max_lock_time = 4 years (1461 days)
```
Power depends on the time *remaining*, not time served, and decays linearly to zero at expiry.
Full derivation, the multiplier table, an off-chain calculator, and decay behaviour:
[voting-power.md](references/voting-power.md).
## Lock SCA
### Create New Lock
```python
tx = builder.create_tx_block()
# First, get a SCA coin input (e.g., split from existing coins)
sca_coin_idx = tx.add_object_input("0xSCA_COIN_OBJECT_ID")
# Lock SCA for 365 days
ve_sca_key = tx.lock_sca(
sca_coin_idx=sca_coin_idx, # Index of SCA coin (Input or Result)
lock_period_days=365, # Lock period in days (max 1461 = 4 years)
coin_is_result=False, # True if sca_coin_idx is a Result index
)
tx.transfer_objects([ve_sca_key], wallet_address)
result = builder.sign_and_send_tx_block(tx)
```
```typescript
// TypeScript - Lock SCA
const tx = builder.createTxBlock();
const unlockAt = Math.floor(Date.now() / 1000) + (365 * 24 * 60 * 60); // 1 year
tx.lockSca(veScaKey, scaCoin, unlockAt);
await builder.signAndSendTxBlock(tx);
```
### Lock Period Options
Maxim