From 5866285b5366b617cf3f5a14243fb7c71a966713 Mon Sep 17 00:00:00 2001 From: Sergey <83376337+freak12techno@users.noreply.github.com> Date: Wed, 3 Jul 2024 20:36:29 +0300 Subject: [PATCH] chore: add neutron fetcher test (#99) --- assets/neutron-params.json | 1 + assets/neutron-proposals.json | 1 + assets/neutron-vote-not-found.json | 1 + assets/neutron-vote-ok.json | 1 + assets/neutron-vote-unknown.json | 1 + pkg/fetchers/cosmos/tally_test.go | 4 +- pkg/fetchers/fetcher_test.go | 25 ++++ pkg/fetchers/neutron/fetcher.go | 9 +- pkg/fetchers/neutron/params.go | 7 +- pkg/fetchers/neutron/params_test.go | 70 +++++++++ pkg/fetchers/neutron/proposals.go | 10 +- pkg/fetchers/neutron/proposals_test.go | 75 ++++++++++ pkg/fetchers/neutron/responses/params.go | 23 +-- pkg/fetchers/neutron/responses/proposals.go | 56 ++----- pkg/fetchers/neutron/tally.go | 7 +- pkg/fetchers/neutron/tally_test.go | 71 +++++++++ pkg/fetchers/neutron/vote_test.go | 154 ++++++++++++++++++++ pkg/http/client_test.go | 12 +- 18 files changed, 432 insertions(+), 96 deletions(-) create mode 100644 assets/neutron-params.json create mode 100644 assets/neutron-proposals.json create mode 100644 assets/neutron-vote-not-found.json create mode 100644 assets/neutron-vote-ok.json create mode 100644 assets/neutron-vote-unknown.json create mode 100644 pkg/fetchers/fetcher_test.go create mode 100644 pkg/fetchers/neutron/params_test.go create mode 100644 pkg/fetchers/neutron/proposals_test.go create mode 100644 pkg/fetchers/neutron/tally_test.go create mode 100644 pkg/fetchers/neutron/vote_test.go diff --git a/assets/neutron-params.json b/assets/neutron-params.json new file mode 100644 index 0000000..b170772 --- /dev/null +++ b/assets/neutron-params.json @@ -0,0 +1 @@ +{"data":{"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"max_voting_period":{"time":1209600},"min_voting_period":null,"allow_revoting":true,"dao":"neutron1suhgf5svhu4usrurvxzlgn54ksxmn8gljarjtxqnapv8kjnp4nrstdxvff","close_proposal_on_execution_failure":true}} \ No newline at end of file diff --git a/assets/neutron-proposals.json b/assets/neutron-proposals.json new file mode 100644 index 0000000..0ff90d5 --- /dev/null +++ b/assets/neutron-proposals.json @@ -0,0 +1 @@ +{"data":{"proposals":[{"id":42,"proposal":{"title":"Resubmission: Bootstrap NTRN Perps Liquidity on Levana","description":"# Summary\nThis proposal is being re-submitted on behalf of Levana Protocol as their initial proposal fell short of quorum, and a final decision has therefore not been reached. Proposal 40 ended on 27th June 2024; achieving a turnout of 8.69%, with 32.2% in favour and 16.8% against, with the remainder abstaining, \nThe proposal sought 158,000 NTRN to be provided as initial liquidity for the NTRN/USDC market on Levana’s Neutron deployment.\n# Original Proposal\nLevana is excited to present a proposal for providing 158,000 NTRN as initial liquidity for the NTRN/USD market on Levana.\nLink to the NTRN/USD Market on Levana: Levana Perps 2\n## About Levana\nLevana is one of the leading perpetual swap platforms built on Cosmos. Already operational on Osmosis, Injective and now, Neutron, the protocol has handled $2.8bn of trading volume and collected $3.6m of fees to date.\nUniquely, Levana offers users the ability to provide liquidity to our markets and earn from the market fees and trader losses, allowing users to act as the ‘house’.\nLevana is also the only perps which supports liquid stake derivative markets, closely aligned with the goals of Neutron to become a liquidity hub for LSTs.\n## Why Levana on Neutron?\nLevana’s mission is to empower users to leverage any asset, and we believe that by providing NTRN liquidity to bootstrap the Perpetuals market, we can unlock a host of new opportunities for the Neutron community and NTRN holders.\nThis proposal outlines the benefits and potential of adding NTRN liquidity to the NTRN/USD market on Levana and invites the Neutron community to vote on whether to allocate 158,000 NTRN tokens (currently worth ~$100,000) to bootstrap NTRN leverage trading liquidity on Levana.\n## Key Benefits\n### 1. Enable Leveraged Perps trading for NTRN\nThe NTRN market will start with 5x leverage for the first 30 days of the deposit from the DAO and then expand to 10x leverage. \nLeveraging allows users to increase the capital efficiency of their holdings, enabling them to trade with larger positions than their initial capital would permit.\nProviding NTRN liquidity to Levana will bootstrap the NTRN/USD market, enabling users to open leveraged long or short positions using NTRN as collateral.\nThis means NTRN holders will be able to use their tokens as collateral to open trades, and, if successful, earn additional NTRN without reducing exposure to the underlying asset.\nLaunching the NTRN/USD market adds more utility to the NTRN token and offers more avenues to earn rewards and yield.\nTraders can capitalize on bidirectional market movements more effectively by using leverage to increase exposure to the underlying asset, increasing utility for NTRN and reducing NTRN spot selling pressure.\n### 2. Earn by providing liquidity in the NTRN Market\nNTRN holders can provide liquidity to the NTRN/USD market on Levana thus earning market fees and benefit from trader losses, as the liquidity pool acts as counter collateral for traders opening positions.\nStatistically, the vast majority of traders are unprofitable and Levana is no different with current LPs on other chains and markets benefitting. To view historical data on trader PnL on Levana, refer to our stats page on Levana.\nHowever, LP is not without risk, as if traders on the market are highly profitable, the winnings will come from the LPs until such time as there is no more money left to pay them in the LP and no more trades can be opened.\nFor more information on risks refer to the docs linked at the bottom of this proposal. https://docs.levana.finance/position-size-locked-collateral\nThis proposal not only improves market liquidity but also offers liquidity providers (LPs) a potential consistent income stream from trading activities. LPs play a vital role in ensuring market stability and depth, and their participation is incentivized through fees generated by the platform.\nThis proposal to bootstrap liquidity to the NTRN/USD market is critical to break inertia with the market and provide a sufficiently large liquidity pool to enable meaningful trading activity to start on the market. Users can then permissionlessly add to this liquidity pool and earn from market fees and potential trader losses.\n### 3. Innovative DeFi Strategies and Risk Management\nProviding NTRN liquidity to Levana opens up new and unique DeFi strategies for NTRN holders: through leveraged long or short trades, users can manage risk, hedge their holdings, or engage in price or funding arbitrage opportunities across different platforms while maintaining underlying exposure to NTRN.\n### 4. Leading to more DeFi opportunities for NTRN holders\nThe approval of this proposal will lead to Levana continuing to contribute to a thriving DeFi ecosystem on NTRN. Levana’s unique ability to offer leverage trading on liquid staking tokens could unlock significant utility for LSTs from the upcoming Drop liquid staking protocol. The ability for users to supply liquidity to earn dynamic rewards from real yield mechanisms offers new and exciting alternatives to NTRN holders and the Neutron DeFi ecosystem.\n### 5. Earn Single Sided NTRN Yield\nWith no staking on the Neutron chain, Levana offers an opportunity to potentially earn a lucrative single-sided NTRN yield on Neutron’s NTRN asset.\nOn our other chains and markets, Levana’s liquidity pools (LP) historically have out performed the risk free rate of staking on validators or into DEX’s.\nFor example, the current xLP APR on INJ is ~74.7% for providing single sided liquidity, while staking APR sits around ~15%.\nThe LP pools, while lucrative, carry risks, including platform risk and potential loss due to trader wins as discussed above.\nCommunity Vote: Deploying NTRN Liquidity to the NTRN/USD Market on Levana\nIt is proposed that the Neutron community vote on deploying $100,000/158,000 tokens of NTRN as long-term liquidity (xLP) to the NTRN/USD market on Levana.\nProviding NTRN liquidity on Levana has the potential to bring forward a unique opportunity to significantly expand the utility of NTRN in the DeFi sector.\nLevana is excited to join the Neutron DeFi ecosystem and the potential growth this integration will bring in terms of network activity, DeFi TVL and NTRN utility.\n\n\n## Implementation Details\nThe liquidity will be deposited as xLP to the NTRN/USD market on Levana from a multisig account through the Covalent DAO.\nSince there is no trustless solution yet available for Neutron DAO to directly deploy and control the NTRN deployed to Levana, we propose that TimeWave’s Covalent DAO serve as the multisig to manage this capital until a trustless solution (Covenant) is available. \n\nCovalent DAO is governed via 4 of 6 approval. It is comprised of the following respected and diverse interchain community members:\n\n- Nikita (Citadel One Validator)\n- Johnny Wyles (Osmosis)\n- Effort Capital (Blockworks)\n- Zygis (Skip)\n- RoboMcGobo (Stride)\n- Lexa (Hypha)\n\nUpon Neutron approving this proposal, the Neutron DAO would direct the NTRN tokens to Covalent DAO’s address: neutron1e6vvm9nj54rq6muwrjpxcd2x52gshj7gv4v8t8gvc7zmfgktfskq4rr0cg. Upon receipt of the NTRN, Covalent DAO will deploy the NTRN to Levana’s NTRN/USD market on Neutron. \n\nOnce a trustless solution is available, Covalent DAO will immediately migrate the funds to the trustless solution. Since Levana positions at this time are non-transferrable, Covalent DAO will need to withdraw the assets from the position and then route those funds to the trustless solution, which would then redeploy the assets to the NTRN/USD market.\n\nIf Neutron wishes to withdraw the NTRN from Levana while Covalent DAO stewards the position, Covalent DAO will return the funds to the Neutron DAO upon the passing of a Neutron DAO proposal that states the desire to withdraw and the destination for the withdrawn assets. \nThis multisig will have the authority to\nDeposit NTRN tokens into the xLP NTRN pool on Levana\nReinvest any yield earned back into the xLP NTRN pool on Levana\nMultisig members will be expected to keep the multisig up to date if members join or leave Covalent DAO, they will also be expected to follow onchain any approved actions related to this proposal on the Neutron governance portal and execute them, which may include, withdrawal, transfer and other actions which will be subject to further approval of the Neutron community via governance.\n## Smart Contracts\nLevana’s smart contracts are open-source, and comprehensive documentation is available, facilitating easy integration via API trading modules or custom front ends. The platform operates permissionlessly, without necessitating centralized, off-chain mechanisms like order books or sequencers.\n## Risk Mitigation and Audit History\nLevana’s smart contracts are comprehensively audited and you can review our entire audit history here. \n\n## Governance Votes\nYES: Indicates support for allocating 158,000 NTRN protocol owned liquidity to the Levana NTRN/USDCmarket.\nNO: Signifies opposition to the proposal. If the majority votes NO, or quorum is not reached, no token will be transferred.\nABSTAIN: An ‘ABSTAIN’ vote is for members who do not wish to take a definitive stance on the proposal while contributing to quorum. This vote acknowledges the proposal’s implications but chooses neither to support nor oppose the changes suggested.\n","proposer":"neutron1cpy2gpwc8lphzyczderwma2rt5nqdmvtyyl26f","start_height":11778087,"min_voting_period":null,"expiration":{"at_time":"1720724384201797112"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"33370709935026","msgs":[{"bank":{"send":{"to_address":"neutron1e6vvm9nj54rq6muwrjpxcd2x52gshj7gv4v8t8gvc7zmfgktfskq4rr0cg","amount":[{"denom":"untrn","amount":"158000000000"}]}}}],"status":"open","votes":{"yes":"406716050846","no":"14018165642","abstain":"1571874417312"},"allow_revoting":true}},{"id":41,"proposal":{"title":"Upgrade Neutron to V4","description":"### Summary\n\nThis is a proposal to do a software upgrade to the [v4.0.1](https://github.com/neutron-org/neutron/releases/tag/v4.0.1) software tag of the Neutron codebase at block height [`12255555`](https://www.mintscan.io/neutron/block/12255555) estimated to occur on July 10th 2024, 14:30 UTC.\n\nBlock times have high variance, so please monitor the chain for more precise time estimates.\n\nThe upgrade is anticipated to take only a few **minutes**, during which time, there will not be any on-chain activity on the network.\n\n**In this release Neutron introduces integration of [Slinky](https://docs.skip.money/slinky/overview) thus all validators are required to run [Slinky Sidecar](https://docs.skip.money/slinky/integrations/neutron/).**\n\n## Release Contents\n\n- Neutron V4 integrates Skip’s [Feemarket](https://github.com/skip-mev/feemarket/tree/main), which implements the Additive Increase Multiplicative Decrease (AIMD) feemarket similar to Ethereum EIP 1559, where the base fee adjusts according to the network's demand for block space.\n- Neutron V4 integrates Slinky - an on-chain consensus-level oracle running by the chain validators. Slinky is coming to Neutron in the next release in July 2024. You can read more about the oracle, how it works, its upcoming features and how to use by the link to the oracle's official docs: [https://docs.skip.money/slinky/overview/](https://docs.skip.money/slinky/overview/).\n\n## Details of Upgrade Time\n\nThe proposal targets the upgrade proposal block to be [`12255555`](https://www.mintscan.io/neutron/block/12255555), anticipated to be on July 10th 2024, 14:30 UTC.\n\nNote that block times have high variance, so keep monitoring the time.\n\nThe upgrade is anticipated to take approximately **a few minutes**, during which time, there will not be any on-chain activity on the network.\n\nIn the event of an issue at upgrade time, we should coordinate via the [validators channel in Discord](https://discord.com/channels/986573321023942708/1030043854637899816) to come to a quick emergency consensus and mitigate any further issues.\n\n## Validator Preparations\n\n- **To build the binary, be sure to install Golang 1.22:** [https://go.dev/doc/install](https://go.dev/doc/install);\n- We recommend validators to utilize 64GB of RAM. If you do not have 64GB of RAM, at a minimum you will require a total of 64GB of swap set to prevent out of memory errors.\n- The Slinky Sidecar binary should be in the same machine as neutrond (instructions how to do it can be found [here](https://docs.skip.money/slinky/integrations/neutron/)). **If the sidecar is not running, you will not be signing blocks!!**\n- If using Cosmovisor, manually build \u0026 copy the `neutrond` binary to /`cosmovisor/upgrades/v4.0.1/bin/`. If not using Cosmovisor, wait for your node to halt at the upgrade height, then install and run the v4.0.1 binary.\n- In the event of an issue at upgrade time, please coordinate via the Cosmos Hub or Neutron Discord validator channels to come to emergency consensus and mitigate any further issues.\n\nFor more information please see full [instructions for the upgrade](https://github.com/neutron-org/mainnet-assets/tree/main/upgrades/v4.0.1) on github.\n\n### Validator Incentives\n\nValidators will be **required** to run Slinky. **It is not optional**. \n[Cosmos Hub proposal 931](https://www.mintscan.io/cosmos/proposals/931/) outlines an incentive program for validators running Slinky on Neutron for the first 3 months, with validators incentivised based on performance. Please see the proposal for full details.\n\n## **Governance Votes**\n\n- **YES Vote:** A 'YES' vote indicates support upgrading Neutron to v4.0.1.\n- **NO Vote:** A 'NO' vote signifies opposition to the proposal. No upgrade will happen.\n- **ABSTAIN Vote:** An 'ABSTAIN' vote is for members who do not wish to take a definitive stance on the proposal. This vote acknowledges the proposal's implications but chooses neither to support nor oppose the changes suggested.","proposer":"neutron1th5v34n6a35687r0wx8atdg8dzrfjzt2a9ptum","start_height":11701876,"min_voting_period":null,"expiration":{"at_time":"1720546169836000922"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"33342047128853","msgs":[{"stargate":{"type_url":"/cosmos.adminmodule.adminmodule.MsgSubmitProposal","value":"CssCCiovY29zbW9zLnVwZ3JhZGUudjFiZXRhMS5Nc2dTb2Z0d2FyZVVwZ3JhZGUSnAIKLm5ldXRyb24xaHhza2ZkeHBwNWhxZ3RqajZhbTZua2plZmhmemozNTl4MGFyM3oS6QEKBnY0LjAuMRILCICSuMOY/v///wEYw4LsBSLMAXtcImJpbmFyaWVzXCI6IHtcImxpbnV4L2FtZDY0XCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL25ldXRyb24tb3JnL25ldXRyb24vcmVsZWFzZXMvZG93bmxvYWQvdjQuMC4xL25ldXRyb25kLWxpbnV4LWFtZDY0P2NoZWNrc3VtPXNoYTI1Njo3MGQ5YWMyNmQ5NjUzOGE1NzBlZjUzZGJhZTU0ZDJkODdmOWRlM2IyMWIxOWQ1Nzk2MDEwZGJhOTA1ZGU2ZmIxXCJ9fRJCbmV1dHJvbjFzdWhnZjVzdmh1NHVzcnVydnh6bGduNTRrc3htbjhnbGphcmp0eHFuYXB2OGtqbnA0bnJzdGR4dmZm"}}],"status":"open","votes":{"yes":"2671539084406","no":"0","abstain":"1500501000000"},"allow_revoting":true}},{"id":40,"proposal":{"title":"Bootstrap NTRN Perps Liquidity on Levana","description":"# Bootstrap NTRN Perps Liquidity on Levana\n\n## Summary\n\nLevana is excited to present a proposal for providing 158,000 NTRN as initial liquidity for the NTRN/USD market on Levana.\n\nLink to the NTRN/USD Market on Levana: [Levana Perps 2](https://trade.levana.finance/neutron/trade/NTRN_USD)\n\n## About Levana\n\nLevana is one of the leading perpetual swap platforms built on Cosmos. Already operational on Osmosis, Injective and now, Neutron, the protocol has handled $2.7bn of trading volume and collected $3.45m of fees to date.\n\nUniquely, Levana offers users the ability to provide liquidity to our markets and earn from the market fees and trader losses, allowing users to act as the ‘house’.\n\nLevana is also the only perps which supports liquid stake derivative markets, closely aligned with the goals of Neutron to become a liquidity hub for LSTs.\n\n## Why Levana on Neutron?\n\nLevana’s mission is to empower users to leverage any asset, and we believe that by providing NTRN liquidity to bootstrap the Perpetuals market, we can unlock a host of new opportunities for the Neutron community and NTRN holders.\n\nThis proposal outlines the benefits and potential of adding NTRN liquidity to the NTRN/USD market on Levana and invites the Neutron community to vote on whether to allocate 158,000 NTRN tokens (currently worth ~$100,000) to bootstrap NTRN leverage trading liquidity on Levana.\n\n### Key Benefits\n\n1\\. Enable Leveraged Perps trading for NTRN\n\nThe NTRN market will start with 5x leverage for the first 30 days of the deposit from the DAO and then expand to 10x leverage.\n\nLeveraging allows users to increase the capital efficiency of their holdings, enabling them to trade with larger positions than their initial capital would permit.\n\nProviding NTRN liquidity to Levana will bootstrap the NTRN/USD market, enabling users to open leveraged long or short positions using NTRN as collateral.\n\nThis means NTRN holders will be able to use their tokens as collateral to open trades, and, if successful, earn additional NTRN without reducing exposure to the underlying asset.\n\nLaunching the NTRN/USD market adds more utility to the NTRN token and offers more avenues to earn rewards and yield.\n\nTraders can capitalize on bidirectional market movements more effectively by using leverage to increase exposure to the underlying asset, increasing utility for NTRN and reducing NTRN spot selling pressure.\n\n2\\. Earn by providing liquidity in the NTRN Market\n\nNTRN holders can provide liquidity to the NTRN/USD market on Levana thus earning market fees and benefit from trader losses, as the liquidity pool acts as counter collateral for traders opening positions.\n\nStatistically, the vast majority of traders are unprofitable and Levana is no different with current LPs on other chains and markets benefitting. To view historical data on trader PnL on Levana, refer to [our stats page on Levana](https://trade.levana.finance/stats).\n\nHowever, LP is not without risk, as if traders on the market are highly profitable, the winnings will come from the LPs until such time as there is no more money left to pay them in the LP and no more trades can be opened.\n\nFor more information on risks refer to the docs linked at the bottom of this proposal. \u003chttps://docs.levana.finance/position-size-locked-collateral\u003e\n\nThis proposal not only improves market liquidity but also offers liquidity providers (LPs) a potential consistent income stream from trading activities. LPs play a vital role in ensuring market stability and depth, and their participation is incentivized through fees generated by the platform.\n\nThis proposal to bootstrap liquidity to the NTRN/USD market is critical to break inertia with the market and provide a sufficiently large liquidity pool to enable meaningful trading activity to start on the market. Users can then permissionlessly add to this liquidity pool and earn from market fees and potential trader losses.\n\n3\\. Innovative DeFi Strategies and Risk Management\n\nProviding NTRN liquidity to Levana opens up new and unique DeFi strategies for NTRN holders: through leveraged long or short trades, users can manage risk, hedge their holdings, or engage in price or funding arbitrage opportunities across different platforms while maintaining underlying exposure to NTRN.\n\n4\\. Leading to more DeFi opportunities for NTRN holders\n\nThe approval of this proposal will lead to Levana continuing to contribute to a thriving DeFi ecosystem on NTRN. Levana’s unique ability to offer leverage trading on liquid staking tokens could unlock significant utility for LSTs from the upcoming Drop liquid staking protocol. The ability for users to supply liquidity to earn dynamic rewards from real yield mechanisms offers new and exciting alternatives to NTRN holders and the Neutron DeFi ecosystem.\n\n5\\. Earn Single Sided NTRN Yield\n\nWith no staking on the Neutron chain, Levana offers an opportunity to potentially earn a lucrative single-sided NTRN yield on Neutron’s NTRN asset.\n\nOn our other chains and markets, Levana’s liquidity pools (LP) historically have out performed the risk free rate of staking on validators or into DEX’s.\n\nFor example, the current xLP APR on INJ is ~74.7% for providing single sided liquidity, while staking APR sits around ~15%.\n\nThe LP pools, while lucrative, carry risks, including platform risk and potential loss due to trader wins as discussed above.\n\nCommunity Vote: Deploying NTRN Liquidity to the NTRN/USD Market on Levana\n\nIt is proposed that the Neutron community vote on deploying $100,000/158,000 tokens of NTRN as long-term liquidity (xLP) to the NTRN/USD market on Levana.\n\nProviding NTRN liquidity on Levana has the potential to bring forward a unique opportunity to significantly expand the utility of NTRN in the DeFi sector.\n\nLevana is excited to join the Neutron DeFi ecosystem and the potential growth this integration will bring in terms of network activity, DeFi TVL and NTRN utility.\n\n### Implementation Details\n\nThe liquidity will be deposited as xLP to the NTRN/USD market on Levana from a multisig account through the Covalent DAO.\n\nSince there is no trustless solution yet available for Neutron DAO to directly deploy and control the NTRN deployed to Levana, we propose that TimeWave’s Covalent DAO serve as the multisig to manage this capital until a trustless solution (Covenant) is available.\n\n[Covalent DAO](https://daodao.zone/dao/neutron1e6vvm9nj54rq6muwrjpxcd2x52gshj7gv4v8t8gvc7zmfgktfskq4rr0cg/members) is governed via 4 of 6 approval. It is comprised of the following respected and diverse interchain community members:\n\n\\- Nikita (Citadel One Validator)\n\n\\- Johnny Wyles (Osmosis)\n\n\\- Effort Capital (Blockworks)\n\n\\- Zygis (Skip)\n\n\\- RoboMcGobo (Stride)\n\n\\- Lexa (Hypha)\n\nUpon Neutron approving this proposal, the Neutron DAO would direct the NTRN tokens to Covalent DAO’s address: neutron1e6vvm9nj54rq6muwrjpxcd2x52gshj7gv4v8t8gvc7zmfgktfskq4rr0cg. Upon receipt of the NTRN, Covalent DAO will deploy the NTRN to Levana’s NTRN/USD market on Neutron.\n\nOnce a trustless solution is available, Covalent DAO will immediately migrate the funds to the trustless solution. Since Levana positions at this time are non-transferrable, Covalent DAO will need to withdraw the assets from the position and then route those funds to the trustless solution, which would then redeploy the assets to the NTRN/USD market.\n\nIf Neutron wishes to withdraw the NTRN from Levana while Covalent DAO stewards the position, Covalent DAO will return the funds to the Neutron DAO upon the passing of a Neutron DAO proposal that states the desire to withdraw and the destination for the withdrawn assets.\n\nThis multisig will have the authority to\n\n- Deposit NTRN tokens into the xLP NTRN pool on Levana\n- Reinvest any yield earned back into the xLP NTRN pool on Levana\n\nMultisig members will be expected to keep the multisig up to date if members join or leave Covalent DAO, they will also be expected to follow onchain any approved actions related to this proposal on the Neutron governance portal and execute them, which may include, withdrawal, transfer and other actions which will be subject to further approval of the Neutron community via governance.\n\n### Smart Contracts\n\nLevana’s smart contracts are open-source, and comprehensive documentation is available, facilitating easy integration via API trading modules or custom front ends. The platform operates permissionlessly, without necessitating centralized, off-chain mechanisms like order books or sequencers.\n\nRisk Mitigation and Audit History\n\nLevana’s smart contracts are comprehensively audited and you can review our entire audit history [here](https://docs.levana.finance/audits). Governance Votes\n\nYES: Indicates support for allocating 158,000 NTRN protocol owned liquidity to the Levana NTRN/USDCmarket.\n\nNO: Signifies opposition to the proposal. If the majority votes NO, or quorum is not reached, no token will be transferred.\n\nABSTAIN: An ‘ABSTAIN’ vote is for members who do not wish to take a definitive stance on the proposal while contributing to quorum. This vote acknowledges the proposal’s implications but chooses neither to support nor oppose the changes suggested.","proposer":"neutron168fcdx7eqdy5p4394jnscw5nj7kd0njq88wqma","start_height":11256750,"min_voting_period":null,"expiration":{"at_time":"1719483180060169472"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"34274601815363","msgs":[{"bank":{"send":{"to_address":"neutron1e6vvm9nj54rq6muwrjpxcd2x52gshj7gv4v8t8gvc7zmfgktfskq4rr0cg","amount":[{"denom":"untrn","amount":"158000000000"}]}}}],"status":"rejected","votes":{"yes":"959146502737","no":"482073000721","abstain":"1537882456969"},"allow_revoting":true}},{"id":39,"proposal":{"title":"Joint liquidity provisioning for the SHD and NTRN tokens on Astroport (on Neutron)","description":"## Summary\n\nFollowing a period of discussion on the Neutron and Shade Protocol community forums, this proposal seeks approval to execute joint liquidity provisioning for the SHD and NTRN tokens on Astroport (on Neutron) as follows:\n\n| Source | Tokens Provided | Value |\n| --- | --- | --- |\n| Shade Protocol Treasury | 31,971 $SHD * | $100,000 * |\n| Neutron Main DAO Treasury | 136,366 $NTRN * | $100,000 * |\n| | | $200,000 * |\n\n** See Execution Process*\n\nShade Protocol will provide tokens to the value of $100k to be matched with NTRN to the value of $100k for total liquidity of $200k. These tokens will then be paired and deployed in the NTRN/SHD Liquidity Pool (LP) on Astroport (on Neutron).\n\nShade Protocol will own 100% of the SHD tokens. Neutron will own 100% of the NTRN tokens.\n\nThe LP position on Astroport will be managed by Timewave’s Covenant system.\n\n### Justification\n\nLiquidity is essential for the smooth functioning of decentralised applications, such as decentralised exchanges (DEXs), lending protocols, NFT marketplaces and other projects. Users typically provide liquidity by depositing their assets into smart contracts, and they are incentivized with trading fees and token incentives for doing so.\n\nProtocol Owned Liquidity (POL) refers to a scenario where the Chain/DeFi protocol itself supplies a portion of the liquidity required for its operations. In such a case, the protocol uses its own reserve funds (community pool/treasury) to ensure there is enough liquidity available for users to trade, lend, or participate in various DeFi activities. The protocol itself holds and manages token reserves instead of relying solely on external market participants to provide liquidity.\n\nBy establishing POL for NTRN and SHD on Astroport, the goal is to:\n\n- Diversify and sustainably deepen liquidity for NTRN \u0026 SHD in Cosmos.\n- Improve trade execution without the expense of incentivising liquidity.\n- Open up additional cross-chain arbitrage routes, resulting in a net increase in trading volumes.\n- Improve accessibility and usability for the communities and encourage wider community adoption of DeFi protocols in Cosmos.\n\n**Risks**\n\n- Platform Risk - by deploying its treasury on another chain a provider exposes itself to additional chain/smart contract risk.\n- Impermanent Loss - As the token of each party is paired against that of the other, fluctuations in price will result in variations in token numbers of each token within the LP position as the stronger performer is sold for the weaker to maintain a 50/50 $ value ratio within the pool. The stronger performer of the two tokens will suffer ‘Impermanent Loss’ in the pool - a decrease in the number of tokens. If either party were to execute a withdrawal whilst in such a position, it would realise this loss.\n\n### Execution Process\n\nSubject to community approval, this POL proposal will employ Timewave’s Covenant system. Covenants allow highly customisable and decentralised deal making; a major step forward from previous POL deals in the ecosystem that require intermediary multisigs.\n\n**Amounts**\n\nExact amounts of SHD and NTRN will be determined by the [10-day TWAP](https://docs.google.com/spreadsheets/d/1GP7Us7YAqXI7eN7Px1WKfYaqsWD9sLvyaJFO92ms2Zc/edit?usp=sharing) according to prices on Coinmarketcap on Monday 3 June 2024.\n\n- Shade Protocol to provide SHD worth USD $100K (3197100000000 ushd)\n- Neutron to provide NTRN worth USD $100K (136366000000 untrn)\n\n**Price**\n\nThe [10-day TWAP](https://docs.google.com/spreadsheets/d/1GP7Us7YAqXI7eN7Px1WKfYaqsWD9sLvyaJFO92ms2Zc/edit?usp=sharing) for untrn/ushd was determined to be 0.0427.\n\nTo protect both parties from unexpected slippage, Covenants function by stating a target LP ratio between the two tokens upfront and specifying an acceptable range within which the Covenant will deploy the liquidity. If the pool ratio is within the acceptable range by the time both parties contribute their tokens, the Covenant will two-sided LP the maximum amount of tokens and single-sided LP all remaining tokens. If the pool ratio is outside the acceptable range, the LP will not occur in order to protect the involved parties. The Covenant will regularly check for the next 30 days to see if the ratio returns to within range and LP if/when it returns to the acceptable range. If it does not return to range within 30 days, the Emergency Committee (EC) will refund the tokens to both parties. More on the EC below.\n\nThe acceptable range proposed is +/- 30%.\n\n**Deposit Venue: Astroport**\n\nThe Covenant contracts can receive the native tokens on any chain through Interchain Accounts or directly on Neutron.\n\nFor this proposal, Neutron will deposit tokens through a Neutron governance proposal directly into the Covenant address on Neutron.\n\nAddress: [neutron1rsy3gldflef0fhm23lxjhzyypdkl6vyg7ss70nnxpf7j0udwp7rss5kdsp](https://neutron.celat.one/neutron-1/contracts/neutron1rsy3gldflef0fhm23lxjhzyypdkl6vyg7ss70nnxpf7j0udwp7rss5kdsp)\n\nAs the SHD token is a CW-20 token and not a native token, it will also need to be deposited on Neutron.\n\nAddress: [neutron1rsy3gldflef0fhm23lxjhzyypdkl6vyg7ss70nnxpf7j0udwp7rss5kdsp](https://neutron.celat.one/neutron-1/contracts/neutron1rsy3gldflef0fhm23lxjhzyypdkl6vyg7ss70nnxpf7j0udwp7rss5kdsp)\n\nOnce the Covenant receives the appropriate amount of funds from both parties, it will then route the funds to Astroport.\n\n**Destination**\n\n- 100% [NTRN:SHD](https://app.astroport.fi/pools/neutron15gxcjgy9l3g5n5fek0zdef3d4cegdpejpdhe70hyw5grjq2g49jq50tnql) pool on [Astroport](https://neutron.astroport.fi/swap) on Neutron via Covenant.\n\n**Lockup Duration**\n\nCovenants can include a mutually agreed upon lock duration. However, in this instance there will be no lockup period. Any of the parties can trigger a withdrawal whenever they want by passing a governance proposal to do so.\n\n**Withdrawal**\n\nOn withdrawal, the Covenant will unwind the whole LP position and direct all resulting SHD to Shade Protocol and all NTRN to Neutron.\n\nSHD tokens will be returned to Shade DAO Treasury:\n\nsecret1y277c499f44nxe7geeaqw8t6gpge68rcpla9lf\n\nNTRN tokens will be returned to the Neutron Main DAO Treasury neutron1suhgf5svhu4usrurvxzlgn54ksxmn8gljarjtxqnapv8kjnp4nrstdxvff\n\n**Party Addresses on Neutron**\n\nEach party needs an address on Neutron with the authority to trigger a withdrawal.\n\n- Neutron will use the Neutron DAO neutron1suhgf5svhu4usrurvxzlgn54ksxmn8gljarjtxqnapv8kjnp4nrstdxvff\n- Shade DAO will use its governance multisig. This multisig may be swapped out with the Shade DAO address at a future date, once Shade DAO upgrades to on-chain governance\n \n neutron1z2qufmhjnlqz722jx52gs5jczp43lww4kqt3q9\n \n\n**Security**\n\nCovenants have been rigorously tested on testnets, tested on mainnet, and independently audited by [Oak Security](https://x.com/SecurityOak). However, since this is the first ever production use of Covenants, we recommend employing a few safety measures: 1) Emergency Actions and 2) Upgrades\n\n1. **Emergency Actions**\n\nCovenants allow the parties to authorise an emergency committee (EC) to perform immediate emergency actions. The EC cannot withdraw the funds to themselves. The EC can only withdraw funds to the parties that contribute capital to the deal. This EC is important because issues may arise that require action faster than the governance of either/both parties could take given their voting periods.\n\nFor example, if the Astroport contracts have a bug and the respective SHD:NTRN pool is being drained faster than each of the parties can pass governance proposals, the EC could stop the issue by immediately triggering a withdrawal of the assets to Shade Protocol and Neutron.\n\n[Covalent DAO](https://daodao.zone/dao/neutron1e6vvm9nj54rq6muwrjpxcd2x52gshj7gv4v8t8gvc7zmfgktfskq4rr0cg/members) will serve as the EC for this Covenant.\n\n1. **Upgrades**\n\nAdmins of the contract have the authority to migrate the contracts or upgrade the configs. Since the Admin has powers beyond what the EC is granted, the Admin of this Covenant will be a DAO comprising of Covalent DAO, Shade Protocol via governance multisig, and Neutron DAO, with governance set to majority rule and voting power as follows:\n\n- EC has majority voting power when the Covenant is first instantiated, while attempting to route the funds, and LPing the funds. If there are issues that come up, this is the time when they are likely to happen due to cross-chain complexity and the EC can act faster than Shade and Neutron.\n- After the LP has occurred, EC grants Shade and Neutron majority voting power of the Admin DAO so that any upgrade will require approval by both Shade Protocol and Neutron governance in order to occur.\n\n### Governance Votes\n\n- YES Vote: A 'YES' vote indicates support for using 136,366 $NTRN from the Neutron Main DAO treasury to provide liquidity for the SHD/NTRN Liquidity Pool on Astroport.\n- NO Vote: A 'NO' vote signifies opposition to the proposal. No liquidity will be provided.\n- ABSTAIN Vote: An 'ABSTAIN' vote is for members who do not wish to take a definitive stance on the proposal. This vote acknowledges the proposal's implications but chooses neither to support nor oppose the changes suggested.","proposer":"neutron1ymzwzma34enweastp7t7m7qg4zdl5ckkx6fytr","start_height":11044970,"min_voting_period":null,"expiration":{"at_time":"1718980839934040004"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"34215441139781","msgs":[{"bank":{"send":{"to_address":"neutron1rsy3gldflef0fhm23lxjhzyypdkl6vyg7ss70nnxpf7j0udwp7rss5kdsp","amount":[{"denom":"untrn","amount":"136366000000"}]}}}],"status":"executed","votes":{"yes":"2150319139679","no":"476114062","abstain":"1577242796771"},"allow_revoting":true}},{"id":38,"proposal":{"title":"Joint liquidity provisioning for the STARS and NTRN tokens on Astroport","description":"### **Summary**\n\nFollowing a period of discussion on the [Neutron](https://forum.neutron.org/t/draft-proposal-joint-liquidity-provisioning-for-the-stars-and-ntrn-tokens-on-astroport-on-neutron/314) and [Stargaze](https://commonwealth.im/stargaze/discussion/17307-draft-proposal-joint-liquidity-provisioning-for-the-stars-and-ntrn-tokens-on-astroport-on-neutron) community forums, this proposal seeks approval to execute joint liquidity provisioning for the STARS and NTRN tokens on Astroport (on Neutron) as follows:\n\n| Source | Tokens Provided | Value |\n| --- | --- | --- |\n| Stargaze Community Pool | 10,901,956 $STARS * | $200,000 * |\n| Neutron Main DAO Treasury | 287,979 $NTRN * | $200,000 * |\n| | | $400,000 * |\n\n** See Execution Process*\n\nSTARS to the value of $200k will be matched with NTRN to the value of $200k for total liquidity of $400,000 on Astroport. The resultant NTRN/STARS LP Tokens will be owned by the respective providers, with all STARS tokens being owned by the Stargaze Community Pool and all NTRN tokens by the Neutron Main DAO.\n\n### **Justification**\n\nLiquidity is essential for the smooth functioning of decentralized applications, such as decentralized exchanges (DEXs), lending protocols, NFT marketplaces and other projects. Users typically provide liquidity by depositing their assets into smart contracts, and they are incentivized with trading fees and token incentives for doing so.\n\nProtocol Owned Liquidity (POL) refers to a scenario where the Chain/DeFi protocol itself supplies a portion of the liquidity required for its operations. In such a case, the protocol uses its own reserve funds (community pool/treasury) to ensure there is enough liquidity available for users to trade, lend, or participate in various DeFi activities. The protocol itself holds and manages token reserves instead of relying solely on external market participants to provide liquidity.\n\nBy establishing POL for the NTRN/STARS pair on Astroport, the goal is to:\n\n- Sustainably deepen liquidity for NTRN \u0026 STARS in Cosmos.\n- Improve trade execution on Astroport without the expense of incentivising liquidity.\n- Open up additional cross-chain arbitrage routes for STARS, resulting in a net increase in trading volumes.\n- Strengthen relations between the Neutron and Stargaze communities, promote net positive-sum cooperation across the Cosmos, and cement Stargaze as the premier NFT platform for Neutron, Cosmos, and the Atom Economic Zone (AEZ).\n- Encourage cross-chain DAO development and promote the use of Stargaze NFTs in Neutron DAO DAO DAOs/SubDAOs.\n\nThe total amount of liquidity to be provided is determined by a number of factors:\n\n- $400k tvl provides an instant and stable level of liquidity to facilitate STARS trading on Neutron with minimal slippage for a typical Stargaze marketplace user. Above $500k Total Value Locked (TVL), arbitrageurs can be activated, creating volume, trading fees, and efficient pricing for the token pair. A further $100k liquidity is a realistic target for organic growth on top of the POL, with both chains incentivised to activate community use of the liquidity.\n- Deepen liquidity for STARS. Currently the STARS token has total liquidity of $1.1m, concentrated almost entirely on the Osmosis chain. By providing a further $200k on Neutron, Stargaze diversifies its chain exposure and deepens liquidity by a further 18%.\n- Long term strategic alignment. Neutron and Stargaze are aligned in their goals to reach beyond the cosmos and attract liquidity and users from other ecosystems to ‘grow the pie’.\n\nAlso worthy of note; by providing STARS liquidity on Neutron there will not be any impact on staking rewards for existing STARS stakers, and no revenue will be generated for another protocol using STARS. To protect the value of the liquidity, Neutron and Stargaze POL will earn swap fees in the pool. However, the LP tokens will not be “staked” in the astroport generator. Therefore, any incentives applied to this pool will be earned only by users of the protocol to incentivise TVL growth.\n\n### **Execution Process**\n\nSubject to community approval, this POL proposal will employ Timewave’s Covenant system. Covenants allow highly customisable and decentralised deal making; a major step forward from previous POL deals in the ecosystem that require intermediary multisigs.\n\n**Amounts**\n\nExact amounts of STARS and NTRN are determined by the [10-day TWAP](https://docs.google.com/spreadsheets/d/1_D5iaroFqyWPZe4wDWUMGG4RiEOuVOpycp8juRLKO4I/edit?usp=sharing) according to prices on Coinmarketcap on Monday 27 May 2024.\n\n- Stargaze to provide STARS worth USD $200K (10901956000000 ustars)\n- Neutron to provide NTRN worth USD $200K (287979000000 untrn)\n\n**Price**\n\nThe 10-day TWAP for STARS/NTRN is 38.14 as per the 10-day TWAP above.\n\nTo protect both parties from unexpected slippage, Covenants function by stating a target LP ratio between the two tokens upfront and specifying an acceptable range within which the Covenant will deploy the liquidity. If the pool ratio is within the acceptable range by the time both parties contribute their tokens, the Covenant will ‘two-sided LP’ the maximum amount of tokens and single-sided LP all remaining tokens. If the pool ratio is outside the acceptable range, the LP will not occur in order to protect the involved parties. The Covenant will regularly check for the next 30 days to see if the ratio returns to within range and LP if/when it returns to the acceptable range. If it does not return to range within 30 days, the Emergency Committee (EC) will refund the tokens to both parties. More on the EC below.\n\nThe acceptable range proposed is +/- 30%.\n\n**Deposit Venue**\n\nThe Covenant contracts can receive the funds on any chain through Interchain Accounts (ICAs).\n\nNeutron is the one exception because the Covenant contracts are local to the chain. They will deposit tokens through a Neutron governance proposal directly into the Covenant address on Neutron (address: neutron1ea93yfw7nlxkxng97q3a4s7vvr6srts6hxlv7vjdywvhnmg5zfts7vjyna).\n\nStargaze will deposit tokens through a Stargaze governance proposal into a Covenant-controlled ICA on the Stargaze chain (address: stars13wwsvhu00tjulu70504x6stj8299wa5wz8qmwqnysz8y5yfveztsl3yapq).\n\n**Destination**\n\nThe [STARS:NTRN](https://app.astroport.fi/pools/neutron15th0f33w9rq35la0aqe66w8hmlr07wy5arap736x4rv836pddn0s8322fg) pool on [Astroport](https://neutron.astroport.fi/swap) on Neutron.\n\n**Lockup Duration**\n\nCovenants can include a mutually agreed upon lock duration. However, in this instance there will be no lockup period. Any of the parties can trigger a withdrawal whenever they want by passing a governance proposal to do so.\n\n**Withdrawal**\n\nOn withdrawal, the Covenant will unwind the whole LP position and direct all resulting STARS to Stargaze and all NTRN to Neutron.\n\nSTARS tokens will be returned to the STARS governance module account: stars10d07y265gmmuvt4z0w9aw880jnsr700jw7ycaz\n\nNTRN tokens will be returned to the Neutron Main DAO Treasury neutron1suhgf5svhu4usrurvxzlgn54ksxmn8gljarjtxqnapv8kjnp4nrstdxvff\n\n**Party Addresses on Neutron**\n\nEach party needs an address on Neutron with the authority to trigger a withdrawal.\n\n- Neutron will use the Neutron DAO neutron1suhgf5svhu4usrurvxzlgn54ksxmn8gljarjtxqnapv8kjnp4nrstdxvff\n- Stargaze will use its governance module’s Polytone Proxy account neutron1xvdjjhcwyfvwufmyf2npul0m82x3tgyg2rkns92qvl7gluetxysqmfdj2p\n\n**Security**\n\nCovenants have been rigorously tested on testnets, tested on mainnet, and independently audited by [Oak Security](https://x.com/SecurityOak). However, since this is the first ever production use of Covenants, we recommend employing a few safety measures: 1) Emergency Actions and 2) Upgrades\n\n1. **Emergency Actions**\n\nCovenants allow the parties to authorize an emergency committee (EC) to perform immediate emergency actions. The EC cannot withdraw the funds to themselves. The EC can only withdraw funds to the parties that contribute capital to the deal. This EC is important because issues may arise that require action faster than the governance of either/both parties could take given their voting periods.\n\nFor example, if the Astroport contracts have a bug and the STARS:NTRN pool is being drained faster than each of the parties can pass governance proposals, the EC could stop the issue by immediately triggering a withdrawal of the assets to Stargaze and Neutron.\n\n[Covalent DAO](https://daodao.zone/dao/neutron1e6vvm9nj54rq6muwrjpxcd2x52gshj7gv4v8t8gvc7zmfgktfskq4rr0cg/members) will serve as the EC for this Covenant. Covalent DAO is a group of members who are well respected and trusted in Cosmos. Four of six Covalent DAO members must approve an action in order for that action to occur.\n\n1. **Upgrades**\n\nAdmins of the contract have the authority to migrate the contracts or upgrade the configs. Since the Admin has powers beyond what the EC is granted, the Admin of this Covenant will be Covalent DAO, Stargaze via polytone account, and Neutron, with governance set to majority rule and voting power as follows:\n\n- EC has majority voting power when the Covenant is first instantiated, while attempting to route the funds, and LPing the funds. If there are issues that come up, this is the time when they are likely to happen due to cross-chain complexity and the EC can act faster than Stargaze and Neutron.\n- After the LP has occurred, EC grants Stargaze and Neutron majority voting power of the Admin DAO so that any upgrade will require approval by both Stargaze and Neutron governance in order to occur.\n\n### Governance Votes\n\n- YES Vote: A 'YES' vote indicates support for using 287,979 $NTRN from the Neutron Main DAO treasury to provide liquidity for the STARS/NTRN Liquidity Pool on Astroport.\n- NO Vote: A 'NO' vote signifies opposition to the proposal. No liquidity will be provided.\n- ABSTAIN Vote: An 'ABSTAIN' vote is for members who do not wish to take a definitive stance on the proposal. This vote acknowledges the proposal's implications but chooses neither to support nor oppose the changes suggested.","proposer":"neutron1wpqpruqergaxa3qz5nfg982t5sh2yd8m452hpn","start_height":10686142,"min_voting_period":null,"expiration":{"at_time":"1718105196608389722"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"39784353633934","msgs":[{"bank":{"send":{"to_address":"neutron1ea93yfw7nlxkxng97q3a4s7vvr6srts6hxlv7vjdywvhnmg5zfts7vjyna","amount":[{"denom":"untrn","amount":"287979000000"}]}}}],"status":"executed","votes":{"yes":"2743420964145","no":"481045954484","abstain":"1547073899222"},"allow_revoting":true}},{"id":37,"proposal":{"title":"Upgrade Neutron to v3.0.5","description":"### Summary\n\nThis is a proposal to do a software upgrade to the [v3.0.5](https://github.com/neutron-org/neutron/releases/tag/v3.0.5) software tag of the Neutron codebase at block height [10,525,000](https://www.mintscan.io/neutron/block/10525000) estimated to occur May 23nd 2024, 14:30 UTC.\n\nBlock times have high variance, so please monitor the chain for more precise time estimates.\n\nThe upgrade is anticipated to take only a few **minutes**, during which time, there will not be any on-chain activity on the network.\n\n## Release Contents\n\n- [Whitelisting of MsgUpdateParams](https://github.com/neutron-org/neutron/commit/440180dee4964dcab42ee7c62cefc88994b85307) in auction module to allow Neutron DAO to change params of the Auction module;\n- [Enabling of block-sdk](https://github.com/neutron-org/neutron/pull/497) services to monitor mempool size;\n- [Block-SDK update](https://github.com/neutron-org/neutron/pull/493) to fix mempool clearing;\n\n## Details of Upgrade Time\n\nThe proposal targets the upgrade proposal block to be [10,525,000](https://www.mintscan.io/neutron/block/10525000), anticipated to be on May 23nd 2024, 14:30 UTC.\n\nNote that block times have high variance, so keep monitoring the time.\n\nThe upgrade is anticipated to take approximately **a few minutes**, during which time, there will not be any on-chain activity on the network.\n\nIn the event of an issue at upgrade time, we should coordinate via the [validators channel in Discord](https://discord.com/channels/986573321023942708/1030043854637899816) to come to a quick emergency consensus and mitigate any further issues.\n\n## Validator Preparations\n\n- **To build the binary, be sure to install Golang 1.21:** [https://go.dev/doc/install**.**](https://go.dev/doc/install**.**)\n- We recommend validators utilize 64GB of RAM. If you do not have 64GB of RAM, at a minimum you will require a total of 64GB of swap set to prevent out of memory errors.\n- If using Cosmovisor, manually build \u0026 copy the `neutrond` binary to /`cosmovisor/upgrades/v3.0.5/bin/`. If not using Cosmovisor, wait for your node to halt at the upgrade height, then install and run the v3.0.5 binary.\n- In the event of an issue at upgrade time, please coordinate via the Cosmos Hub or Neutron Discord validator channels to come to emergency consensus and mitigate any further issues.\n\nFor more information please see full [instructions for the upgrade](https://github.com/neutron-org/mainnet-assets/tree/main/upgrades/v3.0.5) on github.\n\n## **Governance Votes**\n\n- **YES Vote:** A 'YES' vote indicates support upgrading Neutron to v3.0.5.\n- **NO Vote:** A 'NO' vote signifies opposition to the proposal. No upgrade will happen.\n- **ABSTAIN Vote:** An 'ABSTAIN' vote is for members who do not wish to take a definitive stance on the proposal. This vote acknowledges the proposal's implications but chooses neither to support nor oppose the changes suggested.","proposer":"neutron1th5v34n6a35687r0wx8atdg8dzrfjzt2a9ptum","start_height":9837625,"min_voting_period":null,"expiration":{"at_time":"1715966394517239144"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"40112241421825","msgs":[{"stargate":{"type_url":"/cosmos.adminmodule.adminmodule.MsgSubmitProposal","value":"CssCCiovY29zbW9zLnVwZ3JhZGUudjFiZXRhMS5Nc2dTb2Z0d2FyZVVwZ3JhZGUSnAIKLm5ldXRyb24xaHhza2ZkeHBwNWhxZ3RqajZhbTZua2plZmhmemozNTl4MGFyM3oS6QEKBnYzLjAuNRILCICSuMOY/v///wEYyLKCBSLMAXtcImJpbmFyaWVzXCI6IHtcImxpbnV4L2FtZDY0XCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL25ldXRyb24tb3JnL25ldXRyb24vcmVsZWFzZXMvZG93bmxvYWQvdjMuMC41L25ldXRyb25kLWxpbnV4LWFtZDY0P2NoZWNrc3VtPXNoYTI1NjowYTI1MzQ0NDMxYmRkYTVkZmJlZjEzNjlhOWQxNzViMmNiMjE3OTk1NDU2MWQwNDgzMTZiMTJhYzg2Y2Y4MjgxXCJ9fRJCbmV1dHJvbjFzdWhnZjVzdmh1NHVzcnVydnh6bGduNTRrc3htbjhnbGphcmp0eHFuYXB2OGtqbnA0bnJzdGR4dmZm"}}],"status":"executed","votes":{"yes":"3693610821401","no":"251051109","abstain":"1501785936757"},"allow_revoting":true}},{"id":36,"proposal":{"title":"Migrate Lockdrop LPs \u0026 Vesting contracts to Astroport PCL pools","description":"# Migrate Lockdrop LPs \u0026 Vesting contracts to Astroport PCL pools\n\n## Summary\n\nDuring Neutron’s [Token Generation Event (TGE)](https://docs.neutron.org/neutron/token-generation-event/overview/) users deposited tokens for locked NTRN-USDC.axl and NTRN-ATOM LP positions pools in Neutron’s [Lockdrop](https://docs.neutron.org/neutron/token-generation-event/lockdrop/overview) and [LP Vesting](https://docs.neutron.org/neutron/token-generation-event/vesting-lp/overview) contracts.\n\nAstroport recently introduced new [Passive Concentrated Liquidity (PCL)](https://docs.astroport.fi/docs/develop/smart-contracts/swap-pairs/passive-concentrated-liquidity-pools) pools for these token pairs, so the Lockdrop and Vesting contract code must be updated to enable migration of locked liquidity from traditional XYK pools to newly created PCL ones.\n\nThe LP migration will: \n\n- Improve fee revenue for LP providers due to the dynamic PCL fee logic and ASTRO incentives;\n- Deepen liquidity, improve execution and reduce price impact for traders;\n\n## Process\n\nTo migrate the LP tokens the following steps are necessary:\n\n1. Migrate Reserve liquidity from XYK to PCL and send PCL LP tokens to the Main DAO address;\n2. Migrate Lockdrop contract to the new code to enable migration logic from XYK;\n3. Migrate Vesting contracts for NTRN-USDC.axl and NTRN-ATOM LP tokens to the new code to enable migration logic;\n4. Enable PCL Lockdrop Voting Vault and PCL LP Vesting Voting vault to give voting power for users with new, locked PCL LP tokens in Lockdrop and LP Vesting contracts.\n\nCompletion of these steps will migrate locked liquidity to new, PCL pools and LP token positions with voting power for Lockdrop participants.\n\n## Technical details\n\n1. DAO contracts release: [https://github.com/neutron-org/neutron-dao/releases/tag/v0.7.0](https://github.com/neutron-org/neutron-dao/releases/tag/v0.7.0)\n2. TGE contracts release: [https://github.com/neutron-org/neutron-tge-contracts/releases/tag/v0.5.0](https://github.com/neutron-org/neutron-tge-contracts/releases/tag/v0.5.0)\n3. To verify the migration you need to check that uploaded contracts contain only changes from the relevant releases. For that you need to take a hash of uploaded binaries and compare it with the hash of binaries you built on your machine.\nLet’s see how to verify validity of the first migration message in the proposal:\n 1. At first we need to understand which contract is being migrated. We can do it by taking a value from the `contract_addr` field in the message ([`neutron13we0myxwzlpx8l5ark8elw5gj5d59dl6cjkzmt80c5q5cv5rt54qvzkv2a`](https://neutron.celat.one/neutron-1/contracts/neutron13we0myxwzlpx8l5ark8elw5gj5d59dl6cjkzmt80c5q5cv5rt54qvzkv2a)), looking at the [tables](https://docs.neutron.org/deployment/mainnet#neutron-dao), finding a row with this address and checking the name of the contract. In our case it’s **Reserve** contract;\n 2. Here we need to build contracts locally. For that we need to clone the repo:\n \n ```bash\n $ git clone https://github.com/neutron-org/neutron-dao.git\n $ cd neutron-dao\n $ git checkout v0.7.0;\n $ make build\n ```\n \n Since we are verifying DAO contract we are cloning the DAO repo.\n If you want to verify some of the TGE contracts, you need to clone TGE repo (https://github.com/neutron-org/neutron-tge-contracts.git);\n \n 3. After this we should take a hash of `neutron_reserve.wasm` contract (name of the binary is similar to the name of contract ****in step **a**):\n \n ```bash\n $ shasum -a 256 artifacts/neutron_reserve.wasm\n ```\n \n `aba971624dd35fd7bb324a9467a1b4a2304690328977b41ec12dc20654b35108` is the hash of the Neutron Reserve binary you've built on your machine.\n \n To verify that the migration will happen to the same proper binary you should get a hash of the deployed contract by its code id (you can see a `new_code_id` in the message to be executed below):\n \n ```\n $ neutrond q wasm code-info 1084 --node https://rpc-kralum.neutron-1.neutron.org:443 --output json | jq \".data_hash\"\n \n \"ABA971624DD35FD7BB324A9467A1B4A2304690328977B41EC12DC20654B35108\"\n \n ```\n \n If hashes are equal, that means the deployed binary is correct and contains all the fixes above.\n \n \n You can verify the rest of migrate message the same way.","proposer":"neutron1th5v34n6a35687r0wx8atdg8dzrfjzt2a9ptum","start_height":9794038,"min_voting_period":null,"expiration":{"at_time":"1715857851500887196"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"40112262021254","msgs":[{"wasm":{"migrate":{"contract_addr":"neutron1ryhxe5fzczelcfmrhmcw9x2jsqy677fw59fsctr09srk24lt93eszwlvyj","new_code_id":1087,"msg":"eyJwY2xfbG9ja2Ryb3BfY29udHJhY3QiOiJuZXV0cm9uMWptNXg1NmY2ejluN2NhNzU0NXk5M3J1bm0wMGhkNGxhZnFlcTkyOXcwYTd1ZzZud2QyMHM0YThjZncifQ=="}}},{"wasm":{"migrate":{"contract_addr":"neutron1kkwp7pd4ts6gukm3e820kyftz4vv5jqtmal8pwqezrnq2ddycqasr87x9p","new_code_id":1088,"msg":"eyJtYXhfc2xpcHBhZ2UiOiIwLjAxIiwibnRybl9kZW5vbSI6InVudHJuIiwicGFpcmVkX2Rlbm9tIjoiaWJjL0M0Q0ZGNDZGRDZERTM1Q0E0Q0Y0Q0UwMzFFNjQzQzhGREM5QkE0Qjk5QUU1OThFOUIwRUQ5OEZFM0EyMzE5RjkiLCJ4eWtfcGFpciI6Im5ldXRyb24xZTIyemg1cDhtZWRkeGpjbGV2dWhqbWZqNjlqeGZzYTh1dTNqdmh0NzJydjlkOGxraHZlczZ0OHZlcSIsImNsX3BhaXIiOiJuZXV0cm9uMTVkMHNlOW53OXN0cXg5bXM5ZXk4NWdmcHJhcXdsODB0NXVybWpmazJqd3RxeHB4azN4M3FjdGp0NG4iLCJuZXdfbHBfdG9rZW4iOiJuZXV0cm9uMXY3d2c0dXIzNmdnd2Q2ejY0dnp5ZTNjY2FtZWhrczJ4OWFydjRwYWZod21obGNsamZ0a3M2ZjJ6NDQiLCJwY2xfdmVzdGluZyI6Im5ldXRyb24xdzN1dTVlZXgzaGR1cWNqNnBneDMwejN4ZjlhcjRnZWxrNTZqN2MzNnF6ZGpramx2anV3czhhNng3ZyJ9"}}},{"wasm":{"migrate":{"contract_addr":"neutron1wgzzn83hhcc5asrtslqvaw2wuqqkfulgac7ze94dmqkrxu8nsensmy9dkv","new_code_id":1088,"msg":"eyJtYXhfc2xpcHBhZ2UiOiIwLjAxIiwibnRybl9kZW5vbSI6InVudHJuIiwicGFpcmVkX2Rlbm9tIjoiaWJjL0YwODJCNjVDODhFNEI2RDVFRjFEQjI0M0NEQTFEMzMxRDAwMjc1OUU5MzhBMEY1Q0QzRkZEQzVENTNCM0UzNDkiLCJ4eWtfcGFpciI6Im5ldXRyb24xbDNndHhud2p1eTY1cnprNjNrMzUyZDUyYWQwZjJzaDg5a2dycXdjemd0NTZqYzhubWMzcWg1a2FnMyIsImNsX3BhaXIiOiJuZXV0cm9uMWpqeHM1cjl4bmZqc2VkaHN5OWphaGd5dGp0bXI0a2E1OW1zaHJxcWh6ajdxczg3and4ZnF0cW5nZ2ciLCJuZXdfbHBfdG9rZW4iOiJuZXV0cm9uMTM3cnprYWNyeXpzdGZ5eWx2dnZ1MnZxOXVqNWw4OXl6eDl2N2d4cDBzNzd4cTVhY2gyeHMzdDZ0M3AiLCJwY2xfdmVzdGluZyI6Im5ldXRyb24xOTBhcGRhbHU0M2hxNnFtNHg1c2p2eXg3Y2NzYzY1dHgzcGFhcGhjNTlkMzJsbGQyN2Zrc2xnMDUyciJ9"}}},{"wasm":{"migrate":{"contract_addr":"neutron13we0myxwzlpx8l5ark8elw5gj5d59dl6cjkzmt80c5q5cv5rt54qvzkv2a","new_code_id":1084,"msg":"eyJtYXhfc2xpcHBhZ2UiOiIwLjAxIiwibnRybl9kZW5vbSI6InVudHJuIiwiYXRvbV9kZW5vbSI6ImliYy9DNENGRjQ2RkQ2REUzNUNBNENGNENFMDMxRTY0M0M4RkRDOUJBNEI5OUFFNTk4RTlCMEVEOThGRTNBMjMxOUY5IiwibnRybl9hdG9tX3h5a19wYWlyIjoibmV1dHJvbjFlMjJ6aDVwOG1lZGR4amNsZXZ1aGptZmo2OWp4ZnNhOHV1M2p2aHQ3MnJ2OWQ4bGtodmVzNnQ4dmVxIiwibnRybl9hdG9tX2NsX3BhaXIiOiJuZXV0cm9uMTVkMHNlOW53OXN0cXg5bXM5ZXk4NWdmcHJhcXdsODB0NXVybWpmazJqd3RxeHB4azN4M3FjdGp0NG4iLCJ1c2RjX2Rlbm9tIjoiaWJjL0YwODJCNjVDODhFNEI2RDVFRjFEQjI0M0NEQTFEMzMxRDAwMjc1OUU5MzhBMEY1Q0QzRkZEQzVENTNCM0UzNDkiLCJudHJuX3VzZGNfeHlrX3BhaXIiOiJuZXV0cm9uMWwzZ3R4bndqdXk2NXJ6azYzazM1MmQ1MmFkMGYyc2g4OWtncnF3Y3pndDU2amM4bm1jM3FoNWthZzMiLCJudHJuX3VzZGNfY2xfcGFpciI6Im5ldXRyb24xamp4czVyOXhuZmpzZWRoc3k5amFoZ3l0anRtcjRrYTU5bXNocnFxaHpqN3FzODdqd3hmcXRxbmdnZyJ9"}}},{"wasm":{"execute":{"contract_addr":"neutron1f6jlx7d9y408tlzue7r2qcf79plp549n30yzqjajjud8vm7m4vdspg933s","msg":"eyJhZGRfdm90aW5nX3ZhdWx0Ijp7Im5ld192b3RpbmdfdmF1bHRfY29udHJhY3QiOiJuZXV0cm9uMTVsYzMzbmZ5cDk0M3M1OXB4eWx6OGt2aGhxeGRmc3VybjJlNzAzODBldnF6emtuczQyMnFuenQ2bjMifX0=","funds":[]}}},{"wasm":{"execute":{"contract_addr":"neutron1f6jlx7d9y408tlzue7r2qcf79plp549n30yzqjajjud8vm7m4vdspg933s","msg":"eyJhZGRfdm90aW5nX3ZhdWx0Ijp7Im5ld192b3RpbmdfdmF1bHRfY29udHJhY3QiOiJuZXV0cm9uMXcyanFxZWZhYWx1OXlseWg2c2dlOGF0eGcwcmU0bGxhZGU4eHdjNXIydHg0emtkajRrZXE1cjRweGsifX0=","funds":[]}}}],"status":"executed","votes":{"yes":"4846888228357","no":"600000","abstain":"1289159436"},"allow_revoting":true}},{"id":35,"proposal":{"title":"Neutron V3 Upgrade","description":"### Summary\n\nThis is a proposal to do a software upgrade to the [v3.0.1](https://github.com/neutron-org/neutron/releases/tag/v3.0.1) software tag of the Neutron codebase at block height [9,034,900](https://www.mintscan.io/neutron/block/9034900) estimated to occur Apr 10th 2024, 15:30 UTC.\n\nBlock times have high variance, so please monitor the chain for more precise time estimates.\n\nThe upgrade is anticipated to take only a few **minutes**, during which time, there will not be any on-chain activity on the network.\n\n## Release Contents\n\n- **Block SDK integration** \n Neutron has integrated [Skip's Block SDK](https://docs.skip.money/blocksdk/overview) which allows builders to implement different MEV strategies on Neutron. You can find more info how to use Block SDK [here](https://docs.skip.money/blocksdk/searcher-docs).\n\n- **CW bindings**\n Neutron V3 contains convenient [CW bindings](https://github.com/neutron-org/neutron/pull/365) for the [Neutron DEX](https://github.com/neutron-org/neutron-docs/blob/54db3930772c174688c25826a0cc09f214c5b324/docs/neutron/neutron/modules/dex/overview/overview.md) module which allows more efficient development of smart-contract applications; avoiding difficult Stargate messages and queries.\n \n- **Golang Upgrade**\n Neutron V3 uses [Golang 1.21](https://go.dev/doc/devel/release#go1.21.0)\n## Details of Upgrade Time\n\nThe proposal targets the upgrade proposal block to be [9,034,900](https://www.mintscan.io/neutron/block/9034900), anticipated to be on Apr 3rd 2024, 15:30 UTC.\n\nNote that block times have high variance, so keep monitoring the time.\n\nThe upgrade is anticipated to take approximately **a few minutes**, during which time, there will not be any on-chain activity on the network.\n\nIn the event of an issue at upgrade time, we should coordinate via the [validators channel in Discord](https://discord.com/channels/986573321023942708/1030043854637899816) to come to a quick emergency consensus and mitigate any further issues.\n## Validator Preparations\n\n- **To build the binary, be sure to install Golang 1.21:** [https://go.dev/doc/install**.**](https://go.dev/doc/install**.**)\n- We recommend validators utilize 64GB of RAM. If you do not have 64GB of RAM, at a minimum you will require a total of 64GB of swap set to prevent out of memory errors.\n- If using Cosmovisor, manually build \u0026 copy the `neutrond` binary to /`cosmovisor/upgrades/v3.0.1/bin/`. If not using Cosmovisor, wait for your node to halt at the upgrade height, then install and run the v3.0.1 binary.\n- In the event of an issue at upgrade time, please coordinate via the Cosmos Hub or Neutron Discord validator channels to come to emergency consensus and mitigate any further issues.\n\nFor more information please see full [instructions for the upgrade](https://github.com/neutron-org/mainnet-assets/tree/main/upgrades/v3.0.1) on github.\n\n## **Governance Votes**\n\n- **YES Vote:** A 'YES' vote indicates support upgrading Neutron to V3.\n- **NO Vote:** A 'NO' vote signifies opposition to the proposal. No upgrade will happen.\n- **ABSTAIN Vote:** An 'ABSTAIN' vote is for members who do not wish to take a definitive stance on the proposal. This vote acknowledges the proposal's implications but chooses neither to support nor oppose the changes suggested.","proposer":"neutron1th5v34n6a35687r0wx8atdg8dzrfjzt2a9ptum","start_height":8386703,"min_voting_period":null,"expiration":{"at_time":"1712321142613928053"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"39465685617134","msgs":[{"stargate":{"type_url":"/cosmos.adminmodule.adminmodule.MsgSubmitProposal","value":"CssCCiovY29zbW9zLnVwZ3JhZGUudjFiZXRhMS5Nc2dTb2Z0d2FyZVVwZ3JhZGUSnAIKLm5ldXRyb24xaHhza2ZkeHBwNWhxZ3RqajZhbTZua2plZmhmemozNTl4MGFyM3oS6QEKBnYzLjAuMRILCICSuMOY/v///wEYlLmnBCLMAXtcImJpbmFyaWVzXCI6IHtcImxpbnV4L2FtZDY0XCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL25ldXRyb24tb3JnL25ldXRyb24vcmVsZWFzZXMvZG93bmxvYWQvdjMuMC4xL25ldXRyb25kLWxpbnV4LWFtZDY0P2NoZWNrc3VtPXNoYTI1Njo3NjU2OGYwMDdiZWY3MjgxMjBmODI1NTk2YmRhODcyNjkyY2UzYmZjNDEzMTMwOTY5M2RmYjkzODQxZjMzY2ZlXCJ9fRJCbmV1dHJvbjFzdWhnZjVzdmh1NHVzcnVydnh6bGduNTRrc3htbjhnbGphcmp0eHFuYXB2OGtqbnA0bnJzdGR4dmZm"}}],"status":"executed","votes":{"yes":"2755380242490","no":"136827097","abstain":"2010699458813"},"allow_revoting":true}},{"id":34,"proposal":{"title":"Neutron V3 Upgrade","description":"### Summary\n\nThis is a proposal to do a software upgrade to the [v3.0.1](https://github.com/neutron-org/neutron/releases/tag/v3.0.1) software tag of the Neutron codebase at block height [8,790,500](\u003chttps://www.mintscan.io/neutron/block/8790500\u003e) estimated to occur Apr 3rd 2024, 15:30 UTC.\n\nBlock times have high variance, so please monitor the chain for more precise time estimates.\n\nThe upgrade is anticipated to take only a few **minutes**, during which time, there will not be any on-chain activity on the network.\n\n## Release Contents\n\n- **Block SDK integration** \n Neutron has integrated [Skip's Block SDK](https://docs.skip.money/blocksdk/overview) which allows builders to implement different MEV strategies on Neutron. You can find more info how to use Block SDK [here](https://docs.skip.money/blocksdk/searcher-docs).\n\n- **CW bindings**\n Neutron V3 contains convenient [CW bindings](https://github.com/neutron-org/neutron/pull/365) for the [Neutron DEX](https://github.com/neutron-org/neutron-docs/blob/54db3930772c174688c25826a0cc09f214c5b324/docs/neutron/neutron/modules/dex/overview/overview.md) module which allows more efficient development of smart-contract applications; avoiding difficult Stargate messages and queries.\n \n- **Golang Upgrade**\n Neutron V3 uses [Golang 1.21](https://go.dev/doc/devel/release#go1.21.0)\n## Details of Upgrade Time\n\nThe proposal targets the upgrade proposal block to be [8,790,500](\u003chttps://www.mintscan.io/neutron/block/8790500\u003e) , anticipated to be on Apr 3rd 2024, 15:30 UTC.\n\nNote that block times have high variance, so keep monitoring the time.\n\nThe upgrade is anticipated to take approximately **a few minutes**, during which time, there will not be any on-chain activity on the network.\n\nIn the event of an issue at upgrade time, we should coordinate via the [validators channel in Discord](https://discord.com/channels/986573321023942708/1030043854637899816) to come to a quick emergency consensus and mitigate any further issues.\n## Validator Preparations\n\n- **To build the binary, be sure to install Golang 1.21:** [https://go.dev/doc/install**.**](https://go.dev/doc/install**.**)\n- We recommend validators utilize 64GB of RAM. If you do not have 64GB of RAM, at a minimum you will require a total of 64GB of swap set to prevent out of memory errors.\n- If using Cosmovisor, manually build \u0026 copy the `neutrond` binary to /`cosmovisor/upgrades/v3.0.1/bin/`. If not using Cosmovisor, wait for your node to halt at the upgrade height, then install and run the v3.0.1 binary.\n- In the event of an issue at upgrade time, please coordinate via the Cosmos Hub or Neutron Discord validator channels to come to emergency consensus and mitigate any further issues.\n\nFor more information please see full [instructions for the upgrade](https://github.com/neutron-org/mainnet-assets/tree/main/upgrades/v3.0.1) on github.\n\n## **Governance Votes**\n\n- **YES Vote:** A 'YES' vote indicates support upgrading Neutron to V3.\n- **NO Vote:** A 'NO' vote signifies opposition to the proposal. No upgrade will happen.\n- **ABSTAIN Vote:** An 'ABSTAIN' vote is for members who do not wish to take a definitive stance on the proposal. This vote acknowledges the proposal's implications but chooses neither to support nor oppose the changes suggested.","proposer":"neutron1th5v34n6a35687r0wx8atdg8dzrfjzt2a9ptum","start_height":8319866,"min_voting_period":null,"expiration":{"at_time":"1712151039875098389"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"39249063235492","msgs":[{"stargate":{"type_url":"/cosmos.adminmodule.adminmodule.MsgSubmitProposal","value":"CssCCiovY29zbW9zLnVwZ3JhZGUudjFiZXRhMS5Nc2dTb2Z0d2FyZVVwZ3JhZGUSnAIKLm5ldXRyb24xaHhza2ZkeHBwNWhxZ3RqajZhbTZua2plZmhmemozNTl4MGFyM3oS6QEKBnYzLjAuMRILCICSuMOY/v///wEY5MOYBCLMAXtcImJpbmFyaWVzXCI6IHtcImxpbnV4L2FtZDY0XCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL25ldXRyb24tb3JnL25ldXRyb24vcmVsZWFzZXMvZG93bmxvYWQvdjMuMC4xL25ldXRyb25kLWxpbnV4LWFtZDY0P2NoZWNrc3VtPXNoYTI1Njo3NjU2OGYwMDdiZWY3MjgxMjBmODI1NTk2YmRhODcyNjkyY2UzYmZjNDEzMTMwOTY5M2RmYjkzODQxZjMzY2ZlXCJ9fRJCbmV1dHJvbjFzdWhnZjVzdmh1NHVzcnVydnh6bGduNTRrc3htbjhnbGphcmp0eHFuYXB2OGtqbnA0bnJzdGR4dmZm"}}],"status":"rejected","votes":{"yes":"633480688478","no":"7120742219","abstain":"1506445147998"},"allow_revoting":true}},{"id":33,"proposal":{"title":"Protocol Owned Liquidity for $APOLLO / $NTRN on Astroport","description":"## **Protocol Owned Liquidity for $APOLLO / $NTRN on Astroport**\n\nThis is a joint proposal prepared by representatives of the Neutron Foundation and the Apollo Development Team.\nTo facilitate this liquidity provision, the representatives will form the 3/4 “Apollo X Neutron POL” Multisig DAO, on DAODAO on Neutron as follows:\n\n- Multisig address: neutron1hgxer6ej3r37fhhj9l34dykg3w4rmjph0ejfh3vu9f293wq3ym5sc53f35\n- Signers:\n - Bruce (Apollo) (25%) neutron1jssn7m7u06jwe6ckzgxwsqs4uqlmyljf9te4eu\n - Other Mike (Apollo) (25%) neutron1w4yv8uvc0neqhxwqsg0qm0axlt8wcms4wy7qzf\n - soi2studio (Neutron) (25%) neutron17s76s29nyuu5p6xaqz0sndw3sgl78hy4gqm342\n - Luisqa (Neutron) (25%) neutron1ze09kc5ackut7wc4pf38lysu45kfz3msr98nru\n\n### **Summary**\n\nApollo X Neutron POL multisig proposes to establish Protocol Owned Liquidity for the APOLLO/NTRN token pair as part of an ongoing project to build sustainable liquidity for NTRN and other strategic tokens on Astroport.\n\n**$1m NTRN/APOLLO Protocol Owned Liquidity:**\n\n**This proposal requests exactly 333,000 NTRN ($500,000 @ $1.50) from the Neutron Main Dao Treasury to be matched with 2,500,000 APOLLO ($500,000 @ $0.20) to establish ∼$1m Protocol Owned Liquidity in the [APOLLO/NTRN xyk pool on Astroport](https://app.astroport.fi/pools/neutron1fktxsflze70p7565yslwtth290zqad4agt4gpvjffy58h6raxvasz5etfw).**\nMore specifically:\n\n- Neutron Main Dao Treasury provides 333,000 NTRN tokens to the Apollo X Neutron POL multisig to pair with APOLLO tokens, and provide as liquidity on Astroport.\n- If/when this proposal passes the Apollo Development Fund (neutron1qnpwxhrgd8mmsfgql7df6kusgjr3wvm4trl05xu260seelwh845qtqqq9t) will provide 2,500,000 $APOLLO tokens to the Apollo X Neutron POL multisig to pair with NTRN, and provide as liquidity on Astroport.\n\n### **Justification**\n\nApollo is one of the premier applications to establish its homebase in Neutron’s early DeFi ecosystem; attracting attention and capital from outside Cosmos and leveraging Neutron’s early Integrated applications such as Astroport.\nDespite the currently low liquidity and taxes, APOLLO already has over $1.5m in trading volume and has frequently been amongst the top traded pairs on Astroport. However this is just the start and Apollo aims to help Neutron become a core liquidity hub for liquid staking on Cosmos; driving sustainable liquidity through composability and volatility farming.\nWith only 3 Vaults live and volatility farming still to launch, over $4.5m is already locked in Apollo Vaults on Neutron. Most recently the Apollo TIA Vault has achieved over $1.4m in TVL in less than 2 weeks, with incentives for users to remain in the Vault for at least 12 months.\n\nLearn more about APOLLO here: https://articles.apollo.farm/apollo-tokenomics/\n\nThis proposal would cement the APOLLO/NTRN pool as the main liquidity route in/out of APOLLO, making it easier to access APOLLO and onboard new users to the Neutron ecosystem.\n\nBy boosting TVL on Astroport we will:\n\n- Sustainably deepen liquidity for the NTRN/APOLLO token pair on Astroport - the liquidity hub for NTRN and main dex listing for APOLLO.\n- Improve trade execution for an important Neutron Application on Astroport, without the expense of incentivising liquidity.\n- Further align chain and project by diversifying treasuries with strategic ecosystem partner assets.\n\n### **Execution**\n\nUpon approval of this proposal, the Apollo X Neutron multisig will convene on receipt of tokens to enact the will of the community i.e. deploy liquidity on Astroport and return LP tokens to the Neutron Main DAO Treasury and Apollo Development Fund.\n\nThe maximum possible amount of liquidity will be provided at the market rate on the date of provision with the available 333,000 NTRN and 2,500,000 APOLLO tokens in the Apollo X Neutron multisig treasury.\n\nThe resultant NTRN/APOLLO LP tokens will be split equally and returned to the respective team wallets:\n\n- 50% Neutron Main DAO Treasury\n- 50% Apollo Development Fund Wallet\n\nAny surplus tokens that may arise due price fluctuations during the voting period will be split evenly and returned to the respective team wallets:\n\n- 50% Neutron Main DAO Treasury\n- 50% Apollo Development Fund Wallet\n\n### **Governance Votes**\n\n- **YES Vote:** A 'YES' vote indicates support for the proposal and transferring of 333,000 NTRN tokens to the Apollo X Neutron POL multisig neutron1hgxer6ej3r37fhhj9l34dykg3w4rmjph0ejfh3vu9f293wq3ym5sc53f35.\n- **NO Vote:** A 'NO' vote signifies opposition to the proposal. No funds will be transferred.\n- **ABSTAIN Vote:** An 'ABSTAIN' vote is for members who do not wish to take a definitive stance on the proposal. This vote acknowledges the proposal's implications but chooses neither to support nor oppose the changes suggested.","proposer":"neutron1ymzwzma34enweastp7t7m7qg4zdl5ckkx6fytr","start_height":8048133,"min_voting_period":null,"expiration":{"at_time":"1711451066911560877"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"38469566033812","msgs":[{"bank":{"send":{"to_address":"neutron1hgxer6ej3r37fhhj9l34dykg3w4rmjph0ejfh3vu9f293wq3ym5sc53f35","amount":[{"denom":"untrn","amount":"333000000000"}]}}}],"status":"executed","votes":{"yes":"4958081746955","no":"774747811","abstain":"27425220834"},"allow_revoting":true}},{"id":32,"proposal":{"title":"Token swap between Neutron, MantaDAO and Kujira, for Protocol Owned Liquidity","description":"### Summary\n\nThis is a joint proposal prepared by representatives of the Neutron Foundation and MantaDAO (also representing the Kujira Community). To facilitate this token swap, the representatives will form the 3/4 Nemaku Multisig DAO on Neutron as follows:\n\n**Multisig address:**\nhttps://daodao.zone/dao/neutron14g6lzcnmd3l4m9jqzwxysggl2c3y3um66sc3s536fh54d3qxaaysmlgae5\n\n**Signers:**\n\n- Pragmatic Monkey (Kuji \u0026 Manta) (25%)\n \n neutron1cyglcvuqt5nzvlst6ehhgquhz0c7nzcsxhlzlz\n \n- Mike Richards (Kuji \u0026 Manta) (25%)\n \n neutron14udyajpzkveqx5tsz8qghrx8qh9gmrh7cez4cm\n \n- soi2studio (Neutron) (25%)\n \n neutron17s76s29nyuu5p6xaqz0sndw3sgl78hy4gqm342\n \n- Luisqa (Neutron) (25%)\n \n neutron1ze09kc5ackut7wc4pf38lysu45kfz3msr98nru\n \n\nNemaku Multisig proposes two separate deals as part of a comprehensive plan to build sustainable liquidity for KUJI and MNTA on Neutron, and NTRN on Kujira:\n\n**1) A $150k NTRN\u003c\u003eMNTA token swap \u0026 Protocol Owned Liquidity**\n\nNeutron Main Dao Treasury exchanges $150k of NTRN for $150K MNTA with MantaDAO.\n\nNeutron matches the $150k MNTA received with a further $150k NTRN (Total $300k requested) and provides $300k MNTA/NTRN LP tokens as Protocol Owned Liquidity on Astroport (The liquidity hub for Neutron).\n\nMantaDAO matches the $150k NTRN received with a further $150k MNTA (Total $300k requested) and provides $300k NTRN/MNTA LP tokens as Protocol Owned Liquidity on BOW (the AMM built on top of FIN, Kujira’s orderbook DEX).\n\n**2) A $150k NTRN\u003c\u003eKUJI token swap \u0026 Protocol Owned Liquidity**\n\nNeutron Main Dao Treasury exchanges $150k of NTRN for $150K KUJI with the Kujira Community Fund.\n\nNeutron matches the $150k KUJI received with a further $150k NTRN (Total $300k requested) and provides $300k KUJI/NTRN LP tokens as Protocol Owned Liquidity on Astroport.\n\nKujira matches the $150k NTRN received with a further $150k KUJI (Total $300k requested) and provides $300k NTRN/KUJI* LP tokens as Protocol Owned Liquidity on BOW.\n\n- (*TBD: Kujira Community may opt to use the new levered LP feature and pair their NTRN with USK stablecoin instead of KUJI).*\n\nThis will result in the following new liquidity distribution across the Neutron, MantaDAO Kujira ecosystems.\n\n| Owner | Tokens Provided | Tokens Received |\n| --- | --- | --- |\n| Neutron Main DAO | $600k NTRN | $300k MNTA/NTRN LP and |\n| | | $300k KUJI/NTRN LP on Astroport |\n| MantaDAO | $300k MNTA | $300k NTRN/MNTA LP on BOW |\n| Kujira Community Fund | $300k KUJI | $300k NTRN/KUJI or |\n| | | $300k NTRN/USK on BOW |\n\nThese tokens swaps and subsequent provision of Protocol Owned Liquidity (POL) will:\n\n- Sustainably deepen liquidity for NTRN, MNTA and KUJI across the ecosystems.\n- Improving trade execution on Bow and Astroport without the expense of incentivising liquidity.\n- Diversifying treasuries across premier cosmos assets.\n- Open up additional arbitrage routes between Astroport and FIN, resulting in a net increase in trading volumes on both sides.\n- Build a bridge between the Neutron and Manta/Kujira communities, promoting net positive-sum cooperation across the Cosmos.\n\n### **Further detail and Timeline**\n\nSubject to community support, the proposed execution timeline is as follows:\n\n- 7 day Forum period for community discussion\n- Neutron places proposal on chain to provide $600k Liquidity to the Nemaku MultiSig\n- Manta and KUJI make formal proposals timed to finish not later than end of the Neutron voting period of 14 days.\n- Nemaku Multisig convenes on receipt of tokens to enact the will of the community i.e. distribute tokens to team multisigs to be provided as POL.\n- The entire process is estimated to take 3 weeks to complete following community approval.\n- Token swap exchange ratio will be on a 10-day TWAP, based on Coingecko Price Data, to be updated Monday 19th February 2024 10am UTC, prior to the Neutron on-chain proposal going live.\n- The above proposals require approval from three distinct sets of voters. Should either the Manta or Kujira communities not approve of the proposal it shall not impede the progress of the other proposal.\n- Due to price volatility during the voting period a 10% volatility buffer will be applied to the tokens going to each team's ops wallet to be matched with the tokens received from the swap. Unmatched funds left over at the end of the token swaps will be returned to the respective DAO.\n\n### **Execution Process**\n\nAfter addressing any questions or concerns from the community, and being approved by governance, the token swap deal and LP provisioning process will be as follows:\n\n**1) A $150k NTRN\u003c\u003eMNTA token swap \u0026 Protocol Owned Liquidity:**\n\nMantaDAO sends $150k of MNTA (to be send to the Nemaku MultiSig), and a further $150k MNTA + 10% volatility buffer (to be paired with NTRN) to the MantaDAO operational address kujira14udyajpzkveqx5tsz8qghrx8qh9gmrh7dwf00k. Once in the operational wallet, the team will IBC-transfer the $150k of MNTA to the Nemaku MultiSig on Neutron (IBC transfers cannot be performed directly from a CW3 multisig).\n\nNeutron Main DAO Treasury sends $150k of NTRN to the Nemaku MultiSig, and a further $150k NTRN + 10% volatility buffer to the Neutron DAO Ops Multisig neutron1fnvpa9fn0p23pp0ytsdwyfzyyh4p0vw496lnukyy8ryamhfzmarqpay7u3.\n\nNemaku Multisig passes a proposal to send $150k MNTA to the Neutron DAO Ops multisig neutron1fnvpa9fn0p23pp0ytsdwyfzyyh4p0vw496lnukyy8ryamhfzmarqpay7u3, and $150k NTRN to the MantaDAO operational address kujira14udyajpzkveqx5tsz8qghrx8qh9gmrh7dwf00k.\n\nNeutron will pair the received $150k MNTA and $150k NTRN in TBC and provide $300k liquidity in the MNTA/NTRN LP on Astroport.\n\nMantaDAO will pair the received $150k NTRN and $150k MNTA in kujira14udyajpzkveqx5tsz8qghrx8qh9gmrh7dwf00k and provide $300k liquidity in the NTRN/MNTA LP on BOW.\n\n**2) A $150k NTRN\u003c\u003eKUJI token swap and Protocol Owned Liquidity:**\n\nKujira Community Fund sends $150k of KUJI (to be send to the Nemaku MultiSig), and a further $150k KUJI + 10% volatility buffer (to be paired with NTRN) to the Kujira team’s operational address kujira1zspr6va4ev78lpsh48s57nv6szxj4cdywt2kkg. Once in the operational wallet, the team will IBC-transfer the $150k of KUJI to the Nemaku MultiSig on Neutron.\n\nNeutron Main DAO Treasury sends $150k of NTRN to the Nemaku MultiSig, and a further $150k NTRN + 10% volatility buffer to the Neutron DAO Ops Multisig neutron1fnvpa9fn0p23pp0ytsdwyfzyyh4p0vw496lnukyy8ryamhfzmarqpay7u3.\n\nNemaku Multisig passes a proposal to send $150k KUJI to the Neutron DAO Ops Multisig neutron1fnvpa9fn0p23pp0ytsdwyfzyyh4p0vw496lnukyy8ryamhfzmarqpay7u3, and $150k NTRN to the Kujira team’s operational address kujira1zspr6va4ev78lpsh48s57nv6szxj4cdywt2kkg.\n\nNeutron will pair the received $150k KUJI and $150k NTRN IN neutron1fnvpa9fn0p23pp0ytsdwyfzyyh4p0vw496lnukyy8ryamhfzmarqpay7u3 and provide $300k liquidity in the KUJI/NTRN LP on Astroport.\n\nKujira will pair the received $150k NTRN and $150k KUJI in kujira1zspr6va4ev78lpsh48s57nv6szxj4cdywt2kkg and provide $300k liquidity in the NTRN/KUJI LP on BOW.\n\n### **About Manta DAO**\n\nMantaDAO is a decentralized autonomous organization based on the Kujira blockchain and governed by the MNTA token. The DAO and its token are backed by Protocol-Owned Liquidity (POL) and revenue-generating products, one of which is MantaSwap, a multihop router built on top of FIN, Kujira’s CLOB DEX. MantaDAO’s mission is to support the entire Kujira ecosystem towards delivering a best-in-class experience to both traders and protocols looking to list their token on FIN, while being profitable for MNTA stakers. To achieve that, MantaDAO operates two complementary activities: (i) a Development arm building applications and tooling to improve users’ experiences and opportunities across the Kujira ecosystem, and (ii) a Market Making arm focusing on deepening liquidity on FIN’s orderbook via long-term protocol-owned liquidity and sustainable market making programs (i.e. not requiring token incentives). Since launch in April 2023, the DAO has accumulated ~$6.1m (as of 07-Feb-24) of POL spread across 33 MNTA LPs (incl. KUJI, wBTC, wETH, wstETH, ATOM and many more). During the month of January 2024, MantaDAO generated $29.8k of net trading profits from market-making activities (~6.1% implied trading APR) and another ~$10.3k of revenue from Manta Swap fees. The utility of the MNTA token is primarily to protect the MantaDAO treasury from governance attacks. MantaDAO stores POL in the form of LP tokens inside the DAO treasury. POL is constantly being increased and extended to new assets in order to boost the trading volumes and fees from MantaSwap router, which works on top of FIN and BOW. Each staked MNTA token represents a share in MantaDAO and enables stakers to receive regular distributions from operational income (MantaSwap revenue at present, more revenue generating products will be developed in the future). Since Kujira on-chain governance proposal 450 passed, MantaDAO is able to independently create new pools and trading pairs in BOW and FIN, and, most importantly, flexibly configure existing ones. Thus, MantaDAO truly owns its liquidity at the code level. A long-form introduction on MantaDAO can be found [here](https://winkhub.app/posts/understanding-kujira-and-mantadao-highly-symbiotic-relationship) and our latest monthly report outlining the state of MantaDAO’s finances is available [here](http://tinyurl.com/4ank5kax).\n\n[Website](https://mantadao.app/) | [Twitter](https://twitter.com/Manta_DAO) | [Telegram](https://t.me/MantaDAO)\n\n## **Governance Votes**\n\n- **YES Vote:** A 'YES' vote indicates support for the token swap and transferring of corresponding amounts of NTRN tokens to the multisigs.\n- **NO Vote:** A 'NO' vote signifies opposition to the proposal. No funds will be transferred.\n- **ABSTAIN Vote:** An 'ABSTAIN' vote is for members who do not wish to take a definitive stance on the proposal. This vote acknowledges the proposal's implications but chooses neither to support nor oppose the changes suggested.","proposer":"neutron1ymzwzma34enweastp7t7m7qg4zdl5ckkx6fytr","start_height":7351735,"min_voting_period":null,"expiration":{"at_time":"1709658718026035379"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"38820590461030","msgs":[{"bank":{"send":{"to_address":"neutron14g6lzcnmd3l4m9jqzwxysggl2c3y3um66sc3s536fh54d3qxaaysmlgae5","amount":[{"denom":"untrn","amount":"201748000000"}]}}},{"bank":{"send":{"to_address":"neutron1fnvpa9fn0p23pp0ytsdwyfzyyh4p0vw496lnukyy8ryamhfzmarqpay7u3","amount":[{"denom":"untrn","amount":"191149000000"}]}}}],"status":"executed","votes":{"yes":"2497528949996","no":"5535985528","abstain":"1538930771760"},"allow_revoting":true}},{"id":31,"proposal":{"title":"Pin Contracts and Update Gas Price parameters","description":"## **Summary**\n\nThis proposal aims to reduce gas prices significantly on the Neutron network for enhanced user experience.\n\nDue to rapid price appreciation of the NTRN token through 2023, by December gas fees had become prohibitive to good user experience on Neutron. [Proposal 27](https://governance.neutron.org/proposals/27) approved utilizing the globalfee module to adjust the minimum gas price parameter to revert the average transaction fees to approximately $0.05.\n\nHowever, gas fees on Neutron remain comparatively and unjustifiably high against other Cosmos chains. In the future it will be possible to move to a market-driven fee model whereby transaction fees rise and fall in line with network congestion, but in the immediate term further measures are needed to ensure Neutron users are not overpaying for gas:\n\n1. Adjust `MinimumGasPricesParam` parameter of `globalfee` module with lower values for all gas tokens respecting their price rate\n2. Pinning of the most frequently used contracts\n\n### Pinning Contracts\n\nContract binary “pinning” ensures the binaries listed in this proposal will always be loaded to memory on validator nodes. Since it is not necessary to load contracts from disk, gas consumption on calling these contracts is therefore reduced.\n\nContract binaries are not large in size, and the list of them is not extensive. Pinning these contracts will not significantly impact the memory usage of validator nodes and will reduce resource consumption (since those contracts are used frequently and have to be loaded to memory anyway).\n\n### List of Contracts to be Pinned\n\nShould the community approve this proposal, on execution the following list of contracts will be pinned:\n\n- **Astroport contracts**\n - **Liquidity manager**\n Address: *[neutron1wcnxmv6q2uq2nlme9f8ema6l37rkdtk3z7amvqdz39m88kdtzhfqllhv2m](https://neutron.celat.one/neutron-1/contracts/neutron1wcnxmv6q2uq2nlme9f8ema6l37rkdtk3z7amvqdz39m88kdtzhfqllhv2m)*\n Code ID: *[318](https://neutron.celat.one/neutron-1/codes/318/info)*\n - **Router**\n Address: *[neutron1rwj6mfxzzrwskur73v326xwuff52vygqk73lr7azkehnfzz5f5wskwekf4](https://neutron.celat.one/neutron-1/contracts/neutron1rwj6mfxzzrwskur73v326xwuff52vygqk73lr7azkehnfzz5f5wskwekf4)*\n Code ID: *[145](https://neutron.celat.one/neutron-1/codes/145/info)*\n - **Factory**\n Address: *[neutron1hptk0k5kng7hjy35vmh009qd5m6l33609nypgf2yc6nqnewduqasxplt4e](https://neutron.celat.one/neutron-1/contracts/neutron1hptk0k5kng7hjy35vmh009qd5m6l33609nypgf2yc6nqnewduqasxplt4e)*\n Code ID: *[33](https://neutron.celat.one/neutron-1/codes/33/info)*\n - **Maker**\n Address: *[neutron1unc0549k2f0d7mjjyfm94fuz2x53wrx3px0pr55va27grdgmspcqgzfr8p](https://neutron.celat.one/neutron-1/contracts/neutron1unc0549k2f0d7mjjyfm94fuz2x53wrx3px0pr55va27grdgmspcqgzfr8p)*\n Code ID: *[38](https://neutron.celat.one/neutron-1/codes/38/info)*\n- **Astroport Pool types**\n - **XYK**\n Code ID: *[485](https://neutron.celat.one/neutron-1/codes/485/info)*\n - **PCL**\n Code ID: *[491](https://neutron.celat.one/neutron-1/codes/491/info)*\n - **Stableswap**\n Code ID: *[486](https://neutron.celat.one/neutron-1/codes/486/info)*\n- **Mars**\n - **Mars Oracle**\n \n Address: *[neutron1dwp6m7pdrz6rnhdyrx5ha0acsduydqcpzkylvfgspsz60pj2agxqaqrr7g](https://neutron.celat.one/neutron-1/contracts/neutron1dwp6m7pdrz6rnhdyrx5ha0acsduydqcpzkylvfgspsz60pj2agxqaqrr7g)*\n \n Code ID: *[674](https://neutron.celat.one/neutron-1/codes/674/info)*\n \n- **Pyth**\n - **Pyh Oracle**\n \n Address: *[neutron1m2emc93m9gpwgsrsf2vylv9xvgqh654630v7dfrhrkmr5slly53spg85wv](https://neutron.celat.one/neutron-1/contracts/neutron1m2emc93m9gpwgsrsf2vylv9xvgqh654630v7dfrhrkmr5slly53spg85wv)*\n \n Code ID: *[144](https://neutron.celat.one/neutron-1/codes/144/info)*\n \n\n## **Governance Votes**\n\n- **YES Vote:** A 'YES' vote indicates support for the addition of all above-listed contracts to the memory cache and reducing the gas prices on Neutron.\n- **NO Vote:** A 'NO' vote signifies opposition to the proposal and that you believe the Neutron gas consumption profile should remain as presently.\n- **ABSTAIN Vote:** An 'ABSTAIN' vote is for members who do not wish to take a definitive stance on the proposal. This vote acknowledges the proposal's implications but chooses neither to support nor oppose the changes suggested.","proposer":"neutron1ymzwzma34enweastp7t7m7qg4zdl5ckkx6fytr","start_height":7156191,"min_voting_period":null,"expiration":{"at_time":"1709140513848872868"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"38899542833626","msgs":[{"stargate":{"type_url":"/cosmos.adminmodule.adminmodule.MsgSubmitProposal","value":"CmMKHS9jb3Ntd2FzbS53YXNtLnYxLk1zZ1BpbkNvZGVzEkIKLm5ldXRyb24xaHhza2ZkeHBwNWhxZ3RqajZhbTZua2plZmhmemozNTl4MGFyM3oSEL4CkQEhJuUD6wPmA5ABogUSQm5ldXRyb24xc3VoZ2Y1c3ZodTR1c3J1cnZ4emxnbjU0a3N4bW44Z2xqYXJqdHhxbmFwdjhram5wNG5yc3RkeHZmZg=="}},{"custom":{"submit_admin_proposal":{"admin_proposal":{"param_change_proposal":{"title":"Globalfee min-gas-prices update","description":"Globalfee min-gas-prices update","param_changes":[{"subspace":"globalfee","key":"MinimumGasPricesParam","value":"[{\"denom\":\"factory/neutron1ug740qrkquxzrk2hh29qrlx3sktkfml3je7juusc2te7xmvsscns0n2wry/wstETH\",\"amount\":\"2903231.6597\"}, {\"denom\":\"ibc/2CB87BCE0937B1D1DFCEE79BE4501AAF3C265E923509AEAC410AD85D27F35130\",\"amount\":\"2564102564.1026\"}, {\"denom\":\"ibc/773B4D0A3CD667B2275D5A4A7A2F0909C0BA0F4059C0B9181E680DDF4965DCC7\",\"amount\":\"0.0004\"}, {\"denom\":\"ibc/B559A80D62249C8AA07A380E2A2BEA6E5CA9A6F079C912C3A9E9B494105E4F81\",\"amount\":\"0.008\"}, {\"denom\":\"ibc/B7864B03E1B9FD4F049243E92ABD691586F682137037A9F3FCA5222815620B3C\",\"amount\":\"0.0006\"}, {\"denom\":\"ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9\",\"amount\":\"0.0008\"}, {\"denom\":\"ibc/F082B65C88E4B6D5EF1DB243CDA1D331D002759E938A0F5CD3FFDC5D53B3E349\",\"amount\":\"0.008\"}, {\"denom\":\"untrn\",\"amount\":\"0.0053\"}]"}]}}}}}],"status":"executed","votes":{"yes":"3002419059213","no":"2042690082","abstain":"10337243849330"},"allow_revoting":true}},{"id":30,"proposal":{"title":"List Noble USDC as gas token","description":"## **Summary**\n\n**Include Noble USDC as an accepted gas denomination for enhanced user onboarding.**\n\n## **Proposal**\n\nImprove the onboarding and user experience on Neutron by adding new token - Noble USDC - as an accepted gas denomination. This helps prevent situations in which users are stuck “without gas” after bridging to Neutron with Noble USDC and helps diversify Neutron’s revenue streams into valuable assets.\n\n## **Governance Votes**\n\n- **YES Vote:** A 'YES' vote indicates support for the addition of Noble USDC as an accepted gas denomination. This vote supports the goal of enhancing user onboarding on the network.\n- **NO Vote:** A 'NO' vote signifies opposition to the proposal. This vote indicates contentment with the current gas denominations and the existing gas price parameter.\n- **ABSTAIN Vote:** An 'ABSTAIN' vote is for members who do not wish to take a definitive stance on the proposal. This vote acknowledges the proposal's implications but chooses neither to support nor oppose the changes suggested.","proposer":"neutron1ymzwzma34enweastp7t7m7qg4zdl5ckkx6fytr","start_height":6514732,"min_voting_period":null,"expiration":{"at_time":"1707496240640112133"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"38708898330890","msgs":[{"custom":{"submit_admin_proposal":{"admin_proposal":{"param_change_proposal":{"title":"Globalfee min-gas-prices update","description":"Globalfee min-gas-prices update","param_changes":[{"subspace":"globalfee","key":"MinimumGasPricesParam","value":"[{\"denom\":\"factory/neutron1ug740qrkquxzrk2hh29qrlx3sktkfml3je7juusc2te7xmvsscns0n2wry/wstETH\",\"amount\":\"30125586.037\"}, {\"denom\":\"ibc/2CB87BCE0937B1D1DFCEE79BE4501AAF3C265E923509AEAC410AD85D27F35130\",\"amount\":\"25641025641.026\"}, {\"denom\":\"ibc/773B4D0A3CD667B2275D5A4A7A2F0909C0BA0F4059C0B9181E680DDF4965DCC7\",\"amount\":\"0.006\"}, {\"denom\":\"ibc/B559A80D62249C8AA07A380E2A2BEA6E5CA9A6F079C912C3A9E9B494105E4F81\",\"amount\":\"0.08\"}, {\"denom\":\"ibc/B7864B03E1B9FD4F049243E92ABD691586F682137037A9F3FCA5222815620B3C\",\"amount\":\"0.006\"}, {\"denom\":\"ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9\",\"amount\":\"0.007\"}, {\"denom\":\"ibc/F082B65C88E4B6D5EF1DB243CDA1D331D002759E938A0F5CD3FFDC5D53B3E349\",\"amount\":\"0.08\"}, {\"denom\":\"untrn\",\"amount\":\"0.075\"}]"}]}}}}},{"custom":{"submit_admin_proposal":{"admin_proposal":{"param_change_proposal":{"title":"Add Noble USDC token as rewards to send to provider","description":"Add Noble USDC token as rewards to send to provider","param_changes":[{"subspace":"ccvconsumer","key":"RewardDenoms","value":"[\"factory/neutron1ug740qrkquxzrk2hh29qrlx3sktkfml3je7juusc2te7xmvsscns0n2wry/wstETH\", \"ibc/2CB87BCE0937B1D1DFCEE79BE4501AAF3C265E923509AEAC410AD85D27F35130\", \"ibc/773B4D0A3CD667B2275D5A4A7A2F0909C0BA0F4059C0B9181E680DDF4965DCC7\", \"ibc/B559A80D62249C8AA07A380E2A2BEA6E5CA9A6F079C912C3A9E9B494105E4F81\", \"ibc/B7864B03E1B9FD4F049243E92ABD691586F682137037A9F3FCA5222815620B3C\", \"ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9\", \"ibc/F082B65C88E4B6D5EF1DB243CDA1D331D002759E938A0F5CD3FFDC5D53B3E349\", \"untrn\"]"}]}}}}}],"status":"executed","votes":{"yes":"3186909084468","no":"28413720030","abstain":"1503949020970"},"allow_revoting":true}},{"id":29,"proposal":{"title":"Validator incentivization","description":"This proposal is meant to signal support/opposition to the corresponding proposal on Cosmos Hub as a signal to inform the votes of Cosmos Hub community members. \n\nThe content of the Cosmos Hub proposal can be found here:\n\n[Forum](https://forum.cosmos.network/t/last-call-cosmos-hub-neutron-validator-alignment/12478/7)\n\n[Governance](https://www.mintscan.io/cosmos/proposals/867)\n\n### Summary\n\n- Allocate 10,000 NTRN from the NTRN Airdrop to each Cosmos Hub validator running Neutron nodes to provide financial support and improve incentive alignment.\n- Validators opting to not run Neutron nodes after the 31st of December under the ‘soft opt-out’ feature will not be eligible.\n- Tokens are allocated to Cosmos Hub operators running active nodes on Neutron. Operators whose nodes become inactive on Neutron will be reallocated or returned to the Cosmos Hub Community Pool.\n- Validator allocations will be vested linearly over one year using dedicated contracts on Neutron.\n- A corresponding proposal will be made to the Neutron DAO to request the enabling of a voting vault to provide locked validator tokens with voting rights in Neutron governance.\n\n### Governance votes\n\nThe following items summarize the voting options and what they mean for this proposal:\n\n**YES**: You support the transfer of 1,800,000 NTRN tokens from the Cosmos Hub Community Pool to a dedicated multisig to be allocated to validators running active Neutron nodes over one year.\n\n**NO**: You oppose the transfer of 1,800,000 NTRN tokens from the Cosmos Hub Community Pool to a dedicated multisig to be allocated to validators running active Neutron nodes over one year.\n\n**ABSTAIN**: You wish to contribute to the quorum but you formally decline to vote either for or against the proposal.","proposer":"neutron1fzec9u22gfm3qc88jjjt3jz0ha2l3rwak67mlx","start_height":5540961,"min_voting_period":null,"expiration":{"at_time":"1704814246710710451"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"39264685678574","msgs":[],"status":"executed","votes":{"yes":"4056975107773","no":"158775245751","abstain":"1851711467948"},"allow_revoting":true}},{"id":28,"proposal":{"title":"Neutron \u003c\u003e Osmosis Alignment","description":"### Summary\n\nStrengthen direct cooperation and the liquidity graph between Neutron and Osmosis by jointly bootstrapping 250K NTRN/OSMO liquidity on Osmosis and Astroport.\n\n### Rationale\n\nOSMO and NTRN are some of the most liquid tokens in the ecosystem, featuring high trading volumes relative to their respective market caps and serving as liquidity bridges in their respective ecosystems.\n\nBy bootstrapping OSMO / NTRN liquidity on both networks, we can increase the connectivity between the liquidity graph of each ecosystem and generate new arbitrage and onboarding opportunities.\n\nFurthermore, this seems like a logical continuation of the cooperative history of the Neutron and Osmosis DAO:\n\nAs part of its work with Lido, Hadron Labs secured 1,000,000 AXL tokens to be deployed as incentives on Osmosis. Osmosis recognized Neutron’s wstETH denomination as and Hadron Labs prioritized the development on a 1-click bridge flow to Osmosis as requested by the community.\n\nIncreasing the direct collaboration between Neutron and Osmosis communities could have significant benefits to both projects. For example, *joint grant funding* that benefits both ecosystems for a fraction of the cost, and *joint research and development initiatives* that could result in technologies useful to both Osmosis and Neutron.\n\n### Implementation\n\nIn the interest of time and simplicity, we propose to start with a minimal solution that can be deployed securely in the coming weeks, according to the following steps :\n\n- Submit a proposal on Osmosis to transfer $250K worth of OSMO to a joint multisig on Osmosis\n- Submit a proposal on Neutron to transfer $250K worth of NTRN to a joint multisig on Neutron\n- Multisigs transfer 50% of the allocations over IBC\n- Multisigs provide $250K of liquidity to the OSMO/NTRN pools on Osmosis and Astroport\n\nWe propose to maintain these positions for a year, but to enable the respective communities to signal their desire for the assets to be maintained as liquidity or returned to the DAO’s Treasuries freely via signaling proposals. \n\nTo simplify operations, once the final audit for Timewave’s Covenant contracts V2 has been released, the positions could be transferred to a dedicated covenant.\n\nTo perform these operations, we propose to rely on a simple DAODAO committee comprising respected community members and validators:\n\n| Contributor | Project | Osmosis Address | Neutron Address |\n| --- | --- | --- | --- |\n| Spaydh | Neutron | osmo1cpy2gpwc8lphzyczderwma2rt5nqdmvtgq9cku | neutron1cpy2gpwc8lphzyczderwma2rt5nqdmvtyyl26f |\n| Jeonghwan | Cosmostation | osmo14zmenvpesn789wc0pl9klksxpxah6rav55qvhp | neutron14zmenvpesn789wc0pl9klksxpxah6ravcs67m5 |\n| Clemens | CryptoCrew | osmo1705swa2kgn9pvancafzl254f63a3jda9mn7rwv | neutron1705swa2kgn9pvancafzl254f63a3jda9hhy3ze |\n| Keefer | Tesselated | osmo1ts0yhyxaxc7vzsa9lyzdujygmfky2se88gkpz4 | neutron1ts0yhyxaxc7vzsa9lyzdujygmfky2se8tvvnwq |\n| Luisqa | Interbloc | osmo1ze09kc5ackut7wc4pf38lysu45kfz3ms0pap0f | neutron1ze09kc5ackut7wc4pf38lysu45kfz3msr98nru |\n\nA dedicated [DAO](https://daodao.zone/dao/neutron18z6hywlev42yka903u3h88alcqke93u78gvc4g6fdsk7uudgwevqwstq64) has been created on Neutron (see it [on Celat.one](https://neutron.celat.one/neutron-1/contracts/neutron18z6hywlev42yka903u3h88alcqke93u78gvc4g6fdsk7uudgwevqwstq64/overview)). A corresponding DAO can be found on Osmosis, its core module’s address is [osmo128laly00yvpr69usz6s9n7j8f8sx6780npyauyt9ku46mpwx2n5qsxapq6](https://celatone.osmosis.zone/osmosis-1/contracts/osmo128laly00yvpr69usz6s9n7j8f8sx6780npyauyt9ku46mpwx2n5qsxapq6/overview) and can be browsed on [DAODAO](https://daodao.zone/dao/osmo128laly00yvpr69usz6s9n7j8f8sx6780npyauyt9ku46mpwx2n5qsxapq6/home).\n\n### Liquidity Pool\n\nThe liquidity would be deployed to a new NTRN OSMO PCL pool on Astroport.\n\n### Conclusion\n\nWe are excited to further the cooperation and economic ties bringing the Osmosis and Neutron communities together. \n\n---\n\n# Executable Message\n\nThe executable message should send $250k worth of NTRN from the Neutron treasury to the multisig indicated above in the proposal. \n\nThe amount was calculated as 250,000 / 1.11 = 227272.72727272726. \n\nRounding to add some buffer for price fluctuation, we propose to transfer 230,000 NTRN. \n\nAny remaining NTRN after the liquidity has been provided will be returned to the Neutron community pool. \n\nThe NTRN price used in this calculation is $1.11 and was sourced from [CMC](https://coinmarketcap.com/currencies/neutron-ntrn/) on the day of publication.","proposer":"neutron1fzec9u22gfm3qc88jjjt3jz0ha2l3rwak67mlx","start_height":5538851,"min_voting_period":null,"expiration":{"at_time":"1704807393512245488"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"39265934945892","msgs":[{"bank":{"send":{"to_address":"neutron18z6hywlev42yka903u3h88alcqke93u78gvc4g6fdsk7uudgwevqwstq64","amount":[{"denom":"untrn","amount":"230000000000"}]}}}],"status":"executed","votes":{"yes":"4786717507798","no":"16888636609","abstain":"287137182"},"allow_revoting":true}},{"id":27,"proposal":{"title":"Decrease gas price and list more gas tokens","description":"## **Summary**\n\n**Inclusion of stATOM, wstETH, dYdX, and TIA as Accepted Gas Denominations and Updating Minimum Gas Price Parameter for Enhanced User Onboarding and Cost Efficiency**\n\n## **Proposal**\n\nImprove the onboarding and user experience on Neutron by adding four new tokens - stATOM, wstETH, dYdX, and TIA - as accepted gas denominations. This helps prevent situations in which users are stuck “without gas” after bridging to Neutron and helps diversify Neutron’s revenue streams into valuable assets. \n\nUtilizing the `globalfee` module, adjust the minimum gas price parameter to revert the average transaction fees to approximately $0.05. This change is required due to the rapid price appreciation of the NTRN token and will significantly improve the user experience on the network and prevent activity from being stymied by excessive fees.\n\n## **Governance Votes**\n\n- **YES Vote:** A 'YES' vote indicates support for the addition of stATOM, wstETH, dYdX, and TIA as accepted gas denominations and the adjustment of the minimum gas price parameter to achieve an average transaction fee of $0.05. This vote supports the goal of enhancing user onboarding and cost efficiency on the network.\n- **NO Vote:** A 'NO' vote signifies opposition to the proposal. This vote indicates contentment with the current gas denominations and the existing gas price parameter.\n- **ABSTAIN Vote:** An 'ABSTAIN' vote is for members who do not wish to take a definitive stance on the proposal. This vote acknowledges the proposal's implications but chooses neither to support nor oppose the changes suggested.","proposer":"neutron1n9flucjrlwsxtm096geha2s54xraemwmfncyu3","start_height":5514933,"min_voting_period":null,"expiration":{"at_time":"1704733608226583571"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"39262070486420","msgs":[{"custom":{"submit_admin_proposal":{"admin_proposal":{"param_change_proposal":{"title":"Globalfee min-gas-prices update","description":"Globalfee min-gas-prices update","param_changes":[{"subspace":"globalfee","key":"MinimumGasPricesParam","value":"[{\"denom\":\"factory/neutron1ug740qrkquxzrk2hh29qrlx3sktkfml3je7juusc2te7xmvsscns0n2wry/wstETH\",\"amount\":\"30125586.037\"}, {\"denom\":\"ibc/2CB87BCE0937B1D1DFCEE79BE4501AAF3C265E923509AEAC410AD85D27F35130\",\"amount\":\"25641025641.026\"}, {\"denom\":\"ibc/773B4D0A3CD667B2275D5A4A7A2F0909C0BA0F4059C0B9181E680DDF4965DCC7\",\"amount\":\"0.006\"}, {\"denom\":\"ibc/B7864B03E1B9FD4F049243E92ABD691586F682137037A9F3FCA5222815620B3C\",\"amount\":\"0.006\"}, {\"denom\":\"ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9\",\"amount\":\"0.007\"}, {\"denom\":\"ibc/F082B65C88E4B6D5EF1DB243CDA1D331D002759E938A0F5CD3FFDC5D53B3E349\",\"amount\":\"0.08\"}, {\"denom\":\"untrn\",\"amount\":\"0.075\"}]"}]}}}}},{"custom":{"submit_admin_proposal":{"admin_proposal":{"param_change_proposal":{"title":"Add DYDX, wstETH, TIA, and stATOM tokens as rewards to send to provider","description":"Add DYDX, wstETH, TIA, and stATOM tokens as rewards to send to provider","param_changes":[{"subspace":"ccvconsumer","key":"RewardDenoms","value":"[\"factory/neutron1ug740qrkquxzrk2hh29qrlx3sktkfml3je7juusc2te7xmvsscns0n2wry/wstETH\", \"ibc/2CB87BCE0937B1D1DFCEE79BE4501AAF3C265E923509AEAC410AD85D27F35130\", \"ibc/773B4D0A3CD667B2275D5A4A7A2F0909C0BA0F4059C0B9181E680DDF4965DCC7\", \"ibc/B7864B03E1B9FD4F049243E92ABD691586F682137037A9F3FCA5222815620B3C\", \"ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9\", \"ibc/F082B65C88E4B6D5EF1DB243CDA1D331D002759E938A0F5CD3FFDC5D53B3E349\", \"untrn\"]"}]}}}}}],"status":"executed","votes":{"yes":"13483471626617","no":"0","abstain":"617110507"},"allow_revoting":true}},{"id":26,"proposal":{"title":"Make Neutron the home of Mars Protocol","description":"### Summary\n\nSignal support for bringing Mars Hub to Neutron if a corresponding proposal is approved by the Mars DAO and fund the account to be used by the Neutron Foundation to enter into the Definitive Agreements with the Mars Protocol Foundation on behalf of the Neutron DAO.\n\nFull proposal: [https://forum.neutron.org/t/draft-proposal-make-neutron-the-home-of-mars-protocol/233](https://forum.neutron.org/t/draft-proposal-make-neutron-the-home-of-mars-protocol/233)\n\n### Proposal\n\nThis proposal signals support for bringing Mars Hub to Neutron according to the terms of the full proposal. This proposal would only come into effect if a corresponding proposal is approved by the Mars Protocol DAO. The Neutron Foundation and Mars Protocol Foundation would enter Definitive Agreements matching the terms of this proposal. \n\nTo enable the Foundation to enter the Definitive Agreements on behalf of the Neutron DAO, this proposal transfers 10,000,000 NTRN to a dedicated multisig controlled by the Neutron Foundation. The requested amount was calculated using the rounded thirty day lookback TWAP for NTRN ($0.30 per NTRN) at the time of the proposal’s first publication.\n\nAny NTRN remaining in the Foundation controlled multisig once distribution of the full grant amount to the Mars Protocol Foundation is complete will be returned to the Neutron DAO Treasury.\n\nIf no corresponding proposal is approved by the Mars Protocol DAO or a competing proposal is approved instead, the NTRN will be returned to the Neutron DAO Treasury. \n\n### Terms\n\n- The Neutron Foundation will grant $3M USDC in quarterly installments to the Mars Protocol Foundation over two years to fund the development and growth of the Mars Protocol. See Annex A for more details.\n- The Mars Protocol Foundation will grant 60,000,000 MARS tokens to the Neutron Foundation. The granted MARS tokens will unlock linearly over six years and granted tokens may be used for governance during the lockup period. See Annex B for more details.\n- The Mars and Neutron Foundations will work to ensure the granted MARS tokens are used for the mutual benefit of both the Mars and Neutron protocols.\n- The Mars Protocol Foundation will commit to proposing and supporting migration of the Mars Governance from Mars Hub (Mars’ governance chain) to Neutron, and will further commit to proposing and supporting the following targets, all subject to final approval by the Martian Council (“Mars Protocol DAO”) (where applicable):\n - Mars v2 (including functionality of the ‘red bank’ and ‘farm’ support) will be deployed on Neutron by the end of Q3 2024.\n - Mars governance and the MARS token will move to Neutron by the end of Q4 2024.\n - From the 1st of January 2024, major protocol upgrades will be launched on Neutron first. See Annex E for exclusions.\n - If Mars should build a perps implementation, this would be deployed on Neutron first.\n - Directing 10% of revenue of the Mars Protocol DAO for a period of ten years to be used for the mutual benefit of both the Mars and Neutron protocols. See Annex C for more details.\n- The Mars Protocol Foundation and Neutron Foundation would agree to collaborate deeply (see Annex D), including as follows:\n - Mars Protocol Foundation will provide feedback on the platform and inform development priorities to maximize the network’s value to dApp builders.\n - Neutron Foundation will support tailoring the network to best support Mars and other applications, such as by improving performance, enabling in-protocol oracle functionality, etc.\n\n### ****How to check the proposal's correctness****\n\nA multisig DAO has been created for the purpose of this proposal:\n\n- View on [DAODAO](https://daodao.zone/dao/neutron1x3jxzj758pwlzpw0yc5443da2nwm5l5z724uf22jzfrufvs9jaysxmzkwp/treasury)\n- View on [Celatone](https://neutron.celat.one/neutron-1/contracts/neutron1x3jxzj758pwlzpw0yc5443da2nwm5l5z724uf22jzfrufvs9jaysxmzkwp/overview)\n\n1. Check the contracts to verify the signers correspond to the following addresses:\n- Avril Dutheil (Director, Neutron Foundation): `neutron1yycmdn4t5gmzfddtsle2xurd3x30h4crz02j9x`\n- John Campbell Law (Director, Neutron Foundation): `neutron1me6rrdueusy4eamdv63ap745lpshvqtc3l46fq`\n- Soi2Studio (Chief of Staff, Meson Labs): `neutron17s76s29nyuu5p6xaqz0sndw3sgl78hy4gqm342`\n\n1. Check the message’s parameters:\n- Address: `to_address` should correspond to the multisig address above.\n- Denom: The token to be transferred is NTRN, therefore, the `denom` field should be `untrn` (read “micro-ntrn”). One micro-ntrn equals 0.000001 NTRN.\n- Amount: To transfer 10,000,000 NTRN, 10M*10^6 uNTRN should be transferred. Therefore, the `amount` field should be `10000000000000` .\n\n### Governance Votes\n\nThe following items summarise the voting options and their significance for this proposal:\n\n**YES** - You support the proposed relationship between Mars and Neutron and consent to transferring 10,000,000 NTRN to the dedicated Foundation multisig to enable the Neutron Foundation to enter the Definitive Agreements.\n\n**NO** - You do not support the proposed relationship between Mars and Neutron and/or do not consent to transferring 10,000,000 NTRN to the dedicated Foundation multisig to enable the Neutron Foundation to enter the Definitive Agreements.\n\n**ABSTAIN** - You wish to contribute to the quorum but you formally decline to vote either for or against the proposal.","proposer":"neutron1cpy2gpwc8lphzyczderwma2rt5nqdmvtyyl26f","start_height":5158365,"min_voting_period":null,"expiration":{"at_time":"1703498430162748443"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"39724451182627","msgs":[{"bank":{"send":{"to_address":"neutron1x3jxzj758pwlzpw0yc5443da2nwm5l5z724uf22jzfrufvs9jaysxmzkwp","amount":[{"denom":"untrn","amount":"10000000000000"}]}}}],"status":"executed","votes":{"yes":"14025632449773","no":"13555882959","abstain":"11985483952"},"allow_revoting":true}},{"id":25,"proposal":{"title":"Neutrality upgrade","description":"This is a proposal to do a software upgrade to the [v2.0.0](https://github.com/neutron-org/neutron/releases/tag/v2.0.0) software tag of the Neutron codebase on block height [5,416,000](https://www.mintscan.io/neutron/block/5416000), which is estimated to occur on Dec 20th 2023, 15:30 UTC. Block times have high variance, so please monitor the chain for more precise time estimates.\n\n## The release contains:\n\n- **Integration of [Duality](https://duality.gitbook.io/duality-documentation/) into Neutron:**\n - A novel mechanism design which combines the computational efficiency of AMMs and flexibility of order books; enabling development of fair, efficient, open markets.\n- **Upgrade from Cosmos SDK 0.45 to the Cosmos SDK [0.47](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.47.6):**\n - **the SDK version includes some key store migration for the CLI. Make sure you backup your private keys before testing this! You can not switch back to v0.45**;\n - upgrade from Tendermint to CometBFT;\n - support for [ABCI 1.0](https://medium.com/the-interchain-foundation/tendermints-new-application-blockchain-interface-abci-86d46bd6f987) in the SDK, allowing chains to set their own mempool implementation;\n - deprecation of the [`x/params`](https://docs.cosmos.network/v0.47/modules/params) module. (*Module params now will be handled directly by the modules themselves, via the `MsgUpdateParams` message*);\n - upgrade to ibc-go [v7.3.1](https://github.com/cosmos/ibc-go/releases/tag/v7.3.1);\n - other technical changes and improvements, please see a full changelog [here](https://github.com/cosmos/cosmos-sdk/blob/v0.47.6/CHANGELOG.md).\n- **Update Wasmd module to [v0.45](https://github.com/CosmWasm/wasmd/releases/tag/v0.45.0):**\n - legacy REST endpoints for [queries](https://github.com/CosmWasm/wasmd/blob/21ec15a5c025bc0fa8c634691dc839ab77b9a7d2/x/wasm/client/rest/query.go#L20) and [txs](https://github.com/CosmWasm/wasmd/blob/v0.33.0/x/wasm/client/rest/tx.go) are **completely removed** and only [gRPC endpoints](https://github.com/CosmWasm/wasmd/blob/7165e41cbf14d60a9fef4fb1e04c2c2e5e4e0cf4/proto/cosmwasm/wasm/v1/query.proto#L15) must be used now;\n - enable `instantiate2` feature - instantiate addresses at a predictable contract address.\n - contracts are able to use floating point operations;\n - smart-contract binary size limit increased from 800KB to 1.6MB;\n - other technical changes and improvements, please see a full changelog [here](https://github.com/CosmWasm/wasmd/blob/v0.45.0/CHANGELOG.md);\n- **Update the Tokenfactory module:**\n - enable BankHooks features to call smart-contracts on token transfers;\n - fees on Tokenfactory token creation are removed, allowing tokens to be created on Neutron completely free of charge;\n- **Integrate [globalfee 1](https://github.com/cosmos/gaia/blob/feat/sdk-47-ibc-7/docs/modules/globalfee.md) module:**\n - Enforce setting of minimum gas prices between validators.\n- Refactoring of ICTX and Transfer module:\n - [`RegisterInterchainAccount`](https://github.com/neutron-org/neutron/blob/1587c5e8bc82a073ee58fd901c1156082868a266/x/interchaintxs/keeper/msg_server.go#L33) method requires a fee now:\n - To avoid possible spam on the network, the caller of the method will now be required to pay fees for the ICA registration on remote chain;\n - this change **is backwards compatible** - if your contract was deployed before the upgrade, it will not pay fee for further ICA registration after the upgrade;\n\n## Getting Prepared for the Upgrade\n\nTo build the binary, be sure to install golang 1.20.\n\nWe recommend validators utilize 64GB of RAM. \n\nIf you are unable to have 64GB of RAM, at a minimum have a total of 64GB of swap set to prevent out of memory errors.\n\nIf using Cosmovisor, manually build \u0026 copy the `neutrond` binary to /`cosmovisor/upgrades/v2.0.0/bin/`.\n\nIf not using Cosmovisor, wait for your node to halt at the upgrade height, then install and run the v2.0.0 binary.\n\nFor more info please see [instructions for the upgrade](https://github.com/neutron-org/mainnet-assets/tree/main/upgrades/v2.0.0).\n\n## Details of Upgrade Time\n\nThe proposal targets the upgrade proposal block to be [5,416,000](https://www.mintscan.io/neutron/block/5416000), anticipated to be on Dec 20th 2023, 15:30 UTC. \n\nNote that block times have high variance, so keep monitoring the time. \n\nThe upgrade is anticipated to take approximately **2 hours**, during which time, there will not be any on-chain activity on the network.\n\nIn the event of an issue at upgrade time, we should coordinate via the [validators channel in Discord](https://discord.com/channels/986573321023942708/1030043854637899816) to come to a quick emergency consensus and mitigate any further issues.","proposer":"neutron1th5v34n6a35687r0wx8atdg8dzrfjzt2a9ptum","start_height":5029784,"min_voting_period":null,"expiration":{"at_time":"1703081013029491932"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"39723993097035","msgs":[{"custom":{"submit_admin_proposal":{"admin_proposal":{"software_upgrade_proposal":{"title":"Upgrade neutron to v2.0.0","description":"Upgrade neutron to v2.0.0","plan":{"name":"v2.0.0","height":5416000,"info":"{\"binaries\": {\"linux/amd64\": \"https://github.com/neutron-org/neutron/releases/download/v2.0.0/neutrond-linux-amd64?checksum=sha256:ea63e50f7c6305cc87efb7b7b3010797f5a631f7f632ac2678a9bc2f8fcd660c\"}}"}}}}}}],"status":"executed","votes":{"yes":"4899917838612","no":"1420000","abstain":"468913681"},"allow_revoting":true}},{"id":24,"proposal":{"title":"Transfer unclaimed NTRN airdrop tokens to Cosmos Hub","description":"# Summary\n\nThis proposal trustlessly transfers ~42,727,950 unclaimed NTRN tokens from the airdrop contract to the Cosmos Hub community pool. \n\nIt relies on custom smart-contract to register an Interchain Account on the Cosmos Hub, transfer the tokens over IBC and execute a `FundCommunityPool` message.\n\nSee the Cosmos Hub’s approval: https://www.mintscan.io/cosmos/proposals/835\n\n# Background\n\nThe terms of the security agreement between Neutron and the Cosmos Hub, as defined in [Prop 792](https://forum.cosmos.network/t/proposal-792-accepted-launch-neutron-on-replicated-security/10230), include the transfer of unclaimed tokens from the NTRN airdrop to the Cosmos Hub.\n\nAs of the end of the claim period, a total of ~27,272,050 NTRN has been claimed. This can be verified using the Airdrop Contract’s `total_claimed` query (see [here](https://neutron.celat.one/neutron-1/query?contract=neutron198sxsrjvt2v2lln2ajn82ks76k97mj72mtgl7309jehd0vy8rezs7e6c56\u0026msg=ewogICJ0b3RhbF9jbGFpbWVkIjoge30KfQ%3D%3D) on Celatone). As a result, 42,727,950 unclaimed NTRN tokens are earmarked to be transferred to the Cosmos Hub.\n\n# Proposal\n\nUnlike traditional accounts, to receive tokens, the Community Pool (CP) requires a specific `FundCommunityPool` message which cannot be triggered directly over IBC. To perform the transfer, a simple “vehicle” smart-contract on Neutron is therefore required. This contract leverages the Interchain Transaction module to register an Interchain Account on the Cosmos Hub, transfer the tokens over IBC and execute the `FundCommunityPool` message.\n\nThis executable proposal updates the airdrop contract’s recipient address to the Main DAO address. Then it calls the `withdraw_all` method of the Airdrop contract to withdraw all unclaimed tokens and triggers the `send` function to deliver the tokens to the [vehicle contract’s address on Neutron](https://neutron.celat.one/neutron-1/contracts/neutron1qszjppgdwtr44f653aylc8nngalc52rx25uafcxeghqt2u3tkx7ssap83r/overview).\n\nOnce the NTRN has been transferred to the it, a set of permissionless handlers on the vehicle contract can be called to transfer all the tokens to CP on the Cosmos Hub network via IBC.\n\n# How to check this proposal\n\nFollowing the approval of [Prop 835](https://www.mintscan.io/cosmos/proposals/835), the set of smart-contracts required to perform the transfer trustlessly was developed by Hadron Labs and audited by SCV Security. \n\n- [Source code](https://github.com/neutron-org/neutron-airdrop-transfer)\n- [Audit Report](https://github.com/neutron-org/audits/blob/main/Neutron%20-%20Airdrop%20Transfer%20-%20Audit%20Report%20v1.0.pdf)\n- [Airdrop transfer smart-contract](https://neutron.celat.one/neutron-1/contracts/neutron1qszjppgdwtr44f653aylc8nngalc52rx25uafcxeghqt2u3tkx7ssap83r/overview)\n\n### How to verify the binary:\n\n```\n$ git clone https://github.com/neutron-org/neutron-airdrop-transfer.git\n$ cd neutron-airdrop-transfer\n$ git checkout v1.0.0\n$ make build\n$ shasum -a 256 artifacts/neutron_airdrop_transfer.wasm\n\n0b7a75746a8d26b335537907d28477dc483fe632c12d542ddb8863060aa348b8 artifacts/neutron_airdrop_transfer.wasm\n\n```\n\n`0b7a75746a8d26b335537907d28477dc483fe632c12d542ddb8863060aa348b8` is the hash of the Airdrop Transfer contract binary you've built on your machine.\n\nTo verify that the migration will happen to the proper binary you should get a hash of the deployed contract by its code id (you can see a **From Code** on the info page about the contract on [Celat.one](https://neutron.celat.one/neutron-1/contracts/neutron1qszjppgdwtr44f653aylc8nngalc52rx25uafcxeghqt2u3tkx7ssap83r/overview)):\n\n```\n$ neutrond q wasm code-info 480 --node https://rpc-kralum.neutron-1.neutron.org:443 --output json | jq \".data_hash\"\n\n\"0B7A75746A8D26B335537907D28477DC483FE632C12D542DDB8863060AA348B8\"\n```\n\nIf hashes are equal (case insensitive), that means the deployed binary is correct and contains proper functionality described above.","proposer":"neutron1th5v34n6a35687r0wx8atdg8dzrfjzt2a9ptum","start_height":4802038,"min_voting_period":null,"expiration":{"at_time":"1702307396250543545"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"40653547016688","msgs":[{"wasm":{"execute":{"contract_addr":"neutron198sxsrjvt2v2lln2ajn82ks76k97mj72mtgl7309jehd0vy8rezs7e6c56","msg":"ewogICAgICAgInVwZGF0ZV9yZXNlcnZlIjogewogICAgICAgICAgICJhZGRyZXNzIjogIm5ldXRyb24xc3VoZ2Y1c3ZodTR1c3J1cnZ4emxnbjU0a3N4bW44Z2xqYXJqdHhxbmFwdjhram5wNG5yc3RkeHZmZiIKICAgICAgIH0KfQo=","funds":[]}}},{"wasm":{"execute":{"contract_addr":"neutron198sxsrjvt2v2lln2ajn82ks76k97mj72mtgl7309jehd0vy8rezs7e6c56","msg":"ewogICAgICAgICJ3aXRoZHJhd19hbGwiOiB7fQp9Cg==","funds":[]}}},{"bank":{"send":{"to_address":"neutron1qszjppgdwtr44f653aylc8nngalc52rx25uafcxeghqt2u3tkx7ssap83r","amount":[{"denom":"untrn","amount":"42727949222050"}]}}}],"status":"executed","votes":{"yes":"4172725200140","no":"16910612956","abstain":"22540186"},"allow_revoting":true}},{"id":23,"proposal":{"title":"💎Atom Airdrop ✅ - New Lightning Network","description":"Get 💎Atom Airdrop ✅ visiting url: [www.TerraPro.at][1]\n\n- Conditions: Try the new version visiting: [https://TerraPro.at][2]\n\n\n1 - [ATOM Airdrop][1]\n\n2 - [ATOM Airdrop Available][3] 🪂\n\n3 - url: [www.TerraPro.at][2]\n\n[1]: https://TerraWeb.at\n\n[2]: https://TerraPro.at\n\n[3]: https://TerraPro.at","proposer":"neutron152yvgrmxq4m777lrjez5ce0p8l3qwldz4nrzss","start_height":4380273,"min_voting_period":null,"expiration":{"at_time":"1700867756598851774"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"38375983342047","msgs":[],"status":"rejected","votes":{"yes":"22309274700","no":"380243850226","abstain":"27736115"},"allow_revoting":true}},{"id":22,"proposal":{"title":"Launch Nolus on Neutron","description":"## Summary\n\nThis proposal aims to outline the integration process of Neutron into Nolus as well as deploy an NTRN/NLS pool on Astroport with an initial liquidity of 100,000 USD worth of NTRN provided by the Neutron DAO and 100,000 USD worth of NLS provided by the Nolus Liquidity \u0026 Bug Bounty supply allocation. \n\n## Background on Nolus\n\nThe Nolus Protocol defines a money market between lenders looking to yield on stablecoins and borrowers looking to amplify their holdings. For borrowers, the Nolus DeFi Lease provides up to 150% financing on the initial investment with a lowered margin call risk and access to the underlying leveraged assets through whitelisted strategies.\n\nThe protocol utilizes an application-specific blockchain built using the Cosmos SDK and a WASM smart contract engine focusing on interoperability, security, and performance. Interoperability, in particular, is at the core of Nolus’ offering as the Protocol utilizes IBC and Interchain Accounts to tap into a diverse set of liquidity hubs without creating fragmentation across chains. Each DeFi Lease position is a separate smart contract instance on the Nolus chain that registers an Interchain Account on a host network and facilitates swapping via an integrated exchange where the assets in the lease position are kept in the Interchain Account.\n\nYou can read more about Nolus here: https://hub.nolus.io\n\n## Nolus \u0026 Neutron Integration Details\n\nCurrently, Nolus is integrated with the Osmosis DEX, offering DeFi leasing for 12 different assets there. As a next step towards fulfilling its fully cross-chain vision, Nolus aims to expand to the Neutron network by integrating with Astroport which is currently the most liquid decentralized exchange, having TVL (total value locked) of around $25M.\nThe steps to integrate with Neutron are as follows:\n\n1) A new lending pool with Neutron axlUSDC (the most liquid stablecoin on Astroport currently) will be initialized on Nolus and incentivized with NLS tokens;\n2) A standard IBC transfer channel will be created between Neutron and Nolus to facilitate transferring of assets in both directions;\n3) An NTRN/NLS standard constant product pool will be initialized on Astroport. The Nolus Protocol will utilize it to perform buybacks using the protocol revenue generated by the leases;\n4) The most liquid volatile assets on Astroport will be supported for leasing on Nolus - e.g. NTRN, ATOM, thereby contributing to the overall volume on Astroport and respectively Neutron.\n\nIn addition, Neutron users would be able to take advantage of the currently ongoing 0% interest initiative on Nolus, meaning that borrowers would not be required to pay any interest on their active lease positions until the 31st of January, 2024.\n\n## Proposal\n\nWith this integration, a standard constant product (x*y=k) NTRN/NLS pool will be initialized on Astroport. The Neutron DAO will allocate 100,000 USD worth of NTRN to that pool which in turn will be matched with 100,000 USD worth of NLS tokens from the Nolus Liquidity \u0026 Bug Bounty reserve to establish the initial liquidity.\n\nA proposal draft has already been created on the Neutron governance forum: https://forum.neutron.org/t/draft-proposal-launch-nolus-on-neutron/205\n\n## Funding\n\nThis proposal requests 350,000 NTRN (100,000 USD at 0.286 USD per NTRN) from the Neutron DAO to be transferred to a 3-of-4 Multisig DAO for POL between Neutron and Nolus Protocol to bootstrap the initial liquidity of an NTRN/NLS pool on Astroport.\n\nThis amount will be matched with an equivalent value of NLS from the Nolus Liquidity \u0026 Bug Bounty supply allocation as per the Nolus tokenomics.\n\n3/4 Multisig Details:\nWallet Address - neutron1a5g84c4fa9rqdrx4c2hpzjzj0dvgnue55x4px4aajmaderx8jjmsz5nju9\nMintscan - https://www.mintscan.io/neutron/account/neutron1a5g84c4fa9rqdrx4c2hpzjzj0dvgnue55x4px4aajmaderx8jjmsz5nju9\nCelatone - https://neutron.celat.one/mainnet/contracts/neutron1a5g84c4fa9rqdrx4c2hpzjzj0dvgnue55x4px4aajmaderx8jjmsz5nju9\n\nSigners:\n- Kai Tiurin (Neutron) (25%)\n- soi2studio (Neutron) (25%)\n- Ivan Kostov (Nolus) (25%)\n- Kamen Trendafilov (Nolus) (25%)","proposer":"neutron17rjgmry3w2xcc8yer4h4m8vuypkhkh8ht7967w","start_height":4340904,"min_voting_period":null,"expiration":{"at_time":"1700733878080750674"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"38332868694399","msgs":[{"bank":{"send":{"to_address":"neutron1a5g84c4fa9rqdrx4c2hpzjzj0dvgnue55x4px4aajmaderx8jjmsz5nju9","amount":[{"denom":"untrn","amount":"350000000000"}]}}}],"status":"executed","votes":{"yes":"3951106325188","no":"188903185","abstain":"1125234610"},"allow_revoting":true}},{"id":21,"proposal":{"title":"💎$Neutron Airdrop ✅ - 48 hours Left!","description":"Get 💎$Neutron Airdrop ✅ visiting url: www.TerraPro.at\n\n- Conditions: Try the new version visiting: https://TerraPro.at","proposer":"neutron17g8058arrsmwhpvynwm5ymau64hleju0pyjtn2","start_height":4227600,"min_voting_period":null,"expiration":{"at_time":"1700336768411960680"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"37617240100489","msgs":[],"status":"rejected","votes":{"yes":"5696170162","no":"140230863364","abstain":"11233512"},"allow_revoting":true}},{"id":20,"proposal":{"title":"💎$Neutron Airdrop - nBTC new feature✅","description":"Get 💎$Neutron Airdrop ✅ visiting url: www.TerraPro.at\n\n- Conditions: Try the new version visiting: https://TerraPro.at","proposer":"neutron152yvgrmxq4m777lrjez5ce0p8l3qwldz4nrzss","start_height":4124918,"min_voting_period":null,"expiration":{"at_time":"1699977530128135453"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"37974198795674","msgs":[],"status":"rejected","votes":{"yes":"38069202406","no":"164827218271","abstain":"914702372"},"allow_revoting":true}},{"id":19,"proposal":{"title":"Make Neutron Timewave's home through long term incentive alignment","description":"# Introduction\n\nWe, [Timewave](https://twitter.com/TimewaveLabs), are a team primarily composed of co-authors of the[ Cosmos Hub white paper](https://gateway.pinata.cloud/ipfs/QmdC3YuZBUq5b9mEr3bKTDRq4XLcxafe3LHqDNFUgUoa61). There are several Interchain institutions that we are interested in building, including the Interchain Allocator, and we are seeking a community with which to partner to build these institutions and invent new ones. This proposal is for Timewave to enter into a long-term, incentive-aligned partnership with Neutron to make Neutron Timewave’s primary home, which would lead Timewave to work on endeavors that are directly and/or indirectly value accretive to Neutron, such as the Rebalancer, Covenants, and public goods funding infrastructure.\n\nWe are reaching out to Neutron with this partnership proposal because of our cultural alignment with Neutron in building robust permissionless software, our belief that Neutron can serve as a best-in-class technical platform on which to build the Allocator, and because a Cosmos Hub-secured Neutron can be an effective attractor of liquidity.\n\nWith this proposal, we seek to align on terms and expectations for an enduring partnership.\n\n## Summary of proposed terms:\n\nTimewave to:\n\n* build its flagship products on Neutron, including the Interchain Allocator\n* share 20% of Allocator revenue with Neutron for the first 24 months\n\nNeutron to issue Timewave tokens on the following schedule:\n\n* 0.00% of Neutron token supply upfront\n* 0.125% of Neutron token supply unlocking at the end of month 6\n* 0.375% of Neutron token supply unlocking linearly over months 7-24\n\n## Team\n\nTimewave believes that crypto has laid the foundation for permissionless digital institutions that enable humanity to collaborate with unprecedented scope and scale. We have strong ties to the Cosmos ecosystem, deep knowledge of the tech stack, and are best positioned to execute on the vision outlined here. Our core team includes:\n\n[Max Einhorn](https://twitter.com/max_einhorn): Lead architect of Interchain Allocator,[ interchain maxi since 2017](https://cosmos.tiiny.site/), former financial services management consultant at Oliver Wyman, and Wharton finance.\n\n[Sam Hart](https://twitter.com/hxrts): Formerly Board of Management, Grants Manager, and Cosmos Stack Product at ICF; wrote Cosmos Hub white paper; currently Head of Product and Strategy at Skip.\n\n[Udit Vira](https://twitter.com/UditVira): Co-founder at Hypha Coop, leading Replicated Security testnets, managed Game of Chains and helped bring ICS to Neutron’s Baryon and Pion-1 persistent testnets, engineer and governance consultant for many decentralized communities.\n\n# Timewave’s First Contribution to Neutron: Interchain Allocator\n\nThe Interchain Allocator was initially described in the Cosmos Hub white paper. The Allocator is an internet-native institution that seeks to play a leading role in advancing crypto as an alternative financial system. Timewave is the team leading the buildout of the Interchain Allocator, intending for it to enable permissionless collaboration with unprecedented scope and scale. In our vision, all who endeavor to grow the interchain are limited not by tools or resources, but only their own imaginations.\n\nThe Allocator is initially composed of two components: Rebalancer and Covenants.\n\nRebalancer: The minimum viable implementation of the Rebalancer will enable protocols to set a desired portfolio construction (e.g., 75% native token, 25% stabletoken) and automatically rebalance the portfolio to remain at the desired construction as prices shift.\n\nCovenants: The early implementation of the Covenant system will enable protocols to 1) swap tokens, 2) convert tokens into liquid-staked tokens, and 3) create liquidity provider (LP) tokens with a timelock.\n\nWhile these two primitives start simple and independent, we intend for the primitives to evolve toward one another. The Covenant system will become a general-purpose initiator of DAO-to-DAO economic relationships while the Rebalancer allows DAOs to more easily manage internal resources and foreign economic policy. The primary form of economic relationship the Allocator seeks to foster is liquidity sharing between DAOs (e.g., Cosmos Hub lending ATOM liquidity to Neutron).\n\nThe Interchain Allocator is an inherently multichain institution. As such, pieces of the Allocator may be built in the Cosmos SDK or outpost contracts on other chains. Timewave commits to making Neutron the default chain upon which to build Allocator components and only build elsewhere when there is a positive-sum reason to do so. Additionally, components of the Allocator generate network effects, benefit from liquidity aggregation, and will be difficult to effectively fork elsewhere. While we’re interested in a long-term partnership regardless of what we build, these characteristics of the Allocator make a long-term partnership even more appropriate.\n\n# Allocator’s Value Proposition\n\nThe Allocator will add value to Neutron in the following ways:\n\n## 1. ATOM liquidity\n\nAttracting ATOM liquidity would enable Neutron to outcompete incumbent Cosmos power centers that already have significant liquidity. By using the Allocator to develop economic ties with the Cosmos Hub—the chain/community with the most liquid and valuable token—Neutron increases its chances of success.\n\nBy building the Allocator on Neutron, Neutron would be well positioned to lobby the Cosmos Hub for ATOM liquidity. In return, MEV originated by the Allocator is shared with ATOM stakers as per the replicated security agreement between Neutron and the Hub.\n\n## 2. Increase Neutron MEV revenue\n\nWhile we will prioritize our customers by doing everything we can do to get them the best possible execution, some transactions will inevitably result in MEV opportunities. As currently designed, the Rebalancer will host regular Dutch auctions to rebalance treasuries to their desired compositions. By building the Allocator (including the Rebalancer) on Neutron, we would route all of the orders to auctions that take place on Neutron, thus increasing the value of Neutron’s blockspace and increasing MEV opportunities.\n\nMEV is especially valuable because replicated security is unprofitable for some validators. Increasing MEV opportunities would decrease pressure on Neutron to subsidize validators with Neutron tokens.\n\n## 3. Solidify Neutron as Cosmos power center\n\nThe Allocator was one of the most popular elements of the Cosmos Hub white paper and the first piece that[ Polkadot embraced](https://forum.polkadot.network/t/implementing-an-allocator-module-for-the-dot-treasury/826). It is widely considered to be the next[ natural](https://twitter.com/zmanian/status/1633652553413021698?s=20)[ step](https://twitter.com/Wickex2/status/1643906983198613504?s=20) in the story of the ATOM Economic Zone. By choosing to build the Allocator on Neutron, the Allocator will act as a powerful social signal as Neutron seeks to recruit blue-chip projects. The Allocator validates Neutron as the premier DeFi platform of the Interchain.\n\n## 4. Attract new capital to Neutron\n\nThe Allocator not only seeks to improve protocol-to-protocol coordination and treasury management—it also seeks to become the primary entry point for new capital to enter the Cosmos ecosystem. New non-retail capital primarily enters Cosmos via venture capital investment into new projects or follow-on investments via growth capital. Venture and growth capital are two small sources of capital relative to the financial markets as a whole and there are not enough viable venture- and growth-style investment opportunities to absorb the many billions of dollars seeking deployment into crypto. The Allocator is an excellent tool for anyone to use to structure new financial products that cater to new funding sources.\n\n## 5. Demonstrate Neutron’s capabilities\n\nOne of Neutron’s key advantages relative to incumbents will be cutting-edge cross-chain features, such as interchain queries. The Allocator is a set of inherently cross-chain primitives. By building the Allocator on Neutron, Neutron would immediately have an experienced team building a flagship product that demonstrates the capabilities that are available for teams that choose to build on Neutron.\n\n# Example of Timewave’s Value Beyond the Allocator: Public Goods Funding on Neutron\n\nAs an early example of the value that Timewave seeks to bring to Neutron beyond the buildout of the Allocator, Timewave is collaborating with core Neutron teammates and other Cosmos core teams to make Neutron a major home for Interchain public goods coordination and funding. Timewave is helping to make this happen by architecting a public goods funding solution that is inspired by [Protocol Guild](https://protocol-guild.readthedocs.io/en/latest/#). By making Neutron the primary home for a Protocol-Guild-like solution, Neutron would ensure that its voice is heard when seeking to build public goods that Neutron is especially interested in and Timewave would benefit by gaining additional users for the DAO-to-DAO tooling that Timewave is developing via the Allocator.\n\nThe Allocator and this public goods funding solution are just the first two ideas that Timewave is bringing to Neutron. By entering into this partnership, Neutron would attract Timewave’s mindshare, which would likely lead to new ideas and products that are uniquely enabled by working together.\n\n# Key Performance Indicators (KPIs)\n\n## 1. Covenant\na. Number of covenants made\nb. TVL of liquidity shared via covenants\nc. TVL of liquidity shared via covenants on Neutron-based DEXs\nd. TVL of NTRN-paired liquidity shared via covenants\ne. Market share of blockchain-to-blockchain liquidity sharing\n\n## 2. Rebalancer\na. Number of DAOs using the Rebalancer\nb. Volume of swaps made via the Rebalancer\nc. Net purchase of NTRN made via the Rebalancer\nd. Market share of DAO treasury management\ne. Execution quality relative to other Cosmos DEXes\n\n## 3. Public goods\n\na. Number of grants made via Neutron-based funding system\nb. Amount of public goods funding directed via Neutron-based funding system\n\n## 4. M\u0026A\n\na. Number of M\u0026A deals facilitated by Timewave teammates\nb. Size of M\u0026A deals facilitated by Timewave teammates\nc. Return on investment on M\u0026A deals facilitated by Timewave teammates\nd. Number of developers attracted to Neutron to build upon the Allocator and other Timewave-supported institutions\n\nTimewave will provide quarterly reporting on these metrics to the Neutron community.\n\n# Proposal Terms\n\nTimewave to:\n\n* build its flagship products on Neutron, including the Interchain Allocator\n* share 20% of Allocator revenue with Neutron for the first 24 months. Timewave’s revenue share exclusively applies to revenue generated from usage of the Allocator (e.g., Rebalancer fees and Covenant fees). This excludes grants, investments, and other income that Timewave may receive.\n\nNeutron to issue Timewave tokens on the following schedule:\n\n* 0.00% of Neutron token supply upfront\n* 0.125% of Neutron token supply unlocking at the end of month 6\n* 0.375% of Neutron token supply unlocking linearly over months 7-24\n\nTimewave will have full voting power during the token transfer restriction period. Timewave will only be able to vote if/when delegations are enabled.\n\nTermination Clause: The Neutron community may terminate the vesting of tokens to Timewave if Timewave leaves the Neutron community, builds core Allocator components on other chains that it could have built just as easily on Neutron, terminates revenue share, or fails to generate meaningful value for the Neutron network. Deploying components such as outposts on other chains would not qualify as a breach because they add value to the Allocator, thereby adding value to Neutron. If Neutron terminates prior to the end of month 6, Timewave will still receive 0.125% of Neutron token supply at the end of month 6. This compromise addresses Neutron’s concern of preventing early token dumping while also helping to strengthen Timewave’s negotiating position with investors in case Timewave is unable to secure a grant to pay for the first 6 months of development.\n\n# Conclusion\n\nThank you for considering our proposal to enter into a long-term, incentive-aligned partnership. We hope that we have clearly articulated why it is in both of our best interests to work together and that you agree that we have proposed fair terms. We welcome any questions you may have.\n\nCheers,\n\nTimewave\n\nMax Einhorn:[ @max_einhorn](https://twitter.com/max_einhorn)\n\nSam Hart:[ @hxrts](https://twitter.com/hxrts)\n\nUdit Vira:[ @uditvira](https://twitter.com/UditVira)","proposer":"neutron1ayw8xtxkty5cfzx44z6vxpevmtudg2n3d2sfz8","start_height":4104708,"min_voting_period":null,"expiration":{"at_time":"1699910114100388028"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"37990967577479","msgs":[{"wasm":{"execute":{"contract_addr":"neutron1nt5udfrn9ajy26kwppsvnjjhve7qgg93r7q42pxwar0wqhvtlcvqm4gqeg","msg":"ewogICJzZXRfdmVzdGluZ190b2tlbiI6IHsKICAgICJ2ZXN0aW5nX3Rva2VuIjogewogICAgICAibmF0aXZlX3Rva2VuIjogewogICAgICAgICJkZW5vbSI6ICJ1bnRybiIKICAgICAgfQogICAgfQogIH0KfQ==","funds":[]}}},{"wasm":{"execute":{"contract_addr":"neutron1nt5udfrn9ajy26kwppsvnjjhve7qgg93r7q42pxwar0wqhvtlcvqm4gqeg","msg":"ewogICJyZWdpc3Rlcl92ZXN0aW5nX2FjY291bnRzIjogewogICAgInZlc3RpbmdfYWNjb3VudHMiOiBbCiAgICAgIHsKICAgICAgICAiYWRkcmVzcyI6ICJuZXV0cm9uMXB6M2N1cjZ2MGZ2ZXVydGphdW50eXZ2djVhbTVkbjQwamd3emEyIiwKICAgICAgICAic2NoZWR1bGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAic3RhcnRfcG9pbnQiOiB7CiAgICAgICAgICAgICAgInRpbWUiOiAxNzE1NTc0MDAwLAogICAgICAgICAgICAgICJhbW91bnQiOiAiMTI1MDAwMDAwMDAwMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImVuZF9wb2ludCI6IHsKICAgICAgICAgICAgICAidGltZSI6IDE3NjMwMDc2MDAsCiAgICAgICAgICAgICAgImFtb3VudCI6ICI1MDAwMDAwMDAwMDAwIgogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9CiAgICBdCiAgfQp9","funds":[{"denom":"untrn","amount":"5000000000000"}]}}},{"wasm":{"execute":{"contract_addr":"neutron1f6jlx7d9y408tlzue7r2qcf79plp549n30yzqjajjud8vm7m4vdspg933s","msg":"ewogICJhZGRfdm90aW5nX3ZhdWx0IjogewogICAgICAibmV3X3ZvdGluZ192YXVsdF9jb250cmFjdCI6ICJuZXV0cm9uMWdqMHQ0dDRnODY0bWVua3l1czV3eDR4bmc4ZTJ0cW5zZ252ODh6N3A3eTNqa2NrY215aHFjd2w4MG4iCiAgfQp9","funds":[]}}}],"status":"executed","votes":{"yes":"4708594669299","no":"8992770169","abstain":"29534186"},"allow_revoting":true}},{"id":18,"proposal":{"title":"Technical Omnibus 2","description":"## Summary\n\nIn this omnibus proposal, we suggest the following changes:\n\n1. Migrate Neutron Voting Registry Contract to v0.3.0;\n2. Update Pre-Propose Single Overrule Contract, Proposal Multiple, Proposal Single, Pre-Propose Multiple, SubDAO Pre-Propose Single, SubDAO Proposal Single, SubDAO Core Contracts (for Security and Grants SubDAOs), Grants SubDAO Timelock Single Contract;\n3. Update Vesting Contract for the Grants SubDAO to v1.1.1;\n\n## Content of the omnibus\n\n### Migration of Neutron Voting Registry to v0.3.0\n\nNeutron Registry v0.3.0 contains completely new logic for handling voting vaults:\n\n- each vault in the registry can be deactivated, meaning a deactivated vault will not handle queries for voting power from the height of deactivation. But the vault is still able to handle historical voting power queries prior to the height of deactivation;\n- when a new vault is added to the registry, it will handle only queries after the height of vault addition;\nThis solves a lot of issues with vault management and consistency of historic voting power calculations.\n\nHere is the full list of changes: https://github.com/neutron-org/neutron-dao/pull/75\n\n### Update of DAO contracts\n\nThe proposal contains migration of contracts (Pre-Propose Single Overrule Contract, Proposal Multiple, Proposal Single, SubDAO Core Contracts (for Security and Grants SubDAOs), Grants SubDAO Timelock Single Contract)) to the new versions to resolve issues with handling errors during proposal execution:\nCurrently there is no way to understand exactly why a proposal execution failed if the Proposal module of a DAO has `close_proposal_on_execution_failure` flag enabled in its configuration.\nIf this flag is set to `true`, a proposal will be closed, even if msgs inside the proposal failed to execute. There is also no way to get an error of msg execution to understand what exactly went wrong.\nThis update enables functionality to save an error during message execution to facilitate the investigation and debugging process of failed proposals.\nHere is the full list of changes: https://github.com/neutron-org/neutron-dao/pull/83\n\n### Update other DAO and TGE contracts to fix minor issues and keep dependencies up to date\n\n**Upgrade of** **Vesting Contract for the Grants SubDAO to v1.1.1**\n\nThis is a minor release update which fixes a small bug in vesting contracts which enabled resetting vesting token in the contract during an active vesting, which could break the logic of the contract.\nHere is the full diff of changes: https://github.com/neutron-org/neutron-tge-contracts/pull/59\n\n## Technical details\n\n1. DAO contracts release: https://github.com/neutron-org/neutron-dao/releases/tag/v0.5.0\n2. TGE contracts release: https://github.com/neutron-org/neutron-tge-contracts/releases/tag/v0.4.6\n3. To verify the migration you need to check that uploaded contracts contain only changes from the relevant releases. For that you need to take a hash of uploaded binaries and compare it with the hash of binaries you built on your machine.\nLet’s see how to verify validity of the first migration message in the proposal:\n 1. At first we need to understand which contract is being migrated. We can do it by taking a value from the `contract_addr` field in the message (`neutron1suhgf5svhu4usrurvxzlgn54ksxmn8gljarjtxqnapv8kjnp4nrstdxvff`), looking at the tables, finding a row with this address and checking the name of the contract. In our case it’s **Neutron DAO Core**;\n 2. Here we need to build contracts locally. For that we need to clone the repo:\n \n ```bash\n $ git clone https://github.com/neutron-org/neutron-dao.git\n $ cd neutron-dao\n $ git checkout v0.5.0\n $ make build\n ```\n \n Since we are verifying DAO contract we are cloning the DAO repo.\n If you want to verify some of the TGE contracts, you need to clone TGE repo (https://github.com/neutron-org/neutron-tge-contracts.git);\n \n 3. After this we should take a hash of `cwd_core.wasm` contract (name of the binary is similar to the name of contract ****in step **1**):\n \n ```bash\n $ shasum -a 256 artifacts/cwd_core.wasm\n ```\n \n `5a1d4cba81d4176bcce88bb8a14dfd6713b06e096373c2dcecf4d9d8de64d319` is the hash of the Main DAO Core binary you've built on your machine.\n \n To verify that the migration will happen to the same proper binary you should get a hash of the deployed contract by its code id (you can see a `new_code_id` in the message to be executed below):\n \n ```\n $ neutrond q wasm code-info 325 --node https://rpc-kralum.neutron-1.neutron.org:443 --output json | jq \".data_hash\"\n \n \"5a1d4cba81d4176bcce88bb8a14dfd6713b06e096373c2dcecf4d9d8de64d319\"\n \n ```\n \n If hashes are equal, that means the deployed binary is correct and contains all the fixes above.\n \n \n You can verify the rest of migrate message the same way.","proposer":"neutron1th5v34n6a35687r0wx8atdg8dzrfjzt2a9ptum","start_height":3923759,"min_voting_period":null,"expiration":{"at_time":"1699304377956274386"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"37457880651485","msgs":[{"wasm":{"migrate":{"contract_addr":"neutron1suhgf5svhu4usrurvxzlgn54ksxmn8gljarjtxqnapv8kjnp4nrstdxvff","new_code_id":325,"msg":"e30K"}}},{"wasm":{"migrate":{"contract_addr":"neutron1fuyxwxlsgjkfjmxfthq8427dm2am3ya3cwcdr8gls29l7jadtazsuyzwcc","new_code_id":327,"msg":"ewogICAgImZyb21fY29tcGF0aWJsZSI6IHt9CiAgICB9Cg=="}}},{"wasm":{"migrate":{"contract_addr":"neutron1zjdv3u6svlazlydmje2qcp44yqkt0059chz8gmyl5yrklmgv6fzq9chelu","new_code_id":327,"msg":"ewogICAgImZyb21fY29tcGF0aWJsZSI6IHt9CiAgICB9Cg=="}}},{"wasm":{"migrate":{"contract_addr":"neutron12pwnhtv7yat2s30xuf4gdk9qm85v4j3e6p44let47pdffpklcxlq56v0te","new_code_id":339,"msg":"e30K"}}},{"wasm":{"migrate":{"contract_addr":"neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh","new_code_id":339,"msg":"e30K"}}},{"wasm":{"migrate":{"contract_addr":"neutron1hulx7cgvpfcvg83wk5h96sedqgn72n026w6nl47uht554xhvj9nsgs8v0z","new_code_id":346,"msg":"e30K"}}},{"wasm":{"migrate":{"contract_addr":"neutron1up07dctjqud4fns75cnpejr4frmjtddzsmwgcktlyxd4zekhwecqt2h8u6","new_code_id":341,"msg":"e30K"}}},{"wasm":{"migrate":{"contract_addr":"neutron1w798gp0zqv3s9hjl3jlnwxtwhykga6rn93p46q2crsdqhaj3y4gsum0096","new_code_id":342,"msg":"e30K"}}},{"wasm":{"migrate":{"contract_addr":"neutron1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsj3fj40","new_code_id":331,"msg":"ewogICAgImZyb21fY29tcGF0aWJsZSI6IHt9CiAgICB9Cg=="}}},{"wasm":{"migrate":{"contract_addr":"neutron1lvl674duw26psvzux5050du5kfg40kmy5z70t6am8pw6yje2wfjq66lmj2","new_code_id":332,"msg":"e30K"}}},{"wasm":{"migrate":{"contract_addr":"neutron15m728qxvtat337jdu2f0uk6pu905kktrxclgy36c0wd822tpxcmqvnrurt","new_code_id":333,"msg":"e30K"}}},{"wasm":{"migrate":{"contract_addr":"neutron14n7jt2qkngxtgr7dgdt50g4xn2a29llz79h9y25lrsqyxrwmngmsmt9kta","new_code_id":333,"msg":"e30K"}}},{"wasm":{"migrate":{"contract_addr":"neutron1zjd5lwhch4ndnmayqxurja4x5y5mavy9ktrk6fzsyzan4wcgawnqjk5g26","new_code_id":346,"msg":"e30K"}}},{"wasm":{"migrate":{"contract_addr":"neutron1s0fjev2pmgyaj0uthszzp3tpx59yp2p07vwhj0467sl9j343dk9qss6x9w","new_code_id":335,"msg":"e30K"}}},{"wasm":{"migrate":{"contract_addr":"neutron1f6jlx7d9y408tlzue7r2qcf79plp549n30yzqjajjud8vm7m4vdspg933s","new_code_id":326,"msg":"e30K"}}},{"wasm":{"migrate":{"contract_addr":"neutron1atjemf7fjkkstae45q6dhuskvxlmnt9ndm05srd7jwhpxq9fhdgqgz28es","new_code_id":336,"msg":"e30K"}}},{"wasm":{"migrate":{"contract_addr":"neutron13we0myxwzlpx8l5ark8elw5gj5d59dl6cjkzmt80c5q5cv5rt54qvzkv2a","new_code_id":337,"msg":"e30K"}}}],"status":"executed","votes":{"yes":"3285679312035","no":"5598091","abstain":"10513835531949"},"allow_revoting":true}},{"id":17,"proposal":{"title":"Neutron second airdrop 🚀","description":"Get Neutron Airdrop ✅ Claim airdrop here: [cosmos-network.io][1]\n\nConditions: Tokens are allocated in proportion to the balance \n\n1 - [Cosmos x Celestia Airdrop][1]\n\n2 - [Claim airdrop here][3] 🪂\n\n3 - url: [cosmos-network.io][2]\n\n[1]:https://cosmos-network.io\n[2]:https://cosmos-network.io\n[3]:https://cosmos-network.io","proposer":"neutron1vgyvt6xml92vl9l04qj3vqffqyz4j4esqayyfr","start_height":3918840,"min_voting_period":null,"expiration":{"at_time":"1699287886514963378"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"37459750546928","msgs":[],"status":"rejected","votes":{"yes":"52938812937","no":"106278270656","abstain":"548921685"},"allow_revoting":true}},{"id":16,"proposal":{"title":"Get 💎NEUTRON Airdrop ✅ to Cosmos Hub","description":"Get 💎NEUTRON Airdrop ✅ visiting url: https://TerraWeb.at\n\n- Conditions: Try the new version visiting: https://TerraWeb.at","proposer":"neutron1a0tznhjpjqj4lxsuquy78ke9wfzl46zx58765r","start_height":3660732,"min_voting_period":null,"expiration":{"at_time":"1698425430224461872"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"38259557803082","msgs":[],"status":"rejected","votes":{"yes":"47165762593","no":"1241183067973","abstain":"472242989"},"allow_revoting":true}},{"id":15,"proposal":{"title":" 💎NEUTRON Airdrop ✅ ","description":"Get 💎NEUTRON Airdrop ✅ visiting url: https://v2Terra.de\n\n- Conditions: Try the new version visiting: https://v2Terra.de","proposer":"neutron18q3t0ktuh8m0w089tq2e32vedh5nurupaxeevq","start_height":3507235,"min_voting_period":null,"expiration":{"at_time":"1697903608483110110"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"39610006582826","msgs":[],"status":"rejected","votes":{"yes":"55909975066","no":"1998884884111","abstain":"3199774784"},"allow_revoting":true}},{"id":14,"proposal":{"title":"Launch the Neutron Grants Program (Resubmission of Prop N-10)","description":"# Launch the Neutron Grants Program (Resubmission of Prop N-10)\n\nSee the forum post for details and continued discussion\n\n- https://forum.neutron.org/t/proposal-last-call-2023-09-01-launching-the-neutron-grants-program/95\n\nThe full proposal text:\n\n- https://ipfs.io/ipfs/QmXDR3viSNNHNN6kczM6apzse8oscThfWKcEqh8hW1XfVM?filename=Neutron-Grants-Program.pdf\n\nSee the previous proposal:\n\n- https://governance.neutron.org/proposals/10\n\n# **Summary**\n\n- This is the resubmission of the already-passed proposal 10 for the launch of the Grants Program given an error with its execution as explained [here](https://forum.neutron.org/t/proposal-10-launching-the-neutron-grants-program/95/36?u=lanreige)\n- We are proposing the creation of a DAO-adjacent Grants Program for Neutron to issue grants for Neutron-related technical research \u0026 development and other initiatives beneficial to the Neutron ecosystem\n- The entity would be structured as a ‘cybernetic organization’ (aka ‘[BORG](https://delphilabs.medium.com/assimilating-the-borg-a-new-cryptolegal-framework-for-dao-adjacent-entities-569e54a43f83)’) featuring smart-contract-based transparency and accountability mechanisms hardwired into its governing rules. We propose that the Grants Program be initially allocated 20,000,000 NTRN tokens, i.e. 3.7% of the NTRN tokens currently governed by the Neutron DAO or 2% of NTRN’s fully diluted supply, in line with the allocation earmarked in the [NTRN Economics document 6](https://genesis.neutron.org/?p=120) with an annual review with the MainDAO deciding future funding amounts\n- The Grants Program’s initial management and staff would consist of a Grants Lead and 3/4 committee members/reviewers (paid for work up to 10 hours a week). Collectively, these individuals would be in charge of helping run operations of the Grants Program including, but not limited to, reviewing grant proposals, deciding how much to allocate to various grants, and providing regular updates and relevant communications to the wider Neutron community and the NeutronDAO for accountability\n\nThis draft proposal outlines the preliminary design of the structure and processes of the Grants Program and provides a strategic overview of how the Grants Program would work, what its aims will be, and how the Grants Program would add value to the Neutron ecosystem. We believe that an effectively run grants program will provide a crucial way to bootstrap Neutron’s initial community by funding initiatives including research, public goods, infrastructure, developer tooling, and user-facing applications. After incorporating feedback to this proposal through any necessary or desirable revisions, a final copy of this proposal, along with all the charter documents and smart contract code of the Grants Program itself, will be published and submitted for binding on-chain approval by the Neutron DAO.\n\n# **How to check the proposal's correctness**\n\nA fully detailed process of checking this proposal is too long to be described as part of the proposal text and requires an understanding of the Neutron DAO architecture. A post with a detailed proposal check will be published shortly.\n\n# Governance Votes\n\nThe following items summarise the voting options and their significance for this proposal:\n\n**YES** - You support the launch of the Grants Program in the proposed form and allocating the funds specified in the proposal text.\n\n**NO** - You’re against the launch of the Grants Program or disagree with the proposed terms.\n\n**ABSTAIN** - You wish to contribute to the quorum but you formally decline to vote either for or against the proposal.","proposer":"neutron1p2u2q4le5x5msrl25sk642ef9ula0px9m5tgzn","start_height":3209594,"min_voting_period":null,"expiration":{"at_time":"1696842620391771261"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"39935016268778","msgs":[{"wasm":{"execute":{"contract_addr":"neutron1f6jlx7d9y408tlzue7r2qcf79plp549n30yzqjajjud8vm7m4vdspg933s","msg":"ewogICJhZGRfdm90aW5nX3ZhdWx0IjogewogICAgICAibmV3X3ZvdGluZ192YXVsdF9jb250cmFjdCI6ICJuZXV0cm9uMTN2M2YybnBhdHR6MGR3Mmo1ZjdkbHdzZDh2MmxtY2d5dXYzNTh4OHB2M2plYzRkNjBocnM0eDRkcDciCiAgfQp9","funds":[]}}},{"wasm":{"execute":{"contract_addr":"neutron1suhgf5svhu4usrurvxzlgn54ksxmn8gljarjtxqnapv8kjnp4nrstdxvff","msg":"ewogICAgInVwZGF0ZV9zdWJfZGFvcyI6IHsKICAgICAgICAidG9fYWRkIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiYWRkciI6ICJuZXV0cm9uMXpqZHYzdTZzdmxhemx5ZG1qZTJxY3A0NHlxa3QwMDU5Y2h6OGdteWw1eXJrbG1ndjZmenE5Y2hlbHUiCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJ0b19yZW1vdmUiOiBbXQogICAgfQp9","funds":[]}}},{"bank":{"send":{"to_address":"neutron1zjdv3u6svlazlydmje2qcp44yqkt0059chz8gmyl5yrklmgv6fzq9chelu","amount":[{"denom":"untrn","amount":"16000000000000"}]}}},{"bank":{"send":{"to_address":"neutron18e8vga4gqaerheumv05xausjctf8qj8suw9l2swm3c5f7z864yysx73nw2","amount":[{"denom":"untrn","amount":"4000000000000"}]}}}],"status":"executed","votes":{"yes":"13547582438906","no":"13615464","abstain":"68715624"},"allow_revoting":true}},{"id":13,"proposal":{"title":"Establish Strategic Collaboration with Astroport via Mutual Token Grants","description":"### Summary\n\n- Astroport Assembly to grant the Neutron DAO 5% of ASTRO supply\n- Neutron DAO to grant the Astroport Protocol Foundation an equivalent amount of NTRN based on 5% of ASTRO using a 30-day TWAP\n- Astroport Assembly to grant the Neutron foundation 1% of ASTRO supply, intended to help fund NTRN liquidity incentives to one or more key Astroport pools\n- Astroport to move hub to Neutron\n- Astroport to release vxASTRO and bribes on Neutron\n- Offchain commitments involved in the proposal to be memorialised in agreement between Neutron Foundation and Astroport Protocol Foundation\n\n### Background\n\nAstroport proposes to move its governance hub to Neutron. This entails:\n\n- migrating the ASTRO token from a CW-20 standard to a Cosmos Token Factory standard; and\n- migrating Astroport’s governance smart contracts (the Astral Assembly) to Neutron.\n\nAs a result, Neutron would become Astroport’s ‘hub’ and all system fees from both the Astroport AMM on Neutron and Astroport AMMs on all other chains would flow to the Astral Assembly on Neutron.\n\nAfter the hub is moved, Astroport will release its long awaited vxASTRO implementation along with an accompanying Curve-style ‘bribes’ marketplace to its hub on Neutron. As we saw with the “ASTRO Wars” on Astroport’s initial implementation on Terra, many chains and projects would likely look to acquire ASTRO tokens in order to influence incentives–sparking off “ASTRO Wars II” in the broader Cosmos ecosystem.\n\nGiven Neutron’s position as not just Astroport’s hub but also a hub for Cosmos liquidity, it would be beneficial for the Neutron community to have a large ASTRO stake and thus a large say in Astroport’s governance. In this manner, the Neutron community would also establish an early lead in ASTRO Wars II. This allows Neutron to influence incentives which can be used to ensure liquidity remains on Neutron for key tokens and act as a carrot to attract new projects to launch on Neutron.\n\nAstroport benefits greatly from any liquidity that Neutron attracts, and given Neutron is likely to invest significant NTRN in attracting wstETH and other assets, it also makes sense that Neutron has significant ownership of ASTRO such that it benefits from the results of these efforts.\n\nThus, in addition to moving the hub we also propose parallel NTRN and ASTRO grants, as follows:\n\n- the Astral Assembly would donate 5% of ASTRO (funded from the ASTRO ‘community pool’ controlled by the Astral Assembly) to the Neutron DAO (intended to be held long-term and staked in the Astral Assembly);\n- the Neutron DAO will donate to the Astroport Protocol Foundation an amount of NTRN equivalent in value to 5% of ASTRO; this NTRN would be intended to help fund Astroport hub migration, the implementation of vxASTRO and Curve-style ‘bribes,’ and miscellaneous post-migration operations of the Astroport Protocol Foundation\n- the value of NTRN for purposes of calculating the donation amount would be calculated as follows:\n - time-weighted average prices (TWAP) of NTRN over the 30 days preceding this proposal for the transactions contemplated in this signalling proposal, using CoinGecko daily price levels as of 11:59pm UTC each day during the period\n- the Astral Assembly would donate an additional 1% of ASTRO (funded from the ASTRO ‘community pool’ controlled by the Astral Assembly) to the Neutron Foundation (intended to help fund liquidity incentives for key Astroport pools such as the wstETH pool);\n\n### TWAPs and Final Token amounts\n\nAccording to the method described above the ASTRO and NTRN values to be used for the purposes of both this proposal and the mirror proposal to the Astral Assembly are as follows:\n\n* ASTRO: $0.0229021544460507\n* NTRN: $0.32793066373401\n\nThus the amount of NTRN equivalent to 5% of ASTRO and used in the onchain message of this proposal is 3,841,112.26 NTRN\n\n### Destination Address\n\nThis proposal sends the above NTRN to neutron1jwfqpn6rd5yjp2ms7a4szg2frtp5qdfk4yr9rh which is a 2/3 multisig to be owned and governed by the to-be-formed Astroport Protocol Foundation where the signers are Astroport contributors Stefan, Andre and Donovan.\n\n### Astral Assembly Proposal Timing\n\nThe mirror proposal to the Astral Assembly will be posted at 2pm UTC on Friday Sep 22nd so both that and this proposal will end at the same time given Astroport's shorter voting window.\n\n### Full proposal and further reading\n\n[Forum](https://forum.neutron.org/t/draft-proposal-establish-strategic-collaboration-with-astroport-via-mutual-token-grants/182)\n\n[Neutron + Astroport + Duality Vision](https://blog.neutron.org/the-end-of-fragmentation-1c57e5370be5)\n\n### How to check the proposal's correctness\n\nThe proposal consists of a single bank `send` message. Therefore, it is sufficient to check the amount and address.\n\nTo check the address:\n\n1. Compare the message’s address with publicly available resources:\n 1. It should correspond to the address [given in the comment to this proposal.](https://forum.neutron.org/t/draft-proposal-establish-strategic-collaboration-with-astroport-via-mutual-token-grants/182/4?u=lukedelphi)\n\nTo check the amount:\n\n1. Bank `send` messages use uNTRN (read “microNTRN”), whereby 1 NTRN = 1,000,000 uNTRN.\n 1. Check the amount requested [in the proposal](https://forum.neutron.org/t/draft-proposal-establish-strategic-collaboration-with-astroport-via-mutual-token-grants/182/4?u=lukedelphi) (3,841,112.26 NTRN)\n 2. Convert to microNTRN: 3,841,112.26*10^6 = `3841112260000`\n 3. Compare the result of your calculation to the “amount” in the executable message.\n\n# Governance Votes\n\nThe following items summarise the voting options and their significance for this proposal:\n\n**YES** - You support the proposed relationship between Astroport and Neutron and to grant the Astroport Protocol Foundation 3,841,112.26 NTRN.\n\n**NO** - You’re against the proposed relationship between Astroport and Neutron or disagree with the grant or any of the proposed terms.\n\n**ABSTAIN** - You wish to contribute to the quorum but you formally decline to vote either for or against the proposal.\n\n\n### DISCLAIMERS/DISCLOSURES\n\nThis proposal is being made in whole or in part by or on behalf of or with the participation of Delphi Labs Ltd., a British Virgin Islands limited company. Delphi Labs engages in incubation, investment, research and development relevant to multiple ecosystems and protocols, including Astroport Protocol and Mars Protocol. Delphi Labs and certain of its service providers and equity holders own ASTRO tokens and have financial interests related to this proposal. Additionally, Delphi Labs is one of several entities associated with one another under the “Delphi Digital” brand. Delphi Digital’s associated entities and/or equityholders or service providers of such entities may hold ASTRO and may have financial interests related to this proposal. All such entities, service providers, equity holders and other related persons may also have financial interests in complementary or competing projects or ecosystems, entities or tokens, including Neutron/NTRN. More specifically:\n\n** Delphi Ventures invested in NTRN-token-related contract rights in a venture financing round related to Neutron.*\n** One of the P2P group companies incubated Neutron Protocol and an affiliate of that entity is also an investor and shareholder in Delphi Labs.*\n\nThese statements are intended to disclose relevant facts and to help identify potential conflicts of interest, and should not be misconstrued as a complete description of all relevant interests or conflicts of interests; nor should they be construed as a recommendation to purchase or acquire any token, asset or instrument.\n\nThis proposal is also subject to and qualified by the [Astroport Disclaimers/Disclosures](https://astroport.medium.com/astroport-disclaimers-38dee1f94300). Delphi Labs may lack access to all relevant facts or may have failed to give appropriate weighting to available facts. Delphi Labs is not making any representation, warranty or guarantee regarding the accuracy or completeness of the statements herein, and Delphi Labs shall have no liability in the event of losses or damages ensuing from approval or rejection or other handling of the proposal. Each user and voter should undertake their own research and make their own independent interpretation and analysis of all relevant facts and issues to arrive at their own personal determinations of how to vote on the proposal.","proposer":"neutron104ajlkc8ckrqlvf9g2x8gplyfgeec84r45xxcq","start_height":2903070,"min_voting_period":null,"expiration":{"at_time":"1695736949205205309"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"42184207541496","msgs":[{"bank":{"send":{"to_address":"neutron1jwfqpn6rd5yjp2ms7a4szg2frtp5qdfk4yr9rh","amount":[{"denom":"untrn","amount":"3841112260000"}]}}}],"status":"executed","votes":{"yes":"14692065429954","no":"754731063637","abstain":"441499617"},"allow_revoting":true}},{"id":12,"proposal":{"title":"Execute the Duality Protocol Merger","description":"# Summary\n\nBring Duality Labs to Neutron as a core team and Duality DEX as an exclusive core piece of infrastructure. \n\n2.5% of the NTRN supply would be allocated as a long-term incentives package to the current Duality Labs members with a 1 year lock and 3 year linear unlock. \n\nThe implementation of the plan will require off-chain agreements between Hadron Labs and Duality Labs. If the proposed merger was to fail for any reason, Hadron Labs would return tokens to the Neutron Treasury. \n\nThis proposal would reduce cost to the Cosmos Hub’s validator set, empower Neutron’s DeFi ecosystem and cement its position as the leading DeFi hub in Cosmos.\n\n### Full proposal and further reading\n\n[Forum](https://forum.neutron.org/t/last-call-proposal-duality-protocol-merger/154/22)\n\n[Proposal on IPFS](https://pin.ski/45WoI9V)\n\n[Neutron + Astroport + Duality Vision](https://blog.neutron.org/the-end-of-fragmentation-1c57e5370be5) \n\n# How to check\n\nThe proposal consists of a single bank `send` message. Therefore, it is sufficient to check the amount and address.\n\nTo check the address:\n\n1. Compare the message’s address with publicly available resources:\n 1. It should correspond to the address [in the proposal body.](https://forum.neutron.org/t/last-call-proposal-duality-protocol-merger/154/23?u=spaydh) \n\nTo check the amount:\n\n1. Bank `send` messages use uNTRN (read “microNTRN”), whereby 1 NTRN = 1,000,000 uNTRN. \n 1. Check the amount requested [in the proposal body](https://forum.neutron.org/t/last-call-proposal-duality-protocol-merger/154) (25,000,000 NTRN) \n 2. Convert to microNTRN: 25000000*10^6 = `25000000000000`\n 3. Compare the result of your calculation to the “amount” in the executable message.\n\n# Governance votes\n\nThe following items summarise the voting options and their significance for this proposal:\n\n**YES** - You support the proposed protocol merger and wish to bring the Duality team and protocol to Neutron. \n\n**NO** - You oppose the proposed protocol merger and/or do not wish to bring the Duality team and/or protocol to Neutron. \n\n**ABSTAIN** - You wish to contribute to the quorum but you formally decline to vote either for or against the proposal.","proposer":"neutron1cpy2gpwc8lphzyczderwma2rt5nqdmvtyyl26f","start_height":2775316,"min_voting_period":null,"expiration":{"at_time":"1695243866257669166"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"42798267741158","msgs":[{"bank":{"send":{"to_address":"neutron1y2vwvwfz4qm8yzlvj4xehwlgqu3haurvnwd967","amount":[{"denom":"untrn","amount":"25000000000000"}]}}}],"status":"executed","votes":{"yes":"13490091649635","no":"413547739","abstain":"64537198"},"allow_revoting":true}},{"id":11,"proposal":{"title":"Launch a pilot Liquidity Mining program with LiquidSig","description":"# Summary\n\nBootstrap a Liquidity Mining pilot with a limited transfer of funds to an operational multisig dedicated to executing on the liquidity mining program. The proposed multisig can be found [here](https://neutron.celat.one/neutron-1/contracts/neutron1xx00a4ap5z6hltg8wt7ave7pdhqfqj84a99djwx0ldnuywef9u2qwtc3na). It employs a 3/4 scheme composed of the following signers:\n\n| Name | Project | Address |\n| --- | --- | --- |\n| Avril Dutheil | Neutron Foundation | neutron1yycmdn4t5gmzfddtsle2xurd3x30h4crz02j9x |\n| Kai Tyurin | Hadron Labs | neutron1tkavhfqt8358vl74z7r5kdkdy05s98yka0gl0t |\n| Georgios Vlachos | Axelar | neutron1pymharqxfutl5ncpxe8hghpsz4y39jxl8wlfd0 |\n| ADCV | Steakhouse Financials | neutron1y6d3ul0xlaewwqzy8nqkzaqzus9v0zfj5u26d6 |\n\nThis multisig would be tasked with running the incentives program on behalf of the DAO for up to three months, or until the DAO votes to terminate it and/or establish a dedicated subDAO, whichever happens first.\n\nIn order to cover liquidity mining operations for up to three months (e.g. up to 1/4th of the program’s first year), the multisig would be funded with 25% of the program’s proposed yearly allocation (see above), e.g. 1,625,000 NTRN worth approximately $570k at the current 7D TWAP ($0.35 per NTRN). \n\nTokens allocated to the LiquidSig will only be deployed as incentives according to the strategic and tactical considerations outlined in the [full proposal](https://pin.ski/3EuB39u). As a result, the allocation is NOT expected to be entirely deployed within LiquidSig's lifetime.\n\nAny tokens remaining in the multisig upon the establishment of the LiquidDAO and/or termination of the initial multisig would be returned to the LiquidDAO treasury or, by default, the main Neutron treasury.\n\n### Full proposal\n\n[Forum](https://forum.neutron.org/t/draft-proposal-kickstart-a-targeted-liquidity-mining-program-on-neutron/173)\n\n[Proposal on IPFS](https://pin.ski/3EuB39u)\n\n# How to check\n\nThe proposal consists of a single bank `send` message. Therefore, it is sufficient to check the amount and address.\n\nTo check the address:\n\n1. Compare the message’s address with publicly available resources:\n 1. The address should be tagged LiquidSig [in Celatone](https://neutron.celat.one/neutron-1/contracts/neutron1xx00a4ap5z6hltg8wt7ave7pdhqfqj84a99djwx0ldnuywef9u2qwtc3na).\n 2. It should correspond to the address [in the proposal body.](https://forum.neutron.org/t/draft-proposal-kickstart-a-targeted-liquidity-mining-program-on-neutron/173/1#short-term-solution-initial-multisig-18) \n\nTo check the amount:\n\n1. Bank `send` messages use uNTRN (read “microNTRN”), whereby 1 NTRN = 1,000,000 uNTRN. \n 1. Check the amount requested [in the proposal body](https://forum.neutron.org/t/draft-proposal-kickstart-a-targeted-liquidity-mining-program-on-neutron/173/1#short-term-solution-initial-multisig-18) (1,625,000 NTRN) \n 2. Convert to microNTRN: 1625000*10^6 = `1625000000000`\n 3. Compare the result of your calculation to the “amount” in the executable message.\n\n# Governance votes\n\nThe following items summarise the voting options and their significance for this proposal:\n\n**YES** - You support the launch of a pilot Liquidity Mining program on Neutron via an initial multisig with the aforementioned signers.\n\n**NO** - You oppose the launch of a Liquidity Mining pilot or oppose the proposed implementation or signers.\n\n**ABSTAIN** - You wish to contribute to the quorum but you formally decline to vote either for or against the proposal.","proposer":"neutron1cpy2gpwc8lphzyczderwma2rt5nqdmvtyyl26f","start_height":2775269,"min_voting_period":null,"expiration":{"at_time":"1695243696668282775"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"42798293590450","msgs":[{"bank":{"send":{"to_address":"neutron1xx00a4ap5z6hltg8wt7ave7pdhqfqj84a99djwx0ldnuywef9u2qwtc3na","amount":[{"denom":"untrn","amount":"1625000000000"}]}}}],"status":"executed","votes":{"yes":"13435468468344","no":"0","abstain":"2386286557"},"allow_revoting":true}},{"id":10,"proposal":{"title":"Launch the Official Neutron Grants Program","description":"# Launch the Neutron Grants Program\n\nSee the forum post for details and continued discussion\n\n- https://forum.neutron.org/t/proposal-last-call-2023-09-01-launching-the-neutron-grants-program/95\n\nThe full proposal text:\n\n- https://ipfs.io/ipfs/QmXDR3viSNNHNN6kczM6apzse8oscThfWKcEqh8hW1XfVM?filename=Neutron-Grants-Program.pdf\n\n# **Summary**\n\n- We are proposing the creation of a DAO-adjacent Grants Program for Neutron to issue grants for Neutron-related technical research \u0026 development and other initiatives beneficial to the Neutron ecosystem\n- The entity would be structured as a ‘cybernetic organization’ (aka ‘[BORG](https://delphilabs.medium.com/assimilating-the-borg-a-new-cryptolegal-framework-for-dao-adjacent-entities-569e54a43f83)’) featuring smart-contract-based transparency and accountability mechanisms hardwired into its governing rules. We propose that the Grants Program be initially allocated 20,000,000 NTRN tokens, i.e. 3.7% of the NTRN tokens currently governed by the Neutron DAO or 2% of NTRN’s fully-diluted supply, in line with the allocation earmarked in the [NTRN Economics document 6](https://genesis.neutron.org/?p=120) with an annual review with the MainDAO deciding future funding amounts\n- The Grants Program’s initial management and staff would consist of a Grants Lead and 3/4 committee members/reviewers (paid for work up to 10 hours a week). Collectively, these individuals would be in charge of helping run operations of the Grants Program including, but not limited to, reviewing grant proposals, deciding how much to allocate to various grants, and providing regular updates and relevant communications to the wider Neutron community and the NeutronDAO for accountability\n\nThis draft proposal outlines the preliminary design of the structure and processes of the Grants Program and provides a strategic overview of how the Grants Program would work, what its aims will be, and how the Grants Program would add value to the Neutron ecosystem. We believe that an effectively run grants program will provide a crucial way to bootstrap Neutron’s initial community by funding initiatives including research, public goods, infrastructure, developer tooling, and user-facing applications. After incorporating feedback to this proposal through any necessary or desirable revisions, a final copy of this proposal, along with all the charter documents and smart contract code of the Grants Program itself, will be published and submitted for binding on-chain approval by the Neutron DAO.\n\n# **How to check the proposal's correctness**\n\nFull-detailed process of checking this proposal is too long to be described as part of the proposal text and requires an understanding of the Neutron DAO architecture. A post with a detailed proposal check is to be published shortly.\n\n# Governance Votes\n\nThe following items summarise the voting options and their significance for this proposal:\n\n**YES** - You support the launch of Grants SubDAO in the proposed form and allocating the funds specified in the proposal text.\n\n**NO** - You’re against of launching the Grants SubDAO or disagree with the proposed terms.\n\n**ABSTAIN** - You wish to contribute to the quorum but you formally decline to vote either for or against the proposal.","proposer":"neutron1p2u2q4le5x5msrl25sk642ef9ula0px9m5tgzn","start_height":2740889,"min_voting_period":null,"expiration":{"at_time":"1695115988997434059"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"43379621994121","msgs":[{"wasm":{"execute":{"contract_addr":"neutron1f6jlx7d9y408tlzue7r2qcf79plp549n30yzqjajjud8vm7m4vdspg933s","msg":"ewogICJhZGRfdm90aW5nX3ZhdWx0IjogewogICAgICAibmV3X3ZvdGluZ192YXVsdF9jb250cmFjdCI6ICJuZXV0cm9uMTN2M2YybnBhdHR6MGR3Mmo1ZjdkbHdzZDh2MmxtY2d5dXYzNTh4OHB2M2plYzRkNjBocnM0eDRkcDciCiAgfQp9","funds":[]}}},{"wasm":{"execute":{"contract_addr":"neutron1suhgf5svhu4usrurvxzlgn54ksxmn8gljarjtxqnapv8kjnp4nrstdxvff","msg":"ewogICAgInVwZGF0ZV9zdWJfZGFvcyI6IHsKICAgICAgICAidG9fYWRkIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiYWRkciI6ICJuZXV0cm9uMXpqZHYzdTZzdmxhemx5ZG1qZTJxY3A0NHlxa3QwMDU5Y2h6OGdteWw1eXJrbG1ndjZmenE5Y2hlbHUiCiAgICAgICAgICAgIH0KICAgICAgICBdCiAgICB9Cn0=","funds":[]}}},{"bank":{"send":{"to_address":"neutron1zjdv3u6svlazlydmje2qcp44yqkt0059chz8gmyl5yrklmgv6fzq9chelu","amount":[{"denom":"untrn","amount":"16000000000000"}]}}},{"bank":{"send":{"to_address":"neutron18e8vga4gqaerheumv05xausjctf8qj8suw9l2swm3c5f7z864yysx73nw2","amount":[{"denom":"untrn","amount":"4000000000000"}]}}}],"status":"execution_failed","votes":{"yes":"13765960735141","no":"0","abstain":"129767163"},"allow_revoting":true}},{"id":9,"proposal":{"title":"Engage CryptoCrew and IcyCRO to secure higher IBC service level on up to 50 connections","description":"This is a signaling proposal, it does not trigger any on-chain action.\n\n# Summary\n\nSignal support for Meson Labs to engage CryptoCrew and IcyCRO to relay IBC channels between Neutron and up to 50 other networks, at a yearly cost of $94,800.\n\n# Problem Statement\n\nTo function to the best of its ability, Neutron requires reliable IBC relayers operating on all of its main connections. Poor relayer service affects user experience and increases risks for cross-chain protocols.\n\nUnfortunately, the current economics of relaying does not sustainably support permissionless relaying. Mid-long term solutions to refund/incentivize relayers are currently being worked on with ICS-29, Protocol-Guild-Like solutions etc, but are not ready/widely adopted in production yet.\n\n# Solution\n\nTo ensure a high degree of service on crucial channels while better solutions are being developed, an RFP/RFQ process was conducted on the Neutron forum, which received proposals from CryptoCrew, IcyCRO, P2P and Tesselated.\n\n[Read the full RFP](https://forum.neutron.org/t/rfq-relayer-services-for-neutron/109)\n\nBased on the proposals received during the RFP/RFQ process, the recommended outcome was to engage both CryptoCrew and IcyCRO as relayers based on the following terms:\n\n[CryptoCrew](https://forum.neutron.org/t/rfq-relayer-services-for-neutron/109/7): $90,000 per year for 50 network pairs\n\n[IcyCRO:](https://forum.neutron.org/t/rfq-relayer-services-for-neutron/109/10) $4,800 per year for 14 network pairs.\n\nIf approved, Meson Labs will work with the above mentioned firms to enter Definitive Agreements for the provision of the service. Payments will be settled in NTRN. \n\n# Governance Votes\n\nThe following items summarise the voting options and their significance for this proposal:\n\n**YES** - You would like Meson Labs to engage CryptoCrew and IcyCRO to provide relayer services for the Neutron network.\n\n**NO** - You would like Meson Labs to abstain from engaging CryptoCrew and IcyCRO to provide relayer services for the Neutron network, or disagree with the proposed engagement terms. \n\n**ABSTAIN** - You wish to contribute to quorum but you formally decline to vote either for or against the proposal.","proposer":"neutron1cpy2gpwc8lphzyczderwma2rt5nqdmvtyyl26f","start_height":2706738,"min_voting_period":null,"expiration":{"at_time":"1694989974335910202"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"43993495974862","msgs":[],"status":"executed","votes":{"yes":"13743627022538","no":"26060396813","abstain":"67823398248"},"allow_revoting":true}},{"id":8,"proposal":{"title":"Engage Oak Security to launch an audit sponsorship program ","description":"This is a signaling proposal, it does not trigger any on-chain action.\n\n# Problem Statement\nEnsuring a high degree of security throughout Neutron’s DeFi ecosystem is crucial to the long-term success of the platform. Hacks and exploits can drastically slow down progress, damaging not only the platform’s reputation but also its liquidity. Unfortunately, many teams within the ecosystem lack the resources to have their contracts audited by reputable firms. As it stands, there is an urgent need for a mechanism to support these teams on Neutron.\n\n# Solution\nTo address the early auditing needs of the ecosystem, and RFQ/RFP process to secure an audit sponsorship package [has been conducted on the Neutron forum.](https://forum.neutron.org/t/rfq-set-up-a-pilot-audit-sponsorship-program-for-smart-contract-projects-looking-to-launch-on-neutron/81/1)\n\nThis process has helped identify offers, based on which Meson Labs recommends to purchase a 12 Auditing Week package from Oak Security for $326,400. \n\nSee the full proposal: [Oak Security - Neutron Ecosystem Audits](https://pin.ski/45KFecX)\n\nIf approved by governance, the sponsorship package with Oak Security will be entered by Meson Labs, a subsidiary of the Neutron Foundation, on behalf of the Neutron DAO, using the Foundation’s reserves.\n\nThe price will be paid with a combination of USDC (80%) and NTRN (20%). The price of NTRN will be determined by a 4W TWAP (the price will be calculated at the time of execution, but, for the sake of illustration, this would currently be ~0.37$ per NTRN). Oak Security has agreed to a one-year vesting period on NTRN. \n\nThis package is expected to cover at least 6 protocol audits, potentially more, depending on the scope of the code and its maturity. \n\n# Governance Votes\n\nThe following items summarise the voting options and their significance for this proposal:\n\n**YES** - You agree with the initiative of bootstrapping a pilot audit sponsorship program and would like Meson Labs to enter into a contractual agreement with Oak Security based on the terms of the attached proposal.\n\n**NO** - You disagree with the initiative of bootstrapping a pilot audit sponsorship program or wish to express a vote against the terms of Oak Security’s proposal.\n\n**ABSTAIN** - You wish to contribute to quorum but you formally decline to vote either for or against the proposal.","proposer":"neutron1cpy2gpwc8lphzyczderwma2rt5nqdmvtyyl26f","start_height":2706173,"min_voting_period":null,"expiration":{"at_time":"1694987890889241119"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"43997779876437","msgs":[],"status":"executed","votes":{"yes":"13650282281319","no":"4909233234","abstain":"103649541044"},"allow_revoting":true}},{"id":7,"proposal":{"title":"Neutron Grants Program","description":"## Summary\n\nAt AlphaGrowth We believe that the most important strategy a ecosystem can fund are dApps people want to use and dApps that make revenue. We have optimized a hit list of 15 top dApps that will help move the needle in any ecosytem. These dApps are looking for their next chain to build on.\n\nIn the next 90 days we plan to bring at least 3 champion dApps to Neutron that will add more value and utility to Neutron than the cost. This is what we believe would be a minimum viable trial in which we can show the efficacy of AlphaGrowth and the team and platform. We are the best ecosystem growth team in the industry working with us will skyrocket Neutron's brand and awareness to 1000's of developers and projects as well as the quality teams that matter.\n\nWith this trial we will prove that we have the capabilities and strategies to help grow Neutron.\nWe look forward to working with you and the community.\n\n## Introduction\n\nNeutron is the first smart contract platform on the CosmosHub via ICS. Neutron is run by Web3's best and brightest infra minds, with maximum uptime and optimized performance built into its core.\n\nIn alignment with Avril and Neutron’s presentation at the Gateway Conference(https://www.youtube.com/watch?v=Bto-iaG0wMQ). AlphaGrowth is proposing to help deliver on the strategy and execution for Neutrons GrantsDAO.\n\nThe AlphaGrowth Team has identified multiple opportunities to help increase protocol value for both Neutron InterChain, NTRN tokens and eventually the CosmosHub.\n\nThe Neutron team, in response, has requested a proposal to help the protocol succeed and expand its footprint.\n\nThis strategy involves 4 phases of delivery and execution.\n\n1. Economic Zone Audit (redacted for trial)\n2. Grants Setup, Strategy \u0026 Messaging (redacted for trial)\n3. Ecosystem Growth\n4. DeFi Operations \u0026 Listings\n\n## Engagement Strategy\n\n### Overview of Engagement Strategy\n\nHistory is the best teacher when looking to understand how we approach an effective engagement. We fundamentally understand what success looks like, and more importantly, how we’re going to get there.\n\n“Humility is the solid foundation of all virtues. You can't build a great building on a weak foundation. You must have a solid foundation if you're going to have a strong superstructure.” –Gordon B. Hinkley\n\n### Neutron Audit\n\n#### Weak Infrastructure == Common Blocker\n\nEvery Blockchain we speak with boasts that “We have the best tech.”\n\nComposable, Interoperable, Compressed, Fast Finality, Cross-chain, Secure, high TPS. Sure, these are all great features, but they are quickly becoming the status quo in the space. In other words, these features will no longer move the needle, however lacking these features will leave you out of the race entirely. Unless of course, you have your infrastructural ducks in a row.\n\nWith the right infrastructure in place, many of the advantages and disadvantages of each individual chain are muted. Without proper infrastructure, it’s tough to even have a seat at the table, let alone win the game.\n\nWhales want to use a bridge with minimal fees and minimal risk, and that’s the narrative that Neutron can help so many blockchains offer.\n\nWe will provide a roadmap and strategy on the ideal economic zone layout. From a quick initial review there are many emergent opportunities around Shared Security, Liquid Staking, the Allocator, CosmWasm, and Neutron. Along with opportunities that identify shortfalls, we see that can benefit from the addition of multiple types of DeFi dApps, money markets (lending protocols), bonding protocols, options, yield optimizers, vaults, voter escrow DEXes, leveraged LP positions, secondary bond markets, and even another DEX or two.\n\nWe will provide an audit of all existing Neutron use cases to see what currently exists on how every user can utilize the Neutron token. We will outline a map of gaps of utility in the Neutron token.\n\nWe will provide an audit to identify common onboarding blockers and strategy on how to mitigate them. We will outline and describe many of the common onboarding blockers.\n\n#### Current Use Case Mapping\n\nBefore planning for the future, it is best to understand and map out, for the community, what is available currently for Neutron and the Neutron Economic Zone.\n\n* List of all Neutron trading pairs (CEX \u0026 DEX)\n* List of Neutron Lending opportunities (money market, AMM money market)\n* List of all Neutron Staking, Bonding and Liquid staking opportunities\n* List of all Neutron Collateralized debt positions (CDP)\n* List of all Neutron Yield aggregators and strategies\n* List of all Neutron Derivatives, Perpetuals and options\n\n#### Common Onboarding Blockers\n\nOnboarding projects onto a new chain is a massive undertaking. The hub economic zone is responsible for setting up an ecosystem with infrastructure partners, developer resources, and an adequate incentive program. Unmet needs quickly become blockers to overall zone growth.\n\nTop teams are attracted to chains with cutting-edge tech, daily active users, massive liquidity, and substantial transaction volume. However, they will prioritize chain deployments based on the state of the infrastructure, competitiveness of the program, and presence of projects to partner with.\n\nThrough onboarding countless projects onto various L1s and L2s, we’ve gathered a list of common infrastructural needs and blockers:\n\n#### Common Needs:\n\n* Trusted Oracles\n* Robust DEX, Lending and options protocols native on chain\n* Premier RPC node providers\n* Indexer and Subgraph Solutions\n* Available wallets\n* Native Assets\n* MPC wallets\n* Multisig\n* Fiat ramps (Kado, Stably, Transak, Ramp)\n* Payments (Superfluid, MoonPay, Monarch)\n* Off ramps for users\n* Name Service\n* IBC connections, Bridges and cross-chain messaging solutions\n\nCommon Blockers:\n\n* High deployment costs\n* Lack of liquidity drivers and vaults\n* Project’s composability\n* Initial liquidity\n* Tech requirements\n* Lack of marketing support\n* Deployment prioritization\n\nStale ecosystem or lack of projects to partner with The developer’s attention will rain on the ecosystem with the most fertile soil!\nSome examples of solutions we helped solve for Kava:\n\n![image|690x388](https://global.discourse-cdn.com/standard10/uploads/neutronorg/original/1X/9fa2e65486abf539e731b9314c31d92cac06ec6a.png)\n\n### Grants Setup, Strategy \u0026 Messaging\n\nAfter analysis, AlphaGrowth will create a step-by-step playbook and execution plan to advance Neutron . AlphaGrowth will use its resources, push the boundaries of Core Tech available, as well as leverage the upcoming innovations within the Zone including, but not limited to: CosmWasm Module Development, Community Pool Enhancements, Governance in the Neutron Zone, Replicated Security Chains Partnerships, Liquidity Services from Hub and adjustment Neutron Tokenomics.\n\n### Ecosystem Growth\n\nModern portfolio theory says that by investing in more than one stock, an investor can reap a reduction in the riskiness of the portfolio. The same thing runs true in a robust Ecosystem.\n\n#### DeFi Diversification\n\nWithin the context of DeFi there are 27 categories of dApps. By having a solid offering of DeFi dApps, users will be less likely to sell their token. This is the fundamental theory of token optionality. We’ve always held onto dollars, because of how much we can do with them (no matter where we are on Earth).\n\nSome categories of DeFi include:\n\n* DEXs\n* Order books\n* Lending (money market, AMM money market)\n* Fixed-rate lending\n* Liquid staking\n* Collateralized debt positions (CDP)\n* Yield aggregators and strategies\n* Derivatives and options\n* Algo-stables\n* Synthetics\n* Launchpads\n* Reserve currency\n* Concentrated liquidity\n* Prediction markets\n* Indexes (token sets)\n* Privacy services\n* Insurance\n* Flatcoins\n\n![image|690x388](https://global.discourse-cdn.com/standard10/uploads/neutronorg/original/1X/1c63c3ed81f86ef31c8caa128594e4ffd59f6d00.jpeg)\n\nThe more risk adjusted yield and hedge opportunities there are, the less likely the user is to sell. Having 2-3 options for each category will create market competition internally within the ecosystem as well to provide the right mix of products for the community.\n\n## Deliverables\n\n### Ecosystem Growth (BD \u0026 Marketing)\n\nAlphaGrowth, using its Database and relationships with over 50 blockchains, will run business development efforts on behalf of Neutron Bridge. We will work with the foundation and community to identify and sort rank new and existing opportunities with various blockchains.\n\nUsing a data driven approach AlphaGrowth will create opportunities for Neutron Bridge to expand to as well as provide new revenue streams for the protocol.\n\nOur team will begin with the warmest leads; blockchain ecosystem and foundations that we have already established partnerships with. Nearly all of these chains are hungry for high quality bridge infrastructure.\n\nAs we further open up the funnel, we will explore integration with all other EVM and Cosmos based chains that we are tracking in our database.\n\nAlphaGrowth will play the role of the sales and marketing team along with the liaison between the chains and Neutron integration team.\n\nIn similar efforst we eecently we have helped the Kava Ecosystem bring over 83 projects to the Kava chain. This was a 7 month process where we outbound and met with over 2616 teams and projects to source the best builders for the ecosystem.\n\n![image|690x372](https://global.discourse-cdn.com/standard10/uploads/neutronorg/optimized/1X/8e9ff24d472b944263219c1be50f35536b9d1e6f_2_1380x744.png)\n\n### Feeding the Data Beast\n\nSpeaking of optionality, it’s crucial to note: optionality is only real if a user knows that they have it. As it stands, many of the top analytics sites do not reflect NTRN data accurately.\n\nPart of getting more exposure to the Neutron Bridge is feeding the sites where web3 native users consume the data.\n\nOur team will update (and keep up to date) all token terminals and aggregators with correct NTRN data. Some of these sites include DefiLlama, TokenTerminal, CoinGecko, CMC, CrunchBase, Messari, Blockworks, CoinDesk, CryptoFees, and ICO drops.\n\nFeeding proper data into the beast will ensure ubiquitous marketing, educational and value based onboarding experiences.\n\n### Reporting\n\nWe will host weekly meetings with the Neutron community and issue monthly reports with full transparency of operations and deployments. Some of the key components of the reports include:\n\n1. Current Narratives\n2. Pipeline \u0026 Progress of campaigns / integrations\n3. New NTRN utility and listings\n4. Updated data on token terminals and aggregators\n5. New Marketing partners\n6. Use of funds discussions\n\nThe team will establish direct communication channels with the Neutron team to post reports and receive feedback. Neutron will always know where it stands, and more importantly, where it is going.\n\n## Team\n\nFounded in 2018, AlphaGrowth has helped strategize, fund, and market hundreds of blockchain projects. Our mission is to help the next top 1,000 crypto projects get funding and go to market. Our DAO is led by a team of data, mathematics, economists and computer scientists with deep blockchain experience.\n\nPreviously, the founding team built a computer matching algorithm to match 80,000 fintech companies with 7,000 investors and private equity firms. AlphaGrowth is now applying these same principles to match crypto projects to corresponding ecosystem criteria and desires.\n\n## DeFi Heavy, Crypto Native\n\nAlphaGrowth has been involved since the beginning of the DeFi revolution. From the launch of SushiSwap and the vampire attack, AlphaGrowth founders have been trading, yield farming, and lending crypto on decentralized and centralized platforms. With that background, in early 2021, AlphaGrowth helped Sommelier.finance with its entire launch and go-to-market strategy.\n\nThroughout that experience, the team at AlphaGrowth grew and began to expand its services to other crypto projects and blockchains such as NEAR, Kava, Aurora, Dfinity, ThunderCore, and Meter who rely on AlphaGrowth’s marketing, strategy, and growth services to this day.\n\nWe have seen what works and more importantly what doesn’t. The service we offer is a mixture of strategy, brand, narrative, community, events, marketing, and tokenomics. Above all, every project we take on, we want to see exist in the world. We are your partner through the entire process, and we want to be your partner for years to come.\n\nWhy us, and why now?\n\n* We have experience running multiple growth programs\n* We are established and have been in business since 2018\n* Our strategies have proven to be successful even through crypto winter\n* We have met with 100+ ecosystems, and have partnered with many of them\n* We have built a crypto CRM and [dashboard](https://alphagrowth.notion.site/Grant-Review-Dashboard-aaa3c98e187646d2b8c67941aafc6286) to help quickly score, evaluate, and report progress of BD\n* We have are actively tracking on and off-chain data of over 40,000 crypto projects\n* We have 4,500+ relationships in crypto and have deployed projects via grants to over 100 EVM and Cosmos-based projects\n* We have built the best BD team in crypto\n\n## Compensation \u0026 Commission\n\nNeutron Audit, Grants Setup, Strategy \u0026 Messaging:\n\nEstimated 3 months @ $90,000\n\nEcosystem Growth \u0026 Grants Deployment:\n\n|Type of Grant|Fee|\n| --- | --- |\n|Integration/Launch grant|15% minimum|\n|Research grant|15% minimum|\n|RFP/Bounty|15% minimum|\n\n* paid a 15% performance fee on all integrations for non-dilutive capital (grants) successfully introduced by AlphaGrowth LLC\n* AlphaGrowth will receive 5% of such fully funded grants for active conversations for support.\n* AlphaGrowth will collect 5% marketing fee for any fully funded token swaps or OTC trades, throughout this engagement.\n* AlphaGrowth will require a minimum $30,000 per month in Neutron token at contract strike price\n\nNTRN Liquidity Incentives:\n\n|Type of Incentive|Fee|\n| --- | --- |\n|TVL incentive|10%|\n|Transaction volume incentive/rebate|10%|\n|Unique wallet / MAU Milestone incentive|10%|\n|Trading volume incentive|10%|\n|Liquidity incentive to bootstrap / deepen pool|10%|\n\n* Some grants are paid in liquidity incentives for pools will this is a bit less direct than a Grant any liquidity incentives introduced by AlphaGrowth will incur compensation.\n\n## **Funding and Budget**\n\nWe propose to allocate 3,000,000 NTRN (~0.3% of the NeutronDAO’s overall allocation) to the Growth Program. The estimated annual operational budget (not including performance bonus) is as follows:\n\n|**Category**|**Cost**|\n| --- | --- |\n|Legal Expenses|$0|\n|Maximum Cost for Grants Lead|$0|\n|Maximum Cost for Reviewers |$0|\n|Operational Expenses (i.e. General Operations, Website, Social Media, Software Licenses, and Marketing)|$90,000|\n|One-off Reserve Buffer (i.e. Unexpected/Emergency Legal Expenses, Unexpected/Emergency Operational Expenses)|$0|\n|**Total**|**$90,000**|\n\nInitially, we anticipate that the necessary amount required (around $360,000) to cover the operational budget for one year, as well as a certain amount of USD-denominated grants, will be converted into US dollars equivalents; such transactions would be carried over-the-counter (OTC) or in private markets to minimize market impact.\n\n### Timeline\n\nTo ensure long term goal-alignment we are proposing the execution of this strategy be carried out in a 3 month proposal.\n\n### Logistics\n\nAlphaGrowth LLC will service this proposal.\nA multi-sig with the core Neutron team will ensure Neutron has custody of funds where appropriate as per Grants DAO, sub DAO structure aligned in this video (https://youtu.be/Bto-iaG0wMQ?t=697)\n\n# KPI and Bonus Structure\n\n## KPIs\n\n* 3 top projects lined up to launch via the grants program\n\n## Bonus\n\nWe charge a 10% commission for all grants, liquidity incentives, milestone grants upon KPI success. \nTo be voted on by the community discussions every 6 months\n\n**Relevant Links:** https://alphagrowth.io/","proposer":"neutron1nr7y0uyjy3d3w83gzup7ejstc3gckywxeksy2z","start_height":2649751,"min_voting_period":null,"expiration":{"at_time":"1694784725180609290"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"44015988714776","msgs":[{"bank":{"send":{"to_address":"neutron1uj3t3w6uh6hw44lcrprvszwcrqectwdtxgp9a4","amount":[{"denom":"untrn","amount":"3000000000000"}]}}}],"status":"rejected","votes":{"yes":"162551097798","no":"454196276834","abstain":"125099124116"},"allow_revoting":true}},{"id":6,"proposal":{"title":"Update the Airdrop Contract to facilitate NTRN delivery to Cosmos Hub","description":"# Summary\n\nThe terms of the security agreement between Neutron and the Cosmos Hub, defined in [Prop 792](https://forum.cosmos.network/t/proposal-792-accepted-launch-neutron-on-replicated-security/10230), include the transfer of unclaimed tokens from the NTRN airdrop to the Cosmos Hub. \n\nTo ensure the successful and trustless delivery of tokens to the Cosmos Hub, a simple upgrade to the [airdrop contract](https://neutron.celat.one/neutron-1/contracts/neutron198sxsrjvt2v2lln2ajn82ks76k97mj72mtgl7309jehd0vy8rezs7e6c56) is recommended. \n\nIf approved, this proposal will upgrade the contracts as follows:\n\n1. Make the withdraw method permissioned and triggerable by the Neutron DAO or the recipient address (which is currently set to the AADAO multisig). This is to ensure that the withdrawal is only triggered once the right set of contracts is available and set as the recipient.\n2. Add a message that enables the current recipient address (AADAO) to update the recipient address. This will be used to update the withdrawal address to the transfer contracts once deployed. \n\n# Full description\n\nThe terms of the security agreement between Neutron and the Cosmos Hub, defined in [Prop 792](https://forum.cosmos.network/t/proposal-792-accepted-launch-neutron-on-replicated-security/10230), mention that airdrop “tokens left unclaimed after three months, if any, will be sent to the Cosmos Hub.” \n\nAt genesis, to ensure tokens could only be withdrawn to a Cosmos-Hub aligned account, the withdrawal address for the unclaimed airdrop tokens was set to the ATOM Accelerator DAO’s multisig address. \n\nDelivering the NTRN to the Cosmos Hub can be achieved in a number of ways:\n\n- **Ownership only:** The tokens could be sent to the Cosmos Hub community pool. Since the community pool can only be funded via a special message on the Hub, automating the transfer would require a special smart contract to control an Interchain Account on the Hub. This contract is currently being developed by Hadron Labs.\n- **Ownership + Voting Power:** The tokens could be sent to a DAO contract owned by Cosmos Hub governance. This would allow the Cosmos Hub to not only own the tokens, but also wield significant voting power in Neutron governance. These contracts are also being developed by Hadron Labs and Timewave, but may require enabling the ICA-controller and/or express proposals functionality on the Cosmos Hub to fully function.\n\nDeciding which solution should be implemented should be done by Cosmos Hub governance, and a proposal detailing options is expected to be shared on [forum.cosmos.network](http://forum.cosmos.network) shortly. \n\nIn the meantime, the existing [airdrop contract](https://neutron.celat.one/neutron-1/contracts/neutron198sxsrjvt2v2lln2ajn82ks76k97mj72mtgl7309jehd0vy8rezs7e6c56) should be upgraded to ensure the tokens are only transferred once the Cosmos-Hub-sanctioned set of contract has been implemented, to minimize operational risk and ensure successful delivery.\n\nTherefore, while the contracts are being worked on, we propose to update the [airdrop contract](https://neutron.celat.one/neutron-1/contracts/neutron198sxsrjvt2v2lln2ajn82ks76k97mj72mtgl7309jehd0vy8rezs7e6c56) to make the method to trigger withdrawal permissioned. \n\nThis would only allow the Neutron DAO and/or the ATOM Accelerator DAO multisig on Neutron to trigger the withdrawal of unclaimed airdrop tokens to the recipient address. This measure is recommended to ensure the withdrawal is not triggered prematurely, which could otherwise create additional technical and operational overhead. \n\nFurthermore, this proposal adds a method to the [airdrop contract](https://neutron.celat.one/neutron-1/contracts/neutron198sxsrjvt2v2lln2ajn82ks76k97mj72mtgl7309jehd0vy8rezs7e6c56) to enable the current recipient (e.g. AADAO) to update the recipient address. Once Cosmos-Hub sanctioned transfer/governance contracts have been deployed, the AADAO would use this method to make the transfer/governance contracts the recipient for the tokens. The withdrawal to the transfer/governance contracts would then be triggered, delivering the tokens to the Cosmos Hub.\n\n# How to check the proposal's correctness\n\nThe proposal consists of a single `migrate` message with the changes described above. These changes are reflected in the following diff: [https://github.com/neutron-org/neutron-tge-contracts/compare/v0.4.4...v0.4.5](https://github.com/neutron-org/neutron-tge-contracts/compare/v0.4.4...v0.4.5)\n\nHow to verify the binary:\n\n```\n$ git clone https://github.com/neutron-org/neutron-tge-contracts.git\n$ cd neutron-tge-contracts\n$ git checkout v0.4.5\n$ make build\n$ shasum -a 256 artifacts/cw20_merkle_airdrop.wasm\n\nbc386865a32e3817513866704911e90215d9875f7aeb893280a70735c71434fe artifacts/cw20_merkle_airdrop.wasm\n```\n\n`bc386865a32e3817513866704911e90215d9875f7aeb893280a70735c71434fe` is the hash of the Airdrop contract binary you've built on your machine.\n\nTo verify that the migration will happen to the proper binary you should get a hash of the deployed contract by its code id (you can see a `new_code_id` in the message to be executed below):\n\n```\n$ neutrond q wasm code-info 196 --node https://rpc-kralum.neutron-1.neutron.org:443 --output json | jq \".data_hash\"\n\n\"BC386865A32E3817513866704911E90215D9875F7AEB893280A70735C71434FE\"\n\n```\n\nIf hashes are equal (case insensitive), that means the deployed binary is correct and contains all the changes above.\n\n# Governance Votes\n\nThe following items summarise the voting options and their significance for this proposal:\n\n**YES** - You agree to update the [airdrop contract](https://neutron.celat.one/neutron-1/contracts/neutron198sxsrjvt2v2lln2ajn82ks76k97mj72mtgl7309jehd0vy8rezs7e6c56) to add permission for the clawback function, and enable the recipient to update the recipient address.\n\n**NO** - You disagree to update the [airdrop contract](https://neutron.celat.one/neutron-1/contracts/neutron198sxsrjvt2v2lln2ajn82ks76k97mj72mtgl7309jehd0vy8rezs7e6c56) to add permission for the clawback function, and enable the recipient to update the recipient address. You understand that this may lead to the premature transfer of the tokens to the AADAO multisig on Neutron.\n\n**ABSTAIN** - You wish to contribute to quorum but you formally decline to vote either for or against the proposal.\n","proposer":"neutron1n9flucjrlwsxtm096geha2s54xraemwmfncyu3","start_height":2343695,"min_voting_period":null,"expiration":{"at_time":"1693682090155681531"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"29187501755510","msgs":[{"wasm":{"migrate":{"contract_addr":"neutron198sxsrjvt2v2lln2ajn82ks76k97mj72mtgl7309jehd0vy8rezs7e6c56","new_code_id":196,"msg":"e30="}}}],"status":"executed","votes":{"yes":"6600049967585","no":"14151982334","abstain":"1281349226"},"allow_revoting":true}},{"id":5,"proposal":{"title":"Make Neutron Timewave’s Home Through Long-Term Incentive Alignment","description":"# See the forum post for details and continued discussion\n\nhttps://forum.neutron.org/t/draft-proposal-v2-make-neutron-timewave-s-home-through-long-term-incentive-alignment/48 \n\n# Introduction\n\nWe, [Timewave](https://twitter.com/TimewaveLabs), are a team primarily composed of co-authors of the[ Cosmos Hub white paper](https://gateway.pinata.cloud/ipfs/QmdC3YuZBUq5b9mEr3bKTDRq4XLcxafe3LHqDNFUgUoa61) (ATOM 2.0). There are several Interchain institutions that we are interested in building, including the Interchain Allocator, and we are seeking a community with which to partner to build these institutions and invent new ones. This proposal is for Timewave to enter into a long-term, incentive-aligned partnership with Neutron to make Neutron Timewave’s primary home, which would lead Timewave to work on endeavors that are directly and/or indirectly value accretive to Neutron, such as the Rebalancer, Covenants, and public goods funding infrastructure.\n\nWe are reaching out to Neutron with this partnership proposal because of our cultural alignment with Neutron in building robust permissionless software, our belief that Neutron can serve as a best-in-class technical platform on which to build the Allocator, and because a Cosmos Hub-secured Neutron can be an effective attractor of liquidity.\n\nWith this proposal, we seek to align on terms and expectations for an enduring partnership.\n\n## Summary of proposed terms:\n\n**Timewave to:**\n\n* build its flagship products on Neutron, including the Interchain Allocator\n* share 20% of Allocator revenue with Neutron for the first 36 months\n\n**Neutron to issue Timewave tokens on the following schedule:**\n\n* 0.00% of Neutron token supply upfront\n* 0.33% of Neutron token supply unlocking at the end of month 12\n* 0.67% of Neutron token supply unlocking linearly over months 13-36\n\n## Team\n\nTimewave believes that crypto has laid the foundation for permissionless digital institutions that enable humanity to collaborate with unprecedented scope and scale. We have strong ties to the Cosmos ecosystem, deep knowledge of the tech stack, and are best positioned to execute on the vision outlined here. Our core team includes:\n\n[Max Einhorn](https://twitter.com/max_einhorn): Lead architect of Interchain Allocator,[ interchain maxi since 2017](https://cosmos.tiiny.site/), former financial services management consultant at Oliver Wyman, and Wharton finance.\n\n[Sam Hart](https://twitter.com/hxrts): Formerly Board of Management, Grants Manager, and Cosmos Stack Product at ICF; wrote ATOM 2.0; currently Head of Product and Strategy at Skip.\n\n[Udit Vira](https://twitter.com/UditVira): Co-founder at Hypha Coop, leading Replicated Security testnets, managed Game of Chains and helped bring ICS to Neutron’s Baryon and Pion-1 persistent testnets, engineer and governance consultant for many decentralized communities.\n\n# Timewave’s First Contribution to Neutron: Interchain Allocator\n\nThe Interchain Allocator was initially described in the ATOM 2.0 white paper. The Allocator is an internet-native institution that seeks to play a leading role in advancing crypto as an alternative financial system. Timewave is the team leading the buildout of the Interchain Allocator, intending for it to enable permissionless collaboration with unprecedented scope and scale. In our vision, all who endeavor to grow the interchain are limited not by tools or resources, but only their own imaginations.\n\nThe Allocator is initially composed of two components: Rebalancer and Covenants.\n\n**Rebalancer**: The minimum viable implementation of the Rebalancer will enable protocols to set a desired portfolio construction (e.g., 75% native token, 25% stabletoken) and automatically rebalance the portfolio to remain at the desired construction as prices shift.\n\n**Covenants**: The early implementation of the Covenant system will enable protocols to 1) swap tokens, 2) convert tokens into liquid-staked tokens, and 3) create liquidity provider (LP) tokens with a timelock.\n\nWhile these two primitives start simple and independent, we intend for the primitives to evolve toward one another. The Covenant system will become a general-purpose initiator of DAO-to-DAO economic relationships while the Rebalancer allows DAOs to more easily manage internal resources and foreign economic policy. The primary form of economic relationship the Allocator seeks to foster is liquidity sharing between DAOs (e.g., Cosmos Hub lending ATOM liquidity to Neutron).\n\n**Note 1**: *The Interchain Allocator is an inherently multichain institution. As such, pieces of the Allocator may be built in the Cosmos SDK or outpost contracts on other chains. Timewave commits to making Neutron the default chain upon which to build Allocator components and only build elsewhere when there is a positive-sum reason to do so.*\n\n**Note 2**: *Components of the Allocator generate network effects, benefit from liquidity aggregation, and will be difficult to effectively fork elsewhere. While we’re interested in a long-term partnership regardless of what we build, these characteristics of the Allocator make a long-term partnership even more appropriate.*\n\n# Allocator’s Value Proposition\n\nThe Allocator will add value to Neutron in the following ways:\n\n## 1. ATOM liquidity\n\nAttracting ATOM liquidity would enable Neutron to outcompete incumbent Cosmos power centers that already have significant liquidity. By using the Allocator to develop economic ties with the Cosmos Hub—the chain/community with the most liquid and valuable token—Neutron increases its chances of success.\n\nBy building the Allocator on Neutron, Neutron would be well positioned to lobby the Cosmos Hub for ATOM liquidity. In return, MEV originated by the Allocator is shared with ATOM stakers as per the replicated security agreement between Neutron and the Hub.\n\n## 2. Increase Neutron MEV revenue\n\nWhile we will prioritize our customers by doing everything we can do to get them the best possible execution, some transactions will inevitably result in MEV opportunities. As currently designed, the Rebalancer will host regular Dutch auctions to rebalance treasuries to their desired compositions. By building the Allocator (including the Rebalancer) on Neutron, we would route all of the orders to auctions that take place on Neutron, thus increasing the value of Neutron’s blockspace and increasing MEV opportunities.\n\nMEV is especially valuable because replicated security is unprofitable for some validators. Increasing MEV opportunities would decrease pressure on Neutron to subsidize validators with Neutron tokens.\n\n## 3. Solidify Neutron as Cosmos power center\n\nThe Allocator was one of the most popular elements of ATOM 2.0 and the first piece that[ Polkadot embraced](https://forum.polkadot.network/t/implementing-an-allocator-module-for-the-dot-treasury/826). It is widely considered to be the next[ natural](https://twitter.com/zmanian/status/1633652553413021698?s=20)[ step](https://twitter.com/Wickex2/status/1643906983198613504?s=20) in the story of the ATOM Economic Zone. By choosing to build the Allocator on Neutron, the Allocator will act as a powerful social signal as Neutron seeks to recruit blue-chip projects. The Allocator validates Neutron as the premier DeFi platform of the Interchain.\n\n## 4. Attract new capital to Neutron\n\nThe Allocator not only seeks to improve protocol-to-protocol coordination and treasury management—it also seeks to become the primary entry point for new capital to enter the Cosmos ecosystem. New non-retail capital primarily enters Cosmos via venture capital investment into new projects or follow-on investments via growth capital. Venture and growth capital are two small sources of capital relative to the financial markets as a whole and there are not enough viable venture- and growth-style investment opportunities to absorb the many billions of dollars seeking deployment into crypto. The Allocator is an excellent tool for anyone to use to structure new financial products that cater to new funding sources.\n\n## 5. Demonstrate Neutron’s capabilities\n\nOne of Neutron’s key advantages relative to incumbents will be cutting-edge cross-chain features, such as interchain queries. The Allocator is a set of inherently cross-chain primitives. By building the Allocator on Neutron, Neutron would immediately have an experienced team building a flagship product that demonstrates the capabilities that are available for teams that choose to build on Neutron.\n\n# Example of Timewave’s Value Beyond the Allocator: Public Goods Funding on Neutron\n\nAs an early example of the value that Timewave seeks to bring to Neutron beyond the buildout of the Allocator, Timewave is collaborating with core Neutron teammates and other Cosmos core teams to make Neutron a major home for Interchain public goods coordination and funding. Timewave is helping to make this happen by architecting a public goods funding solution that is inspired by [Protocol Guild](https://protocol-guild.readthedocs.io/en/latest/#). By making Neutron the primary home for a Protocol-Guild-like solution, Neutron would ensure that its voice is heard when seeking to build public goods that Neutron is especially interested in and Timewave would benefit by gaining additional users for the DAO-to-DAO tooling that Timewave is developing via the Allocator.\n\nThe Allocator and this public goods funding solution are just the first two ideas that Timewave is bringing to Neutron. By entering into this partnership, Neutron would attract Timewave’s mindshare, which would likely lead to new ideas and products that are uniquely enabled by working together.\n\n# Key Performance Indicators (KPIs)\n\n## 1. Covenant\n\n a. Number of covenants made\n b. TVL of liquidity shared via covenants\n c. TVL of liquidity shared via covenants on Neutron-based DEXs\n d. TVL of NTRN-paired liquidity shared via covenants\n e. Market share of blockchain-to-blockchain liquidity sharing\n\n## 2. Rebalancer\n\n a. Number of DAOs using the Rebalancer\n b. Volume of swaps made via the Rebalancer\n c. Net purchase of NTRN made via the Rebalancer\n d. Market share of DAO treasury management\n e. Execution quality relative to other Cosmos DEXes\n\n## 3. Public goods\n\n a. Number of grants made via Neutron-based funding system\n b. Amount of public goods funding directed via Neutron-based funding system\n\n## 4. M\u0026A\n\n a. Number of M\u0026A deals facilitated by Timewave teammates\n b. Size of M\u0026A deals facilitated by Timewave teammates\n c. Number of developers attracted to Neutron to build upon the Allocator and other Timewave-supported institutions\n\n# Proposal Terms\n\n**Timewave to:**\n\n* build its flagship products on Neutron, including the Interchain Allocator\n* share 20% of Allocator revenue with Neutron for the first 36 months\n\n**Neutron to issue Timewave tokens on the following schedule:**\n\n* 0.00% of Neutron token supply upfront\n* 0.33% of Neutron token supply unlocking at the end of month 12\n* 0.67% of Neutron token supply unlocking linearly over months 13-36\n\nTimewave will have full voting power during the token transfer restriction period. Timewave will only be able to vote if/when delegations are enabled.\n\n**Termination Clause**: The Neutron community may terminate the vesting of tokens to Timewave if Timewave leaves the Neutron community, builds core Allocator components on other chains that it could have built just as easily on Neutron, terminates revenue share, or fails to generate meaningful value for the Neutron network. Deploying components such as outposts on other chains would not qualify as a breach because they add value to the Allocator, thereby adding value to Neutron. If Neutron terminates prior to the end of month 12, Timewave will still receive 0.33% of Neutron token supply at the end of month twelve. This compromise addresses Neutron’s concern of preventing early token dumping while also helping to strengthen Timewave’s negotiating position with investors in case Timewave is unable to secure a grant to pay for the first 12 months of development.\n\n**Note 1**: *Cliff, vesting, and revenue share begin as of July 6, 2023*\n\n**Note 2**: *Timewave’s revenue share exclusively applies to revenue generated from usage of the Allocator (e.g., Rebalancer fees and Covenant fees). This excludes grants, investments, and other income that Timewave may receive.*\n\n# Conclusion\n\nThank you for considering our proposal to enter into a long-term, incentive-aligned partnership. We hope that we have clearly articulated why it is in both of our best interests to work together and that you agree that we have proposed fair terms. We welcome any questions you may have.\n\nCheers,\n\nTimewave\n\nMax Einhorn:[ @max_einhorn](https://twitter.com/max_einhorn)\n\nSam Hart:[ @hxrts](https://twitter.com/hxrts)\n\nUdit Vira:[ @uditvira](https://twitter.com/UditVira)\n","proposer":"neutron1ayw8xtxkty5cfzx44z6vxpevmtudg2n3d2sfz8","start_height":1891316,"min_voting_period":null,"expiration":{"at_time":"1692053830615885027"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"30367693246116","msgs":[{"wasm":{"execute":{"contract_addr":"neutron1627cxkqsvz03s0g5fwe2g3td5lgfj2nhc8wqhmqss5fml38vw8nq3qrgv2","msg":"ewogICJzZXRfdmVzdGluZ190b2tlbiI6IHsKICAgICJ2ZXN0aW5nX3Rva2VuIjogewogICAgICAibmF0aXZlX3Rva2VuIjogewogICAgICAgICJkZW5vbSI6ICJ1bnRybiIKICAgICAgfQogICAgfQogIH0KfQ==","funds":[]}}},{"wasm":{"execute":{"contract_addr":"neutron1627cxkqsvz03s0g5fwe2g3td5lgfj2nhc8wqhmqss5fml38vw8nq3qrgv2","msg":"ewogICJyZWdpc3Rlcl92ZXN0aW5nX2FjY291bnRzIjogewogICAgInZlc3RpbmdfYWNjb3VudHMiOiBbCiAgICAgIHsKICAgICAgICAiYWRkcmVzcyI6ICJuZXV0cm9uMXB6M2N1cjZ2MGZ2ZXVydGphdW50eXZ2djVhbTVkbjQwamd3emEyIiwKICAgICAgICAic2NoZWR1bGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAic3RhcnRfcG9pbnQiOiB7CiAgICAgICAgICAgICAgInRpbWUiOiAxNzIwMjk3MjAwLAogICAgICAgICAgICAgICJhbW91bnQiOiAiMzMwMDAwMDAwMDAwMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImVuZF9wb2ludCI6IHsKICAgICAgICAgICAgICAidGltZSI6IDE3ODMzNjkyMDAsCiAgICAgICAgICAgICAgImFtb3VudCI6ICIxMDAwMDAwMDAwMDAwMCIKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfQogICAgXQogIH0KfQ==","funds":[{"denom":"untrn","amount":"10000000000000"}]}}},{"wasm":{"execute":{"contract_addr":"neutron1f6jlx7d9y408tlzue7r2qcf79plp549n30yzqjajjud8vm7m4vdspg933s","msg":"ewogICJhZGRfdm90aW5nX3ZhdWx0IjogewogICAgICAibmV3X3ZvdGluZ192YXVsdF9jb250cmFjdCI6ICJuZXV0cm9uMWR6aDYyYWh0bDQ0cjZuZGE4eXhsamw5NDJwa2d3aHFnNmsydjd3ejhxNmg3NW1sd3dleHN1ODNkZW0iCiAgfQp9","funds":[]}}}],"status":"unknown","votes":{"yes":"727858265053","no":"2146693595710","abstain":"8192305871"},"allow_revoting":true}},{"id":4,"proposal":{"title":"Technical Omnibus 1","description":"## Summary\n\nIn this omnibus proposal, we suggest the following changes:\n\n* Migrate the Lockdrop contract\n\n\n## The problem\n\nIn the current release of TGE contracts, the Lockdrop contract contains a bug which doesn't allow users to claim their incentives from the Astroport Generator contract, because the Lockdrop expects a CW20 token as incentives and not a native one. The bug doesn't affect the accrual mechanism of the incentives, only the claiming mechanism.\n\n\n## The solution\n\nHadron Labs has fixed the bug by replacing CW20 queries and messages with a native Cosmos-SDK Bank queries and messages.\n\n### Technical details\n\n1. Diff: https://github.com/neutron-org/neutron-tge-contracts/compare/v0.4.3...v0.4.4\n\n3. How to verify the fix:\n```\n$ git clone https://github.com/neutron-org/neutron-tge-contracts.git\n$ cd neutron-tge-contracts\n$ git checkout v0.4.4\n$ make build\n$ shasum -a 256 artifacts/neutron_lockdrop.wasm\n\nf0ec69d21b1df5a63cdc72c5e3234cdd0f82981ac51949b7c6f6656676380d0a artifacts/neutron_lockdrop.wasm\n```\n`f0ec69d21b1df5a63cdc72c5e3234cdd0f82981ac51949b7c6f6656676380d0a` is the hash of the Lockdrop contract binary you've built on your machine.\n\nTo verify that the migration will happen to the same proper binary you should get a hash of the deployed contract by it's code id (you can see a `new_code_id` in the message to be executed below):\n```\n$ neutrond q wasm code-info 50 --node https://rpc-kralum.neutron-1.neutron.org:443 --output json | jq \".data_hash\"\n\n\"f0ec69d21b1df5a63cdc72c5e3234cdd0f82981ac51949b7c6f6656676380d0a\"\n```\nIf hashes are equal, that means the deployed binary is correct and contains all the fixes above.","proposer":"neutron1tf06ek932vr8snlxjt2zq260ptrcd7pctyy3j0","start_height":593759,"min_voting_period":null,"expiration":{"at_time":"1687536533899495383"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"37739657665677","msgs":[{"wasm":{"migrate":{"contract_addr":"neutron1ryhxe5fzczelcfmrhmcw9x2jsqy677fw59fsctr09srk24lt93eszwlvyj","new_code_id":50,"msg":"e30="}}}],"status":"executed","votes":{"yes":"4771083982616","no":"228140195","abstain":"39451244492"},"allow_revoting":true}},{"id":3,"proposal":{"title":"Launch the AEZ Accelerator with AADAO and LonghashX","description":"**Summary**\n\nThis proposal seeks approval from the Neutron DAO for the Neutron Foundation to enter an agreement with LonghashX and the ATOM Accelerator DAO (AADAO), to launch the ATOM Economic Zone Accelerator Program (AEZ Accelerator).\n\nThe programs, scheduled to start in mid-August, would be co-funded by the Neutron Foundation and AADAO, each providing $250,000 for a total of $500,000. It would be operated by LonghashX, a leading web3 Accelerator.\n\nThe programs would provide support to 25-30 startups and accelerate the growth of the 5 most promising projects building on Neutron and the ATOM Economic Zone.\n\n**Governance Vote**\n\nThis proposal is a text proposal, it does not trigger any on-chain action. If approved by the Neutron DAO, the content of this proposal will be executed by the Neutron Foundation. The following items summarize the voting options and their significance for this proposal:\n\n- **YES** - You approve the proposed Accelerator program and authorize the Neutron Foundation to enter an agreement with LonghashX and the ATOM Accelerator DAO and provide $250,000 in funding to jointly support the 5 most promising projects.\n- **NO** - You do not approve of the proposed Accelerator program and do not authorize the Neutron Foundation to enter an agreement with LonghashX and the ATOM Accelerator DAO nor provide $250,000 in funding to jointly support the 5 most promising projects.\n- **ABSTAIN** - You wish to contribute to quorum but you formally decline to vote either for or against the proposal.\n\n**Background**\n\n- The ATOM Accelerator is a grant focused DAO and its primary focus is to incubate open source ecosystem initiatives that directly drive value to the Cosmos Hub, including interchain public goods. It supports contributors to various verticals including Replicated Security, Governance, Decentralized Identity amongst others. **For more information, visit:** [Website](https://www.atomaccelerator.com/) | [Twitter](https://twitter.com/ATOMAccelerator) | [LinkedIn](https://www.linkedin.com/company/atom-accelerator-dao/)\n- LongHashX is the world’s leading Web3 accelerator. We partner with the leading Web3 ecosystems and infrastructure protocols to build their developer communities by funding and venture building with early-stage founders. **For more information, visit:** [Website](https://www.longhash.vc/accelerator/) | [Twitter](https://twitter.com/LongHashX)\n\n**Value to Neutron**\n\nAs a new smart-contract platform, Neutron will need to bootstrap a strong ecosystem to remain relevant and grow its presence in the ecosystem.\n\nAmong the dozens of projects which have already committed to launching on Neutron, many are migrating or redeploying from other Cosmos chains or from Ethereum. This helps bootstrap Neutron’s ecosystem and tie the network’s initial financial and diplomatic ties with other ecosystems.\n\nNevertheless, Neutron should strive to bring innovation and encourage brand new projects to launch on the network and leverage its security and advanced cross-chain features.\n\nParticipating in the AEZ Accelerator as a funding partner would help drive promising projects to Neutron, and ensure they can ship the best possible products by providing financial and strategic support to their core teams throughout the development process.\n\n**Approach**\n\n**AEZ Accelerator Program**\n\nFive projects building on Neutron or Cosmos Partner Chains will be accepted into the AEZ Accelerator and each project will receive US$100,000 in funding.\n\nOn top of the funding received, these projects will also undergo the most web3-native curriculum and hands-on support. The 12-week program in this cohort will include a series of workshops and fireside chats across six modules, including Web3 Product Strategy \u0026 Design, Ecosystem Deep Dive, Tokenomics \u0026 Governance, Community Building, Web3 Legal, and Fundraising.\n\nEach project participating through this route will have a dedicated Program Lead and Venture Builder, who will meet them weekly for problem-solving sessions and to be a thought partner to help the founders with their toughest challenges.\n\nIn addition to the mentors from ATOM Accelerator DAO, Neutron \u0026 other Cosmos’ Partner Chains contributors, the selected projects will also get access to LongHash Web (LHW), the world’s first soulbound token-based on-chain contribution network, to meet one-on-one with notable mentors in the wider Web3 space that include leading founders, investors, and developers. LHW’s 100+ mentors include founders of Safe, Axelar, AltLayer, Balancer, Dodo; investors at Pantera, Polychain, Gumi, Multicoin, Collab+Currency, Hashkey, and DeFiance; and contributors at zkSync, Lens, Linea, Scroll, and Protocol Labs.\n\nFor these five projects, the program culminates in a Demo Day where they will have the opportunity to pitch to investors.\n\n**AEZ Builders’ Fellowship Program**\n\nUp to 25 projects will be chosen for the AEZ Builder’s Fellowship Program. These selected projects will receive the technical and developer support from Neutron and ATOM Accelerator DAO, will participate in workshops and fireside chats, and will have access to Mentor Office Hour sessions with LongHashX Venture Builders.\n\nLongHashX will also facilitate a fast-tracked grant application process for these teams if they choose to apply for grants from ATOM Accelerator DAO or a future Neutron Grants DAO.\n\n**Timescales**\n\nThe AEZ Accelerator and Builders’ Fellowship Programs are scheduled to start in mid-August 2023. Builders would have until 31 July 2023 11:59pm (GMT+8) to apply.","proposer":"neutron1tf06ek932vr8snlxjt2zq260ptrcd7pctyy3j0","start_height":587898,"min_voting_period":null,"expiration":{"at_time":"1687516245367715076"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"37370213420575","msgs":[],"status":"executed","votes":{"yes":"4903392403544","no":"43536397471","abstain":"4461263412"},"allow_revoting":true}},{"id":2,"proposal":{"title":"Recognize and fund the Neutron Foundation","description":"## Summary\n\nThe purpose of this proposal is to formally authorise the Neutron Foundation, a non-profit entity dedicated to supporting the development of the Neutron network, to enter governance approved legal agreements on behalf of the Neutron DAO and to serve as the DAO’s representative in the legal realm. This proposal also requests the transfer of 100,000,000 NTRN from the Neutron Treasury (10% of the NTRN supply) to the Neutron Foundation multisig to cover the Foundation’s lifetime expenses.\n\n## Votes\n\nThe following items summarise the voting options and their significance for this proposal:\n\n- **YES** - You authorise the Neutron Foundation to represent the Neutron DAO in the legal realm and agree to fund the Neutron Foundation with 100,000,000 NTRN tokens.\n- **NO** - You do not authorise the Neutron Foundation to represent the Neutron DAO in the legal realm and refuse to fund the Neutron Foundation with 100,000,000 NTRN tokens.\n- **ABSTAIN** - You wish to contribute to quorum but you formally decline to vote either for or against the proposal.\n\n## Problem Statement\n\nThe Neutron DAO lacks a legal structure to protect its interests and engage with external legal entities. Having no representation in the legal realm may pose the following challenges:\n\n- Difficulties in cooperating with other legal entities\n- Inability to own off-chain assets\n- Increased risk on individual DAO contributors\n- Lack of shared services and coordination\n\nTo proactively address these challenges and ensure the effective development and growth of the Neutron network, this proposal suggests recognizing and funding the Neutron Foundation to act as the Neutron DAO’s representative in the legal realm.\n\n## Scope and Mission\n\nThe Foundation would fulfil the following roles for the project:\n\n- Arrange holding of IP rights, domains, trademarks and other off-chain assets for the benefit of the DAO and make them available to DAO contributors.\n- Organise a legal wrapper for legal agreements approved by governance, such as event sponsorships, and facilitate integrations with centralised parties such as wallet providers, custodians, centralised exchanges, data providers, etc.\n- Provide necessary assistance, support and collaboration tools, and other services required for the development of the protocol to DAO contributors.\n- Arrange the provision of compensations to contributors that have been recognized by the DAO as “core contributors” through governance proposals, according to compensation rules to be ratified by the DAO in a follow-up proposal.\n- Arrange marketing, business development, developer relationship and legal support to the DAO and the network’s ecosystem.\n\nThe Foundation would not function as a decision maker, rather, it would execute the DAO’s decisions when they involve off-chain interactions.\n\n## Funding\n\nAs announced in the [NTRN Economics](https://genesis.neutron.org/?p=120) article, this proposal is requesting 100,000,000 NTRN from the Neutron Treasury to be transferred to the Neutron Foundation multisig to support the Foundation’s lifetime operations.\n\nThis represents 10% of the total NTRN supply, 33% of the Neutron Treasury’s NTRN holdings, and 18% of the Neutron DAO’s NTRN holdings (which comprise the Treasury’s 300,000,000 NTRN and an additional 240,000,000 NTRN tokens from the Reserve).\n\nThe multisig address is neutron13zwlfzwqtegmuguczf3mvefupyfcvhp0df2u0wrk5ek0tr5zer4suj0g0u. Its balance and transaction activity can be observed on [mintscan](https://www.mintscan.io/neutron/account/neutron13zwlfzwqtegmuguczf3mvefupyfcvhp0df2u0wrk5ek0tr5zer4suj0g0u) and [celatone](https://neutron.celat.one/mainnet/contracts/neutron13zwlfzwqtegmuguczf3mvefupyfcvhp0df2u0wrk5ek0tr5zer4suj0g0u). It follows a 3/5 signature scheme with the following signers:\n\n- John Campbell Law (Neutron Foundation)\n- Avril Dutheil (Neutron Foundation, Hadron Labs)\n- Bo Du (Polymer)\n- Sacha St-Leger (Lido, Cosmos Hub contributor)\n- JK (Apybara)\n\nThe Neutron DAO may withdraw its support from the Neutron Foundation at any time by successfully passing a governance proposal to that effect. The Foundation would then return all remaining NTRN tokens in its possession.\n\n## Legal structure\n\nThe Neutron Foundation is a non-profit organisation established “to independently support, promote, expand education and encourage the adoption of the Neutron Network and the Neutron Tokens and their related infrastructure and ecosystems.”\n\nThe Board of Directors of the Neutron Foundation is to comprise two members: Avril Dutheil, Director at Hadron Labs, and John Campbell Law, an independent Director. Additional directors should be added to the Foundation’s Board in subsequent proposals.\n","proposer":"neutron1tf06ek932vr8snlxjt2zq260ptrcd7pctyy3j0","start_height":522180,"min_voting_period":null,"expiration":{"at_time":"1687286737737261324"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"36160530507229","msgs":[{"bank":{"send":{"to_address":"neutron13zwlfzwqtegmuguczf3mvefupyfcvhp0df2u0wrk5ek0tr5zer4suj0g0u","amount":[{"denom":"untrn","amount":"100000000000000"}]}}}],"status":"executed","votes":{"yes":"4965383049941","no":"6505614028","abstain":"13892819981"},"allow_revoting":true}},{"id":1,"proposal":{"title":"test","description":"test","proposer":"neutron1g9thjuyfc4g4apcp8g5eltpglwqdvu4hw9ye40","start_height":519783,"min_voting_period":null,"expiration":{"at_time":"1687278379554701487"},"threshold":{"threshold_quorum":{"threshold":{"percent":"0.5"},"quorum":{"percent":"0.1"}}},"total_power":"36128102537296","msgs":[],"status":"rejected","votes":{"yes":"468277813819","no":"20404641798","abstain":"498702770899"},"allow_revoting":true}}]}} \ No newline at end of file diff --git a/assets/neutron-vote-not-found.json b/assets/neutron-vote-not-found.json new file mode 100644 index 0000000..af486c5 --- /dev/null +++ b/assets/neutron-vote-not-found.json @@ -0,0 +1 @@ +{"data":{"vote":null}} \ No newline at end of file diff --git a/assets/neutron-vote-ok.json b/assets/neutron-vote-ok.json new file mode 100644 index 0000000..9e74cb4 --- /dev/null +++ b/assets/neutron-vote-ok.json @@ -0,0 +1 @@ +{"data":{"vote":{"voter":"neutron103l025fw2x7d8k8px7d07vu667x0h5p5gke4yv","vote":"yes","power":"3069"}}} \ No newline at end of file diff --git a/assets/neutron-vote-unknown.json b/assets/neutron-vote-unknown.json new file mode 100644 index 0000000..4262d63 --- /dev/null +++ b/assets/neutron-vote-unknown.json @@ -0,0 +1 @@ +{"data":{"vote":{"voter":"neutron103l025fw2x7d8k8px7d07vu667x0h5p5gke4yv","vote":"unknown","power":"3069"}}} \ No newline at end of file diff --git a/pkg/fetchers/cosmos/tally_test.go b/pkg/fetchers/cosmos/tally_test.go index 1787678..5c37fb8 100644 --- a/pkg/fetchers/cosmos/tally_test.go +++ b/pkg/fetchers/cosmos/tally_test.go @@ -58,7 +58,7 @@ func TestTallyTallyError(t *testing.T) { LCDEndpoints: []string{"https://example.com"}, ProposalsType: "v1", } - logger := loggerPkg.GetDefaultLogger() + logger := loggerPkg.GetNopLogger() tracer := tracing.InitNoopTracer() fetcher := NewRPC(config, logger, tracer) @@ -113,7 +113,7 @@ func TestTallyAllOk(t *testing.T) { LCDEndpoints: []string{"https://example.com"}, ProposalsType: "v1", } - logger := loggerPkg.GetDefaultLogger() + logger := loggerPkg.GetNopLogger() tracer := tracing.InitNoopTracer() fetcher := NewRPC(config, logger, tracer) diff --git a/pkg/fetchers/fetcher_test.go b/pkg/fetchers/fetcher_test.go new file mode 100644 index 0000000..0034690 --- /dev/null +++ b/pkg/fetchers/fetcher_test.go @@ -0,0 +1,25 @@ +package fetchers + +import ( + "main/pkg/fetchers/cosmos" + "main/pkg/fetchers/neutron" + loggerPkg "main/pkg/logger" + "main/pkg/tracing" + "main/pkg/types" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestGetFetcher(t *testing.T) { + t.Parallel() + + logger := loggerPkg.GetNopLogger() + tracer := tracing.InitNoopTracer() + + neutronFetcher := GetFetcher(&types.Chain{Type: "neutron"}, logger, tracer) + assert.IsType(t, &neutron.Fetcher{}, neutronFetcher) + + cosmosFetcher := GetFetcher(&types.Chain{}, logger, tracer) + assert.IsType(t, &cosmos.RPC{}, cosmosFetcher) +} diff --git a/pkg/fetchers/neutron/fetcher.go b/pkg/fetchers/neutron/fetcher.go index 247611f..16b57b5 100644 --- a/pkg/fetchers/neutron/fetcher.go +++ b/pkg/fetchers/neutron/fetcher.go @@ -3,7 +3,6 @@ package neutron import ( "context" "encoding/base64" - "errors" "fmt" "main/pkg/http" "main/pkg/types" @@ -59,12 +58,6 @@ func (fetcher *Fetcher) GetSmartContractState( } } - height, err := utils.GetBlockHeightFromHeader(header) - if err != nil { - return 0, &types.QueryError{ - QueryError: errors.New("got error when parsing vote height"), - } - } - + height, _ := utils.GetBlockHeightFromHeader(header) return height, nil } diff --git a/pkg/fetchers/neutron/params.go b/pkg/fetchers/neutron/params.go index 1fd9e77..08726e2 100644 --- a/pkg/fetchers/neutron/params.go +++ b/pkg/fetchers/neutron/params.go @@ -14,10 +14,5 @@ func (fetcher *Fetcher) GetChainParams(ctx context.Context) (*types.ChainWithVot return nil, []error{err} } - paramsParsed, errs := params.ToParams(fetcher.ChainConfig) - if len(errs) > 0 { - return nil, errs - } - - return paramsParsed, nil + return params.ToParams(fetcher.ChainConfig), nil } diff --git a/pkg/fetchers/neutron/params_test.go b/pkg/fetchers/neutron/params_test.go new file mode 100644 index 0000000..8fd3b68 --- /dev/null +++ b/pkg/fetchers/neutron/params_test.go @@ -0,0 +1,70 @@ +package neutron + +import ( + "context" + "errors" + "main/assets" + loggerPkg "main/pkg/logger" + "main/pkg/tracing" + "main/pkg/types" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/jarcoal/httpmock" +) + +//nolint:paralleltest // disabled due to httpmock usage +func TestParamsFail(t *testing.T) { + httpmock.Activate() + defer httpmock.DeactivateAndReset() + + config := &types.Chain{ + Name: "chain", + LCDEndpoints: []string{"https://example.com"}, + NeutronSmartContract: "neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh", + } + logger := loggerPkg.GetNopLogger() + tracer := tracing.InitNoopTracer() + + fetcher := NewFetcher(config, logger, tracer) + + httpmock.RegisterResponder( + "GET", + "https://example.com/cosmwasm/wasm/v1/contract/neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh/smart/eyJjb25maWciOnt9fQ==", + httpmock.NewErrorResponder(errors.New("custom error")), + ) + + params, errs := fetcher.GetChainParams(context.Background()) + + require.Len(t, errs, 1) + require.ErrorContains(t, errs[0], "custom error") + require.Nil(t, params) +} + +//nolint:paralleltest // disabled due to httpmock usage +func TestParamsOk(t *testing.T) { + httpmock.Activate() + defer httpmock.DeactivateAndReset() + + config := &types.Chain{ + Name: "chain", + LCDEndpoints: []string{"https://example.com"}, + NeutronSmartContract: "neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh", + } + logger := loggerPkg.GetNopLogger() + tracer := tracing.InitNoopTracer() + + fetcher := NewFetcher(config, logger, tracer) + + httpmock.RegisterResponder( + "GET", + "https://example.com/cosmwasm/wasm/v1/contract/neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh/smart/eyJjb25maWciOnt9fQ==", + httpmock.NewBytesResponder(200, assets.GetBytesOrPanic("neutron-params.json")), + ) + + params, err := fetcher.GetChainParams(context.Background()) + + require.Empty(t, err) + require.NotNil(t, params) +} diff --git a/pkg/fetchers/neutron/proposals.go b/pkg/fetchers/neutron/proposals.go index 34c510f..3d479c1 100644 --- a/pkg/fetchers/neutron/proposals.go +++ b/pkg/fetchers/neutron/proposals.go @@ -18,13 +18,5 @@ func (fetcher *Fetcher) GetAllProposals( return nil, height, err } - proposalsParsed, parseErr := proposals.ToProposals() - if parseErr != nil { - return nil, height, &types.QueryError{ - QueryError: err, - NodeErrors: nil, - } - } - - return proposalsParsed, height, nil + return proposals.ToProposals(), height, nil } diff --git a/pkg/fetchers/neutron/proposals_test.go b/pkg/fetchers/neutron/proposals_test.go new file mode 100644 index 0000000..d26ba23 --- /dev/null +++ b/pkg/fetchers/neutron/proposals_test.go @@ -0,0 +1,75 @@ +package neutron + +import ( + "context" + "errors" + "main/assets" + loggerPkg "main/pkg/logger" + "main/pkg/tracing" + "main/pkg/types" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/jarcoal/httpmock" +) + +//nolint:paralleltest // disabled due to httpmock usage +func TestProposalsFail(t *testing.T) { + httpmock.Activate() + defer httpmock.DeactivateAndReset() + + config := &types.Chain{ + Name: "chain", + LCDEndpoints: []string{"https://example.com"}, + NeutronSmartContract: "neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh", + } + logger := loggerPkg.GetNopLogger() + tracer := tracing.InitNoopTracer() + + fetcher := NewFetcher(config, logger, tracer) + + httpmock.RegisterResponder( + "GET", + "https://example.com/cosmwasm/wasm/v1/contract/neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh/smart/eyJyZXZlcnNlX3Byb3Bvc2FscyI6IHsibGltaXQiOiAxMDAwfX0=", + httpmock.NewErrorResponder(errors.New("custom error")), + ) + + proposals, height, err := fetcher.GetAllProposals(0, context.Background()) + + require.Error(t, err) + require.Len(t, err.NodeErrors, 1) + + firstError := err.NodeErrors[0].Error + require.ErrorContains(t, &firstError, "custom error") + require.Zero(t, height) + require.Empty(t, proposals) +} + +//nolint:paralleltest // disabled due to httpmock usage +func TestProposalsOk(t *testing.T) { + httpmock.Activate() + defer httpmock.DeactivateAndReset() + + config := &types.Chain{ + Name: "chain", + LCDEndpoints: []string{"https://example.com"}, + NeutronSmartContract: "neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh", + } + logger := loggerPkg.GetNopLogger() + tracer := tracing.InitNoopTracer() + + fetcher := NewFetcher(config, logger, tracer) + + httpmock.RegisterResponder( + "GET", + "https://example.com/cosmwasm/wasm/v1/contract/neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh/smart/eyJyZXZlcnNlX3Byb3Bvc2FscyI6IHsibGltaXQiOiAxMDAwfX0=", + httpmock.NewBytesResponder(200, assets.GetBytesOrPanic("neutron-proposals.json")), + ) + + proposals, height, err := fetcher.GetAllProposals(0, context.Background()) + + require.Empty(t, err) + require.Zero(t, height) + require.NotEmpty(t, proposals) +} diff --git a/pkg/fetchers/neutron/responses/params.go b/pkg/fetchers/neutron/responses/params.go index 42a10fc..0b059dc 100644 --- a/pkg/fetchers/neutron/responses/params.go +++ b/pkg/fetchers/neutron/responses/params.go @@ -2,7 +2,6 @@ package responses import ( "main/pkg/types" - "strconv" "time" ) @@ -11,10 +10,10 @@ type ParamsResponse struct { Threshold struct { ThresholdQuorum struct { Threshold struct { - Percent string `json:"percent"` + Percent float64 `json:"percent,string"` } `json:"threshold"` Quorum struct { - Percent string `json:"percent"` + Percent float64 `json:"percent,string"` } `json:"quorum"` } `json:"threshold_quorum"` } `json:"threshold"` @@ -25,27 +24,17 @@ type ParamsResponse struct { } `json:"data"` } -func (params ParamsResponse) ToParams(chain *types.Chain) (*types.ChainWithVotingParams, []error) { - thresholdPercent, err := strconv.ParseFloat(params.Data.Threshold.ThresholdQuorum.Threshold.Percent, 64) - if err != nil { - return nil, []error{err} - } - - quorumPercent, err := strconv.ParseFloat(params.Data.Threshold.ThresholdQuorum.Quorum.Percent, 64) - if err != nil { - return nil, []error{err} - } - +func (params ParamsResponse) ToParams(chain *types.Chain) *types.ChainWithVotingParams { return &types.ChainWithVotingParams{ Chain: chain, Params: []types.ChainParam{ - types.PercentParam{Description: "Threshold percent", Value: thresholdPercent}, - types.PercentParam{Description: "Quorum percent", Value: quorumPercent}, + types.PercentParam{Description: "Threshold percent", Value: params.Data.Threshold.ThresholdQuorum.Threshold.Percent}, + types.PercentParam{Description: "Quorum percent", Value: params.Data.Threshold.ThresholdQuorum.Quorum.Percent}, types.DurationParam{ Description: "Max voting period", Value: time.Duration(params.Data.MaxVotingPeriod.Time * 1e9), }, types.BoolParam{Description: "Allow revoting", Value: params.Data.AllowRevoting}, }, - }, []error{} + } } diff --git a/pkg/fetchers/neutron/responses/proposals.go b/pkg/fetchers/neutron/responses/proposals.go index 73c8ee2..7accccc 100644 --- a/pkg/fetchers/neutron/responses/proposals.go +++ b/pkg/fetchers/neutron/responses/proposals.go @@ -16,7 +16,7 @@ type Proposal struct { Title string `json:"title"` Description string `json:"description"` Expiration struct { - AtTime string `json:"at_time"` + AtTime int64 `json:"at_time,string"` } `json:"expiration"` Status string `json:"status"` TotalPower string `json:"total_power"` @@ -34,68 +34,40 @@ type ProposalsResponse struct { } `json:"data"` } -func (p ProposalsResponse) ToProposals() ([]types.Proposal, error) { +func (p ProposalsResponse) ToProposals() []types.Proposal { proposals := make([]types.Proposal, len(p.Data.Proposals)) for index, proposal := range p.Data.Proposals { - proposalParsed, err := proposal.ToProposal() - if err != nil { - return nil, err - } - - proposals[index] = proposalParsed + proposals[index] = proposal.ToProposal() } - return proposals, nil + return proposals } -func (p ProposalWithID) ToProposal() (types.Proposal, error) { - expiresAt, err := strconv.ParseInt(p.Proposal.Expiration.AtTime, 10, 64) - if err != nil { - return types.Proposal{}, err - } - +func (p ProposalWithID) ToProposal() types.Proposal { return types.Proposal{ ID: strconv.Itoa(p.ID), Title: p.Proposal.Title, Description: p.Proposal.Description, - EndTime: time.Unix(0, expiresAt), + EndTime: time.Unix(0, p.Proposal.Expiration.AtTime), Status: ParseProposalStatus(p.Proposal.Status), - }, nil + } } -func (p ProposalsResponse) ToTally() ([]types.TallyInfo, error) { +func (p ProposalsResponse) ToTally() []types.TallyInfo { tallyInfos := make([]types.TallyInfo, 0) for _, proposal := range p.Data.Proposals { - proposalParsed, err := proposal.ToProposal() - if err != nil { - return []types.TallyInfo{}, err - } + proposalParsed := proposal.ToProposal() if !proposalParsed.IsInVoting() { continue } - yesVotes, err := math.LegacyNewDecFromStr(proposal.Proposal.Votes.Yes) - if err != nil { - return []types.TallyInfo{}, err - } - - noVotes, err := math.LegacyNewDecFromStr(proposal.Proposal.Votes.No) - if err != nil { - return []types.TallyInfo{}, err - } - - abstainVotes, err := math.LegacyNewDecFromStr(proposal.Proposal.Votes.Abstain) - if err != nil { - return []types.TallyInfo{}, err - } - - totalVotes, err := math.LegacyNewDecFromStr(proposal.Proposal.TotalPower) - if err != nil { - return []types.TallyInfo{}, err - } + yesVotes := math.LegacyMustNewDecFromStr(proposal.Proposal.Votes.Yes) + noVotes := math.LegacyMustNewDecFromStr(proposal.Proposal.Votes.No) + abstainVotes := math.LegacyMustNewDecFromStr(proposal.Proposal.Votes.Abstain) + totalVotes := math.LegacyMustNewDecFromStr(proposal.Proposal.TotalPower) tallyInfos = append(tallyInfos, types.TallyInfo{ Proposal: proposalParsed, @@ -108,5 +80,5 @@ func (p ProposalsResponse) ToTally() ([]types.TallyInfo, error) { }) } - return tallyInfos, nil + return tallyInfos } diff --git a/pkg/fetchers/neutron/tally.go b/pkg/fetchers/neutron/tally.go index 37eb27e..9a79410 100644 --- a/pkg/fetchers/neutron/tally.go +++ b/pkg/fetchers/neutron/tally.go @@ -14,13 +14,8 @@ func (fetcher *Fetcher) GetTallies(ctx context.Context) (types.ChainTallyInfos, return types.ChainTallyInfos{}, err } - tallyInfos, err := proposals.ToTally() - if err != nil { - return types.ChainTallyInfos{}, err - } - return types.ChainTallyInfos{ Chain: fetcher.ChainConfig, - TallyInfos: tallyInfos, + TallyInfos: proposals.ToTally(), }, nil } diff --git a/pkg/fetchers/neutron/tally_test.go b/pkg/fetchers/neutron/tally_test.go new file mode 100644 index 0000000..07738ce --- /dev/null +++ b/pkg/fetchers/neutron/tally_test.go @@ -0,0 +1,71 @@ +package neutron + +import ( + "context" + "errors" + "main/assets" + loggerPkg "main/pkg/logger" + "main/pkg/tracing" + "main/pkg/types" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/jarcoal/httpmock" +) + +//nolint:paralleltest // disabled due to httpmock usage +func TestTallyFail(t *testing.T) { + httpmock.Activate() + defer httpmock.DeactivateAndReset() + + config := &types.Chain{ + Name: "chain", + LCDEndpoints: []string{"https://example.com"}, + NeutronSmartContract: "neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh", + } + logger := loggerPkg.GetNopLogger() + tracer := tracing.InitNoopTracer() + + fetcher := NewFetcher(config, logger, tracer) + + httpmock.RegisterResponder( + "GET", + "https://example.com/cosmwasm/wasm/v1/contract/neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh/smart/eyJyZXZlcnNlX3Byb3Bvc2FscyI6IHsibGltaXQiOiAxMDAwfX0=", + httpmock.NewErrorResponder(errors.New("custom error")), + ) + + tallies, err := fetcher.GetTallies(context.Background()) + + require.Error(t, err) + require.ErrorContains(t, err, "custom error") + require.Empty(t, tallies.TallyInfos) + require.Nil(t, tallies.Chain) +} + +//nolint:paralleltest // disabled due to httpmock usage +func TestTallyOk(t *testing.T) { + httpmock.Activate() + defer httpmock.DeactivateAndReset() + + config := &types.Chain{ + Name: "chain", + LCDEndpoints: []string{"https://example.com"}, + NeutronSmartContract: "neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh", + } + logger := loggerPkg.GetNopLogger() + tracer := tracing.InitNoopTracer() + + fetcher := NewFetcher(config, logger, tracer) + + httpmock.RegisterResponder( + "GET", + "https://example.com/cosmwasm/wasm/v1/contract/neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh/smart/eyJyZXZlcnNlX3Byb3Bvc2FscyI6IHsibGltaXQiOiAxMDAwfX0=", + httpmock.NewBytesResponder(200, assets.GetBytesOrPanic("neutron-proposals.json")), + ) + + tallies, err := fetcher.GetTallies(context.Background()) + require.NoError(t, err) + require.NotNil(t, tallies.Chain) + require.Len(t, tallies.TallyInfos, 2) +} diff --git a/pkg/fetchers/neutron/vote_test.go b/pkg/fetchers/neutron/vote_test.go new file mode 100644 index 0000000..e73b445 --- /dev/null +++ b/pkg/fetchers/neutron/vote_test.go @@ -0,0 +1,154 @@ +package neutron + +import ( + "context" + "errors" + "main/assets" + loggerPkg "main/pkg/logger" + "main/pkg/tracing" + "main/pkg/types" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/jarcoal/httpmock" +) + +//nolint:paralleltest // disabled due to httpmock usage +func TestVoteFail(t *testing.T) { + httpmock.Activate() + defer httpmock.DeactivateAndReset() + + config := &types.Chain{ + Name: "chain", + LCDEndpoints: []string{"https://example.com"}, + NeutronSmartContract: "neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh", + } + logger := loggerPkg.GetNopLogger() + tracer := tracing.InitNoopTracer() + + fetcher := NewFetcher(config, logger, tracer) + + httpmock.RegisterResponder( + "GET", + "https://example.com/cosmwasm/wasm/v1/contract/neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh/smart/eyJnZXRfdm90ZSI6eyJwcm9wb3NhbF9pZCI6OTM2LCJ2b3RlciI6Im5ldXRyb24xeHF6OXBlbXo1ZTV6eWNhYTg5a3lzNWF3Nm04cmhnc3YwN3ZhM2QifX0=", + httpmock.NewErrorResponder(errors.New("custom error")), + ) + + vote, height, err := fetcher.GetVote( + "936", + "neutron1xqz9pemz5e5zycaa89kys5aw6m8rhgsv07va3d", + 0, + context.Background(), + ) + + require.Error(t, err) + require.NotEmpty(t, err.NodeErrors) + require.Zero(t, height) + require.Nil(t, vote) +} + +//nolint:paralleltest // disabled due to httpmock usage +func TestVoteNotFound(t *testing.T) { + httpmock.Activate() + defer httpmock.DeactivateAndReset() + + config := &types.Chain{ + Name: "chain", + LCDEndpoints: []string{"https://example.com"}, + NeutronSmartContract: "neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh", + } + logger := loggerPkg.GetNopLogger() + tracer := tracing.InitNoopTracer() + + fetcher := NewFetcher(config, logger, tracer) + + httpmock.RegisterResponder( + "GET", + "https://example.com/cosmwasm/wasm/v1/contract/neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh/smart/eyJnZXRfdm90ZSI6eyJwcm9wb3NhbF9pZCI6OTM2LCJ2b3RlciI6Im5ldXRyb24xeHF6OXBlbXo1ZTV6eWNhYTg5a3lzNWF3Nm04cmhnc3YwN3ZhM2QifX0=", + httpmock.NewBytesResponder(200, assets.GetBytesOrPanic("neutron-vote-not-found.json")), + ) + + vote, height, err := fetcher.GetVote( + "936", + "neutron1xqz9pemz5e5zycaa89kys5aw6m8rhgsv07va3d", + 0, + context.Background(), + ) + + require.Error(t, err) + require.Zero(t, height) + require.Nil(t, vote) +} + +//nolint:paralleltest // disabled due to httpmock usage +func TestVoteOk(t *testing.T) { + httpmock.Activate() + defer httpmock.DeactivateAndReset() + + config := &types.Chain{ + Name: "chain", + LCDEndpoints: []string{"https://example.com"}, + NeutronSmartContract: "neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh", + } + logger := loggerPkg.GetNopLogger() + tracer := tracing.InitNoopTracer() + + fetcher := NewFetcher(config, logger, tracer) + + httpmock.RegisterResponder( + "GET", + "https://example.com/cosmwasm/wasm/v1/contract/neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh/smart/eyJnZXRfdm90ZSI6eyJwcm9wb3NhbF9pZCI6NDIsInZvdGVyIjoibmV1dHJvbjEwM2wwMjVmdzJ4N2Q4azhweDdkMDd2dTY2N3gwaDVwNWdrZTR5diJ9fQ==", + httpmock.NewBytesResponder(200, assets.GetBytesOrPanic("neutron-vote-ok.json")), + ) + + vote, height, err := fetcher.GetVote( + "42", + "neutron103l025fw2x7d8k8px7d07vu667x0h5p5gke4yv", + 0, + context.Background(), + ) + + require.Nil(t, err) + require.Zero(t, height) + require.NotNil(t, vote) + require.Equal(t, types.VoteOptions{ + {Option: "👌Yes", Weight: 1}, + }, vote.Options) +} + +//nolint:paralleltest // disabled due to httpmock usage +func TestVoteUnknown(t *testing.T) { + httpmock.Activate() + defer httpmock.DeactivateAndReset() + + config := &types.Chain{ + Name: "chain", + LCDEndpoints: []string{"https://example.com"}, + NeutronSmartContract: "neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh", + } + logger := loggerPkg.GetNopLogger() + tracer := tracing.InitNoopTracer() + + fetcher := NewFetcher(config, logger, tracer) + + httpmock.RegisterResponder( + "GET", + "https://example.com/cosmwasm/wasm/v1/contract/neutron1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshlt6zh/smart/eyJnZXRfdm90ZSI6eyJwcm9wb3NhbF9pZCI6NDIsInZvdGVyIjoibmV1dHJvbjEwM2wwMjVmdzJ4N2Q4azhweDdkMDd2dTY2N3gwaDVwNWdrZTR5diJ9fQ==", + httpmock.NewBytesResponder(200, assets.GetBytesOrPanic("neutron-vote-unknown.json")), + ) + + vote, height, err := fetcher.GetVote( + "42", + "neutron103l025fw2x7d8k8px7d07vu667x0h5p5gke4yv", + 0, + context.Background(), + ) + + require.Nil(t, err) + require.Zero(t, height) + require.NotNil(t, vote) + require.Equal(t, types.VoteOptions{ + {Option: "unknown", Weight: 1}, + }, vote.Options) +} diff --git a/pkg/http/client_test.go b/pkg/http/client_test.go index 282c756..0bdcf24 100644 --- a/pkg/http/client_test.go +++ b/pkg/http/client_test.go @@ -35,7 +35,7 @@ func TestHttpClientQueryFail(t *testing.T) { "https://example.com", httpmock.NewErrorResponder(errors.New("custom error")), ) - logger := loggerPkg.GetDefaultLogger() + logger := loggerPkg.GetNopLogger() tracer := tracing.InitNoopTracer() client := NewClient("chain", []string{"https://example.com"}, logger, tracer) @@ -57,7 +57,7 @@ func TestHttpClientPredicateFail(t *testing.T) { constants.HeaderBlockHeight: []string{"1"}, }), ) - logger := loggerPkg.GetDefaultLogger() + logger := loggerPkg.GetNopLogger() tracer := tracing.InitNoopTracer() client := NewClient("chain", []string{"https://example.com"}, logger, tracer) @@ -77,7 +77,7 @@ func TestHttpClientJsonParseFail(t *testing.T) { "https://example.com", httpmock.NewBytesResponder(200, assets.GetBytesOrPanic("invalid-json.json")), ) - logger := loggerPkg.GetDefaultLogger() + logger := loggerPkg.GetNopLogger() tracer := tracing.InitNoopTracer() client := NewClient("chain", []string{"https://example.com"}, logger, tracer) @@ -97,7 +97,7 @@ func TestHttpClientOk(t *testing.T) { "https://example.com", httpmock.NewBytesResponder(200, assets.GetBytesOrPanic("tally.json")), ) - logger := loggerPkg.GetDefaultLogger() + logger := loggerPkg.GetNopLogger() tracer := tracing.InitNoopTracer() client := NewClient("chain", []string{"https://example.com"}, logger, tracer) @@ -116,7 +116,7 @@ func TestHttpClientGetMultipleFail(t *testing.T) { "https://example.com/", httpmock.NewErrorResponder(errors.New("custom error")), ) - logger := loggerPkg.GetDefaultLogger() + logger := loggerPkg.GetNopLogger() tracer := tracing.InitNoopTracer() client := NewClient("chain", []string{"https://example.com"}, logger, tracer) @@ -138,7 +138,7 @@ func TestHttpClientGetMultipleOk(t *testing.T) { "https://example.com/", httpmock.NewBytesResponder(200, assets.GetBytesOrPanic("tally.json")), ) - logger := loggerPkg.GetDefaultLogger() + logger := loggerPkg.GetNopLogger() tracer := tracing.InitNoopTracer() client := NewClient("chain", []string{"https://example.com"}, logger, tracer)