| Crates.io | abstract-cw1 |
| lib.rs | abstract-cw1 |
| version | 1.2.2 |
| created_at | 2024-01-24 14:32:36.349669+00 |
| updated_at | 2024-01-24 14:32:36.349669+00 |
| description | Definition and types for the CosmWasm-1 interface |
| homepage | https://cosmwasm.com |
| repository | https://github.com/CosmWasm/cw-plus |
| max_upload_size | |
| id | 1112377 |
| size | 23,950 |
CW1 is a specification for proxy contracts based on CosmWasm. It is a very simple, but flexible interface designed for the case where one contract is meant to hold assets (or rights) on behalf of other contracts.
The simplest example is a contract that will accept messages from the creator and resend them from its address. Simply by making this transferable, you can then begin to transfer non-transferable assets (eg. staked tokens, voting power, etc).
You can imagine more complex examples, such as a "1 of N" multisig, or conditional approval, where "sub-accounts" have the right to spend a limited amount of funds from this account, with a "admin account" retaining full control.
The common denominator is that they allow you to immediately execute arbitrary CosmosMsg in the same transaction.
Execute{msgs} - This accepts Vec<CosmosMsg> and checks permissions before re-dispatching all those messages from the
contract address. It emits the following attributes:
| Key | Value |
|---|---|
| "action" | "execute" |
| "owner" | [msg sender] |
CanExecute{sender, msg} - This accepts one CosmosMsg and checks permissions, returning true or false based on the
permissions. If CanExecute returns true then a call to Execute from that sender, with the same message, before any
further state changes, should also succeed. This can be used to dynamically provide some client info on a generic cw1
contract without knowing the extension details. (eg. detect if they can send coins or stake)