Skip to content
/ vectis Public

The Foundation for Compliant Self-sovereign Wallets

License

Notifications You must be signed in to change notification settings

nymlab/vectis

Repository files navigation

Vectis - Smart Contract Wallet Infrastructure

Website Discord

Cosmowasm 0.28.0 codecov_img

Twitter

Overview

Vectis is a smart contract wallet infrastructure project that allows user to interact with dApps on the blockchain with the same amount of autonomy of a classic non-custodial solution, but supercharged with functionalities, designed to provide the user with better experience and security.

Features

Details on Vectis user features can be found in our introductory article.

Vectis accounts come with base features:

  • Seedless accounts: Accounts are by default controlled by an Entity using Passkey creation and tx signing
  • Extensible plugin features: supercharge and customise your Vectis Account with automated transactions and pre-transaction workflow / guards. See plugin section
  • (Soon) Account controller rotation: Accounts can rotate their own Entity in the case of updates, this can be extended in the future for guardianships
  • ICA: the creation of ICA is baked into the Vectis Accounts

With the above features, Vectis provides functionality for both retail users and businesses to satisfy regulatory requirements:

  • consumer protection: guardianship features can help recovery user funds and manage fraud risk
  • Pre-Transaction checks: Vectis is a compliant solution and satisfies crypto AML / travel checks
  • Transparency: Users can at all time check any status on their wallet, enhanced with Vectis clients push notifications

Plugins

Vectis is designed to be extensible with a plugin system. Much like the extensions to your browsers, Vectis accounts can add plugins to perform authorised (automated) transactions and pre-execution workflow and guards.

Plugins to Vectis Accounts can be built by any developers, Vectis provides test suite to allow developers to easily test plugins in the Vectis ecosystem.

Plugins can choose to apply to the Vectis Plugin Registry (VPR) to give users a certain level of assurance. Vectis and partnership teams is responsible for the soundness of the plugins in the registry. For more information on plugins.


Contract building

For WASM build locally you may need to first:

  • remove [net] config in .cargo
  • make sure rust-optimizer does not include vectis-contract-tests by "packages/*", -> "packages/vectis", in the root Cargo.toml member section.
  • run cargo build to update the cargo.lock to exclude the packages/vectis-tests package
# Builds wasm files:
# (Depending on your arch, it will be either *.wasm or *-aarch64.wasm output)
make build

# Builds schemas
make schemas && cd ts && npm run generate

Contract Testing

# For all contracts using test-tube
# This requires wasm contracts from previous step

UNAME=$(uname -p) cargo test -- test_tube

# For all cw-multi-tests
cargo test -- unit_tests

# For all tests
UNAME=$(uname -p) cargo test