Smart Contract Wallet allows user to interact with DAPPs on the blockchain with the same amount of autonomy of a classic non-custodial solution, with the additional functionalities designed to provide the user with better experience and security.
SCW also provide functions that allow businesses to satisfy regulatory requirements regarding support of users, transparency, separation of control duties and verifiability.
VectisDAO is the organisation that provides governance to the this infrastructure. VectisDAO lives on Juno Network and leverages the DAO DAO stack. Every SCW wallet has the right to purchase a set amount of Govec tokens at a set price, the Govec will be minted and can be staked to vote. Contributors can enter VectisDAO with investment (typically development and other useful efforts). The amount of Govec from contributions will be determined by the DAO.
Through IBC, Vectis wallets can also be deployed on other chains. From the perspective of DAO participation, there is no difference between a wallet on Juno Network or others. Staking and voting will be done via IBC calls from the wallet.
Please see our wiki for details.
# For individual contract tests
cd contracts/contract-you-want-to-test
cargo test
# For all tests
cargo test
First we set up the two networks (one node each) locally.
Please ensure you have set up the .env
file according to the example.env
.
You should check supported chains in cli/config/chains
directory.
make nodes-setup
make build
make deploy
The deployment of the DAO on the host chain has the following steps:
- Relayer: Creates channels between Dao-tunnel and Remote-tunnel
- Upload all required contracts (in ./upload.ts) to dao chain + remote chains
- Host: Factory, Govec, Proxy, Dao-tunnel, Dao contracts
- Remote: Remote-Factory, Proxy, Remote-tunnel
- DAO Chain: Instantiate Govec contract (with admin having initial balance for proposing for DAO to deploy Factory)
- DAO Chain: Instantiate dao-core contract (which will instantiate one proposal module and one vote module contracts)
- note: vote contracts also instantiates a new staking contract as we use staked-balance for voting
- DAO Chain: Admin propose and execute on DAO to deploy factory and Dao-tunnel contracts
- Remote Chain: Remote Admin instantiate Remote-tunnel with Dao-tunnel as port and connection Id from step 1
- DAO Chain: Admin propose and execute on DAO to allow ibc-connection to the Remote-tunnel
- DAO Chain: Admin propose and execute on DAO to deploy remote-factory
- Remote Chain: Execute instantiate remote-factory
- DAO Chain: Admin updates Govec staking address to the staking contract in step 4.
- DAO Chain: Admin updates Govec minter address to the factory contract addr and dao-tunnel addr
- DAO Chain: Admin updates Govec contract DAO_ADDR as DAO
- DAO Chain: Admin updates Govec contract admin as DAO (for future upgrades)
- DAO Chain: Admin unstakes and burn its govec (exits system)
After upload and deploy contracts it will check the contract have the right checksum and the contracts have DAO as admin.
Build locally by following instructions
Note: this requires you to do a setup script to seed the accounts use for cli.
git clone https://github.com/CosmWasm/wasmd.git
cd wasmd
# replace the v0.18.0 with the most stable version on https://github.com/CosmWasm/wasmd/releases
git checkout v0.24.0
make install
# verify the installation
wasmd version
INFO:
make install
will copy wasmd to$HOME/go/bin
or the default directory for binaries from Go, please make sure that is in yourPATH
.
./scripts/wasmd-node-setup.sh
make build
We are using CosmJS to interact with the smart contracts and Jest as testing framework for client-side tests.