Skip to content

Commit

Permalink
Merge pull request #5 from valory-xyz/fix/unlocking-staking-rewards
Browse files Browse the repository at this point in the history
Fix/unlocking staking rewards
  • Loading branch information
Divya-Solulab authored Sep 9, 2024
2 parents ee72906 + 954203b commit b9de1a5
Show file tree
Hide file tree
Showing 22 changed files with 4,852 additions and 2,245 deletions.
76 changes: 76 additions & 0 deletions .gitleaksignore
Original file line number Diff line number Diff line change
Expand Up @@ -175,3 +175,79 @@ c731bc32b8beeec111fb67334086bb6adfadf77e:operate/services/manage.py:generic-api-
c731bc32b8beeec111fb67334086bb6adfadf77e:operate/services/manage.py:generic-api-key:441
c731bc32b8beeec111fb67334086bb6adfadf77e:operate/services/manage.py:generic-api-key:492
c731bc32b8beeec111fb67334086bb6adfadf77e:operate/services/manage.py:generic-api-key:493
c53584a59edb6ef4a596390af69228315f6337dd:packages/valory/skills/liquidity_trader_abci/skill.yaml:generic-api-key:178
c53584a59edb6ef4a596390af69228315f6337dd:packages/valory/skills/optimus_abci/skill.yaml:generic-api-key:174
503c34a4888ddbe73971c3909c6b831e77181876:packages/valory/contracts/staking_token/contract.yaml:generic-api-key:10
a2173f022ef374dd7cc28d5f20699878b9619915:packages/valory/services/optimus/service.yaml:generic-api-key:44
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:20
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:21
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:90
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:91
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:265
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:273
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:311
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:319
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:357
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:365
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:403
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:449
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:495
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:541
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:549
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:587
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:633
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:679
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:695
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:740
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:756
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:757
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:800
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:841
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:845
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:851
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:857
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:863
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:869
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:875
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:882
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:926
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:932
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:938
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:944
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:985
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:989
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:995
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1001
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1007
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1013
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1019
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1020
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1060
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1064
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1070
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1071
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1109
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1468
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1624
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1640
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1671
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1687
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1688
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1721
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1737
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1738
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1773
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1789
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1823
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1839
26057e57bec1f136c8eb7f79d6bed85d24280872:scripts/api_data.json:generic-api-key:1840
7613e8af3359e0ff609859e6c40a8fd714e3aa95:scripts/api_data.json:generic-api-key:20
7613e8af3359e0ff609859e6c40a8fd714e3aa95:scripts/api_data.json:generic-api-key:21
1912dfc5eca5532b302a6f07b47629f60e84e041:scripts/api_data.json:generic-api-key:20
1912dfc5eca5532b302a6f07b47629f60e84e041:scripts/api_data.json:generic-api-key:21
1912dfc5eca5532b302a6f07b47629f60e84e041:scripts/api_data.json:generic-api-key:91
1912dfc5eca5532b302a6f07b47629f60e84e041:scripts/api_data.json:generic-api-key:603
bea8fa71765fab49fd7b0a7b99e27019b5df0d5e:scripts/api_data.json:generic-api-key:20
bea8fa71765fab49fd7b0a7b99e27019b5df0d5e:scripts/api_data.json:generic-api-key:21
5a9e025d6b0cd4115123d890ec90cd69a8fc682f:scripts/api_data.json:generic-api-key:20
5a9e025d6b0cd4115123d890ec90cd69a8fc682f:scripts/api_data.json:generic-api-key:21
12 changes: 12 additions & 0 deletions HISTORY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Release History - `optimus`

## v0.1.0 - [Release Date: 2024-09-06]

- **Feat/uniswap**: Added support for Uniswap integration.
- **Feat/claim reward**: Introduced the feature for claiming rewards.
- **V0.1.0 release**: Initial version of the project.
- **Fix: claim rewards**: Fixed an issue with claiming rewards.

## v0.2.0 - [Release Date: 2024-09-06]

- **Unlocking Staking Rewards**: Added logic to unlock staking rewards based on meeting a daily minimum transaction threshold on the Optimism network
10 changes: 6 additions & 4 deletions packages/packages.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@
"contract/valory/uniswap_v3_non_fungible_position_manager/0.1.0": "bafybeieljamerttxyo7z2yokwripnnhzkn4zply5lz457vsixf5wfu5px4",
"contract/valory/uniswap_v3_pool/0.1.0": "bafybeidglijnyueahpgivaykbhio2r3ovfeo23a256y3yb6g7be4hngx3a",
"contract/valory/merkl_distributor/0.1.0": "bafybeifctofnyhdic2sxmkqujvf3j2wwydhtvzhi6kdeutykenymplf4e4",
"skill/valory/liquidity_trader_abci/0.1.0": "bafybeia6pmuwqvpb6bdk75uywqxgr3puarikzcfkxj5xvwbyu7lxqzmkgi",
"skill/valory/optimus_abci/0.1.0": "bafybeifaid4m5y6nr6zhqhoyonl34gjq4sloajvnwfxp6odybb5tzdepnm",
"agent/valory/optimus/0.1.0": "bafybeih32imiqyeh23pu5yjtjbxcbvmblpjwl6an7vxpisqri4yeuqkwby",
"service/valory/optimus/0.1.0": "bafybeid3sapqas3ow57jc5pdnngyzrmxutih4k5y56elgbez6jjxaqzfiu"
"contract/valory/staking_token/0.1.0": "bafybeiakvgm2byyjfunb4npthioku2kwqpbcwm6dfov4akirqixtju6oai",
"contract/valory/staking_activity_checker/0.1.0": "bafybeigfiqmvzsf2etp6grtnfqg4y7nrlhwohbhfvggewhgvvolascs4fe",
"skill/valory/liquidity_trader_abci/0.1.0": "bafybeieoj2cuuwk32settpv44ailcyrd4lh7mj6exr5ufssnms3teyhxze",
"skill/valory/optimus_abci/0.1.0": "bafybeigfneogfptzhfovlqy5r57rlei7b6ixe2k37ke6xrv6lr76kcviai",
"agent/valory/optimus/0.1.0": "bafybeibubmgk63swmozdglm3hmu4n3bz2xesxggdxdtx6cuso7feh3a7xu",
"service/valory/optimus/0.1.0": "bafybeie4mwft76qkajsn3wypza5vcpvx5vdaosywqzzsnohr4my6o2xu3y"
},
"third_party": {
"protocol/open_aea/signing/1.0.0": "bafybeihv62fim3wl2bayavfcg3u5e5cxu3b7brtu4cn5xoxd6lqwachasi",
Expand Down
14 changes: 10 additions & 4 deletions packages/valory/agents/optimus/aea-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ protocols:
skills:
- valory/abstract_abci:0.1.0:bafybeihu2bcgjk2tqjiq2zhk3uogtfszqn4osvdt7ho3fubdpdj4jgdfjm
- valory/abstract_round_abci:0.1.0:bafybeibovsktd3uxur45nrcomq5shcn46cgxd5idmhxbmjhg32c5abyqim
- valory/liquidity_trader_abci:0.1.0:bafybeia6pmuwqvpb6bdk75uywqxgr3puarikzcfkxj5xvwbyu7lxqzmkgi
- valory/optimus_abci:0.1.0:bafybeifaid4m5y6nr6zhqhoyonl34gjq4sloajvnwfxp6odybb5tzdepnm
- valory/liquidity_trader_abci:0.1.0:bafybeieoj2cuuwk32settpv44ailcyrd4lh7mj6exr5ufssnms3teyhxze
- valory/optimus_abci:0.1.0:bafybeigfneogfptzhfovlqy5r57rlei7b6ixe2k37ke6xrv6lr76kcviai
- valory/registration_abci:0.1.0:bafybeicnth5q4httefsusywx3zrrq4al47owvge72dqf2fziruicq6hqta
- valory/reset_pause_abci:0.1.0:bafybeievjciqdvxhqxfjd4whqs27h6qbxqzrae7wwj7fpvxlvmtw3x35im
- valory/termination_abci:0.1.0:bafybeid54buqxipiuduw7b6nnliiwsxajnltseuroad53wukfonpxca2om
Expand Down Expand Up @@ -160,7 +160,7 @@ models:
init_fallback_gas: 0
keeper_allowed_retries: 3
reset_pause_duration: ${int:10}
on_chain_service_id: ${int:null}
on_chain_service_id: ${int:1}
reset_tendermint_after: ${int:10}
retry_attempts: 400
retry_timeout: 3
Expand Down Expand Up @@ -197,7 +197,7 @@ models:
allowed_dexs: ${list:["balancerPool", "UniswapV3"]}
initial_assets: ${str:{"ethereum":{"0x0000000000000000000000000000000000000000":"ETH","0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48":"USDC"}}}
safe_contract_addresses: ${str:{"ethereum":"0x0000000000000000000000000000000000000000","base":"0x07e27E181Df065141ee90a4DD43cE4113bc9853C","optimism":"0x07e27E181Df065141ee90a4DD43cE4113bc9853C"}}
pool_data_api_url: ${str:https://api.merkl.xyz/v3/campaigns}
merkl_fetch_campaigns_args: ${str:{"url":"https://api.merkl.xyz/v3/campaigns","creator":"superfest","live":"true"}}
allowed_chains: ${list:["optimism","base"]}
gas_reserve: ${str:{"ethereum":1000,"optimism":1000,"base":1000}}
round_threshold: ${int:0}
Expand Down Expand Up @@ -227,3 +227,9 @@ models:
tenderly_account_slug: ${str:account_slug}
tenderly_project_slug: ${str:project_slug}
chain_to_chain_id_mapping: ${str:{"optimism":10,"base":8453,"ethereum":1}}
staking_token_contract_address: ${str:0x88996bbdE7f982D93214881756840cE2c77C4992}
staking_activity_checker_contract_address: ${str:0x7Fd1F4b764fA41d19fe3f63C85d12bf64d2bbf68}
staking_threshold_period: ${int:5}
store_path: ${str:/data/}
assets_info_filename: ${str:assets.json}
pool_info_filename: ${str:current_pool.json}
20 changes: 20 additions & 0 deletions packages/valory/contracts/staking_activity_checker/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# ------------------------------------------------------------------------------
#
# Copyright 2024 Valory AG
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# ------------------------------------------------------------------------------

"""This module contains the support resources for the staking activity checker contract."""
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "StakingActivityChecker",
"sourceName": "contracts/staking/StakingActivityChecker.sol",
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "_livenessRatio",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "ZeroValue",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "multisig",
"type": "address"
}
],
"name": "getMultisigNonces",
"outputs": [
{
"internalType": "uint256[]",
"name": "nonces",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "curNonces",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "lastNonces",
"type": "uint256[]"
},
{
"internalType": "uint256",
"name": "ts",
"type": "uint256"
}
],
"name": "isRatioPass",
"outputs": [
{
"internalType": "bool",
"name": "ratioPass",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "livenessRatio",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x608060405234801561000f575f80fd5b506004361061003f575f3560e01c8063184023a514610043578063592cf3fb1461006b578063d564c4bf146100a0575b5f80fd5b610056610051366004610328565b6100c0565b60405190151581526020015b60405180910390f35b6100927f00000000000000000000000000000000000000000000000000002a1b324b8f6881565b604051908152602001610062565b6100b36100ae366004610390565b610190565b60405161006291906103c3565b5f80821180156101015750825f815181106100dd576100dd610406565b6020026020010151845f815181106100f7576100f7610406565b6020026020010151115b15610189575f82845f8151811061011a5761011a610406565b6020026020010151865f8151811061013457610134610406565b60200260200101516101469190610460565b61015890670de0b6b3a7640000610479565b6101629190610490565b7f00000000000000000000000000000000000000000000000000002a1b324b8f6811159150505b9392505050565b604080516001808252818301909252606091602080830190803683370190505090508173ffffffffffffffffffffffffffffffffffffffff1663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021f91906104c8565b815f8151811061023157610231610406565b602002602001018181525050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f83011261027e575f80fd5b8135602067ffffffffffffffff8083111561029b5761029b610242565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811084821117156102de576102de610242565b60405293845260208187018101949081019250878511156102fd575f80fd5b6020870191505b8482101561031d57813583529183019190830190610304565b979650505050505050565b5f805f6060848603121561033a575f80fd5b833567ffffffffffffffff80821115610351575f80fd5b61035d8783880161026f565b94506020860135915080821115610372575f80fd5b5061037f8682870161026f565b925050604084013590509250925092565b5f602082840312156103a0575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610189575f80fd5b602080825282518282018190525f9190848201906040850190845b818110156103fa578351835292840192918401916001016103de565b50909695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561047357610473610433565b92915050565b808202811582820484141761047357610473610433565b5f826104c3577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f602082840312156104d8575f80fd5b505191905056fea26469706673582212205cd6cde3d106d475558793ccc0670f4af07e2e69e437eff007791837f35d016464736f6c63430008190033",
"linkReferences": {},
"deployedLinkReferences": {}
}
44 changes: 44 additions & 0 deletions packages/valory/contracts/staking_activity_checker/contract.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
# ------------------------------------------------------------------------------
#
# Copyright 2024 Valory AG
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# ------------------------------------------------------------------------------

"""This module contains the class to connect to the `StakingActivityChecker` contract."""

from enum import Enum

from aea.common import JSONLike
from aea.configurations.base import PublicId
from aea.contracts.base import Contract
from aea.crypto.base import LedgerApi


class StakingActivityCheckerContract(Contract):
"""The Staking Activity Checker contract."""

contract_id = PublicId.from_str("valory/staking_activity_checker:0.1.0")

@classmethod
def liveness_ratio(
cls,
ledger_api: LedgerApi,
contract_address: str,
) -> JSONLike:
"""Retrieve the liveness ratio."""
contract = cls.get_instance(ledger_api, contract_address)
liveness_ratio = contract.functions.livenessRatio().call()
return dict(data=liveness_ratio)
23 changes: 23 additions & 0 deletions packages/valory/contracts/staking_activity_checker/contract.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: staking_activity_checker
author: valory
version: 0.1.0
type: contract
description: Staking activity checker contract
license: Apache-2.0
aea_version: '>=1.0.0, <2.0.0'
fingerprint:
__init__.py: bafybeigqm6q7kgfzgpcse7zer5uea3s7myolry2r3teovuzqgkn43j7bei
build/StakingActivityChecker.json: bafybeiety3kkkmdz2gdzktg54wvmhavftaw4wjnrddztt64jpknagrc6xa
contract.py: bafybeihnil43tcs2jhii5gxhsffzknsvljnnhradi62pnxhs525orc2cw4
fingerprint_ignore_patterns: []
contracts: []
class_name: StakingActivityCheckerContract
contract_interface_paths:
ethereum: build/StakingActivityChecker.json
dependencies:
open-aea-ledger-ethereum:
version: ==1.55.0
open-aea-test-autonomy:
version: ==0.15.2
web3:
version: <7,>=6.0.0
20 changes: 20 additions & 0 deletions packages/valory/contracts/staking_token/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# ------------------------------------------------------------------------------
#
# Copyright 2024 Valory AG
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# ------------------------------------------------------------------------------

"""This module contains the support resources for the staking token contract."""
Loading

0 comments on commit b9de1a5

Please sign in to comment.