Giter VIP home page Giter VIP logo

restake-ui's Introduction

REStake allows delegators to grant permission for a validator to compound their rewards, and provides a script validators can run to find their granted delegators and send the compounding transactions automatically.

REStake is also a convenient staking tool, allowing you to claim and compound your rewards individually or in bulk. This can save transaction fees and time, and many more features are planned.

Try it out at restake.app.

The REStake autostaking script has it's own dedicated repository at eco-stake/restake.

How it works / Authz

Authz is a new feature for Tendermint chains which lets you grant permission to another wallet to carry out certain transactions for you. These transactions are sent by the grantee on behalf of the granter, meaning the validator will send and pay for the TX, but actions will affect your wallet (such as claiming rewards).

REStake specifically lets you grant a validator permission to send Delegate transactions for their validator only. The validator cannot send any other transaction types, and has no other access to your wallet. You authorize this using Keplr as normal. REStake no longer requires a Withdraw permission to autostake.

A script is also provided which allows a validator to automatically search their delegators, check each for the required grants, and if applicable carry out the claim and delegate transactions on their behalf in a single transaction. This script should be run daily, and the time you will run it can be specified when you add your operator.

Limitations

  • Authz is also not fully supported yet. Many chains are yet to update. The REStake UI will fall back to being a manual staking app with useful manual compounding features.
  • Currently REStake needs the browser extension version of Keplr, but WalletConnect and Keplr iOS functionality will be added ASAP.
  • REStake requires Nodejs version 17.x or later, it will not work with earlier versions.

Become an operator

Follow the instructions in the eco-stake/restake repository to become a REStake operator.

Contributing

Adding/updating a network

Network information is sourced from the Chain Registry via the registry.cosmos.directory API. Chains in the master branch are automatically added to REStake assuming enough basic information is provided.

The networks.json file defines which chains appear as 'supported' in REStake; so long as the chain name matches the directory name from the Chain Registry, all chain information will be sourced automatically. Alternatively chains can be supported in networks.json alone, but this is not a documented feature.

To add or override a chain in REStake, add the required information to networks.json as follows:

{
  "name": "osmosis",
  "prettyName": "Osmosis",
  "gasPrice": "0.025uosmo",
  "authzSupport": true
}

Note that most attributes from Chain Registry can be overridden by defining the camelCase version in networks.json.

Running the UI

Run the UI using docker with one line:

docker run -p 80:80 -t ghcr.io/eco-stake/restake-ui

Alternative run from source using docker-compose up or npm start.

Ethos

The REStake UI is both validator and network agnostic. Any validator can be added as an operator and run this tool to provide an auto-compounding service to their delegators, but they can also run their own UI if they choose and adjust the branding to suit themselves.

For this to work, we need a common source of chain information, and a common source of 'operator' information. Chain information is sourced from the Chain Registry, via an API provided by cosmos.directory. Operator information lives in the Validator Registry.

Now we have a common source of operator information, applications can integrate with REStake validators easier using the data directly from GitHub, or via the cosmos.directory project.

Disclaimer

The initial version of REStake was built quickly to take advantage of the new authz features. I'm personally not a React or Javascript developer, and this project leans extremely heavily on the CosmJS project and other fantastic codebases like Keplr Wallet and Osmosis Zone frontend. It functions very well and any attack surface is very limited however. Any contributions, suggestions and ideas from the community are extremely welcome.

ECO Stake ๐ŸŒฑ

ECO Stake is a climate positive validator, but we care about the Cosmos ecosystem too. We built REStake to make it easy for all validators to run an autocompounder with Authz, and it's one of many projects we work on in the ecosystem. Delegate with us to support more projects like this.

restake-ui's People

Contributors

albertandrejev avatar autostake-com avatar chillyvee avatar chleeab avatar clemensgg avatar cosmoselon avatar dylanschultzie avatar evmosius avatar gh0stdotexe avatar golden-ratio-staking avatar husonghua avatar iicc1 avatar jasonbonnici avatar jemrickrioux avatar joeabbey avatar joshlopes avatar juan-lukeklopper avatar koltigin avatar lightiv avatar lpx55 avatar mr-kenikh avatar nevzatcirak avatar nullmames avatar poorbuthappy avatar pwnfoo avatar quantumnodeio avatar stan-bl avatar tombeynon avatar windpowerstake avatar zdeadex avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

restake-ui's Issues

Error trying to enable Restake on Comdex

Hi, I am getting the following error when enabling restake on my validator:
Failed to broadcast: Error when broadcasting tx D6BC3667FC047B82CDA42D58036DE04615D0C674D3C77B9E51BA5981E00EEEE5 at height 0. Code: 111222; Raw log: recovered: Unregistered interface types.isStakeAuthorization_Validators stack: goroutine 171431865 [running]: runtime/debug.Stack() runtime/debug/stack.go:24 +0x65 github.com/cosmos/cosmos-sdk/baseapp.newDefaultRecoveryMiddleware.func1({0x222f820, 0xc053b559f0}) github.com/cosmos/[email protected]/baseapp/recovery.go:71 +0x27 github.com/cosmos/cosmos-sdk/baseapp.newRecoveryMiddleware.func1({0x222f820?, 0xc053b559f0?}) github.com/cosmos/[email protected]/baseapp/recovery.go:39 +0x30 github.com/cosmos/cosmos-sdk/baseapp.processRecovery({0x222f820, 0xc053b559f0}, 0xc06f7c0fc0?) github.com/cosmos/[email protected]/baseapp/recovery.go:28 +0x37 github.com/cosmos/cosmos-sdk/baseapp.processRecovery({0x222f820, 0xc053b559f0}, 0x32402c0?) github.com/cosmos/[email protected]/baseapp/recovery.go:33 +0x5e github.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).runTx.func1() github.com/cosmos/[email protected]/baseapp/baseapp.go:632 +0x110 panic({0x222f820, 0xc053b559f0}) runtime/panic.go:884 +0x212 github.com/cosmos/cosmos-sdk/x/auth/ante.SetUpContextDecorator.AnteHandle.func1() github.com/cosmos/[email protected]/x/auth/ante/setup.go:57 +0x1fa panic({0x222f820, 0xc053b559f0}) runtime/panic.go:884 +0x212 github.com/cosmos/cosmos-sdk/codec.(*LegacyAmino).MustMarshalJSON(...) github.com/cosmos/[email protected]/codec/amino.go:154 github.com/cosmos/cosmos-sdk/x/authz.MsgGrant.GetSignBytes({{0xc0331086f0, 0x2d}, {0xc033108720, 0x2d}, {0xc01843d380, {0x0, 0xede488860, 0x0}}}) github.com/cosmos/[email protected]/x/authz/msgs.go:83 +0xf4 github.com/cosmos/cosmos-sdk/x/auth/legacy/legacytx.StdSignBytes({0xc0110ccfd8, 0x8}, 0x354fc, 0x3, 0x0, {{0xc028c5d4b8?, 0xc000261840?, 0x4?}, 0x1a?}, {0xc053b55960, ...}, ...) github.com/cosmos/[email protected]/x/auth/legacy/legacytx/stdsign.go:61 +0x287 github.com/cosmos/cosmos-sdk/x/auth/tx.signModeLegacyAminoJSONHandler.GetSignBytes({}, 0x20?, {{0xc0110ccfd8?, 0x1?}, 0xc0283f01c0?, 0x20?}, {0x320ae00?, 0xc00fdd4fc0?}) github.com/cosmos/[email protected]/x/auth/tx/legacy_amino_json.go:49 +0x1a7 github.com/cosmos/cosmos-sdk/x/auth/signing.SignModeHandlerMap.GetSignBytes({0x1, {0xc00239a670, 0x2, 0x2}, 0xc0022c58c0}, 0x14?, {{0xc0110ccfd8, 0x8}, 0x354fc, 0x3}, ...) github.com/cosmos/[email protected]/x/auth/signing/handler_map.go:59 +0xa2 github.com/cosmos/cosmos-sdk/x/auth/signing.VerifySignature({0x3237f90, 0xc028c5d740}, {{0xc0110ccfd8?, 0x8?}, 0x896d2e?, 0x20bae005?}, {0x3204380?, 0xc023d10680?}, {0x3228d60, 0xc0022c58f0}, ...) github.com/cosmos/[email protected]/x/auth/signing/verify.go:17 +0xb5 github.com/cosmos/cosmos-sdk/x/auth/ante.SigVerificationDecorator.AnteHandle({{_, _}, {_, _}}, {{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, ...}, ...}, ...) github.com/cosmos/[email protected]/x/auth/ante/sigverify.go:286 +0x6fe github.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, {0x20bae005, ...}, ...}, ...}, ...) github.com/cosmos/[email protected]/types/handler.go:40 +0x158 github.com/cosmos/cosmos-sdk/x/auth/ante.SigGasConsumeDecorator.AnteHandle({{_, _}, _}, {{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, ...}, ...}, ...}, ...) github.com/cosmos/[email protected]/x/auth/ante/sigverify.go:190 +0x32e github.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, {0x20bae005, ...}, ...}, ...}, ...) github.com/cosmos/[email protected]/types/handler.go:40 +0x158 github.com/cosmos/cosmos-sdk/x/auth/ante.ValidateSigCountDecorator.AnteHandle({{_, _}}, {{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, ...}, ...}, ...) github.com/cosmos/[email protected]/x/auth/ante/sigverify.go:378 +0x2ce github.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, {0x20bae005, ...}, ...}, ...}, ...) github.com/cosmos/[email protected]/types/handler.go:40 +0x158 github.com/cosmos/cosmos-sdk/x/auth/ante.SetPubKeyDecorator.AnteHandle({{_, _}}, {{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, ...}, ...}, ...) github.com/cosmos/[email protected]/x/auth/ante/sigverify.go:126 +0x44e github.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, {0x20bae005, ...}, ...}, ...}, ...) github.com/cosmos/[email protected]/types/handler.go:40 +0x158 github.com/cosmos/cosmos-sdk/x/auth/ante.DeductFeeDecorator.AnteHandle({{_, _}, {_, _}, {_, _}}, {{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, ...}, ...) github.com/cosmos/[email protected]/x/auth/ante/fee.go:128 +0xc2e github.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, {0x20bae005, ...}, ...}, ...}, ...) github.com/cosmos/[email protected]/types/handler.go:40 +0x158 github.com/cosmos/cosmos-sdk/x/auth/ante.ConsumeTxSizeGasDecorator.AnteHandle({{_, _}}, {{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, ...}, ...}, ...) github.com/cosmos/[email protected]/x/auth/ante/basic.go:142 +0x3a6 github.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, {0x20bae005, ...}, ...}, ...}, ...) github.com/cosmos/[email protected]/types/handler.go:40 +0x158 github.com/cosmos/cosmos-sdk/x/auth/ante.ValidateMemoDecorator.AnteHandle({{_, _}}, {{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, ...}, ...}, ...) github.com/cosmos/[email protected]/x/auth/ante/basic.go:66 +0x2ee github.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, {0x20bae005, ...}, ...}, ...}, ...) github.com/cosmos/[email protected]/types/handler.go:40 +0x158 github.com/cosmos/cosmos-sdk/x/auth/ante.TxTimeoutHeightDecorator.AnteHandle({}, {{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, ...}, ...}, ...) github.com/cosmos/[email protected]/x/auth/ante/basic.go:205 +0x28e github.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, {0x20bae005, ...}, ...}, ...}, ...) github.com/cosmos/[email protected]/types/handler.go:40 +0x158 github.com/cosmos/cosmos-sdk/x/auth/ante.ValidateBasicDecorator.AnteHandle({}, {{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, ...}, ...}, ...) github.com/cosmos/[email protected]/x/auth/ante/basic.go:34 +0x1ce github.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, {0x20bae005, ...}, ...}, ...}, ...) github.com/cosmos/[email protected]/types/handler.go:40 +0x158 github.com/cosmos/cosmos-sdk/x/auth/ante.MempoolFeeDecorator.AnteHandle({}, {{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, ...}, ...}, ...) github.com/cosmos/[email protected]/x/auth/ante/fee.go:54 +0x286 github.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, {0x20bae005, ...}, ...}, ...}, ...) github.com/cosmos/[email protected]/types/handler.go:40 +0x158 github.com/comdex-official/comdex/app/decorators.GovPreventSpamDecorator.AnteHandle({{{0x320cb60, 0xc0014c0960}, {0x322b3f0, 0xc000165830}, {0x7f23701e0a18, 0xc000f52000}, {0x321efe0, 0xc000645c30}, {0x0, 0x0}, ...}, ...}, ...) github.com/comdex-official/comdex/app/decorators/gov_filter.go:38 +0x1ae github.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, {0x20bae005, ...}, ...}, ...}, ...) github.com/cosmos/[email protected]/types/handler.go:40 +0x158 github.com/cosmos/cosmos-sdk/x/auth/ante.RejectExtensionOptionsDecorator.AnteHandle({}, {{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, ...}, ...}, ...) github.com/cosmos/[email protected]/x/auth/ante/ext.go:35 +0x12e github.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x3229f98, 0xc04ad3d710}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, {0x20bae005, ...}, ...}, ...}, ...) github.com/cosmos/[email protected]/types/handler.go:40 +0x158 github.com/CosmWasm/wasmd/x/wasm/keeper.CountTXDecorator.AnteHandle({{_, _}}, {{0x3229f28, 0xc00021a020}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, ...}, ...}, ...) github.com/CosmWasm/[email protected]/x/wasm/keeper/ante.go:44 +0x3b3 github.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x3229f28, 0xc00021a020}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, {0x20bae005, ...}, ...}, ...}, ...) github.com/cosmos/[email protected]/types/handler.go:40 +0x158 github.com/CosmWasm/wasmd/x/wasm/keeper.LimitSimulationGasDecorator.AnteHandle({_}, {{0x3229f28, 0xc00021a020}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, ...}, ...}, ...) github.com/CosmWasm/[email protected]/x/wasm/keeper/ante.go:83 +0x744 github.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x3229f28, 0xc00021a020}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, {0x20bae005, ...}, ...}, ...}, ...) github.com/cosmos/[email protected]/types/handler.go:40 +0x158 github.com/cosmos/cosmos-sdk/x/auth/ante.SetUpContextDecorator.AnteHandle({}, {{0x3229f28, 0xc00021a020}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, ...}, ...}, ...) github.com/cosmos/[email protected]/x/auth/ante/setup.go:62 +0x66f github.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x3229f28, 0xc00021a020}, {0x32402c0, 0xc00fdd58c0}, {{0xb, 0x0}, {0xc0110ccfd8, 0x8}, 0x896d2e, {0x20bae005, ...}, ...}, ...}, ...) github.com/cosmos/[email protected]/types/handler.go:40 +0x158 github.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).runTx(0xc00064fa40, 0x0, {0xc000526700, 0x1a6, 0x1a7}) github.com/cosmos/[email protected]/baseapp/baseapp.go:684 +0x779 github.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).CheckTx(0xc00064fa40, {{0xc000526700?, 0xc0088d3c70?, 0xc0088d3b50?}, 0x12fa5d40?}) github.com/cosmos/[email protected]/baseapp/abci.go:242 +0x135 github.com/tendermint/tendermint/abci/client.(*localClient).CheckTxAsync(0xc005630060, {{0xc000526700?, 0xd05160?, 0xc00571eac0?}, 0x12fa5e58?}) github.com/tendermint/[email protected]/abci/client/local_client.go:104 +0x118 github.com/tendermint/tendermint/proxy.(*appConnMempool).CheckTxAsync(0xc00571eac0?, {{0xc000526700?, 0x42bf05?, 0x45ab080?}, 0x414b9e?}) github.com/tendermint/[email protected]/proxy/app_conn.go:126 +0x26 github.com/tendermint/tendermint/mempool/v0.(*CListMempool).CheckTx(0xc00017f790, {0xc000526700, 0x1a6, 0x1a7}, 0x45d9be?, {0x0, {0x0, 0x0}, 0x0, 0x0, ...}) github.com/tendermint/[email protected]/mempool/v0/clist_mempool.go:254 +0x310 github.com/tendermint/tendermint/rpc/core.BroadcastTxSync(0xc0072d2340, {0xc000526700, 0x1a6, 0x1a7}) github.com/tendermint/[email protected]/rpc/core/mempool.go:36 +0x104 github.com/tendermint/tendermint/rpc/client/local.(*Local).BroadcastTxSync(0x234?, {0x197?, 0x201?}, {0xc000526700?, 0xff?, 0xc012fa6108?}) github.com/tendermint/[email protected]/rpc/client/local/local.go:99 +0x2b github.com/cosmos/cosmos-sdk/client.Context.BroadcastTxSync({{0x0, 0x0, 0x0}, {0x324f418, 0xc0072d2320}, {0xc0072dbf88, 0x8}, {0x3231dd0, 0xc0005a2350}, {0x3244740, ...}, ...}, ...) github.com/cosmos/[email protected]/client/broadcast.go:116 +0x12e github.com/cosmos/cosmos-sdk/client.Context.BroadcastTx({{0x0, 0x0, 0x0}, {0x324f418, 0xc0072d2320}, {0xc0072dbf88, 0x8}, {0x3231dd0, 0xc0005a2350}, {0x3244740, ...}, ...}, ...) github.com/cosmos/[email protected]/client/broadcast.go:26 +0x85 github.com/cosmos/cosmos-sdk/client.TxServiceBroadcast({_, _}, {{0x0, 0x0, 0x0}, {0x324f418, 0xc0072d2320}, {0xc0072dbf88, 0x8}, {0x3231dd0, ...}, ...}, ...) github.com/cosmos/[email protected]/client/broadcast.go:148 +0x138 github.com/cosmos/cosmos-sdk/client.Context.Invoke({{0x0, 0x0, 0x0}, {0x324f418, 0xc0072d2320}, {0xc0072dbf88, 0x8}, {0x3231dd0, 0xc0005a2350}, {0x3244740, ...}, ...}, ...) github.com/cosmos/[email protected]/client/grpc_query.go:44 +0x1e5 github.com/cosmos/cosmos-sdk/types/tx.(*serviceClient).BroadcastTx(0xc0072d4dc0, {0x3229f98, 0xc07374fef0}, 0x2280aa0?, {0xc022f79240, 0x2, 0x2}) github.com/cosmos/[email protected]/types/tx/service.pb.go:839 +0xce github.com/cosmos/cosmos-sdk/types/tx.request_Service_BroadcastTx_0({0x3229f98, 0xc07374fef0}, {0x322e7c0, 0xc0072dce40}, {0x322dc00, 0xc0072d4dc0}, 0xc00fdb8c00, 0x4?) github.com/cosmos/[email protected]/types/tx/service.pb.gw.go:134 +0x283 github.com/cosmos/cosmos-sdk/types/tx.RegisterServiceHandlerClient.func3({0x32283a0, 0xc028c5d218}, 0xc00fdb8c00, 0xc0001bcd80?) github.com/cosmos/[email protected]/types/tx/service.pb.gw.go:460 +0x16e github.com/grpc-ecosystem/grpc-gateway/runtime.(*ServeMux).ServeHTTP(0xc0014c82a0, {0x32283a0, 0xc028c5d218}, 0xc00fdb8c00) github.com/grpc-ecosystem/[email protected]/runtime/mux.go:240 +0xcd6 github.com/gorilla/mux.(*Router).ServeHTTP(0xc0059f2000, {0x32283a0, 0xc028c5d218}, 0xc00fdb8a00) github.com/gorilla/[email protected]/mux.go:210 +0x1cf github.com/tendermint/tendermint/rpc/jsonrpc/server.maxBytesHandler.ServeHTTP({{0x3204a20?, 0xc0059f2000?}, 0x415707?}, {0x32283a0?, 0xc028c5d218}, 0xc00fdb8a00) github.com/tendermint/[email protected]/rpc/jsonrpc/server/http_server.go:256 +0x124 github.com/tendermint/tendermint/rpc/jsonrpc/server.RecoverAndLogHandler.func1({0x3228a00?, 0xc07327a2a0}, 0xc00fdb8a00) github.com/tendermint/[email protected]/rpc/jsonrpc/server/http_server.go:229 +0x37f net/http.HandlerFunc.ServeHTTP(0x0?, {0x3228a00?, 0xc07327a2a0?}, 0x957454?) net/http/server.go:2109 +0x2f net/http.serverHandler.ServeHTTP({0x320c110?}, {0x3228a00, 0xc07327a2a0}, 0xc00fdb8a00) net/http/server.go:2947 +0x30c net/http.(*conn).serve(0xc060b1e320, {0x3229f98, 0xc006a15080}) net/http/server.go:1991 +0x607 created by net/http.(*Server).Serve net/http/server.go:3102 +0x4db : panic

Dishonesty of validators

Some dishonest validators indicate the amount and period of the restake, which does not correspond to the implementation, and are misleading. It is necessary to automatically remove those validators who do not meet the specified restake characteristics.

Mobile Haqq Wallet Re-Stake.app Issue

Mobile Haqq Wallet Re-Stake.app not yet add,..

The only way for its to unstake 21 days, then move to Mobile Keplr Wallet,..

Hope it will add in few days,..

Regards,

Screenshot_20240212_011536_Haqq

Add warning when user has granted a conflicting bot

The frens autocompound bot takes from all validator rewards and stakes to frens. This makes it look like REStake operators are claiming rewards and not delegating.

We can identify if the user has granted a bot like this and show a warning. Just need an array of conflicting bot addresses

Option to move grants when redelegating

When a user is redelegating, if they have active grants for the source validator and the destination validator also operates REStake, we can give the user the option of moving their grants in the same TX.

By default this would keep the source grants config such as expiration and max tokens, but this should also be editable if needed.

APR calculator

Is it possible to add APR calculator so that we can be able to calculate our APR base on amount staked and duration we want it to last

trying to redelegate, system won't let me.

delegator isn't giving correct interest on coins. staked. if you look at restake, shows an interest rate. if you go to delegators website. it shows a different interest rate. that is half of what is supposed to be given. this delegator needs to be audited. how do i move my coins to a different delegator.

Adding an FAQ to website.

I suggest a page of FAQ can be added.
Here are some questions that I can think of (some already asked Tom). And the answers also here:

For Validator:
Do a validator need to pay to join?
No. What you need to do is follow the Readme instruction in REStake repo.
It is a services that you, as a validator provide, to your delegators. REStake just facilitates it with a UI and a script for you to run

What do a validator need to prepare?

  1. A local environment to run the script. (Using Docker is suggested)
  2. Follow the guidelines
  3. Monitor for the updates

What does the script do?

  • Get a list of all your delegators
  • Check each delegator for the necessary authz grants
  • If they exist, check their rewards balance just from your validator
  • If balance is above minimum in networks.json, then claim and delegate in one TX

For Stakers:
Will REStake rug pull me?
REStake CAN'T.

  1. REStake facilitates your validator reinvest on behalf of you by using the authz module with a UI.
  2. You will only grant you validator to do two things, which are withdrawing your staking reward and delegating on the validators

How many token I granted to the validator?
Currently, there is no limited set. BUT, your validator cannot transfer your token out. So your token is safe.
For the details, please reference this: https://docs.cosmos.network/master/modules/authz/01_concepts.html#stakeauthorization

When will it restake?
If your reward is more than the minimum reward set by your validator, your reward will restake at the time your validator set. Usually once a day.

======================================

Just my 2 cents, hope it can help

Unable to claim Source Rewards

Failed to broadcast: Error when broadcasting tx 3DE886B569867C66066844CA81DD7FB2FDFC5DAC403518B4A6BA41EEB60ACD51 at height 0. Code: 13; Raw log: insufficient fees; got: 9605usource required: 48025usource: insufficient fee

REBUS: Failed to broadcast: Request failed with status code 503

Getting various errors on REBUS network.

Mainly:
Failed to broadcast: Request failed with status code 503

Can't Delegate, Claim or manual compound.

Also the "Failed to get Rewards" message,

and

Also getting as in issue eco-stake/restake#632
Failed to broadcast: Error when broadcasting tx ACC4A93222EBEBA814C6F85772081CB24F50221D08AD511B6A440A067F5FE395 at height 0. Code: 8; Raw log: pubKey does not match signer address rebus1lte...... with signer index: 0: invalid pubkey

Screenshot_2022-11-09_05-55-16

Screenshot_2022-11-09_05-58-02

Show un/redelegations in the UI

Currently undelegations aren't shown in the UI so it's a bit confusing when your tokens disappear. Right now you can check any block explorer like Mintscan to see them, but this should be added to the UI.

Show max commission on validator profiles

Some validators have been seen to increase their commission from low to high (e.g. 5% -> 25%) during the bear when people aren't paying as much attention. The Max commission value is fixed and can't be changed, so this is valuable info to show to a user on the validator profile modal.

With the new UI, staking more tokens requires more steps

With the previous UI, adding more tokens to the actual stake was pretty easy by using the drop down and 'delegating more', now, it requires to open the validator information, clicking on the name, then selecting delegate, and then doing the delegation.

I think it was clearer when it was provided direct link in the drop-down menu

Terra classic: Failed to broadcast

Message error when using restake with Terra classic:
Failed to broadcast: Unable to sign message with this wallet/signer

Tried with differents wallets, same problem.

is there any way to control how often a REStake operator can restake for you?

I'm interested in controlling the number of transactions generated for tax reporting purposes.

Examples being restake once a day or once every X days. I would tweak this based on the APR and how many exec transactions I want tied to my wallet.

I guess another way of doing it would be to set the min limit of rewards before you can restake...not sure if any of this is possible in the grants and available for the script to use.

The value of restake for me is that I don't have to take the time to do the compounding.

Restake integration with Keplr on Migaloo Chain

I realize that the gas fees were raised on Migaloo via governance several days ago. However now, it seems like none of the restake functions on the UI for Migaloo chain are working. One can't manual compound, manual claim or stake via the UI. Neither has my Validator restaked for the last 22 days. Wondering if the as needs updating. Thank you.

Can claim rewards but not commission on Quicksilver

Staking Quicksilver on our own Validator, I can claim rewards but not commission.

First I tried to claim commission, got this message
Failed to broadcast: Error when broadcasting tx EB706EC36A437B011FF7B4B5E443F3056D18B410C7D2BC69784F1A9FE49EDBFE at height 0. Code: 4; Raw log: signature verification failed; please verify account number (149), sequence (23) and chain-id (quicksilver-2): unauthorized

Then I tried to claim only rewards, worked fine. Tried to claim commission again, same error.

Bulk actions

Allow user to select multiple validators and carry out bulk actions on the selection.

Include:

  • Grant all
  • Revoke all
  • Claim all
  • Manual Compound - optionally compounding all equally or own rewards
  • Delegate - splitting delegation across all (#5)

UI Network RPC Override

For some network such as Terra and SecretNetwork the RPC's are unreliable and are often offline in the UI
perhaps we could also have a entry in src/networks.json to override the public endpoints to our own more reliable endpoints?

Trouble sending Odin tokens from Osmosis 'assets' to Staking wallet

Having trouble sending Odin tokens to my kepler extension wallet.
It's very consistent and I have made many attempts in the past few Weeks.
There was never any problems with this before!

Here is the error msg:
TRANSACTION FAILED
recieving chain block height>=packet
timeout height (012895730>=0-
11805249) {packet timeout cosmos/ibc
go/[email protected]/modules/core/04-
channel/keeper/packet.go:81} With gas
wanted: '300000000' and gas used:
'163722' (at msg 0)

evmos with metamask support ?

I know ledger support is on his way following each chain update but I have another issue: since keplr+ledger was not supported for evmos I am using metamask+ledger, can/will this combo be supported by restake ?

Error - Unstake my Medibloc Tokens on ReStake

hello, i delegated some MediBloc (over Restake) to StakeWolle.com... one Day later i see this Validator has his own plattform and i want to stake directly on this website. I unstaked my tokens on ReStake, but i didnt get my MediBloc Tokens back ... and now i see the
"Grant Status" on Restake is inactiv. =/ what could i do? Where are my tokens =/

pic1

Showing voted even without account specified

Screen Shot 2022-12-12 at 11 24 12 PM

When a keplr wallet user has multiple Authz grantee accounts. The user can submit a 'vote' without needing to specify which grantee account to vote from.

Result is REStake UI shows user voted though on chain action has not been taken resulting in...confusion.

When account is specified in dropdown then vote is successful (same with UI).

Coins Stuck third time...

my tokens got stuck third time in a row, but this time its been like day and half and they did not return back to osmosis... can anybody help? i just wanna get them to my wallet somehow to add to my staking... im giving it a fair try and would love to put this one in my discord, but im just running into issues...

StakeTown

Validator StakeTown: unfunctional unastake, redelegate and restake .

Support minimum delegation

add "Min stake" parameter to Conditions.
I delegate and grant to "Disperze" validator, but restake didn't work. I think "Disperze" validator spent all amount for commission and can't compounding, but.. it has Min stake amount 10 tokens!!
And this is not only for one validator!
Screenshot from 2022-06-24 15-26-25
Screenshot from 2022-06-24 15-26-07

Wrong validator icon for Nyx

On the Nyx page (https://restake.app/nyx) we have the wrong validator icon (showing our old "Journal du Coin" logo instead of Node Guardians):

image

When inspecting it, the source image url is: https://raw.githubusercontent.com/cosmostation/cosmostation_token_resource/master/moniker/nyx/nvaloper12ut47cxmnwgflwwryw4akvkrfda4kn0elzy6jc.png

And this repository is an archive repository: https://github.com/cosmostation/cosmostation_token_resource

Is this possible to fix this issue please ?

Network not displayed if the `image` field at chain registry is not filled.

Hey friends,
a few days ago i updated the chain info of Unification. Since its merged into master the Unification network is not showing up on the startsite.
I debugged a little bit in the UI and found the following:
It seems that networks without image in the JSON are filtered out. (See NetworkFinder.getNetworks())
At Unification the image is not set, (Not sure why, i opened a ticket at the chain registry repo too for this) so its just filtered out of the list.
Does it make sense to filter out all networks which dont have a image field? According due to the JSON schema files at the chain registry there is no official image field? (There is only an images array)

Add Splitting Delegations

Hi all,

Really like the work you've done here after a skim read over myself.

I think a cool feature (I was thinking of building a dApp for this myself but you guys have beaten me to it :)) would be to split delegations equally across a number or all restake validators. Say I want to delegate 1000 JUNO, and there are 5 restake validators, they would each receive 200 JUNO. I think it would help promote decentralisation across the network.

Especially if more validators onboard with this.

Apologies if this is in the wrong place, but happy to hear your thoughts.

tokens lost

I staked whales and i can't see them anymore

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.