BOUNTY: 25K FOX for the direct implementation of the Cosmos/IBC Auto-Compound Tool on ShapeShift App by July 1st

Abstract:

For the past month or so, foxfrens.com has been providing an auto-compounding tool for Cosmosverse stakers which directly benefits the DAO through higher delegation rates and faster growth in voting power.

A higher level overview of the tool can be found in the original thread.

Now that Cosmos SDK 0.44, which introduced the authz module, has been tested for a considerable amount of time, and the Cosmos team seems confident in the security of the authz module, I believe we too can feel confident.

The compounding tool has – without a reasonable doubt – has been responsible for the exponential growth in the number of ShapeShift Umee delegators. Over time, especially as the number of delegations grow and the assets staked are compounded, this tool will be responsible for higher revenue rates coming from our Cosmos, Osmosis, Umee, Juno, and future validators.

This feature should be integrated with ShapeShift because it would be foolish not to. With compounded rewards, simple mathematics guarantee higher return rates for the delegators, which ultimately encourages all users to delegate/redelegate to the ShapeShift DAO validators.

Who is the team/project behind the feature? Cosmos introduced the authz feature that allows the safe granting of delegation powers to proxy wallets. eco-stake was the first to implement it with a PoC. foxfrens.com has been auto-compounding for available ShapeShift validators since.

Requirements:

  • Seemless integration of the UI with Cosmos assets staking page that will launch.

  • Handoff of the full control of the proxy wallet that is responsible for paying for the gas when claiming and re-staking. Highly not recommended to use a new wallet, as hundreds of delegation grants will be lost in the process. There is never more than $3 in the proxy wallet at a given time; only the amount of gas needed to execute the auto-stakes for grantors are needed. In other words, yes, I know it’s not good practice to transfer wallet ownership in this manner, but I really have zero to gain from messing with it post-handoff, nor can I execute any arbitrary transactions on the proxy wallets, and you would have to simply trust that I have destroyed and disposed of keys to the proxy wallet.

Feature Spec and UI/UX

  • In addition to the existing core features that is currently being tested and utilized on mainnets, there should be:

    Seemless integration with the upcoming Cosmos assets staking page (i.e. keep bothering engineering)

  • Consistent UI & UX with the ShapeShift app (i.e. keep bothering product),
  • Ledger signing (if Cosmos SDK supports Authz by then); if no support still, CLI signing instructions will be prepared for interested parties that still want to delegate.

UI/UX: Should be a simple change on the validators and delegation page (per network/chain). 1) make the ShapeShift validator look distinct from the rest (like what Osmosis is doing with the fluid staking enabled pools); 2) show higher APY rates for ShapeShift validators vs. the rest of the validators w/ brief explanation on how its being achieved; 3) delegate/stake button turns into “enable compounding” button for delegators; 4) “enable compounding” turns to “disable compounding” which revokes the grant; 5) “disable compounding” turns to “undelegate” or “unstake” … whatevers used throughout other cosmos assets.

Of course, ultimately up to product on the final design.

ShapeShift app seems to be evolving significantly every time I pull; without constantly following each PRs it canbe very easy to get lost in the mix. Might be needing assistance at first to understand how the architecture changed, how plugins are supposed to be implemented, etc.

A higher level overview of the tool can be found in the original thread.

Bounty Details

I am requesting a one-time 25K FOX reward for the completion of this bounty and the successful merge and deployment to the app. This will also retroactively cover the server bills and labor I’ve put in. An amount of 9 OSMO that was initially used to fund the gas fees will be returned to Operations.

25K FOX seems like a bit much~ 1f44c The power of compounding is one of the most powerful forces in finance and over time will have an increasingly bigger impact on the revenue being generated. I took it upon my own volition to get ShapeShift Validators relatively early into the auto-compounding game and is paying off significantly on Umee, and I will no longer lowball my efforts.

Expiration date

No strict deadline, needs to pass engineering and product approval beforehand. Well aware that the earlier it’s done, the better – and the best attempt will be made; however, workstream duties will always take priority. Definitely before summer begins though.

There are many ways to encourage more users to redelegate their votes to ShapeShift as well as just make the ShapeShift app that much more useful for heavy Cosmos users – from stakedrops that puts the APY just over the rest of the competing validators that may also be compounding, allowing users to pay for their own gas if they want to delegate on networks in which ShapeShift is not validating; possibly restake into osmosis / osmosis fluid pools if more permissions are granted and contracts updated, NFT drops, etc etc etc. But ^ this was posted just for ideas sake, and that the plugin can definitely be expanded and improved constantly.

P.S. how do self-proposed bounties work? Does a magical council come in and decide the fate of the request? Or is it the decision of a eng/product leader? Maybe a poll?

I really love the work and initiative on the foxfrens autocompounding tool. Great example of you just DAOing it on important work and producing a useful (and revenue generating!) tool for the community 1f642

  • Nicely done sir!

    With that I definitely support a bounty reward in the amount you are talking about in order to get this completed and merged into the app.

    A few notes on the spec:

    IMO its vital for ledger (and preferably other hard wallets as appropriate) to be supported for this to be as succesful as it can be. I realize this is still something that needs to be supported on the cosmos side but if that is fixed on their side then I think it should be part of the scope of this bounty.

  • Another big thing that we really need to get the most out of this is Keplr support across the app. That is probably out of scope of this bounty, but if it could be done as part of it (even if that ups the FOX amount) I would support it and/or perhaps it could be coordinated with engineering/product who likely want to get Keplr integrated anyway and may be working on it or planning to offer their own bounty to that effect.

One other thought, you say no strict deadline but then also say by July 1st in the title. Similar to some other bounties I would support rewarding even more FOX (let say 30k as an example) if you got it done by end of May and then have the reward degrade over time until July 1st).

In terms of “how” this gets done, since you are proposing a bounty yourself that you want to work on this will either (1) need to go through governance if the bounty is going to be paid from the DAO treasury (2) be picked up by one of the workstreams who deems it worthy of spending their bounty budget(s) on (perhaps some combination of Engineering/Product worksteams would want to support this) or (3) could be funded by a community member who see the value and is willing to self-fund this (may be worth reaching out to who has been generous to the community so far with his bounties and may see this as worthwhile, but that is entirely up to him).

Last time I checked, Ledger did work – but the signing needed to be done through CLI though. Obviously not user friendly nor something we should force Ledger users to do. I’ll check tonight to see if there’s been any progress.

Another big thing that we really need to get the most out of this is Keplr support across the app.

I’ll be honest, this bounty was created under the assumption that Keplr would already have been implemented by the smarter people by the time I would start 1f605 Now I realize all the cosmos activity is happening on the native wallet, makes sense now. I’ll definitely look into it later tonight with my limited knowledge.

In terms of “how” this gets done, since you are proposing a bounty yourself that you want to work on this will either (1) need to go through governance if the bounty is going to be paid from the DAO treasury (2) be picked up by one of the workstreams who deems it worthy of spending their bounty budget(s) on (perhaps some combination of Engineering/Product worksteams would want to support this)

Ah, I just blindly copied Willys template and thought FOXes dropped from the sky. Hahah, I’ll see what I can do to raise the value of the scope of the bounty starting with the two points you listed. Still kind of surprised to hear that Keplr wallet integration work hasn’t even started yet (from what I can tell… no branches, discussions, PRs, etc.)

I don’t know much about this yet. How have we been able to use this tool when staking UMEE? Using a cli?

This bounty is for using the autocompounding tool when people stake in the app? Does this require web and unchained changes? Definitely needs engineering workstream eyes and assistance.

And it is correct that there is currently no work on Keplr wallet support.

Yea Keplr wallet support is a must, I hope we are moving on that soon via engineering workstream or bounty or both, maybe that could be wrapped into this but it should probably be its own initiative by the DAO as its crucial for supporting the cosmos ecosystem as we intend.

Would be curious to hear thoughts from folks like on best way for us to ensure Keplr is fast tracked or if anything is already in progress/talks on that front.

I am very bullish about this, i would love to see this bounty along side of the Keplr Wallet Integration. If I had the technical skills I’d love to attempt this, but I am but a humble yield farmer who loves IBC.

I definitely think that Keplr support should be a separate project as the scope is so much bigger. For example, with Keplr support, would Ethereum / BTC transactions be expected to be supported? That would be entirely out of my humble abilities; although EVMOS (when re-launched) would technically make that a real possibility.

I guess shelving this bounty request for the time being would be the step, until the direction with Keplr is more clear.

Currently there’s been an onboarding of about 100 UMEE delegations through the main frontend tool at foxfrens.com – it’s a simple Keplr tx signing that gives the proxy wallet the permissions to claim rewards and redelegate to the ShapeShift validators.

Ledger support is readyand will be rolled out with Cosmos SDK v0.46.

It is technically possible to implement it by cherry-picking the commit, but was advised that it’s best to just wait for the release of 0.46, which should be coming soon.

EvmosJS also supports the signing of Authz grants. Which brings up an interesting topic in itself – assuming that Evmos re-launches successfully and the chain continues to work as intended, could it not act as another intermediary between mainnet and the Cosmosverse on the ShapeShift platform? Interesting times…

edit: Took a quick dive into the HDWallet and Unchained repositories to better understand how ShapeShift manages the different wallets and chains. From my limited view and understanding I’m not really seeing any glaring reasons that would prevent this from easily being implemented for the SS Native wallet, as the signing mechanisms are the same as for delegation, redelegation, etc.

The following shows two main grants that are signed and makes this tool possible:

const messages = [
      buildGrantMsg("/cosmos.staking.v1beta1.StakeAuthorization",
        StakeAuthorization.encode(StakeAuthorization.fromPartial({
          allowList: {address: [props.operator.address]},
          authorizationType: 1
        })).finish(),
      ),
      buildGrantMsg("/cosmos.authz.v1beta1.GenericAuthorization",
        GenericAuthorization.encode(GenericAuthorization.fromPartial({
          msg: '/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward'
        })).finish(),
      )
    ]
function buildGrantMsg(type, value){
    const dateNow = new Date();
    const expiration = new Date(
      dateNow.getFullYear(),
      dateNow.getMonth()+6,
      dateNow.getDate()
    )
    return {
      typeUrl: "/cosmos.authz.v1beta1.MsgGrant",
      value: {
        granter: props.address,
        grantee: props.operator.botAddress,
        grant: {
          authorization: {
            typeUrl: type,
            value: value
          },
          expiration: Timestamp.fromPartial({
            seconds: expiration.getTime() / 1000,
            nanos: 0
          })
        }
      },
    }
  }

Guess I’ll start playing around with it when I have some off-time.

As of this week Keplr has informally started via @kuneus, but there’s no formal deadline there. Realistically I’d say within a few weeks, pending no unexpected surprises.

I’d suggest you get in contact with him before setting expectations around a delivery date for autocompounding without Keplr wallet support.

Are you sure 25k FOX is enough? I think there’s going to be a couple of weeks work in there.

Also for full transparency, the engineering workstream is currently backed up via product till at least the end of May, and that’s without considering any other technical remediation or investment in architecture we need to do. We’ll give you the limited support we have available for architecture and review, but we’re stretched pretty thin currently.

Will get back to this in a few days – but looking at PR #1426 it might be a godsend in terms of saving time on the front end. I do have some questions on how cosmos transactions are being encoded and broadcasted (hdwallet’s documentation is a bit lacking for those that are not familiar with it), but as long as it’s utilizing the Cosmos SDK, ledger and keplr shouldn’t be too hard of an integration. From my understanding amino is still required for ledger support, so hopefully we didn’t ditch it completely and only support protobuf. Will take a deeper look and report back. edit: going to have to double check this

Are you sure 25k FOX is enough? I think there’s going to be a couple of weeks work in there.

I have no idea. Theoretically it shouldn’t be an extremely difficult integration as long as the authz tx can be properly broadcasted… famous last words.

Love the vision and initiative here. Auto-compounding is the eighth wonder of the decentralized world, and I think would be great differentiator for app.shapeshift.com and drive more delegations to the ShapeShift DAO validators, one of our strongest revenue streams to date.

Stoked that Keplr wallet work is underway and that has a path to support auto-compounding on Ledger 1f525

Two questions:

Do you plan on providing UI/UX for this as well ? Or is this something that product would like to provide UI/UX for

  1. ?

is this something that engineering would want to cover out of their bounty budget, or should make a proposal? Proposal route is fine; that is what the docs

  1. instruct for requesting a bounty. Jw if this could fit into the existing bounty budget.

Appreciate ’s transparency that engineering workstream will be backed up until the end of May. From the first large feature bounties that have been picked up, we’ve learned a few lessons and want to experiment with the following process for future large feature bounties such as this: When a bounty requires a deadline and is dependent on product/engineering/ops/security to get merged, those workstreams should give their own set of requirements/deadlines that bounty hunters must hit in order to ensure the workstreams will dedicate bandwidth to helping them get it over the finish line (or conversely, let them know up front that the deadline is unrealistic). See this comment on the ‘How to offer a bounty’ guide

If a deadline is required for this, would love to experiment with this new process and request the additional set of deadlines/requirements from the above workstreams.

RE: UI/UX - I actually think the entire DeFi earn page needs a serious makeover. As the wallet adds more networks it would make a lot of sense to separate opportunities by both networks and types of opportunities. Just some quick front-end mockups I did:

https://global.discourse-cdn.com/standard10/uploads/foxcookieco/optimized/1X/71ebacef3526b26f827b5d413ab7e190342dfffe_2_690x384.jpeg

I guess the View All page wouldn’t change too much, but seeing a higher APR rate for the ShapeShift validator would definitely get the attention of ATOM / OSMO / UMEE / JUNO stakers. First question they’d ask would be, “how?” And the simple answer would be that its achieved by the power of compounding.

https://global.discourse-cdn.com/standard10/uploads/foxcookieco/optimized/1X/123b163a819842ed44c22091c3c0ea982d7e5243_2_690x384.jpeg

The Cosmos earn page should be formatted to better serve… cosmos stakers. Again, with the eye-catching higher APR than the rest of the users’ delegations, we snatch em up with a simple button that would allow the re-delegation of all their staked assets to ShapeShift.

https://global.discourse-cdn.com/standard10/uploads/foxcookieco/optimized/1X/32336cd3f4d96dbf7423c445303aa16e19908586_2_690x460.jpeg

For the actual delegation grants needed for the tool to compound for the user, I guess the easiest way would be to use the existing modal to create a small section for the auto compound authorization grant button and explanation section. No need to re-invent the wheel.

https://global.discourse-cdn.com/standard10/uploads/foxcookieco/optimized/1X/47773d6c6b9956799928213eb63499f415a39622_2_690x454.png

Not sure about the button placement for this one, but I’m sure the collective minds of ShapeShift can assist in better placements and wordings.

https://global.discourse-cdn.com/standard10/uploads/foxcookieco/optimized/1X/f6e082c38dca8992307fb852df9d441afcfd2393_2_690x499.png

Another option would be to do a “tour guide” style of onboarding authz grantors: educate users on how it works, steal borrow delegations from other validators (if they are already delegating), get perms to compound, DAO validators grow faster, users gets higher rewards, everyone is happy.

RE: the deadline, I’m just barely starting to understand the overall architecture and structure of the platform; unchained, lib, and hdwallet I literally just days ago started probing around, so still lots of familiarization to do. Lots of other projects going on in Globalization as well, which is obviously my priority, and Ledger signing is pretty dependent on when Cosmos releases v0.46 unless someone hacks together the necessary fixes for signing safely (which is definitely possible, but way beyond my scope and capabilities). tl;dr - a flexible deadline would be nice, perhaps setting it in milestones by wallets (native, keplr, ledger) would be much easier to manage; also wouldn’t mind receiving help and splitting the bounty.

I’ve started looking at some codebase here and there when I have some time to get a better understanding at how tx’s are signed and keys are managed; I can try to get started on the native wallet first if I get the green light to move forward, but progress will likely be on the slower end for the aforementioned reasons.

And full disclaimer – Python is my language of choice, front-end is my strength, endless ideas are my downfall, and TS + React I had tried to stay far far away from in web2; I was so excited to see VueJS and Nuxt take off in popularity but it appears in web3 land I’m going to have to suck it up and get used to the TS way. Just thought I’d bring it up, as it could very well be a potential blocker in certain deliverables.

P.S. there’s gotta be an easier way for me to quickly prototype front-end ideas aha… I heard someone’s got a Figma or XD 1f440

Let me know how I should proceed with this – still a bit confused on the status.

Sounds like Keplr is not that far off, in which case I think it’s reasonable for you to move this forward as a proposal unless a workstream like engineering or product would prefer to fund this bounty themselves?

Roger that. I’ll begin to work on a proposal soon.

Be sure to see the post and addendum here: How to offer a bounty to integrate your feature with app.shapeshift.com on how to coordinate with workstreams on requirements and timelines for an external bounty.

I’m pretty sure most workstream leaders can coordinate with you async to keep this one moving.

Quick update – I’ll be ‘informally’ proposing a UX/UI mockup to product ws in the coming days before the actual SCP is entered into the ideation phase. Also going to be in talks with engineering re: the best method forward without taking up too much of their time.

cool, excited to see what you put together!

I am super excited for this bounty! Thank you for this