An all-environment scripting library for interacting with CosmWasm smart-contracts.

Overview

alt text

BOOT

Smart contract scripting library to ease CosmWasm smart contract deployment and testing.

BOOT is inspired by terra-rust-api and uses cosmos-rust for protocol buffer parsing.

boot-plus uses BOOT to provide standard type-safe interfaces to interact with cw-plus contracts.

The use of this software makes it easier to quickly deploy and iterate on your contracts. You should use this function responsibly when working on mainnet or testnet as ALL the code you upload to those networks takes up valuable space. Therefore I strongly suggest using a locally-hosted chain like localterra, local junod, etc. .

How it works

Usually your contracts workspace will have a package that contains the endpoint structs of your contracts. We can easily access these endpoint structs (InstantiateMsg, ExecuteMsg, QueryMsg, ...) by adding that package as a dependency to your BOOT crate.

In order to perform actions on the contract we need to specify these structs so the compiler can type-check our actions. This prevents us from executing a faulty message on a contract and it also handles converting the structs to their json format. The implementation for a CW20 token is shown below. The full file resides here

use cw20_base::msg::{ExecuteMsg, InstantiateMsg, QueryMsg};
// Just a type-alias
pub type Cw20<Chain> = CwPlusContract<Chain, ExecuteMsg, InstantiateMsg, QueryMsg, Empty>;

You can now perform any action on the cw20 contract and implement custom actions.

    let cw20_token = Cw20::new(chain)?;
    let token_info: TokenInfoResponse = cw20_token.query(&Cw20QueryMsg::TokenInfo {}).await?;

I recommend reading the cw20 usage example here

Contributing

Feel free to open issues or PRs!

Comments
  • Feature/checksums

    Feature/checksums

    This change makes it so that the user can call upload_if_needed() on the contract interface and avoid a duplicate upload to the chain. This makes the experience for the user much better when an error is encountered during deployment and some part of it needs to restart.

    It currently does NOT retrieve the checksum from the state logs, but rather by using sha256 on the file itself to calculate the hash. This may or may not be desired, but avoids a query (if we could query that).

    opened by adairrr 5
  • I think this directory needs another ../

    I think this directory needs another ../

    When you cd in packages/interfaces/ then contracts/ would be in ../../contracts, right?

    :loudspeaker: Type of change

    :white_small_square: Bugfix :white_small_square: New feature :white_small_square: Enhancement :white_small_square: Refactoring :white_small_square: Maintenance

    :scroll: Description and Motivation

    :hammer_and_wrench: How to test (if applicable)

    :pencil: Checklist

    :white_small_square: Reviewed submitted code :white_small_square: Added tests to verify changes :white_small_square: Updated docs :white_small_square: Verified on testnet

    opened by MbBrainz 1
  • Update cosmrs requirement from 0.9.0 to 0.10.0

    Update cosmrs requirement from 0.9.0 to 0.10.0

    Updates the requirements on cosmrs to permit the latest version.

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Execute message derive macro

    Execute message derive macro

    :loudspeaker: Type of change

    :white_small_square: Bugfix :white_small_square: New feature :white_small_square: Enhancement :white_small_square: Refactoring :white_small_square: Maintenance

    :scroll: Description and Motivation

    A derive macro that can be added to an ExecuteMsg struct to generate functions that can be called on the associated boot object.

    Example:

    #[cw_serde]
    #[derive(ExecuteFns)]
    pub enum ExecuteMsg{
        /// Freeze will make a mutable contract immutable, must be called by an admin
        Freeze {},
        /// UpdateAdmins will change the admin set of the contract, must be called by an existing admin,
        /// and only works if the contract is mutable
        UpdateAdmins { admins: Vec<String> },
        #[payable]
        Deposit {}
    }
    
    #[boot_contract(Empty,ExecuteMsg,Empty,Empty)]
    struct Cw1
    
    impl<Chain: BootEnvironment + Clone> Cw1<Chain> {
        pub fn test_macro(&self) {
            self.freeze().unwrap();
            self.update_admins(vec![]).unwrap(); 
            self.deposit(&[Coin::new(13,"juno")]).unwrap();
        }
    }
    

    :hammer_and_wrench: How to test (if applicable)

    :pencil: Checklist

    • Add flag for coins instead of optionals.

    :white_small_square: Reviewed submitted code :white_small_square: Added tests to verify changes :white_small_square: Updated docs :white_small_square: Verified on testnet

    opened by CyberHoward 1
  • Update cw20 requirement from 0.15.0 to 0.16.0

    Update cw20 requirement from 0.15.0 to 0.16.0

    Updates the requirements on cw20 to permit the latest version.

    Release notes

    Sourced from cw20's releases.

    v0.16.0

    Attached there are some schemas and build artifacts generated at this tag. Those are for development purposes only! Please use crates.io to find the packages of this release.

    Changelog

    Sourced from cw20's changelog.

    v0.16.0 (2022-10-14)

    Full Changelog

    Closed issues:

    • Unable to run workspace-optimizer #828
    • Running the build command for the production-ready build for cw-20 and not only ends an error #821
    • Fill out missing high-level docs #806
    • Some multitest bindings for staking are missing such as BondedDenom #753
    • Allow burn to have a callback just like Send #717
    • Unable to upload cw20_base wasm file on terra-station #716
    • Cannot upload to localterra with cw-storage-plus 0.12.1 #666
    • Is MAX_LIMIT a bug? #625
    • Add support for admin migrations to cw-multitest #744

    Merged pull requests:

    v0.15.1 (2022-09-27)

    Full Changelog

    Closed issues:

    • Add stack and queue implementations to storage-plus #776

    Merged pull requests:

    v0.15.0 (2022-09-14)

    Full Changelog

    Breaking changes:

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Auto generate contract endpoint functions

    Auto generate contract endpoint functions

    The requirement to implement the contract's endpoint calls manually is not a good developer experience.

    It should be possible to create a macro that generates the scripting functions for the contract.

    enhancement 
    opened by CyberHoward 1
  • Add `CallAs` trait

    Add `CallAs` trait

    :loudspeaker: Type of change

    :white_small_square: Bugfix :white_small_square: New feature :white_small_square: Enhancement :white_small_square: Refactoring :white_small_square: Maintenance

    :scroll: Description and Motivation

    The CallAs trait allows for a call_as(&caller_addr) modifier when doing contract calls in a mock environment.

    :hammer_and_wrench: How to test (if applicable)

    :pencil: Checklist

    :white_small_square: Reviewed submitted code :white_small_square: Added tests to verify changes :white_small_square: Updated docs :white_small_square: Verified on testnet

    opened by CyberHoward 0
  • Update LICENCE

    Update LICENCE

    :loudspeaker: Type of change

    :white_small_square: Bugfix :white_small_square: New feature :white_small_square: Enhancement :white_small_square: Refactoring :white_small_square: Maintenance

    :scroll: Description and Motivation

    :hammer_and_wrench: How to test (if applicable)

    :pencil: Checklist

    :white_small_square: Reviewed submitted code :white_small_square: Added tests to verify changes :white_small_square: Updated docs :white_small_square: Verified on testnet

    opened by CyberHoward 0
  • Support nested boot functions

    Support nested boot functions

    :loudspeaker: Type of change

    :black_small_square: Bugfix :black_small_square: New feature :white_small_square: Enhancement :white_small_square: Refactoring :white_small_square: Maintenance

    :scroll: Description and Motivation

    Some endpoint messages might contain generic arguments. These types of messages were not supported until now. To fix this without assuming anything about the messages users aim to nest in their entrypoint messages we resorted to adding a #[impl_into(X)] attribute that can be used alongside the ExecuteFns and QueryFns macros.

    Usage

    Lets take this execute message:

    #[cosmwasm_schema::cw_serde]
    pub enum WrapperExecuteMsg<BaseMsg> {
        /// A configuration message.
        Base(BaseMsg),
    }
    

    If we would want to generate functions for each variant of BaseMsg we would be required to introspect the BaseMsg struct, which is impossible since it's a generic.

    Instead if we expect the BaseMsg to implement Into<ExecuteMsg<BaseMsg>> (which is not a hard ask) then we can parse the message into it's required type.

    Hence the macro takes the expected contract entrypoint message.

    // Define the endpoint message's type. Can contain other generics.
    let type EndpointExecuteMsg = WrapperExecuteMsg<BaseExecuteMsg>;
    
    #[cosmwasm_schema::cw_serde]
    #[derive(boot_core::ExecuteFns)]
    // Tell ExecuteFns that the contract expects an EndpointExecuteMsg and that BaseExecuteMsg implements .into()
    #[impl_into(EndpointExecuteMsg)]
    pub enum BaseExecuteMsg {
       /// Updates the base config
       UpdateConfig { ans_host_address: Option<String> },
    }
    

    Now any BOOT struct that has the #[boot_contract(_ ,ExecuteMsg, ...)] attribute will have a .update_config() method!

    • Bug fixes: Without deterministic function arguments a change to a message struct's field positions would resolve in a breaking change on the function. Example:
    enum Foo {
        TBar {
           bar: u8,
           foo_bar: String
        }
    }
    // Generates 
    x.t_bar(bar,foo_bar)
    
    // While 
    enum Foo {
        TBar {
           foo_bar: String
           bar: u8,
        }
    }
    // Generates 
    x.t_bar(foo_bar, bar)
    

    This is fixed by sorting the struct arguments before generating the fn.

    A fix for #39 is also included.

    closes #39

    :hammer_and_wrench: How to test (if applicable)

    :pencil: Checklist

    :white_small_square: Reviewed submitted code :white_small_square: Added tests to verify changes :white_small_square: Updated docs :white_small_square: Verified on testnet

    opened by CyberHoward 0
  • Doc-comments on nested fields not supported on `Fns` macros

    Doc-comments on nested fields not supported on `Fns` macros

    #[cosmwasm_schema::cw_serde]
    #[cfg_attr(feature = "boot", derive(boot_core::ExecuteFns))]
    pub enum ExecuteMsg {
        UpdateMarketing {
            /// A URL pointing to the project behind this token.
            project: Option<String>,
            /// A longer description of the token and it's utility. Designed for tooltips or such
            description: Option<String>,
            /// The address (if any) who can update this data structure
            marketing: Option<String>,
        },
       ...
    }
    
    bug 
    opened by CyberHoward 0
  • Add daemon options builder

    Add daemon options builder

    :loudspeaker: Type of change

    :white_small_square: Bugfix :white_small_square: New feature :black_small_square: Enhancement :white_small_square: Refactoring :white_small_square: Maintenance

    :scroll: Description and Motivation

    Add a DaemonOptions struct and derived builder for specifying daemon options that can be expanded on in the future.

    :hammer_and_wrench: How to test (if applicable)

    :pencil: Checklist

    :white_small_square: Reviewed submitted code :white_small_square: Added tests to verify changes :white_small_square: Updated docs :white_small_square: Verified on testnet

    opened by CyberHoward 0
  • Resumable Deployment Observer

    Resumable Deployment Observer

    It would be beneficial to the developer experience if in-progress deployments were kept track of, and were able to be resumed at a given point if a step fails.

    Right now, if you have a script that deploys many interlinked contracts and one of the deployments / actions fails, the script fails entirely with dangling contracts in an unknown state. With the deployment observer, the latest step and state would be known and could be resumed before the failure.

    This would likely use the observer pattern where each step executing an action using the Boot ContractInstance would increment the step counter and save the state at that step. If a deployment "resumes" (via flag or otherwise) it would see that the step counter is > 0 and resume after the latest successful step.

    enhancement 
    opened by adairrr 0
  • Update cw20 requirement from 0.15.0 to 1.0.0

    Update cw20 requirement from 0.15.0 to 1.0.0

    Updates the requirements on cw20 to permit the latest version.

    Changelog

    Sourced from cw20's changelog.

    v1.0.0 (2022-11-29)

    Full Changelog

    Implemented enhancements:

    • Proposal for improving contract interfaces #391

    Closed issues:

    • u #840
    • Workspace optimizer build failed #838
    • Simplify licenses #833
    • Update README #832
    • Remove cw1155 and cw1155-base #830
    • Standardize protocol events #823
    • Pull out storage-plus, multitest and utils into a separate repo #816
    • Backport from DAO DAO: optionally charge to make proposal #742
    • Cannot find Contract address and interface verification #679
    • Investigate JSON Schema -> html/md generator #573
    • Simple framework for gas benchmarking #507
    • Benchmark "ng" vs. "classic" frameworks #505
    • Update reimplemented cw1-whitelist contract, so it uses the custom attribute #496
    • Implement attribute macro for trait interface generating boilerplate specific for cw1-whitelist #495
    • Deriving structural interfaces for contracts #493
    • Accept &QuerierWrapper not &Querier in helpers #390

    Merged pull requests:

    • Standardize spec events #845 (uint)
    • Add contributing guidelines #841 (uint)
    • Use QuerierWrapper not Querier in cw20 helpers #839 (uint)
    • Update CI to Rust 1.64 #837 (uint)
    • README.md update #836 (uint)
    • Remove the AGPL license #835 (uint)
    • Move utils, storage-plus, multitest; remove cw1155 stuff #834 (uint)
    • Add an optional proposal deposit to cw3-flex-multisig #751 (0xekez)

    v0.16.0 (2022-10-14)

    Full Changelog

    Closed issues:

    • Unable to run workspace-optimizer #828
    • Running the build command for the production-ready build for cw-20 and not only ends an error #821
    • Fill out missing high-level docs #806
    • Some multitest bindings for staking are missing such as BondedDenom #753
    • Allow burn to have a callback just like Send #717
    • Unable to upload cw20_base wasm file on terra-station #716

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Update cosmrs requirement from 0.9.0 to 0.11.0

    Update cosmrs requirement from 0.9.0 to 0.11.0

    Updates the requirements on cosmrs to permit the latest version.

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Update hkd32 requirement from 0.5.0 to 0.7.0

    Update hkd32 requirement from 0.5.0 to 0.7.0

    Updates the requirements on hkd32 to permit the latest version.

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Add support for Terra

    Add support for Terra

    Terra has two different supported versions of CosmWasm which results in them having different gRPC URLs. To fix this we need to find a way to select which gRPC urls to use.

    opened by CyberHoward 0
  • Update bitcoin requirement from 0.27.1 to 0.29.2

    Update bitcoin requirement from 0.27.1 to 0.29.2

    Updates the requirements on bitcoin to permit the latest version.

    Changelog

    Sourced from bitcoin's changelog.

    0.29 - 2022-07-20 "Edition 2018 Release"

    As promised, this is our quick release to bring on edition 2018 by increasing our MSRV to Rust 1.41.1 #983

    This work saw a bunch of new language features become available to us. At the same time we were able to start using rustfmt. We also started linting as part of CI.

    Breaking changes

    There are numerous breaking changes in this release related to the new language features but also other improvements such as more newtypes added. Note that not all changes cause compilation failure! For example, Witness serialization was changed to support human-readable formats.

    Detailed list of breaking changes

    Highlights

    • Added support for BIP 152 #1088
    • Edition 2018 improvements
      • Implement TryFrom #1007
      • Add non_exhaustive to all error enums #1026
      • Various other improvements, see tracking issue for more information.
    • Enable clippy on CI #1061
    • Taproot improvements #950 #936
    • serde improvements/changes #1006 #905 #1071 []
    • Performance improvements #1033 #996 #1053 #1023
    • PSBT improvements #853 #951 (rust-bitcoin/rust-bitcoin#951) #940
    • Script improvements #1021 #954
    • New types that may be of interest
      • Sequence, transaction sequence number #1093
      • ChainHash, as used in Lightning #878
      • LockTime, transaction nLockTime #994
    • Improve pubkey sorting: #1084
    • Introduce rustfmt #1040
    • Dependencies
      • Upgrade to use bitcoinconsensus v0.20.2-0.5.0 #1165
      • Upgrade to use secp256k1 v0.24.0 #1110
      • Upgrade to use bech32 v0.9.0 #1131
      • Remove base64-compat in favour of base64 #993

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(v0.1.0-alpha)
  • v0.1.0-alpha(Nov 20, 2022)

    What's Changed

    • Daemon State method updates by @adairrr in https://github.com/Abstract-OS/BOOT/pull/8
    • Builder method to use a preconfigured address on the Contract instance by @adairrr in https://github.com/Abstract-OS/BOOT/pull/9
    • Rename boot-plus to boot-cw-plus by @CyberHoward in https://github.com/Abstract-OS/BOOT/pull/10

    New Contributors

    • @adairrr made their first contribution in https://github.com/Abstract-OS/BOOT/pull/8
    • @CyberHoward made their first contribution in https://github.com/Abstract-OS/BOOT/pull/10

    Full Changelog: https://github.com/Abstract-OS/BOOT/commits/v0.1.0-alpha

    Source code(tar.gz)
    Source code(zip)
Owner
Abstract
CosmWasm Dapp infrastructure
Abstract
A library that makes it VERY easy to run Holochain as a library, from your own binary, with great defaults

embedded-holochain-runner A library that makes it VERY easy to run Holochain as a library, from your own binary, with great defaults How it will work

Sprillow 14 Jul 23, 2022
Library for loading Linux kernel modules.

liblmod - Library for loading Linux kernel modules Features: modprobe rmmod Example code: extern crate liblmod; fn main() -> std::io::Result<()> {

Zapomnij 2 Aug 2, 2022
A gRPC-based scripting library for interacting with CosmWasm smart-contracts.

Cosmos Rust Script Smart contract scripting library to ease CosmWasm smart contract development and deployment. cosm-script is inspired by terra-rust-

null 11 Nov 3, 2022
Cosmwasm in Cosmwasm through ComposableFi/cosmwasm-vm

Cosmwasmception Running Fastest way to run this contract would be through our vm. But note that our vm runs an already built version this contract, so

Abdullah Eryuzlu 3 Oct 5, 2022
CosmWasm-Examples is a collection of example contracts and applications built using the CosmWasm framework

CosmWasm-Examples is a collection of example contracts and applications built using the CosmWasm framework. CosmWasm is a secure and efficient smart contract platform designed specifically for the Cosmos ecosystem.

Vitalii Tsyhulov 20 Jun 9, 2023
My code for the terra.academy course on CosmWasm smart contracts

CosmWasm Starter Pack This is a template to build smart contracts in Rust to run inside a Cosmos SDK module on all chains that enable it. To understan

Alex Incerti 0 Nov 7, 2021
A simple example demonstrating cross-contract calls in CosmWasm smart contracts

Cross-contract calls This tutorial demonstrates cross-contract calls with CosmWasm v1. Overview An end user calls the reservation contract to register

csli Tools 3 Sep 12, 2022
A blazingly fast compiling & optimization tool for CosmWasm smart contracts.

cw-optimizoor A blazingly fast alternative to CosmWasm/rust-optimizer for compiling & optimizing CW smart contracts. It's primarily meant to speed up

Sebastian Mandrean 37 Apr 15, 2023
Easy c̵̰͠r̵̛̠ö̴̪s̶̩̒s̵̭̀-t̶̲͝h̶̯̚r̵̺͐e̷̖̽ḁ̴̍d̶̖̔ ȓ̵͙ė̶͎ḟ̴͙e̸̖͛r̶̖͗ë̶̱́ṉ̵̒ĉ̷̥e̷͚̍ s̷̹͌h̷̲̉a̵̭͋r̷̫̊ḭ̵̊n̷̬͂g̵̦̃ f̶̻̊ơ̵̜ṟ̸̈́ R̵̞̋ù̵̺s̷̖̅ţ̸͗!̸̼͋

Rust S̵̓i̸̓n̵̉ I̴n̴f̶e̸r̵n̷a̴l mutability! Howdy, friendly Rust developer! Ever had a value get m̵̯̅ð̶͊v̴̮̾ê̴̼͘d away right under your nose just when

null 294 Dec 23, 2022
Minimal Substrate node configured for smart contracts via pallet-contracts.

substrate-contracts-node This repository contains Substrate's node-template configured to include Substrate's pallet-contracts ‒ a smart contract modu

Parity Technologies 73 Dec 30, 2022
CosmWasm/Sylvia counting contract w/ IBC enabled (Cosmos, Rust, CosmWasm, Sylvia)

CosmWasm/Sylvia counting contract w/ IBC enabled (Cosmos, Rust, CosmWasm, Sylvia) This repository contains counting contract created during the study

Alex Cryp 3 Nov 13, 2023
A template to build smart contracts in Rust to run inside a Cosmos SDK module on all chains that enable it.

CosmWasm Starter Pack This is a template to build smart contracts in Rust to run inside a Cosmos SDK module on all chains that enable it. To understan

null 1 Mar 7, 2022
Examples and helpers to build NFT contracts on CosmWasm

CosmWasm NFTS This repo is the official repository to work on all NFT standard and examples in the CosmWasm ecosystem. cw721 and cw721-base were moved

CosmWasm 147 Jan 4, 2023
An example CosmWasm contract for connecting contracts over IBC.

CosmWasm IBC Example This is a simple IBC enabled CosmWasm smart contract. It expects to be deployed on two chains and, when prompted, will send messa

ekez 64 Jun 21, 2023
CosmWasm smart contract to bundle up cw assets (cw20, cw721, cw1155)

CosmWasm CW Bundler This repo is a CosmWasm smart contract that allows users and other contracts to bundle any combination of cw20, cw721, cw1155 toke

Peter Kim 5 Jun 26, 2022
Rust library for build smart contracts on Internet Computer, by the Spinner.Cash team.

Spinner Rust library for building smart contracts on the Internet Computer. More specifically it is used by Spinner.Cash, a decentralized layer-2 prot

Spinner 6 May 31, 2022
RGB smart contracts: client-facing library & command-line for desktop and mobile

RGB smart contracts RGB is confidential & scalable client-validated smart contracts for Bitcoin & Lightning. It embraces the concepts of private & mut

RGB: scalable & private smart contracts for bitcoin & lightning 4 Mar 15, 2023
Unofficial Rust SDK library for Uniswap smart contracts.

uniswap-rs Unofficial Rust SDK library for Uniswap smart contracts. Quickstart Add this to your Cargo.toml: [dependencies] uniswap-rs = { git = "https

HopefulHeart 3 Sep 22, 2023
zink! is a library for developing ink! smart contracts with useful Rust macros that extend functionality and reduce boilerplate code.

zink! Smart Contract Macros This is a helper library for developing ink! smart contracts. It contains useful Rust macros that extend functionality and

Scio Labs 3 Nov 3, 2023
Unofficial Rust SDK library for Uniswap smart contracts.

uniswap-rs Unofficial Rust SDK library for Uniswap smart contracts. Quickstart Add this to your Cargo.toml: [dependencies] uniswap-rs = { git = "https

SlickCharmer 3 Mar 29, 2024