Skip to content

Conversation

@Kukks
Copy link
Collaborator

@Kukks Kukks commented Dec 18, 2025

Introduces a modular SDK for building multi-party contracts on ARK protocol:

SDK (packages/sdk/):

  • Core: Generic ScriptBuilder for m-of-n Taproot scripts
  • Contracts: State machine with guards and transitions
  • Transactions: SigningCoordinator for multi-party signing
  • Storage: Pluggable adapter interface with memory implementation
  • Protocol: Provider interfaces for blockchain interaction
  • Modules: Escrow and Lending contract implementations

Server integration:

  • VEscrow.Script now uses SDK ScriptBuilder internally
  • Signature utilities re-export from SDK
  • EscrowStateMachineGuard validates state transitions
  • ExecutionCoordinator tracks multi-party signing
  • DTOs include sdkState, allowedActions, balance fields
  • ArbitrationService uses SDK for dispute validation
  • TypeOrmStorageAdapter bridges SDK with existing entities

This enables:

  • Flexible contract configurations (not just 2-of-3)
  • Consistent state machine validation
  • Reusable primitives for lending, gambling, etc.

Introduces a modular SDK for building multi-party contracts on ARK protocol:

SDK (packages/sdk/):
- Core: Generic ScriptBuilder for m-of-n Taproot scripts
- Contracts: State machine with guards and transitions
- Transactions: SigningCoordinator for multi-party signing
- Storage: Pluggable adapter interface with memory implementation
- Protocol: Provider interfaces for blockchain interaction
- Modules: Escrow and Lending contract implementations

Server integration:
- VEscrow.Script now uses SDK ScriptBuilder internally
- Signature utilities re-export from SDK
- EscrowStateMachineGuard validates state transitions
- ExecutionCoordinator tracks multi-party signing
- DTOs include sdkState, allowedActions, balance fields
- ArbitrationService uses SDK for dispute validation
- TypeOrmStorageAdapter bridges SDK with existing entities

This enables:
- Flexible contract configurations (not just 2-of-3)
- Consistent state machine validation
- Reusable primitives for lending, gambling, etc.
- Add refresh module with types, flows, and delegate executor
- SimpleRefreshFlow for single-user (direct batch join)
- DelegatedRefreshFlow for multi-party (ACP-signed forfeits)
- DelegateExecutor and DelegateService for batch joining
- Update escrow module with refresh support:
  - EscrowRefreshConfig with delegatePolicy options
  - EscrowContract.getRefreshFlow() method
  - createRefreshPath() for spending path generation
- Two delegation models supported:
  - Existing party as delegate (escrow: any of sender/receiver/arbiter)
  - External delegate (additional key in script)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants