<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Simon Warta on Medium]]></title>
        <description><![CDATA[Stories by Simon Warta on Medium]]></description>
        <link>https://medium.com/@simonwarta?source=rss-50670cbc8be9------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/2*FBNQXFA3rUambudk8jGQnQ.jpeg</url>
            <title>Stories by Simon Warta on Medium</title>
            <link>https://medium.com/@simonwarta?source=rss-50670cbc8be9------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Tue, 23 Jun 2026 09:47:14 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@simonwarta/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Confio ends CosmWasm maintenance]]></title>
            <link>https://medium.com/confio/confio-ends-cosmwasm-maintenance-55c64818f61a?source=rss-50670cbc8be9------2</link>
            <guid isPermaLink="false">https://medium.com/p/55c64818f61a</guid>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[business]]></category>
            <category><![CDATA[cosmos-network]]></category>
            <category><![CDATA[cosmwasm]]></category>
            <category><![CDATA[smart-contracts]]></category>
            <dc:creator><![CDATA[Simon Warta]]></dc:creator>
            <pubDate>Mon, 30 Jun 2025 06:59:42 GMT</pubDate>
            <atom:updated>2025-06-30T06:59:42.583Z</atom:updated>
            <content:encoded><![CDATA[<p>Following the discontinuation of the steward model which the Interchain Foundation announced late 2024, Confio was unable to secure sufficient funding to continue maintaining CosmWasm in its current form. As a consequence, Confio ends CosmWasm maintenance after June 30th.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*hWtO4kMM6OeL8rTmgjJWUA@2x.jpeg" /></figure><p>In the last couple of years the entire framework spanning across something like 30 repositories from chain integration to build tools was developed by 8–10 software engineers, supported by marketing, HR and operations colleagues. Together with our funding partners ICF, Neutron, AADAO and Axelar, we were able to secure the funding for H1 2025. Thank you for making that possible! This bought everyone involved valuable time to adapt to what is coming.</p><p>In the meantime, Interchain Labs decided to not host a CosmWasm maintenance team in-house. However, they collaborate with Neutron by funding CosmWasm maintenance efforts embedded into the Neutron team. Also Thorchain and Axelar signaled interest to contribute to CosmWasm’s ongoing maintenance.</p><p>From July onwards, the Confio team members Darek and Pino will be the first developers working on CosmWasm full time. Darek was focussed on MultiTest before and Pino is the maintaner of wasmd. They used the last couple of weeks collaborating with the rest of the team to gain knowledge of the entire stack. Darek and Pino become owners of the CosmWasm GitHub organization. The primary point of contact to them is the existing <a href="https://t.me/+SGT2p3VszzSgUViP">CosmWasm Telegram channel</a> which is open for messaging again.</p><p>To reduce the maintenance burden for Darek and Pino, the Sylvia framework will be moved out of the CosmWasm organisation and is continued by the original author Bart as well as the long time Sylvia maintainer Jan.</p><p>Security wise, the <a href="https://hackerone.com/cosmos">Cosmos bug bounty program on HackerOne</a> keeps the CosmWasm scope such that security issues can be reported there. The security contact at Confio will be removed.</p><p>What’s next for CosmWasm is not for Confio to decide anymore. Users need to come together and collaborate on priorities, roadmaps and funding. There are many things that could be done or would be great to have. But keeping up with Cosmos SDK and IBC updates, following the evolving Wasm standard as well as adapting to the <a href="https://wasmer.io/posts/singlepass-relicensing">Wasmer Singlepass license</a> change are certainly on the agenda.</p><p>Over the years, many people suggested to release CosmWasm under a restrictive license. But this is something we never agreed with. Not only would it be a legal nightmare, harm the network effects and risk ICF funding. It would also be against the spirit of decentralized user owned systems and free innovation. Defending the Apache 2 license was a tool to create a meaningful piece of software that has the potential to outlive its original creators.</p><p>Confio brough CosmWasm into existence and made it grow 6 years old. As it moves forward past its <a href="https://medium.com/cosmwasm/cosmwasm-3-0-fd84d72c2d35">3.0 release</a>, we’re proud of what’s been built — and excited to see where the community takes it next.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=55c64818f61a" width="1" height="1" alt=""><hr><p><a href="https://medium.com/confio/confio-ends-cosmwasm-maintenance-55c64818f61a">Confio ends CosmWasm maintenance</a> was originally published in <a href="https://medium.com/confio">Confio</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Confio remains in the hands of its founders and aims for self-ownership]]></title>
            <link>https://medium.com/confio/confio-remains-in-the-hands-of-its-founders-and-aims-for-self-ownership-924dce027faa?source=rss-50670cbc8be9------2</link>
            <guid isPermaLink="false">https://medium.com/p/924dce027faa</guid>
            <category><![CDATA[ownership]]></category>
            <category><![CDATA[company]]></category>
            <category><![CDATA[confio-gmbh]]></category>
            <category><![CDATA[cosmwasm]]></category>
            <category><![CDATA[smart-contracts]]></category>
            <dc:creator><![CDATA[Simon Warta]]></dc:creator>
            <pubDate>Tue, 12 Nov 2024 17:01:32 GMT</pubDate>
            <atom:updated>2024-11-12T17:01:32.503Z</atom:updated>
            <content:encoded><![CDATA[<p>In December last year, Confio and Neutron <a href="https://medium.com/confio/strategic-partnership-between-confio-and-neutron-brings-cosmwasm-to-the-next-level-5881294ba2c7">made a joint announcement</a> of a partnership and share purchase. However, we decided to not execute this deal. Instead, Confio remains owned by its 3 co-founders as well as the GmbH itself. Here is why and our new orientation.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lnvjGgBV6YjBhUxhyjDVVQ.png" /></figure><p>When we announced the purchase of 25% of Confio shares by Neutron last December, everything felt done. All parties were on the same page and we wanted to use the opportunity to get in an additional shareholder who deeply cares about Confio’s work and destiny.</p><p>However, it turned out the execution was not as straightforward as anticipated. Taxation questions, token valuation, as well as the complications around a multi-level shareholder structure in an international context delayed things for multiple months. Over time, circumstances and motivations changed. In hindsight, this is a good thing as we realized that we can collaborate well without being shareholders. A partnership built on trust, meaningful conversations and appreciation for each other’s work emerged. As a result, Simon from Confio and Avril from Neutron agreed on July 11th to not execute the planned share deal.</p><h3>Looking ahead</h3><p>Co-Founder and long-time CosmWasm maintainer Simon Warta remains committed to permanent leadership and development of the company.</p><p>Instead of looking for other buyers or investors, the founding team is on a path toward self-ownership for Confio. The company should exist in its own right, independent of who founded it originally. We want corporate governance to be decoupled from economic ownership, allowing profits to remain within the company. Following famous examples like Bosch or Patagonia, Confio aims to be self-owned and not for sale. This will be a multi-year endeavour. The first step has been completed by adjusting the articles of the company as well as an initial buyback of 13 % of the GmbH shares.</p><p>So, whilst we may not become joint shareholders, Confio and Neutron share a commitment to continue working together on exciting projects such as CosmWasm and the tooling ecosystem around it.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=924dce027faa" width="1" height="1" alt=""><hr><p><a href="https://medium.com/confio/confio-remains-in-the-hands-of-its-founders-and-aims-for-self-ownership-924dce027faa">Confio remains in the hands of its founders and aims for self-ownership</a> was originally published in <a href="https://medium.com/confio">Confio</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The incomplete gas patch and why it caused consensus failures]]></title>
            <link>https://medium.com/cosmwasm/the-incomplete-gas-patch-and-why-it-caused-consensus-failures-173547ef02de?source=rss-50670cbc8be9------2</link>
            <guid isPermaLink="false">https://medium.com/p/173547ef02de</guid>
            <category><![CDATA[security]]></category>
            <category><![CDATA[releases]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[gas-patch]]></category>
            <category><![CDATA[cosmwasm]]></category>
            <dc:creator><![CDATA[Simon Warta]]></dc:creator>
            <pubDate>Mon, 12 Aug 2024 15:16:44 GMT</pubDate>
            <atom:updated>2024-08-12T15:16:44.588Z</atom:updated>
            <content:encoded><![CDATA[<p>On Thursday, August 8th we released a patch for a Medium severity vulnerability in CosmWasm called <a href="https://github.com/CosmWasm/advisories/blob/main/CWAs/CWA-2024-004.md">CWA-2024–004</a>. The bug in question had the potential to delay block production and cause other unintended resource consumption in certain edge cases.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Yrh6gJq24jp910LMS3E2nw.png" /></figure><p>While severity is a global measurement across all users of CosmWasm, this is certainly more important to fix for permissionless chains than chains that only accept codes from pre-approved entities. So, while being non-critical, we recommended permissionless chains to perform an upgrade in the week of the release.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/09e217fdb3817c46891df6ad60293ffa/href">https://medium.com/media/09e217fdb3817c46891df6ad60293ffa/href</a></iframe><p>What this patch does is two things:</p><ol><li>Increase the gas for breaking operations (loop, br, call, return, …) from 170 to 1610</li><li>Reduce the gas for everything else from 170 to 115</li></ol><p>This is due to the additional metering operations that will be performed for breaking operations. To put it simply, a mispricing had been fixed to readjust for the <a href="https://github.com/CosmWasm/cosmwasm/blob/main/docs/GAS.md">target of 1 Teragas/second</a>.</p><p>This fix has been well prepared, benchmarked, tested and backported to the 1.5, 2.0 and 2.1 release series of CosmWasm.</p><p>A couple of hours after the release, two teams reached out wondering why the gas usage did not change after the release or why patched and unpatched nodes are still in consensus — very strange. We checked a few obvious things like ensuring gas_used is part of consensus in CometBFT or the gas changes are high enough to be visible in Cosmos SDK gas. Even for the very experienced team at Confio there was no obvious way to debug.</p><p>After some time we received the crucial hint from Sergey Golyshkin (Neutron team): the gas is part of the contract compile step and may only be applied during code upload. This was it! All compiled contracts in the cache folder ~/.myd/wasm/wasm/cache continued to run with the old gas pricing instead of the new one. As a result the patch was only applied for new codes or after re-compilation. The second happens whenever the module cache is invalidated, e.g. by spinning up a new node from snapshot without the cache directory, by manually deleting the folder or <a href="https://github.com/CosmWasm/cosmwasm/commit/e03585e6b8a5c1eb0fb89583865569b6901b6860">by invalidating it in the cosmwasm-vm codebase</a>. This is why we labeled the patch as incomplete, not wrong. It was good but there was this missing detail.</p><p>Once understood, we quickly released a set of follow-up patches the same day which invalidated all old caches such that no matter what cache the nodes have, they now all run on the same logic.</p><h3>But why?</h3><p>The patch we released worked and behaved perfectly fine in various levels of testing, such as unit and integration tests in the cosmwasm repo as well as in Go land in wasmvm and wasmd. What all those tests have in common is that their caches do not live longer than the test itself. They started fresh where a node in the wild does not.</p><p>We do not maintain testnets anymore. While being part of our proposal to the ICF for 2024 was to run and maintain a Vanilla CosmWasm testnet, this has not been prioritized. Applying the patch there first might have sped up the discovering, but it would not be a guarantee for success as such networks typically have a small amount of traffic.</p><p>In Open Source, security patches are usually released to the general public in one go to give everyone equal access to a patch. Applying the patch to a public testnet first would provide significant advantage for an attacker to analyze the patch and craft an attack. Running a private testnet might help but is something not in scope right now. Also having to maintain a shadow stack in private repos including cosmwasm-vm, wasmvm and wasmd and have a completely separate CI for this is a lot of work — maybe worth it, I don’t know.</p><h3>Lessons learned</h3><ul><li>Getting caching right is hard. We solved similar problems in the past before and will solve it here again, but there is a cost to pay for enhanced execution speed.</li><li>Wasmer metering is baked in at compile time</li><li>There is a class of issues you just don’t find in isolated unit tests. Higher level tests are not only needed to find uncovered code but also to find such things.</li></ul><p>To wrap up, yeah, it was bad. But the problem was fully understood and patched the same day it popped up. It will only lead to a more robust solution from here. So time to continue building.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=173547ef02de" width="1" height="1" alt=""><hr><p><a href="https://medium.com/cosmwasm/the-incomplete-gas-patch-and-why-it-caused-consensus-failures-173547ef02de">The incomplete gas patch and why it caused consensus failures</a> was originally published in <a href="https://medium.com/cosmwasm">CosmWasm</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[CosmWasm 2.0]]></title>
            <link>https://medium.com/cosmwasm/cosmwasm-2-0-bbb94126ce6f?source=rss-50670cbc8be9------2</link>
            <guid isPermaLink="false">https://medium.com/p/bbb94126ce6f</guid>
            <category><![CDATA[cosmwasm]]></category>
            <category><![CDATA[releases]]></category>
            <category><![CDATA[cosmos-network]]></category>
            <category><![CDATA[smart-contracts]]></category>
            <category><![CDATA[blockchain]]></category>
            <dc:creator><![CDATA[Simon Warta]]></dc:creator>
            <pubDate>Tue, 12 Mar 2024 15:57:33 GMT</pubDate>
            <atom:updated>2024-03-12T15:57:33.557Z</atom:updated>
            <content:encoded><![CDATA[<p>Two years after the first stable release of CosmWasm, we are proud to publish CosmWasm 2.0. This first breaking release was <a href="https://www.youtube.com/watch?v=VNwoLZZSoYs&amp;t=7240s">announced at AwesomWasm Berlin last year</a> and was developed in parallel to the feature releases 1.4 and 1.5.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0DiVcNojtNND6tq829Y2sg.png" /></figure><h3>Shiny new things</h3><p>Major releases are for breaking, but we also have a few nice additions that make CosmWasm more complete and convenient for its users.</p><h4>Error messages in replies</h4><p>Whenever an error is coming from a smart contract, we know it is deterministic. In those cases, we now skip redacting the error in wasmd and preserve the full text in the reply (SubMsgResult::Err). While this is great for debugging and logging, developers should not make assumptions about the text contents of those errors, which might be changed by the other contract.</p><h4>Grpc query</h4><p>The Grpc query is a protobuf-in protobuf-out replacement for Stargate query. This way, responses can be processed more efficiently and use a well-specified encoding. As before, chains have to specify which queries they want to allow.</p><h4>Submessage payloads</h4><p>A <a href="https://github.com/CosmWasm/cosmwasm/blob/v2.0.0-rc.1/packages/std/src/results/submessages.rs#L36-L49">SubMsg can now get a binary payload</a> that is returned untouched in the reply. This allows you to pass context from the original call to the replay without having to store it to state.</p><h4>Message responses</h4><p>A <a href="https://github.com/CosmWasm/cosmwasm/blob/v2.0.0-rc.1/packages/std/src/results/submessages.rs#L273">SubMsgResponse now has msg_responses</a> next to data. In there the message execution results are stored as a list of protobuf Anys. This is needed for getting the data on chains running Cosmos SDK 0.50.</p><h4>Optional acknowledgments</h4><p>In ibc_packet_receive/IbcReceiveResponse, the acknowledgment is now optional. This advanced feature allows contracts not to write them. Some exotic protocols might want to never create acknowledgments. But this change primarily prepares for asynchonous acknowledgments where the acknowledgment is created later than the receive call (not yet implemented).</p><h4>memo field in IbcMsg::Transfer</h4><p>The long-awaited memo field is here, adding the possibility to pass arbitrary text along the ICS-20 token send. This is also required for packet forward middleware, IBC hooks, or the upcoming ADR-8 implementation. Please note that chains with wasmvm 1.x ignore this field if set.</p><h3>Good to know</h3><p>Changes you might want to be aware of:</p><ul><li>The <a href="https://github.com/CosmWasm/cosmwasm/blob/v2.0.0-rc.1/docs/GAS.md">CosmWasm gas</a> values were reduced by a factor of 1000. This does not affect the measurements in Cosmos SDK gas, which is used in almost all interfaces.</li><li>CosmosMsg::Stargate was renamed to CosmosMsg::Any without changing semantics.</li><li>The JSON serialization of u128/i128 changed from string to numbers. Use Uint128/Int128 instead to keep the string representation.</li><li>MockApi now uses and requires bech32 as the human-readable address format in order to simplify the testing flow. Use api.addr_make(“some name”) to create testing addresses.</li><li>A new default “std” feature in cosmwasm-std must be enabled. Otherwise, a no_std build is attempted. But at this point no_std support is not yet fully implemented.</li></ul><h3>Removed</h3><p>Time to say goodbye to things not relevant anymore today:</p><ul><li>The cosmwasm-storage crate. Use cw-storage-plus for types storage access or cosmwasm-std for raw access.</li><li>Addr and String/&amp;str cannot be compared directly anymore for safety reasons. It’s recommended to convert both sides to an Addr first.</li><li>Mixed type arithmetics were removed (especially multiply Decimal with Uint*). The functions Uint{128,256}::mul_floor or Uint{128,256}::mul_ceil can be used instead.</li></ul><h3>Compatibility and upgrading</h3><p>Existing contracts compiled with cosmwasm-std ^1.0.0 continue to run as before on chains with wasmvm 2.0. Contracts compiled with cosmwasm-std ^2.0.0 do run on chains with wasmvm 1.x or 2.0. This way, it does not matter in which order you upgrade the chain or contracts.</p><p>If you enable the cosmwasm_2_0 feature of cosmwasm-std, the contract will require 2.0 features on the chain and unlock some of the new features above.</p><p>A migration guide for contract developers is here: <a href="https://github.com/CosmWasm/cosmwasm/blob/main/MIGRATING.md">MIGRATING.md</a>.</p><h3>Integration on-chain</h3><p>CosmWasm 2.0 will be shipped as part of wasmd 0.51. The integration work for the Wasm Light Client in IBC-Go <a href="https://github.com/cosmos/ibc-go/pull/5909">has started already</a>.</p><p>A migration guide for wasmvm users is here: <a href="https://github.com/CosmWasm/wasmvm/blob/main/docs/MIGRATING.md">MIGRATING.md</a>.</p><h3>Acknowledgments</h3><p>We’d like to take the opportunity to thank everyone who contributed to this major release with ideas, feature requests, user stories, and code. Many people inside of Confio contributed to the release one way or another but the majority of the work was done by Chris — thank you!</p><p>As part of the Interchain Stack, the ongoing maintenance and some well-defined features are funded by the Interchain Foundation in 2024. If you have specific needs that you want to see in upcoming CosmWasm releases, consider becoming a <a href="https://cosmwasm.com/home/subscriptions/">CosmWasm Subscriber</a> and help us make the next major release possible.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bbb94126ce6f" width="1" height="1" alt=""><hr><p><a href="https://medium.com/cosmwasm/cosmwasm-2-0-bbb94126ce6f">CosmWasm 2.0</a> was originally published in <a href="https://medium.com/cosmwasm">CosmWasm</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[CosmWasm 1.5 becomes Long Term Support (LTS) version]]></title>
            <link>https://medium.com/cosmwasm/cosmwasm-1-5-becomes-long-term-support-lts-version-16632bf06f2a?source=rss-50670cbc8be9------2</link>
            <guid isPermaLink="false">https://medium.com/p/16632bf06f2a</guid>
            <category><![CDATA[cosmos-network]]></category>
            <category><![CDATA[smart-contracts]]></category>
            <category><![CDATA[cosmwasm]]></category>
            <category><![CDATA[updates]]></category>
            <category><![CDATA[blockchain]]></category>
            <dc:creator><![CDATA[Simon Warta]]></dc:creator>
            <pubDate>Tue, 23 Jan 2024 08:12:17 GMT</pubDate>
            <atom:updated>2024-01-23T08:12:17.395Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GaR4_uTPYEwNeYYc2gDqJA.png" /></figure><p>As part of the planned roll-out of CosmWasm 2.0, it’s time to commit to end-of-life dates for the current versions to allow everyone to plan accordingly.</p><p>To make upgrading to 2.0 as convenient as possible, we turn version 1.5 into a Long Term Support (LTS) version. This means we will support it for one year from this announcement until the <strong>end of January 2025</strong>. This includes security patches and other important fixes. No changes in the feature set are to be expected. Upgrades in the 1.5.x version range aim to be as easy to deploy as possible, trying to achieve non-consensus-breaking behavior in the majority of cases.</p><p>With 1.5 being well established on major networks, we don’t see a reason not to upgrade 1.4 -&gt; 1.5. However, this is up to the chains, and we will support 1.4 for 6 more months until the <strong>end of July 2024</strong>.</p><p>To summarize this and <a href="https://medium.com/cosmwasm/eol-for-cosmwasm-1-0-1-3-22df4b34b13c">our previous announcement</a>, we have</p><ul><li>1.5 (LTS): End of January 2025</li><li>1.4: End of July 2024</li><li>1.3: End of March 2024</li><li>0.x, 1.0–1.2: Unmaintained</li></ul><p>We hope this plan works well for the majority of users. If not, let us know so that we can improve in the future.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=16632bf06f2a" width="1" height="1" alt=""><hr><p><a href="https://medium.com/cosmwasm/cosmwasm-1-5-becomes-long-term-support-lts-version-16632bf06f2a">CosmWasm 1.5 becomes Long Term Support (LTS) version</a> was originally published in <a href="https://medium.com/cosmwasm">CosmWasm</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Dev Note #5: Specifying how to handle funds when pruning a vesting account]]></title>
            <link>https://medium.com/cosmwasm/dev-note-5-specifying-how-to-handle-funds-when-pruning-a-vesting-account-2090076929e3?source=rss-50670cbc8be9------2</link>
            <guid isPermaLink="false">https://medium.com/p/2090076929e3</guid>
            <category><![CDATA[smart-contracts]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[cosmwasm]]></category>
            <category><![CDATA[cosmos-network]]></category>
            <category><![CDATA[devnote]]></category>
            <dc:creator><![CDATA[Simon Warta]]></dc:creator>
            <pubDate>Mon, 18 Dec 2023 08:26:09 GMT</pubDate>
            <atom:updated>2023-12-18T08:26:09.850Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*cypJnppoVUtCNDG0jGN1MA.png" /></figure><p>CosmWasm contracts use the BaseAccount type and <a href="https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-028-public-key-addresses.md#module-account-addresses">ADR-028 module account addresses</a>, ie. addresses in their own namespace. This ensure that no other keypair or module uses those addresses. An address collision is practically not possible since the sha256 algorithm is considered collision-resistant and we do not truncate the 32-byte output.</p><p>In Cosmos SDK however, with <a href="https://github.com/cosmos/cosmos-sdk/blob/v0.50.2/proto/cosmos/vesting/v1beta1/tx.proto#L32-L52">MsgCreateVestingAccount</a> a feature was added long time ago that allows a non-owner of an address to set the account type of the address (to_address). This allows for address squatting, which is something we need to protect against. In <a href="https://github.com/CosmWasm/advisories/blob/main/CWAs/CWA-2022-005.md">CWA-2022-005</a> it is explained how address squatting can lead to Denial-of-service scenarios. The advisory also explains our mitigation strategy which aims to only accept BaseAccounts and prune other account types.</p><h3>How to prune an account</h3><p>In an ideal world, we could just call something like auth.deleteAccount(address) and delegate the logic of deleting an account to the SDK. However, such functionality does not exist. So we need to implement account pruning ourselves. Here we considered the following:</p><ol><li>BaseAccount can be used for contracts. They don’t need to be pruned and their balance is preserved.</li><li>All types of vesting accounts are not supported as contract accounts. If we just deleted the vesting account, the bank balance would suddenly be unlocked.</li><li>Since the creation of vesting accounts on contract addresses is nothing that’s done in the regular use case of a blockchain, we need to assume that the vesting accounts are created and funded by an attacker.</li><li>Due to 2.+3. we decided to take away the funds by default, which can be done in multiple ways: (a) Burn, (b) Send to the community pool, or (c) Send to configured address.</li><li>Since a chain can have a large number of denoms, we only take away the original vesting denom and leave the rest untouched. This avoids a DoS attack by pruning becoming very expensive in terms of gas.</li><li>Account pruning should always succeed in order to avoid new DoS scenarios.</li></ol><h3>What’s the right™ way of taking away funds?</h3><p>In Cosmos SDK we have supply tracking in the bank module as a feature for many years. This allows you to always read the available supply and both token issuance and burns are tracked. This burning approach is arguably superior to just sending the tokens to an account that has no keypair (such as 0x0 on Ethereum). For this reason, burning tokens has been chosen in the implementation that fixes CWA-2022–005.</p><p>It has come to our attention that some users consider burning inappropriate for their appchain and their tokenomics. What can be done here is to implement accountPruner in the wasm Keeper of <a href="https://github.com/cosmwasm/wasmd">wasmd</a> with a custom implementation. This gives full flexibility to adapt the logic of the default VestingCoinBurner.</p><h3>Feature request: Add token destination argument to NewVestingCoinBurner</h3><p>In order for users to not worry about the full implementation of VestingCoinBurner we can make the token destination (point 4. from above) configurable in NewVestingCoinBurner. There an additional destination argument can be used to easily switch between 4.a, 4.b, 4.c.</p><p>If this functionality is still not flexible enough, accountPruner should be implemented differently, taking point 6 and CWA-2022-005 (address squatting) into account.</p><h3>Changing the default</h3><p>One reason for keeping the current behavior (burn tokens) by default is that it’s simple and clean, correctly keeping track of the supply. Another reason is that there are at least two other ways to burn tokens by an attacker, changing the total supply along the way:</p><ol><li>Send tokens to a contract, which then uses BankMsg::Burn in CosmWasm. This is what <a href="https://github.com/noislabs/nois-contracts/blob/v0.15.2/contracts/nois-sink/src/contract.rs#L80-L82">the sink contract does here</a>.</li><li>Use the <a href="https://github.com/cosmos/cosmos-sdk/pull/17569">new </a><a href="https://github.com/cosmos/cosmos-sdk/pull/17569">MsgBurn (Cosmos SDK 0.51+)</a>.</li></ol><p>So for the time being we don’t see how a change of the default behaviour would be beneficial to the majority of users.</p><h3>Conclusion</h3><p>We are well aware that those multiple layers of mitigation strategies are confusing, hard to audit and reason about. But as long as this problem is not solved at its root (a non-owner being able to set an account type), we cannot avoid that.</p><p>We are happy to receive any feedback on the points discussed above in order to find the best solution for everyone.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2090076929e3" width="1" height="1" alt=""><hr><p><a href="https://medium.com/cosmwasm/dev-note-5-specifying-how-to-handle-funds-when-pruning-a-vesting-account-2090076929e3">Dev Note #5: Specifying how to handle funds when pruning a vesting account</a> was originally published in <a href="https://medium.com/cosmwasm">CosmWasm</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Strategic partnership between Confio and Neutron brings CosmWasm to the next level.]]></title>
            <link>https://medium.com/confio/strategic-partnership-between-confio-and-neutron-brings-cosmwasm-to-the-next-level-5881294ba2c7?source=rss-50670cbc8be9------2</link>
            <guid isPermaLink="false">https://medium.com/p/5881294ba2c7</guid>
            <category><![CDATA[smart-contracts]]></category>
            <category><![CDATA[cosmos-network]]></category>
            <category><![CDATA[partnerships]]></category>
            <category><![CDATA[cosmwasm]]></category>
            <category><![CDATA[blockchain]]></category>
            <dc:creator><![CDATA[Simon Warta]]></dc:creator>
            <pubDate>Tue, 05 Dec 2023 14:03:49 GMT</pubDate>
            <atom:updated>2023-12-05T14:03:49.835Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*D5rJfBuVzfC55T320G2Lvw.png" /></figure><p>For four years now, Confio created and maintained the CosmWasm smart contracting engine. A lot has been achieved in the meantime from safe and secure contracting framework over rich cryptography APIs and tight chain integration to a community of dozens of chains powered by CosmWasm. The technology became an integral part of Cosmos, and this has recently been acknowledged by the ICF, including CosmWasm into the Interchain Stack. Confio also built custom software around CosmWasm, such as the Proof of Engagement consensus system for the Tgrade blockchain, a lending protocol on top of Osmosis (which was not launched), the first version of the decentralized exchange WYND, and most recently, the shared security solution Mesh Security for Osmosis. However, with the commitments of the Cosmos Hub proposal 103, the ICF, and contributions of various supportive chains in 2023, we could focus on the core components of CosmWasm. The feature releases 1.2, 1.3, 1.4, and 2.0, Cosmos SDK 0.47 and 0.50 support, various security patches, and improved tooling were made possible that way.</p><p>During all the market highs and lows since 2020, Confio was founded and managed by its 3 co-founders. We went through a lot of pain trying to open bank accounts, employ our team members in an international remote-only setup, looking for funding opportunities, and never stop shipping. Today, Simon Warta (Co-Founder and CosmWasm maintainer) is running the company.</p><p>Building infrastructure for such a long period of time is great, especially when the technology is appreciated and used by a broad community. But it also brings challenges when it comes to figuring out what is important, what is nice to have, and what is not needed. CosmWasm does what we envisioned it to do in 2020, but what’s next? How do we bring it to more chains and make existing integrations more powerful? At some point during this year, we started looking for some more direction and for both Confio and CosmWasm to try to find answers to those questions.</p><p>This brought us in contact with the team behind Neutron, a blockchain heavily relying on CosmWasm. In the conversations, we found a shared vision for CosmWasm: building Interchain smart contracts. We knew CosmWasm is the best tool for building IBC apps and it can only succeed if it is available on as many chains as possible. This creates the network effects in terms of connectivity but also education and tooling. It became clear that CosmWasm needs to remain free software. Together with Neutron, we are discussing the core roadmap and are exploring complementary offerings around services and tooling.</p><p>To strengthen the collaboration between Confio and Neutron, we worked out an acquisition of 25% of Confio’s shares. This enriches the conversation amongst shareholders by providing the perspective of a CosmWasm user and gives Neutron a significant voice in Confio’s direction. The management and team in Confio remain unaffected.</p><p>With this partnership, Confio preserves its independence and continues to serve all the chains that currently rely on it and hundreds more to come. We continue to work with our close partners, such as the ICF, Osmosis, Terra, Stargaze, Nym, DoraHacks, and we always welcome more. Together, we build a better CosmWasm for everyone.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5881294ba2c7" width="1" height="1" alt=""><hr><p><a href="https://medium.com/confio/strategic-partnership-between-confio-and-neutron-brings-cosmwasm-to-the-next-level-5881294ba2c7">Strategic partnership between Confio and Neutron brings CosmWasm to the next level.</a> was originally published in <a href="https://medium.com/confio">Confio</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[CosmJS 0.32 supports SDK 0.50]]></title>
            <link>https://medium.com/cosmwasm/cosmjs-0-32-supports-sdk-0-50-8b87920defec?source=rss-50670cbc8be9------2</link>
            <guid isPermaLink="false">https://medium.com/p/8b87920defec</guid>
            <category><![CDATA[cosmwasm]]></category>
            <category><![CDATA[cosmos-network]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[cosmjs]]></category>
            <category><![CDATA[cosmos-sdk]]></category>
            <dc:creator><![CDATA[Simon Warta]]></dc:creator>
            <pubDate>Thu, 23 Nov 2023 14:50:57 GMT</pubDate>
            <atom:updated>2023-11-23T17:10:04.358Z</atom:updated>
            <content:encoded><![CDATA[<p>Today we are happy to announce the latest release of CosmJS: 0.32.0. It brings support for Cosmos SDK 0.50 (Eden), among other improvements.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Psy7TSRw2r5sl91wA0q3eA.jpeg" /><figcaption>Foto von <a href="https://unsplash.com/de/@1dlaiker?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Julien Photo</a> auf <a href="https://unsplash.com/de/fotos/ein-rot-weisses-schild-an-einem-baum-im-wald-cWzLqoJInCw?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a></figcaption></figure><h3>Telescope 1.0 and bigint</h3><p>The npm packages @cosmjs/* version 0.32.0 upgraded their protobuf types to <a href="https://github.com/confio/cosmjs-types/blob/main/CHANGELOG.md#090---2023-10-25">comjs-types 0.9.0</a>. Those types are now generated using Telescope 1.0. This brings stronger type safety around non-nullable message fields, changes all usages of Long to bigint and removes the runtime dependency protobufjs. When upgrading CosmJS, please also upgrade comjs-types to 0.9.0 and adapt the codebase to use bigint. Shoutout to the entire Cosmology team for all the improvements to the code generation, which is critical for working with the Cosmos SDK.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8BNEXxYtvu2sAwZOYx1qBg.png" /><figcaption>Telescope code generation powers CosmJS</figcaption></figure><h3>Timeout height for transactions</h3><p>sign/signAndBroadcast/signAndBroadcastSync and related functions now have an additional parameter to specify the timeout height. After this height, a signed transaction will be considered invalid by the chain. This can be used to ensure your transaction is either committed in a reasonable time or will never be executed. Kudos to Jan from Skip for this addition!</p><h3>MsgTransfer memo support</h3><p>The SigningStargateClient.sendIbcTokens API already contains a transaction memo. Creating support for the MsgTransfer memo in the same API would be too convoluted. In order to give used access to the full functionality, the wrapper function sendIbcTokens was now deprecated. Better use signAndBroadcast together with a MsgTransferEncodeObject instead from now on.</p><h3>CometBFT 0.38 support</h3><p>The package @cosmjs/tendermint-rpc now has a new Comet38Client in addition to Tendermint34Client and Tendermint37Client , supporting chains running on Comet BFT 0.38. This is the version needed for Cosmos SDK 0.50 chains. The function connectComet does the auto-detection of the backend and returns a CometClient union type, which means any of the three available clients.</p><h3>Cosmos SDK 0.50 support</h3><p>Building on the CometBFT 0.38 auto-detection, we now test CosmJS against Cosmos SDK 0.50, and it works well overall. There are a few caveats we found, like rawLog fields is unset now (use events instead), and <a href="https://github.com/cosmos/cosmos-sdk/issues/18546">a few Amino JSON messages do not yet work</a>. But overall, it is working without changes to in the application needed order than the CosmJS upgrade. Please note that support for new features is not yet included but existing functionality will just work.</p><h3>Other notable changes</h3><ul><li>Amino JSON signing for MsgInstantiateContract2 was fixed</li><li>Numeric values in key/value pairs during txSearch were fixed</li><li>All gasWanted/gasUsed fields were changed from number to bigint</li></ul><p>The full CHANGELOG is available <a href="https://github.com/cosmos/cosmjs/blob/main/CHANGELOG.md">here</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8b87920defec" width="1" height="1" alt=""><hr><p><a href="https://medium.com/cosmwasm/cosmjs-0-32-supports-sdk-0-50-8b87920defec">CosmJS 0.32 supports SDK 0.50</a> was originally published in <a href="https://medium.com/cosmwasm">CosmWasm</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[CosmWasm 1.5]]></title>
            <link>https://medium.com/cosmwasm/cosmwasm-1-5-946fd3024f1d?source=rss-50670cbc8be9------2</link>
            <guid isPermaLink="false">https://medium.com/p/946fd3024f1d</guid>
            <category><![CDATA[wasm-contract]]></category>
            <category><![CDATA[cosmos-network]]></category>
            <category><![CDATA[smart-contracts]]></category>
            <category><![CDATA[cosmwasm]]></category>
            <category><![CDATA[blockchain]]></category>
            <dc:creator><![CDATA[Simon Warta]]></dc:creator>
            <pubDate>Mon, 06 Nov 2023 11:08:14 GMT</pubDate>
            <atom:updated>2023-11-06T11:08:14.628Z</atom:updated>
            <content:encoded><![CDATA[<p>The latest release of the CosmWasm 1.x series brings support for floating point operations, amongst other things.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4ea6fdMcJ-krc1k14ZElDw.jpeg" /><figcaption>Foto von <a href="https://unsplash.com/de/@sxth?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Seth Doyle</a> auf <a href="https://unsplash.com/de/fotos/%EB%B9%A8%EA%B0%84-%EB%B0%98%EB%B0%94%EC%A7%80%EB%A5%BC-%EC%9E%85%EC%9D%80-%EB%96%A0-%EB%8B%A4%EB%8B%88%EB%8A%94-%EB%82%A8%EC%9E%90%EC%9D%98-%EC%88%98%EC%A4%91-%EC%82%AC%EC%A7%84-b5ul8TBY0S8?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a></figcaption></figure><p>CosmWasm 1.5 has been released, bringing support for floating points to the virtual machine and various additional math additions to the standard library.</p><h3>Floats</h3><p>In CosmWasm &lt; 1.5, all float operations in the Wasm blob were denied. The reason for that is that floating point operations have certain ways of being non-deterministic. In Wasm, this particularly affects the binary representation of NaN, which can be different depending on the CPU, operating system, and other system conditions. Luckily Wasmer has a NaN normalization feature, which allows us to avoid this problem.</p><p>When the Wasm file was uploaded to the chain, it was scanned for float operations. Once a single operation was found, the upload was rejected. While this is the safe approach, it caused a lot of trouble for developers who used dependencies that make use of floats. In many cases, those instructions were never executed but prevented the upload. Finding the source of such operations can easily cost days and weeks of development time, leading to a frustrating experience. The other scenario is code that actively relies on floats. While finance math and cryptography typically don’t use floats, there are interesting use cases that can be explored with floats available, such as:</p><ul><li>bonding curves</li><li>non-linear voting power</li><li>games</li><li>generative art</li></ul><p>In ComsWasm 1.5, we not only enabled NaN normalization. We created a <a href="https://github.com/CosmWasm/cosmwasm/blob/v1.5.0/contracts/floaty/src/instructions.rs">massive test suite</a> that executes all known float operations over many different inputs and ensured to get the same hash across a variety of systems. This gives us the confidence that using floats in CosmWasm is safe.</p><p>This does not mean that floats are encouraged to be used for everything. Especially finance math should stick to decimals as you want to avoid 0.1 + 0.2 being 0.30000000000000004 in your app. Also, json-serde-wasm does not have float support right now, making floats in JSON messages unusable. This might change in the future, but you also might want to avoid doing that in order to not lose precision when communicating between different systems like Wasm contract &lt;-&gt; JavaScript client.</p><h3>Standard library additions</h3><p>The changes here affect cosmwasm-std and are available to all contract developers, no matter which version of CosmWasm runs on the chain.</p><h4>More signed integers math</h4><p>In 1.3, we introduced signed integers and now added a bunch of additional APIs for those, such as:</p><ul><li>abs/unsigned_abs</li><li>checked_multiply_ratio and full_mul</li><li>is_negative</li><li>Various From and TryFrom implementations between signed and unsigned integer types</li></ul><h4>JSON encoders and decoders</h4><p>Historically the struct to binary encoding in CosmWasm has always been JSON. But we are preparing for a future in which other encodings are usable as well, e.g. for more compact storage encoding. For this reason, encoding becomes more explicit:</p><ul><li>to_json_{vec,binary} replaces the old to_{vec,binary}</li><li>from_json replaces the old from_{slice,binary}</li><li>to_json_string was added for cases in which you need a String and don’t want to handle Binary -&gt; String conversion errors that can never happen in valid JSON.</li></ul><h4>Signed decimals</h4><p>SignedDecimal and SignedDecimal256 now complement Decimal and Decimal256 and allow storing negative values. Pretty straightforward.</p><p>For more details, check out the <a href="https://github.com/CosmWasm/cosmwasm/blob/v1.5.0/CHANGELOG.md">CHANGELOG</a>. CosmWasm 1.5 will be embedded in the upcoming wasmd 0.44. All cosmwasm-std improvements can safely be used on chains running older versions of CosmWasm.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=946fd3024f1d" width="1" height="1" alt=""><hr><p><a href="https://medium.com/cosmwasm/cosmwasm-1-5-946fd3024f1d">CosmWasm 1.5</a> was originally published in <a href="https://medium.com/cosmwasm">CosmWasm</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[EOL for CosmWasm 1.0–1.3]]></title>
            <link>https://medium.com/cosmwasm/eol-for-cosmwasm-1-0-1-3-22df4b34b13c?source=rss-50670cbc8be9------2</link>
            <guid isPermaLink="false">https://medium.com/p/22df4b34b13c</guid>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[support]]></category>
            <category><![CDATA[smart-contracts]]></category>
            <category><![CDATA[features]]></category>
            <category><![CDATA[cosmwasm]]></category>
            <dc:creator><![CDATA[Simon Warta]]></dc:creator>
            <pubDate>Wed, 18 Oct 2023 07:06:59 GMT</pubDate>
            <atom:updated>2023-10-18T07:19:18.898Z</atom:updated>
            <content:encoded><![CDATA[<p>With CosmWasm 1.4 being released, 1.5 being feature-complete, and 2.0 in the making, it is time to officially call an end- of-life (EOL) for older CosmWasm versions. This especially means no more security patches.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*_CwcivEaU5jN59u-" /><figcaption>Photo by <a href="https://unsplash.com/@jan_huber?utm_source=medium&amp;utm_medium=referral">Jan Huber</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h4>What is CosmWasm 1.x?</h4><p>When speaking about CosmWasm 1.x, we refer to a full stack of software, including:</p><ul><li><a href="https://github.com/CosmWasm/cosmwasm">Rust crates cosmwasm-* 1.x</a><br>(especially cosmwasm-std and cosmwasm-vm)</li><li><a href="https://github.com/CosmWasm/wasmvm">Go project wasmvm 1.x</a></li></ul><h4>Support for 1.0 and 1.1 ends now</h4><p>With the release of this article, we end support for CosmWasm 1.0 and 1.1, which were released in May and September 2022. The last patches they got fixed <a href="https://github.com/CosmWasm/advisories/blob/main/CWAs/CWA-2023-002.md">the stack overflow bug called Cherry</a>.</p><h4>Support for 1.2 ends on December 31st, 2023</h4><p>CosmWasm 1.2 was released in January 2023 and superseded by 1.3 in July. It will remain supported until the end of the calendar year.</p><h4>Support for 1.3 ends on March 31st, 2024</h4><p>CosmWasm 1.3 was released in July 2023 and superseded by 1.4 in September. It will remain supported until the end of Q1 2024.</p><h4>Other version</h4><p>CosmWasm 1.4 and beyond is going to receive patches depending on their urgency. No guarantees are made for how long which versions will be supported. We try to find a healthy balance between convenience for chain development teams and the feasibility of backporting patches.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=22df4b34b13c" width="1" height="1" alt=""><hr><p><a href="https://medium.com/cosmwasm/eol-for-cosmwasm-1-0-1-3-22df4b34b13c">EOL for CosmWasm 1.0–1.3</a> was originally published in <a href="https://medium.com/cosmwasm">CosmWasm</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>