Comments (7)
@uint I would love to hear you opinions here as well
If we want contracts to self-describe their interfaces and we're trying to make things modular with Sylvia, it makes total sense IMO to be able to reason which common interfaces (cw20 etc) they implement.
The cool thing is Sylvia might be able to autogenerate these in the future and it'd fit right into its model.
from cw-plus.
It goes and tries to deserialize contract_info with a deserializer that fails on unknown fields, and bam.
Since we don't use #[deny_unknown_fields]
here afaik, I think this is safe if it is an extra Option<Vec<String>>
field to give proper backwards compatibility.
We could also add another cw22 spec or something to just store this info in a different storage key.
I am fine with both solutions and pretty far from the code to see if there is a better one. I will defer to @uint on that point.
Idea: Another option is to extend cw2 to define 2 keys and helpers - get_version / set_version as well as get_interfaces / set_interfaces. Using the same spec (logical consistency) and separate storage key (ultimate backwards compatibility) may get us the best of both worlds.
from cw-plus.
Interesting idea.
it will have to be optional, as it will not exist for all currently deployed contracts but does seem like a nice hint.
We also discussed adding source code link, repeatable compilation Metadata, etc in a wasmd issue. This falls into that general category for me.
@uint I would love to hear you opinions here as well
from cw-plus.
Yes, it is optional. We have opened a pull request on it.
For source code link, binaries, etc. I think the block explorer should be the place to submit those information (like Etherscan did). I think they are just informative data while the supported interface value is quite helpful in interacting with other program.
We have built a small utility on our explorer for general information of a wasm contract here: https://github.com/aura-nw/contract-source-code-verifier.
from cw-plus.
So what is the general consensus on this ? @uint @ethanfrey
Should we modify the current cw2 interface or we make a new cw2-support-interface crate ?
from cw-plus.
Should we modify the current cw2 interface or we make a new cw2-support-interface crate ?
I worry about one scenario. Say there's an old client somewhere that doesn't know about this new supported_interface
field. It goes and tries to deserialize contract_info
with a deserializer that fails on unknown fields, and bam. It can't get the name/version of newer contracts because it doesn't know how to deal with some unrelated data.
I think I'd prefer if this was a separate spec with a separate storage item. @ethanfrey? is this a non-issue?
from cw-plus.
Since we don't use #[deny_unknown_fields] here afaik, I think this is safe if it is an extra Option<Vec> field to give proper backwards compatibility.
Okay, in that case I'm also fine with either. Let's get this in!
from cw-plus.
Related Issues (20)
- Decide what to do with `controllers` HOT 2
- Update README
- Simplify licenses
- Workspace optimizer build failed HOT 1
- u
- CW20: Remove IncreaseAllowance / DecreaseAllowance HOT 3
- MINT function is not working HOT 2
- Package versioning is a huge mess right now HOT 10
- CW2: add a `cw2::VersionError` error type
- discussion: cw20-base methods should be nonpayable, or forward funds HOT 5
- CW20 All accounts query sorting issue HOT 1
- Cryptotab
- “use of undeclared crate or module `imp`” on getrandom-0.2.8 when building for wasm32-unknown-unknown HOT 1
- thread 'main' panicked at 'called `Result::unwrap() HOT 1
- Bump cw2 version HOT 1
- Issue in providing cw4_stake.wasm contract values for initiating HOT 4
- `Admin` type of cw-controllers should have helper method for raw querying
- Error message on Kujira Fin HOT 2
- How to query validator data in `cosmwasm` contract. HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cw-plus.