diff --git a/Cargo.lock b/Cargo.lock index 907f8b263..36294374e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "andromeda-app-contract" -version = "1.0.0" +version = "1.0.1" dependencies = [ "andromeda-app", "andromeda-std", @@ -602,15 +602,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.82" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "base16ct" @@ -702,9 +702,9 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "cosmwasm-crypto" -version = "1.5.3" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9934c79e58d9676edfd592557dee765d2a6ef54c09d5aa2edb06156b00148966" +checksum = "dd50718a2b6830ce9eb5d465de5a018a12e71729d66b70807ce97e6dd14f931d" dependencies = [ "digest 0.10.7", "ecdsa", @@ -716,18 +716,18 @@ dependencies = [ [[package]] name = "cosmwasm-derive" -version = "1.5.3" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5e72e330bd3bdab11c52b5ecbdeb6a8697a004c57964caeb5d876f0b088b3c" +checksum = "242e98e7a231c122e08f300d9db3262d1007b51758a8732cd6210b3e9faa4f3a" dependencies = [ "syn 1.0.109", ] [[package]] name = "cosmwasm-schema" -version = "1.5.3" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3e3a2136e2a60e8b6582f5dffca5d1a683ed77bf38537d330bc1dfccd69010" +checksum = "7879036156092ad1c22fe0d7316efc5a5eceec2bc3906462a2560215f2a2f929" dependencies = [ "cosmwasm-schema-derive", "schemars", @@ -738,9 +738,9 @@ dependencies = [ [[package]] name = "cosmwasm-schema-derive" -version = "1.5.3" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5d803bea6bd9ed61bd1ee0b4a2eb09ee20dbb539cc6e0b8795614d20952ebb1" +checksum = "0bb57855fbfc83327f8445ae0d413b1a05ac0d68c396ab4d122b2abd7bb82cb6" dependencies = [ "proc-macro2", "quote", @@ -749,9 +749,9 @@ dependencies = [ [[package]] name = "cosmwasm-std" -version = "1.5.3" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef8666e572a3a2519010dde88c04d16e9339ae751b56b2bb35081fe3f7d6be74" +checksum = "78c1556156fdf892a55cced6115968b961eaaadd6f724a2c2cb7d1e168e32dd3" dependencies = [ "base64", "bech32 0.9.1", @@ -850,9 +850,9 @@ dependencies = [ [[package]] name = "cw-multi-test" -version = "1.0.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c6c2f2ee4b29e03fd709f4278a70a11c816690f2c992a9c980303ebda574f8" +checksum = "91fc33b1d65c102d72f46548c64dca423c337e528d6747d0c595316aa65f887b" dependencies = [ "anyhow", "bech32 0.11.0", @@ -860,8 +860,8 @@ dependencies = [ "cw-storage-plus 1.2.0", "cw-utils 1.0.3", "derivative", - "itertools 0.12.1", - "prost 0.12.4", + "itertools 0.13.0", + "prost 0.12.6", "schemars", "serde", "sha2 0.10.8", @@ -1145,9 +1145,9 @@ dependencies = [ [[package]] name = "either" -version = "1.11.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "elliptic-curve" @@ -1251,7 +1251,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.68", ] [[package]] @@ -1303,9 +1303,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -1377,6 +1377,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" @@ -1399,9 +1408,9 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "lexers" @@ -1411,9 +1420,9 @@ checksum = "82de9bb5d9e8ff5e13532a45583ea972e220b8a6efef755daad1f285333a8afa" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libm" @@ -1423,9 +1432,9 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "num" @@ -1449,9 +1458,9 @@ dependencies = [ [[package]] name = "num-iter" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", @@ -1460,9 +1469,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -1541,9 +1550,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.81" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1560,12 +1569,12 @@ dependencies = [ [[package]] name = "prost" -version = "0.12.4" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0f5d036824e4761737860779c906171497f6d55681139d8312388f8fe398922" +checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" dependencies = [ "bytes", - "prost-derive 0.12.4", + "prost-derive 0.12.6", ] [[package]] @@ -1583,15 +1592,15 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.12.4" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19de2de2a00075bf566bee3bd4db014b11587e84184d3f7a791bc17f1a8e9e48" +checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" dependencies = [ "anyhow", "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.68", ] [[package]] @@ -1629,9 +1638,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.4" +version = "1.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" dependencies = [ "aho-corasick", "memchr", @@ -1641,9 +1650,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", @@ -1652,9 +1661,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "relative-path" @@ -1697,7 +1706,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.60", + "syn 2.0.68", "unicode-ident", ] @@ -1712,21 +1721,21 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.15" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "schemars" -version = "0.8.16" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" dependencies = [ "dyn-clone", "schemars_derive", @@ -1736,14 +1745,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.16" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 1.0.109", + "syn 2.0.68", ] [[package]] @@ -1762,15 +1771,15 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.198" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" +checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" dependencies = [ "serde_derive", ] @@ -1804,31 +1813,31 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.198" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" +checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.68", ] [[package]] name = "serde_derive_internals" -version = "0.26.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.68", ] [[package]] name = "serde_json" -version = "1.0.116" +version = "1.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" +checksum = "d947f6b3163d8857ea16c4fa0dd4840d52f3041039a85decd46867eb1abef2e4" dependencies = [ "itoa", "ryu", @@ -1929,9 +1938,9 @@ dependencies = [ [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -1946,9 +1955,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.60" +version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" +checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", @@ -2000,22 +2009,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.59" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.59" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.68", ] [[package]] @@ -2083,6 +2092,6 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "zeroize" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/README.md b/README.md index bca9cd647..f58837b81 100644 --- a/README.md +++ b/README.md @@ -3,60 +3,122 @@

+ AndromedaOS is a revolutionary software layer that provides a massively + abstracted environment and user experience for the next generation of + blockchain innovators to create, develop and get paid. + +# Introduction to AndromedaOS + +### Mission + +**Andromeda** **Protocol** is a rapid development framework and a next-generation user interface that brings an Easier, Better, and Faster capability to Web 3.0, and the blockchain industry. + + +#### What is a blockchain operating system? + +In short, a blockchain operating system provides an environment filled with ready to use tooling, common interfaces for applications and features familiar to modern computer users. As Andromeda is the first true operating system designed to run on distributed computing frameworks, the details are quite technical. + +AndromedaOS, or _aOS_ for short, is comprised of several interoperating systems that work together to bring clarity and ease of use to the user. It's important to understand the basic concepts and architecture of the system to develop. + +A quick description of each of the components that make up the aOS: + +* ​[Andromeda Digital Objects](https://docs.andromedaprotocol.io/andromeda/andromeda-digital-objects/introduction-to-ados) - the building blocks of the system +* [​Andromeda Apps](https://docs.andromedaprotocol.io/andromeda/andromeda-apps/introduction-to-apps) - advanced functionality built with ADOs +* ​[aOS Kernel](https://docs.andromedaprotocol.io/andromeda/platform-and-framework/andromeda-messaging-protocol/kernel) - the system for enforcing and coordinating the different systems +* ​[aOS File System](https://docs.andromedaprotocol.io/andromeda/platform-and-framework/andromeda-messaging-protocol/virtual-file-system) - common namespace for referencing ADOs, services, network, etc +* ​[aOS Economics](https://docs.andromedaprotocol.io/andromeda/platform-and-framework/andromeda-messaging-protocol/economics-engine) - developer and creator incentives + +It's important to note that each of these systems exist 100% on-chain. All logic, interactions, objects, economics, etc. are deployed on-chain. + +### Powered by the Cosmos Ecosystem + +The power and performance of the Rust/CosmWasm combo is what allowed this breakthrough in interoperability and complexity. + +#### Infinite Reach Through IBC + +Just like an operating system that can be seamlessly installed on any device, the AndromedaOS transcends limitations tied to the Andromeda chain. It is designed for universal compatibility and can be effortlessly deployed on any chain within the expansive Cosmos ecosystem. + +The operating system can be employed for local development on the chain, yet its true potential shines through Inter-Blockchain Communication (IBC). This capability allows the creation of Apps that extend seamlessly across multiple interconnected chains. + +Here is a visual representation of how this system is connected. + +

 

+

+ +

+ +As we can see, each of the Cosmos chains has AndromedaOS deployed . Since AndromedaOS can communicate using IBC, then users can build Applications that span accross many chains taking advantage of all the benefits that come along. + +For example, a user can build an NFT collection on Stargaze selling the NFTs using one of our ADOs and then using a splitter to send part of the funds to Terra to leverage some protocol and another part to Injective to leverage some functionality there. The user's imagination is the only limit to what can be built using the aOS. + +**Note**: IBC functionality is being slowly introduced into the system. Not all features mentioned above are currently available. + +### What is the benefit of using aOS + +* **For Projects:** + +Before **Andromeda**, projects would need to hire a full development teams in order to build their projects and custom smart contracts. Andromeda eliminates this need by providing a very large amount of custom smart contracts that upcoming projects can pick and chose from to achieve their desired utility. These projects can then use our **No-Code-Builder** to build their projects in a matter of minutes on any of the chains that Andromeda is deployed on. + +* **For Developers:** + +Developers can use our **Andromeda Logic Library** (ALL) which contains all our contracts to build from. Similar to how [**cw-plus**](https://github.com/CosmWasm/cw-plus) contracts are used as a base for production quality builds, the ALL will act as a base for all developers to create their own ADOs that use the superior interoperable system. + +As it stands, the ALL contains around 25 ADOs which is the tip of the iceberg. More and more ADOs are being added by the Andromeda team, and as we continue building, the ALL will eventually reach a state with thousands of ADOs where every use case imagined can be built using it. + +Furthermore, developers are incentivized for their contributions and the ADOs they create. This incentive system operates through our[ economic engine](https://docs.andromedaprotocol.io/andromeda/platform-and-framework/andromeda-messaging-protocol/economics-engine), enabling developers to set custom fees on their ADOs when it is published. Users utilizing these ADOs pay these fees, which are then returned to the developer responsible for their creation. + +* **For Chains:** + + AndromedaOS provides a whole suite of tooling that can be quickly installed on any chain in the Cosmos ecosystem. Installing the aOS would instantly give a chain and its users access to the following: + +1. A large number of production ready ADOs to be used. +2. The best no-code-builder in Cosmos and perhaps the entire blockchain industry. +3. IBC capable applications. +4. An incredible all in one CLI that is easy to use and manage. +5. Exposure to the chain, as users on any chain that implements the aOS will be able to to see where aOS is also deployed and might consider building applications on said chain. + +# Andromeda Core Repo + A monorepository containing all the contracts and packages related to Andromeda Protocol. Full documentation for all the contracts can be found [here](https://docs.andromedaprotocol.io/andromeda/platform-and-framework/introduction). ## ADO Categories -The contracts are classified based on their functionality. Currently we have 8 different contract categories. +The contracts are classified based on their functionality. Currently we have 7 different contract categories. | Category| Description | | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| [app](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/app)| Contracts used for building Andromeda apps. | -| [data-storage](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/data-storage/andromeda-primitive) | Contracts used to store any type of data (uint, string, bool ect...).| +| [app](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/app)| Contracts used for building Andromeda apps. | | [ecosystem](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/ecosystem) | Contracts that are allow interaction with different ecosystem protocols.| | [finance](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/finance) | Contracts used by fungible tokens to perform defi operations.| | [fungible tokens](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/fungible-tokens) | Contracts that integrate with fungible tokens (CW-20 tokens).| | [non-fungible-tokens](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/non-fungible-tokens) | Contacts that integrate with non-funible toknes (NFTs). Includes a standard CW721 contract with some custom features.| -| [modules](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/modules) |Andromeda modules that are attached to other ADOs to extend functionality.| - | [defunct](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/defunct) |Andromeda contracts that are no longer supported.| +| [os](https://github.com/andromedaprotocol/andromeda-core/tree/1.0.rc-1/contracts/os) | Contacts that make up the aOS architecture | - -## ADOs +## Audited ADOs +The list of ADOs that have been audited and are available on our web-application. | Contract | Category | Description | Documentation | | ---------------------------|------------------------|-------------------------------------------|----------------------------------------------------- | -| [andromeda-app-contract](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/app/andromeda-app-contract)| app | Contract used to create Andromeda Apps. | [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/andromeda-apps/app)| -| [andromeda-factory](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/app/andromeda-factory)| app |Contract used to save the code Ids of all Andromeda ADOs. | [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/andromeda-apps/andromeda-factory)| -| [andromeda-primitive](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/data-storage/andromeda-primitive) | data-storage | Contract that stores any type of data that can be referenced by other ADOs. |[Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/data-storage/primitive) | -| [andromeda-vault](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/ecosystem/andromeda-vault)|ecosystem| Contract that can receive and store funds. Acts as a central bank for projects. | [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/ecosystem/vault) | +| [andromeda-app-contract](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/app/andromeda-app-contract)| app | Contract used to create Andromeda Apps. | [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/andromeda-apps/app)| | [andromeda-rate-limiting-withdrawals](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/finance/andromeda-rate-limiting-withdrawals) | finance | Contract that puts restrictions on the withdrawal of funds by users. | [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/finance/rate-limiting-withdrawals)| | [andromeda-splitter](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/finance/andromeda-splitter) | finance| Contract used to split any sent funds amongst defined addresses. | [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/finance/andromeda-splitter)| -| [andromeda-timelock](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/finance/andromeda-timelock) | finance| Contract used to store funds until a condition has been satisfied before being released, similar to Escrow.|[Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/finance/timelock)| -| [andromeda-vesting](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/finance/andromeda-vesting) |finance | Contract used to custom vest tokens for a single recipient.| [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/finance/vesting-ado)| -| [andromeda-weighted-distribution-splitter](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/finance/andromeda-weighted-distribution-splitter) | finance | Contract used to split any sent funds amongst defined addresses. Similar to the splitter but uses weights instead of percentages.| [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/finance/weighted-splitter)| -| [andromeda-cw20](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/app/andromeda-factory) | fungible tokens |Contract to create standard cw-20 tokens. | [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/fungible-tokens/cw20-token) -| [andromeda-cw20-staking](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/fungible-tokens/andromeda-cw20-staking) | fungible tokens | Contract that allows the staking of cw-20 tokens for rewards. | [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/fungible-tokens/cw20-staking)| +| [andromeda-timelock](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/finance/andromeda-timelock) | finance| Contract used to store funds until a condition has been satisfied before being released, similar to Escrow.|[Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/finance/timelock)| +| [andromeda-cw20](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/fungible-tokens/andromeda-cw20) | fungible tokens |Contract to create standard CW20 tokens. | [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/fungible-tokens/cw20-token) +| [andromeda-cw20-staking](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/fungible-tokens/andromeda-cw20-staking) | fungible tokens | Contract that allows the staking of CW20 tokens for rewards. | [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/fungible-tokens/cw20-staking)| +| [andromeda-cw20-exchange](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/fungible-tokens/andromeda-cw20-exchange) | fungible tokens | Contract that allows the exchanging native tokens for a specified CW20 | [Gitbook](https://docs.andromedaprotocol.io/andromeda/andromeda-digital-objects/cw20-exchange)| | [andromeda-lockdrop](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/fungible-tokens/andromeda-lockdrop) | fungible tokens| Contract that allows users to deposit a netive token in exchange for the project's cw-20 token |[Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/fungible-tokens/lockdrop)| | [andromeda-merkle-airdrop](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/fungible-tokens/andromeda-merkle-airdrop) | fungible tokens| Contract used to perform a merkle airdrop on cw20-tokens| [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/fungible-tokens/merkle-airdrop)| | [andromeda-auction](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/non-fungible-tokens/andromeda-auction)|non-fungible-tokens| Contract that can receive an NFT and run an auction on it.| [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/non-fungible-tokens/auction)| +| [andromeda-marketplace](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/non-fungible-tokens/andromeda-marketplace)|non-fungible-tokens| Contract that can receive an NFT and run an a sale on it.| [Gitbook](https://docs.andromedaprotocol.io/andromeda/andromeda-digital-objects/marketplace)| | [andromeda-crowdfund](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/non-fungible-tokens/andromeda-crowdfund)|non-fungible-tokens| Contracts used to perform a crowdfund by selling NFTs.|[Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/non-fungible-tokens/crowdfund)| -| [andromeda-cw721](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/non-fungible-tokens/andromeda-cw721)| non-fungible-tokens| Contract used to create cw-721 standard NFTs. Has a custom message that allows selling the NFTs.| [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/non-fungible-tokens/andromeda-digital-object)| -| [andromeda-cw721-staking](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/non-fungible-tokens/andromeda-cw721-staking)|non-fungible-tokens| Contract that allows custom staking of NFTs.|[Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/non-fungible-tokens/cw721-staking)| -| [andromeda-gumball](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/non-fungible-tokens/andromeda-gumball)|non-fungible-tokens| Contract that allows users to pay a price to get a random NFT.| [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/non-fungible-tokens/gumball)| -| [andromeda-nft-timelock](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/non-fungible-tokens/andromeda-nft-timelock)|non-fungible-tokens| Contract that locks an NFT for a certain period of time.| [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/non-fungible-tokens/nft-timelock)| -| [andromeda-wrapped-cw721](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/non-fungible-tokens/andromeda-wrapped-cw721)| non-fungible-tokens| Contract that wraps an NFT and mints an Andromeda NFT that can leverage our custom messages and modules instead. The token can be unwrapped.| [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/non-fungible-tokens/wrapped-cw721)| - -## Modules +| [andromeda-cw721](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/non-fungible-tokens/andromeda-cw721)| non-fungible-tokens| Contract used to create CW721 standard NFTs. Has a custom message that allows selling the NFTs.| [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/non-fungible-tokens/andromeda-digital-object)| +| [andromeda-adodb](https://github.com/andromedaprotocol/andromeda-core/tree/1.0.rc-1/contracts/os/andromeda-adodb)| os| The ADO database responsible for publishing new ADOs into the aOS| [Gitbook](https://docs.andromedaprotocol.io/andromeda/platform-and-framework/andromeda-messaging-protocol/andromeda-factory)| +| [andromeda-economics](https://github.com/andromedaprotocol/andromeda-core/tree/1.0.rc-1/contracts/os/andromeda-economics)| os | The contract responsible for handling ADO fees| [Gitbook](https://docs.andromedaprotocol.io/andromeda/platform-and-framework/andromeda-messaging-protocol/economics-engine)| +| [andromeda-kernel](https://github.com/andromedaprotocol/andromeda-core/tree/1.0.rc-1/contracts/os/andromeda-kernel)| os | The contract responsible for handling communication between ADOs| [Gitbook](https://docs.andromedaprotocol.io/andromeda/platform-and-framework/andromeda-messaging-protocol/kernel)| +| [andromeda-vfs](https://github.com/andromedaprotocol/andromeda-core/tree/1.0.rc-1/contracts/os/andromeda-vfs)| os| The contract responsible for managing the usernames and paths of ADOs and users in the aOs | [Gitbook](https://docs.andromedaprotocol.io/andromeda/platform-and-framework/andromeda-messaging-protocol/virtual-file-system)| -Modules are smart contracts that can be added to other ADOs on instantiation to extend their functionality. The communication between ADOs and our modules is achieved using our custom [Hooks](https://docs.andromedaprotocol.io/andromeda/andromeda-hooks/hooks). We currently have 4 modules: - -|Module| Description| Documentation| -|-------------------------------|---------------------------|-----------------------------| -| [address-list](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/modules/andromeda-address-list)| A module used to whitelist/blacklist a list of addresses to interact with the ADO.|[Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/modules/address-list)| -| [rates](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/modules/andromeda-rates)| A module used to add rates (taxes/royalties) on fund transfers| [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/modules/rates)| -| [cw721-bids](https://github.com/andromedaprotocol/andromeda-core/tree/development/contracts/non-fungible-tokens/andromeda-cw721-bids)|Module that can be attached to the cw721 ADO as another way to buy and sell NFTs.|[Gitbook](https://docs.andromedaprotocol.io/andromeda/andromeda-digital-objects/cw721-bids)| -| [receipts](https://docs.andromedaprotocol.io/andromeda/smart-contracts/modules/receipt-contract)| A module that can be attached to ADOs that saves the events of messages.| [Gitbook](https://docs.andromedaprotocol.io/andromeda/smart-contracts/modules/receipt-contract)| +**Note**: Other ADOs can be found in our repo, but they have not gone through the auditing process yet. ## Packages @@ -70,6 +132,14 @@ The packages also includes the [ado_base](https://github.com/andromedaprotocol/a ## Development +### Andromeda Template and Crate + +A starting template for ADO development can be found [here](https://github.com/andromedaprotocol/andr-cw-template). +The andromeda-std crate can be found [here](https://crates.io/crates/andromeda-std). + +### Integration Tests +Check out our cw-multi-test based testing [library](https://github.com/andromedaprotocol/andromeda-core/tree/1.0.rc-1/packages/andromeda-testing) to setup custom ADO integration tests. + ### Testing All tests can be run using: @@ -136,6 +206,9 @@ cargo clippy --all --all-targets -- -D warnings Andromeda is deployed on many of the Cosmos chains. Usually this will require you to set up an environment for each chain. Luckily, Andromeda has built the Andromeda CLI, an all in one tool to build, interact, and manage ADOs and wallets for any of the chains. The CLI documentation can be found [here](https://docs.andromedaprotocol.io/andromeda/andromeda-cli/introduction). +### Andromeda JS +[Andromeda.js](https://github.com/andromedaprotocol/andromeda.js) is a JavaScript SDK for writing applications that interact with ADOs on any of the blockchains that Andromeda is deployed on. More on the AndromedaJS can be found [here](https://docs.andromedaprotocol.io/andromeda.js/). + ## Licensing [Terms and Conditions](https://github.com/andromedaprotocol/andromeda-core/blob/development/LICENSE/LICENSE.md) diff --git a/asset/Andromeda-IBC.png b/asset/Andromeda-IBC.png new file mode 100644 index 000000000..35b1e971b Binary files /dev/null and b/asset/Andromeda-IBC.png differ diff --git a/contracts/app/andromeda-app-contract/Cargo.toml b/contracts/app/andromeda-app-contract/Cargo.toml index aa3d8b47b..8c3ce2f5f 100644 --- a/contracts/app/andromeda-app-contract/Cargo.toml +++ b/contracts/app/andromeda-app-contract/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "andromeda-app-contract" -version = "1.0.0" +version = "1.0.1" edition = "2021" rust-version = "1.75.0" diff --git a/contracts/app/andromeda-app-contract/README.md b/contracts/app/andromeda-app-contract/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/contracts/data-storage/andromeda-primitive/Cargo.toml b/contracts/data-storage/andromeda-primitive/Cargo.toml index 11e0a97d6..d880df244 100644 --- a/contracts/data-storage/andromeda-primitive/Cargo.toml +++ b/contracts/data-storage/andromeda-primitive/Cargo.toml @@ -40,4 +40,4 @@ andromeda-data-storage = { workspace = true } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] cw-multi-test = { workspace = true, optional = true } -andromeda-testing = { workspace = true, optional = true } \ No newline at end of file +andromeda-testing = { workspace = true, optional = true } diff --git a/contracts/finance/andromeda-rate-limiting-withdrawals/Cargo.toml b/contracts/finance/andromeda-rate-limiting-withdrawals/Cargo.toml index c96d8afc2..ac68f1064 100644 --- a/contracts/finance/andromeda-rate-limiting-withdrawals/Cargo.toml +++ b/contracts/finance/andromeda-rate-limiting-withdrawals/Cargo.toml @@ -23,7 +23,7 @@ cw-utils = { workspace = true } cw20 = { workspace = true } -andromeda-std = { workspace = true} +andromeda-std = { workspace = true } andromeda-finance = { workspace = true } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] diff --git a/contracts/fungible-tokens/andromeda-cw20-staking/Cargo.toml b/contracts/fungible-tokens/andromeda-cw20-staking/Cargo.toml index e59f43612..e6b700652 100644 --- a/contracts/fungible-tokens/andromeda-cw20-staking/Cargo.toml +++ b/contracts/fungible-tokens/andromeda-cw20-staking/Cargo.toml @@ -24,7 +24,7 @@ cw20 = { workspace = true } cw20-base = { workspace = true } cw-asset = { workspace = true } -andromeda-std = { workspace = true} +andromeda-std = { workspace = true } andromeda-fungible-tokens = { workspace = true } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] diff --git a/contracts/fungible-tokens/andromeda-cw20-staking/src/contract.rs b/contracts/fungible-tokens/andromeda-cw20-staking/src/contract.rs index ebb22f4d3..8041ccd4b 100644 --- a/contracts/fungible-tokens/andromeda-cw20-staking/src/contract.rs +++ b/contracts/fungible-tokens/andromeda-cw20-staking/src/contract.rs @@ -13,7 +13,6 @@ use cosmwasm_std::{ ensure, from_json, Addr, Binary, CosmosMsg, Deps, DepsMut, Env, MessageInfo, Response, Storage, Uint128, }; - use cw20::Cw20ReceiveMsg; use cw_asset::{Asset, AssetInfo, AssetInfoUnchecked}; @@ -131,7 +130,6 @@ pub fn handle_execute(mut ctx: ExecuteContext, msg: ExecuteMsg) -> Result receive_cw20(ctx, msg), ExecuteMsg::AddRewardToken { reward_token } => execute_add_reward_token(ctx, reward_token), diff --git a/contracts/fungible-tokens/andromeda-cw20/Cargo.toml b/contracts/fungible-tokens/andromeda-cw20/Cargo.toml index 9021583c7..73ecab072 100644 --- a/contracts/fungible-tokens/andromeda-cw20/Cargo.toml +++ b/contracts/fungible-tokens/andromeda-cw20/Cargo.toml @@ -23,7 +23,7 @@ cw-utils = { workspace = true } cw20 = { workspace = true } cw20-base = { workspace = true } -andromeda-std = { workspace = true, features = ["rates"]} +andromeda-std = { workspace = true, features = ["rates"] } andromeda-fungible-tokens = { workspace = true } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] diff --git a/contracts/fungible-tokens/andromeda-lockdrop/Cargo.toml b/contracts/fungible-tokens/andromeda-lockdrop/Cargo.toml index ac73c42cb..9ac461398 100644 --- a/contracts/fungible-tokens/andromeda-lockdrop/Cargo.toml +++ b/contracts/fungible-tokens/andromeda-lockdrop/Cargo.toml @@ -24,7 +24,7 @@ cw-asset = { workspace = true } cw20 = { workspace = true } -andromeda-std = { workspace = true} +andromeda-std = { workspace = true } andromeda-fungible-tokens = { workspace = true } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] diff --git a/contracts/non-fungible-tokens/andromeda-auction/Cargo.toml b/contracts/non-fungible-tokens/andromeda-auction/Cargo.toml index c1338a5d7..bae0ad262 100644 --- a/contracts/non-fungible-tokens/andromeda-auction/Cargo.toml +++ b/contracts/non-fungible-tokens/andromeda-auction/Cargo.toml @@ -24,7 +24,7 @@ cw721 = { workspace = true } cw20 = { workspace = true } -andromeda-std = { workspace = true, features = ["rates"]} +andromeda-std = { workspace = true, features = ["rates"] } andromeda-non-fungible-tokens = { workspace = true } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] diff --git a/contracts/non-fungible-tokens/andromeda-auction/src/contract.rs b/contracts/non-fungible-tokens/andromeda-auction/src/contract.rs index c00b5ebf0..3719d4fc1 100644 --- a/contracts/non-fungible-tokens/andromeda-auction/src/contract.rs +++ b/contracts/non-fungible-tokens/andromeda-auction/src/contract.rs @@ -15,7 +15,7 @@ use andromeda_std::{ common::{ actions::call_action, call_action::get_action_name, - denom::{Asset, SEND_CW20_ACTION}, + denom::{validate_denom, Asset, SEND_CW20_ACTION}, encode_binary, expiration::{expiration_from_milliseconds, get_and_validate_start_time, Expiry}, Funds, Milliseconds, OrderBy, @@ -359,6 +359,24 @@ fn execute_update_auction( nonpayable(&info)?; let (coin_denom, uses_cw20) = coin_denom.get_verified_asset(deps.branch(), env.clone())?; + if uses_cw20 { + let valid_cw20_auction = ADOContract::default() + .is_permissioned( + deps.branch(), + env.clone(), + SEND_CW20_ACTION, + coin_denom.clone(), + ) + .is_ok(); + ensure!( + valid_cw20_auction, + ContractError::InvalidFunds { + msg: "Non-permissioned CW20 asset sent".to_string() + } + ); + } else { + validate_denom(deps.as_ref(), coin_denom.clone())?; + } let mut token_auction_state = get_existing_token_auction_state(deps.storage, &token_id, &token_address)?; ensure!( @@ -369,6 +387,7 @@ fn execute_update_auction( !token_auction_state.start_time.is_expired(&env.block), ContractError::AuctionAlreadyStarted {} ); + ensure!( !end_time.get_time(&env.block).is_zero(), ContractError::InvalidExpiration {} diff --git a/contracts/non-fungible-tokens/andromeda-auction/src/testing/tests.rs b/contracts/non-fungible-tokens/andromeda-auction/src/testing/tests.rs index 2ab1b9532..dd8c5df1d 100644 --- a/contracts/non-fungible-tokens/andromeda-auction/src/testing/tests.rs +++ b/contracts/non-fungible-tokens/andromeda-auction/src/testing/tests.rs @@ -5,6 +5,7 @@ use crate::{ mock_dependencies_custom, MOCK_TOKEN_ADDR, MOCK_TOKEN_OWNER, MOCK_UNCLAIMED_TOKEN, }, }; + use andromeda_non_fungible_tokens::{ auction::{ AuctionInfo, AuctionStateResponse, Cw20HookMsg, Cw721HookMsg, ExecuteMsg, InstantiateMsg, diff --git a/contracts/non-fungible-tokens/andromeda-crowdfund/Cargo.toml b/contracts/non-fungible-tokens/andromeda-crowdfund/Cargo.toml index 3acaadb69..cb27694e5 100644 --- a/contracts/non-fungible-tokens/andromeda-crowdfund/Cargo.toml +++ b/contracts/non-fungible-tokens/andromeda-crowdfund/Cargo.toml @@ -23,7 +23,7 @@ cw-utils = { workspace = true } cw721 = { workspace = true } cw20 = { workspace = true } -andromeda-std = { workspace = true, features = ["rates"]} +andromeda-std = { workspace = true, features = ["rates"] } andromeda-non-fungible-tokens = { workspace = true } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] diff --git a/contracts/non-fungible-tokens/andromeda-marketplace/src/testing/tests.rs b/contracts/non-fungible-tokens/andromeda-marketplace/src/testing/tests.rs index 9dc1902f5..a3884e7d1 100644 --- a/contracts/non-fungible-tokens/andromeda-marketplace/src/testing/tests.rs +++ b/contracts/non-fungible-tokens/andromeda-marketplace/src/testing/tests.rs @@ -473,7 +473,10 @@ fn test_execute_buy_works() { let mut deps = mock_dependencies_custom(&[]); let mut env = mock_env(); - let _res = init(deps.as_mut(), None); + let _res = init( + deps.as_mut(), + Some(AndrAddr::from_string(MOCK_CW20_CONTRACT)), + ); start_sale(deps.as_mut(), Asset::NativeToken("uusd".to_string())); assert_sale_created(deps.as_ref(), env.clone(), "uusd".to_string(), false); diff --git a/contracts/os/andromeda-adodb/README.md b/contracts/os/andromeda-adodb/README.md deleted file mode 100644 index a88378517..000000000 --- a/contracts/os/andromeda-adodb/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Andromeda Factory - -A repository containing the NFT contract for Andromeda Protocol on Terra. This contract's primary purpose is to initialise and register ADO collections. Registration is done by a mapping between the ADO collection's symbol and the contract address for the given ADO collection. Documentation can be found [here](https://app.gitbook.com/@andromedaprotocol/s/andromeda/contracts/andromeda-factory). diff --git a/contracts/os/andromeda-vfs/Cargo.toml b/contracts/os/andromeda-vfs/Cargo.toml index da230b638..b698da3b0 100644 --- a/contracts/os/andromeda-vfs/Cargo.toml +++ b/contracts/os/andromeda-vfs/Cargo.toml @@ -27,7 +27,7 @@ cosmwasm-schema = { workspace = true } cw-storage-plus = { workspace = true } serde = { version = "1.0.127", default-features = false, features = ["derive"] } -andromeda-std = { workspace = true} +andromeda-std = { workspace = true } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] cw-multi-test = { workspace = true, optional = true } diff --git a/git-conventional-commits.yaml b/git-conventional-commits.yaml index 073aae3ed..79c0613c6 100644 --- a/git-conventional-commits.yaml +++ b/git-conventional-commits.yaml @@ -1,4 +1,3 @@ ---- convention: commitTypes: - feat diff --git a/localrelayer b/localrelayer deleted file mode 160000 index 43072c6e6..000000000 --- a/localrelayer +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 43072c6e61ea14991906cf67c5e33d4cbc4996c2 diff --git a/packages/andromeda-app/src/app.rs b/packages/andromeda-app/src/app.rs index 53ff063b8..9ee9372e3 100644 --- a/packages/andromeda-app/src/app.rs +++ b/packages/andromeda-app/src/app.rs @@ -142,6 +142,19 @@ impl AppComponent { let creator = api.addr_canonicalize(parent_addr.as_str())?; let new_addr = instantiate2_address(&checksum, &creator, &salt).unwrap(); + // Instantiate 2 impl uses default cannonical address of 32 bytes (SHA 256). But as mentioned here - + // https://github.com/cosmos/cosmos-sdk/blob/v0.45.8/docs/architecture/adr-028-public-key-addresses.md + // chains can use different length for cannonical address, eg, injective uses 20 (eth based). + // Instead of having fallback for each chain we can use parent address, which itself is a contract. + // Slice the default 32 bytes canonical address to size of parent cannonical address + + let cannonical_parent_addr = api.addr_canonicalize(parent_addr.as_str())?; + let new_addr = new_addr + .as_slice() + .split_at(cannonical_parent_addr.len()) + .0 + .into(); + Ok(Some(api.addr_humanize(&new_addr)?)) } diff --git a/packages/andromeda-data-storage/Cargo.toml b/packages/andromeda-data-storage/Cargo.toml index e9b748c74..0b19ac2f7 100644 --- a/packages/andromeda-data-storage/Cargo.toml +++ b/packages/andromeda-data-storage/Cargo.toml @@ -19,5 +19,4 @@ cosmwasm-schema = { workspace = true } serde = { version = "1.0.127", default-features = false, features = ["derive"] } cw-utils = { workspace = true } -andromeda-std = { workspace = true, features=[] } - +andromeda-std = { workspace = true, features = [] } diff --git a/packages/std/src/ado_contract/execute.rs b/packages/std/src/ado_contract/execute.rs index b8d44c174..5a56b0724 100644 --- a/packages/std/src/ado_contract/execute.rs +++ b/packages/std/src/ado_contract/execute.rs @@ -220,17 +220,17 @@ impl<'a> ADOContract<'a> { /// Handles receiving and verifies an AMPPkt from the Kernel before executing the appropriate messages. /// /// Calls the provided handler with the AMP packet attached within the context. - pub fn execute_amp_receive( + pub fn execute_amp_receive( &self, ctx: ExecuteContext, mut packet: AMPPkt, - handler: ExecuteContextFunction, + handler: ExecuteContextFunction, ) -> Result { packet.verify_origin(&ctx.info, &ctx.deps.as_ref())?; let ctx = ctx.with_ctx(packet.clone()); let msg_opt = packet.messages.pop(); if let Some(msg_opt) = msg_opt { - let msg: E = from_json(msg_opt.message)?; + let msg: M = from_json(msg_opt.message)?; let response = handler(ctx, msg)?; Ok(response) } else {