Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wormhole-foundation/cw20-legacy
https://github.com/wormhole-foundation/cw20-legacy
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/wormhole-foundation/cw20-legacy
- Owner: wormhole-foundation
- Created: 2023-12-06T14:17:59.000Z (about 1 year ago)
- Default Branch: cw20-legacy
- Last Pushed: 2024-04-05T04:04:12.000Z (9 months ago)
- Last Synced: 2024-05-02T04:36:27.328Z (8 months ago)
- Language: Rust
- Size: 27.3 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# CW20-Legacy
This version of the CW20 base contract is compatible with the legacy contract running on the Terra chain Columbus-4.
> **NOTE**
This contract is modified for the purpose of migration from a Columbus-4 CW20 token contract to Columbus-5. Using the official version of CW20 is strongly recommended for other usages.This is a basic implementation of a cw20 contract. It implements
the [CW20 spec](../../packages/cw20/README.md) and is designed to
be deployed as is, or imported into other contracts to easily build
cw20-compatible tokens with custom logic.Implements:
- [x] CW20 Base
- [x] Mintable extension
- [x] Allowances extension## Running this contract
You will need Rust 1.44.1+ with `wasm32-unknown-unknown` target installed.
You can run unit tests on this via:
`cargo test`
Once you are happy with the content, you can compile it to wasm via:
```
RUSTFLAGS='-C link-arg=-s' cargo wasm
cp ../../target/wasm32-unknown-unknown/release/cw20_base.wasm .
ls -l cw20_base.wasm
sha256sum cw20_base.wasm
```Or for a production-ready (optimized) build, run a build command in the
the repository root: https://github.com/CosmWasm/cosmwasm-plus#compiling.## Importing this contract
You can also import much of the logic of this contract to build another
ERC20-contract, such as a bonding curve, overiding or extending what you
need.Basically, you just need to write your handle function and import
`cw20_base::contract::handle_transfer`, etc and dispatch to them.
This allows you to use custom `ExecuteMsg` and `QueryMsg` with your additional
calls, but then use the underlying implementation for the standard cw20
messages you want to support. The same with `QueryMsg`. You *could* reuse `instantiate`
as it, but it is likely you will want to change it. And it is rather simple.Look at [`cw20-staking`](../cw20-staking/README.md) for an example of how to "inherit"
all this token functionality and combine it with custom logic.